diff --git a/dashboard-ui/bower_components/Swiper/.bower.json b/dashboard-ui/bower_components/Swiper/.bower.json index 27cc89b597..53f7c464e3 100644 --- a/dashboard-ui/bower_components/Swiper/.bower.json +++ b/dashboard-ui/bower_components/Swiper/.bower.json @@ -51,7 +51,7 @@ "tag": "v3.3.1", "commit": "33101a659e579146f5462e4a9d6a7fdfd7436c35" }, - "_source": "git://github.com/nolimits4web/Swiper.git", + "_source": "https://github.com/nolimits4web/Swiper.git", "_target": "~3.3.0", "_originalSource": "swiper" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/dist/css/swiper.css b/dashboard-ui/bower_components/Swiper/dist/css/swiper.css deleted file mode 100644 index 96633d6542..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/css/swiper.css +++ /dev/null @@ -1,547 +0,0 @@ -/** - * Swiper 3.3.1 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2016, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: February 7, 2016 - */ -.swiper-container { - margin: 0 auto; - position: relative; - overflow: hidden; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-container-no-flexbox .swiper-slide { - float: left; -} -.swiper-container-vertical > .swiper-wrapper { - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-flex-direction: column; - -webkit-flex-direction: column; - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-transition-property: -webkit-transform; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.swiper-container-android .swiper-slide, -.swiper-wrapper { - -webkit-transform: translate3d(0px, 0, 0); - -moz-transform: translate3d(0px, 0, 0); - -o-transform: translate(0px, 0px); - -ms-transform: translate3d(0px, 0, 0); - transform: translate3d(0px, 0, 0); -} -.swiper-container-multirow > .swiper-wrapper { - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -ms-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; -} -.swiper-container-free-mode > .swiper-wrapper { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; - margin: 0 auto; -} -.swiper-slide { - -webkit-flex-shrink: 0; - -ms-flex: 0 0 auto; - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; -} -/* Auto Height */ -.swiper-container-autoheight, -.swiper-container-autoheight .swiper-slide { - height: auto; -} -.swiper-container-autoheight .swiper-wrapper { - -webkit-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-transition-property: -webkit-transform, height; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform, height; -} -/* a11y */ -.swiper-container .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} -/* IE10 Windows Phone 8 Fixes */ -.swiper-wp8-horizontal { - -ms-touch-action: pan-y; - touch-action: pan-y; -} -.swiper-wp8-vertical { - -ms-touch-action: pan-x; - touch-action: pan-x; -} -/* Arrows */ -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: 27px; - height: 44px; - margin-top: -22px; - z-index: 10; - cursor: pointer; - -moz-background-size: 27px 44px; - -webkit-background-size: 27px 44px; - background-size: 27px 44px; - background-position: center; - background-repeat: no-repeat; -} -.swiper-button-prev.swiper-button-disabled, -.swiper-button-next.swiper-button-disabled { - opacity: 0.35; - cursor: auto; - pointer-events: none; -} -.swiper-button-prev, -.swiper-container-rtl .swiper-button-next { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); - left: 10px; - right: auto; -} -.swiper-button-prev.swiper-button-black, -.swiper-container-rtl .swiper-button-next.swiper-button-black { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); -} -.swiper-button-prev.swiper-button-white, -.swiper-container-rtl .swiper-button-next.swiper-button-white { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); -} -.swiper-button-next, -.swiper-container-rtl .swiper-button-prev { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); - right: 10px; - left: auto; -} -.swiper-button-next.swiper-button-black, -.swiper-container-rtl .swiper-button-prev.swiper-button-black { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); -} -.swiper-button-next.swiper-button-white, -.swiper-container-rtl .swiper-button-prev.swiper-button-white { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); -} -/* Pagination Styles */ -.swiper-pagination { - position: absolute; - text-align: center; - -webkit-transition: 300ms; - -moz-transition: 300ms; - -o-transition: 300ms; - transition: 300ms; - -webkit-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - z-index: 10; -} -.swiper-pagination.swiper-pagination-hidden { - opacity: 0; -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-container-horizontal > .swiper-pagination-bullets { - bottom: 10px; - left: 0; - width: 100%; -} -/* Bullets */ -.swiper-pagination-bullet { - width: 8px; - height: 8px; - display: inline-block; - border-radius: 100%; - background: #000; - opacity: 0.2; -} -button.swiper-pagination-bullet { - border: none; - margin: 0; - padding: 0; - box-shadow: none; - -moz-appearance: none; - -ms-appearance: none; - -webkit-appearance: none; - appearance: none; -} -.swiper-pagination-clickable .swiper-pagination-bullet { - cursor: pointer; -} -.swiper-pagination-white .swiper-pagination-bullet { - background: #fff; -} -.swiper-pagination-bullet-active { - opacity: 1; - background: #007aff; -} -.swiper-pagination-white .swiper-pagination-bullet-active { - background: #fff; -} -.swiper-pagination-black .swiper-pagination-bullet-active { - background: #000; -} -.swiper-container-vertical > .swiper-pagination-bullets { - right: 10px; - top: 50%; - -webkit-transform: translate3d(0px, -50%, 0); - -moz-transform: translate3d(0px, -50%, 0); - -o-transform: translate(0px, -50%); - -ms-transform: translate3d(0px, -50%, 0); - transform: translate3d(0px, -50%, 0); -} -.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet { - margin: 5px 0; - display: block; -} -.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { - margin: 0 5px; -} -/* Progress */ -.swiper-pagination-progress { - background: rgba(0, 0, 0, 0.25); - position: absolute; -} -.swiper-pagination-progress .swiper-pagination-progressbar { - background: #007aff; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - -webkit-transform-origin: left top; - -moz-transform-origin: left top; - -ms-transform-origin: left top; - -o-transform-origin: left top; - transform-origin: left top; -} -.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar { - -webkit-transform-origin: right top; - -moz-transform-origin: right top; - -ms-transform-origin: right top; - -o-transform-origin: right top; - transform-origin: right top; -} -.swiper-container-horizontal > .swiper-pagination-progress { - width: 100%; - height: 4px; - left: 0; - top: 0; -} -.swiper-container-vertical > .swiper-pagination-progress { - width: 4px; - height: 100%; - left: 0; - top: 0; -} -.swiper-pagination-progress.swiper-pagination-white { - background: rgba(255, 255, 255, 0.5); -} -.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar { - background: #fff; -} -.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar { - background: #000; -} -/* 3D Container */ -.swiper-container-3d { - -webkit-perspective: 1200px; - -moz-perspective: 1200px; - -o-perspective: 1200px; - perspective: 1200px; -} -.swiper-container-3d .swiper-wrapper, -.swiper-container-3d .swiper-slide, -.swiper-container-3d .swiper-slide-shadow-left, -.swiper-container-3d .swiper-slide-shadow-right, -.swiper-container-3d .swiper-slide-shadow-top, -.swiper-container-3d .swiper-slide-shadow-bottom, -.swiper-container-3d .swiper-cube-shadow { - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - transform-style: preserve-3d; -} -.swiper-container-3d .swiper-slide-shadow-left, -.swiper-container-3d .swiper-slide-shadow-right, -.swiper-container-3d .swiper-slide-shadow-top, -.swiper-container-3d .swiper-slide-shadow-bottom { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10; -} -.swiper-container-3d .swiper-slide-shadow-left { - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); - /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Opera 11.10-12.00 */ - background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 16+, IE10, Opera 12.50+ */ -} -.swiper-container-3d .swiper-slide-shadow-right { - background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); - /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Opera 11.10-12.00 */ - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 16+, IE10, Opera 12.50+ */ -} -.swiper-container-3d .swiper-slide-shadow-top { - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); - /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Opera 11.10-12.00 */ - background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 16+, IE10, Opera 12.50+ */ -} -.swiper-container-3d .swiper-slide-shadow-bottom { - background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); - /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Opera 11.10-12.00 */ - background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); - /* Firefox 16+, IE10, Opera 12.50+ */ -} -/* Coverflow */ -.swiper-container-coverflow .swiper-wrapper, -.swiper-container-flip .swiper-wrapper { - /* Windows 8 IE 10 fix */ - -ms-perspective: 1200px; -} -/* Cube + Flip */ -.swiper-container-cube, -.swiper-container-flip { - overflow: visible; -} -.swiper-container-cube .swiper-slide, -.swiper-container-flip .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; -} -.swiper-container-cube .swiper-slide .swiper-slide, -.swiper-container-flip .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-container-cube .swiper-slide-active, -.swiper-container-flip .swiper-slide-active, -.swiper-container-cube .swiper-slide-active .swiper-slide-active, -.swiper-container-flip .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-container-cube .swiper-slide-shadow-top, -.swiper-container-flip .swiper-slide-shadow-top, -.swiper-container-cube .swiper-slide-shadow-bottom, -.swiper-container-flip .swiper-slide-shadow-bottom, -.swiper-container-cube .swiper-slide-shadow-left, -.swiper-container-flip .swiper-slide-shadow-left, -.swiper-container-cube .swiper-slide-shadow-right, -.swiper-container-flip .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; -} -/* Cube */ -.swiper-container-cube .swiper-slide { - visibility: hidden; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - width: 100%; - height: 100%; -} -.swiper-container-cube.swiper-container-rtl .swiper-slide { - -webkit-transform-origin: 100% 0; - -moz-transform-origin: 100% 0; - -ms-transform-origin: 100% 0; - transform-origin: 100% 0; -} -.swiper-container-cube .swiper-slide-active, -.swiper-container-cube .swiper-slide-next, -.swiper-container-cube .swiper-slide-prev, -.swiper-container-cube .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; -} -.swiper-container-cube .swiper-cube-shadow { - position: absolute; - left: 0; - bottom: 0px; - width: 100%; - height: 100%; - background: #000; - opacity: 0.6; - -webkit-filter: blur(50px); - filter: blur(50px); - z-index: 0; -} -/* Fade */ -.swiper-container-fade.swiper-container-free-mode .swiper-slide { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.swiper-container-fade .swiper-slide { - pointer-events: none; - -webkit-transition-property: opacity; - -moz-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity; -} -.swiper-container-fade .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-container-fade .swiper-slide-active, -.swiper-container-fade .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); -} -.swiper-container-horizontal > .swiper-scrollbar { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; -} -.swiper-container-vertical > .swiper-scrollbar { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -/* Preloader */ -.swiper-lazy-preloader { - width: 42px; - height: 42px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -21px; - margin-top: -21px; - z-index: 10; - -webkit-transform-origin: 50%; - -moz-transform-origin: 50%; - transform-origin: 50%; - -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; - -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; - animation: swiper-preloader-spin 1s steps(12, end) infinite; -} -.swiper-lazy-preloader:after { - display: block; - content: ""; - width: 100%; - height: 100%; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); - background-position: 50%; - -webkit-background-size: 100%; - background-size: 100%; - background-repeat: no-repeat; -} -.swiper-lazy-preloader-white:after { - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); -} -@-webkit-keyframes swiper-preloader-spin { - 100% { - -webkit-transform: rotate(360deg); - } -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} diff --git a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.min.js.map b/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.min.js.map deleted file mode 100644 index 5ef390442e..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["swiper.jquery.js"],"names":["addLibraryPlugin","lib","fn","swiper","params","firstInstance","this","each","s","Swiper","$","container","round","a","Math","floor","autoplay","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","emit","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","target","is","parents","nodeType","found","index","_el","length","initObserver","options","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","observe","attributes","childList","characterData","observers","push","handleKeyboard","originalEvent","kc","keyCode","charCode","allowSwipeToNext","isHorizontal","allowSwipeToPrev","shiftKey","altKey","ctrlKey","metaKey","document","activeElement","nodeName","toLowerCase","inView","windowScroll","left","pageXOffset","top","pageYOffset","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","offset","rtl","scrollLeft","swiperCoord","width","height","i","point","preventDefault","returnValue","slideNext","slidePrev","handleMousewheel","we","mousewheel","event","delta","rtlFactor","mousewheelForceToAxis","abs","wheelDeltaX","wheelDeltaY","detail","deltaX","deltaY","mousewheelInvert","freeMode","position","getWrapperTranslate","mousewheelSensitivity","wasBeginning","isBeginning","wasEnd","minTranslate","maxTranslate","setWrapperTransition","setWrapperTranslate","updateProgress","updateActiveIndex","updateClasses","freeModeSticky","clearTimeout","timeout","slideReset","lazyLoading","lazy","load","Date","getTime","lastScrollTime","animating","mousewheelReleaseOnEdges","setParallaxTransform","progress","p","pX","pY","attr","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","direction","touchEventsTarget","initialSlide","speed","autoplayDisableOnInteraction","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","keyboardControl","mousewheelControl","hashnav","breakpoints","undefined","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","slidesOffsetBefore","slidesOffsetAfter","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","uniqueNavElements","pagination","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","swipeHandler","noSwiping","noSwipingClass","slideClass","slideActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slidePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","param","Dom7","jQuery","deepParam","def","deepDef","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","breakpoint","points","hasOwnProperty","sort","b","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swipers","data","support","flexbox","transforms3d","touch","wrapper","children","paginationContainer","find","addClass","dir","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","unlockSwipeToPrev","unlockSwipes","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","srcset","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","_onReady","update","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","internal","pauseAutoplay","transitionEnd","snapGrid","updateAutoHeight","slide","slides","eq","activeIndex","newHeight","offsetHeight","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","ceil","max","slideSize","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","margin-top","outerWidth","outerHeight","swiperSlideSize","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","removeClass","slideProgress","slideBefore","slideAfter","isVisible","translatesDiff","newActiveIndex","snapIndex","previousIndex","activeSlide","nextSlide","next","prevSlide","prev","current","total","bullets","text","scale","scaleX","scaleY","transition","html","disable","enable","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","forceSetTranslate","newTranslate","min","set","translated","controller","spline","slideTo","forceUpdatePagination","slideChangedBySlideTo","desktopEvents","navigator","pointerEnabled","msPointerEnabled","touchEvents","start","move","end","initEvents","detach","actionDom","action","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","stopPropagation","stopImmediatePropagation","updateClickedSlide","slideFound","clickedSlide","clickedIndex","realIndex","slideToIndex","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","now","velocities","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","type","which","targetTouches","pageX","pageY","swipeDirection","blur","preventedByNestedSwiper","atan2","PI","ieTouch","trigger","disableParentSwiper","pow","time","touchEndTime","timeDiff","hasClass","toggleClass","currentPos","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","j","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","slideIndex","runCallbacks","setHash","clientLeft","_slidePrev","duration","byController","effects","setTransition","x","y","z","setTranslate","getTranslate","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","map","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","m42","initObservers","containerParents","disconnectObservers","disconnect","createLoop","remove","prependSlides","appendSlides","append","cloneNode","prepend","removeAttr","updatePosition","oldIndex","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","opacity","eventTriggered","triggerEvents","rotateY","rotateX","zIndex","shadowBefore","shadowAfter","cubeShadow","wrapperRotate","slideAngle","tz","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","scale1","scale2","zFactor","isSafari","isUiWebView","center","slideOffset","offsetMultiplier","translateZ","translateY","translateX","slideTransform","ws","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","add","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","amount","spv","maxIndex","minIndex","setDragPosition","sb","pointerPosition","clientX","clientY","track","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","dragEnd","enableDraggable","on","disableDraggable","off","trackSize","offsetWidth","divider","display","newPos","newSize","LinearSpline","lastIndex","i1","i3","interpolate","x2","binarySearch","guess","array","val","getInterpolateFunction","c","setControlledTranslate","controlledTranslate","controlled","isArray","setControlledTransition","init","initialized","hash","location","slideHash","disableKeyboardControl","enableKeyboardControl","WheelEvent","onmousewheel","disableMousewheelControl","enableMousewheelControl","parallaxDuration","_plugins","plugin","plugins","callPlugins","arguments","emitterEventListeners","handler","splice","once","_handler","makeFocusable","$el","addRole","role","addLabel","label","notify","click","liveRegion","message","notification","bullet","destroy","cleanupStyles","deleteInstance","prototype","ua","userAgent","test","arr","Object","apply","msMaxTouchPoints","maxTouchPoints","match","ipad","ipod","iphone","Modernizr","DocumentTouch","csstransforms3d","div","createElement","styles","swiperDomPlugins","domLib","fireCallBack","call","events","dom","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","module","exports","define","amd"],"mappings":"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","file":"swiper.jquery.min.js","sourcesContent":["/**\n * Swiper 3.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: February 7, 2016\n */\n(function () {\n 'use strict';\n var $;\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n // Hash Navigation\n hashnav: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // NS\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push('swiper-container-' + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push('swiper-container-free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push('swiper-container-no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push('swiper-container-autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push('swiper-container-3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push('swiper-container-' + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n s.params.setWrapperSize = false;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass('swiper-pagination-clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push('swiper-container-rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push('swiper-container-multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push('swiper-container-android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, s.params.autoplay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n // Update Height\n var slide = s.slides.eq(s.activeIndex)[0];\n if (typeof slide !== 'undefined') {\n var newHeight = slide.offsetHeight;\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n }\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css({\n 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n })\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n s.slides.eq(0).addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n s.slides.eq(-1).addClass(s.params.slidePrevClass);\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n function forceSetTranslate() {\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated, newTranslate;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];\n if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];\n else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0],\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1],\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2]\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n if (params.simulateTouch && !s.device.ios && !s.device.android) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = $(s.clickedSlide).attr('data-swiper-slide-index');\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - s.params.slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving && s.browser.ieTouch) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grabbing';\n s.container[0].style.cursor = '-moz-grabbin';\n s.container[0].style.cursor = 'grabbing';\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n if (!s.params.followFinger) return;\n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n \n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)');\n if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass('swiper-lazy-loading');\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset');\n s.loadImage(_img[0], (src || background), srcset, false, function () {\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading');\n slide.find('.swiper-lazy-preloader, .preloader').remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (s.params.slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = s.params.slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(s.touchEvents.start, sb.dragStart);\n $(target).on(s.touchEvents.move, sb.dragMove);\n $(target).on(s.touchEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(s.touchEvents.start, sb.dragStart);\n $(target).off(s.touchEvents.move, sb.dragMove);\n $(target).off(s.touchEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n \n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (s.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n init: function () {\n if (!s.params.hashnav) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (!hash) return;\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || '';\n }\n };\n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n if (s.params.mousewheelControl) {\n try {\n new window.WheelEvent('wheel');\n s.mousewheel.event = 'wheel';\n } catch (e) {\n if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) {\n s.mousewheel.event = 'wheel';\n }\n }\n if (!s.mousewheel.event && window.WheelEvent) {\n \n }\n if (!s.mousewheel.event && document.onmousewheel !== undefined) {\n s.mousewheel.event = 'mousewheel';\n }\n if (!s.mousewheel.event) {\n s.mousewheel.event = 'DOMMouseScroll';\n }\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var we = s.mousewheel.event;\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n //WebKits\n if (we === 'mousewheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY;\n }\n }\n //Old FireFox\n else if (we === 'DOMMouseScroll') delta = -e.detail;\n //New FireFox\n else if (we === 'wheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY;\n }\n }\n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n if (s.params.autoplay) s.stopAutoplay();\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.off(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.on(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1)\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Get Dom libraries\n ===========================*/\n var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7'];\n for (var i = 0; i < swiperDomPlugins.length; i++) {\n \tif (window[swiperDomPlugins[i]]) {\n \t\taddLibraryPlugin(window[swiperDomPlugins[i]]);\n \t}\n }\n // Required DOM Plugins\n var domLib;\n if (typeof Dom7 === 'undefined') {\n \tdomLib = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n \tdomLib = Dom7;\n }\n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n }\n\n window.Swiper = Swiper;\n})();\n/*===========================\nSwiper AMD Export\n===========================*/\nif (typeof(module) !== 'undefined')\n{\n module.exports = window.Swiper;\n}\nelse if (typeof define === 'function' && define.amd) {\n define([], function () {\n 'use strict';\n return window.Swiper;\n });\n}\n//# sourceMappingURL=maps/swiper.jquery.js.map\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.umd.min.js.map b/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.umd.min.js.map deleted file mode 100644 index 5c3ffbe9cf..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.jquery.umd.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["swiper.jquery.umd.js"],"names":["root","factory","define","amd","exports","module","require","Swiper","jQuery","this","$","addLibraryPlugin","lib","fn","swiper","params","firstInstance","each","s","container","round","a","Math","floor","autoplay","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","emit","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","target","is","parents","nodeType","found","index","_el","length","initObserver","options","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","observe","attributes","childList","characterData","observers","push","handleKeyboard","originalEvent","kc","keyCode","charCode","allowSwipeToNext","isHorizontal","allowSwipeToPrev","shiftKey","altKey","ctrlKey","metaKey","document","activeElement","nodeName","toLowerCase","inView","windowScroll","left","pageXOffset","top","pageYOffset","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","offset","rtl","scrollLeft","swiperCoord","width","height","i","point","preventDefault","returnValue","slideNext","slidePrev","handleMousewheel","we","mousewheel","event","delta","rtlFactor","mousewheelForceToAxis","abs","wheelDeltaX","wheelDeltaY","detail","deltaX","deltaY","mousewheelInvert","freeMode","position","getWrapperTranslate","mousewheelSensitivity","wasBeginning","isBeginning","wasEnd","minTranslate","maxTranslate","setWrapperTransition","setWrapperTranslate","updateProgress","updateActiveIndex","updateClasses","freeModeSticky","clearTimeout","timeout","slideReset","lazyLoading","lazy","load","Date","getTime","lastScrollTime","animating","mousewheelReleaseOnEdges","setParallaxTransform","progress","p","pX","pY","attr","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","direction","touchEventsTarget","initialSlide","speed","autoplayDisableOnInteraction","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","keyboardControl","mousewheelControl","hashnav","breakpoints","undefined","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","slidesOffsetBefore","slidesOffsetAfter","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","uniqueNavElements","pagination","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","swipeHandler","noSwiping","noSwipingClass","slideClass","slideActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slidePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","param","Dom7","deepParam","def","deepDef","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","breakpoint","points","hasOwnProperty","sort","b","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swipers","data","support","flexbox","transforms3d","touch","wrapper","children","paginationContainer","find","addClass","dir","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","unlockSwipeToPrev","unlockSwipes","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","srcset","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","_onReady","update","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","internal","pauseAutoplay","transitionEnd","snapGrid","updateAutoHeight","slide","slides","eq","activeIndex","newHeight","offsetHeight","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","ceil","max","slideSize","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","margin-top","outerWidth","outerHeight","swiperSlideSize","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","removeClass","slideProgress","slideBefore","slideAfter","isVisible","translatesDiff","newActiveIndex","snapIndex","previousIndex","activeSlide","nextSlide","next","prevSlide","prev","current","total","bullets","text","scale","scaleX","scaleY","transition","html","disable","enable","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","forceSetTranslate","newTranslate","min","set","translated","controller","spline","slideTo","forceUpdatePagination","slideChangedBySlideTo","desktopEvents","navigator","pointerEnabled","msPointerEnabled","touchEvents","start","move","end","initEvents","detach","actionDom","action","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","stopPropagation","stopImmediatePropagation","updateClickedSlide","slideFound","clickedSlide","clickedIndex","realIndex","slideToIndex","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","now","velocities","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","type","which","targetTouches","pageX","pageY","swipeDirection","blur","preventedByNestedSwiper","atan2","PI","ieTouch","trigger","disableParentSwiper","pow","time","touchEndTime","timeDiff","hasClass","toggleClass","currentPos","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","j","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","slideIndex","runCallbacks","setHash","clientLeft","_slidePrev","duration","byController","effects","setTransition","x","y","z","setTranslate","getTranslate","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","map","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","m42","initObservers","containerParents","disconnectObservers","disconnect","createLoop","remove","prependSlides","appendSlides","append","cloneNode","prepend","removeAttr","updatePosition","oldIndex","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","opacity","eventTriggered","triggerEvents","rotateY","rotateX","zIndex","shadowBefore","shadowAfter","cubeShadow","wrapperRotate","slideAngle","tz","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","scale1","scale2","zFactor","isSafari","isUiWebView","center","slideOffset","offsetMultiplier","translateZ","translateY","translateX","slideTransform","ws","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","add","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","amount","spv","maxIndex","minIndex","setDragPosition","sb","pointerPosition","clientX","clientY","track","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","dragEnd","enableDraggable","on","disableDraggable","off","trackSize","offsetWidth","divider","display","newPos","newSize","LinearSpline","lastIndex","i1","i3","interpolate","x2","binarySearch","guess","array","val","getInterpolateFunction","c","setControlledTranslate","controlledTranslate","controlled","isArray","setControlledTransition","init","initialized","hash","location","slideHash","disableKeyboardControl","enableKeyboardControl","WheelEvent","onmousewheel","disableMousewheelControl","enableMousewheelControl","parallaxDuration","_plugins","plugin","plugins","callPlugins","arguments","emitterEventListeners","handler","splice","once","_handler","makeFocusable","$el","addRole","role","addLabel","label","notify","click","liveRegion","message","notification","bullet","destroy","cleanupStyles","deleteInstance","prototype","ua","userAgent","test","arr","Object","apply","msMaxTouchPoints","maxTouchPoints","match","ipad","ipod","iphone","Modernizr","DocumentTouch","csstransforms3d","div","createElement","styles","domLib","fireCallBack","call","events","dom","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration"],"mappings":"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","file":"swiper.jquery.umd.min.js","sourcesContent":["/**\n * Swiper 3.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: February 7, 2016\n */\n(function (root, factory) {\n\t'use strict';\n\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.Swiper = factory(root.jQuery);\n\t}\n}(this, function ($) {\n\t'use strict';\n\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n // Hash Navigation\n hashnav: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // NS\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push('swiper-container-' + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push('swiper-container-free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push('swiper-container-no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push('swiper-container-autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push('swiper-container-3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push('swiper-container-' + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n s.params.setWrapperSize = false;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass('swiper-pagination-clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push('swiper-container-rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push('swiper-container-multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push('swiper-container-android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, s.params.autoplay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n // Update Height\n var slide = s.slides.eq(s.activeIndex)[0];\n if (typeof slide !== 'undefined') {\n var newHeight = slide.offsetHeight;\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n }\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css({\n 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n })\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n s.slides.eq(0).addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n s.slides.eq(-1).addClass(s.params.slidePrevClass);\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n function forceSetTranslate() {\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated, newTranslate;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];\n if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];\n else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0],\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1],\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2]\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n if (params.simulateTouch && !s.device.ios && !s.device.android) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = $(s.clickedSlide).attr('data-swiper-slide-index');\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - s.params.slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving && s.browser.ieTouch) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grabbing';\n s.container[0].style.cursor = '-moz-grabbin';\n s.container[0].style.cursor = 'grabbing';\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n if (!s.params.followFinger) return;\n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n \n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)');\n if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass('swiper-lazy-loading');\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset');\n s.loadImage(_img[0], (src || background), srcset, false, function () {\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading');\n slide.find('.swiper-lazy-preloader, .preloader').remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (s.params.slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = s.params.slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(s.touchEvents.start, sb.dragStart);\n $(target).on(s.touchEvents.move, sb.dragMove);\n $(target).on(s.touchEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(s.touchEvents.start, sb.dragStart);\n $(target).off(s.touchEvents.move, sb.dragMove);\n $(target).off(s.touchEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n \n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (s.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n init: function () {\n if (!s.params.hashnav) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (!hash) return;\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || '';\n }\n };\n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n if (s.params.mousewheelControl) {\n try {\n new window.WheelEvent('wheel');\n s.mousewheel.event = 'wheel';\n } catch (e) {\n if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) {\n s.mousewheel.event = 'wheel';\n }\n }\n if (!s.mousewheel.event && window.WheelEvent) {\n \n }\n if (!s.mousewheel.event && document.onmousewheel !== undefined) {\n s.mousewheel.event = 'mousewheel';\n }\n if (!s.mousewheel.event) {\n s.mousewheel.event = 'DOMMouseScroll';\n }\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var we = s.mousewheel.event;\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n //WebKits\n if (we === 'mousewheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY;\n }\n }\n //Old FireFox\n else if (we === 'DOMMouseScroll') delta = -e.detail;\n //New FireFox\n else if (we === 'wheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY;\n }\n }\n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n if (s.params.autoplay) s.stopAutoplay();\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.off(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.on(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1)\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Get jQuery\n ===========================*/\n \n addLibraryPlugin($);\n \n var domLib = $;\n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n }\n\n\treturn Swiper;\n}));\n//# sourceMappingURL=maps/swiper.jquery.umd.js.map\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.min.js.map b/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.min.js.map deleted file mode 100644 index fda10db3f4..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/maps/swiper.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["swiper.js"],"names":["addLibraryPlugin","lib","fn","swiper","params","firstInstance","this","each","s","Swiper","$","container","round","a","Math","floor","autoplay","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","emit","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","target","is","parents","nodeType","found","index","_el","length","initObserver","options","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","observe","attributes","childList","characterData","observers","push","handleKeyboard","originalEvent","kc","keyCode","charCode","allowSwipeToNext","isHorizontal","allowSwipeToPrev","shiftKey","altKey","ctrlKey","metaKey","document","activeElement","nodeName","toLowerCase","inView","windowScroll","left","pageXOffset","top","pageYOffset","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","offset","rtl","scrollLeft","swiperCoord","width","height","i","point","preventDefault","returnValue","slideNext","slidePrev","handleMousewheel","we","mousewheel","event","delta","rtlFactor","mousewheelForceToAxis","abs","wheelDeltaX","wheelDeltaY","detail","deltaX","deltaY","mousewheelInvert","freeMode","position","getWrapperTranslate","mousewheelSensitivity","wasBeginning","isBeginning","wasEnd","minTranslate","maxTranslate","setWrapperTransition","setWrapperTranslate","updateProgress","updateActiveIndex","updateClasses","freeModeSticky","clearTimeout","timeout","slideReset","lazyLoading","lazy","load","Date","getTime","lastScrollTime","animating","mousewheelReleaseOnEdges","setParallaxTransform","progress","p","pX","pY","attr","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","direction","touchEventsTarget","initialSlide","speed","autoplayDisableOnInteraction","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMinimumVelocity","autoHeight","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","flip","limitRotation","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","scrollbar","scrollbarHide","scrollbarDraggable","scrollbarSnapOnRelease","keyboardControl","mousewheelControl","hashnav","breakpoints","undefined","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","slidesOffsetBefore","slidesOffsetAfter","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","uniqueNavElements","pagination","paginationElement","paginationClickable","paginationHide","paginationBulletRender","paginationProgressRender","paginationFractionRender","paginationCustomRender","paginationType","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoadingInPrevNext","lazyLoadingInPrevNextAmount","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","controlBy","swipeHandler","noSwiping","noSwipingClass","slideClass","slideActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slidePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationCurrentClass","paginationTotalClass","paginationHiddenClass","paginationProgressbarClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","runCallbacksOnInit","initialVirtualTranslate","originalParams","param","Dom7","jQuery","deepParam","def","deepDef","classNames","Zepto","currentBreakpoint","getActiveBreakpoint","breakpoint","points","hasOwnProperty","sort","b","setBreakpoint","breakPointsParams","needsReLoop","destroyLoop","reLoop","swipers","data","support","flexbox","transforms3d","touch","wrapper","children","paginationContainer","find","addClass","dir","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","unlockSwipeToPrev","unlockSwipes","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","srcset","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","_onReady","update","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","internal","pauseAutoplay","transitionEnd","snapGrid","updateAutoHeight","slide","slides","eq","activeIndex","newHeight","offsetHeight","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","ceil","max","slideSize","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","margin-top","outerWidth","outerHeight","swiperSlideSize","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","removeClass","slideProgress","slideBefore","slideAfter","isVisible","translatesDiff","newActiveIndex","snapIndex","previousIndex","activeSlide","nextSlide","next","prevSlide","prev","current","total","bullets","text","scale","scaleX","scaleY","transition","html","disable","enable","updatePagination","paginationHTML","numberOfBullets","initPagination","updateTranslate","forceSetTranslate","newTranslate","min","set","translated","controller","spline","slideTo","forceUpdatePagination","slideChangedBySlideTo","desktopEvents","navigator","pointerEnabled","msPointerEnabled","touchEvents","start","move","end","initEvents","detach","actionDom","action","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","stopPropagation","stopImmediatePropagation","updateClickedSlide","slideFound","clickedSlide","clickedIndex","realIndex","slideToIndex","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","now","velocities","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","type","which","targetTouches","pageX","pageY","swipeDirection","blur","preventedByNestedSwiper","atan2","PI","ieTouch","trigger","disableParentSwiper","pow","time","touchEndTime","timeDiff","hasClass","toggleClass","currentPos","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","j","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","slideIndex","runCallbacks","setHash","clientLeft","_slidePrev","duration","byController","effects","setTransition","x","y","z","setTranslate","getTranslate","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","map","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","m42","initObservers","containerParents","disconnectObservers","disconnect","createLoop","remove","prependSlides","appendSlides","append","cloneNode","prepend","removeAttr","updatePosition","oldIndex","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","opacity","eventTriggered","triggerEvents","rotateY","rotateX","zIndex","shadowBefore","shadowAfter","cubeShadow","wrapperRotate","slideAngle","tz","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","scale1","scale2","zFactor","isSafari","isUiWebView","center","slideOffset","offsetMultiplier","translateZ","translateY","translateX","slideTransform","ws","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","add","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","amount","spv","maxIndex","minIndex","setDragPosition","sb","pointerPosition","clientX","clientY","track","dragSize","positionMin","moveDivider","positionMax","dragStart","dragTimeout","drag","dragMove","dragEnd","enableDraggable","on","disableDraggable","off","trackSize","offsetWidth","divider","display","newPos","newSize","LinearSpline","lastIndex","i1","i3","interpolate","x2","binarySearch","guess","array","val","getInterpolateFunction","c","setControlledTranslate","controlledTranslate","controlled","isArray","setControlledTransition","init","initialized","hash","location","slideHash","disableKeyboardControl","enableKeyboardControl","WheelEvent","onmousewheel","disableMousewheelControl","enableMousewheelControl","parallaxDuration","_plugins","plugin","plugins","callPlugins","arguments","emitterEventListeners","handler","splice","once","_handler","makeFocusable","$el","addRole","role","addLabel","label","notify","click","liveRegion","message","notification","bullet","destroy","cleanupStyles","deleteInstance","prototype","ua","userAgent","test","arr","Object","apply","msMaxTouchPoints","maxTouchPoints","match","ipad","ipod","iphone","Modernizr","DocumentTouch","csstransforms3d","div","createElement","styles","_this","context","els","tempParent","trim","toCreate","innerHTML","childNodes","querySelectorAll","getElementById","className","classes","classList","contains","toggle","attrs","value","setAttribute","attrName","removeAttribute","key","dom7ElementDataStorage","dataKey","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","targetSelector","listener","capture","handleLiveEvent","call","k","events","addEventListener","dom7LiveListeners","liveListener","removeEventListener","proxy","dom","eventData","evt","CustomEvent","bubbles","cancelable","createEvent","initEvent","dispatchEvent","fireCallBack","includeMargins","box","getBoundingClientRect","body","clientTop","scrollTop","props","prop","textContent","compareWith","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","appendChild","insertBefore","before","parentNode","insertAfter","after","nextSibling","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parent","unique","foundElements","removeChild","toAdd","swiperDomPlugins","domLib","module","exports","define","amd"],"mappings":"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","file":"swiper.min.js","sourcesContent":["/**\n * Swiper 3.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: February 7, 2016\n */\n(function () {\n 'use strict';\n var $;\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n autoplayStopOnLast: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n iOSEdgeSwipeDetection: false,\n iOSEdgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n flip: {\n slideShadows : true,\n limitRotation: true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n scrollbarDraggable: false,\n scrollbarSnapOnRelease: false,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n mousewheelSensitivity: 1,\n // Hash Navigation\n hashnav: false,\n // Breakpoints\n breakpoints: undefined,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Pagination\n pagination: null,\n paginationElement: 'span',\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n paginationProgressRender: null,\n paginationFractionRender: null,\n paginationCustomRender: null,\n paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom'\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingInPrevNextAmount: 1,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n controlBy: 'slide', //or 'container'\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // NS\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationCurrentClass: 'swiper-pagination-current',\n paginationTotalClass: 'swiper-pagination-total',\n paginationHiddenClass: 'swiper-pagination-hidden',\n paginationProgressbarClass: 'swiper-pagination-progressbar',\n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n var originalParams = {};\n for (var param in params) {\n if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) {\n originalParams[param] = {};\n for (var deepParam in params[param]) {\n originalParams[param][deepParam] = params[param][deepParam];\n }\n }\n else {\n originalParams[param] = params[param];\n }\n }\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Params\n s.params = params;\n s.originalParams = originalParams;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){\n $ = Dom7;\n }\n if (typeof $ === 'undefined') {\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n }\n // Export it to Swiper instance\n s.$ = $;\n \n /*=========================\n Breakpoints\n ===========================*/\n s.currentBreakpoint = undefined;\n s.getActiveBreakpoint = function () {\n //Get breakpoint for window width\n if (!s.params.breakpoints) return false;\n var breakpoint = false;\n var points = [], point;\n for ( point in s.params.breakpoints ) {\n if (s.params.breakpoints.hasOwnProperty(point)) {\n points.push(point);\n }\n }\n points.sort(function (a, b) {\n return parseInt(a, 10) > parseInt(b, 10);\n });\n for (var i = 0; i < points.length; i++) {\n point = points[i];\n if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n };\n s.setBreakpoint = function () {\n //Set breakpoint for window width and update parameters\n var breakpoint = s.getActiveBreakpoint();\n if (breakpoint && s.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams;\n var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView);\n for ( var param in breakPointsParams ) {\n s.params[param] = breakPointsParams[param];\n }\n s.currentBreakpoint = breakpoint;\n if(needsReLoop && s.destroyLoop) {\n s.reLoop(true);\n }\n }\n };\n // Set breakpoint on load\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n var swipers = [];\n s.container.each(function () {\n var container = this;\n swipers.push(new Swiper(this, params));\n });\n return swipers;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push('swiper-container-' + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push('swiper-container-free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push('swiper-container-no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n if (s.params.autoHeight) {\n s.classNames.push('swiper-container-autoheight');\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push('swiper-container-3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push('swiper-container-' + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade' || s.params.effect === 'flip') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n s.params.setWrapperSize = false;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) {\n s.paginationContainer = s.container.find(s.params.pagination);\n }\n \n if (s.params.paginationType === 'bullets' && s.params.paginationClickable) {\n s.paginationContainer.addClass('swiper-pagination-clickable');\n }\n else {\n s.params.paginationClickable = false;\n }\n s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType);\n }\n // Next/Prev Buttons\n if (s.params.nextButton || s.params.prevButton) {\n if (s.params.nextButton) {\n s.nextButton = $(s.params.nextButton);\n if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) {\n s.nextButton = s.container.find(s.params.nextButton);\n }\n }\n if (s.params.prevButton) {\n s.prevButton = $(s.params.prevButton);\n if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) {\n s.prevButton = s.container.find(s.params.prevButton);\n }\n }\n }\n \n // Is Horizontal\n s.isHorizontal = function () {\n return s.params.direction === 'horizontal';\n };\n // s.isH = isH;\n \n // RTL\n s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push('swiper-container-rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push('swiper-container-multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push('swiper-container-android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n /*=========================\n Locks, unlocks\n ===========================*/\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n };\n \n /*=========================\n Round helper\n ===========================*/\n function round(a) {\n return Math.floor(a);\n }\n /*=========================\n Set grab cursor\n ===========================*/\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n s.emit('onAutoplay', s);\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n s.emit('onAutoplay', s);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, s.params.autoplay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateAutoHeight = function () {\n // Update Height\n var slide = s.slides.eq(s.activeIndex)[0];\n if (typeof slide !== 'undefined') {\n var newHeight = slide.offsetHeight;\n if (newHeight) s.wrapper.css('height', newHeight + 'px');\n }\n };\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) {\n return;\n }\n \n //Subtract paddings\n width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10);\n height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10);\n \n // Store values\n s.width = width;\n s.height = height;\n s.size = s.isHorizontal() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = -s.params.slidesOffsetBefore,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof s.size === 'undefined') return;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn);\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css({\n 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n })\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n if (s.params.roundLengths) slideSize = round(slideSize);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (s.params.roundLengths) slideSize = round(slideSize);\n \n if (s.isHorizontal()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter;\n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (s.isHorizontal()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = -translate;\n if (s.rtl) offsetCenter = translate;\n \n // Visible Slides\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n var wasBeginning = s.isBeginning;\n var wasEnd = s.isEnd;\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd && !wasEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n // Next Slide\n var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n if (s.params.loop && nextSlide.length === 0) {\n s.slides.eq(0).addClass(s.params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n if (s.params.loop && prevSlide.length === 0) {\n s.slides.eq(-1).addClass(s.params.slidePrevClass);\n }\n \n // Pagination\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n // Current/Total\n var current,\n total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n if (s.params.loop) {\n current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup);\n if (current > s.slides.length - 1 - s.loopedSlides * 2) {\n current = current - (s.slides.length - s.loopedSlides * 2);\n }\n if (current > total - 1) current = current - total;\n if (current < 0 && s.params.paginationType !== 'bullets') current = total + current;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n current = s.snapIndex;\n }\n else {\n current = s.activeIndex || 0;\n }\n }\n // Types\n if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(current).addClass(s.params.bulletActiveClass);\n }\n }\n if (s.params.paginationType === 'fraction') {\n s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1);\n s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total);\n }\n if (s.params.paginationType === 'progress') {\n var scale = (current + 1) / total,\n scaleX = scale,\n scaleY = 1;\n if (!s.isHorizontal()) {\n scaleY = scale;\n scaleX = 1;\n }\n s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed);\n }\n if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) {\n s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total));\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n if (s.isBeginning) {\n s.prevButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton);\n }\n else {\n s.prevButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton);\n }\n }\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n if (s.isEnd) {\n s.nextButton.addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton);\n }\n else {\n s.nextButton.removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton);\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var paginationHTML = '';\n if (s.params.paginationType === 'bullets') {\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass);\n }\n else {\n paginationHTML += '<' + s.params.paginationElement+' class=\"' + s.params.bulletClass + '\">';\n }\n }\n s.paginationContainer.html(paginationHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n if (s.params.paginationClickable && s.params.a11y && s.a11y) {\n s.a11y.initPagination();\n }\n }\n if (s.params.paginationType === 'fraction') {\n if (s.params.paginationFractionRender) {\n paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass);\n }\n else {\n paginationHTML =\n '' +\n ' / ' +\n '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType === 'progress') {\n if (s.params.paginationProgressRender) {\n paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass);\n }\n else {\n paginationHTML = '';\n }\n s.paginationContainer.html(paginationHTML);\n }\n if (s.params.paginationType !== 'custom') {\n s.emit('onPaginationRendered', s, s.paginationContainer[0]);\n }\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n function forceSetTranslate() {\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated, newTranslate;\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n if (s.params.freeMode) {\n forceSetTranslate();\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n }\n else if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n //Breakpoints\n if (s.params.breakpoints) {\n s.setBreakpoint();\n }\n \n // Disable locks on resize\n var allowSwipeToPrev = s.params.allowSwipeToPrev;\n var allowSwipeToNext = s.params.allowSwipeToNext;\n s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true;\n \n s.updateContainerSize();\n s.updateSlidesSize();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.controller && s.controller.spline) {\n s.controller.spline = undefined;\n }\n var slideChangedBySlideTo = false;\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n \n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n }\n else {\n s.updateClasses();\n if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) {\n slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) {\n s.lazy.load();\n }\n // Return locks after resize\n s.params.allowSwipeToPrev = allowSwipeToPrev;\n s.params.allowSwipeToNext = allowSwipeToNext;\n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];\n if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];\n else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0],\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1],\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2]\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n if (params.simulateTouch && !s.device.ios && !s.device.android) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.nextButton[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.prevButton[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function () {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n if (s.isEnd && !s.params.loop) return;\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n if (s.isBeginning && !s.params.loop) return;\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex,\n duplicatedSlides;\n if (s.params.loop) {\n if (s.animating) return;\n realIndex = $(s.clickedSlide).attr('data-swiper-slide-index');\n if (s.params.centeredSlides) {\n if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n if (slideToIndex > s.slides.length - s.params.slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]:not(.swiper-slide-duplicate)').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n allowTouchCallbacks,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n \n var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n \n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) {\n return;\n }\n \n isTouched = true;\n isMoved = false;\n allowTouchCallbacks = true;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = startX;\n s.touches.startY = startY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) {\n s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n return;\n }\n if (s.params.onlyExternal) {\n // isMoved = true;\n s.allowClick = false;\n if (isTouched) {\n s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n }\n return;\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n if (allowTouchCallbacks) {\n s.emit('onTouchMove', s, e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving && s.browser.ieTouch) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grabbing';\n s.container[0].style.cursor = '-moz-grabbin';\n s.container[0].style.cursor = 'grabbing';\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n if (!s.params.followFinger) return;\n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (allowTouchCallbacks) {\n s.emit('onTouchEnd', s, e);\n }\n allowTouchCallbacks = false;\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n if ((s.activeIndex || 0) !== slideIndex ) return false;\n }\n \n // Update Index\n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n \n if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) {\n // Update Height\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n s.updateClasses();\n if (s.params.effect !== 'slide') {\n s.setWrapperTranslate(translate);\n }\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n \n if (speed === 0) {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(0);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTranslate(translate);\n s.setWrapperTransition(speed);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.params.autoHeight) {\n s.updateAutoHeight();\n }\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextStart', s);\n }\n else {\n s.emit('onSlidePrevStart', s);\n }\n }\n \n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n if (s.activeIndex > s.previousIndex) {\n s.emit('onSlideNextEnd', s);\n }\n else {\n s.emit('onSlidePrevEnd', s);\n }\n }\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (s.isHorizontal()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n \n if (s.params.roundLengths) {\n x = round(x);\n y = round(y);\n }\n \n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = s.isHorizontal() ? x : y;\n \n // Check if we need to update progress\n var progress;\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n progress = 0;\n }\n else {\n progress = (translate - s.minTranslate()) / (translatesDiff);\n }\n if (progress !== s.progress) {\n s.updateProgress(translate);\n }\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function(a){\n return a.replace(',','.');\n }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n \n if (axis === 'x') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = s.isHorizontal() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\n });\n \n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n \n if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length;\n \n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.reLoop = function (updatePosition) {\n var oldIndex = s.activeIndex - s.loopedSlides;\n s.destroyLoop();\n s.createLoop();\n s.updateSlidesSize();\n if (updatePosition) {\n s.slideTo(oldIndex + s.loopedSlides, 0, false);\n }\n \n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n flip: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var progress = slide[0].progress;\n if (s.params.flip.limitRotation) {\n progress = Math.max(Math.min(slide[0].progress, 1), -1);\n }\n var offset = slide[0].swiperSlideOffset;\n var rotate = -180 * progress,\n rotateY = rotate,\n rotateX = 0,\n tx = -offset,\n ty = 0;\n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n }\n else if (s.rtl) {\n rotateY = -rotateY;\n }\n \n slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length;\n \n if (s.params.flip.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n \n slide\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.eq(s.activeIndex).transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n if (!$(this).hasClass(s.params.slideActiveClass)) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!s.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (s.isHorizontal()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !s.isHorizontal()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0;\n var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('
');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('
');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)');\n if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) {\n img = img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass('swiper-lazy-loading');\n var background = _img.attr('data-background');\n var src = _img.attr('data-src'),\n srcset = _img.attr('data-srcset');\n s.loadImage(_img[0], (src || background), srcset, false, function () {\n if (background) {\n _img.css('background-image', 'url(\"' + background + '\")');\n _img.removeAttr('data-background');\n }\n else {\n if (srcset) {\n _img.attr('srcset', srcset);\n _img.removeAttr('data-srcset');\n }\n if (src) {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n }\n \n _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading');\n slide.find('.swiper-lazy-preloader, .preloader').remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (s.params.slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex);\n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {\n var amount = s.params.lazyLoadingInPrevNextAmount;\n var spv = s.params.slidesPerView;\n var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);\n var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = minIndex; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n isTouched: false,\n setDragPosition: function (e) {\n var sb = s.scrollbar;\n var x = 0, y = 0;\n var translate;\n var pointerPosition = s.isHorizontal() ?\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) :\n ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ;\n var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2;\n var positionMin = -s.minTranslate() * sb.moveDivider;\n var positionMax = -s.maxTranslate() * sb.moveDivider;\n if (position < positionMin) {\n position = positionMin;\n }\n else if (position > positionMax) {\n position = positionMax;\n }\n position = -position / sb.moveDivider;\n s.updateProgress(position);\n s.setWrapperTranslate(position, true);\n },\n dragStart: function (e) {\n var sb = s.scrollbar;\n sb.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n \n sb.setDragPosition(e);\n clearTimeout(sb.dragTimeout);\n \n sb.track.transition(0);\n if (s.params.scrollbarHide) {\n sb.track.css('opacity', 1);\n }\n s.wrapper.transition(100);\n sb.drag.transition(100);\n s.emit('onScrollbarDragStart', s);\n },\n dragMove: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n sb.setDragPosition(e);\n s.wrapper.transition(0);\n sb.track.transition(0);\n sb.drag.transition(0);\n s.emit('onScrollbarDragMove', s);\n },\n dragEnd: function (e) {\n var sb = s.scrollbar;\n if (!sb.isTouched) return;\n sb.isTouched = false;\n if (s.params.scrollbarHide) {\n clearTimeout(sb.dragTimeout);\n sb.dragTimeout = setTimeout(function () {\n sb.track.css('opacity', 0);\n sb.track.transition(400);\n }, 1000);\n \n }\n s.emit('onScrollbarDragEnd', s);\n if (s.params.scrollbarSnapOnRelease) {\n s.slideReset();\n }\n },\n enableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).on(s.touchEvents.start, sb.dragStart);\n $(target).on(s.touchEvents.move, sb.dragMove);\n $(target).on(s.touchEvents.end, sb.dragEnd);\n },\n disableDraggable: function () {\n var sb = s.scrollbar;\n var target = s.support.touch ? sb.track : document;\n $(sb.track).off(s.touchEvents.start, sb.dragStart);\n $(target).off(s.touchEvents.move, sb.dragMove);\n $(target).off(s.touchEvents.end, sb.dragEnd);\n },\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) {\n sb.track = s.container.find(s.params.scrollbar);\n }\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('
');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (s.isHorizontal()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && s.isHorizontal()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (s.isHorizontal()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)');\n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)');\n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n LinearSpline: function (x, y) {\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1, i3;\n var l = this.x.length;\n \n this.interpolate = function (x2) {\n if (!x2) return 0;\n \n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n \n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n \n var binarySearch = (function() {\n var maxIndex, minIndex, guess;\n return function(array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1)\n if (array[guess = maxIndex + minIndex >> 1] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n return maxIndex;\n };\n })();\n },\n //xxx: for now i will just save one spline function to to\n getInterpolateFunction: function(c){\n if(!s.controller.spline) s.controller.spline = s.params.loop ?\n new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) :\n new s.controller.LinearSpline(s.snapGrid, c.snapGrid);\n },\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n if (s.params.controlBy === 'slide') {\n s.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -s.controller.spline.interpolate(-translate);\n }\n \n if(!controlledTranslate || s.params.controlBy === 'container'){\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n }\n \n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n \n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n if (c.params.loop && s.params.controlBy === 'slide') {\n c.fixLoop();\n }\n c.onTransitionEnd();\n \n });\n }\n }\n if (s.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n init: function () {\n if (!s.params.hashnav) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (!hash) return;\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || '';\n }\n };\n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (s.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n }\n s.disableKeyboardControl = function () {\n s.params.keyboardControl = false;\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n s.params.keyboardControl = true;\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n if (s.params.mousewheelControl) {\n try {\n new window.WheelEvent('wheel');\n s.mousewheel.event = 'wheel';\n } catch (e) {\n if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) {\n s.mousewheel.event = 'wheel';\n }\n }\n if (!s.mousewheel.event && window.WheelEvent) {\n \n }\n if (!s.mousewheel.event && document.onmousewheel !== undefined) {\n s.mousewheel.event = 'mousewheel';\n }\n if (!s.mousewheel.event) {\n s.mousewheel.event = 'DOMMouseScroll';\n }\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var we = s.mousewheel.event;\n var delta = 0;\n var rtlFactor = s.rtl ? -1 : 1;\n \n //WebKits\n if (we === 'mousewheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY;\n }\n }\n //Old FireFox\n else if (we === 'DOMMouseScroll') delta = -e.detail;\n //New FireFox\n else if (we === 'wheel') {\n if (s.params.mousewheelForceToAxis) {\n if (s.isHorizontal()) {\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor;\n else return;\n }\n else {\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY;\n }\n }\n if (delta === 0) return;\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity;\n var wasBeginning = s.isBeginning,\n wasEnd = s.isEnd;\n \n if (position >= s.minTranslate()) position = s.minTranslate();\n if (position <= s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) {\n s.updateClasses();\n }\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n else {\n if (s.params.lazyLoading && s.lazy) {\n s.lazy.load();\n }\n }\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n if (s.params.autoplay) s.stopAutoplay();\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.off(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.on(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n var rtlFactor = s.rtl ? -1 : 1;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (s.isHorizontal()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n \n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress * rtlFactor + '%';\n }\n else {\n pX = pX * progress * rtlFactor + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n \n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n }\n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMessage);\n }\n else {\n s.a11y.notify(s.params.nextSlideMessage);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMessage);\n }\n else {\n s.a11y.notify(s.params.prevSlideMessage);\n }\n }\n if ($(event.target).is('.' + s.params.bulletClass)) {\n $(event.target)[0].click();\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) {\n s.a11y.makeFocusable(s.nextButton);\n s.a11y.addRole(s.nextButton, 'button');\n s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage);\n }\n if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) {\n s.a11y.makeFocusable(s.prevButton);\n s.a11y.addRole(s.prevButton, 'button');\n s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n initPagination: function () {\n if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) {\n s.bullets.each(function () {\n var bullet = $(this);\n s.a11y.makeFocusable(bullet);\n s.a11y.addRole(bullet, 'button');\n s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1));\n });\n }\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n if (s.params.scrollbarDraggable) {\n s.scrollbar.enableDraggable();\n }\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Disable draggable\n if (s.params.scrollbar && s.scrollbar) {\n if (s.params.scrollbarDraggable) {\n s.scrollbar.disableDraggable();\n }\n }\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1)\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipod,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Dom7 Library\n ===========================*/\n var Dom7 = (function () {\n var Dom7 = function (arr) {\n var _this = this, i = 0;\n // Create array-like object\n for (i = 0; i < arr.length; i++) {\n _this[i] = arr[i];\n }\n _this.length = arr.length;\n // Return collection with methods\n return this;\n };\n var $ = function (selector, context) {\n var arr = [], i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els, tempParent, html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.split('#')[1])];\n }\n else {\n // Other selectors\n els = (context || document).querySelectorAll(selector);\n }\n for (i = 0; i < els.length; i++) {\n if (els[i]) arr.push(els[i]);\n }\n }\n }\n // Node/element\n else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n }\n //Array of elements or instance of Dom\n else if (selector.length > 0 && selector[0].nodeType) {\n for (i = 0; i < selector.length; i++) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n };\n Dom7.prototype = {\n // Classes and attriutes\n addClass: function (className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.add(classes[i]);\n }\n }\n return this;\n },\n removeClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.remove(classes[i]);\n }\n }\n return this;\n },\n hasClass: function (className) {\n if (!this[0]) return false;\n else return this[0].classList.contains(className);\n },\n toggleClass: function (className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i++) {\n for (var j = 0; j < this.length; j++) {\n this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n },\n attr: function (attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n else return undefined;\n }\n else {\n // Set attrs\n for (var i = 0; i < this.length; i++) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n }\n else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n },\n removeAttr: function (attr) {\n for (var i = 0; i < this.length; i++) {\n this[i].removeAttribute(attr);\n }\n return this;\n },\n data: function (key, value) {\n if (typeof value === 'undefined') {\n // Get value\n if (this[0]) {\n var dataKey = this[0].getAttribute('data-' + key);\n if (dataKey) return dataKey;\n else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key];\n else return undefined;\n }\n else return undefined;\n }\n else {\n // Set value\n for (var i = 0; i < this.length; i++) {\n var el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n },\n // Transforms\n transform : function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n },\n transition: function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n },\n //Events\n on: function (eventName, targetSelector, listener, capture) {\n function handleLiveEvent(e) {\n var target = e.target;\n if ($(target).is(targetSelector)) listener.call(target, e);\n else {\n var parents = $(target).parents();\n for (var k = 0; k < parents.length; k++) {\n if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e);\n }\n }\n }\n var events = eventName.split(' ');\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n for (j = 0; j < events.length; j++) {\n this[i].addEventListener(events[j], listener, capture);\n }\n }\n else {\n //Live events\n for (j = 0; j < events.length; j++) {\n if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = [];\n this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent});\n this[i].addEventListener(events[j], handleLiveEvent, capture);\n }\n }\n }\n \n return this;\n },\n off: function (eventName, targetSelector, listener, capture) {\n var events = eventName.split(' ');\n for (var i = 0; i < events.length; i++) {\n for (var j = 0; j < this.length; j++) {\n if (typeof targetSelector === 'function' || targetSelector === false) {\n // Usual events\n if (typeof targetSelector === 'function') {\n listener = arguments[1];\n capture = arguments[2] || false;\n }\n this[j].removeEventListener(events[i], listener, capture);\n }\n else {\n // Live event\n if (this[j].dom7LiveListeners) {\n for (var k = 0; k < this[j].dom7LiveListeners.length; k++) {\n if (this[j].dom7LiveListeners[k].listener === listener) {\n this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture);\n }\n }\n }\n }\n }\n }\n return this;\n },\n once: function (eventName, targetSelector, listener, capture) {\n var dom = this;\n if (typeof targetSelector === 'function') {\n targetSelector = false;\n listener = arguments[1];\n capture = arguments[2];\n }\n function proxy(e) {\n listener(e);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n dom.on(eventName, targetSelector, proxy, capture);\n },\n trigger: function (eventName, eventData) {\n for (var i = 0; i < this.length; i++) {\n var evt;\n try {\n evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true});\n }\n catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(eventName, true, true);\n evt.detail = eventData;\n }\n this[i].dispatchEvent(evt);\n }\n return this;\n },\n transitionEnd: function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n },\n // Sizing/Styles\n width: function () {\n if (this[0] === window) {\n return window.innerWidth;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n else {\n return null;\n }\n }\n },\n outerWidth: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left'));\n else\n return this[0].offsetWidth;\n }\n else return null;\n },\n height: function () {\n if (this[0] === window) {\n return window.innerHeight;\n }\n else {\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n else {\n return null;\n }\n }\n },\n outerHeight: function (includeMargins) {\n if (this.length > 0) {\n if (includeMargins)\n return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom'));\n else\n return this[0].offsetHeight;\n }\n else return null;\n },\n offset: function () {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = window.pageYOffset || el.scrollTop;\n var scrollLeft = window.pageXOffset || el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n else {\n return null;\n }\n },\n css: function (props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n }\n else {\n for (i = 0; i < this.length; i++) {\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i++) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n },\n \n //Dom manipulation\n each: function (callback) {\n for (var i = 0; i < this.length; i++) {\n callback.call(this[i], i, this[i]);\n }\n return this;\n },\n html: function (html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].innerHTML = html;\n }\n return this;\n }\n },\n text: function (text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n else return null;\n }\n else {\n for (var i = 0; i < this.length; i++) {\n this[i].textContent = text;\n }\n return this;\n }\n },\n is: function (selector) {\n if (!this[0]) return false;\n var compareWith, i;\n if (typeof selector === 'string') {\n var el = this[0];\n if (el === document) return selector === document;\n if (el === window) return selector === window;\n \n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n else {\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n }\n else if (selector === document) return this[0] === document;\n else if (selector === window) return this[0] === window;\n else {\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i++) {\n if (compareWith[i] === this[0]) return true;\n }\n return false;\n }\n return false;\n }\n \n },\n index: function () {\n if (this[0]) {\n var child = this[0];\n var i = 0;\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i++;\n }\n return i;\n }\n else return undefined;\n },\n eq: function (index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n else return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n },\n append: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].appendChild(newChild[j]);\n }\n }\n else {\n this[i].appendChild(newChild);\n }\n }\n return this;\n },\n prepend: function (newChild) {\n var i, j;\n for (i = 0; i < this.length; i++) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j--) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n // this[i].insertAdjacentHTML('afterbegin', newChild);\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j++) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n }\n else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n },\n insertBefore: function (selector) {\n var before = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n }\n else if (before.length > 1) {\n for (var j = 0; j < before.length; j++) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n },\n insertAfter: function (selector) {\n var after = $(selector);\n for (var i = 0; i < this.length; i++) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n }\n else if (after.length > 1) {\n for (var j = 0; j < after.length; j++) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n },\n next: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n nextAll: function (selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n var next = el.nextElementSibling;\n if (selector) {\n if($(next).is(selector)) nextEls.push(next);\n }\n else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n },\n prev: function (selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n else {\n if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]);\n else return new Dom7([]);\n }\n }\n else return new Dom7([]);\n },\n prevAll: function (selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling;\n if (selector) {\n if($(prev).is(selector)) prevEls.push(prev);\n }\n else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n },\n parent: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n }\n else {\n parents.push(this[i].parentNode);\n }\n }\n return $($.unique(parents));\n },\n parents: function (selector) {\n var parents = [];\n for (var i = 0; i < this.length; i++) {\n var parent = this[i].parentNode;\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n }\n else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $($.unique(parents));\n },\n find : function (selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i++) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j++) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n },\n children: function (selector) {\n var children = [];\n for (var i = 0; i < this.length; i++) {\n var childNodes = this[i].childNodes;\n \n for (var j = 0; j < childNodes.length; j++) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n }\n else {\n if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]);\n }\n }\n }\n return new Dom7($.unique(children));\n },\n remove: function () {\n for (var i = 0; i < this.length; i++) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n },\n add: function () {\n var dom = this;\n var i, j;\n for (i = 0; i < arguments.length; i++) {\n var toAdd = $(arguments[i]);\n for (j = 0; j < toAdd.length; j++) {\n dom[dom.length] = toAdd[j];\n dom.length++;\n }\n }\n return dom;\n }\n };\n $.fn = Dom7.prototype;\n $.unique = function (arr) {\n var unique = [];\n for (var i = 0; i < arr.length; i++) {\n if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]);\n }\n return unique;\n };\n \n return $;\n })();\n \n\n /*===========================\n Get Dom libraries\n ===========================*/\n var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7'];\n for (var i = 0; i < swiperDomPlugins.length; i++) {\n \tif (window[swiperDomPlugins[i]]) {\n \t\taddLibraryPlugin(window[swiperDomPlugins[i]]);\n \t}\n }\n // Required DOM Plugins\n var domLib;\n if (typeof Dom7 === 'undefined') {\n \tdomLib = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n \tdomLib = Dom7;\n }\n\n /*===========================\n Add .swiper plugin from Dom libraries\n ===========================*/\n function addLibraryPlugin(lib) {\n lib.fn.swiper = function (params) {\n var firstInstance;\n lib(this).each(function () {\n var s = new Swiper(this, params);\n if (!firstInstance) firstInstance = s;\n });\n return firstInstance;\n };\n }\n \n if (domLib) {\n if (!('transitionEnd' in domLib.fn)) {\n domLib.fn.transitionEnd = function (callback) {\n var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],\n i, j, dom = this;\n function fireCallBack(e) {\n /*jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i++) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i++) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n };\n }\n if (!('transform' in domLib.fn)) {\n domLib.fn.transform = function (transform) {\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;\n }\n return this;\n };\n }\n if (!('transition' in domLib.fn)) {\n domLib.fn.transition = function (duration) {\n if (typeof duration !== 'string') {\n duration = duration + 'ms';\n }\n for (var i = 0; i < this.length; i++) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;\n }\n return this;\n };\n }\n }\n\n window.Swiper = Swiper;\n})();\n/*===========================\nSwiper AMD Export\n===========================*/\nif (typeof(module) !== 'undefined')\n{\n module.exports = window.Swiper;\n}\nelse if (typeof define === 'function' && define.amd) {\n define([], function () {\n 'use strict';\n return window.Swiper;\n });\n}\n//# sourceMappingURL=maps/swiper.js.map\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.js b/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.js deleted file mode 100644 index 3cd248ac22..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.js +++ /dev/null @@ -1,3778 +0,0 @@ -/** - * Swiper 3.3.1 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2016, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: February 7, 2016 - */ -(function () { - 'use strict'; - var $; - /*=========================== - Swiper - ===========================*/ - var Swiper = function (container, params) { - if (!(this instanceof Swiper)) return new Swiper(container, params); - - var defaults = { - direction: 'horizontal', - touchEventsTarget: 'container', - initialSlide: 0, - speed: 300, - // autoplay - autoplay: false, - autoplayDisableOnInteraction: true, - autoplayStopOnLast: false, - // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). - iOSEdgeSwipeDetection: false, - iOSEdgeSwipeThreshold: 20, - // Free mode - freeMode: false, - freeModeMomentum: true, - freeModeMomentumRatio: 1, - freeModeMomentumBounce: true, - freeModeMomentumBounceRatio: 1, - freeModeSticky: false, - freeModeMinimumVelocity: 0.02, - // Autoheight - autoHeight: false, - // Set wrapper width - setWrapperSize: false, - // Virtual Translate - virtualTranslate: false, - // Effects - effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' - coverflow: { - rotate: 50, - stretch: 0, - depth: 100, - modifier: 1, - slideShadows : true - }, - flip: { - slideShadows : true, - limitRotation: true - }, - cube: { - slideShadows: true, - shadow: true, - shadowOffset: 20, - shadowScale: 0.94 - }, - fade: { - crossFade: false - }, - // Parallax - parallax: false, - // Scrollbar - scrollbar: null, - scrollbarHide: true, - scrollbarDraggable: false, - scrollbarSnapOnRelease: false, - // Keyboard Mousewheel - keyboardControl: false, - mousewheelControl: false, - mousewheelReleaseOnEdges: false, - mousewheelInvert: false, - mousewheelForceToAxis: false, - mousewheelSensitivity: 1, - // Hash Navigation - hashnav: false, - // Breakpoints - breakpoints: undefined, - // Slides grid - spaceBetween: 0, - slidesPerView: 1, - slidesPerColumn: 1, - slidesPerColumnFill: 'column', - slidesPerGroup: 1, - centeredSlides: false, - slidesOffsetBefore: 0, // in px - slidesOffsetAfter: 0, // in px - // Round length - roundLengths: false, - // Touches - touchRatio: 1, - touchAngle: 45, - simulateTouch: true, - shortSwipes: true, - longSwipes: true, - longSwipesRatio: 0.5, - longSwipesMs: 300, - followFinger: true, - onlyExternal: false, - threshold: 0, - touchMoveStopPropagation: true, - // Unique Navigation Elements - uniqueNavElements: true, - // Pagination - pagination: null, - paginationElement: 'span', - paginationClickable: false, - paginationHide: false, - paginationBulletRender: null, - paginationProgressRender: null, - paginationFractionRender: null, - paginationCustomRender: null, - paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom' - // Resistance - resistance: true, - resistanceRatio: 0.85, - // Next/prev buttons - nextButton: null, - prevButton: null, - // Progress - watchSlidesProgress: false, - watchSlidesVisibility: false, - // Cursor - grabCursor: false, - // Clicks - preventClicks: true, - preventClicksPropagation: true, - slideToClickedSlide: false, - // Lazy Loading - lazyLoading: false, - lazyLoadingInPrevNext: false, - lazyLoadingInPrevNextAmount: 1, - lazyLoadingOnTransitionStart: false, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - // Control - control: undefined, - controlInverse: false, - controlBy: 'slide', //or 'container' - // Swiping/no swiping - allowSwipeToPrev: true, - allowSwipeToNext: true, - swipeHandler: null, //'.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - // NS - slideClass: 'swiper-slide', - slideActiveClass: 'swiper-slide-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slidePrevClass: 'swiper-slide-prev', - wrapperClass: 'swiper-wrapper', - bulletClass: 'swiper-pagination-bullet', - bulletActiveClass: 'swiper-pagination-bullet-active', - buttonDisabledClass: 'swiper-button-disabled', - paginationCurrentClass: 'swiper-pagination-current', - paginationTotalClass: 'swiper-pagination-total', - paginationHiddenClass: 'swiper-pagination-hidden', - paginationProgressbarClass: 'swiper-pagination-progressbar', - // Observer - observer: false, - observeParents: false, - // Accessibility - a11y: false, - prevSlideMessage: 'Previous slide', - nextSlideMessage: 'Next slide', - firstSlideMessage: 'This is the first slide', - lastSlideMessage: 'This is the last slide', - paginationBulletMessage: 'Go to slide {{index}}', - // Callbacks - runCallbacksOnInit: true - /* - Callbacks: - onInit: function (swiper) - onDestroy: function (swiper) - onClick: function (swiper, e) - onTap: function (swiper, e) - onDoubleTap: function (swiper, e) - onSliderMove: function (swiper, e) - onSlideChangeStart: function (swiper) - onSlideChangeEnd: function (swiper) - onTransitionStart: function (swiper) - onTransitionEnd: function (swiper) - onImagesReady: function (swiper) - onProgress: function (swiper, progress) - onTouchStart: function (swiper, e) - onTouchMove: function (swiper, e) - onTouchMoveOpposite: function (swiper, e) - onTouchEnd: function (swiper, e) - onReachBeginning: function (swiper) - onReachEnd: function (swiper) - onSetTransition: function (swiper, duration) - onSetTranslate: function (swiper, translate) - onAutoplayStart: function (swiper) - onAutoplayStop: function (swiper), - onLazyImageLoad: function (swiper, slide, image) - onLazyImageReady: function (swiper, slide, image) - */ - - }; - var initialVirtualTranslate = params && params.virtualTranslate; - - params = params || {}; - var originalParams = {}; - for (var param in params) { - if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) { - originalParams[param] = {}; - for (var deepParam in params[param]) { - originalParams[param][deepParam] = params[param][deepParam]; - } - } - else { - originalParams[param] = params[param]; - } - } - for (var def in defaults) { - if (typeof params[def] === 'undefined') { - params[def] = defaults[def]; - } - else if (typeof params[def] === 'object') { - for (var deepDef in defaults[def]) { - if (typeof params[def][deepDef] === 'undefined') { - params[def][deepDef] = defaults[def][deepDef]; - } - } - } - } - - // Swiper - var s = this; - - // Params - s.params = params; - s.originalParams = originalParams; - - // Classname - s.classNames = []; - /*========================= - Dom Library and plugins - ===========================*/ - if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){ - $ = Dom7; - } - if (typeof $ === 'undefined') { - if (typeof Dom7 === 'undefined') { - $ = window.Dom7 || window.Zepto || window.jQuery; - } - else { - $ = Dom7; - } - if (!$) return; - } - // Export it to Swiper instance - s.$ = $; - - /*========================= - Breakpoints - ===========================*/ - s.currentBreakpoint = undefined; - s.getActiveBreakpoint = function () { - //Get breakpoint for window width - if (!s.params.breakpoints) return false; - var breakpoint = false; - var points = [], point; - for ( point in s.params.breakpoints ) { - if (s.params.breakpoints.hasOwnProperty(point)) { - points.push(point); - } - } - points.sort(function (a, b) { - return parseInt(a, 10) > parseInt(b, 10); - }); - for (var i = 0; i < points.length; i++) { - point = points[i]; - if (point >= window.innerWidth && !breakpoint) { - breakpoint = point; - } - } - return breakpoint || 'max'; - }; - s.setBreakpoint = function () { - //Set breakpoint for window width and update parameters - var breakpoint = s.getActiveBreakpoint(); - if (breakpoint && s.currentBreakpoint !== breakpoint) { - var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams; - var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView); - for ( var param in breakPointsParams ) { - s.params[param] = breakPointsParams[param]; - } - s.currentBreakpoint = breakpoint; - if(needsReLoop && s.destroyLoop) { - s.reLoop(true); - } - } - }; - // Set breakpoint on load - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - /*========================= - Preparation - Define Container, Wrapper and Pagination - ===========================*/ - s.container = $(container); - if (s.container.length === 0) return; - if (s.container.length > 1) { - var swipers = []; - s.container.each(function () { - var container = this; - swipers.push(new Swiper(this, params)); - }); - return swipers; - } - - // Save instance in container HTML Element and in data - s.container[0].swiper = s; - s.container.data('swiper', s); - - s.classNames.push('swiper-container-' + s.params.direction); - - if (s.params.freeMode) { - s.classNames.push('swiper-container-free-mode'); - } - if (!s.support.flexbox) { - s.classNames.push('swiper-container-no-flexbox'); - s.params.slidesPerColumn = 1; - } - if (s.params.autoHeight) { - s.classNames.push('swiper-container-autoheight'); - } - // Enable slides progress when required - if (s.params.parallax || s.params.watchSlidesVisibility) { - s.params.watchSlidesProgress = true; - } - // Coverflow / 3D - if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) { - if (s.support.transforms3d) { - s.params.watchSlidesProgress = true; - s.classNames.push('swiper-container-3d'); - } - else { - s.params.effect = 'slide'; - } - } - if (s.params.effect !== 'slide') { - s.classNames.push('swiper-container-' + s.params.effect); - } - if (s.params.effect === 'cube') { - s.params.resistanceRatio = 0; - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.centeredSlides = false; - s.params.spaceBetween = 0; - s.params.virtualTranslate = true; - s.params.setWrapperSize = false; - } - if (s.params.effect === 'fade' || s.params.effect === 'flip') { - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.watchSlidesProgress = true; - s.params.spaceBetween = 0; - s.params.setWrapperSize = false; - if (typeof initialVirtualTranslate === 'undefined') { - s.params.virtualTranslate = true; - } - } - - // Grab Cursor - if (s.params.grabCursor && s.support.touch) { - s.params.grabCursor = false; - } - - // Wrapper - s.wrapper = s.container.children('.' + s.params.wrapperClass); - - // Pagination - if (s.params.pagination) { - s.paginationContainer = $(s.params.pagination); - if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) { - s.paginationContainer = s.container.find(s.params.pagination); - } - - if (s.params.paginationType === 'bullets' && s.params.paginationClickable) { - s.paginationContainer.addClass('swiper-pagination-clickable'); - } - else { - s.params.paginationClickable = false; - } - s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType); - } - // Next/Prev Buttons - if (s.params.nextButton || s.params.prevButton) { - if (s.params.nextButton) { - s.nextButton = $(s.params.nextButton); - if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) { - s.nextButton = s.container.find(s.params.nextButton); - } - } - if (s.params.prevButton) { - s.prevButton = $(s.params.prevButton); - if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) { - s.prevButton = s.container.find(s.params.prevButton); - } - } - } - - // Is Horizontal - s.isHorizontal = function () { - return s.params.direction === 'horizontal'; - }; - // s.isH = isH; - - // RTL - s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl'); - if (s.rtl) { - s.classNames.push('swiper-container-rtl'); - } - - // Wrong RTL support - if (s.rtl) { - s.wrongRTL = s.wrapper.css('display') === '-webkit-box'; - } - - // Columns - if (s.params.slidesPerColumn > 1) { - s.classNames.push('swiper-container-multirow'); - } - - // Check for Android - if (s.device.android) { - s.classNames.push('swiper-container-android'); - } - - // Add classes - s.container.addClass(s.classNames.join(' ')); - - // Translate - s.translate = 0; - - // Progress - s.progress = 0; - - // Velocity - s.velocity = 0; - - /*========================= - Locks, unlocks - ===========================*/ - s.lockSwipeToNext = function () { - s.params.allowSwipeToNext = false; - }; - s.lockSwipeToPrev = function () { - s.params.allowSwipeToPrev = false; - }; - s.lockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false; - }; - s.unlockSwipeToNext = function () { - s.params.allowSwipeToNext = true; - }; - s.unlockSwipeToPrev = function () { - s.params.allowSwipeToPrev = true; - }; - s.unlockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true; - }; - - /*========================= - Round helper - ===========================*/ - function round(a) { - return Math.floor(a); - } - /*========================= - Set grab cursor - ===========================*/ - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - /*========================= - Update on Images Ready - ===========================*/ - s.imagesToLoad = []; - s.imagesLoaded = 0; - - s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) { - var image; - function onReady () { - if (callback) callback(); - } - if (!imgElement.complete || !checkForComplete) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - if (srcset) { - image.srcset = srcset; - } - if (src) { - image.src = src; - } - } else { - onReady(); - } - - } else {//image already loaded... - onReady(); - } - }; - s.preloadImages = function () { - s.imagesToLoad = s.container.find('img'); - function _onReady() { - if (typeof s === 'undefined' || s === null) return; - if (s.imagesLoaded !== undefined) s.imagesLoaded++; - if (s.imagesLoaded === s.imagesToLoad.length) { - if (s.params.updateOnImagesReady) s.update(); - s.emit('onImagesReady', s); - } - } - for (var i = 0; i < s.imagesToLoad.length; i++) { - s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady); - } - }; - - /*========================= - Autoplay - ===========================*/ - s.autoplayTimeoutId = undefined; - s.autoplaying = false; - s.autoplayPaused = false; - function autoplay() { - s.autoplayTimeoutId = setTimeout(function () { - if (s.params.loop) { - s.fixLoop(); - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!s.isEnd) { - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!params.autoplayStopOnLast) { - s._slideTo(0); - s.emit('onAutoplay', s); - } - else { - s.stopAutoplay(); - } - } - } - }, s.params.autoplay); - } - s.startAutoplay = function () { - if (typeof s.autoplayTimeoutId !== 'undefined') return false; - if (!s.params.autoplay) return false; - if (s.autoplaying) return false; - s.autoplaying = true; - s.emit('onAutoplayStart', s); - autoplay(); - }; - s.stopAutoplay = function (internal) { - if (!s.autoplayTimeoutId) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplaying = false; - s.autoplayTimeoutId = undefined; - s.emit('onAutoplayStop', s); - }; - s.pauseAutoplay = function (speed) { - if (s.autoplayPaused) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplayPaused = true; - if (speed === 0) { - s.autoplayPaused = false; - autoplay(); - } - else { - s.wrapper.transitionEnd(function () { - if (!s) return; - s.autoplayPaused = false; - if (!s.autoplaying) { - s.stopAutoplay(); - } - else { - autoplay(); - } - }); - } - }; - /*========================= - Min/Max Translate - ===========================*/ - s.minTranslate = function () { - return (-s.snapGrid[0]); - }; - s.maxTranslate = function () { - return (-s.snapGrid[s.snapGrid.length - 1]); - }; - /*========================= - Slider/slides sizes - ===========================*/ - s.updateAutoHeight = function () { - // Update Height - var slide = s.slides.eq(s.activeIndex)[0]; - if (typeof slide !== 'undefined') { - var newHeight = slide.offsetHeight; - if (newHeight) s.wrapper.css('height', newHeight + 'px'); - } - }; - s.updateContainerSize = function () { - var width, height; - if (typeof s.params.width !== 'undefined') { - width = s.params.width; - } - else { - width = s.container[0].clientWidth; - } - if (typeof s.params.height !== 'undefined') { - height = s.params.height; - } - else { - height = s.container[0].clientHeight; - } - if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) { - return; - } - - //Subtract paddings - width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10); - height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10); - - // Store values - s.width = width; - s.height = height; - s.size = s.isHorizontal() ? s.width : s.height; - }; - - s.updateSlidesSize = function () { - s.slides = s.wrapper.children('.' + s.params.slideClass); - s.snapGrid = []; - s.slidesGrid = []; - s.slidesSizesGrid = []; - - var spaceBetween = s.params.spaceBetween, - slidePosition = -s.params.slidesOffsetBefore, - i, - prevSlideSize = 0, - index = 0; - if (typeof s.size === 'undefined') return; - if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { - spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size; - } - - s.virtualSize = -spaceBetween; - // reset margins - if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''}); - else s.slides.css({marginRight: '', marginBottom: ''}); - - var slidesNumberEvenToRows; - if (s.params.slidesPerColumn > 1) { - if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) { - slidesNumberEvenToRows = s.slides.length; - } - else { - slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn; - } - if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') { - slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn); - } - } - - // Calc slides - var slideSize; - var slidesPerColumn = s.params.slidesPerColumn; - var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; - var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length); - for (i = 0; i < s.slides.length; i++) { - slideSize = 0; - var slide = s.slides.eq(i); - if (s.params.slidesPerColumn > 1) { - // Set slides order - var newSlideOrderIndex; - var column, row; - if (s.params.slidesPerColumnFill === 'column') { - column = Math.floor(i / slidesPerColumn); - row = i - column * slidesPerColumn; - if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) { - if (++row >= slidesPerColumn) { - row = 0; - column++; - } - } - newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; - slide - .css({ - '-webkit-box-ordinal-group': newSlideOrderIndex, - '-moz-box-ordinal-group': newSlideOrderIndex, - '-ms-flex-order': newSlideOrderIndex, - '-webkit-order': newSlideOrderIndex, - 'order': newSlideOrderIndex - }); - } - else { - row = Math.floor(i / slidesPerRow); - column = i - row * slidesPerRow; - } - slide - .css({ - 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px') - }) - .attr('data-swiper-column', column) - .attr('data-swiper-row', row); - - } - if (slide.css('display') === 'none') continue; - if (s.params.slidesPerView === 'auto') { - slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); - if (s.params.roundLengths) slideSize = round(slideSize); - } - else { - slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView; - if (s.params.roundLengths) slideSize = round(slideSize); - - if (s.isHorizontal()) { - s.slides[i].style.width = slideSize + 'px'; - } - else { - s.slides[i].style.height = slideSize + 'px'; - } - } - s.slides[i].swiperSlideSize = slideSize; - s.slidesSizesGrid.push(slideSize); - - - if (s.params.centeredSlides) { - slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; - if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - } - else { - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - slidePosition = slidePosition + slideSize + spaceBetween; - } - - s.virtualSize += slideSize + spaceBetween; - - prevSlideSize = slideSize; - - index ++; - } - s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter; - var newSlidesGrid; - - if ( - s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) { - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - } - if (!s.support.flexbox || s.params.setWrapperSize) { - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - } - - if (s.params.slidesPerColumn > 1) { - s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows; - s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween; - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - if (s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]); - } - s.snapGrid = newSlidesGrid; - } - } - - // Remove last grid elements depending on width - if (!s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] <= s.virtualSize - s.size) { - newSlidesGrid.push(s.snapGrid[i]); - } - } - s.snapGrid = newSlidesGrid; - if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) { - s.snapGrid.push(s.virtualSize - s.size); - } - } - if (s.snapGrid.length === 0) s.snapGrid = [0]; - - if (s.params.spaceBetween !== 0) { - if (s.isHorizontal()) { - if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'}); - else s.slides.css({marginRight: spaceBetween + 'px'}); - } - else s.slides.css({marginBottom: spaceBetween + 'px'}); - } - if (s.params.watchSlidesProgress) { - s.updateSlidesOffset(); - } - }; - s.updateSlidesOffset = function () { - for (var i = 0; i < s.slides.length; i++) { - s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop; - } - }; - - /*========================= - Slider/slides progress - ===========================*/ - s.updateSlidesProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - if (s.slides.length === 0) return; - if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset(); - - var offsetCenter = -translate; - if (s.rtl) offsetCenter = translate; - - // Visible Slides - s.slides.removeClass(s.params.slideVisibleClass); - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides[i]; - var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween); - if (s.params.watchSlidesVisibility) { - var slideBefore = -(offsetCenter - slide.swiperSlideOffset); - var slideAfter = slideBefore + s.slidesSizesGrid[i]; - var isVisible = - (slideBefore >= 0 && slideBefore < s.size) || - (slideAfter > 0 && slideAfter <= s.size) || - (slideBefore <= 0 && slideAfter >= s.size); - if (isVisible) { - s.slides.eq(i).addClass(s.params.slideVisibleClass); - } - } - slide.progress = s.rtl ? -slideProgress : slideProgress; - } - }; - s.updateProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - var translatesDiff = s.maxTranslate() - s.minTranslate(); - var wasBeginning = s.isBeginning; - var wasEnd = s.isEnd; - if (translatesDiff === 0) { - s.progress = 0; - s.isBeginning = s.isEnd = true; - } - else { - s.progress = (translate - s.minTranslate()) / (translatesDiff); - s.isBeginning = s.progress <= 0; - s.isEnd = s.progress >= 1; - } - if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s); - if (s.isEnd && !wasEnd) s.emit('onReachEnd', s); - - if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate); - s.emit('onProgress', s, s.progress); - }; - s.updateActiveIndex = function () { - var translate = s.rtl ? s.translate : -s.translate; - var newActiveIndex, i, snapIndex; - for (i = 0; i < s.slidesGrid.length; i ++) { - if (typeof s.slidesGrid[i + 1] !== 'undefined') { - if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) { - newActiveIndex = i; - } - else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) { - newActiveIndex = i + 1; - } - } - else { - if (translate >= s.slidesGrid[i]) { - newActiveIndex = i; - } - } - } - // Normalize slideIndex - if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0; - // for (i = 0; i < s.slidesGrid.length; i++) { - // if (- translate >= s.slidesGrid[i]) { - // newActiveIndex = i; - // } - // } - snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup); - if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1; - - if (newActiveIndex === s.activeIndex) { - return; - } - s.snapIndex = snapIndex; - s.previousIndex = s.activeIndex; - s.activeIndex = newActiveIndex; - s.updateClasses(); - }; - - /*========================= - Classes - ===========================*/ - s.updateClasses = function () { - s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass); - var activeSlide = s.slides.eq(s.activeIndex); - // Active classes - activeSlide.addClass(s.params.slideActiveClass); - // Next Slide - var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass); - if (s.params.loop && nextSlide.length === 0) { - s.slides.eq(0).addClass(s.params.slideNextClass); - } - // Prev Slide - var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass); - if (s.params.loop && prevSlide.length === 0) { - s.slides.eq(-1).addClass(s.params.slidePrevClass); - } - - // Pagination - if (s.paginationContainer && s.paginationContainer.length > 0) { - // Current/Total - var current, - total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - if (s.params.loop) { - current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup); - if (current > s.slides.length - 1 - s.loopedSlides * 2) { - current = current - (s.slides.length - s.loopedSlides * 2); - } - if (current > total - 1) current = current - total; - if (current < 0 && s.params.paginationType !== 'bullets') current = total + current; - } - else { - if (typeof s.snapIndex !== 'undefined') { - current = s.snapIndex; - } - else { - current = s.activeIndex || 0; - } - } - // Types - if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) { - s.bullets.removeClass(s.params.bulletActiveClass); - if (s.paginationContainer.length > 1) { - s.bullets.each(function () { - if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass); - }); - } - else { - s.bullets.eq(current).addClass(s.params.bulletActiveClass); - } - } - if (s.params.paginationType === 'fraction') { - s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1); - s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total); - } - if (s.params.paginationType === 'progress') { - var scale = (current + 1) / total, - scaleX = scale, - scaleY = 1; - if (!s.isHorizontal()) { - scaleY = scale; - scaleX = 1; - } - s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed); - } - if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) { - s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total)); - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - - // Next/active buttons - if (!s.params.loop) { - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - if (s.isBeginning) { - s.prevButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton); - } - else { - s.prevButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton); - } - } - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - if (s.isEnd) { - s.nextButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton); - } - else { - s.nextButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton); - } - } - } - }; - - /*========================= - Pagination - ===========================*/ - s.updatePagination = function () { - if (!s.params.pagination) return; - if (s.paginationContainer && s.paginationContainer.length > 0) { - var paginationHTML = ''; - if (s.params.paginationType === 'bullets') { - var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - for (var i = 0; i < numberOfBullets; i++) { - if (s.params.paginationBulletRender) { - paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass); - } - else { - paginationHTML += '<' + s.params.paginationElement+' class="' + s.params.bulletClass + '">'; - } - } - s.paginationContainer.html(paginationHTML); - s.bullets = s.paginationContainer.find('.' + s.params.bulletClass); - if (s.params.paginationClickable && s.params.a11y && s.a11y) { - s.a11y.initPagination(); - } - } - if (s.params.paginationType === 'fraction') { - if (s.params.paginationFractionRender) { - paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass); - } - else { - paginationHTML = - '' + - ' / ' + - ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType === 'progress') { - if (s.params.paginationProgressRender) { - paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass); - } - else { - paginationHTML = ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType !== 'custom') { - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - }; - /*========================= - Common update method - ===========================*/ - s.update = function (updateTranslate) { - s.updateContainerSize(); - s.updateSlidesSize(); - s.updateProgress(); - s.updatePagination(); - s.updateClasses(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - function forceSetTranslate() { - newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - } - if (updateTranslate) { - var translated, newTranslate; - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - if (s.params.freeMode) { - forceSetTranslate(); - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - translated = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - translated = s.slideTo(s.activeIndex, 0, false, true); - } - if (!translated) { - forceSetTranslate(); - } - } - } - else if (s.params.autoHeight) { - s.updateAutoHeight(); - } - }; - - /*========================= - Resize Handler - ===========================*/ - s.onResize = function (forceUpdatePagination) { - //Breakpoints - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - // Disable locks on resize - var allowSwipeToPrev = s.params.allowSwipeToPrev; - var allowSwipeToNext = s.params.allowSwipeToNext; - s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true; - - s.updateContainerSize(); - s.updateSlidesSize(); - if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - var slideChangedBySlideTo = false; - if (s.params.freeMode) { - var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - s.updateClasses(); - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true); - } - } - if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) { - s.lazy.load(); - } - // Return locks after resize - s.params.allowSwipeToPrev = allowSwipeToPrev; - s.params.allowSwipeToNext = allowSwipeToNext; - }; - - /*========================= - Events - ===========================*/ - - //Define Touch Events - var desktopEvents = ['mousedown', 'mousemove', 'mouseup']; - if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup']; - else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; - s.touchEvents = { - start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0], - move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1], - end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2] - }; - - - // WP8 Touch Events Fix - if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) { - (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction); - } - - // Attach/detach events - s.initEvents = function (detach) { - var actionDom = detach ? 'off' : 'on'; - var action = detach ? 'removeEventListener' : 'addEventListener'; - var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0]; - var target = s.support.touch ? touchEventsTarget : document; - - var moveCapture = s.params.nested ? true : false; - - //Touch Events - if (s.browser.ie) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - target[action](s.touchEvents.move, s.onTouchMove, moveCapture); - target[action](s.touchEvents.end, s.onTouchEnd, false); - } - else { - if (s.support.touch) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture); - touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false); - } - if (params.simulateTouch && !s.device.ios && !s.device.android) { - touchEventsTarget[action]('mousedown', s.onTouchStart, false); - document[action]('mousemove', s.onTouchMove, moveCapture); - document[action]('mouseup', s.onTouchEnd, false); - } - } - window[action]('resize', s.onResize); - - // Next, Prev, Index - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.nextButton[actionDom]('click', s.onClickNext); - if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.prevButton[actionDom]('click', s.onClickPrev); - if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.pagination && s.params.paginationClickable) { - s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex); - if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey); - } - - // Prevent Links Clicks - if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true); - }; - s.attachEvents = function () { - s.initEvents(); - }; - s.detachEvents = function () { - s.initEvents(true); - }; - - /*========================= - Handle Clicks - ===========================*/ - // Prevent Clicks - s.allowClick = true; - s.preventClicks = function (e) { - if (!s.allowClick) { - if (s.params.preventClicks) e.preventDefault(); - if (s.params.preventClicksPropagation && s.animating) { - e.stopPropagation(); - e.stopImmediatePropagation(); - } - } - }; - // Clicks - s.onClickNext = function (e) { - e.preventDefault(); - if (s.isEnd && !s.params.loop) return; - s.slideNext(); - }; - s.onClickPrev = function (e) { - e.preventDefault(); - if (s.isBeginning && !s.params.loop) return; - s.slidePrev(); - }; - s.onClickIndex = function (e) { - e.preventDefault(); - var index = $(this).index() * s.params.slidesPerGroup; - if (s.params.loop) index = index + s.loopedSlides; - s.slideTo(index); - }; - - /*========================= - Handle Touches - ===========================*/ - function findElementInEvent(e, selector) { - var el = $(e.target); - if (!el.is(selector)) { - if (typeof selector === 'string') { - el = el.parents(selector); - } - else if (selector.nodeType) { - var found; - el.parents().each(function (index, _el) { - if (_el === selector) found = selector; - }); - if (!found) return undefined; - else return selector; - } - } - if (el.length === 0) { - return undefined; - } - return el[0]; - } - s.updateClickedSlide = function (e) { - var slide = findElementInEvent(e, '.' + s.params.slideClass); - var slideFound = false; - if (slide) { - for (var i = 0; i < s.slides.length; i++) { - if (s.slides[i] === slide) slideFound = true; - } - } - - if (slide && slideFound) { - s.clickedSlide = slide; - s.clickedIndex = $(slide).index(); - } - else { - s.clickedSlide = undefined; - s.clickedIndex = undefined; - return; - } - if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) { - var slideToIndex = s.clickedIndex, - realIndex, - duplicatedSlides; - if (s.params.loop) { - if (s.animating) return; - realIndex = $(s.clickedSlide).attr('data-swiper-slide-index'); - if (s.params.centeredSlides) { - if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - else { - if (slideToIndex > s.slides.length - s.params.slidesPerView) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - } - else { - s.slideTo(slideToIndex); - } - } - }; - - var isTouched, - isMoved, - allowTouchCallbacks, - touchStartTime, - isScrolling, - currentTranslate, - startTranslate, - allowThresholdMove, - // Form elements to match - formElements = 'input, select, textarea, button', - // Last click time - lastClickTime = Date.now(), clickTimeout, - //Velocities - velocities = [], - allowMomentumBounce; - - // Animating Flag - s.animating = false; - - // Touches information - s.touches = { - startX: 0, - startY: 0, - currentX: 0, - currentY: 0, - diff: 0 - }; - - // Touch handlers - var isTouchEvent, startMoving; - s.onTouchStart = function (e) { - if (e.originalEvent) e = e.originalEvent; - isTouchEvent = e.type === 'touchstart'; - if (!isTouchEvent && 'which' in e && e.which === 3) return; - if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) { - s.allowClick = true; - return; - } - if (s.params.swipeHandler) { - if (!findElementInEvent(e, s.params.swipeHandler)) return; - } - - var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - - // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore - if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) { - return; - } - - isTouched = true; - isMoved = false; - allowTouchCallbacks = true; - isScrolling = undefined; - startMoving = undefined; - s.touches.startX = startX; - s.touches.startY = startY; - touchStartTime = Date.now(); - s.allowClick = true; - s.updateContainerSize(); - s.swipeDirection = undefined; - if (s.params.threshold > 0) allowThresholdMove = false; - if (e.type !== 'touchstart') { - var preventDefault = true; - if ($(e.target).is(formElements)) preventDefault = false; - if (document.activeElement && $(document.activeElement).is(formElements)) { - document.activeElement.blur(); - } - if (preventDefault) { - e.preventDefault(); - } - } - s.emit('onTouchStart', s, e); - }; - - s.onTouchMove = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (isTouchEvent && e.type === 'mousemove') return; - if (e.preventedByNestedSwiper) { - s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - return; - } - if (s.params.onlyExternal) { - // isMoved = true; - s.allowClick = false; - if (isTouched) { - s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - touchStartTime = Date.now(); - } - return; - } - if (isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(formElements)) { - isMoved = true; - s.allowClick = false; - return; - } - } - if (allowTouchCallbacks) { - s.emit('onTouchMove', s, e); - } - if (e.targetTouches && e.targetTouches.length > 1) return; - - s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (typeof isScrolling === 'undefined') { - var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI; - isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle); - } - if (isScrolling) { - s.emit('onTouchMoveOpposite', s, e); - } - if (typeof startMoving === 'undefined' && s.browser.ieTouch) { - if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) { - startMoving = true; - } - } - if (!isTouched) return; - if (isScrolling) { - isTouched = false; - return; - } - if (!startMoving && s.browser.ieTouch) { - return; - } - s.allowClick = false; - s.emit('onSliderMove', s, e); - e.preventDefault(); - if (s.params.touchMoveStopPropagation && !s.params.nested) { - e.stopPropagation(); - } - - if (!isMoved) { - if (params.loop) { - s.fixLoop(); - } - startTranslate = s.getWrapperTranslate(); - s.setWrapperTransition(0); - if (s.animating) { - s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd'); - } - if (s.params.autoplay && s.autoplaying) { - if (s.params.autoplayDisableOnInteraction) { - s.stopAutoplay(); - } - else { - s.pauseAutoplay(); - } - } - allowMomentumBounce = false; - //Grab Cursor - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grabbing'; - s.container[0].style.cursor = '-moz-grabbin'; - s.container[0].style.cursor = 'grabbing'; - } - } - isMoved = true; - - var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - - diff = diff * s.params.touchRatio; - if (s.rtl) diff = -diff; - - s.swipeDirection = diff > 0 ? 'prev' : 'next'; - currentTranslate = diff + startTranslate; - - var disableParentSwiper = true; - if ((diff > 0 && currentTranslate > s.minTranslate())) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio); - } - else if (diff < 0 && currentTranslate < s.maxTranslate()) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio); - } - - if (disableParentSwiper) { - e.preventedByNestedSwiper = true; - } - - // Directions locks - if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) { - currentTranslate = startTranslate; - } - if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) { - currentTranslate = startTranslate; - } - - if (!s.params.followFinger) return; - - // Threshold - if (s.params.threshold > 0) { - if (Math.abs(diff) > s.params.threshold || allowThresholdMove) { - if (!allowThresholdMove) { - allowThresholdMove = true; - s.touches.startX = s.touches.currentX; - s.touches.startY = s.touches.currentY; - currentTranslate = startTranslate; - s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - return; - } - } - else { - currentTranslate = startTranslate; - return; - } - } - // Update active index in free mode - if (s.params.freeMode || s.params.watchSlidesProgress) { - s.updateActiveIndex(); - } - if (s.params.freeMode) { - //Velocity - if (velocities.length === 0) { - velocities.push({ - position: s.touches[s.isHorizontal() ? 'startX' : 'startY'], - time: touchStartTime - }); - } - velocities.push({ - position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'], - time: (new window.Date()).getTime() - }); - } - // Update progress - s.updateProgress(currentTranslate); - // Update translate - s.setWrapperTranslate(currentTranslate); - }; - s.onTouchEnd = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (allowTouchCallbacks) { - s.emit('onTouchEnd', s, e); - } - allowTouchCallbacks = false; - if (!isTouched) return; - //Return Grab Cursor - if (s.params.grabCursor && isMoved && isTouched) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - - // Time diff - var touchEndTime = Date.now(); - var timeDiff = touchEndTime - touchStartTime; - - // Tap, doubleTap, Click - if (s.allowClick) { - s.updateClickedSlide(e); - s.emit('onTap', s, e); - if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) { - if (clickTimeout) clearTimeout(clickTimeout); - clickTimeout = setTimeout(function () { - if (!s) return; - if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) { - s.paginationContainer.toggleClass(s.params.paginationHiddenClass); - } - s.emit('onClick', s, e); - }, 300); - - } - if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) { - if (clickTimeout) clearTimeout(clickTimeout); - s.emit('onDoubleTap', s, e); - } - } - - lastClickTime = Date.now(); - setTimeout(function () { - if (s) s.allowClick = true; - }, 0); - - if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) { - isTouched = isMoved = false; - return; - } - isTouched = isMoved = false; - - var currentPos; - if (s.params.followFinger) { - currentPos = s.rtl ? s.translate : -s.translate; - } - else { - currentPos = -currentTranslate; - } - if (s.params.freeMode) { - if (currentPos < -s.minTranslate()) { - s.slideTo(s.activeIndex); - return; - } - else if (currentPos > -s.maxTranslate()) { - if (s.slides.length < s.snapGrid.length) { - s.slideTo(s.snapGrid.length - 1); - } - else { - s.slideTo(s.slides.length - 1); - } - return; - } - - if (s.params.freeModeMomentum) { - if (velocities.length > 1) { - var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop(); - - var distance = lastMoveEvent.position - velocityEvent.position; - var time = lastMoveEvent.time - velocityEvent.time; - s.velocity = distance / time; - s.velocity = s.velocity / 2; - if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) { - s.velocity = 0; - } - // this implies that the user stopped moving a finger then released. - // There would be no events with distance zero, so the last event is stale. - if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) { - s.velocity = 0; - } - } else { - s.velocity = 0; - } - - velocities.length = 0; - var momentumDuration = 1000 * s.params.freeModeMomentumRatio; - var momentumDistance = s.velocity * momentumDuration; - - var newPosition = s.translate + momentumDistance; - if (s.rtl) newPosition = - newPosition; - var doBounce = false; - var afterBouncePosition; - var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio; - if (newPosition < s.maxTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition + s.maxTranslate() < -bounceAmount) { - newPosition = s.maxTranslate() - bounceAmount; - } - afterBouncePosition = s.maxTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.maxTranslate(); - } - } - else if (newPosition > s.minTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition - s.minTranslate() > bounceAmount) { - newPosition = s.minTranslate() + bounceAmount; - } - afterBouncePosition = s.minTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.minTranslate(); - } - } - else if (s.params.freeModeSticky) { - var j = 0, - nextSlide; - for (j = 0; j < s.snapGrid.length; j += 1) { - if (s.snapGrid[j] > -newPosition) { - nextSlide = j; - break; - } - - } - if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') { - newPosition = s.snapGrid[nextSlide]; - } else { - newPosition = s.snapGrid[nextSlide - 1]; - } - if (!s.rtl) newPosition = - newPosition; - } - //Fix duration - if (s.velocity !== 0) { - if (s.rtl) { - momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity); - } - else { - momentumDuration = Math.abs((newPosition - s.translate) / s.velocity); - } - } - else if (s.params.freeModeSticky) { - s.slideReset(); - return; - } - - if (s.params.freeModeMomentumBounce && doBounce) { - s.updateProgress(afterBouncePosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s || !allowMomentumBounce) return; - s.emit('onMomentumBounce', s); - - s.setWrapperTransition(s.params.speed); - s.setWrapperTranslate(afterBouncePosition); - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - }); - } else if (s.velocity) { - s.updateProgress(newPosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - } - - } else { - s.updateProgress(newPosition); - } - - s.updateActiveIndex(); - } - if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) { - s.updateProgress(); - s.updateActiveIndex(); - } - return; - } - - // Find current slide - var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0]; - for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) { - if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') { - if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) { - stopIndex = i; - groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i]; - } - } - else { - if (currentPos >= s.slidesGrid[i]) { - stopIndex = i; - groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2]; - } - } - } - - // Find current slide size - var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize; - - if (timeDiff > s.params.longSwipesMs) { - // Long touches - if (!s.params.longSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - - } - if (s.swipeDirection === 'prev') { - if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - } - } - else { - // Short swipes - if (!s.params.shortSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - s.slideTo(stopIndex + s.params.slidesPerGroup); - - } - if (s.swipeDirection === 'prev') { - s.slideTo(stopIndex); - } - } - }; - /*========================= - Transitions - ===========================*/ - s._slideTo = function (slideIndex, speed) { - return s.slideTo(slideIndex, speed, true, true); - }; - s.slideTo = function (slideIndex, speed, runCallbacks, internal) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (typeof slideIndex === 'undefined') slideIndex = 0; - if (slideIndex < 0) slideIndex = 0; - s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup); - if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1; - - var translate = - s.snapGrid[s.snapIndex]; - // Stop autoplay - if (s.params.autoplay && s.autoplaying) { - if (internal || !s.params.autoplayDisableOnInteraction) { - s.pauseAutoplay(speed); - } - else { - s.stopAutoplay(); - } - } - // Update progress - s.updateProgress(translate); - - // Normalize slideIndex - for (var i = 0; i < s.slidesGrid.length; i++) { - if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) { - slideIndex = i; - } - } - - // Directions locks - if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) { - return false; - } - if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) { - if ((s.activeIndex || 0) !== slideIndex ) return false; - } - - // Update Index - if (typeof speed === 'undefined') speed = s.params.speed; - s.previousIndex = s.activeIndex || 0; - s.activeIndex = slideIndex; - - if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) { - // Update Height - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - s.updateClasses(); - if (s.params.effect !== 'slide') { - s.setWrapperTranslate(translate); - } - return false; - } - s.updateClasses(); - s.onTransitionStart(runCallbacks); - - if (speed === 0) { - s.setWrapperTranslate(translate); - s.setWrapperTransition(0); - s.onTransitionEnd(runCallbacks); - } - else { - s.setWrapperTranslate(translate); - s.setWrapperTransition(speed); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(runCallbacks); - }); - } - - } - - return true; - }; - - s.onTransitionStart = function (runCallbacks) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - if (s.lazy) s.lazy.onTransitionStart(); - if (runCallbacks) { - s.emit('onTransitionStart', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeStart', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextStart', s); - } - else { - s.emit('onSlidePrevStart', s); - } - } - - } - }; - s.onTransitionEnd = function (runCallbacks) { - s.animating = false; - s.setWrapperTransition(0); - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.lazy) s.lazy.onTransitionEnd(); - if (runCallbacks) { - s.emit('onTransitionEnd', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeEnd', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextEnd', s); - } - else { - s.emit('onSlidePrevEnd', s); - } - } - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.setHash(); - } - - }; - s.slideNext = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - }; - s._slideNext = function (speed) { - return s.slideNext(true, speed, true); - }; - s.slidePrev = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - }; - s._slidePrev = function (speed) { - return s.slidePrev(true, speed, true); - }; - s.slideReset = function (runCallbacks, speed, internal) { - return s.slideTo(s.activeIndex, speed, runCallbacks); - }; - - /*========================= - Translate/transition helpers - ===========================*/ - s.setWrapperTransition = function (duration, byController) { - s.wrapper.transition(duration); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTransition(duration); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTransition(duration); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTransition(duration); - } - if (s.params.control && s.controller) { - s.controller.setTransition(duration, byController); - } - s.emit('onSetTransition', s, duration); - }; - s.setWrapperTranslate = function (translate, updateActiveIndex, byController) { - var x = 0, y = 0, z = 0; - if (s.isHorizontal()) { - x = s.rtl ? -translate : translate; - } - else { - y = translate; - } - - if (s.params.roundLengths) { - x = round(x); - y = round(y); - } - - if (!s.params.virtualTranslate) { - if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'); - else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)'); - } - - s.translate = s.isHorizontal() ? x : y; - - // Check if we need to update progress - var progress; - var translatesDiff = s.maxTranslate() - s.minTranslate(); - if (translatesDiff === 0) { - progress = 0; - } - else { - progress = (translate - s.minTranslate()) / (translatesDiff); - } - if (progress !== s.progress) { - s.updateProgress(translate); - } - - if (updateActiveIndex) s.updateActiveIndex(); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTranslate(s.translate); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTranslate(s.translate); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTranslate(s.translate); - } - if (s.params.control && s.controller) { - s.controller.setTranslate(s.translate, byController); - } - s.emit('onSetTranslate', s, s.translate); - }; - - s.getTranslate = function (el, axis) { - var matrix, curTransform, curStyle, transformMatrix; - - // automatic axis detection - if (typeof axis === 'undefined') { - axis = 'x'; - } - - if (s.params.virtualTranslate) { - return s.rtl ? -s.translate : s.translate; - } - - curStyle = window.getComputedStyle(el, null); - if (window.WebKitCSSMatrix) { - curTransform = curStyle.transform || curStyle.webkitTransform; - if (curTransform.split(',').length > 6) { - curTransform = curTransform.split(', ').map(function(a){ - return a.replace(',','.'); - }).join(', '); - } - // Some old versions of Webkit choke when 'none' is passed; pass - // empty string instead in this case - transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); - } - else { - transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); - matrix = transformMatrix.toString().split(','); - } - - if (axis === 'x') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m41; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[12]); - //Normal Browsers - else - curTransform = parseFloat(matrix[4]); - } - if (axis === 'y') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m42; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[13]); - //Normal Browsers - else - curTransform = parseFloat(matrix[5]); - } - if (s.rtl && curTransform) curTransform = -curTransform; - return curTransform || 0; - }; - s.getWrapperTranslate = function (axis) { - if (typeof axis === 'undefined') { - axis = s.isHorizontal() ? 'x' : 'y'; - } - return s.getTranslate(s.wrapper[0], axis); - }; - - /*========================= - Observer - ===========================*/ - s.observers = []; - function initObserver(target, options) { - options = options || {}; - // create an observer instance - var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; - var observer = new ObserverFunc(function (mutations) { - mutations.forEach(function (mutation) { - s.onResize(true); - s.emit('onObserverUpdate', s, mutation); - }); - }); - - observer.observe(target, { - attributes: typeof options.attributes === 'undefined' ? true : options.attributes, - childList: typeof options.childList === 'undefined' ? true : options.childList, - characterData: typeof options.characterData === 'undefined' ? true : options.characterData - }); - - s.observers.push(observer); - } - s.initObservers = function () { - if (s.params.observeParents) { - var containerParents = s.container.parents(); - for (var i = 0; i < containerParents.length; i++) { - initObserver(containerParents[i]); - } - } - - // Observe container - initObserver(s.container[0], {childList: false}); - - // Observe wrapper - initObserver(s.wrapper[0], {attributes: false}); - }; - s.disconnectObservers = function () { - for (var i = 0; i < s.observers.length; i++) { - s.observers[i].disconnect(); - } - s.observers = []; - }; - /*========================= - Loop - ===========================*/ - // Create looped slides - s.createLoop = function () { - // Remove duplicated slides - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - - var slides = s.wrapper.children('.' + s.params.slideClass); - - if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length; - - s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10); - s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides; - if (s.loopedSlides > slides.length) { - s.loopedSlides = slides.length; - } - - var prependSlides = [], appendSlides = [], i; - slides.each(function (index, el) { - var slide = $(this); - if (index < s.loopedSlides) appendSlides.push(el); - if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el); - slide.attr('data-swiper-slide-index', index); - }); - for (i = 0; i < appendSlides.length; i++) { - s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - for (i = prependSlides.length - 1; i >= 0; i--) { - s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - }; - s.destroyLoop = function () { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - s.slides.removeAttr('data-swiper-slide-index'); - }; - s.reLoop = function (updatePosition) { - var oldIndex = s.activeIndex - s.loopedSlides; - s.destroyLoop(); - s.createLoop(); - s.updateSlidesSize(); - if (updatePosition) { - s.slideTo(oldIndex + s.loopedSlides, 0, false); - } - - }; - s.fixLoop = function () { - var newIndex; - //Fix For Negative Oversliding - if (s.activeIndex < s.loopedSlides) { - newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - //Fix For Positive Oversliding - else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) { - newIndex = -s.slides.length + s.activeIndex + s.loopedSlides; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - }; - /*========================= - Append/Prepend/Remove Slides - ===========================*/ - s.appendSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.append(slides[i]); - } - } - else { - s.wrapper.append(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - }; - s.prependSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - var newActiveIndex = s.activeIndex + 1; - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.prepend(slides[i]); - } - newActiveIndex = s.activeIndex + slides.length; - } - else { - s.wrapper.prepend(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - s.slideTo(newActiveIndex, 0, false); - }; - s.removeSlide = function (slidesIndexes) { - if (s.params.loop) { - s.destroyLoop(); - s.slides = s.wrapper.children('.' + s.params.slideClass); - } - var newActiveIndex = s.activeIndex, - indexToRemove; - if (typeof slidesIndexes === 'object' && slidesIndexes.length) { - for (var i = 0; i < slidesIndexes.length; i++) { - indexToRemove = slidesIndexes[i]; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - } - newActiveIndex = Math.max(newActiveIndex, 0); - } - else { - indexToRemove = slidesIndexes; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (s.params.loop) { - s.createLoop(); - } - - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - if (s.params.loop) { - s.slideTo(newActiveIndex + s.loopedSlides, 0, false); - } - else { - s.slideTo(newActiveIndex, 0, false); - } - - }; - s.removeAllSlides = function () { - var slidesIndexes = []; - for (var i = 0; i < s.slides.length; i++) { - slidesIndexes.push(i); - } - s.removeSlide(slidesIndexes); - }; - - - /*========================= - Effects - ===========================*/ - s.effects = { - fade: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var offset = slide[0].swiperSlideOffset; - var tx = -offset; - if (!s.params.virtualTranslate) tx = tx - s.translate; - var ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - var slideOpacity = s.params.fade.crossFade ? - Math.max(1 - Math.abs(slide[0].progress), 0) : - 1 + Math.min(Math.max(slide[0].progress, -1), 0); - slide - .css({ - opacity: slideOpacity - }) - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)'); - - } - - }, - setTransition: function (duration) { - s.slides.transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - flip: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var progress = slide[0].progress; - if (s.params.flip.limitRotation) { - progress = Math.max(Math.min(slide[0].progress, 1), -1); - } - var offset = slide[0].swiperSlideOffset; - var rotate = -180 * progress, - rotateY = rotate, - rotateX = 0, - tx = -offset, - ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - rotateX = -rotateY; - rotateY = 0; - } - else if (s.rtl) { - rotateY = -rotateY; - } - - slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length; - - if (s.params.flip.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - slide - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'); - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.eq(s.activeIndex).transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - if (!$(this).hasClass(s.params.slideActiveClass)) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - cube: { - setTranslate: function () { - var wrapperRotate = 0, cubeShadow; - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow = s.wrapper.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.wrapper.append(cubeShadow); - } - cubeShadow.css({height: s.width + 'px'}); - } - else { - cubeShadow = s.container.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.container.append(cubeShadow); - } - } - } - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var slideAngle = i * 90; - var round = Math.floor(slideAngle / 360); - if (s.rtl) { - slideAngle = -slideAngle; - round = Math.floor(-slideAngle / 360); - } - var progress = Math.max(Math.min(slide[0].progress, 1), -1); - var tx = 0, ty = 0, tz = 0; - if (i % 4 === 0) { - tx = - round * 4 * s.size; - tz = 0; - } - else if ((i - 1) % 4 === 0) { - tx = 0; - tz = - round * 4 * s.size; - } - else if ((i - 2) % 4 === 0) { - tx = s.size + round * 4 * s.size; - tz = s.size; - } - else if ((i - 3) % 4 === 0) { - tx = - s.size; - tz = 3 * s.size + s.size * 4 * round; - } - if (s.rtl) { - tx = -tx; - } - - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - - var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)'; - if (progress <= 1 && progress > -1) { - wrapperRotate = i * 90 + progress * 90; - if (s.rtl) wrapperRotate = -i * 90 - progress * 90; - } - slide.transform(transform); - if (s.params.cube.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - s.wrapper.css({ - '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - 'transform-origin': '50% 50% -' + (s.size / 2) + 'px' - }); - - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')'); - } - else { - var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; - var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); - var scale1 = s.params.cube.shadowScale, - scale2 = s.params.cube.shadowScale / multiplier, - offset = s.params.cube.shadowOffset; - cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)'); - } - } - var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0; - s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)'); - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.cube.shadow && !s.isHorizontal()) { - s.container.find('.swiper-cube-shadow').transition(duration); - } - } - }, - coverflow: { - setTranslate: function () { - var transform = s.translate; - var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2; - var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate; - var translate = s.params.coverflow.depth; - //Each slide offset from center - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideSize = s.slidesSizesGrid[i]; - var slideOffset = slide[0].swiperSlideOffset; - var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier; - - var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0; - var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier; - // var rotateZ = 0 - var translateZ = -translate * Math.abs(offsetMultiplier); - - var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier); - var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0; - - //Fix for ultra small values - if (Math.abs(translateX) < 0.001) translateX = 0; - if (Math.abs(translateY) < 0.001) translateY = 0; - if (Math.abs(translateZ) < 0.001) translateZ = 0; - if (Math.abs(rotateY) < 0.001) rotateY = 0; - if (Math.abs(rotateX) < 0.001) rotateX = 0; - - var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'; - - slide.transform(slideTransform); - slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - if (s.params.coverflow.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; - } - } - - //Set correct perspective for IE10 - if (s.browser.ie) { - var ws = s.wrapper[0].style; - ws.perspectiveOrigin = center + 'px 50%'; - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - } - } - }; - - /*========================= - Images Lazy Loading - ===========================*/ - s.lazy = { - initialImageLoaded: false, - loadImageInSlide: function (index, loadInDuplicate) { - if (typeof index === 'undefined') return; - if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true; - if (s.slides.length === 0) return; - - var slide = s.slides.eq(index); - var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)'); - if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) { - img = img.add(slide[0]); - } - if (img.length === 0) return; - - img.each(function () { - var _img = $(this); - _img.addClass('swiper-lazy-loading'); - var background = _img.attr('data-background'); - var src = _img.attr('data-src'), - srcset = _img.attr('data-srcset'); - s.loadImage(_img[0], (src || background), srcset, false, function () { - if (background) { - _img.css('background-image', 'url("' + background + '")'); - _img.removeAttr('data-background'); - } - else { - if (srcset) { - _img.attr('srcset', srcset); - _img.removeAttr('data-srcset'); - } - if (src) { - _img.attr('src', src); - _img.removeAttr('data-src'); - } - - } - - _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading'); - slide.find('.swiper-lazy-preloader, .preloader').remove(); - if (s.params.loop && loadInDuplicate) { - var slideOriginalIndex = slide.attr('data-swiper-slide-index'); - if (slide.hasClass(s.params.slideDuplicateClass)) { - var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')'); - s.lazy.loadImageInSlide(originalSlide.index(), false); - } - else { - var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]'); - s.lazy.loadImageInSlide(duplicatedSlide.index(), false); - } - } - s.emit('onLazyImageReady', s, slide[0], _img[0]); - }); - - s.emit('onLazyImageLoad', s, slide[0], _img[0]); - }); - - }, - load: function () { - var i; - if (s.params.watchSlidesVisibility) { - s.wrapper.children('.' + s.params.slideVisibleClass).each(function () { - s.lazy.loadImageInSlide($(this).index()); - }); - } - else { - if (s.params.slidesPerView > 1) { - for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - s.lazy.loadImageInSlide(s.activeIndex); - } - } - if (s.params.lazyLoadingInPrevNext) { - if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) { - var amount = s.params.lazyLoadingInPrevNextAmount; - var spv = s.params.slidesPerView; - var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length); - var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0); - // Next Slides - for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - // Prev Slides - for (i = minIndex; i < s.activeIndex ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - var nextSlide = s.wrapper.children('.' + s.params.slideNextClass); - if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index()); - - var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass); - if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index()); - } - } - }, - onTransitionStart: function () { - if (s.params.lazyLoading) { - if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) { - s.lazy.load(); - } - } - }, - onTransitionEnd: function () { - if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) { - s.lazy.load(); - } - } - }; - - - /*========================= - Scrollbar - ===========================*/ - s.scrollbar = { - isTouched: false, - setDragPosition: function (e) { - var sb = s.scrollbar; - var x = 0, y = 0; - var translate; - var pointerPosition = s.isHorizontal() ? - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) : - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ; - var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2; - var positionMin = -s.minTranslate() * sb.moveDivider; - var positionMax = -s.maxTranslate() * sb.moveDivider; - if (position < positionMin) { - position = positionMin; - } - else if (position > positionMax) { - position = positionMax; - } - position = -position / sb.moveDivider; - s.updateProgress(position); - s.setWrapperTranslate(position, true); - }, - dragStart: function (e) { - var sb = s.scrollbar; - sb.isTouched = true; - e.preventDefault(); - e.stopPropagation(); - - sb.setDragPosition(e); - clearTimeout(sb.dragTimeout); - - sb.track.transition(0); - if (s.params.scrollbarHide) { - sb.track.css('opacity', 1); - } - s.wrapper.transition(100); - sb.drag.transition(100); - s.emit('onScrollbarDragStart', s); - }, - dragMove: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - sb.setDragPosition(e); - s.wrapper.transition(0); - sb.track.transition(0); - sb.drag.transition(0); - s.emit('onScrollbarDragMove', s); - }, - dragEnd: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - sb.isTouched = false; - if (s.params.scrollbarHide) { - clearTimeout(sb.dragTimeout); - sb.dragTimeout = setTimeout(function () { - sb.track.css('opacity', 0); - sb.track.transition(400); - }, 1000); - - } - s.emit('onScrollbarDragEnd', s); - if (s.params.scrollbarSnapOnRelease) { - s.slideReset(); - } - }, - enableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).on(s.touchEvents.start, sb.dragStart); - $(target).on(s.touchEvents.move, sb.dragMove); - $(target).on(s.touchEvents.end, sb.dragEnd); - }, - disableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).off(s.touchEvents.start, sb.dragStart); - $(target).off(s.touchEvents.move, sb.dragMove); - $(target).off(s.touchEvents.end, sb.dragEnd); - }, - set: function () { - if (!s.params.scrollbar) return; - var sb = s.scrollbar; - sb.track = $(s.params.scrollbar); - if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) { - sb.track = s.container.find(s.params.scrollbar); - } - sb.drag = sb.track.find('.swiper-scrollbar-drag'); - if (sb.drag.length === 0) { - sb.drag = $('
'); - sb.track.append(sb.drag); - } - sb.drag[0].style.width = ''; - sb.drag[0].style.height = ''; - sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight; - - sb.divider = s.size / s.virtualSize; - sb.moveDivider = sb.divider * (sb.trackSize / s.size); - sb.dragSize = sb.trackSize * sb.divider; - - if (s.isHorizontal()) { - sb.drag[0].style.width = sb.dragSize + 'px'; - } - else { - sb.drag[0].style.height = sb.dragSize + 'px'; - } - - if (sb.divider >= 1) { - sb.track[0].style.display = 'none'; - } - else { - sb.track[0].style.display = ''; - } - if (s.params.scrollbarHide) { - sb.track[0].style.opacity = 0; - } - }, - setTranslate: function () { - if (!s.params.scrollbar) return; - var diff; - var sb = s.scrollbar; - var translate = s.translate || 0; - var newPos; - - var newSize = sb.dragSize; - newPos = (sb.trackSize - sb.dragSize) * s.progress; - if (s.rtl && s.isHorizontal()) { - newPos = -newPos; - if (newPos > 0) { - newSize = sb.dragSize - newPos; - newPos = 0; - } - else if (-newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize + newPos; - } - } - else { - if (newPos < 0) { - newSize = sb.dragSize + newPos; - newPos = 0; - } - else if (newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize - newPos; - } - } - if (s.isHorizontal()) { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)'); - } - else { - sb.drag.transform('translateX(' + (newPos) + 'px)'); - } - sb.drag[0].style.width = newSize + 'px'; - } - else { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)'); - } - else { - sb.drag.transform('translateY(' + (newPos) + 'px)'); - } - sb.drag[0].style.height = newSize + 'px'; - } - if (s.params.scrollbarHide) { - clearTimeout(sb.timeout); - sb.track[0].style.opacity = 1; - sb.timeout = setTimeout(function () { - sb.track[0].style.opacity = 0; - sb.track.transition(400); - }, 1000); - } - }, - setTransition: function (duration) { - if (!s.params.scrollbar) return; - s.scrollbar.drag.transition(duration); - } - }; - - /*========================= - Controller - ===========================*/ - s.controller = { - LinearSpline: function (x, y) { - this.x = x; - this.y = y; - this.lastIndex = x.length - 1; - // Given an x value (x2), return the expected y2 value: - // (x1,y1) is the known point before given value, - // (x3,y3) is the known point after given value. - var i1, i3; - var l = this.x.length; - - this.interpolate = function (x2) { - if (!x2) return 0; - - // Get the indexes of x1 and x3 (the array indexes before and after given x2): - i3 = binarySearch(this.x, x2); - i1 = i3 - 1; - - // We have our indexes i1 & i3, so we can calculate already: - // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 - return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]; - }; - - var binarySearch = (function() { - var maxIndex, minIndex, guess; - return function(array, val) { - minIndex = -1; - maxIndex = array.length; - while (maxIndex - minIndex > 1) - if (array[guess = maxIndex + minIndex >> 1] <= val) { - minIndex = guess; - } else { - maxIndex = guess; - } - return maxIndex; - }; - })(); - }, - //xxx: for now i will just save one spline function to to - getInterpolateFunction: function(c){ - if(!s.controller.spline) s.controller.spline = s.params.loop ? - new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) : - new s.controller.LinearSpline(s.snapGrid, c.snapGrid); - }, - setTranslate: function (translate, byController) { - var controlled = s.params.control; - var multiplier, controlledTranslate; - function setControlledTranslate(c) { - // this will create an Interpolate function based on the snapGrids - // x is the Grid of the scrolled scroller and y will be the controlled scroller - // it makes sense to create this only once and recall it for the interpolation - // the function does a lot of value caching for performance - translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate; - if (s.params.controlBy === 'slide') { - s.controller.getInterpolateFunction(c); - // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid - // but it did not work out - controlledTranslate = -s.controller.spline.interpolate(-translate); - } - - if(!controlledTranslate || s.params.controlBy === 'container'){ - multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate()); - controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate(); - } - - if (s.params.controlInverse) { - controlledTranslate = c.maxTranslate() - controlledTranslate; - } - c.updateProgress(controlledTranslate); - c.setWrapperTranslate(controlledTranslate, false, s); - c.updateActiveIndex(); - } - if (s.isArray(controlled)) { - for (var i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTranslate(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - - setControlledTranslate(controlled); - } - }, - setTransition: function (duration, byController) { - var controlled = s.params.control; - var i; - function setControlledTransition(c) { - c.setWrapperTransition(duration, s); - if (duration !== 0) { - c.onTransitionStart(); - c.wrapper.transitionEnd(function(){ - if (!controlled) return; - if (c.params.loop && s.params.controlBy === 'slide') { - c.fixLoop(); - } - c.onTransitionEnd(); - - }); - } - } - if (s.isArray(controlled)) { - for (i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTransition(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - setControlledTransition(controlled); - } - } - }; - - /*========================= - Hash Navigation - ===========================*/ - s.hashnav = { - init: function () { - if (!s.params.hashnav) return; - s.hashnav.initialized = true; - var hash = document.location.hash.replace('#', ''); - if (!hash) return; - var speed = 0; - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHash = slide.attr('data-hash'); - if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, s.params.runCallbacksOnInit, true); - } - } - }, - setHash: function () { - if (!s.hashnav.initialized || !s.params.hashnav) return; - document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || ''; - } - }; - - /*========================= - Keyboard Control - ===========================*/ - function handleKeyboard(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var kc = e.keyCode || e.charCode; - // Directions locks - if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) { - return false; - } - if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) { - return false; - } - if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { - return; - } - if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { - return; - } - if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { - var inView = false; - //Check that swiper should be inside of visible area of window - if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) { - return; - } - var windowScroll = { - left: window.pageXOffset, - top: window.pageYOffset - }; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var swiperOffset = s.container.offset(); - if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft; - var swiperCoord = [ - [swiperOffset.left, swiperOffset.top], - [swiperOffset.left + s.width, swiperOffset.top], - [swiperOffset.left, swiperOffset.top + s.height], - [swiperOffset.left + s.width, swiperOffset.top + s.height] - ]; - for (var i = 0; i < swiperCoord.length; i++) { - var point = swiperCoord[i]; - if ( - point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && - point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight - ) { - inView = true; - } - - } - if (!inView) return; - } - if (s.isHorizontal()) { - if (kc === 37 || kc === 39) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext(); - if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev(); - } - else { - if (kc === 38 || kc === 40) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if (kc === 40) s.slideNext(); - if (kc === 38) s.slidePrev(); - } - } - s.disableKeyboardControl = function () { - s.params.keyboardControl = false; - $(document).off('keydown', handleKeyboard); - }; - s.enableKeyboardControl = function () { - s.params.keyboardControl = true; - $(document).on('keydown', handleKeyboard); - }; - - - /*========================= - Mousewheel Control - ===========================*/ - s.mousewheel = { - event: false, - lastScrollTime: (new window.Date()).getTime() - }; - if (s.params.mousewheelControl) { - try { - new window.WheelEvent('wheel'); - s.mousewheel.event = 'wheel'; - } catch (e) { - if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) { - s.mousewheel.event = 'wheel'; - } - } - if (!s.mousewheel.event && window.WheelEvent) { - - } - if (!s.mousewheel.event && document.onmousewheel !== undefined) { - s.mousewheel.event = 'mousewheel'; - } - if (!s.mousewheel.event) { - s.mousewheel.event = 'DOMMouseScroll'; - } - } - function handleMousewheel(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var we = s.mousewheel.event; - var delta = 0; - var rtlFactor = s.rtl ? -1 : 1; - - //WebKits - if (we === 'mousewheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY; - else return; - } - } - else { - delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY; - } - } - //Old FireFox - else if (we === 'DOMMouseScroll') delta = -e.detail; - //New FireFox - else if (we === 'wheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY; - else return; - } - } - else { - delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY; - } - } - if (delta === 0) return; - - if (s.params.mousewheelInvert) delta = -delta; - - if (!s.params.freeMode) { - if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) { - if (delta < 0) { - if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - else { - if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - } - s.mousewheel.lastScrollTime = (new window.Date()).getTime(); - - } - else { - //Freemode or scrollContainer: - var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity; - var wasBeginning = s.isBeginning, - wasEnd = s.isEnd; - - if (position >= s.minTranslate()) position = s.minTranslate(); - if (position <= s.maxTranslate()) position = s.maxTranslate(); - - s.setWrapperTransition(0); - s.setWrapperTranslate(position); - s.updateProgress(); - s.updateActiveIndex(); - - if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) { - s.updateClasses(); - } - - if (s.params.freeModeSticky) { - clearTimeout(s.mousewheel.timeout); - s.mousewheel.timeout = setTimeout(function () { - s.slideReset(); - }, 300); - } - else { - if (s.params.lazyLoading && s.lazy) { - s.lazy.load(); - } - } - - // Return page scroll on edge positions - if (position === 0 || position === s.maxTranslate()) return; - } - if (s.params.autoplay) s.stopAutoplay(); - - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - return false; - } - s.disableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.off(s.mousewheel.event, handleMousewheel); - return true; - }; - - s.enableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.on(s.mousewheel.event, handleMousewheel); - return true; - }; - - - /*========================= - Parallax - ===========================*/ - function setParallaxTransform(el, progress) { - el = $(el); - var p, pX, pY; - var rtlFactor = s.rtl ? -1 : 1; - - p = el.attr('data-swiper-parallax') || '0'; - pX = el.attr('data-swiper-parallax-x'); - pY = el.attr('data-swiper-parallax-y'); - if (pX || pY) { - pX = pX || '0'; - pY = pY || '0'; - } - else { - if (s.isHorizontal()) { - pX = p; - pY = '0'; - } - else { - pY = p; - pX = '0'; - } - } - - if ((pX).indexOf('%') >= 0) { - pX = parseInt(pX, 10) * progress * rtlFactor + '%'; - } - else { - pX = pX * progress * rtlFactor + 'px' ; - } - if ((pY).indexOf('%') >= 0) { - pY = parseInt(pY, 10) * progress + '%'; - } - else { - pY = pY * progress + 'px' ; - } - - el.transform('translate3d(' + pX + ', ' + pY + ',0px)'); - } - s.parallax = { - setTranslate: function () { - s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - setParallaxTransform(this, s.progress); - - }); - s.slides.each(function () { - var slide = $(this); - slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () { - var progress = Math.min(Math.max(slide[0].progress, -1), 1); - setParallaxTransform(this, progress); - }); - }); - }, - setTransition: function (duration) { - if (typeof duration === 'undefined') duration = s.params.speed; - s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - var el = $(this); - var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - el.transition(parallaxDuration); - }); - } - }; - - - /*========================= - Plugins API. Collect all and init all plugins - ===========================*/ - s._plugins = []; - for (var plugin in s.plugins) { - var p = s.plugins[plugin](s, s.params[plugin]); - if (p) s._plugins.push(p); - } - // Method to call all plugins event/method - s.callPlugins = function (eventName) { - for (var i = 0; i < s._plugins.length; i++) { - if (eventName in s._plugins[i]) { - s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - }; - - /*========================= - Events/Callbacks/Plugins Emitter - ===========================*/ - function normalizeEventName (eventName) { - if (eventName.indexOf('on') !== 0) { - if (eventName[0] !== eventName[0].toUpperCase()) { - eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); - } - else { - eventName = 'on' + eventName; - } - } - return eventName; - } - s.emitterEventListeners = { - - }; - s.emit = function (eventName) { - // Trigger callbacks - if (s.params[eventName]) { - s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - var i; - // Trigger events - if (s.emitterEventListeners[eventName]) { - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - // Trigger plugins - if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - }; - s.on = function (eventName, handler) { - eventName = normalizeEventName(eventName); - if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; - s.emitterEventListeners[eventName].push(handler); - return s; - }; - s.off = function (eventName, handler) { - var i; - eventName = normalizeEventName(eventName); - if (typeof handler === 'undefined') { - // Remove all handlers for such event - s.emitterEventListeners[eventName] = []; - return s; - } - if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); - } - return s; - }; - s.once = function (eventName, handler) { - eventName = normalizeEventName(eventName); - var _handler = function () { - handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - s.off(eventName, _handler); - }; - s.on(eventName, _handler); - return s; - }; - - // Accessibility tools - s.a11y = { - makeFocusable: function ($el) { - $el.attr('tabIndex', '0'); - return $el; - }, - addRole: function ($el, role) { - $el.attr('role', role); - return $el; - }, - - addLabel: function ($el, label) { - $el.attr('aria-label', label); - return $el; - }, - - disable: function ($el) { - $el.attr('aria-disabled', true); - return $el; - }, - - enable: function ($el) { - $el.attr('aria-disabled', false); - return $el; - }, - - onEnterKey: function (event) { - if (event.keyCode !== 13) return; - if ($(event.target).is(s.params.nextButton)) { - s.onClickNext(event); - if (s.isEnd) { - s.a11y.notify(s.params.lastSlideMessage); - } - else { - s.a11y.notify(s.params.nextSlideMessage); - } - } - else if ($(event.target).is(s.params.prevButton)) { - s.onClickPrev(event); - if (s.isBeginning) { - s.a11y.notify(s.params.firstSlideMessage); - } - else { - s.a11y.notify(s.params.prevSlideMessage); - } - } - if ($(event.target).is('.' + s.params.bulletClass)) { - $(event.target)[0].click(); - } - }, - - liveRegion: $(''), - - notify: function (message) { - var notification = s.a11y.liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(message); - }, - init: function () { - // Setup accessibility - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.a11y.makeFocusable(s.nextButton); - s.a11y.addRole(s.nextButton, 'button'); - s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.a11y.makeFocusable(s.prevButton); - s.a11y.addRole(s.prevButton, 'button'); - s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage); - } - - $(s.container).append(s.a11y.liveRegion); - }, - initPagination: function () { - if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) { - s.bullets.each(function () { - var bullet = $(this); - s.a11y.makeFocusable(bullet); - s.a11y.addRole(bullet, 'button'); - s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1)); - }); - } - }, - destroy: function () { - if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove(); - } - }; - - - /*========================= - Init/Destroy - ===========================*/ - s.init = function () { - if (s.params.loop) s.createLoop(); - s.updateContainerSize(); - s.updateSlidesSize(); - s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - if (s.params.scrollbarDraggable) { - s.scrollbar.enableDraggable(); - } - } - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - if (!s.params.loop) s.updateProgress(); - s.effects[s.params.effect].setTranslate(); - } - if (s.params.loop) { - s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit); - } - else { - s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit); - if (s.params.initialSlide === 0) { - if (s.parallax && s.params.parallax) s.parallax.setTranslate(); - if (s.lazy && s.params.lazyLoading) { - s.lazy.load(); - s.lazy.initialImageLoaded = true; - } - } - } - s.attachEvents(); - if (s.params.observer && s.support.observer) { - s.initObservers(); - } - if (s.params.preloadImages && !s.params.lazyLoading) { - s.preloadImages(); - } - if (s.params.autoplay) { - s.startAutoplay(); - } - if (s.params.keyboardControl) { - if (s.enableKeyboardControl) s.enableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.enableMousewheelControl) s.enableMousewheelControl(); - } - if (s.params.hashnav) { - if (s.hashnav) s.hashnav.init(); - } - if (s.params.a11y && s.a11y) s.a11y.init(); - s.emit('onInit', s); - }; - - // Cleanup dynamic styles - s.cleanupStyles = function () { - // Container - s.container.removeClass(s.classNames.join(' ')).removeAttr('style'); - - // Wrapper - s.wrapper.removeAttr('style'); - - // Slides - if (s.slides && s.slides.length) { - s.slides - .removeClass([ - s.params.slideVisibleClass, - s.params.slideActiveClass, - s.params.slideNextClass, - s.params.slidePrevClass - ].join(' ')) - .removeAttr('style') - .removeAttr('data-swiper-column') - .removeAttr('data-swiper-row'); - } - - // Pagination/Bullets - if (s.paginationContainer && s.paginationContainer.length) { - s.paginationContainer.removeClass(s.params.paginationHiddenClass); - } - if (s.bullets && s.bullets.length) { - s.bullets.removeClass(s.params.bulletActiveClass); - } - - // Buttons - if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass); - if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass); - - // Scrollbar - if (s.params.scrollbar && s.scrollbar) { - if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style'); - if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style'); - } - }; - - // Destroy - s.destroy = function (deleteInstance, cleanupStyles) { - // Detach evebts - s.detachEvents(); - // Stop autoplay - s.stopAutoplay(); - // Disable draggable - if (s.params.scrollbar && s.scrollbar) { - if (s.params.scrollbarDraggable) { - s.scrollbar.disableDraggable(); - } - } - // Destroy loop - if (s.params.loop) { - s.destroyLoop(); - } - // Cleanup styles - if (cleanupStyles) { - s.cleanupStyles(); - } - // Disconnect observer - s.disconnectObservers(); - // Disable keyboard/mousewheel - if (s.params.keyboardControl) { - if (s.disableKeyboardControl) s.disableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.disableMousewheelControl) s.disableMousewheelControl(); - } - // Disable a11y - if (s.params.a11y && s.a11y) s.a11y.destroy(); - // Destroy callback - s.emit('onDestroy'); - // Delete instance - if (deleteInstance !== false) s = null; - }; - - s.init(); - - - - // Return swiper instance - return s; - }; - - - /*================================================== - Prototype - ====================================================*/ - Swiper.prototype = { - isSafari: (function () { - var ua = navigator.userAgent.toLowerCase(); - return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); - })(), - isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent), - isArray: function (arr) { - return Object.prototype.toString.apply(arr) === '[object Array]'; - }, - /*================================================== - Browser - ====================================================*/ - browser: { - ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled, - ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1) - }, - /*================================================== - Devices - ====================================================*/ - device: (function () { - var ua = navigator.userAgent; - var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); - var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); - var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); - return { - ios: ipad || iphone || ipod, - android: android - }; - })(), - /*================================================== - Feature Detection - ====================================================*/ - support: { - touch : (window.Modernizr && Modernizr.touch === true) || (function () { - return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); - })(), - - transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () { - var div = document.createElement('div').style; - return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); - })(), - - flexbox: (function () { - var div = document.createElement('div').style; - var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); - for (var i = 0; i < styles.length; i++) { - if (styles[i] in div) return true; - } - })(), - - observer: (function () { - return ('MutationObserver' in window || 'WebkitMutationObserver' in window); - })() - }, - /*================================================== - Plugins - ====================================================*/ - plugins: {} - }; - - - /*=========================== - Get Dom libraries - ===========================*/ - var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7']; - for (var i = 0; i < swiperDomPlugins.length; i++) { - if (window[swiperDomPlugins[i]]) { - addLibraryPlugin(window[swiperDomPlugins[i]]); - } - } - // Required DOM Plugins - var domLib; - if (typeof Dom7 === 'undefined') { - domLib = window.Dom7 || window.Zepto || window.jQuery; - } - else { - domLib = Dom7; - } - - /*=========================== - Add .swiper plugin from Dom libraries - ===========================*/ - function addLibraryPlugin(lib) { - lib.fn.swiper = function (params) { - var firstInstance; - lib(this).each(function () { - var s = new Swiper(this, params); - if (!firstInstance) firstInstance = s; - }); - return firstInstance; - }; - } - - if (domLib) { - if (!('transitionEnd' in domLib.fn)) { - domLib.fn.transitionEnd = function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }; - } - if (!('transform' in domLib.fn)) { - domLib.fn.transform = function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }; - } - if (!('transition' in domLib.fn)) { - domLib.fn.transition = function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }; - } - } - - window.Swiper = Swiper; -})(); -/*=========================== -Swiper AMD Export -===========================*/ -if (typeof(module) !== 'undefined') -{ - module.exports = window.Swiper; -} -else if (typeof define === 'function' && define.amd) { - define([], function () { - 'use strict'; - return window.Swiper; - }); -} -//# sourceMappingURL=maps/swiper.jquery.js.map diff --git a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.min.js b/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.min.js deleted file mode 100644 index e134869810..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Swiper 3.3.1 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2016, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: February 7, 2016 - */ -!function(){"use strict";function e(e){e.fn.swiper=function(a){var s;return e(this).each(function(){var e=new t(this,a);s||(s=e)}),s}}var a,t=function(e,s){function r(e){return Math.floor(e)}function i(){y.autoplayTimeoutId=setTimeout(function(){y.params.loop?(y.fixLoop(),y._slideNext(),y.emit("onAutoplay",y)):y.isEnd?s.autoplayStopOnLast?y.stopAutoplay():(y._slideTo(0),y.emit("onAutoplay",y)):(y._slideNext(),y.emit("onAutoplay",y))},y.params.autoplay)}function n(e,t){var s=a(e.target);if(!s.is(t))if("string"==typeof t)s=s.parents(t);else if(t.nodeType){var r;return s.parents().each(function(e,a){a===t&&(r=t)}),r?t:void 0}if(0!==s.length)return s[0]}function o(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMutationObserver,s=new t(function(e){e.forEach(function(e){y.onResize(!0),y.emit("onObserverUpdate",y,e)})});s.observe(e,{attributes:"undefined"==typeof a.attributes?!0:a.attributes,childList:"undefined"==typeof a.childList?!0:a.childList,characterData:"undefined"==typeof a.characterData?!0:a.characterData}),y.observers.push(s)}function l(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.charCode;if(!y.params.allowSwipeToNext&&(y.isHorizontal()&&39===a||!y.isHorizontal()&&40===a))return!1;if(!y.params.allowSwipeToPrev&&(y.isHorizontal()&&37===a||!y.isHorizontal()&&38===a))return!1;if(!(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey||document.activeElement&&document.activeElement.nodeName&&("input"===document.activeElement.nodeName.toLowerCase()||"textarea"===document.activeElement.nodeName.toLowerCase()))){if(37===a||39===a||38===a||40===a){var t=!1;if(y.container.parents(".swiper-slide").length>0&&0===y.container.parents(".swiper-slide-active").length)return;var s={left:window.pageXOffset,top:window.pageYOffset},r=window.innerWidth,i=window.innerHeight,n=y.container.offset();y.rtl&&(n.left=n.left-y.container[0].scrollLeft);for(var o=[[n.left,n.top],[n.left+y.width,n.top],[n.left,n.top+y.height],[n.left+y.width,n.top+y.height]],l=0;l=s.left&&p[0]<=s.left+r&&p[1]>=s.top&&p[1]<=s.top+i&&(t=!0)}if(!t)return}y.isHorizontal()?((37===a||39===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),(39===a&&!y.rtl||37===a&&y.rtl)&&y.slideNext(),(37===a&&!y.rtl||39===a&&y.rtl)&&y.slidePrev()):((38===a||40===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),40===a&&y.slideNext(),38===a&&y.slidePrev())}}function p(e){e.originalEvent&&(e=e.originalEvent);var a=y.mousewheel.event,t=0,s=y.rtl?-1:1;if("mousewheel"===a)if(y.params.mousewheelForceToAxis)if(y.isHorizontal()){if(!(Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)))return;t=e.wheelDeltaX*s}else{if(!(Math.abs(e.wheelDeltaY)>Math.abs(e.wheelDeltaX)))return;t=e.wheelDeltaY}else t=Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)?-e.wheelDeltaX*s:-e.wheelDeltaY;else if("DOMMouseScroll"===a)t=-e.detail;else if("wheel"===a)if(y.params.mousewheelForceToAxis)if(y.isHorizontal()){if(!(Math.abs(e.deltaX)>Math.abs(e.deltaY)))return;t=-e.deltaX*s}else{if(!(Math.abs(e.deltaY)>Math.abs(e.deltaX)))return;t=-e.deltaY}else t=Math.abs(e.deltaX)>Math.abs(e.deltaY)?-e.deltaX*s:-e.deltaY;if(0!==t){if(y.params.mousewheelInvert&&(t=-t),y.params.freeMode){var r=y.getWrapperTranslate()+t*y.params.mousewheelSensitivity,i=y.isBeginning,n=y.isEnd;if(r>=y.minTranslate()&&(r=y.minTranslate()),r<=y.maxTranslate()&&(r=y.maxTranslate()),y.setWrapperTransition(0),y.setWrapperTranslate(r),y.updateProgress(),y.updateActiveIndex(),(!i&&y.isBeginning||!n&&y.isEnd)&&y.updateClasses(),y.params.freeModeSticky?(clearTimeout(y.mousewheel.timeout),y.mousewheel.timeout=setTimeout(function(){y.slideReset()},300)):y.params.lazyLoading&&y.lazy&&y.lazy.load(),0===r||r===y.maxTranslate())return}else{if((new window.Date).getTime()-y.mousewheel.lastScrollTime>60)if(0>t)if(y.isEnd&&!y.params.loop||y.animating){if(y.params.mousewheelReleaseOnEdges)return!0}else y.slideNext();else if(y.isBeginning&&!y.params.loop||y.animating){if(y.params.mousewheelReleaseOnEdges)return!0}else y.slidePrev();y.mousewheel.lastScrollTime=(new window.Date).getTime()}return y.params.autoplay&&y.stopAutoplay(),e.preventDefault?e.preventDefault():e.returnValue=!1,!1}}function d(e,t){e=a(e);var s,r,i,n=y.rtl?-1:1;s=e.attr("data-swiper-parallax")||"0",r=e.attr("data-swiper-parallax-x"),i=e.attr("data-swiper-parallax-y"),r||i?(r=r||"0",i=i||"0"):y.isHorizontal()?(r=s,i="0"):(i=s,r="0"),r=r.indexOf("%")>=0?parseInt(r,10)*t*n+"%":r*t*n+"px",i=i.indexOf("%")>=0?parseInt(i,10)*t+"%":i*t+"px",e.transform("translate3d("+r+", "+i+",0px)")}function u(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"on"+e[0].toUpperCase()+e.substring(1):"on"+e),e}if(!(this instanceof t))return new t(e,s);var c={direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,autoplay:!1,autoplayDisableOnInteraction:!0,autoplayStopOnLast:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",coverflow:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flip:{slideShadows:!0,limitRotation:!0},cube:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fade:{crossFade:!1},parallax:!1,scrollbar:null,scrollbarHide:!0,scrollbarDraggable:!1,scrollbarSnapOnRelease:!1,keyboardControl:!1,mousewheelControl:!1,mousewheelReleaseOnEdges:!1,mousewheelInvert:!1,mousewheelForceToAxis:!1,mousewheelSensitivity:1,hashnav:!1,breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,onlyExternal:!1,threshold:0,touchMoveStopPropagation:!0,uniqueNavElements:!0,pagination:null,paginationElement:"span",paginationClickable:!1,paginationHide:!1,paginationBulletRender:null,paginationProgressRender:null,paginationFractionRender:null,paginationCustomRender:null,paginationType:"bullets",resistance:!0,resistanceRatio:.85,nextButton:null,prevButton:null,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,lazyLoading:!1,lazyLoadingInPrevNext:!1,lazyLoadingInPrevNextAmount:1,lazyLoadingOnTransitionStart:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,control:void 0,controlInverse:!1,controlBy:"slide",allowSwipeToPrev:!0,allowSwipeToNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",buttonDisabledClass:"swiper-button-disabled",paginationCurrentClass:"swiper-pagination-current",paginationTotalClass:"swiper-pagination-total",paginationHiddenClass:"swiper-pagination-hidden",paginationProgressbarClass:"swiper-pagination-progressbar",observer:!1,observeParents:!1,a11y:!1,prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",runCallbacksOnInit:!0},m=s&&s.virtualTranslate;s=s||{};var f={};for(var g in s)if("object"!=typeof s[g]||null===s[g]||(s[g].nodeType||s[g]===window||s[g]===document||"undefined"!=typeof Dom7&&s[g]instanceof Dom7||"undefined"!=typeof jQuery&&s[g]instanceof jQuery))f[g]=s[g];else{f[g]={};for(var h in s[g])f[g][h]=s[g][h]}for(var v in c)if("undefined"==typeof s[v])s[v]=c[v];else if("object"==typeof s[v])for(var w in c[v])"undefined"==typeof s[v][w]&&(s[v][w]=c[v][w]);var y=this;if(y.params=s,y.originalParams=f,y.classNames=[],"undefined"!=typeof a&&"undefined"!=typeof Dom7&&(a=Dom7),("undefined"!=typeof a||(a="undefined"==typeof Dom7?window.Dom7||window.Zepto||window.jQuery:Dom7))&&(y.$=a,y.currentBreakpoint=void 0,y.getActiveBreakpoint=function(){if(!y.params.breakpoints)return!1;var e,a=!1,t=[];for(e in y.params.breakpoints)y.params.breakpoints.hasOwnProperty(e)&&t.push(e);t.sort(function(e,a){return parseInt(e,10)>parseInt(a,10)});for(var s=0;s=window.innerWidth&&!a&&(a=e);return a||"max"},y.setBreakpoint=function(){var e=y.getActiveBreakpoint();if(e&&y.currentBreakpoint!==e){var a=e in y.params.breakpoints?y.params.breakpoints[e]:y.originalParams,t=y.params.loop&&a.slidesPerView!==y.params.slidesPerView;for(var s in a)y.params[s]=a[s];y.currentBreakpoint=e,t&&y.destroyLoop&&y.reLoop(!0)}},y.params.breakpoints&&y.setBreakpoint(),y.container=a(e),0!==y.container.length)){if(y.container.length>1){var b=[];return y.container.each(function(){b.push(new t(this,s))}),b}y.container[0].swiper=y,y.container.data("swiper",y),y.classNames.push("swiper-container-"+y.params.direction),y.params.freeMode&&y.classNames.push("swiper-container-free-mode"),y.support.flexbox||(y.classNames.push("swiper-container-no-flexbox"),y.params.slidesPerColumn=1),y.params.autoHeight&&y.classNames.push("swiper-container-autoheight"),(y.params.parallax||y.params.watchSlidesVisibility)&&(y.params.watchSlidesProgress=!0),["cube","coverflow","flip"].indexOf(y.params.effect)>=0&&(y.support.transforms3d?(y.params.watchSlidesProgress=!0,y.classNames.push("swiper-container-3d")):y.params.effect="slide"),"slide"!==y.params.effect&&y.classNames.push("swiper-container-"+y.params.effect),"cube"===y.params.effect&&(y.params.resistanceRatio=0,y.params.slidesPerView=1,y.params.slidesPerColumn=1,y.params.slidesPerGroup=1,y.params.centeredSlides=!1,y.params.spaceBetween=0,y.params.virtualTranslate=!0,y.params.setWrapperSize=!1),("fade"===y.params.effect||"flip"===y.params.effect)&&(y.params.slidesPerView=1,y.params.slidesPerColumn=1,y.params.slidesPerGroup=1,y.params.watchSlidesProgress=!0,y.params.spaceBetween=0,y.params.setWrapperSize=!1,"undefined"==typeof m&&(y.params.virtualTranslate=!0)),y.params.grabCursor&&y.support.touch&&(y.params.grabCursor=!1),y.wrapper=y.container.children("."+y.params.wrapperClass),y.params.pagination&&(y.paginationContainer=a(y.params.pagination),y.params.uniqueNavElements&&"string"==typeof y.params.pagination&&y.paginationContainer.length>1&&1===y.container.find(y.params.pagination).length&&(y.paginationContainer=y.container.find(y.params.pagination)),"bullets"===y.params.paginationType&&y.params.paginationClickable?y.paginationContainer.addClass("swiper-pagination-clickable"):y.params.paginationClickable=!1,y.paginationContainer.addClass("swiper-pagination-"+y.params.paginationType)),(y.params.nextButton||y.params.prevButton)&&(y.params.nextButton&&(y.nextButton=a(y.params.nextButton),y.params.uniqueNavElements&&"string"==typeof y.params.nextButton&&y.nextButton.length>1&&1===y.container.find(y.params.nextButton).length&&(y.nextButton=y.container.find(y.params.nextButton))),y.params.prevButton&&(y.prevButton=a(y.params.prevButton),y.params.uniqueNavElements&&"string"==typeof y.params.prevButton&&y.prevButton.length>1&&1===y.container.find(y.params.prevButton).length&&(y.prevButton=y.container.find(y.params.prevButton)))),y.isHorizontal=function(){return"horizontal"===y.params.direction},y.rtl=y.isHorizontal()&&("rtl"===y.container[0].dir.toLowerCase()||"rtl"===y.container.css("direction")),y.rtl&&y.classNames.push("swiper-container-rtl"),y.rtl&&(y.wrongRTL="-webkit-box"===y.wrapper.css("display")),y.params.slidesPerColumn>1&&y.classNames.push("swiper-container-multirow"),y.device.android&&y.classNames.push("swiper-container-android"),y.container.addClass(y.classNames.join(" ")),y.translate=0,y.progress=0,y.velocity=0,y.lockSwipeToNext=function(){y.params.allowSwipeToNext=!1},y.lockSwipeToPrev=function(){y.params.allowSwipeToPrev=!1},y.lockSwipes=function(){y.params.allowSwipeToNext=y.params.allowSwipeToPrev=!1},y.unlockSwipeToNext=function(){y.params.allowSwipeToNext=!0},y.unlockSwipeToPrev=function(){y.params.allowSwipeToPrev=!0},y.unlockSwipes=function(){y.params.allowSwipeToNext=y.params.allowSwipeToPrev=!0},y.params.grabCursor&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grab",y.container[0].style.cursor="-moz-grab",y.container[0].style.cursor="grab"),y.imagesToLoad=[],y.imagesLoaded=0,y.loadImage=function(e,a,t,s,r){function i(){r&&r()}var n;e.complete&&s?i():a?(n=new window.Image,n.onload=i,n.onerror=i,t&&(n.srcset=t),a&&(n.src=a)):i()},y.preloadImages=function(){function e(){"undefined"!=typeof y&&null!==y&&(void 0!==y.imagesLoaded&&y.imagesLoaded++,y.imagesLoaded===y.imagesToLoad.length&&(y.params.updateOnImagesReady&&y.update(),y.emit("onImagesReady",y)))}y.imagesToLoad=y.container.find("img");for(var a=0;a=0&&(a=parseFloat(a.replace("%",""))/100*y.size),y.virtualSize=-a,y.rtl?y.slides.css({marginLeft:"",marginTop:""}):y.slides.css({marginRight:"",marginBottom:""});var n;y.params.slidesPerColumn>1&&(n=Math.floor(y.slides.length/y.params.slidesPerColumn)===y.slides.length/y.params.slidesPerColumn?y.slides.length:Math.ceil(y.slides.length/y.params.slidesPerColumn)*y.params.slidesPerColumn,"auto"!==y.params.slidesPerView&&"row"===y.params.slidesPerColumnFill&&(n=Math.max(n,y.params.slidesPerView*y.params.slidesPerColumn)));var o,l=y.params.slidesPerColumn,p=n/l,d=p-(y.params.slidesPerColumn*p-y.slides.length);for(e=0;e1){var c,m,f;"column"===y.params.slidesPerColumnFill?(m=Math.floor(e/l),f=e-m*l,(m>d||m===d&&f===l-1)&&++f>=l&&(f=0,m++),c=m+f*n/l,u.css({"-webkit-box-ordinal-group":c,"-moz-box-ordinal-group":c,"-ms-flex-order":c,"-webkit-order":c,order:c})):(f=Math.floor(e/p),m=e-f*p),u.css({"margin-top":0!==f&&y.params.spaceBetween&&y.params.spaceBetween+"px"}).attr("data-swiper-column",m).attr("data-swiper-row",f)}"none"!==u.css("display")&&("auto"===y.params.slidesPerView?(o=y.isHorizontal()?u.outerWidth(!0):u.outerHeight(!0),y.params.roundLengths&&(o=r(o))):(o=(y.size-(y.params.slidesPerView-1)*a)/y.params.slidesPerView,y.params.roundLengths&&(o=r(o)),y.isHorizontal()?y.slides[e].style.width=o+"px":y.slides[e].style.height=o+"px"),y.slides[e].swiperSlideSize=o,y.slidesSizesGrid.push(o),y.params.centeredSlides?(t=t+o/2+s/2+a,0===e&&(t=t-y.size/2-a),Math.abs(t)<.001&&(t=0),i%y.params.slidesPerGroup===0&&y.snapGrid.push(t),y.slidesGrid.push(t)):(i%y.params.slidesPerGroup===0&&y.snapGrid.push(t),y.slidesGrid.push(t),t=t+o+a),y.virtualSize+=o+a,s=o,i++)}y.virtualSize=Math.max(y.virtualSize,y.size)+y.params.slidesOffsetAfter;var g;if(y.rtl&&y.wrongRTL&&("slide"===y.params.effect||"coverflow"===y.params.effect)&&y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}),(!y.support.flexbox||y.params.setWrapperSize)&&(y.isHorizontal()?y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}):y.wrapper.css({height:y.virtualSize+y.params.spaceBetween+"px"})),y.params.slidesPerColumn>1&&(y.virtualSize=(o+y.params.spaceBetween)*n,y.virtualSize=Math.ceil(y.virtualSize/y.params.slidesPerColumn)-y.params.spaceBetween,y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}),y.params.centeredSlides)){for(g=[],e=0;e1&&y.snapGrid.push(y.virtualSize-y.size)}0===y.snapGrid.length&&(y.snapGrid=[0]),0!==y.params.spaceBetween&&(y.isHorizontal()?y.rtl?y.slides.css({marginLeft:a+"px"}):y.slides.css({marginRight:a+"px"}):y.slides.css({marginBottom:a+"px"})),y.params.watchSlidesProgress&&y.updateSlidesOffset()}},y.updateSlidesOffset=function(){for(var e=0;e=0&&i0&&n<=y.size||0>=i&&n>=y.size;o&&y.slides.eq(t).addClass(y.params.slideVisibleClass)}s.progress=y.rtl?-r:r}}},y.updateProgress=function(e){"undefined"==typeof e&&(e=y.translate||0);var a=y.maxTranslate()-y.minTranslate(),t=y.isBeginning,s=y.isEnd;0===a?(y.progress=0,y.isBeginning=y.isEnd=!0):(y.progress=(e-y.minTranslate())/a,y.isBeginning=y.progress<=0,y.isEnd=y.progress>=1),y.isBeginning&&!t&&y.emit("onReachBeginning",y),y.isEnd&&!s&&y.emit("onReachEnd",y),y.params.watchSlidesProgress&&y.updateSlidesProgress(e),y.emit("onProgress",y,y.progress)},y.updateActiveIndex=function(){var e,a,t,s=y.rtl?y.translate:-y.translate;for(a=0;a=y.slidesGrid[a]&&s=y.slidesGrid[a]&&s=y.slidesGrid[a]&&(e=a);(0>e||"undefined"==typeof e)&&(e=0),t=Math.floor(e/y.params.slidesPerGroup),t>=y.snapGrid.length&&(t=y.snapGrid.length-1),e!==y.activeIndex&&(y.snapIndex=t,y.previousIndex=y.activeIndex,y.activeIndex=e,y.updateClasses())},y.updateClasses=function(){y.slides.removeClass(y.params.slideActiveClass+" "+y.params.slideNextClass+" "+y.params.slidePrevClass);var e=y.slides.eq(y.activeIndex);e.addClass(y.params.slideActiveClass);var t=e.next("."+y.params.slideClass).addClass(y.params.slideNextClass);y.params.loop&&0===t.length&&y.slides.eq(0).addClass(y.params.slideNextClass);var s=e.prev("."+y.params.slideClass).addClass(y.params.slidePrevClass);if(y.params.loop&&0===s.length&&y.slides.eq(-1).addClass(y.params.slidePrevClass),y.paginationContainer&&y.paginationContainer.length>0){var r,i=y.params.loop?Math.ceil((y.slides.length-2*y.loopedSlides)/y.params.slidesPerGroup):y.snapGrid.length;if(y.params.loop?(r=Math.ceil((y.activeIndex-y.loopedSlides)/y.params.slidesPerGroup),r>y.slides.length-1-2*y.loopedSlides&&(r-=y.slides.length-2*y.loopedSlides),r>i-1&&(r-=i),0>r&&"bullets"!==y.params.paginationType&&(r=i+r)):r="undefined"!=typeof y.snapIndex?y.snapIndex:y.activeIndex||0,"bullets"===y.params.paginationType&&y.bullets&&y.bullets.length>0&&(y.bullets.removeClass(y.params.bulletActiveClass),y.paginationContainer.length>1?y.bullets.each(function(){a(this).index()===r&&a(this).addClass(y.params.bulletActiveClass)}):y.bullets.eq(r).addClass(y.params.bulletActiveClass)),"fraction"===y.params.paginationType&&(y.paginationContainer.find("."+y.params.paginationCurrentClass).text(r+1),y.paginationContainer.find("."+y.params.paginationTotalClass).text(i)),"progress"===y.params.paginationType){var n=(r+1)/i,o=n,l=1;y.isHorizontal()||(l=n,o=1),y.paginationContainer.find("."+y.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX("+o+") scaleY("+l+")").transition(y.params.speed)}"custom"===y.params.paginationType&&y.params.paginationCustomRender&&(y.paginationContainer.html(y.params.paginationCustomRender(y,r+1,i)),y.emit("onPaginationRendered",y,y.paginationContainer[0]))}y.params.loop||(y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.isBeginning?(y.prevButton.addClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.disable(y.prevButton)):(y.prevButton.removeClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.enable(y.prevButton))),y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.isEnd?(y.nextButton.addClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.disable(y.nextButton)):(y.nextButton.removeClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.enable(y.nextButton))))},y.updatePagination=function(){if(y.params.pagination&&y.paginationContainer&&y.paginationContainer.length>0){var e="";if("bullets"===y.params.paginationType){for(var a=y.params.loop?Math.ceil((y.slides.length-2*y.loopedSlides)/y.params.slidesPerGroup):y.snapGrid.length,t=0;a>t;t++)e+=y.params.paginationBulletRender?y.params.paginationBulletRender(t,y.params.bulletClass):"<"+y.params.paginationElement+' class="'+y.params.bulletClass+'">";y.paginationContainer.html(e),y.bullets=y.paginationContainer.find("."+y.params.bulletClass),y.params.paginationClickable&&y.params.a11y&&y.a11y&&y.a11y.initPagination()}"fraction"===y.params.paginationType&&(e=y.params.paginationFractionRender?y.params.paginationFractionRender(y,y.params.paginationCurrentClass,y.params.paginationTotalClass):' / ',y.paginationContainer.html(e)),"progress"===y.params.paginationType&&(e=y.params.paginationProgressRender?y.params.paginationProgressRender(y,y.params.paginationProgressbarClass):'',y.paginationContainer.html(e)),"custom"!==y.params.paginationType&&y.emit("onPaginationRendered",y,y.paginationContainer[0])}},y.update=function(e){function a(){s=Math.min(Math.max(y.translate,y.maxTranslate()),y.minTranslate()),y.setWrapperTranslate(s),y.updateActiveIndex(),y.updateClasses()}if(y.updateContainerSize(),y.updateSlidesSize(),y.updateProgress(),y.updatePagination(),y.updateClasses(),y.params.scrollbar&&y.scrollbar&&y.scrollbar.set(),e){var t,s;y.controller&&y.controller.spline&&(y.controller.spline=void 0),y.params.freeMode?(a(),y.params.autoHeight&&y.updateAutoHeight()):(t=("auto"===y.params.slidesPerView||y.params.slidesPerView>1)&&y.isEnd&&!y.params.centeredSlides?y.slideTo(y.slides.length-1,0,!1,!0):y.slideTo(y.activeIndex,0,!1,!0),t||a())}else y.params.autoHeight&&y.updateAutoHeight()},y.onResize=function(e){y.params.breakpoints&&y.setBreakpoint();var a=y.params.allowSwipeToPrev,t=y.params.allowSwipeToNext;y.params.allowSwipeToPrev=y.params.allowSwipeToNext=!0,y.updateContainerSize(),y.updateSlidesSize(),("auto"===y.params.slidesPerView||y.params.freeMode||e)&&y.updatePagination(),y.params.scrollbar&&y.scrollbar&&y.scrollbar.set(),y.controller&&y.controller.spline&&(y.controller.spline=void 0);var s=!1;if(y.params.freeMode){var r=Math.min(Math.max(y.translate,y.maxTranslate()),y.minTranslate());y.setWrapperTranslate(r),y.updateActiveIndex(),y.updateClasses(),y.params.autoHeight&&y.updateAutoHeight()}else y.updateClasses(),s=("auto"===y.params.slidesPerView||y.params.slidesPerView>1)&&y.isEnd&&!y.params.centeredSlides?y.slideTo(y.slides.length-1,0,!1,!0):y.slideTo(y.activeIndex,0,!1,!0);y.params.lazyLoading&&!s&&y.lazy&&y.lazy.load(),y.params.allowSwipeToPrev=a,y.params.allowSwipeToNext=t};var x=["mousedown","mousemove","mouseup"];window.navigator.pointerEnabled?x=["pointerdown","pointermove","pointerup"]:window.navigator.msPointerEnabled&&(x=["MSPointerDown","MSPointerMove","MSPointerUp"]),y.touchEvents={start:y.support.touch||!y.params.simulateTouch?"touchstart":x[0],move:y.support.touch||!y.params.simulateTouch?"touchmove":x[1],end:y.support.touch||!y.params.simulateTouch?"touchend":x[2]},(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&("container"===y.params.touchEventsTarget?y.container:y.wrapper).addClass("swiper-wp8-"+y.params.direction),y.initEvents=function(e){var a=e?"off":"on",t=e?"removeEventListener":"addEventListener",r="container"===y.params.touchEventsTarget?y.container[0]:y.wrapper[0],i=y.support.touch?r:document,n=y.params.nested?!0:!1;y.browser.ie?(r[t](y.touchEvents.start,y.onTouchStart,!1),i[t](y.touchEvents.move,y.onTouchMove,n),i[t](y.touchEvents.end,y.onTouchEnd,!1)):(y.support.touch&&(r[t](y.touchEvents.start,y.onTouchStart,!1),r[t](y.touchEvents.move,y.onTouchMove,n),r[t](y.touchEvents.end,y.onTouchEnd,!1)),!s.simulateTouch||y.device.ios||y.device.android||(r[t]("mousedown",y.onTouchStart,!1),document[t]("mousemove",y.onTouchMove,n),document[t]("mouseup",y.onTouchEnd,!1))),window[t]("resize",y.onResize),y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.nextButton[a]("click",y.onClickNext),y.params.a11y&&y.a11y&&y.nextButton[a]("keydown",y.a11y.onEnterKey)),y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.prevButton[a]("click",y.onClickPrev),y.params.a11y&&y.a11y&&y.prevButton[a]("keydown",y.a11y.onEnterKey)),y.params.pagination&&y.params.paginationClickable&&(y.paginationContainer[a]("click","."+y.params.bulletClass,y.onClickIndex),y.params.a11y&&y.a11y&&y.paginationContainer[a]("keydown","."+y.params.bulletClass,y.a11y.onEnterKey)),(y.params.preventClicks||y.params.preventClicksPropagation)&&r[t]("click",y.preventClicks,!0)},y.attachEvents=function(){y.initEvents()},y.detachEvents=function(){y.initEvents(!0)},y.allowClick=!0,y.preventClicks=function(e){y.allowClick||(y.params.preventClicks&&e.preventDefault(),y.params.preventClicksPropagation&&y.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))},y.onClickNext=function(e){e.preventDefault(),(!y.isEnd||y.params.loop)&&y.slideNext()},y.onClickPrev=function(e){e.preventDefault(),(!y.isBeginning||y.params.loop)&&y.slidePrev()},y.onClickIndex=function(e){e.preventDefault();var t=a(this).index()*y.params.slidesPerGroup;y.params.loop&&(t+=y.loopedSlides),y.slideTo(t)},y.updateClickedSlide=function(e){var t=n(e,"."+y.params.slideClass),s=!1;if(t)for(var r=0;ry.slides.length-y.loopedSlides+y.params.slidesPerView/2?(y.fixLoop(),o=y.wrapper.children("."+y.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){y.slideTo(o)},0)):y.slideTo(o):o>y.slides.length-y.params.slidesPerView?(y.fixLoop(),o=y.wrapper.children("."+y.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){y.slideTo(o)},0)):y.slideTo(o)}else y.slideTo(o)}};var T,S,C,z,M,P,I,k,E,B,D="input, select, textarea, button",L=Date.now(),H=[];y.animating=!1,y.touches={startX:0,startY:0,currentX:0,currentY:0,diff:0};var G,A;if(y.onTouchStart=function(e){if(e.originalEvent&&(e=e.originalEvent),G="touchstart"===e.type,G||!("which"in e)||3!==e.which){if(y.params.noSwiping&&n(e,"."+y.params.noSwipingClass))return void(y.allowClick=!0);if(!y.params.swipeHandler||n(e,y.params.swipeHandler)){var t=y.touches.currentX="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s=y.touches.currentY="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY;if(!(y.device.ios&&y.params.iOSEdgeSwipeDetection&&t<=y.params.iOSEdgeSwipeThreshold)){if(T=!0,S=!1,C=!0,M=void 0,A=void 0,y.touches.startX=t,y.touches.startY=s,z=Date.now(),y.allowClick=!0,y.updateContainerSize(),y.swipeDirection=void 0,y.params.threshold>0&&(k=!1),"touchstart"!==e.type){var r=!0;a(e.target).is(D)&&(r=!1),document.activeElement&&a(document.activeElement).is(D)&&document.activeElement.blur(),r&&e.preventDefault()}y.emit("onTouchStart",y,e)}}}},y.onTouchMove=function(e){if(e.originalEvent&&(e=e.originalEvent),!G||"mousemove"!==e.type){if(e.preventedByNestedSwiper)return y.touches.startX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,void(y.touches.startY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY);if(y.params.onlyExternal)return y.allowClick=!1,void(T&&(y.touches.startX=y.touches.currentX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,y.touches.startY=y.touches.currentY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,z=Date.now()));if(G&&document.activeElement&&e.target===document.activeElement&&a(e.target).is(D))return S=!0,void(y.allowClick=!1);if(C&&y.emit("onTouchMove",y,e),!(e.targetTouches&&e.targetTouches.length>1)){if(y.touches.currentX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,y.touches.currentY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,"undefined"==typeof M){var t=180*Math.atan2(Math.abs(y.touches.currentY-y.touches.startY),Math.abs(y.touches.currentX-y.touches.startX))/Math.PI;M=y.isHorizontal()?t>y.params.touchAngle:90-t>y.params.touchAngle}if(M&&y.emit("onTouchMoveOpposite",y,e),"undefined"==typeof A&&y.browser.ieTouch&&(y.touches.currentX!==y.touches.startX||y.touches.currentY!==y.touches.startY)&&(A=!0),T){if(M)return void(T=!1);if(A||!y.browser.ieTouch){y.allowClick=!1,y.emit("onSliderMove",y,e),e.preventDefault(),y.params.touchMoveStopPropagation&&!y.params.nested&&e.stopPropagation(),S||(s.loop&&y.fixLoop(),I=y.getWrapperTranslate(),y.setWrapperTransition(0),y.animating&&y.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),y.params.autoplay&&y.autoplaying&&(y.params.autoplayDisableOnInteraction?y.stopAutoplay():y.pauseAutoplay()),B=!1,y.params.grabCursor&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grabbing",y.container[0].style.cursor="-moz-grabbin",y.container[0].style.cursor="grabbing")),S=!0;var r=y.touches.diff=y.isHorizontal()?y.touches.currentX-y.touches.startX:y.touches.currentY-y.touches.startY;r*=y.params.touchRatio,y.rtl&&(r=-r),y.swipeDirection=r>0?"prev":"next",P=r+I;var i=!0;if(r>0&&P>y.minTranslate()?(i=!1,y.params.resistance&&(P=y.minTranslate()-1+Math.pow(-y.minTranslate()+I+r,y.params.resistanceRatio))):0>r&&PP&&(P=I),!y.params.allowSwipeToPrev&&"prev"===y.swipeDirection&&P>I&&(P=I),y.params.followFinger){if(y.params.threshold>0){if(!(Math.abs(r)>y.params.threshold||k))return void(P=I);if(!k)return k=!0,y.touches.startX=y.touches.currentX,y.touches.startY=y.touches.currentY,P=I,void(y.touches.diff=y.isHorizontal()?y.touches.currentX-y.touches.startX:y.touches.currentY-y.touches.startY)}(y.params.freeMode||y.params.watchSlidesProgress)&&y.updateActiveIndex(),y.params.freeMode&&(0===H.length&&H.push({position:y.touches[y.isHorizontal()?"startX":"startY"],time:z}),H.push({position:y.touches[y.isHorizontal()?"currentX":"currentY"],time:(new window.Date).getTime()})),y.updateProgress(P),y.setWrapperTranslate(P)}}}}}},y.onTouchEnd=function(e){if(e.originalEvent&&(e=e.originalEvent),C&&y.emit("onTouchEnd",y,e),C=!1,T){y.params.grabCursor&&S&&T&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grab",y.container[0].style.cursor="-moz-grab",y.container[0].style.cursor="grab");var t=Date.now(),s=t-z;if(y.allowClick&&(y.updateClickedSlide(e),y.emit("onTap",y,e),300>s&&t-L>300&&(E&&clearTimeout(E),E=setTimeout(function(){y&&(y.params.paginationHide&&y.paginationContainer.length>0&&!a(e.target).hasClass(y.params.bulletClass)&&y.paginationContainer.toggleClass(y.params.paginationHiddenClass),y.emit("onClick",y,e))},300)),300>s&&300>t-L&&(E&&clearTimeout(E),y.emit("onDoubleTap",y,e))),L=Date.now(),setTimeout(function(){y&&(y.allowClick=!0)},0),!T||!S||!y.swipeDirection||0===y.touches.diff||P===I)return void(T=S=!1);T=S=!1;var r;if(r=y.params.followFinger?y.rtl?y.translate:-y.translate:-P,y.params.freeMode){if(r<-y.minTranslate())return void y.slideTo(y.activeIndex);if(r>-y.maxTranslate())return void(y.slides.length1){var i=H.pop(),n=H.pop(),o=i.position-n.position,l=i.time-n.time;y.velocity=o/l,y.velocity=y.velocity/2,Math.abs(y.velocity)150||(new window.Date).getTime()-i.time>300)&&(y.velocity=0)}else y.velocity=0;H.length=0;var p=1e3*y.params.freeModeMomentumRatio,d=y.velocity*p,u=y.translate+d;y.rtl&&(u=-u);var c,m=!1,f=20*Math.abs(y.velocity)*y.params.freeModeMomentumBounceRatio;if(uy.minTranslate())y.params.freeModeMomentumBounce?(u-y.minTranslate()>f&&(u=y.minTranslate()+f),c=y.minTranslate(),m=!0,B=!0):u=y.minTranslate();else if(y.params.freeModeSticky){var g,h=0;for(h=0;h-u){g=h;break}u=Math.abs(y.snapGrid[g]-u)=y.params.longSwipesMs)&&(y.updateProgress(),y.updateActiveIndex()))}var v,w=0,b=y.slidesSizesGrid[0];for(v=0;v=y.slidesGrid[v]&&r=y.slidesGrid[v]&&(w=v,b=y.slidesGrid[y.slidesGrid.length-1]-y.slidesGrid[y.slidesGrid.length-2]);var x=(r-y.slidesGrid[w])/b;if(s>y.params.longSwipesMs){if(!y.params.longSwipes)return void y.slideTo(y.activeIndex);"next"===y.swipeDirection&&(x>=y.params.longSwipesRatio?y.slideTo(w+y.params.slidesPerGroup):y.slideTo(w)),"prev"===y.swipeDirection&&(x>1-y.params.longSwipesRatio?y.slideTo(w+y.params.slidesPerGroup):y.slideTo(w))}else{if(!y.params.shortSwipes)return void y.slideTo(y.activeIndex);"next"===y.swipeDirection&&y.slideTo(w+y.params.slidesPerGroup),"prev"===y.swipeDirection&&y.slideTo(w)}}},y._slideTo=function(e,a){return y.slideTo(e,a,!0,!0)},y.slideTo=function(e,a,t,s){"undefined"==typeof t&&(t=!0),"undefined"==typeof e&&(e=0),0>e&&(e=0),y.snapIndex=Math.floor(e/y.params.slidesPerGroup),y.snapIndex>=y.snapGrid.length&&(y.snapIndex=y.snapGrid.length-1);var r=-y.snapGrid[y.snapIndex];y.params.autoplay&&y.autoplaying&&(s||!y.params.autoplayDisableOnInteraction?y.pauseAutoplay(a):y.stopAutoplay()),y.updateProgress(r);for(var i=0;i=Math.floor(100*y.slidesGrid[i])&&(e=i);return!y.params.allowSwipeToNext&&ry.translate&&r>y.maxTranslate()&&(y.activeIndex||0)!==e?!1:("undefined"==typeof a&&(a=y.params.speed),y.previousIndex=y.activeIndex||0,y.activeIndex=e,y.rtl&&-r===y.translate||!y.rtl&&r===y.translate?(y.params.autoHeight&&y.updateAutoHeight(),y.updateClasses(),"slide"!==y.params.effect&&y.setWrapperTranslate(r),!1):(y.updateClasses(),y.onTransitionStart(t),0===a?(y.setWrapperTranslate(r),y.setWrapperTransition(0),y.onTransitionEnd(t)):(y.setWrapperTranslate(r),y.setWrapperTransition(a),y.animating||(y.animating=!0,y.wrapper.transitionEnd(function(){y&&y.onTransitionEnd(t)}))),!0))},y.onTransitionStart=function(e){"undefined"==typeof e&&(e=!0),y.params.autoHeight&&y.updateAutoHeight(),y.lazy&&y.lazy.onTransitionStart(),e&&(y.emit("onTransitionStart",y),y.activeIndex!==y.previousIndex&&(y.emit("onSlideChangeStart",y),y.activeIndex>y.previousIndex?y.emit("onSlideNextStart",y):y.emit("onSlidePrevStart",y)))},y.onTransitionEnd=function(e){y.animating=!1,y.setWrapperTransition(0),"undefined"==typeof e&&(e=!0),y.lazy&&y.lazy.onTransitionEnd(),e&&(y.emit("onTransitionEnd",y),y.activeIndex!==y.previousIndex&&(y.emit("onSlideChangeEnd",y),y.activeIndex>y.previousIndex?y.emit("onSlideNextEnd",y):y.emit("onSlidePrevEnd",y))),y.params.hashnav&&y.hashnav&&y.hashnav.setHash()},y.slideNext=function(e,a,t){if(y.params.loop){if(y.animating)return!1;y.fixLoop();y.container[0].clientLeft;return y.slideTo(y.activeIndex+y.params.slidesPerGroup,a,e,t)}return y.slideTo(y.activeIndex+y.params.slidesPerGroup,a,e,t)},y._slideNext=function(e){return y.slideNext(!0,e,!0)},y.slidePrev=function(e,a,t){if(y.params.loop){if(y.animating)return!1;y.fixLoop();y.container[0].clientLeft;return y.slideTo(y.activeIndex-1,a,e,t)}return y.slideTo(y.activeIndex-1,a,e,t)},y._slidePrev=function(e){return y.slidePrev(!0,e,!0)},y.slideReset=function(e,a,t){return y.slideTo(y.activeIndex,a,e)},y.setWrapperTransition=function(e,a){y.wrapper.transition(e),"slide"!==y.params.effect&&y.effects[y.params.effect]&&y.effects[y.params.effect].setTransition(e),y.params.parallax&&y.parallax&&y.parallax.setTransition(e),y.params.scrollbar&&y.scrollbar&&y.scrollbar.setTransition(e),y.params.control&&y.controller&&y.controller.setTransition(e,a),y.emit("onSetTransition",y,e)},y.setWrapperTranslate=function(e,a,t){var s=0,i=0,n=0;y.isHorizontal()?s=y.rtl?-e:e:i=e,y.params.roundLengths&&(s=r(s),i=r(i)),y.params.virtualTranslate||(y.support.transforms3d?y.wrapper.transform("translate3d("+s+"px, "+i+"px, "+n+"px)"):y.wrapper.transform("translate("+s+"px, "+i+"px)")),y.translate=y.isHorizontal()?s:i;var o,l=y.maxTranslate()-y.minTranslate();o=0===l?0:(e-y.minTranslate())/l,o!==y.progress&&y.updateProgress(e),a&&y.updateActiveIndex(),"slide"!==y.params.effect&&y.effects[y.params.effect]&&y.effects[y.params.effect].setTranslate(y.translate),y.params.parallax&&y.parallax&&y.parallax.setTranslate(y.translate),y.params.scrollbar&&y.scrollbar&&y.scrollbar.setTranslate(y.translate),y.params.control&&y.controller&&y.controller.setTranslate(y.translate,t),y.emit("onSetTranslate",y,y.translate)},y.getTranslate=function(e,a){var t,s,r,i;return"undefined"==typeof a&&(a="x"),y.params.virtualTranslate?y.rtl?-y.translate:y.translate:(r=window.getComputedStyle(e,null),window.WebKitCSSMatrix?(s=r.transform||r.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(function(e){return e.replace(",",".")}).join(", ")),i=new window.WebKitCSSMatrix("none"===s?"":s)):(i=r.MozTransform||r.OTransform||r.MsTransform||r.msTransform||r.transform||r.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),t=i.toString().split(",")),"x"===a&&(s=window.WebKitCSSMatrix?i.m41:16===t.length?parseFloat(t[12]):parseFloat(t[4])),"y"===a&&(s=window.WebKitCSSMatrix?i.m42:16===t.length?parseFloat(t[13]):parseFloat(t[5])),y.rtl&&s&&(s=-s),s||0)},y.getWrapperTranslate=function(e){return"undefined"==typeof e&&(e=y.isHorizontal()?"x":"y"),y.getTranslate(y.wrapper[0],e)},y.observers=[],y.initObservers=function(){if(y.params.observeParents)for(var e=y.container.parents(),a=0;ae.length&&(y.loopedSlides=e.length);var t,s=[],r=[];for(e.each(function(t,i){var n=a(this);t=e.length-y.loopedSlides&&s.push(i),n.attr("data-swiper-slide-index",t)}),t=0;t=0;t--)y.wrapper.prepend(a(s[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass))},y.destroyLoop=function(){y.wrapper.children("."+y.params.slideClass+"."+y.params.slideDuplicateClass).remove(),y.slides.removeAttr("data-swiper-slide-index")},y.reLoop=function(e){var a=y.activeIndex-y.loopedSlides;y.destroyLoop(),y.createLoop(),y.updateSlidesSize(),e&&y.slideTo(a+y.loopedSlides,0,!1)},y.fixLoop=function(){var e;y.activeIndex=2*y.loopedSlides||y.activeIndex>y.slides.length-2*y.params.slidesPerView)&&(e=-y.slides.length+y.activeIndex+y.loopedSlides,e+=y.loopedSlides,y.slideTo(e,0,!1,!0))},y.appendSlide=function(e){if(y.params.loop&&y.destroyLoop(),"object"==typeof e&&e.length)for(var a=0;aa&&t--;t=Math.max(t,0)}else a=e,y.slides[a]&&y.slides.eq(a).remove(),t>a&&t--,t=Math.max(t,0);y.params.loop&&y.createLoop(),y.params.observer&&y.support.observer||y.update(!0),y.params.loop?y.slideTo(t+y.loopedSlides,0,!1):y.slideTo(t,0,!1)},y.removeAllSlides=function(){for(var e=[],a=0;a'),t.append(d)),0===u.length&&(u=a('
'),t.append(u)),d.length&&(d[0].style.opacity=Math.max(-s,0)),u.length&&(u[0].style.opacity=Math.max(s,0))}t.transform("translate3d("+l+"px, "+p+"px, 0px) rotateX("+o+"deg) rotateY("+n+"deg)")}},setTransition:function(e){if(y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),y.params.virtualTranslate&&0!==e){var t=!1;y.slides.eq(y.activeIndex).transitionEnd(function(){if(!t&&y&&a(this).hasClass(y.params.slideActiveClass)){t=!0,y.animating=!1;for(var e=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],s=0;s'),y.wrapper.append(e)),e.css({height:y.width+"px"})):(e=y.container.find(".swiper-cube-shadow"),0===e.length&&(e=a('
'),y.container.append(e))));for(var s=0;s=o&&o>-1&&(t=90*s+90*o,y.rtl&&(t=90*-s-90*o)),r.transform(u),y.params.cube.slideShadows){var c=y.isHorizontal()?r.find(".swiper-slide-shadow-left"):r.find(".swiper-slide-shadow-top"),m=y.isHorizontal()?r.find(".swiper-slide-shadow-right"):r.find(".swiper-slide-shadow-bottom");0===c.length&&(c=a('
'),r.append(c)),0===m.length&&(m=a('
'),r.append(m)),c.length&&(c[0].style.opacity=Math.max(-o,0)),m.length&&(m[0].style.opacity=Math.max(o,0))}}if(y.wrapper.css({"-webkit-transform-origin":"50% 50% -"+y.size/2+"px","-moz-transform-origin":"50% 50% -"+y.size/2+"px","-ms-transform-origin":"50% 50% -"+y.size/2+"px","transform-origin":"50% 50% -"+y.size/2+"px"}),y.params.cube.shadow)if(y.isHorizontal())e.transform("translate3d(0px, "+(y.width/2+y.params.cube.shadowOffset)+"px, "+-y.width/2+"px) rotateX(90deg) rotateZ(0deg) scale("+y.params.cube.shadowScale+")");else{var f=Math.abs(t)-90*Math.floor(Math.abs(t)/90),g=1.5-(Math.sin(2*f*Math.PI/360)/2+Math.cos(2*f*Math.PI/360)/2),h=y.params.cube.shadowScale,v=y.params.cube.shadowScale/g,w=y.params.cube.shadowOffset;e.transform("scale3d("+h+", 1, "+v+") translate3d(0px, "+(y.height/2+w)+"px, "+-y.height/2/v+"px) rotateX(-90deg)")}var b=y.isSafari||y.isUiWebView?-y.size/2:0;y.wrapper.transform("translate3d(0px,0,"+b+"px) rotateX("+(y.isHorizontal()?0:t)+"deg) rotateY("+(y.isHorizontal()?-t:0)+"deg)")},setTransition:function(e){y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),y.params.cube.shadow&&!y.isHorizontal()&&y.container.find(".swiper-cube-shadow").transition(e)}},coverflow:{setTranslate:function(){for(var e=y.translate,t=y.isHorizontal()?-e+y.width/2:-e+y.height/2,s=y.isHorizontal()?y.params.coverflow.rotate:-y.params.coverflow.rotate,r=y.params.coverflow.depth,i=0,n=y.slides.length;n>i;i++){var o=y.slides.eq(i),l=y.slidesSizesGrid[i],p=o[0].swiperSlideOffset,d=(t-p-l/2)/l*y.params.coverflow.modifier,u=y.isHorizontal()?s*d:0,c=y.isHorizontal()?0:s*d,m=-r*Math.abs(d),f=y.isHorizontal()?0:y.params.coverflow.stretch*d,g=y.isHorizontal()?y.params.coverflow.stretch*d:0;Math.abs(g)<.001&&(g=0),Math.abs(f)<.001&&(f=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(c)<.001&&(c=0);var h="translate3d("+g+"px,"+f+"px,"+m+"px) rotateX("+c+"deg) rotateY("+u+"deg)";if(o.transform(h),o[0].style.zIndex=-Math.abs(Math.round(d))+1,y.params.coverflow.slideShadows){var v=y.isHorizontal()?o.find(".swiper-slide-shadow-left"):o.find(".swiper-slide-shadow-top"),w=y.isHorizontal()?o.find(".swiper-slide-shadow-right"):o.find(".swiper-slide-shadow-bottom");0===v.length&&(v=a('
'),o.append(v)),0===w.length&&(w=a('
'),o.append(w)),v.length&&(v[0].style.opacity=d>0?d:0),w.length&&(w[0].style.opacity=-d>0?-d:0)}}if(y.browser.ie){var b=y.wrapper[0].style;b.perspectiveOrigin=t+"px 50%"}},setTransition:function(e){y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}}},y.lazy={initialImageLoaded:!1,loadImageInSlide:function(e,t){if("undefined"!=typeof e&&("undefined"==typeof t&&(t=!0),0!==y.slides.length)){var s=y.slides.eq(e),r=s.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");!s.hasClass("swiper-lazy")||s.hasClass("swiper-lazy-loaded")||s.hasClass("swiper-lazy-loading")||(r=r.add(s[0])),0!==r.length&&r.each(function(){var e=a(this);e.addClass("swiper-lazy-loading");var r=e.attr("data-background"),i=e.attr("data-src"),n=e.attr("data-srcset");y.loadImage(e[0],i||r,n,!1,function(){if(r?(e.css("background-image",'url("'+r+'")'),e.removeAttr("data-background")):(n&&(e.attr("srcset",n),e.removeAttr("data-srcset")),i&&(e.attr("src",i),e.removeAttr("data-src"))),e.addClass("swiper-lazy-loaded").removeClass("swiper-lazy-loading"),s.find(".swiper-lazy-preloader, .preloader").remove(),y.params.loop&&t){var a=s.attr("data-swiper-slide-index");if(s.hasClass(y.params.slideDuplicateClass)){var o=y.wrapper.children('[data-swiper-slide-index="'+a+'"]:not(.'+y.params.slideDuplicateClass+")");y.lazy.loadImageInSlide(o.index(),!1)}else{var l=y.wrapper.children("."+y.params.slideDuplicateClass+'[data-swiper-slide-index="'+a+'"]');y.lazy.loadImageInSlide(l.index(),!1)}}y.emit("onLazyImageReady",y,s[0],e[0])}),y.emit("onLazyImageLoad",y,s[0],e[0])})}},load:function(){var e;if(y.params.watchSlidesVisibility)y.wrapper.children("."+y.params.slideVisibleClass).each(function(){y.lazy.loadImageInSlide(a(this).index())});else if(y.params.slidesPerView>1)for(e=y.activeIndex;e1||y.params.lazyLoadingInPrevNextAmount&&y.params.lazyLoadingInPrevNextAmount>1){var t=y.params.lazyLoadingInPrevNextAmount,s=y.params.slidesPerView,r=Math.min(y.activeIndex+s+Math.max(t,s),y.slides.length),i=Math.max(y.activeIndex-Math.max(s,t),0);for(e=y.activeIndex+y.params.slidesPerView;r>e;e++)y.slides[e]&&y.lazy.loadImageInSlide(e);for(e=i;e0&&y.lazy.loadImageInSlide(n.index());var o=y.wrapper.children("."+y.params.slidePrevClass);o.length>0&&y.lazy.loadImageInSlide(o.index())}},onTransitionStart:function(){y.params.lazyLoading&&(y.params.lazyLoadingOnTransitionStart||!y.params.lazyLoadingOnTransitionStart&&!y.lazy.initialImageLoaded)&&y.lazy.load()},onTransitionEnd:function(){y.params.lazyLoading&&!y.params.lazyLoadingOnTransitionStart&&y.lazy.load()}},y.scrollbar={isTouched:!1,setDragPosition:function(e){var a=y.scrollbar,t=y.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageX:e.pageX||e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageY:e.pageY||e.clientY,s=t-a.track.offset()[y.isHorizontal()?"left":"top"]-a.dragSize/2,r=-y.minTranslate()*a.moveDivider,i=-y.maxTranslate()*a.moveDivider;r>s?s=r:s>i&&(s=i),s=-s/a.moveDivider,y.updateProgress(s),y.setWrapperTranslate(s,!0)},dragStart:function(e){var a=y.scrollbar;a.isTouched=!0,e.preventDefault(),e.stopPropagation(),a.setDragPosition(e),clearTimeout(a.dragTimeout),a.track.transition(0),y.params.scrollbarHide&&a.track.css("opacity",1),y.wrapper.transition(100),a.drag.transition(100),y.emit("onScrollbarDragStart",y)},dragMove:function(e){var a=y.scrollbar;a.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,a.setDragPosition(e),y.wrapper.transition(0),a.track.transition(0),a.drag.transition(0),y.emit("onScrollbarDragMove",y))},dragEnd:function(e){var a=y.scrollbar;a.isTouched&&(a.isTouched=!1,y.params.scrollbarHide&&(clearTimeout(a.dragTimeout),a.dragTimeout=setTimeout(function(){a.track.css("opacity",0),a.track.transition(400)},1e3)),y.emit("onScrollbarDragEnd",y),y.params.scrollbarSnapOnRelease&&y.slideReset())},enableDraggable:function(){var e=y.scrollbar,t=y.support.touch?e.track:document;a(e.track).on(y.touchEvents.start,e.dragStart),a(t).on(y.touchEvents.move,e.dragMove),a(t).on(y.touchEvents.end,e.dragEnd)},disableDraggable:function(){var e=y.scrollbar,t=y.support.touch?e.track:document;a(e.track).off(y.touchEvents.start,e.dragStart),a(t).off(y.touchEvents.move,e.dragMove),a(t).off(y.touchEvents.end,e.dragEnd)},set:function(){if(y.params.scrollbar){var e=y.scrollbar;e.track=a(y.params.scrollbar),y.params.uniqueNavElements&&"string"==typeof y.params.scrollbar&&e.track.length>1&&1===y.container.find(y.params.scrollbar).length&&(e.track=y.container.find(y.params.scrollbar)),e.drag=e.track.find(".swiper-scrollbar-drag"),0===e.drag.length&&(e.drag=a('
'),e.track.append(e.drag)),e.drag[0].style.width="",e.drag[0].style.height="",e.trackSize=y.isHorizontal()?e.track[0].offsetWidth:e.track[0].offsetHeight,e.divider=y.size/y.virtualSize,e.moveDivider=e.divider*(e.trackSize/y.size),e.dragSize=e.trackSize*e.divider,y.isHorizontal()?e.drag[0].style.width=e.dragSize+"px":e.drag[0].style.height=e.dragSize+"px",e.divider>=1?e.track[0].style.display="none":e.track[0].style.display="",y.params.scrollbarHide&&(e.track[0].style.opacity=0)}},setTranslate:function(){if(y.params.scrollbar){var e,a=y.scrollbar,t=(y.translate||0,a.dragSize);e=(a.trackSize-a.dragSize)*y.progress,y.rtl&&y.isHorizontal()?(e=-e,e>0?(t=a.dragSize-e,e=0):-e+a.dragSize>a.trackSize&&(t=a.trackSize+e)):0>e?(t=a.dragSize+e,e=0):e+a.dragSize>a.trackSize&&(t=a.trackSize-e),y.isHorizontal()?(y.support.transforms3d?a.drag.transform("translate3d("+e+"px, 0, 0)"):a.drag.transform("translateX("+e+"px)"),a.drag[0].style.width=t+"px"):(y.support.transforms3d?a.drag.transform("translate3d(0px, "+e+"px, 0)"):a.drag.transform("translateY("+e+"px)"),a.drag[0].style.height=t+"px"),y.params.scrollbarHide&&(clearTimeout(a.timeout),a.track[0].style.opacity=1,a.timeout=setTimeout(function(){a.track[0].style.opacity=0,a.track.transition(400)},1e3))}},setTransition:function(e){y.params.scrollbar&&y.scrollbar.drag.transition(e)}},y.controller={LinearSpline:function(e,a){this.x=e,this.y=a,this.lastIndex=e.length-1;var t,s;this.x.length;this.interpolate=function(e){return e?(s=r(this.x,e),t=s-1,(e-this.x[t])*(this.y[s]-this.y[t])/(this.x[s]-this.x[t])+this.y[t]):0};var r=function(){var e,a,t;return function(s,r){for(a=-1,e=s.length;e-a>1;)s[t=e+a>>1]<=r?a=t:e=t;return e}}()},getInterpolateFunction:function(e){y.controller.spline||(y.controller.spline=y.params.loop?new y.controller.LinearSpline(y.slidesGrid,e.slidesGrid):new y.controller.LinearSpline(y.snapGrid,e.snapGrid))},setTranslate:function(e,a){function s(a){e=a.rtl&&"horizontal"===a.params.direction?-y.translate:y.translate,"slide"===y.params.controlBy&&(y.controller.getInterpolateFunction(a),i=-y.controller.spline.interpolate(-e)),i&&"container"!==y.params.controlBy||(r=(a.maxTranslate()-a.minTranslate())/(y.maxTranslate()-y.minTranslate()),i=(e-y.minTranslate())*r+a.minTranslate()),y.params.controlInverse&&(i=a.maxTranslate()-i),a.updateProgress(i),a.setWrapperTranslate(i,!1,y),a.updateActiveIndex()}var r,i,n=y.params.control;if(y.isArray(n))for(var o=0;ot;t++){var r=y.slides.eq(t),i=r.attr("data-hash");if(i===e&&!r.hasClass(y.params.slideDuplicateClass)){var n=r.index();y.slideTo(n,a,y.params.runCallbacksOnInit,!0)}}}},setHash:function(){y.hashnav.initialized&&y.params.hashnav&&(document.location.hash=y.slides.eq(y.activeIndex).attr("data-hash")||"")}},y.disableKeyboardControl=function(){y.params.keyboardControl=!1,a(document).off("keydown",l)},y.enableKeyboardControl=function(){y.params.keyboardControl=!0,a(document).on("keydown",l)},y.mousewheel={event:!1,lastScrollTime:(new window.Date).getTime()},y.params.mousewheelControl){try{new window.WheelEvent("wheel"),y.mousewheel.event="wheel"}catch(O){(window.WheelEvent||y.container[0]&&"wheel"in y.container[0])&&(y.mousewheel.event="wheel")}!y.mousewheel.event&&window.WheelEvent,y.mousewheel.event||void 0===document.onmousewheel||(y.mousewheel.event="mousewheel"),y.mousewheel.event||(y.mousewheel.event="DOMMouseScroll")}y.disableMousewheelControl=function(){return y.mousewheel.event?(y.container.off(y.mousewheel.event,p),!0):!1},y.enableMousewheelControl=function(){return y.mousewheel.event?(y.container.on(y.mousewheel.event,p),!0):!1},y.parallax={setTranslate:function(){y.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){d(this,y.progress)}),y.slides.each(function(){var e=a(this);e.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var a=Math.min(Math.max(e[0].progress,-1),1);d(this,a)})})},setTransition:function(e){"undefined"==typeof e&&(e=y.params.speed),y.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var t=a(this),s=parseInt(t.attr("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.transition(s)})}},y._plugins=[];for(var N in y.plugins){var R=y.plugins[N](y,y.params[N]);R&&y._plugins.push(R)}return y.callPlugins=function(e){for(var a=0;a'),notify:function(e){var a=y.a11y.liveRegion;0!==a.length&&(a.html(""),a.html(e))},init:function(){y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.a11y.makeFocusable(y.nextButton),y.a11y.addRole(y.nextButton,"button"),y.a11y.addLabel(y.nextButton,y.params.nextSlideMessage)),y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.a11y.makeFocusable(y.prevButton),y.a11y.addRole(y.prevButton,"button"),y.a11y.addLabel(y.prevButton,y.params.prevSlideMessage)),a(y.container).append(y.a11y.liveRegion)},initPagination:function(){y.params.pagination&&y.params.paginationClickable&&y.bullets&&y.bullets.length&&y.bullets.each(function(){var e=a(this);y.a11y.makeFocusable(e),y.a11y.addRole(e,"button"),y.a11y.addLabel(e,y.params.paginationBulletMessage.replace(/{{index}}/,e.index()+1))})},destroy:function(){y.a11y.liveRegion&&y.a11y.liveRegion.length>0&&y.a11y.liveRegion.remove()}},y.init=function(){y.params.loop&&y.createLoop(),y.updateContainerSize(),y.updateSlidesSize(),y.updatePagination(),y.params.scrollbar&&y.scrollbar&&(y.scrollbar.set(),y.params.scrollbarDraggable&&y.scrollbar.enableDraggable()),"slide"!==y.params.effect&&y.effects[y.params.effect]&&(y.params.loop||y.updateProgress(),y.effects[y.params.effect].setTranslate()),y.params.loop?y.slideTo(y.params.initialSlide+y.loopedSlides,0,y.params.runCallbacksOnInit):(y.slideTo(y.params.initialSlide,0,y.params.runCallbacksOnInit),0===y.params.initialSlide&&(y.parallax&&y.params.parallax&&y.parallax.setTranslate(),y.lazy&&y.params.lazyLoading&&(y.lazy.load(),y.lazy.initialImageLoaded=!0))),y.attachEvents(),y.params.observer&&y.support.observer&&y.initObservers(),y.params.preloadImages&&!y.params.lazyLoading&&y.preloadImages(),y.params.autoplay&&y.startAutoplay(),y.params.keyboardControl&&y.enableKeyboardControl&&y.enableKeyboardControl(),y.params.mousewheelControl&&y.enableMousewheelControl&&y.enableMousewheelControl(), -y.params.hashnav&&y.hashnav&&y.hashnav.init(),y.params.a11y&&y.a11y&&y.a11y.init(),y.emit("onInit",y)},y.cleanupStyles=function(){y.container.removeClass(y.classNames.join(" ")).removeAttr("style"),y.wrapper.removeAttr("style"),y.slides&&y.slides.length&&y.slides.removeClass([y.params.slideVisibleClass,y.params.slideActiveClass,y.params.slideNextClass,y.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"),y.paginationContainer&&y.paginationContainer.length&&y.paginationContainer.removeClass(y.params.paginationHiddenClass),y.bullets&&y.bullets.length&&y.bullets.removeClass(y.params.bulletActiveClass),y.params.prevButton&&a(y.params.prevButton).removeClass(y.params.buttonDisabledClass),y.params.nextButton&&a(y.params.nextButton).removeClass(y.params.buttonDisabledClass),y.params.scrollbar&&y.scrollbar&&(y.scrollbar.track&&y.scrollbar.track.length&&y.scrollbar.track.removeAttr("style"),y.scrollbar.drag&&y.scrollbar.drag.length&&y.scrollbar.drag.removeAttr("style"))},y.destroy=function(e,a){y.detachEvents(),y.stopAutoplay(),y.params.scrollbar&&y.scrollbar&&y.params.scrollbarDraggable&&y.scrollbar.disableDraggable(),y.params.loop&&y.destroyLoop(),a&&y.cleanupStyles(),y.disconnectObservers(),y.params.keyboardControl&&y.disableKeyboardControl&&y.disableKeyboardControl(),y.params.mousewheelControl&&y.disableMousewheelControl&&y.disableMousewheelControl(),y.params.a11y&&y.a11y&&y.a11y.destroy(),y.emit("onDestroy"),e!==!1&&(y=null)},y.init(),y}};t.prototype={isSafari:function(){var e=navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},browser:{ie:window.navigator.pointerEnabled||window.navigator.msPointerEnabled,ieTouch:window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>1||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints>1},device:function(){var e=navigator.userAgent,a=e.match(/(Android);?[\s\/]+([\d.]+)?/),t=e.match(/(iPad).*OS\s([\d_]+)/),s=e.match(/(iPod)(.*OS\s([\d_]+))?/),r=!t&&e.match(/(iPhone\sOS)\s([\d_]+)/);return{ios:t||r||s,android:a}}(),support:{touch:window.Modernizr&&Modernizr.touch===!0||function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)}(),transforms3d:window.Modernizr&&Modernizr.csstransforms3d===!0||function(){var e=document.createElement("div").style;return"webkitPerspective"in e||"MozPerspective"in e||"OPerspective"in e||"MsPerspective"in e||"perspective"in e}(),flexbox:function(){for(var e=document.createElement("div").style,a="alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "),t=0;t parseInt(b, 10); - }); - for (var i = 0; i < points.length; i++) { - point = points[i]; - if (point >= window.innerWidth && !breakpoint) { - breakpoint = point; - } - } - return breakpoint || 'max'; - }; - s.setBreakpoint = function () { - //Set breakpoint for window width and update parameters - var breakpoint = s.getActiveBreakpoint(); - if (breakpoint && s.currentBreakpoint !== breakpoint) { - var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams; - var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView); - for ( var param in breakPointsParams ) { - s.params[param] = breakPointsParams[param]; - } - s.currentBreakpoint = breakpoint; - if(needsReLoop && s.destroyLoop) { - s.reLoop(true); - } - } - }; - // Set breakpoint on load - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - /*========================= - Preparation - Define Container, Wrapper and Pagination - ===========================*/ - s.container = $(container); - if (s.container.length === 0) return; - if (s.container.length > 1) { - var swipers = []; - s.container.each(function () { - var container = this; - swipers.push(new Swiper(this, params)); - }); - return swipers; - } - - // Save instance in container HTML Element and in data - s.container[0].swiper = s; - s.container.data('swiper', s); - - s.classNames.push('swiper-container-' + s.params.direction); - - if (s.params.freeMode) { - s.classNames.push('swiper-container-free-mode'); - } - if (!s.support.flexbox) { - s.classNames.push('swiper-container-no-flexbox'); - s.params.slidesPerColumn = 1; - } - if (s.params.autoHeight) { - s.classNames.push('swiper-container-autoheight'); - } - // Enable slides progress when required - if (s.params.parallax || s.params.watchSlidesVisibility) { - s.params.watchSlidesProgress = true; - } - // Coverflow / 3D - if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) { - if (s.support.transforms3d) { - s.params.watchSlidesProgress = true; - s.classNames.push('swiper-container-3d'); - } - else { - s.params.effect = 'slide'; - } - } - if (s.params.effect !== 'slide') { - s.classNames.push('swiper-container-' + s.params.effect); - } - if (s.params.effect === 'cube') { - s.params.resistanceRatio = 0; - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.centeredSlides = false; - s.params.spaceBetween = 0; - s.params.virtualTranslate = true; - s.params.setWrapperSize = false; - } - if (s.params.effect === 'fade' || s.params.effect === 'flip') { - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.watchSlidesProgress = true; - s.params.spaceBetween = 0; - s.params.setWrapperSize = false; - if (typeof initialVirtualTranslate === 'undefined') { - s.params.virtualTranslate = true; - } - } - - // Grab Cursor - if (s.params.grabCursor && s.support.touch) { - s.params.grabCursor = false; - } - - // Wrapper - s.wrapper = s.container.children('.' + s.params.wrapperClass); - - // Pagination - if (s.params.pagination) { - s.paginationContainer = $(s.params.pagination); - if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) { - s.paginationContainer = s.container.find(s.params.pagination); - } - - if (s.params.paginationType === 'bullets' && s.params.paginationClickable) { - s.paginationContainer.addClass('swiper-pagination-clickable'); - } - else { - s.params.paginationClickable = false; - } - s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType); - } - // Next/Prev Buttons - if (s.params.nextButton || s.params.prevButton) { - if (s.params.nextButton) { - s.nextButton = $(s.params.nextButton); - if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) { - s.nextButton = s.container.find(s.params.nextButton); - } - } - if (s.params.prevButton) { - s.prevButton = $(s.params.prevButton); - if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) { - s.prevButton = s.container.find(s.params.prevButton); - } - } - } - - // Is Horizontal - s.isHorizontal = function () { - return s.params.direction === 'horizontal'; - }; - // s.isH = isH; - - // RTL - s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl'); - if (s.rtl) { - s.classNames.push('swiper-container-rtl'); - } - - // Wrong RTL support - if (s.rtl) { - s.wrongRTL = s.wrapper.css('display') === '-webkit-box'; - } - - // Columns - if (s.params.slidesPerColumn > 1) { - s.classNames.push('swiper-container-multirow'); - } - - // Check for Android - if (s.device.android) { - s.classNames.push('swiper-container-android'); - } - - // Add classes - s.container.addClass(s.classNames.join(' ')); - - // Translate - s.translate = 0; - - // Progress - s.progress = 0; - - // Velocity - s.velocity = 0; - - /*========================= - Locks, unlocks - ===========================*/ - s.lockSwipeToNext = function () { - s.params.allowSwipeToNext = false; - }; - s.lockSwipeToPrev = function () { - s.params.allowSwipeToPrev = false; - }; - s.lockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false; - }; - s.unlockSwipeToNext = function () { - s.params.allowSwipeToNext = true; - }; - s.unlockSwipeToPrev = function () { - s.params.allowSwipeToPrev = true; - }; - s.unlockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true; - }; - - /*========================= - Round helper - ===========================*/ - function round(a) { - return Math.floor(a); - } - /*========================= - Set grab cursor - ===========================*/ - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - /*========================= - Update on Images Ready - ===========================*/ - s.imagesToLoad = []; - s.imagesLoaded = 0; - - s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) { - var image; - function onReady () { - if (callback) callback(); - } - if (!imgElement.complete || !checkForComplete) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - if (srcset) { - image.srcset = srcset; - } - if (src) { - image.src = src; - } - } else { - onReady(); - } - - } else {//image already loaded... - onReady(); - } - }; - s.preloadImages = function () { - s.imagesToLoad = s.container.find('img'); - function _onReady() { - if (typeof s === 'undefined' || s === null) return; - if (s.imagesLoaded !== undefined) s.imagesLoaded++; - if (s.imagesLoaded === s.imagesToLoad.length) { - if (s.params.updateOnImagesReady) s.update(); - s.emit('onImagesReady', s); - } - } - for (var i = 0; i < s.imagesToLoad.length; i++) { - s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady); - } - }; - - /*========================= - Autoplay - ===========================*/ - s.autoplayTimeoutId = undefined; - s.autoplaying = false; - s.autoplayPaused = false; - function autoplay() { - s.autoplayTimeoutId = setTimeout(function () { - if (s.params.loop) { - s.fixLoop(); - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!s.isEnd) { - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!params.autoplayStopOnLast) { - s._slideTo(0); - s.emit('onAutoplay', s); - } - else { - s.stopAutoplay(); - } - } - } - }, s.params.autoplay); - } - s.startAutoplay = function () { - if (typeof s.autoplayTimeoutId !== 'undefined') return false; - if (!s.params.autoplay) return false; - if (s.autoplaying) return false; - s.autoplaying = true; - s.emit('onAutoplayStart', s); - autoplay(); - }; - s.stopAutoplay = function (internal) { - if (!s.autoplayTimeoutId) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplaying = false; - s.autoplayTimeoutId = undefined; - s.emit('onAutoplayStop', s); - }; - s.pauseAutoplay = function (speed) { - if (s.autoplayPaused) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplayPaused = true; - if (speed === 0) { - s.autoplayPaused = false; - autoplay(); - } - else { - s.wrapper.transitionEnd(function () { - if (!s) return; - s.autoplayPaused = false; - if (!s.autoplaying) { - s.stopAutoplay(); - } - else { - autoplay(); - } - }); - } - }; - /*========================= - Min/Max Translate - ===========================*/ - s.minTranslate = function () { - return (-s.snapGrid[0]); - }; - s.maxTranslate = function () { - return (-s.snapGrid[s.snapGrid.length - 1]); - }; - /*========================= - Slider/slides sizes - ===========================*/ - s.updateAutoHeight = function () { - // Update Height - var slide = s.slides.eq(s.activeIndex)[0]; - if (typeof slide !== 'undefined') { - var newHeight = slide.offsetHeight; - if (newHeight) s.wrapper.css('height', newHeight + 'px'); - } - }; - s.updateContainerSize = function () { - var width, height; - if (typeof s.params.width !== 'undefined') { - width = s.params.width; - } - else { - width = s.container[0].clientWidth; - } - if (typeof s.params.height !== 'undefined') { - height = s.params.height; - } - else { - height = s.container[0].clientHeight; - } - if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) { - return; - } - - //Subtract paddings - width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10); - height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10); - - // Store values - s.width = width; - s.height = height; - s.size = s.isHorizontal() ? s.width : s.height; - }; - - s.updateSlidesSize = function () { - s.slides = s.wrapper.children('.' + s.params.slideClass); - s.snapGrid = []; - s.slidesGrid = []; - s.slidesSizesGrid = []; - - var spaceBetween = s.params.spaceBetween, - slidePosition = -s.params.slidesOffsetBefore, - i, - prevSlideSize = 0, - index = 0; - if (typeof s.size === 'undefined') return; - if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { - spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size; - } - - s.virtualSize = -spaceBetween; - // reset margins - if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''}); - else s.slides.css({marginRight: '', marginBottom: ''}); - - var slidesNumberEvenToRows; - if (s.params.slidesPerColumn > 1) { - if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) { - slidesNumberEvenToRows = s.slides.length; - } - else { - slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn; - } - if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') { - slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn); - } - } - - // Calc slides - var slideSize; - var slidesPerColumn = s.params.slidesPerColumn; - var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; - var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length); - for (i = 0; i < s.slides.length; i++) { - slideSize = 0; - var slide = s.slides.eq(i); - if (s.params.slidesPerColumn > 1) { - // Set slides order - var newSlideOrderIndex; - var column, row; - if (s.params.slidesPerColumnFill === 'column') { - column = Math.floor(i / slidesPerColumn); - row = i - column * slidesPerColumn; - if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) { - if (++row >= slidesPerColumn) { - row = 0; - column++; - } - } - newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; - slide - .css({ - '-webkit-box-ordinal-group': newSlideOrderIndex, - '-moz-box-ordinal-group': newSlideOrderIndex, - '-ms-flex-order': newSlideOrderIndex, - '-webkit-order': newSlideOrderIndex, - 'order': newSlideOrderIndex - }); - } - else { - row = Math.floor(i / slidesPerRow); - column = i - row * slidesPerRow; - } - slide - .css({ - 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px') - }) - .attr('data-swiper-column', column) - .attr('data-swiper-row', row); - - } - if (slide.css('display') === 'none') continue; - if (s.params.slidesPerView === 'auto') { - slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); - if (s.params.roundLengths) slideSize = round(slideSize); - } - else { - slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView; - if (s.params.roundLengths) slideSize = round(slideSize); - - if (s.isHorizontal()) { - s.slides[i].style.width = slideSize + 'px'; - } - else { - s.slides[i].style.height = slideSize + 'px'; - } - } - s.slides[i].swiperSlideSize = slideSize; - s.slidesSizesGrid.push(slideSize); - - - if (s.params.centeredSlides) { - slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; - if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - } - else { - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - slidePosition = slidePosition + slideSize + spaceBetween; - } - - s.virtualSize += slideSize + spaceBetween; - - prevSlideSize = slideSize; - - index ++; - } - s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter; - var newSlidesGrid; - - if ( - s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) { - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - } - if (!s.support.flexbox || s.params.setWrapperSize) { - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - } - - if (s.params.slidesPerColumn > 1) { - s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows; - s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween; - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - if (s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]); - } - s.snapGrid = newSlidesGrid; - } - } - - // Remove last grid elements depending on width - if (!s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] <= s.virtualSize - s.size) { - newSlidesGrid.push(s.snapGrid[i]); - } - } - s.snapGrid = newSlidesGrid; - if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) { - s.snapGrid.push(s.virtualSize - s.size); - } - } - if (s.snapGrid.length === 0) s.snapGrid = [0]; - - if (s.params.spaceBetween !== 0) { - if (s.isHorizontal()) { - if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'}); - else s.slides.css({marginRight: spaceBetween + 'px'}); - } - else s.slides.css({marginBottom: spaceBetween + 'px'}); - } - if (s.params.watchSlidesProgress) { - s.updateSlidesOffset(); - } - }; - s.updateSlidesOffset = function () { - for (var i = 0; i < s.slides.length; i++) { - s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop; - } - }; - - /*========================= - Slider/slides progress - ===========================*/ - s.updateSlidesProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - if (s.slides.length === 0) return; - if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset(); - - var offsetCenter = -translate; - if (s.rtl) offsetCenter = translate; - - // Visible Slides - s.slides.removeClass(s.params.slideVisibleClass); - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides[i]; - var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween); - if (s.params.watchSlidesVisibility) { - var slideBefore = -(offsetCenter - slide.swiperSlideOffset); - var slideAfter = slideBefore + s.slidesSizesGrid[i]; - var isVisible = - (slideBefore >= 0 && slideBefore < s.size) || - (slideAfter > 0 && slideAfter <= s.size) || - (slideBefore <= 0 && slideAfter >= s.size); - if (isVisible) { - s.slides.eq(i).addClass(s.params.slideVisibleClass); - } - } - slide.progress = s.rtl ? -slideProgress : slideProgress; - } - }; - s.updateProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - var translatesDiff = s.maxTranslate() - s.minTranslate(); - var wasBeginning = s.isBeginning; - var wasEnd = s.isEnd; - if (translatesDiff === 0) { - s.progress = 0; - s.isBeginning = s.isEnd = true; - } - else { - s.progress = (translate - s.minTranslate()) / (translatesDiff); - s.isBeginning = s.progress <= 0; - s.isEnd = s.progress >= 1; - } - if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s); - if (s.isEnd && !wasEnd) s.emit('onReachEnd', s); - - if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate); - s.emit('onProgress', s, s.progress); - }; - s.updateActiveIndex = function () { - var translate = s.rtl ? s.translate : -s.translate; - var newActiveIndex, i, snapIndex; - for (i = 0; i < s.slidesGrid.length; i ++) { - if (typeof s.slidesGrid[i + 1] !== 'undefined') { - if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) { - newActiveIndex = i; - } - else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) { - newActiveIndex = i + 1; - } - } - else { - if (translate >= s.slidesGrid[i]) { - newActiveIndex = i; - } - } - } - // Normalize slideIndex - if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0; - // for (i = 0; i < s.slidesGrid.length; i++) { - // if (- translate >= s.slidesGrid[i]) { - // newActiveIndex = i; - // } - // } - snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup); - if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1; - - if (newActiveIndex === s.activeIndex) { - return; - } - s.snapIndex = snapIndex; - s.previousIndex = s.activeIndex; - s.activeIndex = newActiveIndex; - s.updateClasses(); - }; - - /*========================= - Classes - ===========================*/ - s.updateClasses = function () { - s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass); - var activeSlide = s.slides.eq(s.activeIndex); - // Active classes - activeSlide.addClass(s.params.slideActiveClass); - // Next Slide - var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass); - if (s.params.loop && nextSlide.length === 0) { - s.slides.eq(0).addClass(s.params.slideNextClass); - } - // Prev Slide - var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass); - if (s.params.loop && prevSlide.length === 0) { - s.slides.eq(-1).addClass(s.params.slidePrevClass); - } - - // Pagination - if (s.paginationContainer && s.paginationContainer.length > 0) { - // Current/Total - var current, - total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - if (s.params.loop) { - current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup); - if (current > s.slides.length - 1 - s.loopedSlides * 2) { - current = current - (s.slides.length - s.loopedSlides * 2); - } - if (current > total - 1) current = current - total; - if (current < 0 && s.params.paginationType !== 'bullets') current = total + current; - } - else { - if (typeof s.snapIndex !== 'undefined') { - current = s.snapIndex; - } - else { - current = s.activeIndex || 0; - } - } - // Types - if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) { - s.bullets.removeClass(s.params.bulletActiveClass); - if (s.paginationContainer.length > 1) { - s.bullets.each(function () { - if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass); - }); - } - else { - s.bullets.eq(current).addClass(s.params.bulletActiveClass); - } - } - if (s.params.paginationType === 'fraction') { - s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1); - s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total); - } - if (s.params.paginationType === 'progress') { - var scale = (current + 1) / total, - scaleX = scale, - scaleY = 1; - if (!s.isHorizontal()) { - scaleY = scale; - scaleX = 1; - } - s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed); - } - if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) { - s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total)); - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - - // Next/active buttons - if (!s.params.loop) { - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - if (s.isBeginning) { - s.prevButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton); - } - else { - s.prevButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton); - } - } - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - if (s.isEnd) { - s.nextButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton); - } - else { - s.nextButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton); - } - } - } - }; - - /*========================= - Pagination - ===========================*/ - s.updatePagination = function () { - if (!s.params.pagination) return; - if (s.paginationContainer && s.paginationContainer.length > 0) { - var paginationHTML = ''; - if (s.params.paginationType === 'bullets') { - var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - for (var i = 0; i < numberOfBullets; i++) { - if (s.params.paginationBulletRender) { - paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass); - } - else { - paginationHTML += '<' + s.params.paginationElement+' class="' + s.params.bulletClass + '">'; - } - } - s.paginationContainer.html(paginationHTML); - s.bullets = s.paginationContainer.find('.' + s.params.bulletClass); - if (s.params.paginationClickable && s.params.a11y && s.a11y) { - s.a11y.initPagination(); - } - } - if (s.params.paginationType === 'fraction') { - if (s.params.paginationFractionRender) { - paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass); - } - else { - paginationHTML = - '' + - ' / ' + - ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType === 'progress') { - if (s.params.paginationProgressRender) { - paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass); - } - else { - paginationHTML = ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType !== 'custom') { - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - }; - /*========================= - Common update method - ===========================*/ - s.update = function (updateTranslate) { - s.updateContainerSize(); - s.updateSlidesSize(); - s.updateProgress(); - s.updatePagination(); - s.updateClasses(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - function forceSetTranslate() { - newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - } - if (updateTranslate) { - var translated, newTranslate; - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - if (s.params.freeMode) { - forceSetTranslate(); - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - translated = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - translated = s.slideTo(s.activeIndex, 0, false, true); - } - if (!translated) { - forceSetTranslate(); - } - } - } - else if (s.params.autoHeight) { - s.updateAutoHeight(); - } - }; - - /*========================= - Resize Handler - ===========================*/ - s.onResize = function (forceUpdatePagination) { - //Breakpoints - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - // Disable locks on resize - var allowSwipeToPrev = s.params.allowSwipeToPrev; - var allowSwipeToNext = s.params.allowSwipeToNext; - s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true; - - s.updateContainerSize(); - s.updateSlidesSize(); - if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - var slideChangedBySlideTo = false; - if (s.params.freeMode) { - var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - s.updateClasses(); - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true); - } - } - if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) { - s.lazy.load(); - } - // Return locks after resize - s.params.allowSwipeToPrev = allowSwipeToPrev; - s.params.allowSwipeToNext = allowSwipeToNext; - }; - - /*========================= - Events - ===========================*/ - - //Define Touch Events - var desktopEvents = ['mousedown', 'mousemove', 'mouseup']; - if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup']; - else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; - s.touchEvents = { - start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0], - move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1], - end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2] - }; - - - // WP8 Touch Events Fix - if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) { - (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction); - } - - // Attach/detach events - s.initEvents = function (detach) { - var actionDom = detach ? 'off' : 'on'; - var action = detach ? 'removeEventListener' : 'addEventListener'; - var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0]; - var target = s.support.touch ? touchEventsTarget : document; - - var moveCapture = s.params.nested ? true : false; - - //Touch Events - if (s.browser.ie) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - target[action](s.touchEvents.move, s.onTouchMove, moveCapture); - target[action](s.touchEvents.end, s.onTouchEnd, false); - } - else { - if (s.support.touch) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture); - touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false); - } - if (params.simulateTouch && !s.device.ios && !s.device.android) { - touchEventsTarget[action]('mousedown', s.onTouchStart, false); - document[action]('mousemove', s.onTouchMove, moveCapture); - document[action]('mouseup', s.onTouchEnd, false); - } - } - window[action]('resize', s.onResize); - - // Next, Prev, Index - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.nextButton[actionDom]('click', s.onClickNext); - if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.prevButton[actionDom]('click', s.onClickPrev); - if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.pagination && s.params.paginationClickable) { - s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex); - if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey); - } - - // Prevent Links Clicks - if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true); - }; - s.attachEvents = function () { - s.initEvents(); - }; - s.detachEvents = function () { - s.initEvents(true); - }; - - /*========================= - Handle Clicks - ===========================*/ - // Prevent Clicks - s.allowClick = true; - s.preventClicks = function (e) { - if (!s.allowClick) { - if (s.params.preventClicks) e.preventDefault(); - if (s.params.preventClicksPropagation && s.animating) { - e.stopPropagation(); - e.stopImmediatePropagation(); - } - } - }; - // Clicks - s.onClickNext = function (e) { - e.preventDefault(); - if (s.isEnd && !s.params.loop) return; - s.slideNext(); - }; - s.onClickPrev = function (e) { - e.preventDefault(); - if (s.isBeginning && !s.params.loop) return; - s.slidePrev(); - }; - s.onClickIndex = function (e) { - e.preventDefault(); - var index = $(this).index() * s.params.slidesPerGroup; - if (s.params.loop) index = index + s.loopedSlides; - s.slideTo(index); - }; - - /*========================= - Handle Touches - ===========================*/ - function findElementInEvent(e, selector) { - var el = $(e.target); - if (!el.is(selector)) { - if (typeof selector === 'string') { - el = el.parents(selector); - } - else if (selector.nodeType) { - var found; - el.parents().each(function (index, _el) { - if (_el === selector) found = selector; - }); - if (!found) return undefined; - else return selector; - } - } - if (el.length === 0) { - return undefined; - } - return el[0]; - } - s.updateClickedSlide = function (e) { - var slide = findElementInEvent(e, '.' + s.params.slideClass); - var slideFound = false; - if (slide) { - for (var i = 0; i < s.slides.length; i++) { - if (s.slides[i] === slide) slideFound = true; - } - } - - if (slide && slideFound) { - s.clickedSlide = slide; - s.clickedIndex = $(slide).index(); - } - else { - s.clickedSlide = undefined; - s.clickedIndex = undefined; - return; - } - if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) { - var slideToIndex = s.clickedIndex, - realIndex, - duplicatedSlides; - if (s.params.loop) { - if (s.animating) return; - realIndex = $(s.clickedSlide).attr('data-swiper-slide-index'); - if (s.params.centeredSlides) { - if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - else { - if (slideToIndex > s.slides.length - s.params.slidesPerView) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - } - else { - s.slideTo(slideToIndex); - } - } - }; - - var isTouched, - isMoved, - allowTouchCallbacks, - touchStartTime, - isScrolling, - currentTranslate, - startTranslate, - allowThresholdMove, - // Form elements to match - formElements = 'input, select, textarea, button', - // Last click time - lastClickTime = Date.now(), clickTimeout, - //Velocities - velocities = [], - allowMomentumBounce; - - // Animating Flag - s.animating = false; - - // Touches information - s.touches = { - startX: 0, - startY: 0, - currentX: 0, - currentY: 0, - diff: 0 - }; - - // Touch handlers - var isTouchEvent, startMoving; - s.onTouchStart = function (e) { - if (e.originalEvent) e = e.originalEvent; - isTouchEvent = e.type === 'touchstart'; - if (!isTouchEvent && 'which' in e && e.which === 3) return; - if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) { - s.allowClick = true; - return; - } - if (s.params.swipeHandler) { - if (!findElementInEvent(e, s.params.swipeHandler)) return; - } - - var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - - // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore - if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) { - return; - } - - isTouched = true; - isMoved = false; - allowTouchCallbacks = true; - isScrolling = undefined; - startMoving = undefined; - s.touches.startX = startX; - s.touches.startY = startY; - touchStartTime = Date.now(); - s.allowClick = true; - s.updateContainerSize(); - s.swipeDirection = undefined; - if (s.params.threshold > 0) allowThresholdMove = false; - if (e.type !== 'touchstart') { - var preventDefault = true; - if ($(e.target).is(formElements)) preventDefault = false; - if (document.activeElement && $(document.activeElement).is(formElements)) { - document.activeElement.blur(); - } - if (preventDefault) { - e.preventDefault(); - } - } - s.emit('onTouchStart', s, e); - }; - - s.onTouchMove = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (isTouchEvent && e.type === 'mousemove') return; - if (e.preventedByNestedSwiper) { - s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - return; - } - if (s.params.onlyExternal) { - // isMoved = true; - s.allowClick = false; - if (isTouched) { - s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - touchStartTime = Date.now(); - } - return; - } - if (isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(formElements)) { - isMoved = true; - s.allowClick = false; - return; - } - } - if (allowTouchCallbacks) { - s.emit('onTouchMove', s, e); - } - if (e.targetTouches && e.targetTouches.length > 1) return; - - s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (typeof isScrolling === 'undefined') { - var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI; - isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle); - } - if (isScrolling) { - s.emit('onTouchMoveOpposite', s, e); - } - if (typeof startMoving === 'undefined' && s.browser.ieTouch) { - if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) { - startMoving = true; - } - } - if (!isTouched) return; - if (isScrolling) { - isTouched = false; - return; - } - if (!startMoving && s.browser.ieTouch) { - return; - } - s.allowClick = false; - s.emit('onSliderMove', s, e); - e.preventDefault(); - if (s.params.touchMoveStopPropagation && !s.params.nested) { - e.stopPropagation(); - } - - if (!isMoved) { - if (params.loop) { - s.fixLoop(); - } - startTranslate = s.getWrapperTranslate(); - s.setWrapperTransition(0); - if (s.animating) { - s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd'); - } - if (s.params.autoplay && s.autoplaying) { - if (s.params.autoplayDisableOnInteraction) { - s.stopAutoplay(); - } - else { - s.pauseAutoplay(); - } - } - allowMomentumBounce = false; - //Grab Cursor - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grabbing'; - s.container[0].style.cursor = '-moz-grabbin'; - s.container[0].style.cursor = 'grabbing'; - } - } - isMoved = true; - - var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - - diff = diff * s.params.touchRatio; - if (s.rtl) diff = -diff; - - s.swipeDirection = diff > 0 ? 'prev' : 'next'; - currentTranslate = diff + startTranslate; - - var disableParentSwiper = true; - if ((diff > 0 && currentTranslate > s.minTranslate())) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio); - } - else if (diff < 0 && currentTranslate < s.maxTranslate()) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio); - } - - if (disableParentSwiper) { - e.preventedByNestedSwiper = true; - } - - // Directions locks - if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) { - currentTranslate = startTranslate; - } - if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) { - currentTranslate = startTranslate; - } - - if (!s.params.followFinger) return; - - // Threshold - if (s.params.threshold > 0) { - if (Math.abs(diff) > s.params.threshold || allowThresholdMove) { - if (!allowThresholdMove) { - allowThresholdMove = true; - s.touches.startX = s.touches.currentX; - s.touches.startY = s.touches.currentY; - currentTranslate = startTranslate; - s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - return; - } - } - else { - currentTranslate = startTranslate; - return; - } - } - // Update active index in free mode - if (s.params.freeMode || s.params.watchSlidesProgress) { - s.updateActiveIndex(); - } - if (s.params.freeMode) { - //Velocity - if (velocities.length === 0) { - velocities.push({ - position: s.touches[s.isHorizontal() ? 'startX' : 'startY'], - time: touchStartTime - }); - } - velocities.push({ - position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'], - time: (new window.Date()).getTime() - }); - } - // Update progress - s.updateProgress(currentTranslate); - // Update translate - s.setWrapperTranslate(currentTranslate); - }; - s.onTouchEnd = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (allowTouchCallbacks) { - s.emit('onTouchEnd', s, e); - } - allowTouchCallbacks = false; - if (!isTouched) return; - //Return Grab Cursor - if (s.params.grabCursor && isMoved && isTouched) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - - // Time diff - var touchEndTime = Date.now(); - var timeDiff = touchEndTime - touchStartTime; - - // Tap, doubleTap, Click - if (s.allowClick) { - s.updateClickedSlide(e); - s.emit('onTap', s, e); - if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) { - if (clickTimeout) clearTimeout(clickTimeout); - clickTimeout = setTimeout(function () { - if (!s) return; - if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) { - s.paginationContainer.toggleClass(s.params.paginationHiddenClass); - } - s.emit('onClick', s, e); - }, 300); - - } - if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) { - if (clickTimeout) clearTimeout(clickTimeout); - s.emit('onDoubleTap', s, e); - } - } - - lastClickTime = Date.now(); - setTimeout(function () { - if (s) s.allowClick = true; - }, 0); - - if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) { - isTouched = isMoved = false; - return; - } - isTouched = isMoved = false; - - var currentPos; - if (s.params.followFinger) { - currentPos = s.rtl ? s.translate : -s.translate; - } - else { - currentPos = -currentTranslate; - } - if (s.params.freeMode) { - if (currentPos < -s.minTranslate()) { - s.slideTo(s.activeIndex); - return; - } - else if (currentPos > -s.maxTranslate()) { - if (s.slides.length < s.snapGrid.length) { - s.slideTo(s.snapGrid.length - 1); - } - else { - s.slideTo(s.slides.length - 1); - } - return; - } - - if (s.params.freeModeMomentum) { - if (velocities.length > 1) { - var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop(); - - var distance = lastMoveEvent.position - velocityEvent.position; - var time = lastMoveEvent.time - velocityEvent.time; - s.velocity = distance / time; - s.velocity = s.velocity / 2; - if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) { - s.velocity = 0; - } - // this implies that the user stopped moving a finger then released. - // There would be no events with distance zero, so the last event is stale. - if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) { - s.velocity = 0; - } - } else { - s.velocity = 0; - } - - velocities.length = 0; - var momentumDuration = 1000 * s.params.freeModeMomentumRatio; - var momentumDistance = s.velocity * momentumDuration; - - var newPosition = s.translate + momentumDistance; - if (s.rtl) newPosition = - newPosition; - var doBounce = false; - var afterBouncePosition; - var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio; - if (newPosition < s.maxTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition + s.maxTranslate() < -bounceAmount) { - newPosition = s.maxTranslate() - bounceAmount; - } - afterBouncePosition = s.maxTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.maxTranslate(); - } - } - else if (newPosition > s.minTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition - s.minTranslate() > bounceAmount) { - newPosition = s.minTranslate() + bounceAmount; - } - afterBouncePosition = s.minTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.minTranslate(); - } - } - else if (s.params.freeModeSticky) { - var j = 0, - nextSlide; - for (j = 0; j < s.snapGrid.length; j += 1) { - if (s.snapGrid[j] > -newPosition) { - nextSlide = j; - break; - } - - } - if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') { - newPosition = s.snapGrid[nextSlide]; - } else { - newPosition = s.snapGrid[nextSlide - 1]; - } - if (!s.rtl) newPosition = - newPosition; - } - //Fix duration - if (s.velocity !== 0) { - if (s.rtl) { - momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity); - } - else { - momentumDuration = Math.abs((newPosition - s.translate) / s.velocity); - } - } - else if (s.params.freeModeSticky) { - s.slideReset(); - return; - } - - if (s.params.freeModeMomentumBounce && doBounce) { - s.updateProgress(afterBouncePosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s || !allowMomentumBounce) return; - s.emit('onMomentumBounce', s); - - s.setWrapperTransition(s.params.speed); - s.setWrapperTranslate(afterBouncePosition); - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - }); - } else if (s.velocity) { - s.updateProgress(newPosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - } - - } else { - s.updateProgress(newPosition); - } - - s.updateActiveIndex(); - } - if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) { - s.updateProgress(); - s.updateActiveIndex(); - } - return; - } - - // Find current slide - var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0]; - for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) { - if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') { - if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) { - stopIndex = i; - groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i]; - } - } - else { - if (currentPos >= s.slidesGrid[i]) { - stopIndex = i; - groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2]; - } - } - } - - // Find current slide size - var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize; - - if (timeDiff > s.params.longSwipesMs) { - // Long touches - if (!s.params.longSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - - } - if (s.swipeDirection === 'prev') { - if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - } - } - else { - // Short swipes - if (!s.params.shortSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - s.slideTo(stopIndex + s.params.slidesPerGroup); - - } - if (s.swipeDirection === 'prev') { - s.slideTo(stopIndex); - } - } - }; - /*========================= - Transitions - ===========================*/ - s._slideTo = function (slideIndex, speed) { - return s.slideTo(slideIndex, speed, true, true); - }; - s.slideTo = function (slideIndex, speed, runCallbacks, internal) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (typeof slideIndex === 'undefined') slideIndex = 0; - if (slideIndex < 0) slideIndex = 0; - s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup); - if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1; - - var translate = - s.snapGrid[s.snapIndex]; - // Stop autoplay - if (s.params.autoplay && s.autoplaying) { - if (internal || !s.params.autoplayDisableOnInteraction) { - s.pauseAutoplay(speed); - } - else { - s.stopAutoplay(); - } - } - // Update progress - s.updateProgress(translate); - - // Normalize slideIndex - for (var i = 0; i < s.slidesGrid.length; i++) { - if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) { - slideIndex = i; - } - } - - // Directions locks - if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) { - return false; - } - if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) { - if ((s.activeIndex || 0) !== slideIndex ) return false; - } - - // Update Index - if (typeof speed === 'undefined') speed = s.params.speed; - s.previousIndex = s.activeIndex || 0; - s.activeIndex = slideIndex; - - if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) { - // Update Height - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - s.updateClasses(); - if (s.params.effect !== 'slide') { - s.setWrapperTranslate(translate); - } - return false; - } - s.updateClasses(); - s.onTransitionStart(runCallbacks); - - if (speed === 0) { - s.setWrapperTranslate(translate); - s.setWrapperTransition(0); - s.onTransitionEnd(runCallbacks); - } - else { - s.setWrapperTranslate(translate); - s.setWrapperTransition(speed); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(runCallbacks); - }); - } - - } - - return true; - }; - - s.onTransitionStart = function (runCallbacks) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - if (s.lazy) s.lazy.onTransitionStart(); - if (runCallbacks) { - s.emit('onTransitionStart', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeStart', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextStart', s); - } - else { - s.emit('onSlidePrevStart', s); - } - } - - } - }; - s.onTransitionEnd = function (runCallbacks) { - s.animating = false; - s.setWrapperTransition(0); - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.lazy) s.lazy.onTransitionEnd(); - if (runCallbacks) { - s.emit('onTransitionEnd', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeEnd', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextEnd', s); - } - else { - s.emit('onSlidePrevEnd', s); - } - } - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.setHash(); - } - - }; - s.slideNext = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - }; - s._slideNext = function (speed) { - return s.slideNext(true, speed, true); - }; - s.slidePrev = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - }; - s._slidePrev = function (speed) { - return s.slidePrev(true, speed, true); - }; - s.slideReset = function (runCallbacks, speed, internal) { - return s.slideTo(s.activeIndex, speed, runCallbacks); - }; - - /*========================= - Translate/transition helpers - ===========================*/ - s.setWrapperTransition = function (duration, byController) { - s.wrapper.transition(duration); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTransition(duration); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTransition(duration); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTransition(duration); - } - if (s.params.control && s.controller) { - s.controller.setTransition(duration, byController); - } - s.emit('onSetTransition', s, duration); - }; - s.setWrapperTranslate = function (translate, updateActiveIndex, byController) { - var x = 0, y = 0, z = 0; - if (s.isHorizontal()) { - x = s.rtl ? -translate : translate; - } - else { - y = translate; - } - - if (s.params.roundLengths) { - x = round(x); - y = round(y); - } - - if (!s.params.virtualTranslate) { - if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'); - else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)'); - } - - s.translate = s.isHorizontal() ? x : y; - - // Check if we need to update progress - var progress; - var translatesDiff = s.maxTranslate() - s.minTranslate(); - if (translatesDiff === 0) { - progress = 0; - } - else { - progress = (translate - s.minTranslate()) / (translatesDiff); - } - if (progress !== s.progress) { - s.updateProgress(translate); - } - - if (updateActiveIndex) s.updateActiveIndex(); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTranslate(s.translate); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTranslate(s.translate); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTranslate(s.translate); - } - if (s.params.control && s.controller) { - s.controller.setTranslate(s.translate, byController); - } - s.emit('onSetTranslate', s, s.translate); - }; - - s.getTranslate = function (el, axis) { - var matrix, curTransform, curStyle, transformMatrix; - - // automatic axis detection - if (typeof axis === 'undefined') { - axis = 'x'; - } - - if (s.params.virtualTranslate) { - return s.rtl ? -s.translate : s.translate; - } - - curStyle = window.getComputedStyle(el, null); - if (window.WebKitCSSMatrix) { - curTransform = curStyle.transform || curStyle.webkitTransform; - if (curTransform.split(',').length > 6) { - curTransform = curTransform.split(', ').map(function(a){ - return a.replace(',','.'); - }).join(', '); - } - // Some old versions of Webkit choke when 'none' is passed; pass - // empty string instead in this case - transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); - } - else { - transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); - matrix = transformMatrix.toString().split(','); - } - - if (axis === 'x') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m41; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[12]); - //Normal Browsers - else - curTransform = parseFloat(matrix[4]); - } - if (axis === 'y') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m42; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[13]); - //Normal Browsers - else - curTransform = parseFloat(matrix[5]); - } - if (s.rtl && curTransform) curTransform = -curTransform; - return curTransform || 0; - }; - s.getWrapperTranslate = function (axis) { - if (typeof axis === 'undefined') { - axis = s.isHorizontal() ? 'x' : 'y'; - } - return s.getTranslate(s.wrapper[0], axis); - }; - - /*========================= - Observer - ===========================*/ - s.observers = []; - function initObserver(target, options) { - options = options || {}; - // create an observer instance - var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; - var observer = new ObserverFunc(function (mutations) { - mutations.forEach(function (mutation) { - s.onResize(true); - s.emit('onObserverUpdate', s, mutation); - }); - }); - - observer.observe(target, { - attributes: typeof options.attributes === 'undefined' ? true : options.attributes, - childList: typeof options.childList === 'undefined' ? true : options.childList, - characterData: typeof options.characterData === 'undefined' ? true : options.characterData - }); - - s.observers.push(observer); - } - s.initObservers = function () { - if (s.params.observeParents) { - var containerParents = s.container.parents(); - for (var i = 0; i < containerParents.length; i++) { - initObserver(containerParents[i]); - } - } - - // Observe container - initObserver(s.container[0], {childList: false}); - - // Observe wrapper - initObserver(s.wrapper[0], {attributes: false}); - }; - s.disconnectObservers = function () { - for (var i = 0; i < s.observers.length; i++) { - s.observers[i].disconnect(); - } - s.observers = []; - }; - /*========================= - Loop - ===========================*/ - // Create looped slides - s.createLoop = function () { - // Remove duplicated slides - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - - var slides = s.wrapper.children('.' + s.params.slideClass); - - if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length; - - s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10); - s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides; - if (s.loopedSlides > slides.length) { - s.loopedSlides = slides.length; - } - - var prependSlides = [], appendSlides = [], i; - slides.each(function (index, el) { - var slide = $(this); - if (index < s.loopedSlides) appendSlides.push(el); - if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el); - slide.attr('data-swiper-slide-index', index); - }); - for (i = 0; i < appendSlides.length; i++) { - s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - for (i = prependSlides.length - 1; i >= 0; i--) { - s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - }; - s.destroyLoop = function () { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - s.slides.removeAttr('data-swiper-slide-index'); - }; - s.reLoop = function (updatePosition) { - var oldIndex = s.activeIndex - s.loopedSlides; - s.destroyLoop(); - s.createLoop(); - s.updateSlidesSize(); - if (updatePosition) { - s.slideTo(oldIndex + s.loopedSlides, 0, false); - } - - }; - s.fixLoop = function () { - var newIndex; - //Fix For Negative Oversliding - if (s.activeIndex < s.loopedSlides) { - newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - //Fix For Positive Oversliding - else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) { - newIndex = -s.slides.length + s.activeIndex + s.loopedSlides; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - }; - /*========================= - Append/Prepend/Remove Slides - ===========================*/ - s.appendSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.append(slides[i]); - } - } - else { - s.wrapper.append(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - }; - s.prependSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - var newActiveIndex = s.activeIndex + 1; - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.prepend(slides[i]); - } - newActiveIndex = s.activeIndex + slides.length; - } - else { - s.wrapper.prepend(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - s.slideTo(newActiveIndex, 0, false); - }; - s.removeSlide = function (slidesIndexes) { - if (s.params.loop) { - s.destroyLoop(); - s.slides = s.wrapper.children('.' + s.params.slideClass); - } - var newActiveIndex = s.activeIndex, - indexToRemove; - if (typeof slidesIndexes === 'object' && slidesIndexes.length) { - for (var i = 0; i < slidesIndexes.length; i++) { - indexToRemove = slidesIndexes[i]; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - } - newActiveIndex = Math.max(newActiveIndex, 0); - } - else { - indexToRemove = slidesIndexes; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (s.params.loop) { - s.createLoop(); - } - - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - if (s.params.loop) { - s.slideTo(newActiveIndex + s.loopedSlides, 0, false); - } - else { - s.slideTo(newActiveIndex, 0, false); - } - - }; - s.removeAllSlides = function () { - var slidesIndexes = []; - for (var i = 0; i < s.slides.length; i++) { - slidesIndexes.push(i); - } - s.removeSlide(slidesIndexes); - }; - - - /*========================= - Effects - ===========================*/ - s.effects = { - fade: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var offset = slide[0].swiperSlideOffset; - var tx = -offset; - if (!s.params.virtualTranslate) tx = tx - s.translate; - var ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - var slideOpacity = s.params.fade.crossFade ? - Math.max(1 - Math.abs(slide[0].progress), 0) : - 1 + Math.min(Math.max(slide[0].progress, -1), 0); - slide - .css({ - opacity: slideOpacity - }) - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)'); - - } - - }, - setTransition: function (duration) { - s.slides.transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - flip: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var progress = slide[0].progress; - if (s.params.flip.limitRotation) { - progress = Math.max(Math.min(slide[0].progress, 1), -1); - } - var offset = slide[0].swiperSlideOffset; - var rotate = -180 * progress, - rotateY = rotate, - rotateX = 0, - tx = -offset, - ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - rotateX = -rotateY; - rotateY = 0; - } - else if (s.rtl) { - rotateY = -rotateY; - } - - slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length; - - if (s.params.flip.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - slide - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'); - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.eq(s.activeIndex).transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - if (!$(this).hasClass(s.params.slideActiveClass)) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - cube: { - setTranslate: function () { - var wrapperRotate = 0, cubeShadow; - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow = s.wrapper.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.wrapper.append(cubeShadow); - } - cubeShadow.css({height: s.width + 'px'}); - } - else { - cubeShadow = s.container.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.container.append(cubeShadow); - } - } - } - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var slideAngle = i * 90; - var round = Math.floor(slideAngle / 360); - if (s.rtl) { - slideAngle = -slideAngle; - round = Math.floor(-slideAngle / 360); - } - var progress = Math.max(Math.min(slide[0].progress, 1), -1); - var tx = 0, ty = 0, tz = 0; - if (i % 4 === 0) { - tx = - round * 4 * s.size; - tz = 0; - } - else if ((i - 1) % 4 === 0) { - tx = 0; - tz = - round * 4 * s.size; - } - else if ((i - 2) % 4 === 0) { - tx = s.size + round * 4 * s.size; - tz = s.size; - } - else if ((i - 3) % 4 === 0) { - tx = - s.size; - tz = 3 * s.size + s.size * 4 * round; - } - if (s.rtl) { - tx = -tx; - } - - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - - var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)'; - if (progress <= 1 && progress > -1) { - wrapperRotate = i * 90 + progress * 90; - if (s.rtl) wrapperRotate = -i * 90 - progress * 90; - } - slide.transform(transform); - if (s.params.cube.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - s.wrapper.css({ - '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - 'transform-origin': '50% 50% -' + (s.size / 2) + 'px' - }); - - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')'); - } - else { - var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; - var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); - var scale1 = s.params.cube.shadowScale, - scale2 = s.params.cube.shadowScale / multiplier, - offset = s.params.cube.shadowOffset; - cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)'); - } - } - var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0; - s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)'); - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.cube.shadow && !s.isHorizontal()) { - s.container.find('.swiper-cube-shadow').transition(duration); - } - } - }, - coverflow: { - setTranslate: function () { - var transform = s.translate; - var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2; - var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate; - var translate = s.params.coverflow.depth; - //Each slide offset from center - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideSize = s.slidesSizesGrid[i]; - var slideOffset = slide[0].swiperSlideOffset; - var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier; - - var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0; - var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier; - // var rotateZ = 0 - var translateZ = -translate * Math.abs(offsetMultiplier); - - var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier); - var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0; - - //Fix for ultra small values - if (Math.abs(translateX) < 0.001) translateX = 0; - if (Math.abs(translateY) < 0.001) translateY = 0; - if (Math.abs(translateZ) < 0.001) translateZ = 0; - if (Math.abs(rotateY) < 0.001) rotateY = 0; - if (Math.abs(rotateX) < 0.001) rotateX = 0; - - var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'; - - slide.transform(slideTransform); - slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - if (s.params.coverflow.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; - } - } - - //Set correct perspective for IE10 - if (s.browser.ie) { - var ws = s.wrapper[0].style; - ws.perspectiveOrigin = center + 'px 50%'; - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - } - } - }; - - /*========================= - Images Lazy Loading - ===========================*/ - s.lazy = { - initialImageLoaded: false, - loadImageInSlide: function (index, loadInDuplicate) { - if (typeof index === 'undefined') return; - if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true; - if (s.slides.length === 0) return; - - var slide = s.slides.eq(index); - var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)'); - if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) { - img = img.add(slide[0]); - } - if (img.length === 0) return; - - img.each(function () { - var _img = $(this); - _img.addClass('swiper-lazy-loading'); - var background = _img.attr('data-background'); - var src = _img.attr('data-src'), - srcset = _img.attr('data-srcset'); - s.loadImage(_img[0], (src || background), srcset, false, function () { - if (background) { - _img.css('background-image', 'url("' + background + '")'); - _img.removeAttr('data-background'); - } - else { - if (srcset) { - _img.attr('srcset', srcset); - _img.removeAttr('data-srcset'); - } - if (src) { - _img.attr('src', src); - _img.removeAttr('data-src'); - } - - } - - _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading'); - slide.find('.swiper-lazy-preloader, .preloader').remove(); - if (s.params.loop && loadInDuplicate) { - var slideOriginalIndex = slide.attr('data-swiper-slide-index'); - if (slide.hasClass(s.params.slideDuplicateClass)) { - var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')'); - s.lazy.loadImageInSlide(originalSlide.index(), false); - } - else { - var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]'); - s.lazy.loadImageInSlide(duplicatedSlide.index(), false); - } - } - s.emit('onLazyImageReady', s, slide[0], _img[0]); - }); - - s.emit('onLazyImageLoad', s, slide[0], _img[0]); - }); - - }, - load: function () { - var i; - if (s.params.watchSlidesVisibility) { - s.wrapper.children('.' + s.params.slideVisibleClass).each(function () { - s.lazy.loadImageInSlide($(this).index()); - }); - } - else { - if (s.params.slidesPerView > 1) { - for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - s.lazy.loadImageInSlide(s.activeIndex); - } - } - if (s.params.lazyLoadingInPrevNext) { - if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) { - var amount = s.params.lazyLoadingInPrevNextAmount; - var spv = s.params.slidesPerView; - var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length); - var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0); - // Next Slides - for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - // Prev Slides - for (i = minIndex; i < s.activeIndex ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - var nextSlide = s.wrapper.children('.' + s.params.slideNextClass); - if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index()); - - var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass); - if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index()); - } - } - }, - onTransitionStart: function () { - if (s.params.lazyLoading) { - if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) { - s.lazy.load(); - } - } - }, - onTransitionEnd: function () { - if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) { - s.lazy.load(); - } - } - }; - - - /*========================= - Scrollbar - ===========================*/ - s.scrollbar = { - isTouched: false, - setDragPosition: function (e) { - var sb = s.scrollbar; - var x = 0, y = 0; - var translate; - var pointerPosition = s.isHorizontal() ? - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) : - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ; - var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2; - var positionMin = -s.minTranslate() * sb.moveDivider; - var positionMax = -s.maxTranslate() * sb.moveDivider; - if (position < positionMin) { - position = positionMin; - } - else if (position > positionMax) { - position = positionMax; - } - position = -position / sb.moveDivider; - s.updateProgress(position); - s.setWrapperTranslate(position, true); - }, - dragStart: function (e) { - var sb = s.scrollbar; - sb.isTouched = true; - e.preventDefault(); - e.stopPropagation(); - - sb.setDragPosition(e); - clearTimeout(sb.dragTimeout); - - sb.track.transition(0); - if (s.params.scrollbarHide) { - sb.track.css('opacity', 1); - } - s.wrapper.transition(100); - sb.drag.transition(100); - s.emit('onScrollbarDragStart', s); - }, - dragMove: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - sb.setDragPosition(e); - s.wrapper.transition(0); - sb.track.transition(0); - sb.drag.transition(0); - s.emit('onScrollbarDragMove', s); - }, - dragEnd: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - sb.isTouched = false; - if (s.params.scrollbarHide) { - clearTimeout(sb.dragTimeout); - sb.dragTimeout = setTimeout(function () { - sb.track.css('opacity', 0); - sb.track.transition(400); - }, 1000); - - } - s.emit('onScrollbarDragEnd', s); - if (s.params.scrollbarSnapOnRelease) { - s.slideReset(); - } - }, - enableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).on(s.touchEvents.start, sb.dragStart); - $(target).on(s.touchEvents.move, sb.dragMove); - $(target).on(s.touchEvents.end, sb.dragEnd); - }, - disableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).off(s.touchEvents.start, sb.dragStart); - $(target).off(s.touchEvents.move, sb.dragMove); - $(target).off(s.touchEvents.end, sb.dragEnd); - }, - set: function () { - if (!s.params.scrollbar) return; - var sb = s.scrollbar; - sb.track = $(s.params.scrollbar); - if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) { - sb.track = s.container.find(s.params.scrollbar); - } - sb.drag = sb.track.find('.swiper-scrollbar-drag'); - if (sb.drag.length === 0) { - sb.drag = $('
'); - sb.track.append(sb.drag); - } - sb.drag[0].style.width = ''; - sb.drag[0].style.height = ''; - sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight; - - sb.divider = s.size / s.virtualSize; - sb.moveDivider = sb.divider * (sb.trackSize / s.size); - sb.dragSize = sb.trackSize * sb.divider; - - if (s.isHorizontal()) { - sb.drag[0].style.width = sb.dragSize + 'px'; - } - else { - sb.drag[0].style.height = sb.dragSize + 'px'; - } - - if (sb.divider >= 1) { - sb.track[0].style.display = 'none'; - } - else { - sb.track[0].style.display = ''; - } - if (s.params.scrollbarHide) { - sb.track[0].style.opacity = 0; - } - }, - setTranslate: function () { - if (!s.params.scrollbar) return; - var diff; - var sb = s.scrollbar; - var translate = s.translate || 0; - var newPos; - - var newSize = sb.dragSize; - newPos = (sb.trackSize - sb.dragSize) * s.progress; - if (s.rtl && s.isHorizontal()) { - newPos = -newPos; - if (newPos > 0) { - newSize = sb.dragSize - newPos; - newPos = 0; - } - else if (-newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize + newPos; - } - } - else { - if (newPos < 0) { - newSize = sb.dragSize + newPos; - newPos = 0; - } - else if (newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize - newPos; - } - } - if (s.isHorizontal()) { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)'); - } - else { - sb.drag.transform('translateX(' + (newPos) + 'px)'); - } - sb.drag[0].style.width = newSize + 'px'; - } - else { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)'); - } - else { - sb.drag.transform('translateY(' + (newPos) + 'px)'); - } - sb.drag[0].style.height = newSize + 'px'; - } - if (s.params.scrollbarHide) { - clearTimeout(sb.timeout); - sb.track[0].style.opacity = 1; - sb.timeout = setTimeout(function () { - sb.track[0].style.opacity = 0; - sb.track.transition(400); - }, 1000); - } - }, - setTransition: function (duration) { - if (!s.params.scrollbar) return; - s.scrollbar.drag.transition(duration); - } - }; - - /*========================= - Controller - ===========================*/ - s.controller = { - LinearSpline: function (x, y) { - this.x = x; - this.y = y; - this.lastIndex = x.length - 1; - // Given an x value (x2), return the expected y2 value: - // (x1,y1) is the known point before given value, - // (x3,y3) is the known point after given value. - var i1, i3; - var l = this.x.length; - - this.interpolate = function (x2) { - if (!x2) return 0; - - // Get the indexes of x1 and x3 (the array indexes before and after given x2): - i3 = binarySearch(this.x, x2); - i1 = i3 - 1; - - // We have our indexes i1 & i3, so we can calculate already: - // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 - return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]; - }; - - var binarySearch = (function() { - var maxIndex, minIndex, guess; - return function(array, val) { - minIndex = -1; - maxIndex = array.length; - while (maxIndex - minIndex > 1) - if (array[guess = maxIndex + minIndex >> 1] <= val) { - minIndex = guess; - } else { - maxIndex = guess; - } - return maxIndex; - }; - })(); - }, - //xxx: for now i will just save one spline function to to - getInterpolateFunction: function(c){ - if(!s.controller.spline) s.controller.spline = s.params.loop ? - new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) : - new s.controller.LinearSpline(s.snapGrid, c.snapGrid); - }, - setTranslate: function (translate, byController) { - var controlled = s.params.control; - var multiplier, controlledTranslate; - function setControlledTranslate(c) { - // this will create an Interpolate function based on the snapGrids - // x is the Grid of the scrolled scroller and y will be the controlled scroller - // it makes sense to create this only once and recall it for the interpolation - // the function does a lot of value caching for performance - translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate; - if (s.params.controlBy === 'slide') { - s.controller.getInterpolateFunction(c); - // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid - // but it did not work out - controlledTranslate = -s.controller.spline.interpolate(-translate); - } - - if(!controlledTranslate || s.params.controlBy === 'container'){ - multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate()); - controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate(); - } - - if (s.params.controlInverse) { - controlledTranslate = c.maxTranslate() - controlledTranslate; - } - c.updateProgress(controlledTranslate); - c.setWrapperTranslate(controlledTranslate, false, s); - c.updateActiveIndex(); - } - if (s.isArray(controlled)) { - for (var i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTranslate(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - - setControlledTranslate(controlled); - } - }, - setTransition: function (duration, byController) { - var controlled = s.params.control; - var i; - function setControlledTransition(c) { - c.setWrapperTransition(duration, s); - if (duration !== 0) { - c.onTransitionStart(); - c.wrapper.transitionEnd(function(){ - if (!controlled) return; - if (c.params.loop && s.params.controlBy === 'slide') { - c.fixLoop(); - } - c.onTransitionEnd(); - - }); - } - } - if (s.isArray(controlled)) { - for (i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTransition(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - setControlledTransition(controlled); - } - } - }; - - /*========================= - Hash Navigation - ===========================*/ - s.hashnav = { - init: function () { - if (!s.params.hashnav) return; - s.hashnav.initialized = true; - var hash = document.location.hash.replace('#', ''); - if (!hash) return; - var speed = 0; - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHash = slide.attr('data-hash'); - if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, s.params.runCallbacksOnInit, true); - } - } - }, - setHash: function () { - if (!s.hashnav.initialized || !s.params.hashnav) return; - document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || ''; - } - }; - - /*========================= - Keyboard Control - ===========================*/ - function handleKeyboard(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var kc = e.keyCode || e.charCode; - // Directions locks - if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) { - return false; - } - if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) { - return false; - } - if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { - return; - } - if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { - return; - } - if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { - var inView = false; - //Check that swiper should be inside of visible area of window - if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) { - return; - } - var windowScroll = { - left: window.pageXOffset, - top: window.pageYOffset - }; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var swiperOffset = s.container.offset(); - if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft; - var swiperCoord = [ - [swiperOffset.left, swiperOffset.top], - [swiperOffset.left + s.width, swiperOffset.top], - [swiperOffset.left, swiperOffset.top + s.height], - [swiperOffset.left + s.width, swiperOffset.top + s.height] - ]; - for (var i = 0; i < swiperCoord.length; i++) { - var point = swiperCoord[i]; - if ( - point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && - point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight - ) { - inView = true; - } - - } - if (!inView) return; - } - if (s.isHorizontal()) { - if (kc === 37 || kc === 39) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext(); - if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev(); - } - else { - if (kc === 38 || kc === 40) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if (kc === 40) s.slideNext(); - if (kc === 38) s.slidePrev(); - } - } - s.disableKeyboardControl = function () { - s.params.keyboardControl = false; - $(document).off('keydown', handleKeyboard); - }; - s.enableKeyboardControl = function () { - s.params.keyboardControl = true; - $(document).on('keydown', handleKeyboard); - }; - - - /*========================= - Mousewheel Control - ===========================*/ - s.mousewheel = { - event: false, - lastScrollTime: (new window.Date()).getTime() - }; - if (s.params.mousewheelControl) { - try { - new window.WheelEvent('wheel'); - s.mousewheel.event = 'wheel'; - } catch (e) { - if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) { - s.mousewheel.event = 'wheel'; - } - } - if (!s.mousewheel.event && window.WheelEvent) { - - } - if (!s.mousewheel.event && document.onmousewheel !== undefined) { - s.mousewheel.event = 'mousewheel'; - } - if (!s.mousewheel.event) { - s.mousewheel.event = 'DOMMouseScroll'; - } - } - function handleMousewheel(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var we = s.mousewheel.event; - var delta = 0; - var rtlFactor = s.rtl ? -1 : 1; - - //WebKits - if (we === 'mousewheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY; - else return; - } - } - else { - delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY; - } - } - //Old FireFox - else if (we === 'DOMMouseScroll') delta = -e.detail; - //New FireFox - else if (we === 'wheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY; - else return; - } - } - else { - delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY; - } - } - if (delta === 0) return; - - if (s.params.mousewheelInvert) delta = -delta; - - if (!s.params.freeMode) { - if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) { - if (delta < 0) { - if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - else { - if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - } - s.mousewheel.lastScrollTime = (new window.Date()).getTime(); - - } - else { - //Freemode or scrollContainer: - var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity; - var wasBeginning = s.isBeginning, - wasEnd = s.isEnd; - - if (position >= s.minTranslate()) position = s.minTranslate(); - if (position <= s.maxTranslate()) position = s.maxTranslate(); - - s.setWrapperTransition(0); - s.setWrapperTranslate(position); - s.updateProgress(); - s.updateActiveIndex(); - - if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) { - s.updateClasses(); - } - - if (s.params.freeModeSticky) { - clearTimeout(s.mousewheel.timeout); - s.mousewheel.timeout = setTimeout(function () { - s.slideReset(); - }, 300); - } - else { - if (s.params.lazyLoading && s.lazy) { - s.lazy.load(); - } - } - - // Return page scroll on edge positions - if (position === 0 || position === s.maxTranslate()) return; - } - if (s.params.autoplay) s.stopAutoplay(); - - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - return false; - } - s.disableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.off(s.mousewheel.event, handleMousewheel); - return true; - }; - - s.enableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.on(s.mousewheel.event, handleMousewheel); - return true; - }; - - - /*========================= - Parallax - ===========================*/ - function setParallaxTransform(el, progress) { - el = $(el); - var p, pX, pY; - var rtlFactor = s.rtl ? -1 : 1; - - p = el.attr('data-swiper-parallax') || '0'; - pX = el.attr('data-swiper-parallax-x'); - pY = el.attr('data-swiper-parallax-y'); - if (pX || pY) { - pX = pX || '0'; - pY = pY || '0'; - } - else { - if (s.isHorizontal()) { - pX = p; - pY = '0'; - } - else { - pY = p; - pX = '0'; - } - } - - if ((pX).indexOf('%') >= 0) { - pX = parseInt(pX, 10) * progress * rtlFactor + '%'; - } - else { - pX = pX * progress * rtlFactor + 'px' ; - } - if ((pY).indexOf('%') >= 0) { - pY = parseInt(pY, 10) * progress + '%'; - } - else { - pY = pY * progress + 'px' ; - } - - el.transform('translate3d(' + pX + ', ' + pY + ',0px)'); - } - s.parallax = { - setTranslate: function () { - s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - setParallaxTransform(this, s.progress); - - }); - s.slides.each(function () { - var slide = $(this); - slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () { - var progress = Math.min(Math.max(slide[0].progress, -1), 1); - setParallaxTransform(this, progress); - }); - }); - }, - setTransition: function (duration) { - if (typeof duration === 'undefined') duration = s.params.speed; - s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - var el = $(this); - var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - el.transition(parallaxDuration); - }); - } - }; - - - /*========================= - Plugins API. Collect all and init all plugins - ===========================*/ - s._plugins = []; - for (var plugin in s.plugins) { - var p = s.plugins[plugin](s, s.params[plugin]); - if (p) s._plugins.push(p); - } - // Method to call all plugins event/method - s.callPlugins = function (eventName) { - for (var i = 0; i < s._plugins.length; i++) { - if (eventName in s._plugins[i]) { - s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - }; - - /*========================= - Events/Callbacks/Plugins Emitter - ===========================*/ - function normalizeEventName (eventName) { - if (eventName.indexOf('on') !== 0) { - if (eventName[0] !== eventName[0].toUpperCase()) { - eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); - } - else { - eventName = 'on' + eventName; - } - } - return eventName; - } - s.emitterEventListeners = { - - }; - s.emit = function (eventName) { - // Trigger callbacks - if (s.params[eventName]) { - s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - var i; - // Trigger events - if (s.emitterEventListeners[eventName]) { - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - // Trigger plugins - if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - }; - s.on = function (eventName, handler) { - eventName = normalizeEventName(eventName); - if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; - s.emitterEventListeners[eventName].push(handler); - return s; - }; - s.off = function (eventName, handler) { - var i; - eventName = normalizeEventName(eventName); - if (typeof handler === 'undefined') { - // Remove all handlers for such event - s.emitterEventListeners[eventName] = []; - return s; - } - if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); - } - return s; - }; - s.once = function (eventName, handler) { - eventName = normalizeEventName(eventName); - var _handler = function () { - handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - s.off(eventName, _handler); - }; - s.on(eventName, _handler); - return s; - }; - - // Accessibility tools - s.a11y = { - makeFocusable: function ($el) { - $el.attr('tabIndex', '0'); - return $el; - }, - addRole: function ($el, role) { - $el.attr('role', role); - return $el; - }, - - addLabel: function ($el, label) { - $el.attr('aria-label', label); - return $el; - }, - - disable: function ($el) { - $el.attr('aria-disabled', true); - return $el; - }, - - enable: function ($el) { - $el.attr('aria-disabled', false); - return $el; - }, - - onEnterKey: function (event) { - if (event.keyCode !== 13) return; - if ($(event.target).is(s.params.nextButton)) { - s.onClickNext(event); - if (s.isEnd) { - s.a11y.notify(s.params.lastSlideMessage); - } - else { - s.a11y.notify(s.params.nextSlideMessage); - } - } - else if ($(event.target).is(s.params.prevButton)) { - s.onClickPrev(event); - if (s.isBeginning) { - s.a11y.notify(s.params.firstSlideMessage); - } - else { - s.a11y.notify(s.params.prevSlideMessage); - } - } - if ($(event.target).is('.' + s.params.bulletClass)) { - $(event.target)[0].click(); - } - }, - - liveRegion: $(''), - - notify: function (message) { - var notification = s.a11y.liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(message); - }, - init: function () { - // Setup accessibility - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.a11y.makeFocusable(s.nextButton); - s.a11y.addRole(s.nextButton, 'button'); - s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.a11y.makeFocusable(s.prevButton); - s.a11y.addRole(s.prevButton, 'button'); - s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage); - } - - $(s.container).append(s.a11y.liveRegion); - }, - initPagination: function () { - if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) { - s.bullets.each(function () { - var bullet = $(this); - s.a11y.makeFocusable(bullet); - s.a11y.addRole(bullet, 'button'); - s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1)); - }); - } - }, - destroy: function () { - if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove(); - } - }; - - - /*========================= - Init/Destroy - ===========================*/ - s.init = function () { - if (s.params.loop) s.createLoop(); - s.updateContainerSize(); - s.updateSlidesSize(); - s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - if (s.params.scrollbarDraggable) { - s.scrollbar.enableDraggable(); - } - } - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - if (!s.params.loop) s.updateProgress(); - s.effects[s.params.effect].setTranslate(); - } - if (s.params.loop) { - s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit); - } - else { - s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit); - if (s.params.initialSlide === 0) { - if (s.parallax && s.params.parallax) s.parallax.setTranslate(); - if (s.lazy && s.params.lazyLoading) { - s.lazy.load(); - s.lazy.initialImageLoaded = true; - } - } - } - s.attachEvents(); - if (s.params.observer && s.support.observer) { - s.initObservers(); - } - if (s.params.preloadImages && !s.params.lazyLoading) { - s.preloadImages(); - } - if (s.params.autoplay) { - s.startAutoplay(); - } - if (s.params.keyboardControl) { - if (s.enableKeyboardControl) s.enableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.enableMousewheelControl) s.enableMousewheelControl(); - } - if (s.params.hashnav) { - if (s.hashnav) s.hashnav.init(); - } - if (s.params.a11y && s.a11y) s.a11y.init(); - s.emit('onInit', s); - }; - - // Cleanup dynamic styles - s.cleanupStyles = function () { - // Container - s.container.removeClass(s.classNames.join(' ')).removeAttr('style'); - - // Wrapper - s.wrapper.removeAttr('style'); - - // Slides - if (s.slides && s.slides.length) { - s.slides - .removeClass([ - s.params.slideVisibleClass, - s.params.slideActiveClass, - s.params.slideNextClass, - s.params.slidePrevClass - ].join(' ')) - .removeAttr('style') - .removeAttr('data-swiper-column') - .removeAttr('data-swiper-row'); - } - - // Pagination/Bullets - if (s.paginationContainer && s.paginationContainer.length) { - s.paginationContainer.removeClass(s.params.paginationHiddenClass); - } - if (s.bullets && s.bullets.length) { - s.bullets.removeClass(s.params.bulletActiveClass); - } - - // Buttons - if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass); - if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass); - - // Scrollbar - if (s.params.scrollbar && s.scrollbar) { - if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style'); - if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style'); - } - }; - - // Destroy - s.destroy = function (deleteInstance, cleanupStyles) { - // Detach evebts - s.detachEvents(); - // Stop autoplay - s.stopAutoplay(); - // Disable draggable - if (s.params.scrollbar && s.scrollbar) { - if (s.params.scrollbarDraggable) { - s.scrollbar.disableDraggable(); - } - } - // Destroy loop - if (s.params.loop) { - s.destroyLoop(); - } - // Cleanup styles - if (cleanupStyles) { - s.cleanupStyles(); - } - // Disconnect observer - s.disconnectObservers(); - // Disable keyboard/mousewheel - if (s.params.keyboardControl) { - if (s.disableKeyboardControl) s.disableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.disableMousewheelControl) s.disableMousewheelControl(); - } - // Disable a11y - if (s.params.a11y && s.a11y) s.a11y.destroy(); - // Destroy callback - s.emit('onDestroy'); - // Delete instance - if (deleteInstance !== false) s = null; - }; - - s.init(); - - - - // Return swiper instance - return s; - }; - - - /*================================================== - Prototype - ====================================================*/ - Swiper.prototype = { - isSafari: (function () { - var ua = navigator.userAgent.toLowerCase(); - return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); - })(), - isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent), - isArray: function (arr) { - return Object.prototype.toString.apply(arr) === '[object Array]'; - }, - /*================================================== - Browser - ====================================================*/ - browser: { - ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled, - ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1) - }, - /*================================================== - Devices - ====================================================*/ - device: (function () { - var ua = navigator.userAgent; - var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); - var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); - var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); - return { - ios: ipad || iphone || ipod, - android: android - }; - })(), - /*================================================== - Feature Detection - ====================================================*/ - support: { - touch : (window.Modernizr && Modernizr.touch === true) || (function () { - return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); - })(), - - transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () { - var div = document.createElement('div').style; - return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); - })(), - - flexbox: (function () { - var div = document.createElement('div').style; - var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); - for (var i = 0; i < styles.length; i++) { - if (styles[i] in div) return true; - } - })(), - - observer: (function () { - return ('MutationObserver' in window || 'WebkitMutationObserver' in window); - })() - }, - /*================================================== - Plugins - ====================================================*/ - plugins: {} - }; - - - /*=========================== - Get jQuery - ===========================*/ - - addLibraryPlugin($); - - var domLib = $; - - /*=========================== - Add .swiper plugin from Dom libraries - ===========================*/ - function addLibraryPlugin(lib) { - lib.fn.swiper = function (params) { - var firstInstance; - lib(this).each(function () { - var s = new Swiper(this, params); - if (!firstInstance) firstInstance = s; - }); - return firstInstance; - }; - } - - if (domLib) { - if (!('transitionEnd' in domLib.fn)) { - domLib.fn.transitionEnd = function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }; - } - if (!('transform' in domLib.fn)) { - domLib.fn.transform = function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }; - } - if (!('transition' in domLib.fn)) { - domLib.fn.transition = function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }; - } - } - - return Swiper; -})); -//# sourceMappingURL=maps/swiper.jquery.umd.js.map diff --git a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.umd.min.js b/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.umd.min.js deleted file mode 100644 index 49f9b92c16..0000000000 --- a/dashboard-ui/bower_components/Swiper/dist/js/swiper.jquery.umd.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Swiper 3.3.1 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * - * http://www.idangero.us/swiper/ - * - * Copyright 2016, Vladimir Kharlampidi - * The iDangero.us - * http://www.idangero.us/ - * - * Licensed under MIT - * - * Released on: February 7, 2016 - */ -!function(e,a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):e.Swiper=a(e.jQuery)}(this,function(e){"use strict";function a(e){e.fn.swiper=function(a){var s;return e(this).each(function(){var e=new t(this,a);s||(s=e)}),s}}var t=function(a,s){function r(e){return Math.floor(e)}function i(){y.autoplayTimeoutId=setTimeout(function(){y.params.loop?(y.fixLoop(),y._slideNext(),y.emit("onAutoplay",y)):y.isEnd?s.autoplayStopOnLast?y.stopAutoplay():(y._slideTo(0),y.emit("onAutoplay",y)):(y._slideNext(),y.emit("onAutoplay",y))},y.params.autoplay)}function n(a,t){var s=e(a.target);if(!s.is(t))if("string"==typeof t)s=s.parents(t);else if(t.nodeType){var r;return s.parents().each(function(e,a){a===t&&(r=t)}),r?t:void 0}if(0!==s.length)return s[0]}function o(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMutationObserver,s=new t(function(e){e.forEach(function(e){y.onResize(!0),y.emit("onObserverUpdate",y,e)})});s.observe(e,{attributes:"undefined"==typeof a.attributes?!0:a.attributes,childList:"undefined"==typeof a.childList?!0:a.childList,characterData:"undefined"==typeof a.characterData?!0:a.characterData}),y.observers.push(s)}function l(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.charCode;if(!y.params.allowSwipeToNext&&(y.isHorizontal()&&39===a||!y.isHorizontal()&&40===a))return!1;if(!y.params.allowSwipeToPrev&&(y.isHorizontal()&&37===a||!y.isHorizontal()&&38===a))return!1;if(!(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey||document.activeElement&&document.activeElement.nodeName&&("input"===document.activeElement.nodeName.toLowerCase()||"textarea"===document.activeElement.nodeName.toLowerCase()))){if(37===a||39===a||38===a||40===a){var t=!1;if(y.container.parents(".swiper-slide").length>0&&0===y.container.parents(".swiper-slide-active").length)return;var s={left:window.pageXOffset,top:window.pageYOffset},r=window.innerWidth,i=window.innerHeight,n=y.container.offset();y.rtl&&(n.left=n.left-y.container[0].scrollLeft);for(var o=[[n.left,n.top],[n.left+y.width,n.top],[n.left,n.top+y.height],[n.left+y.width,n.top+y.height]],l=0;l=s.left&&p[0]<=s.left+r&&p[1]>=s.top&&p[1]<=s.top+i&&(t=!0)}if(!t)return}y.isHorizontal()?((37===a||39===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),(39===a&&!y.rtl||37===a&&y.rtl)&&y.slideNext(),(37===a&&!y.rtl||39===a&&y.rtl)&&y.slidePrev()):((38===a||40===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),40===a&&y.slideNext(),38===a&&y.slidePrev())}}function p(e){e.originalEvent&&(e=e.originalEvent);var a=y.mousewheel.event,t=0,s=y.rtl?-1:1;if("mousewheel"===a)if(y.params.mousewheelForceToAxis)if(y.isHorizontal()){if(!(Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)))return;t=e.wheelDeltaX*s}else{if(!(Math.abs(e.wheelDeltaY)>Math.abs(e.wheelDeltaX)))return;t=e.wheelDeltaY}else t=Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)?-e.wheelDeltaX*s:-e.wheelDeltaY;else if("DOMMouseScroll"===a)t=-e.detail;else if("wheel"===a)if(y.params.mousewheelForceToAxis)if(y.isHorizontal()){if(!(Math.abs(e.deltaX)>Math.abs(e.deltaY)))return;t=-e.deltaX*s}else{if(!(Math.abs(e.deltaY)>Math.abs(e.deltaX)))return;t=-e.deltaY}else t=Math.abs(e.deltaX)>Math.abs(e.deltaY)?-e.deltaX*s:-e.deltaY;if(0!==t){if(y.params.mousewheelInvert&&(t=-t),y.params.freeMode){var r=y.getWrapperTranslate()+t*y.params.mousewheelSensitivity,i=y.isBeginning,n=y.isEnd;if(r>=y.minTranslate()&&(r=y.minTranslate()),r<=y.maxTranslate()&&(r=y.maxTranslate()),y.setWrapperTransition(0),y.setWrapperTranslate(r),y.updateProgress(),y.updateActiveIndex(),(!i&&y.isBeginning||!n&&y.isEnd)&&y.updateClasses(),y.params.freeModeSticky?(clearTimeout(y.mousewheel.timeout),y.mousewheel.timeout=setTimeout(function(){y.slideReset()},300)):y.params.lazyLoading&&y.lazy&&y.lazy.load(),0===r||r===y.maxTranslate())return}else{if((new window.Date).getTime()-y.mousewheel.lastScrollTime>60)if(0>t)if(y.isEnd&&!y.params.loop||y.animating){if(y.params.mousewheelReleaseOnEdges)return!0}else y.slideNext();else if(y.isBeginning&&!y.params.loop||y.animating){if(y.params.mousewheelReleaseOnEdges)return!0}else y.slidePrev();y.mousewheel.lastScrollTime=(new window.Date).getTime()}return y.params.autoplay&&y.stopAutoplay(),e.preventDefault?e.preventDefault():e.returnValue=!1,!1}}function d(a,t){a=e(a);var s,r,i,n=y.rtl?-1:1;s=a.attr("data-swiper-parallax")||"0",r=a.attr("data-swiper-parallax-x"),i=a.attr("data-swiper-parallax-y"),r||i?(r=r||"0",i=i||"0"):y.isHorizontal()?(r=s,i="0"):(i=s,r="0"),r=r.indexOf("%")>=0?parseInt(r,10)*t*n+"%":r*t*n+"px",i=i.indexOf("%")>=0?parseInt(i,10)*t+"%":i*t+"px",a.transform("translate3d("+r+", "+i+",0px)")}function u(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"on"+e[0].toUpperCase()+e.substring(1):"on"+e),e}if(!(this instanceof t))return new t(a,s);var c={direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,autoplay:!1,autoplayDisableOnInteraction:!0,autoplayStopOnLast:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",coverflow:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flip:{slideShadows:!0,limitRotation:!0},cube:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fade:{crossFade:!1},parallax:!1,scrollbar:null,scrollbarHide:!0,scrollbarDraggable:!1,scrollbarSnapOnRelease:!1,keyboardControl:!1,mousewheelControl:!1,mousewheelReleaseOnEdges:!1,mousewheelInvert:!1,mousewheelForceToAxis:!1,mousewheelSensitivity:1,hashnav:!1,breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,onlyExternal:!1,threshold:0,touchMoveStopPropagation:!0,uniqueNavElements:!0,pagination:null,paginationElement:"span",paginationClickable:!1,paginationHide:!1,paginationBulletRender:null,paginationProgressRender:null,paginationFractionRender:null,paginationCustomRender:null,paginationType:"bullets",resistance:!0,resistanceRatio:.85,nextButton:null,prevButton:null,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,lazyLoading:!1,lazyLoadingInPrevNext:!1,lazyLoadingInPrevNextAmount:1,lazyLoadingOnTransitionStart:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,control:void 0,controlInverse:!1,controlBy:"slide",allowSwipeToPrev:!0,allowSwipeToNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",buttonDisabledClass:"swiper-button-disabled",paginationCurrentClass:"swiper-pagination-current",paginationTotalClass:"swiper-pagination-total",paginationHiddenClass:"swiper-pagination-hidden",paginationProgressbarClass:"swiper-pagination-progressbar",observer:!1,observeParents:!1,a11y:!1,prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",runCallbacksOnInit:!0},m=s&&s.virtualTranslate;s=s||{};var f={};for(var g in s)if("object"!=typeof s[g]||null===s[g]||(s[g].nodeType||s[g]===window||s[g]===document||"undefined"!=typeof Dom7&&s[g]instanceof Dom7||"undefined"!=typeof jQuery&&s[g]instanceof jQuery))f[g]=s[g];else{f[g]={};for(var h in s[g])f[g][h]=s[g][h]}for(var v in c)if("undefined"==typeof s[v])s[v]=c[v];else if("object"==typeof s[v])for(var w in c[v])"undefined"==typeof s[v][w]&&(s[v][w]=c[v][w]);var y=this;if(y.params=s,y.originalParams=f,y.classNames=[],"undefined"!=typeof e&&"undefined"!=typeof Dom7&&(e=Dom7),("undefined"!=typeof e||(e="undefined"==typeof Dom7?window.Dom7||window.Zepto||window.jQuery:Dom7))&&(y.$=e,y.currentBreakpoint=void 0,y.getActiveBreakpoint=function(){if(!y.params.breakpoints)return!1;var e,a=!1,t=[];for(e in y.params.breakpoints)y.params.breakpoints.hasOwnProperty(e)&&t.push(e);t.sort(function(e,a){return parseInt(e,10)>parseInt(a,10)});for(var s=0;s=window.innerWidth&&!a&&(a=e);return a||"max"},y.setBreakpoint=function(){var e=y.getActiveBreakpoint();if(e&&y.currentBreakpoint!==e){var a=e in y.params.breakpoints?y.params.breakpoints[e]:y.originalParams,t=y.params.loop&&a.slidesPerView!==y.params.slidesPerView;for(var s in a)y.params[s]=a[s];y.currentBreakpoint=e,t&&y.destroyLoop&&y.reLoop(!0)}},y.params.breakpoints&&y.setBreakpoint(),y.container=e(a),0!==y.container.length)){if(y.container.length>1){var b=[];return y.container.each(function(){b.push(new t(this,s))}),b}y.container[0].swiper=y,y.container.data("swiper",y),y.classNames.push("swiper-container-"+y.params.direction),y.params.freeMode&&y.classNames.push("swiper-container-free-mode"),y.support.flexbox||(y.classNames.push("swiper-container-no-flexbox"),y.params.slidesPerColumn=1),y.params.autoHeight&&y.classNames.push("swiper-container-autoheight"),(y.params.parallax||y.params.watchSlidesVisibility)&&(y.params.watchSlidesProgress=!0),["cube","coverflow","flip"].indexOf(y.params.effect)>=0&&(y.support.transforms3d?(y.params.watchSlidesProgress=!0,y.classNames.push("swiper-container-3d")):y.params.effect="slide"),"slide"!==y.params.effect&&y.classNames.push("swiper-container-"+y.params.effect),"cube"===y.params.effect&&(y.params.resistanceRatio=0,y.params.slidesPerView=1,y.params.slidesPerColumn=1,y.params.slidesPerGroup=1,y.params.centeredSlides=!1,y.params.spaceBetween=0,y.params.virtualTranslate=!0,y.params.setWrapperSize=!1),("fade"===y.params.effect||"flip"===y.params.effect)&&(y.params.slidesPerView=1,y.params.slidesPerColumn=1,y.params.slidesPerGroup=1,y.params.watchSlidesProgress=!0,y.params.spaceBetween=0,y.params.setWrapperSize=!1,"undefined"==typeof m&&(y.params.virtualTranslate=!0)),y.params.grabCursor&&y.support.touch&&(y.params.grabCursor=!1),y.wrapper=y.container.children("."+y.params.wrapperClass),y.params.pagination&&(y.paginationContainer=e(y.params.pagination),y.params.uniqueNavElements&&"string"==typeof y.params.pagination&&y.paginationContainer.length>1&&1===y.container.find(y.params.pagination).length&&(y.paginationContainer=y.container.find(y.params.pagination)),"bullets"===y.params.paginationType&&y.params.paginationClickable?y.paginationContainer.addClass("swiper-pagination-clickable"):y.params.paginationClickable=!1,y.paginationContainer.addClass("swiper-pagination-"+y.params.paginationType)),(y.params.nextButton||y.params.prevButton)&&(y.params.nextButton&&(y.nextButton=e(y.params.nextButton),y.params.uniqueNavElements&&"string"==typeof y.params.nextButton&&y.nextButton.length>1&&1===y.container.find(y.params.nextButton).length&&(y.nextButton=y.container.find(y.params.nextButton))),y.params.prevButton&&(y.prevButton=e(y.params.prevButton),y.params.uniqueNavElements&&"string"==typeof y.params.prevButton&&y.prevButton.length>1&&1===y.container.find(y.params.prevButton).length&&(y.prevButton=y.container.find(y.params.prevButton)))),y.isHorizontal=function(){return"horizontal"===y.params.direction},y.rtl=y.isHorizontal()&&("rtl"===y.container[0].dir.toLowerCase()||"rtl"===y.container.css("direction")),y.rtl&&y.classNames.push("swiper-container-rtl"),y.rtl&&(y.wrongRTL="-webkit-box"===y.wrapper.css("display")),y.params.slidesPerColumn>1&&y.classNames.push("swiper-container-multirow"),y.device.android&&y.classNames.push("swiper-container-android"),y.container.addClass(y.classNames.join(" ")),y.translate=0,y.progress=0,y.velocity=0,y.lockSwipeToNext=function(){y.params.allowSwipeToNext=!1},y.lockSwipeToPrev=function(){y.params.allowSwipeToPrev=!1},y.lockSwipes=function(){y.params.allowSwipeToNext=y.params.allowSwipeToPrev=!1},y.unlockSwipeToNext=function(){y.params.allowSwipeToNext=!0},y.unlockSwipeToPrev=function(){y.params.allowSwipeToPrev=!0},y.unlockSwipes=function(){y.params.allowSwipeToNext=y.params.allowSwipeToPrev=!0},y.params.grabCursor&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grab",y.container[0].style.cursor="-moz-grab",y.container[0].style.cursor="grab"),y.imagesToLoad=[],y.imagesLoaded=0,y.loadImage=function(e,a,t,s,r){function i(){r&&r()}var n;e.complete&&s?i():a?(n=new window.Image,n.onload=i,n.onerror=i,t&&(n.srcset=t),a&&(n.src=a)):i()},y.preloadImages=function(){function e(){"undefined"!=typeof y&&null!==y&&(void 0!==y.imagesLoaded&&y.imagesLoaded++,y.imagesLoaded===y.imagesToLoad.length&&(y.params.updateOnImagesReady&&y.update(),y.emit("onImagesReady",y)))}y.imagesToLoad=y.container.find("img");for(var a=0;a=0&&(a=parseFloat(a.replace("%",""))/100*y.size),y.virtualSize=-a,y.rtl?y.slides.css({marginLeft:"",marginTop:""}):y.slides.css({marginRight:"",marginBottom:""});var n;y.params.slidesPerColumn>1&&(n=Math.floor(y.slides.length/y.params.slidesPerColumn)===y.slides.length/y.params.slidesPerColumn?y.slides.length:Math.ceil(y.slides.length/y.params.slidesPerColumn)*y.params.slidesPerColumn,"auto"!==y.params.slidesPerView&&"row"===y.params.slidesPerColumnFill&&(n=Math.max(n,y.params.slidesPerView*y.params.slidesPerColumn)));var o,l=y.params.slidesPerColumn,p=n/l,d=p-(y.params.slidesPerColumn*p-y.slides.length);for(e=0;e1){var c,m,f;"column"===y.params.slidesPerColumnFill?(m=Math.floor(e/l),f=e-m*l,(m>d||m===d&&f===l-1)&&++f>=l&&(f=0,m++),c=m+f*n/l,u.css({"-webkit-box-ordinal-group":c,"-moz-box-ordinal-group":c,"-ms-flex-order":c,"-webkit-order":c,order:c})):(f=Math.floor(e/p),m=e-f*p),u.css({"margin-top":0!==f&&y.params.spaceBetween&&y.params.spaceBetween+"px"}).attr("data-swiper-column",m).attr("data-swiper-row",f)}"none"!==u.css("display")&&("auto"===y.params.slidesPerView?(o=y.isHorizontal()?u.outerWidth(!0):u.outerHeight(!0),y.params.roundLengths&&(o=r(o))):(o=(y.size-(y.params.slidesPerView-1)*a)/y.params.slidesPerView,y.params.roundLengths&&(o=r(o)),y.isHorizontal()?y.slides[e].style.width=o+"px":y.slides[e].style.height=o+"px"),y.slides[e].swiperSlideSize=o,y.slidesSizesGrid.push(o),y.params.centeredSlides?(t=t+o/2+s/2+a,0===e&&(t=t-y.size/2-a),Math.abs(t)<.001&&(t=0),i%y.params.slidesPerGroup===0&&y.snapGrid.push(t),y.slidesGrid.push(t)):(i%y.params.slidesPerGroup===0&&y.snapGrid.push(t),y.slidesGrid.push(t),t=t+o+a),y.virtualSize+=o+a,s=o,i++)}y.virtualSize=Math.max(y.virtualSize,y.size)+y.params.slidesOffsetAfter;var g;if(y.rtl&&y.wrongRTL&&("slide"===y.params.effect||"coverflow"===y.params.effect)&&y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}),(!y.support.flexbox||y.params.setWrapperSize)&&(y.isHorizontal()?y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}):y.wrapper.css({height:y.virtualSize+y.params.spaceBetween+"px"})),y.params.slidesPerColumn>1&&(y.virtualSize=(o+y.params.spaceBetween)*n,y.virtualSize=Math.ceil(y.virtualSize/y.params.slidesPerColumn)-y.params.spaceBetween,y.wrapper.css({width:y.virtualSize+y.params.spaceBetween+"px"}),y.params.centeredSlides)){for(g=[],e=0;e1&&y.snapGrid.push(y.virtualSize-y.size)}0===y.snapGrid.length&&(y.snapGrid=[0]),0!==y.params.spaceBetween&&(y.isHorizontal()?y.rtl?y.slides.css({marginLeft:a+"px"}):y.slides.css({marginRight:a+"px"}):y.slides.css({marginBottom:a+"px"})),y.params.watchSlidesProgress&&y.updateSlidesOffset()}},y.updateSlidesOffset=function(){for(var e=0;e=0&&i0&&n<=y.size||0>=i&&n>=y.size;o&&y.slides.eq(t).addClass(y.params.slideVisibleClass)}s.progress=y.rtl?-r:r}}},y.updateProgress=function(e){"undefined"==typeof e&&(e=y.translate||0);var a=y.maxTranslate()-y.minTranslate(),t=y.isBeginning,s=y.isEnd;0===a?(y.progress=0,y.isBeginning=y.isEnd=!0):(y.progress=(e-y.minTranslate())/a,y.isBeginning=y.progress<=0,y.isEnd=y.progress>=1),y.isBeginning&&!t&&y.emit("onReachBeginning",y),y.isEnd&&!s&&y.emit("onReachEnd",y),y.params.watchSlidesProgress&&y.updateSlidesProgress(e),y.emit("onProgress",y,y.progress)},y.updateActiveIndex=function(){var e,a,t,s=y.rtl?y.translate:-y.translate;for(a=0;a=y.slidesGrid[a]&&s=y.slidesGrid[a]&&s=y.slidesGrid[a]&&(e=a);(0>e||"undefined"==typeof e)&&(e=0),t=Math.floor(e/y.params.slidesPerGroup),t>=y.snapGrid.length&&(t=y.snapGrid.length-1),e!==y.activeIndex&&(y.snapIndex=t,y.previousIndex=y.activeIndex,y.activeIndex=e,y.updateClasses())},y.updateClasses=function(){y.slides.removeClass(y.params.slideActiveClass+" "+y.params.slideNextClass+" "+y.params.slidePrevClass);var a=y.slides.eq(y.activeIndex);a.addClass(y.params.slideActiveClass);var t=a.next("."+y.params.slideClass).addClass(y.params.slideNextClass);y.params.loop&&0===t.length&&y.slides.eq(0).addClass(y.params.slideNextClass);var s=a.prev("."+y.params.slideClass).addClass(y.params.slidePrevClass);if(y.params.loop&&0===s.length&&y.slides.eq(-1).addClass(y.params.slidePrevClass),y.paginationContainer&&y.paginationContainer.length>0){var r,i=y.params.loop?Math.ceil((y.slides.length-2*y.loopedSlides)/y.params.slidesPerGroup):y.snapGrid.length;if(y.params.loop?(r=Math.ceil((y.activeIndex-y.loopedSlides)/y.params.slidesPerGroup),r>y.slides.length-1-2*y.loopedSlides&&(r-=y.slides.length-2*y.loopedSlides),r>i-1&&(r-=i),0>r&&"bullets"!==y.params.paginationType&&(r=i+r)):r="undefined"!=typeof y.snapIndex?y.snapIndex:y.activeIndex||0,"bullets"===y.params.paginationType&&y.bullets&&y.bullets.length>0&&(y.bullets.removeClass(y.params.bulletActiveClass),y.paginationContainer.length>1?y.bullets.each(function(){e(this).index()===r&&e(this).addClass(y.params.bulletActiveClass)}):y.bullets.eq(r).addClass(y.params.bulletActiveClass)),"fraction"===y.params.paginationType&&(y.paginationContainer.find("."+y.params.paginationCurrentClass).text(r+1),y.paginationContainer.find("."+y.params.paginationTotalClass).text(i)),"progress"===y.params.paginationType){var n=(r+1)/i,o=n,l=1;y.isHorizontal()||(l=n,o=1),y.paginationContainer.find("."+y.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX("+o+") scaleY("+l+")").transition(y.params.speed)}"custom"===y.params.paginationType&&y.params.paginationCustomRender&&(y.paginationContainer.html(y.params.paginationCustomRender(y,r+1,i)),y.emit("onPaginationRendered",y,y.paginationContainer[0]))}y.params.loop||(y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.isBeginning?(y.prevButton.addClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.disable(y.prevButton)):(y.prevButton.removeClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.enable(y.prevButton))),y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.isEnd?(y.nextButton.addClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.disable(y.nextButton)):(y.nextButton.removeClass(y.params.buttonDisabledClass),y.params.a11y&&y.a11y&&y.a11y.enable(y.nextButton))))},y.updatePagination=function(){if(y.params.pagination&&y.paginationContainer&&y.paginationContainer.length>0){var e="";if("bullets"===y.params.paginationType){for(var a=y.params.loop?Math.ceil((y.slides.length-2*y.loopedSlides)/y.params.slidesPerGroup):y.snapGrid.length,t=0;a>t;t++)e+=y.params.paginationBulletRender?y.params.paginationBulletRender(t,y.params.bulletClass):"<"+y.params.paginationElement+' class="'+y.params.bulletClass+'">";y.paginationContainer.html(e),y.bullets=y.paginationContainer.find("."+y.params.bulletClass),y.params.paginationClickable&&y.params.a11y&&y.a11y&&y.a11y.initPagination()}"fraction"===y.params.paginationType&&(e=y.params.paginationFractionRender?y.params.paginationFractionRender(y,y.params.paginationCurrentClass,y.params.paginationTotalClass):' / ',y.paginationContainer.html(e)),"progress"===y.params.paginationType&&(e=y.params.paginationProgressRender?y.params.paginationProgressRender(y,y.params.paginationProgressbarClass):'',y.paginationContainer.html(e)),"custom"!==y.params.paginationType&&y.emit("onPaginationRendered",y,y.paginationContainer[0])}},y.update=function(e){function a(){s=Math.min(Math.max(y.translate,y.maxTranslate()),y.minTranslate()),y.setWrapperTranslate(s),y.updateActiveIndex(),y.updateClasses()}if(y.updateContainerSize(),y.updateSlidesSize(),y.updateProgress(),y.updatePagination(),y.updateClasses(),y.params.scrollbar&&y.scrollbar&&y.scrollbar.set(),e){var t,s;y.controller&&y.controller.spline&&(y.controller.spline=void 0),y.params.freeMode?(a(),y.params.autoHeight&&y.updateAutoHeight()):(t=("auto"===y.params.slidesPerView||y.params.slidesPerView>1)&&y.isEnd&&!y.params.centeredSlides?y.slideTo(y.slides.length-1,0,!1,!0):y.slideTo(y.activeIndex,0,!1,!0),t||a())}else y.params.autoHeight&&y.updateAutoHeight()},y.onResize=function(e){y.params.breakpoints&&y.setBreakpoint();var a=y.params.allowSwipeToPrev,t=y.params.allowSwipeToNext;y.params.allowSwipeToPrev=y.params.allowSwipeToNext=!0,y.updateContainerSize(),y.updateSlidesSize(),("auto"===y.params.slidesPerView||y.params.freeMode||e)&&y.updatePagination(),y.params.scrollbar&&y.scrollbar&&y.scrollbar.set(),y.controller&&y.controller.spline&&(y.controller.spline=void 0);var s=!1;if(y.params.freeMode){var r=Math.min(Math.max(y.translate,y.maxTranslate()),y.minTranslate());y.setWrapperTranslate(r),y.updateActiveIndex(),y.updateClasses(),y.params.autoHeight&&y.updateAutoHeight()}else y.updateClasses(),s=("auto"===y.params.slidesPerView||y.params.slidesPerView>1)&&y.isEnd&&!y.params.centeredSlides?y.slideTo(y.slides.length-1,0,!1,!0):y.slideTo(y.activeIndex,0,!1,!0);y.params.lazyLoading&&!s&&y.lazy&&y.lazy.load(),y.params.allowSwipeToPrev=a,y.params.allowSwipeToNext=t};var x=["mousedown","mousemove","mouseup"];window.navigator.pointerEnabled?x=["pointerdown","pointermove","pointerup"]:window.navigator.msPointerEnabled&&(x=["MSPointerDown","MSPointerMove","MSPointerUp"]),y.touchEvents={start:y.support.touch||!y.params.simulateTouch?"touchstart":x[0],move:y.support.touch||!y.params.simulateTouch?"touchmove":x[1],end:y.support.touch||!y.params.simulateTouch?"touchend":x[2]},(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&("container"===y.params.touchEventsTarget?y.container:y.wrapper).addClass("swiper-wp8-"+y.params.direction),y.initEvents=function(e){var a=e?"off":"on",t=e?"removeEventListener":"addEventListener",r="container"===y.params.touchEventsTarget?y.container[0]:y.wrapper[0],i=y.support.touch?r:document,n=y.params.nested?!0:!1;y.browser.ie?(r[t](y.touchEvents.start,y.onTouchStart,!1),i[t](y.touchEvents.move,y.onTouchMove,n),i[t](y.touchEvents.end,y.onTouchEnd,!1)):(y.support.touch&&(r[t](y.touchEvents.start,y.onTouchStart,!1),r[t](y.touchEvents.move,y.onTouchMove,n),r[t](y.touchEvents.end,y.onTouchEnd,!1)),!s.simulateTouch||y.device.ios||y.device.android||(r[t]("mousedown",y.onTouchStart,!1),document[t]("mousemove",y.onTouchMove,n),document[t]("mouseup",y.onTouchEnd,!1))),window[t]("resize",y.onResize),y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.nextButton[a]("click",y.onClickNext),y.params.a11y&&y.a11y&&y.nextButton[a]("keydown",y.a11y.onEnterKey)),y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.prevButton[a]("click",y.onClickPrev),y.params.a11y&&y.a11y&&y.prevButton[a]("keydown",y.a11y.onEnterKey)),y.params.pagination&&y.params.paginationClickable&&(y.paginationContainer[a]("click","."+y.params.bulletClass,y.onClickIndex),y.params.a11y&&y.a11y&&y.paginationContainer[a]("keydown","."+y.params.bulletClass,y.a11y.onEnterKey)),(y.params.preventClicks||y.params.preventClicksPropagation)&&r[t]("click",y.preventClicks,!0)},y.attachEvents=function(){y.initEvents()},y.detachEvents=function(){y.initEvents(!0)},y.allowClick=!0,y.preventClicks=function(e){y.allowClick||(y.params.preventClicks&&e.preventDefault(),y.params.preventClicksPropagation&&y.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))},y.onClickNext=function(e){e.preventDefault(),(!y.isEnd||y.params.loop)&&y.slideNext()},y.onClickPrev=function(e){e.preventDefault(),(!y.isBeginning||y.params.loop)&&y.slidePrev()},y.onClickIndex=function(a){a.preventDefault();var t=e(this).index()*y.params.slidesPerGroup;y.params.loop&&(t+=y.loopedSlides),y.slideTo(t)},y.updateClickedSlide=function(a){var t=n(a,"."+y.params.slideClass),s=!1;if(t)for(var r=0;ry.slides.length-y.loopedSlides+y.params.slidesPerView/2?(y.fixLoop(),o=y.wrapper.children("."+y.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){y.slideTo(o)},0)):y.slideTo(o):o>y.slides.length-y.params.slidesPerView?(y.fixLoop(),o=y.wrapper.children("."+y.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){y.slideTo(o)},0)):y.slideTo(o)}else y.slideTo(o)}};var T,S,C,z,M,P,I,k,E,B,D="input, select, textarea, button",L=Date.now(),H=[];y.animating=!1,y.touches={startX:0,startY:0,currentX:0,currentY:0,diff:0};var G,A;if(y.onTouchStart=function(a){if(a.originalEvent&&(a=a.originalEvent),G="touchstart"===a.type,G||!("which"in a)||3!==a.which){if(y.params.noSwiping&&n(a,"."+y.params.noSwipingClass))return void(y.allowClick=!0);if(!y.params.swipeHandler||n(a,y.params.swipeHandler)){var t=y.touches.currentX="touchstart"===a.type?a.targetTouches[0].pageX:a.pageX,s=y.touches.currentY="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY;if(!(y.device.ios&&y.params.iOSEdgeSwipeDetection&&t<=y.params.iOSEdgeSwipeThreshold)){if(T=!0,S=!1,C=!0,M=void 0,A=void 0,y.touches.startX=t,y.touches.startY=s,z=Date.now(),y.allowClick=!0,y.updateContainerSize(),y.swipeDirection=void 0,y.params.threshold>0&&(k=!1),"touchstart"!==a.type){var r=!0;e(a.target).is(D)&&(r=!1),document.activeElement&&e(document.activeElement).is(D)&&document.activeElement.blur(),r&&a.preventDefault()}y.emit("onTouchStart",y,a)}}}},y.onTouchMove=function(a){if(a.originalEvent&&(a=a.originalEvent),!G||"mousemove"!==a.type){if(a.preventedByNestedSwiper)return y.touches.startX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,void(y.touches.startY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY);if(y.params.onlyExternal)return y.allowClick=!1,void(T&&(y.touches.startX=y.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,y.touches.startY=y.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,z=Date.now()));if(G&&document.activeElement&&a.target===document.activeElement&&e(a.target).is(D))return S=!0,void(y.allowClick=!1);if(C&&y.emit("onTouchMove",y,a),!(a.targetTouches&&a.targetTouches.length>1)){if(y.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,y.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,"undefined"==typeof M){var t=180*Math.atan2(Math.abs(y.touches.currentY-y.touches.startY),Math.abs(y.touches.currentX-y.touches.startX))/Math.PI;M=y.isHorizontal()?t>y.params.touchAngle:90-t>y.params.touchAngle}if(M&&y.emit("onTouchMoveOpposite",y,a),"undefined"==typeof A&&y.browser.ieTouch&&(y.touches.currentX!==y.touches.startX||y.touches.currentY!==y.touches.startY)&&(A=!0),T){if(M)return void(T=!1);if(A||!y.browser.ieTouch){y.allowClick=!1,y.emit("onSliderMove",y,a),a.preventDefault(),y.params.touchMoveStopPropagation&&!y.params.nested&&a.stopPropagation(),S||(s.loop&&y.fixLoop(),I=y.getWrapperTranslate(),y.setWrapperTransition(0),y.animating&&y.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),y.params.autoplay&&y.autoplaying&&(y.params.autoplayDisableOnInteraction?y.stopAutoplay():y.pauseAutoplay()),B=!1,y.params.grabCursor&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grabbing",y.container[0].style.cursor="-moz-grabbin",y.container[0].style.cursor="grabbing")),S=!0;var r=y.touches.diff=y.isHorizontal()?y.touches.currentX-y.touches.startX:y.touches.currentY-y.touches.startY;r*=y.params.touchRatio,y.rtl&&(r=-r),y.swipeDirection=r>0?"prev":"next",P=r+I;var i=!0;if(r>0&&P>y.minTranslate()?(i=!1, -y.params.resistance&&(P=y.minTranslate()-1+Math.pow(-y.minTranslate()+I+r,y.params.resistanceRatio))):0>r&&PP&&(P=I),!y.params.allowSwipeToPrev&&"prev"===y.swipeDirection&&P>I&&(P=I),y.params.followFinger){if(y.params.threshold>0){if(!(Math.abs(r)>y.params.threshold||k))return void(P=I);if(!k)return k=!0,y.touches.startX=y.touches.currentX,y.touches.startY=y.touches.currentY,P=I,void(y.touches.diff=y.isHorizontal()?y.touches.currentX-y.touches.startX:y.touches.currentY-y.touches.startY)}(y.params.freeMode||y.params.watchSlidesProgress)&&y.updateActiveIndex(),y.params.freeMode&&(0===H.length&&H.push({position:y.touches[y.isHorizontal()?"startX":"startY"],time:z}),H.push({position:y.touches[y.isHorizontal()?"currentX":"currentY"],time:(new window.Date).getTime()})),y.updateProgress(P),y.setWrapperTranslate(P)}}}}}},y.onTouchEnd=function(a){if(a.originalEvent&&(a=a.originalEvent),C&&y.emit("onTouchEnd",y,a),C=!1,T){y.params.grabCursor&&S&&T&&(y.container[0].style.cursor="move",y.container[0].style.cursor="-webkit-grab",y.container[0].style.cursor="-moz-grab",y.container[0].style.cursor="grab");var t=Date.now(),s=t-z;if(y.allowClick&&(y.updateClickedSlide(a),y.emit("onTap",y,a),300>s&&t-L>300&&(E&&clearTimeout(E),E=setTimeout(function(){y&&(y.params.paginationHide&&y.paginationContainer.length>0&&!e(a.target).hasClass(y.params.bulletClass)&&y.paginationContainer.toggleClass(y.params.paginationHiddenClass),y.emit("onClick",y,a))},300)),300>s&&300>t-L&&(E&&clearTimeout(E),y.emit("onDoubleTap",y,a))),L=Date.now(),setTimeout(function(){y&&(y.allowClick=!0)},0),!T||!S||!y.swipeDirection||0===y.touches.diff||P===I)return void(T=S=!1);T=S=!1;var r;if(r=y.params.followFinger?y.rtl?y.translate:-y.translate:-P,y.params.freeMode){if(r<-y.minTranslate())return void y.slideTo(y.activeIndex);if(r>-y.maxTranslate())return void(y.slides.length1){var i=H.pop(),n=H.pop(),o=i.position-n.position,l=i.time-n.time;y.velocity=o/l,y.velocity=y.velocity/2,Math.abs(y.velocity)150||(new window.Date).getTime()-i.time>300)&&(y.velocity=0)}else y.velocity=0;H.length=0;var p=1e3*y.params.freeModeMomentumRatio,d=y.velocity*p,u=y.translate+d;y.rtl&&(u=-u);var c,m=!1,f=20*Math.abs(y.velocity)*y.params.freeModeMomentumBounceRatio;if(uy.minTranslate())y.params.freeModeMomentumBounce?(u-y.minTranslate()>f&&(u=y.minTranslate()+f),c=y.minTranslate(),m=!0,B=!0):u=y.minTranslate();else if(y.params.freeModeSticky){var g,h=0;for(h=0;h-u){g=h;break}u=Math.abs(y.snapGrid[g]-u)=y.params.longSwipesMs)&&(y.updateProgress(),y.updateActiveIndex()))}var v,w=0,b=y.slidesSizesGrid[0];for(v=0;v=y.slidesGrid[v]&&r=y.slidesGrid[v]&&(w=v,b=y.slidesGrid[y.slidesGrid.length-1]-y.slidesGrid[y.slidesGrid.length-2]);var x=(r-y.slidesGrid[w])/b;if(s>y.params.longSwipesMs){if(!y.params.longSwipes)return void y.slideTo(y.activeIndex);"next"===y.swipeDirection&&(x>=y.params.longSwipesRatio?y.slideTo(w+y.params.slidesPerGroup):y.slideTo(w)),"prev"===y.swipeDirection&&(x>1-y.params.longSwipesRatio?y.slideTo(w+y.params.slidesPerGroup):y.slideTo(w))}else{if(!y.params.shortSwipes)return void y.slideTo(y.activeIndex);"next"===y.swipeDirection&&y.slideTo(w+y.params.slidesPerGroup),"prev"===y.swipeDirection&&y.slideTo(w)}}},y._slideTo=function(e,a){return y.slideTo(e,a,!0,!0)},y.slideTo=function(e,a,t,s){"undefined"==typeof t&&(t=!0),"undefined"==typeof e&&(e=0),0>e&&(e=0),y.snapIndex=Math.floor(e/y.params.slidesPerGroup),y.snapIndex>=y.snapGrid.length&&(y.snapIndex=y.snapGrid.length-1);var r=-y.snapGrid[y.snapIndex];y.params.autoplay&&y.autoplaying&&(s||!y.params.autoplayDisableOnInteraction?y.pauseAutoplay(a):y.stopAutoplay()),y.updateProgress(r);for(var i=0;i=Math.floor(100*y.slidesGrid[i])&&(e=i);return!y.params.allowSwipeToNext&&ry.translate&&r>y.maxTranslate()&&(y.activeIndex||0)!==e?!1:("undefined"==typeof a&&(a=y.params.speed),y.previousIndex=y.activeIndex||0,y.activeIndex=e,y.rtl&&-r===y.translate||!y.rtl&&r===y.translate?(y.params.autoHeight&&y.updateAutoHeight(),y.updateClasses(),"slide"!==y.params.effect&&y.setWrapperTranslate(r),!1):(y.updateClasses(),y.onTransitionStart(t),0===a?(y.setWrapperTranslate(r),y.setWrapperTransition(0),y.onTransitionEnd(t)):(y.setWrapperTranslate(r),y.setWrapperTransition(a),y.animating||(y.animating=!0,y.wrapper.transitionEnd(function(){y&&y.onTransitionEnd(t)}))),!0))},y.onTransitionStart=function(e){"undefined"==typeof e&&(e=!0),y.params.autoHeight&&y.updateAutoHeight(),y.lazy&&y.lazy.onTransitionStart(),e&&(y.emit("onTransitionStart",y),y.activeIndex!==y.previousIndex&&(y.emit("onSlideChangeStart",y),y.activeIndex>y.previousIndex?y.emit("onSlideNextStart",y):y.emit("onSlidePrevStart",y)))},y.onTransitionEnd=function(e){y.animating=!1,y.setWrapperTransition(0),"undefined"==typeof e&&(e=!0),y.lazy&&y.lazy.onTransitionEnd(),e&&(y.emit("onTransitionEnd",y),y.activeIndex!==y.previousIndex&&(y.emit("onSlideChangeEnd",y),y.activeIndex>y.previousIndex?y.emit("onSlideNextEnd",y):y.emit("onSlidePrevEnd",y))),y.params.hashnav&&y.hashnav&&y.hashnav.setHash()},y.slideNext=function(e,a,t){if(y.params.loop){if(y.animating)return!1;y.fixLoop();y.container[0].clientLeft;return y.slideTo(y.activeIndex+y.params.slidesPerGroup,a,e,t)}return y.slideTo(y.activeIndex+y.params.slidesPerGroup,a,e,t)},y._slideNext=function(e){return y.slideNext(!0,e,!0)},y.slidePrev=function(e,a,t){if(y.params.loop){if(y.animating)return!1;y.fixLoop();y.container[0].clientLeft;return y.slideTo(y.activeIndex-1,a,e,t)}return y.slideTo(y.activeIndex-1,a,e,t)},y._slidePrev=function(e){return y.slidePrev(!0,e,!0)},y.slideReset=function(e,a,t){return y.slideTo(y.activeIndex,a,e)},y.setWrapperTransition=function(e,a){y.wrapper.transition(e),"slide"!==y.params.effect&&y.effects[y.params.effect]&&y.effects[y.params.effect].setTransition(e),y.params.parallax&&y.parallax&&y.parallax.setTransition(e),y.params.scrollbar&&y.scrollbar&&y.scrollbar.setTransition(e),y.params.control&&y.controller&&y.controller.setTransition(e,a),y.emit("onSetTransition",y,e)},y.setWrapperTranslate=function(e,a,t){var s=0,i=0,n=0;y.isHorizontal()?s=y.rtl?-e:e:i=e,y.params.roundLengths&&(s=r(s),i=r(i)),y.params.virtualTranslate||(y.support.transforms3d?y.wrapper.transform("translate3d("+s+"px, "+i+"px, "+n+"px)"):y.wrapper.transform("translate("+s+"px, "+i+"px)")),y.translate=y.isHorizontal()?s:i;var o,l=y.maxTranslate()-y.minTranslate();o=0===l?0:(e-y.minTranslate())/l,o!==y.progress&&y.updateProgress(e),a&&y.updateActiveIndex(),"slide"!==y.params.effect&&y.effects[y.params.effect]&&y.effects[y.params.effect].setTranslate(y.translate),y.params.parallax&&y.parallax&&y.parallax.setTranslate(y.translate),y.params.scrollbar&&y.scrollbar&&y.scrollbar.setTranslate(y.translate),y.params.control&&y.controller&&y.controller.setTranslate(y.translate,t),y.emit("onSetTranslate",y,y.translate)},y.getTranslate=function(e,a){var t,s,r,i;return"undefined"==typeof a&&(a="x"),y.params.virtualTranslate?y.rtl?-y.translate:y.translate:(r=window.getComputedStyle(e,null),window.WebKitCSSMatrix?(s=r.transform||r.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(function(e){return e.replace(",",".")}).join(", ")),i=new window.WebKitCSSMatrix("none"===s?"":s)):(i=r.MozTransform||r.OTransform||r.MsTransform||r.msTransform||r.transform||r.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),t=i.toString().split(",")),"x"===a&&(s=window.WebKitCSSMatrix?i.m41:16===t.length?parseFloat(t[12]):parseFloat(t[4])),"y"===a&&(s=window.WebKitCSSMatrix?i.m42:16===t.length?parseFloat(t[13]):parseFloat(t[5])),y.rtl&&s&&(s=-s),s||0)},y.getWrapperTranslate=function(e){return"undefined"==typeof e&&(e=y.isHorizontal()?"x":"y"),y.getTranslate(y.wrapper[0],e)},y.observers=[],y.initObservers=function(){if(y.params.observeParents)for(var e=y.container.parents(),a=0;aa.length&&(y.loopedSlides=a.length);var t,s=[],r=[];for(a.each(function(t,i){var n=e(this);t=a.length-y.loopedSlides&&s.push(i),n.attr("data-swiper-slide-index",t)}),t=0;t=0;t--)y.wrapper.prepend(e(s[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass))},y.destroyLoop=function(){y.wrapper.children("."+y.params.slideClass+"."+y.params.slideDuplicateClass).remove(),y.slides.removeAttr("data-swiper-slide-index")},y.reLoop=function(e){var a=y.activeIndex-y.loopedSlides;y.destroyLoop(),y.createLoop(),y.updateSlidesSize(),e&&y.slideTo(a+y.loopedSlides,0,!1)},y.fixLoop=function(){var e;y.activeIndex=2*y.loopedSlides||y.activeIndex>y.slides.length-2*y.params.slidesPerView)&&(e=-y.slides.length+y.activeIndex+y.loopedSlides,e+=y.loopedSlides,y.slideTo(e,0,!1,!0))},y.appendSlide=function(e){if(y.params.loop&&y.destroyLoop(),"object"==typeof e&&e.length)for(var a=0;aa&&t--;t=Math.max(t,0)}else a=e,y.slides[a]&&y.slides.eq(a).remove(),t>a&&t--,t=Math.max(t,0);y.params.loop&&y.createLoop(),y.params.observer&&y.support.observer||y.update(!0),y.params.loop?y.slideTo(t+y.loopedSlides,0,!1):y.slideTo(t,0,!1)},y.removeAllSlides=function(){for(var e=[],a=0;a'),t.append(d)),0===u.length&&(u=e('
'),t.append(u)),d.length&&(d[0].style.opacity=Math.max(-s,0)),u.length&&(u[0].style.opacity=Math.max(s,0))}t.transform("translate3d("+l+"px, "+p+"px, 0px) rotateX("+o+"deg) rotateY("+n+"deg)")}},setTransition:function(a){if(y.slides.transition(a).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(a),y.params.virtualTranslate&&0!==a){var t=!1;y.slides.eq(y.activeIndex).transitionEnd(function(){if(!t&&y&&e(this).hasClass(y.params.slideActiveClass)){t=!0,y.animating=!1;for(var a=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],s=0;s'),y.wrapper.append(a)),a.css({height:y.width+"px"})):(a=y.container.find(".swiper-cube-shadow"),0===a.length&&(a=e('
'),y.container.append(a))));for(var s=0;s=o&&o>-1&&(t=90*s+90*o,y.rtl&&(t=90*-s-90*o)),r.transform(u),y.params.cube.slideShadows){var c=y.isHorizontal()?r.find(".swiper-slide-shadow-left"):r.find(".swiper-slide-shadow-top"),m=y.isHorizontal()?r.find(".swiper-slide-shadow-right"):r.find(".swiper-slide-shadow-bottom");0===c.length&&(c=e('
'),r.append(c)),0===m.length&&(m=e('
'),r.append(m)),c.length&&(c[0].style.opacity=Math.max(-o,0)),m.length&&(m[0].style.opacity=Math.max(o,0))}}if(y.wrapper.css({"-webkit-transform-origin":"50% 50% -"+y.size/2+"px","-moz-transform-origin":"50% 50% -"+y.size/2+"px","-ms-transform-origin":"50% 50% -"+y.size/2+"px","transform-origin":"50% 50% -"+y.size/2+"px"}),y.params.cube.shadow)if(y.isHorizontal())a.transform("translate3d(0px, "+(y.width/2+y.params.cube.shadowOffset)+"px, "+-y.width/2+"px) rotateX(90deg) rotateZ(0deg) scale("+y.params.cube.shadowScale+")");else{var f=Math.abs(t)-90*Math.floor(Math.abs(t)/90),g=1.5-(Math.sin(2*f*Math.PI/360)/2+Math.cos(2*f*Math.PI/360)/2),h=y.params.cube.shadowScale,v=y.params.cube.shadowScale/g,w=y.params.cube.shadowOffset;a.transform("scale3d("+h+", 1, "+v+") translate3d(0px, "+(y.height/2+w)+"px, "+-y.height/2/v+"px) rotateX(-90deg)")}var b=y.isSafari||y.isUiWebView?-y.size/2:0;y.wrapper.transform("translate3d(0px,0,"+b+"px) rotateX("+(y.isHorizontal()?0:t)+"deg) rotateY("+(y.isHorizontal()?-t:0)+"deg)")},setTransition:function(e){y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),y.params.cube.shadow&&!y.isHorizontal()&&y.container.find(".swiper-cube-shadow").transition(e)}},coverflow:{setTranslate:function(){for(var a=y.translate,t=y.isHorizontal()?-a+y.width/2:-a+y.height/2,s=y.isHorizontal()?y.params.coverflow.rotate:-y.params.coverflow.rotate,r=y.params.coverflow.depth,i=0,n=y.slides.length;n>i;i++){var o=y.slides.eq(i),l=y.slidesSizesGrid[i],p=o[0].swiperSlideOffset,d=(t-p-l/2)/l*y.params.coverflow.modifier,u=y.isHorizontal()?s*d:0,c=y.isHorizontal()?0:s*d,m=-r*Math.abs(d),f=y.isHorizontal()?0:y.params.coverflow.stretch*d,g=y.isHorizontal()?y.params.coverflow.stretch*d:0;Math.abs(g)<.001&&(g=0),Math.abs(f)<.001&&(f=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(c)<.001&&(c=0);var h="translate3d("+g+"px,"+f+"px,"+m+"px) rotateX("+c+"deg) rotateY("+u+"deg)";if(o.transform(h),o[0].style.zIndex=-Math.abs(Math.round(d))+1,y.params.coverflow.slideShadows){var v=y.isHorizontal()?o.find(".swiper-slide-shadow-left"):o.find(".swiper-slide-shadow-top"),w=y.isHorizontal()?o.find(".swiper-slide-shadow-right"):o.find(".swiper-slide-shadow-bottom");0===v.length&&(v=e('
'),o.append(v)),0===w.length&&(w=e('
'),o.append(w)),v.length&&(v[0].style.opacity=d>0?d:0),w.length&&(w[0].style.opacity=-d>0?-d:0)}}if(y.browser.ie){var b=y.wrapper[0].style;b.perspectiveOrigin=t+"px 50%"}},setTransition:function(e){y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}}},y.lazy={initialImageLoaded:!1,loadImageInSlide:function(a,t){if("undefined"!=typeof a&&("undefined"==typeof t&&(t=!0),0!==y.slides.length)){var s=y.slides.eq(a),r=s.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");!s.hasClass("swiper-lazy")||s.hasClass("swiper-lazy-loaded")||s.hasClass("swiper-lazy-loading")||(r=r.add(s[0])),0!==r.length&&r.each(function(){var a=e(this);a.addClass("swiper-lazy-loading");var r=a.attr("data-background"),i=a.attr("data-src"),n=a.attr("data-srcset");y.loadImage(a[0],i||r,n,!1,function(){if(r?(a.css("background-image",'url("'+r+'")'),a.removeAttr("data-background")):(n&&(a.attr("srcset",n),a.removeAttr("data-srcset")),i&&(a.attr("src",i),a.removeAttr("data-src"))),a.addClass("swiper-lazy-loaded").removeClass("swiper-lazy-loading"),s.find(".swiper-lazy-preloader, .preloader").remove(),y.params.loop&&t){var e=s.attr("data-swiper-slide-index");if(s.hasClass(y.params.slideDuplicateClass)){var o=y.wrapper.children('[data-swiper-slide-index="'+e+'"]:not(.'+y.params.slideDuplicateClass+")");y.lazy.loadImageInSlide(o.index(),!1)}else{var l=y.wrapper.children("."+y.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');y.lazy.loadImageInSlide(l.index(),!1)}}y.emit("onLazyImageReady",y,s[0],a[0])}),y.emit("onLazyImageLoad",y,s[0],a[0])})}},load:function(){var a;if(y.params.watchSlidesVisibility)y.wrapper.children("."+y.params.slideVisibleClass).each(function(){y.lazy.loadImageInSlide(e(this).index())});else if(y.params.slidesPerView>1)for(a=y.activeIndex;a1||y.params.lazyLoadingInPrevNextAmount&&y.params.lazyLoadingInPrevNextAmount>1){var t=y.params.lazyLoadingInPrevNextAmount,s=y.params.slidesPerView,r=Math.min(y.activeIndex+s+Math.max(t,s),y.slides.length),i=Math.max(y.activeIndex-Math.max(s,t),0);for(a=y.activeIndex+y.params.slidesPerView;r>a;a++)y.slides[a]&&y.lazy.loadImageInSlide(a);for(a=i;a0&&y.lazy.loadImageInSlide(n.index());var o=y.wrapper.children("."+y.params.slidePrevClass);o.length>0&&y.lazy.loadImageInSlide(o.index())}},onTransitionStart:function(){y.params.lazyLoading&&(y.params.lazyLoadingOnTransitionStart||!y.params.lazyLoadingOnTransitionStart&&!y.lazy.initialImageLoaded)&&y.lazy.load()},onTransitionEnd:function(){y.params.lazyLoading&&!y.params.lazyLoadingOnTransitionStart&&y.lazy.load()}},y.scrollbar={isTouched:!1,setDragPosition:function(e){var a=y.scrollbar,t=y.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageX:e.pageX||e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageY:e.pageY||e.clientY,s=t-a.track.offset()[y.isHorizontal()?"left":"top"]-a.dragSize/2,r=-y.minTranslate()*a.moveDivider,i=-y.maxTranslate()*a.moveDivider;r>s?s=r:s>i&&(s=i),s=-s/a.moveDivider,y.updateProgress(s),y.setWrapperTranslate(s,!0)},dragStart:function(e){var a=y.scrollbar;a.isTouched=!0,e.preventDefault(),e.stopPropagation(),a.setDragPosition(e),clearTimeout(a.dragTimeout),a.track.transition(0),y.params.scrollbarHide&&a.track.css("opacity",1),y.wrapper.transition(100),a.drag.transition(100),y.emit("onScrollbarDragStart",y)},dragMove:function(e){var a=y.scrollbar;a.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,a.setDragPosition(e),y.wrapper.transition(0),a.track.transition(0),a.drag.transition(0),y.emit("onScrollbarDragMove",y))},dragEnd:function(e){var a=y.scrollbar;a.isTouched&&(a.isTouched=!1,y.params.scrollbarHide&&(clearTimeout(a.dragTimeout),a.dragTimeout=setTimeout(function(){a.track.css("opacity",0),a.track.transition(400)},1e3)),y.emit("onScrollbarDragEnd",y),y.params.scrollbarSnapOnRelease&&y.slideReset())},enableDraggable:function(){var a=y.scrollbar,t=y.support.touch?a.track:document;e(a.track).on(y.touchEvents.start,a.dragStart),e(t).on(y.touchEvents.move,a.dragMove),e(t).on(y.touchEvents.end,a.dragEnd)},disableDraggable:function(){var a=y.scrollbar,t=y.support.touch?a.track:document;e(a.track).off(y.touchEvents.start,a.dragStart),e(t).off(y.touchEvents.move,a.dragMove),e(t).off(y.touchEvents.end,a.dragEnd)},set:function(){if(y.params.scrollbar){var a=y.scrollbar;a.track=e(y.params.scrollbar),y.params.uniqueNavElements&&"string"==typeof y.params.scrollbar&&a.track.length>1&&1===y.container.find(y.params.scrollbar).length&&(a.track=y.container.find(y.params.scrollbar)),a.drag=a.track.find(".swiper-scrollbar-drag"),0===a.drag.length&&(a.drag=e('
'),a.track.append(a.drag)),a.drag[0].style.width="",a.drag[0].style.height="",a.trackSize=y.isHorizontal()?a.track[0].offsetWidth:a.track[0].offsetHeight,a.divider=y.size/y.virtualSize,a.moveDivider=a.divider*(a.trackSize/y.size),a.dragSize=a.trackSize*a.divider,y.isHorizontal()?a.drag[0].style.width=a.dragSize+"px":a.drag[0].style.height=a.dragSize+"px",a.divider>=1?a.track[0].style.display="none":a.track[0].style.display="",y.params.scrollbarHide&&(a.track[0].style.opacity=0)}},setTranslate:function(){if(y.params.scrollbar){var e,a=y.scrollbar,t=(y.translate||0,a.dragSize);e=(a.trackSize-a.dragSize)*y.progress,y.rtl&&y.isHorizontal()?(e=-e,e>0?(t=a.dragSize-e,e=0):-e+a.dragSize>a.trackSize&&(t=a.trackSize+e)):0>e?(t=a.dragSize+e,e=0):e+a.dragSize>a.trackSize&&(t=a.trackSize-e),y.isHorizontal()?(y.support.transforms3d?a.drag.transform("translate3d("+e+"px, 0, 0)"):a.drag.transform("translateX("+e+"px)"),a.drag[0].style.width=t+"px"):(y.support.transforms3d?a.drag.transform("translate3d(0px, "+e+"px, 0)"):a.drag.transform("translateY("+e+"px)"),a.drag[0].style.height=t+"px"),y.params.scrollbarHide&&(clearTimeout(a.timeout),a.track[0].style.opacity=1,a.timeout=setTimeout(function(){a.track[0].style.opacity=0,a.track.transition(400)},1e3))}},setTransition:function(e){y.params.scrollbar&&y.scrollbar.drag.transition(e)}},y.controller={LinearSpline:function(e,a){this.x=e,this.y=a,this.lastIndex=e.length-1;var t,s;this.x.length;this.interpolate=function(e){return e?(s=r(this.x,e),t=s-1,(e-this.x[t])*(this.y[s]-this.y[t])/(this.x[s]-this.x[t])+this.y[t]):0};var r=function(){var e,a,t;return function(s,r){for(a=-1,e=s.length;e-a>1;)s[t=e+a>>1]<=r?a=t:e=t;return e}}()},getInterpolateFunction:function(e){y.controller.spline||(y.controller.spline=y.params.loop?new y.controller.LinearSpline(y.slidesGrid,e.slidesGrid):new y.controller.LinearSpline(y.snapGrid,e.snapGrid))},setTranslate:function(e,a){function s(a){e=a.rtl&&"horizontal"===a.params.direction?-y.translate:y.translate,"slide"===y.params.controlBy&&(y.controller.getInterpolateFunction(a),i=-y.controller.spline.interpolate(-e)),i&&"container"!==y.params.controlBy||(r=(a.maxTranslate()-a.minTranslate())/(y.maxTranslate()-y.minTranslate()),i=(e-y.minTranslate())*r+a.minTranslate()),y.params.controlInverse&&(i=a.maxTranslate()-i),a.updateProgress(i),a.setWrapperTranslate(i,!1,y),a.updateActiveIndex()}var r,i,n=y.params.control;if(y.isArray(n))for(var o=0;ot;t++){var r=y.slides.eq(t),i=r.attr("data-hash");if(i===e&&!r.hasClass(y.params.slideDuplicateClass)){var n=r.index();y.slideTo(n,a,y.params.runCallbacksOnInit,!0)}}}},setHash:function(){y.hashnav.initialized&&y.params.hashnav&&(document.location.hash=y.slides.eq(y.activeIndex).attr("data-hash")||"")}},y.disableKeyboardControl=function(){y.params.keyboardControl=!1,e(document).off("keydown",l)},y.enableKeyboardControl=function(){y.params.keyboardControl=!0,e(document).on("keydown",l)},y.mousewheel={event:!1,lastScrollTime:(new window.Date).getTime()},y.params.mousewheelControl){try{new window.WheelEvent("wheel"),y.mousewheel.event="wheel"}catch(O){(window.WheelEvent||y.container[0]&&"wheel"in y.container[0])&&(y.mousewheel.event="wheel")}!y.mousewheel.event&&window.WheelEvent,y.mousewheel.event||void 0===document.onmousewheel||(y.mousewheel.event="mousewheel"),y.mousewheel.event||(y.mousewheel.event="DOMMouseScroll")}y.disableMousewheelControl=function(){return y.mousewheel.event?(y.container.off(y.mousewheel.event,p),!0):!1},y.enableMousewheelControl=function(){return y.mousewheel.event?(y.container.on(y.mousewheel.event,p),!0):!1},y.parallax={setTranslate:function(){y.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){d(this,y.progress)}),y.slides.each(function(){var a=e(this);a.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var e=Math.min(Math.max(a[0].progress,-1),1);d(this,e)})})},setTransition:function(a){"undefined"==typeof a&&(a=y.params.speed),y.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var t=e(this),s=parseInt(t.attr("data-swiper-parallax-duration"),10)||a;0===a&&(s=0),t.transition(s)})}},y._plugins=[];for(var N in y.plugins){var R=y.plugins[N](y,y.params[N]);R&&y._plugins.push(R)}return y.callPlugins=function(e){for(var a=0;a'),notify:function(e){var a=y.a11y.liveRegion;0!==a.length&&(a.html(""),a.html(e))},init:function(){y.params.nextButton&&y.nextButton&&y.nextButton.length>0&&(y.a11y.makeFocusable(y.nextButton),y.a11y.addRole(y.nextButton,"button"),y.a11y.addLabel(y.nextButton,y.params.nextSlideMessage)),y.params.prevButton&&y.prevButton&&y.prevButton.length>0&&(y.a11y.makeFocusable(y.prevButton),y.a11y.addRole(y.prevButton,"button"),y.a11y.addLabel(y.prevButton,y.params.prevSlideMessage)),e(y.container).append(y.a11y.liveRegion)},initPagination:function(){y.params.pagination&&y.params.paginationClickable&&y.bullets&&y.bullets.length&&y.bullets.each(function(){var a=e(this);y.a11y.makeFocusable(a),y.a11y.addRole(a,"button"),y.a11y.addLabel(a,y.params.paginationBulletMessage.replace(/{{index}}/,a.index()+1))})},destroy:function(){y.a11y.liveRegion&&y.a11y.liveRegion.length>0&&y.a11y.liveRegion.remove()}},y.init=function(){y.params.loop&&y.createLoop(),y.updateContainerSize(),y.updateSlidesSize(),y.updatePagination(),y.params.scrollbar&&y.scrollbar&&(y.scrollbar.set(),y.params.scrollbarDraggable&&y.scrollbar.enableDraggable()),"slide"!==y.params.effect&&y.effects[y.params.effect]&&(y.params.loop||y.updateProgress(),y.effects[y.params.effect].setTranslate()),y.params.loop?y.slideTo(y.params.initialSlide+y.loopedSlides,0,y.params.runCallbacksOnInit):(y.slideTo(y.params.initialSlide,0,y.params.runCallbacksOnInit),0===y.params.initialSlide&&(y.parallax&&y.params.parallax&&y.parallax.setTranslate(),y.lazy&&y.params.lazyLoading&&(y.lazy.load(),y.lazy.initialImageLoaded=!0))),y.attachEvents(),y.params.observer&&y.support.observer&&y.initObservers(), -y.params.preloadImages&&!y.params.lazyLoading&&y.preloadImages(),y.params.autoplay&&y.startAutoplay(),y.params.keyboardControl&&y.enableKeyboardControl&&y.enableKeyboardControl(),y.params.mousewheelControl&&y.enableMousewheelControl&&y.enableMousewheelControl(),y.params.hashnav&&y.hashnav&&y.hashnav.init(),y.params.a11y&&y.a11y&&y.a11y.init(),y.emit("onInit",y)},y.cleanupStyles=function(){y.container.removeClass(y.classNames.join(" ")).removeAttr("style"),y.wrapper.removeAttr("style"),y.slides&&y.slides.length&&y.slides.removeClass([y.params.slideVisibleClass,y.params.slideActiveClass,y.params.slideNextClass,y.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"),y.paginationContainer&&y.paginationContainer.length&&y.paginationContainer.removeClass(y.params.paginationHiddenClass),y.bullets&&y.bullets.length&&y.bullets.removeClass(y.params.bulletActiveClass),y.params.prevButton&&e(y.params.prevButton).removeClass(y.params.buttonDisabledClass),y.params.nextButton&&e(y.params.nextButton).removeClass(y.params.buttonDisabledClass),y.params.scrollbar&&y.scrollbar&&(y.scrollbar.track&&y.scrollbar.track.length&&y.scrollbar.track.removeAttr("style"),y.scrollbar.drag&&y.scrollbar.drag.length&&y.scrollbar.drag.removeAttr("style"))},y.destroy=function(e,a){y.detachEvents(),y.stopAutoplay(),y.params.scrollbar&&y.scrollbar&&y.params.scrollbarDraggable&&y.scrollbar.disableDraggable(),y.params.loop&&y.destroyLoop(),a&&y.cleanupStyles(),y.disconnectObservers(),y.params.keyboardControl&&y.disableKeyboardControl&&y.disableKeyboardControl(),y.params.mousewheelControl&&y.disableMousewheelControl&&y.disableMousewheelControl(),y.params.a11y&&y.a11y&&y.a11y.destroy(),y.emit("onDestroy"),e!==!1&&(y=null)},y.init(),y}};t.prototype={isSafari:function(){var e=navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},browser:{ie:window.navigator.pointerEnabled||window.navigator.msPointerEnabled,ieTouch:window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>1||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints>1},device:function(){var e=navigator.userAgent,a=e.match(/(Android);?[\s\/]+([\d.]+)?/),t=e.match(/(iPad).*OS\s([\d_]+)/),s=e.match(/(iPod)(.*OS\s([\d_]+))?/),r=!t&&e.match(/(iPhone\sOS)\s([\d_]+)/);return{ios:t||r||s,android:a}}(),support:{touch:window.Modernizr&&Modernizr.touch===!0||function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)}(),transforms3d:window.Modernizr&&Modernizr.csstransforms3d===!0||function(){var e=document.createElement("div").style;return"webkitPerspective"in e||"MozPerspective"in e||"OPerspective"in e||"MsPerspective"in e||"perspective"in e}(),flexbox:function(){for(var e=document.createElement("div").style,a="alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "),t=0;t parseInt(b, 10); - }); - for (var i = 0; i < points.length; i++) { - point = points[i]; - if (point >= window.innerWidth && !breakpoint) { - breakpoint = point; - } - } - return breakpoint || 'max'; - }; - s.setBreakpoint = function () { - //Set breakpoint for window width and update parameters - var breakpoint = s.getActiveBreakpoint(); - if (breakpoint && s.currentBreakpoint !== breakpoint) { - var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams; - var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView); - for ( var param in breakPointsParams ) { - s.params[param] = breakPointsParams[param]; - } - s.currentBreakpoint = breakpoint; - if(needsReLoop && s.destroyLoop) { - s.reLoop(true); - } - } - }; - // Set breakpoint on load - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - /*========================= - Preparation - Define Container, Wrapper and Pagination - ===========================*/ - s.container = $(container); - if (s.container.length === 0) return; - if (s.container.length > 1) { - var swipers = []; - s.container.each(function () { - var container = this; - swipers.push(new Swiper(this, params)); - }); - return swipers; - } - - // Save instance in container HTML Element and in data - s.container[0].swiper = s; - s.container.data('swiper', s); - - s.classNames.push('swiper-container-' + s.params.direction); - - if (s.params.freeMode) { - s.classNames.push('swiper-container-free-mode'); - } - if (!s.support.flexbox) { - s.classNames.push('swiper-container-no-flexbox'); - s.params.slidesPerColumn = 1; - } - if (s.params.autoHeight) { - s.classNames.push('swiper-container-autoheight'); - } - // Enable slides progress when required - if (s.params.parallax || s.params.watchSlidesVisibility) { - s.params.watchSlidesProgress = true; - } - // Coverflow / 3D - if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) { - if (s.support.transforms3d) { - s.params.watchSlidesProgress = true; - s.classNames.push('swiper-container-3d'); - } - else { - s.params.effect = 'slide'; - } - } - if (s.params.effect !== 'slide') { - s.classNames.push('swiper-container-' + s.params.effect); - } - if (s.params.effect === 'cube') { - s.params.resistanceRatio = 0; - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.centeredSlides = false; - s.params.spaceBetween = 0; - s.params.virtualTranslate = true; - s.params.setWrapperSize = false; - } - if (s.params.effect === 'fade' || s.params.effect === 'flip') { - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.watchSlidesProgress = true; - s.params.spaceBetween = 0; - s.params.setWrapperSize = false; - if (typeof initialVirtualTranslate === 'undefined') { - s.params.virtualTranslate = true; - } - } - - // Grab Cursor - if (s.params.grabCursor && s.support.touch) { - s.params.grabCursor = false; - } - - // Wrapper - s.wrapper = s.container.children('.' + s.params.wrapperClass); - - // Pagination - if (s.params.pagination) { - s.paginationContainer = $(s.params.pagination); - if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) { - s.paginationContainer = s.container.find(s.params.pagination); - } - - if (s.params.paginationType === 'bullets' && s.params.paginationClickable) { - s.paginationContainer.addClass('swiper-pagination-clickable'); - } - else { - s.params.paginationClickable = false; - } - s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType); - } - // Next/Prev Buttons - if (s.params.nextButton || s.params.prevButton) { - if (s.params.nextButton) { - s.nextButton = $(s.params.nextButton); - if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) { - s.nextButton = s.container.find(s.params.nextButton); - } - } - if (s.params.prevButton) { - s.prevButton = $(s.params.prevButton); - if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) { - s.prevButton = s.container.find(s.params.prevButton); - } - } - } - - // Is Horizontal - s.isHorizontal = function () { - return s.params.direction === 'horizontal'; - }; - // s.isH = isH; - - // RTL - s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl'); - if (s.rtl) { - s.classNames.push('swiper-container-rtl'); - } - - // Wrong RTL support - if (s.rtl) { - s.wrongRTL = s.wrapper.css('display') === '-webkit-box'; - } - - // Columns - if (s.params.slidesPerColumn > 1) { - s.classNames.push('swiper-container-multirow'); - } - - // Check for Android - if (s.device.android) { - s.classNames.push('swiper-container-android'); - } - - // Add classes - s.container.addClass(s.classNames.join(' ')); - - // Translate - s.translate = 0; - - // Progress - s.progress = 0; - - // Velocity - s.velocity = 0; - - /*========================= - Locks, unlocks - ===========================*/ - s.lockSwipeToNext = function () { - s.params.allowSwipeToNext = false; - }; - s.lockSwipeToPrev = function () { - s.params.allowSwipeToPrev = false; - }; - s.lockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false; - }; - s.unlockSwipeToNext = function () { - s.params.allowSwipeToNext = true; - }; - s.unlockSwipeToPrev = function () { - s.params.allowSwipeToPrev = true; - }; - s.unlockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true; - }; - - /*========================= - Round helper - ===========================*/ - function round(a) { - return Math.floor(a); - } - /*========================= - Set grab cursor - ===========================*/ - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - /*========================= - Update on Images Ready - ===========================*/ - s.imagesToLoad = []; - s.imagesLoaded = 0; - - s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) { - var image; - function onReady () { - if (callback) callback(); - } - if (!imgElement.complete || !checkForComplete) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - if (srcset) { - image.srcset = srcset; - } - if (src) { - image.src = src; - } - } else { - onReady(); - } - - } else {//image already loaded... - onReady(); - } - }; - s.preloadImages = function () { - s.imagesToLoad = s.container.find('img'); - function _onReady() { - if (typeof s === 'undefined' || s === null) return; - if (s.imagesLoaded !== undefined) s.imagesLoaded++; - if (s.imagesLoaded === s.imagesToLoad.length) { - if (s.params.updateOnImagesReady) s.update(); - s.emit('onImagesReady', s); - } - } - for (var i = 0; i < s.imagesToLoad.length; i++) { - s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady); - } - }; - - /*========================= - Autoplay - ===========================*/ - s.autoplayTimeoutId = undefined; - s.autoplaying = false; - s.autoplayPaused = false; - function autoplay() { - s.autoplayTimeoutId = setTimeout(function () { - if (s.params.loop) { - s.fixLoop(); - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!s.isEnd) { - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!params.autoplayStopOnLast) { - s._slideTo(0); - s.emit('onAutoplay', s); - } - else { - s.stopAutoplay(); - } - } - } - }, s.params.autoplay); - } - s.startAutoplay = function () { - if (typeof s.autoplayTimeoutId !== 'undefined') return false; - if (!s.params.autoplay) return false; - if (s.autoplaying) return false; - s.autoplaying = true; - s.emit('onAutoplayStart', s); - autoplay(); - }; - s.stopAutoplay = function (internal) { - if (!s.autoplayTimeoutId) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplaying = false; - s.autoplayTimeoutId = undefined; - s.emit('onAutoplayStop', s); - }; - s.pauseAutoplay = function (speed) { - if (s.autoplayPaused) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplayPaused = true; - if (speed === 0) { - s.autoplayPaused = false; - autoplay(); - } - else { - s.wrapper.transitionEnd(function () { - if (!s) return; - s.autoplayPaused = false; - if (!s.autoplaying) { - s.stopAutoplay(); - } - else { - autoplay(); - } - }); - } - }; - /*========================= - Min/Max Translate - ===========================*/ - s.minTranslate = function () { - return (-s.snapGrid[0]); - }; - s.maxTranslate = function () { - return (-s.snapGrid[s.snapGrid.length - 1]); - }; - /*========================= - Slider/slides sizes - ===========================*/ - s.updateAutoHeight = function () { - // Update Height - var slide = s.slides.eq(s.activeIndex)[0]; - if (typeof slide !== 'undefined') { - var newHeight = slide.offsetHeight; - if (newHeight) s.wrapper.css('height', newHeight + 'px'); - } - }; - s.updateContainerSize = function () { - var width, height; - if (typeof s.params.width !== 'undefined') { - width = s.params.width; - } - else { - width = s.container[0].clientWidth; - } - if (typeof s.params.height !== 'undefined') { - height = s.params.height; - } - else { - height = s.container[0].clientHeight; - } - if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) { - return; - } - - //Subtract paddings - width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10); - height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10); - - // Store values - s.width = width; - s.height = height; - s.size = s.isHorizontal() ? s.width : s.height; - }; - - s.updateSlidesSize = function () { - s.slides = s.wrapper.children('.' + s.params.slideClass); - s.snapGrid = []; - s.slidesGrid = []; - s.slidesSizesGrid = []; - - var spaceBetween = s.params.spaceBetween, - slidePosition = -s.params.slidesOffsetBefore, - i, - prevSlideSize = 0, - index = 0; - if (typeof s.size === 'undefined') return; - if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { - spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size; - } - - s.virtualSize = -spaceBetween; - // reset margins - if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''}); - else s.slides.css({marginRight: '', marginBottom: ''}); - - var slidesNumberEvenToRows; - if (s.params.slidesPerColumn > 1) { - if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) { - slidesNumberEvenToRows = s.slides.length; - } - else { - slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn; - } - if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') { - slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn); - } - } - - // Calc slides - var slideSize; - var slidesPerColumn = s.params.slidesPerColumn; - var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; - var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length); - for (i = 0; i < s.slides.length; i++) { - slideSize = 0; - var slide = s.slides.eq(i); - if (s.params.slidesPerColumn > 1) { - // Set slides order - var newSlideOrderIndex; - var column, row; - if (s.params.slidesPerColumnFill === 'column') { - column = Math.floor(i / slidesPerColumn); - row = i - column * slidesPerColumn; - if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) { - if (++row >= slidesPerColumn) { - row = 0; - column++; - } - } - newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; - slide - .css({ - '-webkit-box-ordinal-group': newSlideOrderIndex, - '-moz-box-ordinal-group': newSlideOrderIndex, - '-ms-flex-order': newSlideOrderIndex, - '-webkit-order': newSlideOrderIndex, - 'order': newSlideOrderIndex - }); - } - else { - row = Math.floor(i / slidesPerRow); - column = i - row * slidesPerRow; - } - slide - .css({ - 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px') - }) - .attr('data-swiper-column', column) - .attr('data-swiper-row', row); - - } - if (slide.css('display') === 'none') continue; - if (s.params.slidesPerView === 'auto') { - slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); - if (s.params.roundLengths) slideSize = round(slideSize); - } - else { - slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView; - if (s.params.roundLengths) slideSize = round(slideSize); - - if (s.isHorizontal()) { - s.slides[i].style.width = slideSize + 'px'; - } - else { - s.slides[i].style.height = slideSize + 'px'; - } - } - s.slides[i].swiperSlideSize = slideSize; - s.slidesSizesGrid.push(slideSize); - - - if (s.params.centeredSlides) { - slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; - if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - } - else { - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - slidePosition = slidePosition + slideSize + spaceBetween; - } - - s.virtualSize += slideSize + spaceBetween; - - prevSlideSize = slideSize; - - index ++; - } - s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter; - var newSlidesGrid; - - if ( - s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) { - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - } - if (!s.support.flexbox || s.params.setWrapperSize) { - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - } - - if (s.params.slidesPerColumn > 1) { - s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows; - s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween; - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - if (s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]); - } - s.snapGrid = newSlidesGrid; - } - } - - // Remove last grid elements depending on width - if (!s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] <= s.virtualSize - s.size) { - newSlidesGrid.push(s.snapGrid[i]); - } - } - s.snapGrid = newSlidesGrid; - if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) { - s.snapGrid.push(s.virtualSize - s.size); - } - } - if (s.snapGrid.length === 0) s.snapGrid = [0]; - - if (s.params.spaceBetween !== 0) { - if (s.isHorizontal()) { - if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'}); - else s.slides.css({marginRight: spaceBetween + 'px'}); - } - else s.slides.css({marginBottom: spaceBetween + 'px'}); - } - if (s.params.watchSlidesProgress) { - s.updateSlidesOffset(); - } - }; - s.updateSlidesOffset = function () { - for (var i = 0; i < s.slides.length; i++) { - s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop; - } - }; - - /*========================= - Slider/slides progress - ===========================*/ - s.updateSlidesProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - if (s.slides.length === 0) return; - if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset(); - - var offsetCenter = -translate; - if (s.rtl) offsetCenter = translate; - - // Visible Slides - s.slides.removeClass(s.params.slideVisibleClass); - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides[i]; - var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween); - if (s.params.watchSlidesVisibility) { - var slideBefore = -(offsetCenter - slide.swiperSlideOffset); - var slideAfter = slideBefore + s.slidesSizesGrid[i]; - var isVisible = - (slideBefore >= 0 && slideBefore < s.size) || - (slideAfter > 0 && slideAfter <= s.size) || - (slideBefore <= 0 && slideAfter >= s.size); - if (isVisible) { - s.slides.eq(i).addClass(s.params.slideVisibleClass); - } - } - slide.progress = s.rtl ? -slideProgress : slideProgress; - } - }; - s.updateProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - var translatesDiff = s.maxTranslate() - s.minTranslate(); - var wasBeginning = s.isBeginning; - var wasEnd = s.isEnd; - if (translatesDiff === 0) { - s.progress = 0; - s.isBeginning = s.isEnd = true; - } - else { - s.progress = (translate - s.minTranslate()) / (translatesDiff); - s.isBeginning = s.progress <= 0; - s.isEnd = s.progress >= 1; - } - if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s); - if (s.isEnd && !wasEnd) s.emit('onReachEnd', s); - - if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate); - s.emit('onProgress', s, s.progress); - }; - s.updateActiveIndex = function () { - var translate = s.rtl ? s.translate : -s.translate; - var newActiveIndex, i, snapIndex; - for (i = 0; i < s.slidesGrid.length; i ++) { - if (typeof s.slidesGrid[i + 1] !== 'undefined') { - if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) { - newActiveIndex = i; - } - else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) { - newActiveIndex = i + 1; - } - } - else { - if (translate >= s.slidesGrid[i]) { - newActiveIndex = i; - } - } - } - // Normalize slideIndex - if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0; - // for (i = 0; i < s.slidesGrid.length; i++) { - // if (- translate >= s.slidesGrid[i]) { - // newActiveIndex = i; - // } - // } - snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup); - if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1; - - if (newActiveIndex === s.activeIndex) { - return; - } - s.snapIndex = snapIndex; - s.previousIndex = s.activeIndex; - s.activeIndex = newActiveIndex; - s.updateClasses(); - }; - - /*========================= - Classes - ===========================*/ - s.updateClasses = function () { - s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass); - var activeSlide = s.slides.eq(s.activeIndex); - // Active classes - activeSlide.addClass(s.params.slideActiveClass); - // Next Slide - var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass); - if (s.params.loop && nextSlide.length === 0) { - s.slides.eq(0).addClass(s.params.slideNextClass); - } - // Prev Slide - var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass); - if (s.params.loop && prevSlide.length === 0) { - s.slides.eq(-1).addClass(s.params.slidePrevClass); - } - - // Pagination - if (s.paginationContainer && s.paginationContainer.length > 0) { - // Current/Total - var current, - total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - if (s.params.loop) { - current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup); - if (current > s.slides.length - 1 - s.loopedSlides * 2) { - current = current - (s.slides.length - s.loopedSlides * 2); - } - if (current > total - 1) current = current - total; - if (current < 0 && s.params.paginationType !== 'bullets') current = total + current; - } - else { - if (typeof s.snapIndex !== 'undefined') { - current = s.snapIndex; - } - else { - current = s.activeIndex || 0; - } - } - // Types - if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) { - s.bullets.removeClass(s.params.bulletActiveClass); - if (s.paginationContainer.length > 1) { - s.bullets.each(function () { - if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass); - }); - } - else { - s.bullets.eq(current).addClass(s.params.bulletActiveClass); - } - } - if (s.params.paginationType === 'fraction') { - s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1); - s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total); - } - if (s.params.paginationType === 'progress') { - var scale = (current + 1) / total, - scaleX = scale, - scaleY = 1; - if (!s.isHorizontal()) { - scaleY = scale; - scaleX = 1; - } - s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed); - } - if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) { - s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total)); - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - - // Next/active buttons - if (!s.params.loop) { - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - if (s.isBeginning) { - s.prevButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton); - } - else { - s.prevButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton); - } - } - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - if (s.isEnd) { - s.nextButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton); - } - else { - s.nextButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton); - } - } - } - }; - - /*========================= - Pagination - ===========================*/ - s.updatePagination = function () { - if (!s.params.pagination) return; - if (s.paginationContainer && s.paginationContainer.length > 0) { - var paginationHTML = ''; - if (s.params.paginationType === 'bullets') { - var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - for (var i = 0; i < numberOfBullets; i++) { - if (s.params.paginationBulletRender) { - paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass); - } - else { - paginationHTML += '<' + s.params.paginationElement+' class="' + s.params.bulletClass + '">'; - } - } - s.paginationContainer.html(paginationHTML); - s.bullets = s.paginationContainer.find('.' + s.params.bulletClass); - if (s.params.paginationClickable && s.params.a11y && s.a11y) { - s.a11y.initPagination(); - } - } - if (s.params.paginationType === 'fraction') { - if (s.params.paginationFractionRender) { - paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass); - } - else { - paginationHTML = - '' + - ' / ' + - ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType === 'progress') { - if (s.params.paginationProgressRender) { - paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass); - } - else { - paginationHTML = ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType !== 'custom') { - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - }; - /*========================= - Common update method - ===========================*/ - s.update = function (updateTranslate) { - s.updateContainerSize(); - s.updateSlidesSize(); - s.updateProgress(); - s.updatePagination(); - s.updateClasses(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - function forceSetTranslate() { - newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - } - if (updateTranslate) { - var translated, newTranslate; - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - if (s.params.freeMode) { - forceSetTranslate(); - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - translated = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - translated = s.slideTo(s.activeIndex, 0, false, true); - } - if (!translated) { - forceSetTranslate(); - } - } - } - else if (s.params.autoHeight) { - s.updateAutoHeight(); - } - }; - - /*========================= - Resize Handler - ===========================*/ - s.onResize = function (forceUpdatePagination) { - //Breakpoints - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - // Disable locks on resize - var allowSwipeToPrev = s.params.allowSwipeToPrev; - var allowSwipeToNext = s.params.allowSwipeToNext; - s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true; - - s.updateContainerSize(); - s.updateSlidesSize(); - if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - var slideChangedBySlideTo = false; - if (s.params.freeMode) { - var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - s.updateClasses(); - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true); - } - } - if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) { - s.lazy.load(); - } - // Return locks after resize - s.params.allowSwipeToPrev = allowSwipeToPrev; - s.params.allowSwipeToNext = allowSwipeToNext; - }; - - /*========================= - Events - ===========================*/ - - //Define Touch Events - var desktopEvents = ['mousedown', 'mousemove', 'mouseup']; - if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup']; - else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; - s.touchEvents = { - start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0], - move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1], - end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2] - }; - - - // WP8 Touch Events Fix - if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) { - (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction); - } - - // Attach/detach events - s.initEvents = function (detach) { - var actionDom = detach ? 'off' : 'on'; - var action = detach ? 'removeEventListener' : 'addEventListener'; - var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0]; - var target = s.support.touch ? touchEventsTarget : document; - - var moveCapture = s.params.nested ? true : false; - - //Touch Events - if (s.browser.ie) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - target[action](s.touchEvents.move, s.onTouchMove, moveCapture); - target[action](s.touchEvents.end, s.onTouchEnd, false); - } - else { - if (s.support.touch) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture); - touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false); - } - if (params.simulateTouch && !s.device.ios && !s.device.android) { - touchEventsTarget[action]('mousedown', s.onTouchStart, false); - document[action]('mousemove', s.onTouchMove, moveCapture); - document[action]('mouseup', s.onTouchEnd, false); - } - } - window[action]('resize', s.onResize); - - // Next, Prev, Index - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.nextButton[actionDom]('click', s.onClickNext); - if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.prevButton[actionDom]('click', s.onClickPrev); - if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.pagination && s.params.paginationClickable) { - s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex); - if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey); - } - - // Prevent Links Clicks - if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true); - }; - s.attachEvents = function () { - s.initEvents(); - }; - s.detachEvents = function () { - s.initEvents(true); - }; - - /*========================= - Handle Clicks - ===========================*/ - // Prevent Clicks - s.allowClick = true; - s.preventClicks = function (e) { - if (!s.allowClick) { - if (s.params.preventClicks) e.preventDefault(); - if (s.params.preventClicksPropagation && s.animating) { - e.stopPropagation(); - e.stopImmediatePropagation(); - } - } - }; - // Clicks - s.onClickNext = function (e) { - e.preventDefault(); - if (s.isEnd && !s.params.loop) return; - s.slideNext(); - }; - s.onClickPrev = function (e) { - e.preventDefault(); - if (s.isBeginning && !s.params.loop) return; - s.slidePrev(); - }; - s.onClickIndex = function (e) { - e.preventDefault(); - var index = $(this).index() * s.params.slidesPerGroup; - if (s.params.loop) index = index + s.loopedSlides; - s.slideTo(index); - }; - - /*========================= - Handle Touches - ===========================*/ - function findElementInEvent(e, selector) { - var el = $(e.target); - if (!el.is(selector)) { - if (typeof selector === 'string') { - el = el.parents(selector); - } - else if (selector.nodeType) { - var found; - el.parents().each(function (index, _el) { - if (_el === selector) found = selector; - }); - if (!found) return undefined; - else return selector; - } - } - if (el.length === 0) { - return undefined; - } - return el[0]; - } - s.updateClickedSlide = function (e) { - var slide = findElementInEvent(e, '.' + s.params.slideClass); - var slideFound = false; - if (slide) { - for (var i = 0; i < s.slides.length; i++) { - if (s.slides[i] === slide) slideFound = true; - } - } - - if (slide && slideFound) { - s.clickedSlide = slide; - s.clickedIndex = $(slide).index(); - } - else { - s.clickedSlide = undefined; - s.clickedIndex = undefined; - return; - } - if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) { - var slideToIndex = s.clickedIndex, - realIndex, - duplicatedSlides; - if (s.params.loop) { - if (s.animating) return; - realIndex = $(s.clickedSlide).attr('data-swiper-slide-index'); - if (s.params.centeredSlides) { - if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - else { - if (slideToIndex > s.slides.length - s.params.slidesPerView) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - } - else { - s.slideTo(slideToIndex); - } - } - }; - - var isTouched, - isMoved, - allowTouchCallbacks, - touchStartTime, - isScrolling, - currentTranslate, - startTranslate, - allowThresholdMove, - // Form elements to match - formElements = 'input, select, textarea, button', - // Last click time - lastClickTime = Date.now(), clickTimeout, - //Velocities - velocities = [], - allowMomentumBounce; - - // Animating Flag - s.animating = false; - - // Touches information - s.touches = { - startX: 0, - startY: 0, - currentX: 0, - currentY: 0, - diff: 0 - }; - - // Touch handlers - var isTouchEvent, startMoving; - s.onTouchStart = function (e) { - if (e.originalEvent) e = e.originalEvent; - isTouchEvent = e.type === 'touchstart'; - if (!isTouchEvent && 'which' in e && e.which === 3) return; - if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) { - s.allowClick = true; - return; - } - if (s.params.swipeHandler) { - if (!findElementInEvent(e, s.params.swipeHandler)) return; - } - - var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - - // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore - if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) { - return; - } - - isTouched = true; - isMoved = false; - allowTouchCallbacks = true; - isScrolling = undefined; - startMoving = undefined; - s.touches.startX = startX; - s.touches.startY = startY; - touchStartTime = Date.now(); - s.allowClick = true; - s.updateContainerSize(); - s.swipeDirection = undefined; - if (s.params.threshold > 0) allowThresholdMove = false; - if (e.type !== 'touchstart') { - var preventDefault = true; - if ($(e.target).is(formElements)) preventDefault = false; - if (document.activeElement && $(document.activeElement).is(formElements)) { - document.activeElement.blur(); - } - if (preventDefault) { - e.preventDefault(); - } - } - s.emit('onTouchStart', s, e); - }; - - s.onTouchMove = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (isTouchEvent && e.type === 'mousemove') return; - if (e.preventedByNestedSwiper) { - s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - return; - } - if (s.params.onlyExternal) { - // isMoved = true; - s.allowClick = false; - if (isTouched) { - s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - touchStartTime = Date.now(); - } - return; - } - if (isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(formElements)) { - isMoved = true; - s.allowClick = false; - return; - } - } - if (allowTouchCallbacks) { - s.emit('onTouchMove', s, e); - } - if (e.targetTouches && e.targetTouches.length > 1) return; - - s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (typeof isScrolling === 'undefined') { - var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI; - isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle); - } - if (isScrolling) { - s.emit('onTouchMoveOpposite', s, e); - } - if (typeof startMoving === 'undefined' && s.browser.ieTouch) { - if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) { - startMoving = true; - } - } - if (!isTouched) return; - if (isScrolling) { - isTouched = false; - return; - } - if (!startMoving && s.browser.ieTouch) { - return; - } - s.allowClick = false; - s.emit('onSliderMove', s, e); - e.preventDefault(); - if (s.params.touchMoveStopPropagation && !s.params.nested) { - e.stopPropagation(); - } - - if (!isMoved) { - if (params.loop) { - s.fixLoop(); - } - startTranslate = s.getWrapperTranslate(); - s.setWrapperTransition(0); - if (s.animating) { - s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd'); - } - if (s.params.autoplay && s.autoplaying) { - if (s.params.autoplayDisableOnInteraction) { - s.stopAutoplay(); - } - else { - s.pauseAutoplay(); - } - } - allowMomentumBounce = false; - //Grab Cursor - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grabbing'; - s.container[0].style.cursor = '-moz-grabbin'; - s.container[0].style.cursor = 'grabbing'; - } - } - isMoved = true; - - var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - - diff = diff * s.params.touchRatio; - if (s.rtl) diff = -diff; - - s.swipeDirection = diff > 0 ? 'prev' : 'next'; - currentTranslate = diff + startTranslate; - - var disableParentSwiper = true; - if ((diff > 0 && currentTranslate > s.minTranslate())) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio); - } - else if (diff < 0 && currentTranslate < s.maxTranslate()) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio); - } - - if (disableParentSwiper) { - e.preventedByNestedSwiper = true; - } - - // Directions locks - if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) { - currentTranslate = startTranslate; - } - if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) { - currentTranslate = startTranslate; - } - - if (!s.params.followFinger) return; - - // Threshold - if (s.params.threshold > 0) { - if (Math.abs(diff) > s.params.threshold || allowThresholdMove) { - if (!allowThresholdMove) { - allowThresholdMove = true; - s.touches.startX = s.touches.currentX; - s.touches.startY = s.touches.currentY; - currentTranslate = startTranslate; - s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - return; - } - } - else { - currentTranslate = startTranslate; - return; - } - } - // Update active index in free mode - if (s.params.freeMode || s.params.watchSlidesProgress) { - s.updateActiveIndex(); - } - if (s.params.freeMode) { - //Velocity - if (velocities.length === 0) { - velocities.push({ - position: s.touches[s.isHorizontal() ? 'startX' : 'startY'], - time: touchStartTime - }); - } - velocities.push({ - position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'], - time: (new window.Date()).getTime() - }); - } - // Update progress - s.updateProgress(currentTranslate); - // Update translate - s.setWrapperTranslate(currentTranslate); - }; - s.onTouchEnd = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (allowTouchCallbacks) { - s.emit('onTouchEnd', s, e); - } - allowTouchCallbacks = false; - if (!isTouched) return; - //Return Grab Cursor - if (s.params.grabCursor && isMoved && isTouched) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - - // Time diff - var touchEndTime = Date.now(); - var timeDiff = touchEndTime - touchStartTime; - - // Tap, doubleTap, Click - if (s.allowClick) { - s.updateClickedSlide(e); - s.emit('onTap', s, e); - if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) { - if (clickTimeout) clearTimeout(clickTimeout); - clickTimeout = setTimeout(function () { - if (!s) return; - if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) { - s.paginationContainer.toggleClass(s.params.paginationHiddenClass); - } - s.emit('onClick', s, e); - }, 300); - - } - if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) { - if (clickTimeout) clearTimeout(clickTimeout); - s.emit('onDoubleTap', s, e); - } - } - - lastClickTime = Date.now(); - setTimeout(function () { - if (s) s.allowClick = true; - }, 0); - - if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) { - isTouched = isMoved = false; - return; - } - isTouched = isMoved = false; - - var currentPos; - if (s.params.followFinger) { - currentPos = s.rtl ? s.translate : -s.translate; - } - else { - currentPos = -currentTranslate; - } - if (s.params.freeMode) { - if (currentPos < -s.minTranslate()) { - s.slideTo(s.activeIndex); - return; - } - else if (currentPos > -s.maxTranslate()) { - if (s.slides.length < s.snapGrid.length) { - s.slideTo(s.snapGrid.length - 1); - } - else { - s.slideTo(s.slides.length - 1); - } - return; - } - - if (s.params.freeModeMomentum) { - if (velocities.length > 1) { - var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop(); - - var distance = lastMoveEvent.position - velocityEvent.position; - var time = lastMoveEvent.time - velocityEvent.time; - s.velocity = distance / time; - s.velocity = s.velocity / 2; - if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) { - s.velocity = 0; - } - // this implies that the user stopped moving a finger then released. - // There would be no events with distance zero, so the last event is stale. - if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) { - s.velocity = 0; - } - } else { - s.velocity = 0; - } - - velocities.length = 0; - var momentumDuration = 1000 * s.params.freeModeMomentumRatio; - var momentumDistance = s.velocity * momentumDuration; - - var newPosition = s.translate + momentumDistance; - if (s.rtl) newPosition = - newPosition; - var doBounce = false; - var afterBouncePosition; - var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio; - if (newPosition < s.maxTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition + s.maxTranslate() < -bounceAmount) { - newPosition = s.maxTranslate() - bounceAmount; - } - afterBouncePosition = s.maxTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.maxTranslate(); - } - } - else if (newPosition > s.minTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition - s.minTranslate() > bounceAmount) { - newPosition = s.minTranslate() + bounceAmount; - } - afterBouncePosition = s.minTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.minTranslate(); - } - } - else if (s.params.freeModeSticky) { - var j = 0, - nextSlide; - for (j = 0; j < s.snapGrid.length; j += 1) { - if (s.snapGrid[j] > -newPosition) { - nextSlide = j; - break; - } - - } - if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') { - newPosition = s.snapGrid[nextSlide]; - } else { - newPosition = s.snapGrid[nextSlide - 1]; - } - if (!s.rtl) newPosition = - newPosition; - } - //Fix duration - if (s.velocity !== 0) { - if (s.rtl) { - momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity); - } - else { - momentumDuration = Math.abs((newPosition - s.translate) / s.velocity); - } - } - else if (s.params.freeModeSticky) { - s.slideReset(); - return; - } - - if (s.params.freeModeMomentumBounce && doBounce) { - s.updateProgress(afterBouncePosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s || !allowMomentumBounce) return; - s.emit('onMomentumBounce', s); - - s.setWrapperTransition(s.params.speed); - s.setWrapperTranslate(afterBouncePosition); - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - }); - } else if (s.velocity) { - s.updateProgress(newPosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - } - - } else { - s.updateProgress(newPosition); - } - - s.updateActiveIndex(); - } - if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) { - s.updateProgress(); - s.updateActiveIndex(); - } - return; - } - - // Find current slide - var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0]; - for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) { - if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') { - if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) { - stopIndex = i; - groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i]; - } - } - else { - if (currentPos >= s.slidesGrid[i]) { - stopIndex = i; - groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2]; - } - } - } - - // Find current slide size - var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize; - - if (timeDiff > s.params.longSwipesMs) { - // Long touches - if (!s.params.longSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - - } - if (s.swipeDirection === 'prev') { - if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - } - } - else { - // Short swipes - if (!s.params.shortSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - s.slideTo(stopIndex + s.params.slidesPerGroup); - - } - if (s.swipeDirection === 'prev') { - s.slideTo(stopIndex); - } - } - }; - /*========================= - Transitions - ===========================*/ - s._slideTo = function (slideIndex, speed) { - return s.slideTo(slideIndex, speed, true, true); - }; - s.slideTo = function (slideIndex, speed, runCallbacks, internal) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (typeof slideIndex === 'undefined') slideIndex = 0; - if (slideIndex < 0) slideIndex = 0; - s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup); - if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1; - - var translate = - s.snapGrid[s.snapIndex]; - // Stop autoplay - if (s.params.autoplay && s.autoplaying) { - if (internal || !s.params.autoplayDisableOnInteraction) { - s.pauseAutoplay(speed); - } - else { - s.stopAutoplay(); - } - } - // Update progress - s.updateProgress(translate); - - // Normalize slideIndex - for (var i = 0; i < s.slidesGrid.length; i++) { - if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) { - slideIndex = i; - } - } - - // Directions locks - if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) { - return false; - } - if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) { - if ((s.activeIndex || 0) !== slideIndex ) return false; - } - - // Update Index - if (typeof speed === 'undefined') speed = s.params.speed; - s.previousIndex = s.activeIndex || 0; - s.activeIndex = slideIndex; - - if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) { - // Update Height - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - s.updateClasses(); - if (s.params.effect !== 'slide') { - s.setWrapperTranslate(translate); - } - return false; - } - s.updateClasses(); - s.onTransitionStart(runCallbacks); - - if (speed === 0) { - s.setWrapperTranslate(translate); - s.setWrapperTransition(0); - s.onTransitionEnd(runCallbacks); - } - else { - s.setWrapperTranslate(translate); - s.setWrapperTransition(speed); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(runCallbacks); - }); - } - - } - - return true; - }; - - s.onTransitionStart = function (runCallbacks) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - if (s.lazy) s.lazy.onTransitionStart(); - if (runCallbacks) { - s.emit('onTransitionStart', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeStart', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextStart', s); - } - else { - s.emit('onSlidePrevStart', s); - } - } - - } - }; - s.onTransitionEnd = function (runCallbacks) { - s.animating = false; - s.setWrapperTransition(0); - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.lazy) s.lazy.onTransitionEnd(); - if (runCallbacks) { - s.emit('onTransitionEnd', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeEnd', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextEnd', s); - } - else { - s.emit('onSlidePrevEnd', s); - } - } - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.setHash(); - } - - }; - s.slideNext = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - }; - s._slideNext = function (speed) { - return s.slideNext(true, speed, true); - }; - s.slidePrev = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - }; - s._slidePrev = function (speed) { - return s.slidePrev(true, speed, true); - }; - s.slideReset = function (runCallbacks, speed, internal) { - return s.slideTo(s.activeIndex, speed, runCallbacks); - }; - - /*========================= - Translate/transition helpers - ===========================*/ - s.setWrapperTransition = function (duration, byController) { - s.wrapper.transition(duration); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTransition(duration); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTransition(duration); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTransition(duration); - } - if (s.params.control && s.controller) { - s.controller.setTransition(duration, byController); - } - s.emit('onSetTransition', s, duration); - }; - s.setWrapperTranslate = function (translate, updateActiveIndex, byController) { - var x = 0, y = 0, z = 0; - if (s.isHorizontal()) { - x = s.rtl ? -translate : translate; - } - else { - y = translate; - } - - if (s.params.roundLengths) { - x = round(x); - y = round(y); - } - - if (!s.params.virtualTranslate) { - if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'); - else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)'); - } - - s.translate = s.isHorizontal() ? x : y; - - // Check if we need to update progress - var progress; - var translatesDiff = s.maxTranslate() - s.minTranslate(); - if (translatesDiff === 0) { - progress = 0; - } - else { - progress = (translate - s.minTranslate()) / (translatesDiff); - } - if (progress !== s.progress) { - s.updateProgress(translate); - } - - if (updateActiveIndex) s.updateActiveIndex(); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTranslate(s.translate); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTranslate(s.translate); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTranslate(s.translate); - } - if (s.params.control && s.controller) { - s.controller.setTranslate(s.translate, byController); - } - s.emit('onSetTranslate', s, s.translate); - }; - - s.getTranslate = function (el, axis) { - var matrix, curTransform, curStyle, transformMatrix; - - // automatic axis detection - if (typeof axis === 'undefined') { - axis = 'x'; - } - - if (s.params.virtualTranslate) { - return s.rtl ? -s.translate : s.translate; - } - - curStyle = window.getComputedStyle(el, null); - if (window.WebKitCSSMatrix) { - curTransform = curStyle.transform || curStyle.webkitTransform; - if (curTransform.split(',').length > 6) { - curTransform = curTransform.split(', ').map(function(a){ - return a.replace(',','.'); - }).join(', '); - } - // Some old versions of Webkit choke when 'none' is passed; pass - // empty string instead in this case - transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); - } - else { - transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); - matrix = transformMatrix.toString().split(','); - } - - if (axis === 'x') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m41; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[12]); - //Normal Browsers - else - curTransform = parseFloat(matrix[4]); - } - if (axis === 'y') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m42; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[13]); - //Normal Browsers - else - curTransform = parseFloat(matrix[5]); - } - if (s.rtl && curTransform) curTransform = -curTransform; - return curTransform || 0; - }; - s.getWrapperTranslate = function (axis) { - if (typeof axis === 'undefined') { - axis = s.isHorizontal() ? 'x' : 'y'; - } - return s.getTranslate(s.wrapper[0], axis); - }; - - /*========================= - Observer - ===========================*/ - s.observers = []; - function initObserver(target, options) { - options = options || {}; - // create an observer instance - var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; - var observer = new ObserverFunc(function (mutations) { - mutations.forEach(function (mutation) { - s.onResize(true); - s.emit('onObserverUpdate', s, mutation); - }); - }); - - observer.observe(target, { - attributes: typeof options.attributes === 'undefined' ? true : options.attributes, - childList: typeof options.childList === 'undefined' ? true : options.childList, - characterData: typeof options.characterData === 'undefined' ? true : options.characterData - }); - - s.observers.push(observer); - } - s.initObservers = function () { - if (s.params.observeParents) { - var containerParents = s.container.parents(); - for (var i = 0; i < containerParents.length; i++) { - initObserver(containerParents[i]); - } - } - - // Observe container - initObserver(s.container[0], {childList: false}); - - // Observe wrapper - initObserver(s.wrapper[0], {attributes: false}); - }; - s.disconnectObservers = function () { - for (var i = 0; i < s.observers.length; i++) { - s.observers[i].disconnect(); - } - s.observers = []; - }; - /*========================= - Loop - ===========================*/ - // Create looped slides - s.createLoop = function () { - // Remove duplicated slides - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - - var slides = s.wrapper.children('.' + s.params.slideClass); - - if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length; - - s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10); - s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides; - if (s.loopedSlides > slides.length) { - s.loopedSlides = slides.length; - } - - var prependSlides = [], appendSlides = [], i; - slides.each(function (index, el) { - var slide = $(this); - if (index < s.loopedSlides) appendSlides.push(el); - if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el); - slide.attr('data-swiper-slide-index', index); - }); - for (i = 0; i < appendSlides.length; i++) { - s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - for (i = prependSlides.length - 1; i >= 0; i--) { - s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - }; - s.destroyLoop = function () { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - s.slides.removeAttr('data-swiper-slide-index'); - }; - s.reLoop = function (updatePosition) { - var oldIndex = s.activeIndex - s.loopedSlides; - s.destroyLoop(); - s.createLoop(); - s.updateSlidesSize(); - if (updatePosition) { - s.slideTo(oldIndex + s.loopedSlides, 0, false); - } - - }; - s.fixLoop = function () { - var newIndex; - //Fix For Negative Oversliding - if (s.activeIndex < s.loopedSlides) { - newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - //Fix For Positive Oversliding - else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) { - newIndex = -s.slides.length + s.activeIndex + s.loopedSlides; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - }; - /*========================= - Append/Prepend/Remove Slides - ===========================*/ - s.appendSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.append(slides[i]); - } - } - else { - s.wrapper.append(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - }; - s.prependSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - var newActiveIndex = s.activeIndex + 1; - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.prepend(slides[i]); - } - newActiveIndex = s.activeIndex + slides.length; - } - else { - s.wrapper.prepend(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - s.slideTo(newActiveIndex, 0, false); - }; - s.removeSlide = function (slidesIndexes) { - if (s.params.loop) { - s.destroyLoop(); - s.slides = s.wrapper.children('.' + s.params.slideClass); - } - var newActiveIndex = s.activeIndex, - indexToRemove; - if (typeof slidesIndexes === 'object' && slidesIndexes.length) { - for (var i = 0; i < slidesIndexes.length; i++) { - indexToRemove = slidesIndexes[i]; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - } - newActiveIndex = Math.max(newActiveIndex, 0); - } - else { - indexToRemove = slidesIndexes; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (s.params.loop) { - s.createLoop(); - } - - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - if (s.params.loop) { - s.slideTo(newActiveIndex + s.loopedSlides, 0, false); - } - else { - s.slideTo(newActiveIndex, 0, false); - } - - }; - s.removeAllSlides = function () { - var slidesIndexes = []; - for (var i = 0; i < s.slides.length; i++) { - slidesIndexes.push(i); - } - s.removeSlide(slidesIndexes); - }; - - - /*========================= - Effects - ===========================*/ - s.effects = { - fade: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var offset = slide[0].swiperSlideOffset; - var tx = -offset; - if (!s.params.virtualTranslate) tx = tx - s.translate; - var ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - var slideOpacity = s.params.fade.crossFade ? - Math.max(1 - Math.abs(slide[0].progress), 0) : - 1 + Math.min(Math.max(slide[0].progress, -1), 0); - slide - .css({ - opacity: slideOpacity - }) - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)'); - - } - - }, - setTransition: function (duration) { - s.slides.transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - flip: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var progress = slide[0].progress; - if (s.params.flip.limitRotation) { - progress = Math.max(Math.min(slide[0].progress, 1), -1); - } - var offset = slide[0].swiperSlideOffset; - var rotate = -180 * progress, - rotateY = rotate, - rotateX = 0, - tx = -offset, - ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - rotateX = -rotateY; - rotateY = 0; - } - else if (s.rtl) { - rotateY = -rotateY; - } - - slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length; - - if (s.params.flip.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - slide - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'); - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.eq(s.activeIndex).transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - if (!$(this).hasClass(s.params.slideActiveClass)) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - cube: { - setTranslate: function () { - var wrapperRotate = 0, cubeShadow; - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow = s.wrapper.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.wrapper.append(cubeShadow); - } - cubeShadow.css({height: s.width + 'px'}); - } - else { - cubeShadow = s.container.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.container.append(cubeShadow); - } - } - } - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var slideAngle = i * 90; - var round = Math.floor(slideAngle / 360); - if (s.rtl) { - slideAngle = -slideAngle; - round = Math.floor(-slideAngle / 360); - } - var progress = Math.max(Math.min(slide[0].progress, 1), -1); - var tx = 0, ty = 0, tz = 0; - if (i % 4 === 0) { - tx = - round * 4 * s.size; - tz = 0; - } - else if ((i - 1) % 4 === 0) { - tx = 0; - tz = - round * 4 * s.size; - } - else if ((i - 2) % 4 === 0) { - tx = s.size + round * 4 * s.size; - tz = s.size; - } - else if ((i - 3) % 4 === 0) { - tx = - s.size; - tz = 3 * s.size + s.size * 4 * round; - } - if (s.rtl) { - tx = -tx; - } - - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - - var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)'; - if (progress <= 1 && progress > -1) { - wrapperRotate = i * 90 + progress * 90; - if (s.rtl) wrapperRotate = -i * 90 - progress * 90; - } - slide.transform(transform); - if (s.params.cube.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - s.wrapper.css({ - '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - 'transform-origin': '50% 50% -' + (s.size / 2) + 'px' - }); - - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')'); - } - else { - var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; - var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); - var scale1 = s.params.cube.shadowScale, - scale2 = s.params.cube.shadowScale / multiplier, - offset = s.params.cube.shadowOffset; - cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)'); - } - } - var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0; - s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)'); - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.cube.shadow && !s.isHorizontal()) { - s.container.find('.swiper-cube-shadow').transition(duration); - } - } - }, - coverflow: { - setTranslate: function () { - var transform = s.translate; - var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2; - var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate; - var translate = s.params.coverflow.depth; - //Each slide offset from center - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideSize = s.slidesSizesGrid[i]; - var slideOffset = slide[0].swiperSlideOffset; - var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier; - - var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0; - var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier; - // var rotateZ = 0 - var translateZ = -translate * Math.abs(offsetMultiplier); - - var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier); - var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0; - - //Fix for ultra small values - if (Math.abs(translateX) < 0.001) translateX = 0; - if (Math.abs(translateY) < 0.001) translateY = 0; - if (Math.abs(translateZ) < 0.001) translateZ = 0; - if (Math.abs(rotateY) < 0.001) rotateY = 0; - if (Math.abs(rotateX) < 0.001) rotateX = 0; - - var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'; - - slide.transform(slideTransform); - slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - if (s.params.coverflow.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; - } - } - - //Set correct perspective for IE10 - if (s.browser.ie) { - var ws = s.wrapper[0].style; - ws.perspectiveOrigin = center + 'px 50%'; - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - } - } - }; - - /*========================= - Images Lazy Loading - ===========================*/ - s.lazy = { - initialImageLoaded: false, - loadImageInSlide: function (index, loadInDuplicate) { - if (typeof index === 'undefined') return; - if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true; - if (s.slides.length === 0) return; - - var slide = s.slides.eq(index); - var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)'); - if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) { - img = img.add(slide[0]); - } - if (img.length === 0) return; - - img.each(function () { - var _img = $(this); - _img.addClass('swiper-lazy-loading'); - var background = _img.attr('data-background'); - var src = _img.attr('data-src'), - srcset = _img.attr('data-srcset'); - s.loadImage(_img[0], (src || background), srcset, false, function () { - if (background) { - _img.css('background-image', 'url("' + background + '")'); - _img.removeAttr('data-background'); - } - else { - if (srcset) { - _img.attr('srcset', srcset); - _img.removeAttr('data-srcset'); - } - if (src) { - _img.attr('src', src); - _img.removeAttr('data-src'); - } - - } - - _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading'); - slide.find('.swiper-lazy-preloader, .preloader').remove(); - if (s.params.loop && loadInDuplicate) { - var slideOriginalIndex = slide.attr('data-swiper-slide-index'); - if (slide.hasClass(s.params.slideDuplicateClass)) { - var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')'); - s.lazy.loadImageInSlide(originalSlide.index(), false); - } - else { - var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]'); - s.lazy.loadImageInSlide(duplicatedSlide.index(), false); - } - } - s.emit('onLazyImageReady', s, slide[0], _img[0]); - }); - - s.emit('onLazyImageLoad', s, slide[0], _img[0]); - }); - - }, - load: function () { - var i; - if (s.params.watchSlidesVisibility) { - s.wrapper.children('.' + s.params.slideVisibleClass).each(function () { - s.lazy.loadImageInSlide($(this).index()); - }); - } - else { - if (s.params.slidesPerView > 1) { - for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - s.lazy.loadImageInSlide(s.activeIndex); - } - } - if (s.params.lazyLoadingInPrevNext) { - if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) { - var amount = s.params.lazyLoadingInPrevNextAmount; - var spv = s.params.slidesPerView; - var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length); - var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0); - // Next Slides - for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - // Prev Slides - for (i = minIndex; i < s.activeIndex ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - var nextSlide = s.wrapper.children('.' + s.params.slideNextClass); - if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index()); - - var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass); - if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index()); - } - } - }, - onTransitionStart: function () { - if (s.params.lazyLoading) { - if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) { - s.lazy.load(); - } - } - }, - onTransitionEnd: function () { - if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) { - s.lazy.load(); - } - } - }; - - - /*========================= - Scrollbar - ===========================*/ - s.scrollbar = { - isTouched: false, - setDragPosition: function (e) { - var sb = s.scrollbar; - var x = 0, y = 0; - var translate; - var pointerPosition = s.isHorizontal() ? - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) : - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ; - var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2; - var positionMin = -s.minTranslate() * sb.moveDivider; - var positionMax = -s.maxTranslate() * sb.moveDivider; - if (position < positionMin) { - position = positionMin; - } - else if (position > positionMax) { - position = positionMax; - } - position = -position / sb.moveDivider; - s.updateProgress(position); - s.setWrapperTranslate(position, true); - }, - dragStart: function (e) { - var sb = s.scrollbar; - sb.isTouched = true; - e.preventDefault(); - e.stopPropagation(); - - sb.setDragPosition(e); - clearTimeout(sb.dragTimeout); - - sb.track.transition(0); - if (s.params.scrollbarHide) { - sb.track.css('opacity', 1); - } - s.wrapper.transition(100); - sb.drag.transition(100); - s.emit('onScrollbarDragStart', s); - }, - dragMove: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - sb.setDragPosition(e); - s.wrapper.transition(0); - sb.track.transition(0); - sb.drag.transition(0); - s.emit('onScrollbarDragMove', s); - }, - dragEnd: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - sb.isTouched = false; - if (s.params.scrollbarHide) { - clearTimeout(sb.dragTimeout); - sb.dragTimeout = setTimeout(function () { - sb.track.css('opacity', 0); - sb.track.transition(400); - }, 1000); - - } - s.emit('onScrollbarDragEnd', s); - if (s.params.scrollbarSnapOnRelease) { - s.slideReset(); - } - }, - enableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).on(s.touchEvents.start, sb.dragStart); - $(target).on(s.touchEvents.move, sb.dragMove); - $(target).on(s.touchEvents.end, sb.dragEnd); - }, - disableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).off(s.touchEvents.start, sb.dragStart); - $(target).off(s.touchEvents.move, sb.dragMove); - $(target).off(s.touchEvents.end, sb.dragEnd); - }, - set: function () { - if (!s.params.scrollbar) return; - var sb = s.scrollbar; - sb.track = $(s.params.scrollbar); - if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) { - sb.track = s.container.find(s.params.scrollbar); - } - sb.drag = sb.track.find('.swiper-scrollbar-drag'); - if (sb.drag.length === 0) { - sb.drag = $('
'); - sb.track.append(sb.drag); - } - sb.drag[0].style.width = ''; - sb.drag[0].style.height = ''; - sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight; - - sb.divider = s.size / s.virtualSize; - sb.moveDivider = sb.divider * (sb.trackSize / s.size); - sb.dragSize = sb.trackSize * sb.divider; - - if (s.isHorizontal()) { - sb.drag[0].style.width = sb.dragSize + 'px'; - } - else { - sb.drag[0].style.height = sb.dragSize + 'px'; - } - - if (sb.divider >= 1) { - sb.track[0].style.display = 'none'; - } - else { - sb.track[0].style.display = ''; - } - if (s.params.scrollbarHide) { - sb.track[0].style.opacity = 0; - } - }, - setTranslate: function () { - if (!s.params.scrollbar) return; - var diff; - var sb = s.scrollbar; - var translate = s.translate || 0; - var newPos; - - var newSize = sb.dragSize; - newPos = (sb.trackSize - sb.dragSize) * s.progress; - if (s.rtl && s.isHorizontal()) { - newPos = -newPos; - if (newPos > 0) { - newSize = sb.dragSize - newPos; - newPos = 0; - } - else if (-newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize + newPos; - } - } - else { - if (newPos < 0) { - newSize = sb.dragSize + newPos; - newPos = 0; - } - else if (newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize - newPos; - } - } - if (s.isHorizontal()) { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)'); - } - else { - sb.drag.transform('translateX(' + (newPos) + 'px)'); - } - sb.drag[0].style.width = newSize + 'px'; - } - else { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)'); - } - else { - sb.drag.transform('translateY(' + (newPos) + 'px)'); - } - sb.drag[0].style.height = newSize + 'px'; - } - if (s.params.scrollbarHide) { - clearTimeout(sb.timeout); - sb.track[0].style.opacity = 1; - sb.timeout = setTimeout(function () { - sb.track[0].style.opacity = 0; - sb.track.transition(400); - }, 1000); - } - }, - setTransition: function (duration) { - if (!s.params.scrollbar) return; - s.scrollbar.drag.transition(duration); - } - }; - - /*========================= - Controller - ===========================*/ - s.controller = { - LinearSpline: function (x, y) { - this.x = x; - this.y = y; - this.lastIndex = x.length - 1; - // Given an x value (x2), return the expected y2 value: - // (x1,y1) is the known point before given value, - // (x3,y3) is the known point after given value. - var i1, i3; - var l = this.x.length; - - this.interpolate = function (x2) { - if (!x2) return 0; - - // Get the indexes of x1 and x3 (the array indexes before and after given x2): - i3 = binarySearch(this.x, x2); - i1 = i3 - 1; - - // We have our indexes i1 & i3, so we can calculate already: - // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 - return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]; - }; - - var binarySearch = (function() { - var maxIndex, minIndex, guess; - return function(array, val) { - minIndex = -1; - maxIndex = array.length; - while (maxIndex - minIndex > 1) - if (array[guess = maxIndex + minIndex >> 1] <= val) { - minIndex = guess; - } else { - maxIndex = guess; - } - return maxIndex; - }; - })(); - }, - //xxx: for now i will just save one spline function to to - getInterpolateFunction: function(c){ - if(!s.controller.spline) s.controller.spline = s.params.loop ? - new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) : - new s.controller.LinearSpline(s.snapGrid, c.snapGrid); - }, - setTranslate: function (translate, byController) { - var controlled = s.params.control; - var multiplier, controlledTranslate; - function setControlledTranslate(c) { - // this will create an Interpolate function based on the snapGrids - // x is the Grid of the scrolled scroller and y will be the controlled scroller - // it makes sense to create this only once and recall it for the interpolation - // the function does a lot of value caching for performance - translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate; - if (s.params.controlBy === 'slide') { - s.controller.getInterpolateFunction(c); - // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid - // but it did not work out - controlledTranslate = -s.controller.spline.interpolate(-translate); - } - - if(!controlledTranslate || s.params.controlBy === 'container'){ - multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate()); - controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate(); - } - - if (s.params.controlInverse) { - controlledTranslate = c.maxTranslate() - controlledTranslate; - } - c.updateProgress(controlledTranslate); - c.setWrapperTranslate(controlledTranslate, false, s); - c.updateActiveIndex(); - } - if (s.isArray(controlled)) { - for (var i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTranslate(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - - setControlledTranslate(controlled); - } - }, - setTransition: function (duration, byController) { - var controlled = s.params.control; - var i; - function setControlledTransition(c) { - c.setWrapperTransition(duration, s); - if (duration !== 0) { - c.onTransitionStart(); - c.wrapper.transitionEnd(function(){ - if (!controlled) return; - if (c.params.loop && s.params.controlBy === 'slide') { - c.fixLoop(); - } - c.onTransitionEnd(); - - }); - } - } - if (s.isArray(controlled)) { - for (i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTransition(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - setControlledTransition(controlled); - } - } - }; - - /*========================= - Hash Navigation - ===========================*/ - s.hashnav = { - init: function () { - if (!s.params.hashnav) return; - s.hashnav.initialized = true; - var hash = document.location.hash.replace('#', ''); - if (!hash) return; - var speed = 0; - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHash = slide.attr('data-hash'); - if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, s.params.runCallbacksOnInit, true); - } - } - }, - setHash: function () { - if (!s.hashnav.initialized || !s.params.hashnav) return; - document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || ''; - } - }; - - /*========================= - Keyboard Control - ===========================*/ - function handleKeyboard(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var kc = e.keyCode || e.charCode; - // Directions locks - if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) { - return false; - } - if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) { - return false; - } - if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { - return; - } - if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { - return; - } - if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { - var inView = false; - //Check that swiper should be inside of visible area of window - if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) { - return; - } - var windowScroll = { - left: window.pageXOffset, - top: window.pageYOffset - }; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var swiperOffset = s.container.offset(); - if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft; - var swiperCoord = [ - [swiperOffset.left, swiperOffset.top], - [swiperOffset.left + s.width, swiperOffset.top], - [swiperOffset.left, swiperOffset.top + s.height], - [swiperOffset.left + s.width, swiperOffset.top + s.height] - ]; - for (var i = 0; i < swiperCoord.length; i++) { - var point = swiperCoord[i]; - if ( - point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && - point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight - ) { - inView = true; - } - - } - if (!inView) return; - } - if (s.isHorizontal()) { - if (kc === 37 || kc === 39) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext(); - if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev(); - } - else { - if (kc === 38 || kc === 40) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if (kc === 40) s.slideNext(); - if (kc === 38) s.slidePrev(); - } - } - s.disableKeyboardControl = function () { - s.params.keyboardControl = false; - $(document).off('keydown', handleKeyboard); - }; - s.enableKeyboardControl = function () { - s.params.keyboardControl = true; - $(document).on('keydown', handleKeyboard); - }; - - - /*========================= - Mousewheel Control - ===========================*/ - s.mousewheel = { - event: false, - lastScrollTime: (new window.Date()).getTime() - }; - if (s.params.mousewheelControl) { - try { - new window.WheelEvent('wheel'); - s.mousewheel.event = 'wheel'; - } catch (e) { - if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) { - s.mousewheel.event = 'wheel'; - } - } - if (!s.mousewheel.event && window.WheelEvent) { - - } - if (!s.mousewheel.event && document.onmousewheel !== undefined) { - s.mousewheel.event = 'mousewheel'; - } - if (!s.mousewheel.event) { - s.mousewheel.event = 'DOMMouseScroll'; - } - } - function handleMousewheel(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var we = s.mousewheel.event; - var delta = 0; - var rtlFactor = s.rtl ? -1 : 1; - - //WebKits - if (we === 'mousewheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY; - else return; - } - } - else { - delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY; - } - } - //Old FireFox - else if (we === 'DOMMouseScroll') delta = -e.detail; - //New FireFox - else if (we === 'wheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY; - else return; - } - } - else { - delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY; - } - } - if (delta === 0) return; - - if (s.params.mousewheelInvert) delta = -delta; - - if (!s.params.freeMode) { - if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) { - if (delta < 0) { - if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - else { - if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - } - s.mousewheel.lastScrollTime = (new window.Date()).getTime(); - - } - else { - //Freemode or scrollContainer: - var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity; - var wasBeginning = s.isBeginning, - wasEnd = s.isEnd; - - if (position >= s.minTranslate()) position = s.minTranslate(); - if (position <= s.maxTranslate()) position = s.maxTranslate(); - - s.setWrapperTransition(0); - s.setWrapperTranslate(position); - s.updateProgress(); - s.updateActiveIndex(); - - if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) { - s.updateClasses(); - } - - if (s.params.freeModeSticky) { - clearTimeout(s.mousewheel.timeout); - s.mousewheel.timeout = setTimeout(function () { - s.slideReset(); - }, 300); - } - else { - if (s.params.lazyLoading && s.lazy) { - s.lazy.load(); - } - } - - // Return page scroll on edge positions - if (position === 0 || position === s.maxTranslate()) return; - } - if (s.params.autoplay) s.stopAutoplay(); - - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - return false; - } - s.disableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.off(s.mousewheel.event, handleMousewheel); - return true; - }; - - s.enableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.on(s.mousewheel.event, handleMousewheel); - return true; - }; - - - /*========================= - Parallax - ===========================*/ - function setParallaxTransform(el, progress) { - el = $(el); - var p, pX, pY; - var rtlFactor = s.rtl ? -1 : 1; - - p = el.attr('data-swiper-parallax') || '0'; - pX = el.attr('data-swiper-parallax-x'); - pY = el.attr('data-swiper-parallax-y'); - if (pX || pY) { - pX = pX || '0'; - pY = pY || '0'; - } - else { - if (s.isHorizontal()) { - pX = p; - pY = '0'; - } - else { - pY = p; - pX = '0'; - } - } - - if ((pX).indexOf('%') >= 0) { - pX = parseInt(pX, 10) * progress * rtlFactor + '%'; - } - else { - pX = pX * progress * rtlFactor + 'px' ; - } - if ((pY).indexOf('%') >= 0) { - pY = parseInt(pY, 10) * progress + '%'; - } - else { - pY = pY * progress + 'px' ; - } - - el.transform('translate3d(' + pX + ', ' + pY + ',0px)'); - } - s.parallax = { - setTranslate: function () { - s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - setParallaxTransform(this, s.progress); - - }); - s.slides.each(function () { - var slide = $(this); - slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () { - var progress = Math.min(Math.max(slide[0].progress, -1), 1); - setParallaxTransform(this, progress); - }); - }); - }, - setTransition: function (duration) { - if (typeof duration === 'undefined') duration = s.params.speed; - s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - var el = $(this); - var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - el.transition(parallaxDuration); - }); - } - }; - - - /*========================= - Plugins API. Collect all and init all plugins - ===========================*/ - s._plugins = []; - for (var plugin in s.plugins) { - var p = s.plugins[plugin](s, s.params[plugin]); - if (p) s._plugins.push(p); - } - // Method to call all plugins event/method - s.callPlugins = function (eventName) { - for (var i = 0; i < s._plugins.length; i++) { - if (eventName in s._plugins[i]) { - s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - }; - - /*========================= - Events/Callbacks/Plugins Emitter - ===========================*/ - function normalizeEventName (eventName) { - if (eventName.indexOf('on') !== 0) { - if (eventName[0] !== eventName[0].toUpperCase()) { - eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); - } - else { - eventName = 'on' + eventName; - } - } - return eventName; - } - s.emitterEventListeners = { - - }; - s.emit = function (eventName) { - // Trigger callbacks - if (s.params[eventName]) { - s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - var i; - // Trigger events - if (s.emitterEventListeners[eventName]) { - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - // Trigger plugins - if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - }; - s.on = function (eventName, handler) { - eventName = normalizeEventName(eventName); - if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; - s.emitterEventListeners[eventName].push(handler); - return s; - }; - s.off = function (eventName, handler) { - var i; - eventName = normalizeEventName(eventName); - if (typeof handler === 'undefined') { - // Remove all handlers for such event - s.emitterEventListeners[eventName] = []; - return s; - } - if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); - } - return s; - }; - s.once = function (eventName, handler) { - eventName = normalizeEventName(eventName); - var _handler = function () { - handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - s.off(eventName, _handler); - }; - s.on(eventName, _handler); - return s; - }; - - // Accessibility tools - s.a11y = { - makeFocusable: function ($el) { - $el.attr('tabIndex', '0'); - return $el; - }, - addRole: function ($el, role) { - $el.attr('role', role); - return $el; - }, - - addLabel: function ($el, label) { - $el.attr('aria-label', label); - return $el; - }, - - disable: function ($el) { - $el.attr('aria-disabled', true); - return $el; - }, - - enable: function ($el) { - $el.attr('aria-disabled', false); - return $el; - }, - - onEnterKey: function (event) { - if (event.keyCode !== 13) return; - if ($(event.target).is(s.params.nextButton)) { - s.onClickNext(event); - if (s.isEnd) { - s.a11y.notify(s.params.lastSlideMessage); - } - else { - s.a11y.notify(s.params.nextSlideMessage); - } - } - else if ($(event.target).is(s.params.prevButton)) { - s.onClickPrev(event); - if (s.isBeginning) { - s.a11y.notify(s.params.firstSlideMessage); - } - else { - s.a11y.notify(s.params.prevSlideMessage); - } - } - if ($(event.target).is('.' + s.params.bulletClass)) { - $(event.target)[0].click(); - } - }, - - liveRegion: $(''), - - notify: function (message) { - var notification = s.a11y.liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(message); - }, - init: function () { - // Setup accessibility - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.a11y.makeFocusable(s.nextButton); - s.a11y.addRole(s.nextButton, 'button'); - s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.a11y.makeFocusable(s.prevButton); - s.a11y.addRole(s.prevButton, 'button'); - s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage); - } - - $(s.container).append(s.a11y.liveRegion); - }, - initPagination: function () { - if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) { - s.bullets.each(function () { - var bullet = $(this); - s.a11y.makeFocusable(bullet); - s.a11y.addRole(bullet, 'button'); - s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1)); - }); - } - }, - destroy: function () { - if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove(); - } - }; - - - /*========================= - Init/Destroy - ===========================*/ - s.init = function () { - if (s.params.loop) s.createLoop(); - s.updateContainerSize(); - s.updateSlidesSize(); - s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - if (s.params.scrollbarDraggable) { - s.scrollbar.enableDraggable(); - } - } - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - if (!s.params.loop) s.updateProgress(); - s.effects[s.params.effect].setTranslate(); - } - if (s.params.loop) { - s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit); - } - else { - s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit); - if (s.params.initialSlide === 0) { - if (s.parallax && s.params.parallax) s.parallax.setTranslate(); - if (s.lazy && s.params.lazyLoading) { - s.lazy.load(); - s.lazy.initialImageLoaded = true; - } - } - } - s.attachEvents(); - if (s.params.observer && s.support.observer) { - s.initObservers(); - } - if (s.params.preloadImages && !s.params.lazyLoading) { - s.preloadImages(); - } - if (s.params.autoplay) { - s.startAutoplay(); - } - if (s.params.keyboardControl) { - if (s.enableKeyboardControl) s.enableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.enableMousewheelControl) s.enableMousewheelControl(); - } - if (s.params.hashnav) { - if (s.hashnav) s.hashnav.init(); - } - if (s.params.a11y && s.a11y) s.a11y.init(); - s.emit('onInit', s); - }; - - // Cleanup dynamic styles - s.cleanupStyles = function () { - // Container - s.container.removeClass(s.classNames.join(' ')).removeAttr('style'); - - // Wrapper - s.wrapper.removeAttr('style'); - - // Slides - if (s.slides && s.slides.length) { - s.slides - .removeClass([ - s.params.slideVisibleClass, - s.params.slideActiveClass, - s.params.slideNextClass, - s.params.slidePrevClass - ].join(' ')) - .removeAttr('style') - .removeAttr('data-swiper-column') - .removeAttr('data-swiper-row'); - } - - // Pagination/Bullets - if (s.paginationContainer && s.paginationContainer.length) { - s.paginationContainer.removeClass(s.params.paginationHiddenClass); - } - if (s.bullets && s.bullets.length) { - s.bullets.removeClass(s.params.bulletActiveClass); - } - - // Buttons - if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass); - if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass); - - // Scrollbar - if (s.params.scrollbar && s.scrollbar) { - if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style'); - if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style'); - } - }; - - // Destroy - s.destroy = function (deleteInstance, cleanupStyles) { - // Detach evebts - s.detachEvents(); - // Stop autoplay - s.stopAutoplay(); - // Disable draggable - if (s.params.scrollbar && s.scrollbar) { - if (s.params.scrollbarDraggable) { - s.scrollbar.disableDraggable(); - } - } - // Destroy loop - if (s.params.loop) { - s.destroyLoop(); - } - // Cleanup styles - if (cleanupStyles) { - s.cleanupStyles(); - } - // Disconnect observer - s.disconnectObservers(); - // Disable keyboard/mousewheel - if (s.params.keyboardControl) { - if (s.disableKeyboardControl) s.disableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.disableMousewheelControl) s.disableMousewheelControl(); - } - // Disable a11y - if (s.params.a11y && s.a11y) s.a11y.destroy(); - // Destroy callback - s.emit('onDestroy'); - // Delete instance - if (deleteInstance !== false) s = null; - }; - - s.init(); - - - - // Return swiper instance - return s; - }; - - - /*================================================== - Prototype - ====================================================*/ - Swiper.prototype = { - isSafari: (function () { - var ua = navigator.userAgent.toLowerCase(); - return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); - })(), - isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent), - isArray: function (arr) { - return Object.prototype.toString.apply(arr) === '[object Array]'; - }, - /*================================================== - Browser - ====================================================*/ - browser: { - ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled, - ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1) - }, - /*================================================== - Devices - ====================================================*/ - device: (function () { - var ua = navigator.userAgent; - var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); - var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); - var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); - return { - ios: ipad || iphone || ipod, - android: android - }; - })(), - /*================================================== - Feature Detection - ====================================================*/ - support: { - touch : (window.Modernizr && Modernizr.touch === true) || (function () { - return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); - })(), - - transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () { - var div = document.createElement('div').style; - return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); - })(), - - flexbox: (function () { - var div = document.createElement('div').style; - var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); - for (var i = 0; i < styles.length; i++) { - if (styles[i] in div) return true; - } - })(), - - observer: (function () { - return ('MutationObserver' in window || 'WebkitMutationObserver' in window); - })() - }, - /*================================================== - Plugins - ====================================================*/ - plugins: {} - }; - - - /*=========================== - Dom7 Library - ===========================*/ - var Dom7 = (function () { - var Dom7 = function (arr) { - var _this = this, i = 0; - // Create array-like object - for (i = 0; i < arr.length; i++) { - _this[i] = arr[i]; - } - _this.length = arr.length; - // Return collection with methods - return this; - }; - var $ = function (selector, context) { - var arr = [], i = 0; - if (selector && !context) { - if (selector instanceof Dom7) { - return selector; - } - } - if (selector) { - // String - if (typeof selector === 'string') { - var els, tempParent, html = selector.trim(); - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - var toCreate = 'div'; - if (html.indexOf(':~]/)) { - // Pure ID selector - els = [document.getElementById(selector.split('#')[1])]; - } - else { - // Other selectors - els = (context || document).querySelectorAll(selector); - } - for (i = 0; i < els.length; i++) { - if (els[i]) arr.push(els[i]); - } - } - } - // Node/element - else if (selector.nodeType || selector === window || selector === document) { - arr.push(selector); - } - //Array of elements or instance of Dom - else if (selector.length > 0 && selector[0].nodeType) { - for (i = 0; i < selector.length; i++) { - arr.push(selector[i]); - } - } - } - return new Dom7(arr); - }; - Dom7.prototype = { - // Classes and attriutes - addClass: function (className) { - if (typeof className === 'undefined') { - return this; - } - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.add(classes[i]); - } - } - return this; - }, - removeClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.remove(classes[i]); - } - } - return this; - }, - hasClass: function (className) { - if (!this[0]) return false; - else return this[0].classList.contains(className); - }, - toggleClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.toggle(classes[i]); - } - } - return this; - }, - attr: function (attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - else return undefined; - } - else { - // Set attrs - for (var i = 0; i < this.length; i++) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } - else { - // Object - for (var attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - return this; - } - }, - removeAttr: function (attr) { - for (var i = 0; i < this.length; i++) { - this[i].removeAttribute(attr); - } - return this; - }, - data: function (key, value) { - if (typeof value === 'undefined') { - // Get value - if (this[0]) { - var dataKey = this[0].getAttribute('data-' + key); - if (dataKey) return dataKey; - else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key]; - else return undefined; - } - else return undefined; - } - else { - // Set value - for (var i = 0; i < this.length; i++) { - var el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - return this; - } - }, - // Transforms - transform : function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }, - transition: function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }, - //Events - on: function (eventName, targetSelector, listener, capture) { - function handleLiveEvent(e) { - var target = e.target; - if ($(target).is(targetSelector)) listener.call(target, e); - else { - var parents = $(target).parents(); - for (var k = 0; k < parents.length; k++) { - if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e); - } - } - } - var events = eventName.split(' '); - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - for (j = 0; j < events.length; j++) { - this[i].addEventListener(events[j], listener, capture); - } - } - else { - //Live events - for (j = 0; j < events.length; j++) { - if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = []; - this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent}); - this[i].addEventListener(events[j], handleLiveEvent, capture); - } - } - } - - return this; - }, - off: function (eventName, targetSelector, listener, capture) { - var events = eventName.split(' '); - for (var i = 0; i < events.length; i++) { - for (var j = 0; j < this.length; j++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - this[j].removeEventListener(events[i], listener, capture); - } - else { - // Live event - if (this[j].dom7LiveListeners) { - for (var k = 0; k < this[j].dom7LiveListeners.length; k++) { - if (this[j].dom7LiveListeners[k].listener === listener) { - this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture); - } - } - } - } - } - } - return this; - }, - once: function (eventName, targetSelector, listener, capture) { - var dom = this; - if (typeof targetSelector === 'function') { - targetSelector = false; - listener = arguments[1]; - capture = arguments[2]; - } - function proxy(e) { - listener(e); - dom.off(eventName, targetSelector, proxy, capture); - } - dom.on(eventName, targetSelector, proxy, capture); - }, - trigger: function (eventName, eventData) { - for (var i = 0; i < this.length; i++) { - var evt; - try { - evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true}); - } - catch (e) { - evt = document.createEvent('Event'); - evt.initEvent(eventName, true, true); - evt.detail = eventData; - } - this[i].dispatchEvent(evt); - } - return this; - }, - transitionEnd: function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }, - // Sizing/Styles - width: function () { - if (this[0] === window) { - return window.innerWidth; - } - else { - if (this.length > 0) { - return parseFloat(this.css('width')); - } - else { - return null; - } - } - }, - outerWidth: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left')); - else - return this[0].offsetWidth; - } - else return null; - }, - height: function () { - if (this[0] === window) { - return window.innerHeight; - } - else { - if (this.length > 0) { - return parseFloat(this.css('height')); - } - else { - return null; - } - } - }, - outerHeight: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom')); - else - return this[0].offsetHeight; - } - else return null; - }, - offset: function () { - if (this.length > 0) { - var el = this[0]; - var box = el.getBoundingClientRect(); - var body = document.body; - var clientTop = el.clientTop || body.clientTop || 0; - var clientLeft = el.clientLeft || body.clientLeft || 0; - var scrollTop = window.pageYOffset || el.scrollTop; - var scrollLeft = window.pageXOffset || el.scrollLeft; - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - }; - } - else { - return null; - } - }, - css: function (props, value) { - var i; - if (arguments.length === 1) { - if (typeof props === 'string') { - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } - else { - for (i = 0; i < this.length; i++) { - for (var prop in props) { - this[i].style[prop] = props[prop]; - } - } - return this; - } - } - if (arguments.length === 2 && typeof props === 'string') { - for (i = 0; i < this.length; i++) { - this[i].style[props] = value; - } - return this; - } - return this; - }, - - //Dom manipulation - each: function (callback) { - for (var i = 0; i < this.length; i++) { - callback.call(this[i], i, this[i]); - } - return this; - }, - html: function (html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : undefined; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].innerHTML = html; - } - return this; - } - }, - text: function (text) { - if (typeof text === 'undefined') { - if (this[0]) { - return this[0].textContent.trim(); - } - else return null; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].textContent = text; - } - return this; - } - }, - is: function (selector) { - if (!this[0]) return false; - var compareWith, i; - if (typeof selector === 'string') { - var el = this[0]; - if (el === document) return selector === document; - if (el === window) return selector === window; - - if (el.matches) return el.matches(selector); - else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector); - else if (el.msMatchesSelector) return el.msMatchesSelector(selector); - else { - compareWith = $(selector); - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - } - else if (selector === document) return this[0] === document; - else if (selector === window) return this[0] === window; - else { - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - return false; - } - - }, - index: function () { - if (this[0]) { - var child = this[0]; - var i = 0; - while ((child = child.previousSibling) !== null) { - if (child.nodeType === 1) i++; - } - return i; - } - else return undefined; - }, - eq: function (index) { - if (typeof index === 'undefined') return this; - var length = this.length; - var returnIndex; - if (index > length - 1) { - return new Dom7([]); - } - if (index < 0) { - returnIndex = length + index; - if (returnIndex < 0) return new Dom7([]); - else return new Dom7([this[returnIndex]]); - } - return new Dom7([this[index]]); - }, - append: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].appendChild(newChild[j]); - } - } - else { - this[i].appendChild(newChild); - } - } - return this; - }, - prepend: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - for (j = tempDiv.childNodes.length - 1; j >= 0; j--) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - // this[i].insertAdjacentHTML('afterbegin', newChild); - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } - else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - return this; - }, - insertBefore: function (selector) { - var before = $(selector); - for (var i = 0; i < this.length; i++) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } - else if (before.length > 1) { - for (var j = 0; j < before.length; j++) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - }, - insertAfter: function (selector) { - var after = $(selector); - for (var i = 0; i < this.length; i++) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } - else if (after.length > 1) { - for (var j = 0; j < after.length; j++) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - }, - next: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - nextAll: function (selector) { - var nextEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.nextElementSibling) { - var next = el.nextElementSibling; - if (selector) { - if($(next).is(selector)) nextEls.push(next); - } - else nextEls.push(next); - el = next; - } - return new Dom7(nextEls); - }, - prev: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - prevAll: function (selector) { - var prevEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.previousElementSibling) { - var prev = el.previousElementSibling; - if (selector) { - if($(prev).is(selector)) prevEls.push(prev); - } - else prevEls.push(prev); - el = prev; - } - return new Dom7(prevEls); - }, - parent: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } - else { - parents.push(this[i].parentNode); - } - } - return $($.unique(parents)); - }, - parents: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - var parent = this[i].parentNode; - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } - else { - parents.push(parent); - } - parent = parent.parentNode; - } - } - return $($.unique(parents)); - }, - find : function (selector) { - var foundElements = []; - for (var i = 0; i < this.length; i++) { - var found = this[i].querySelectorAll(selector); - for (var j = 0; j < found.length; j++) { - foundElements.push(found[j]); - } - } - return new Dom7(foundElements); - }, - children: function (selector) { - var children = []; - for (var i = 0; i < this.length; i++) { - var childNodes = this[i].childNodes; - - for (var j = 0; j < childNodes.length; j++) { - if (!selector) { - if (childNodes[j].nodeType === 1) children.push(childNodes[j]); - } - else { - if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]); - } - } - } - return new Dom7($.unique(children)); - }, - remove: function () { - for (var i = 0; i < this.length; i++) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - return this; - }, - add: function () { - var dom = this; - var i, j; - for (i = 0; i < arguments.length; i++) { - var toAdd = $(arguments[i]); - for (j = 0; j < toAdd.length; j++) { - dom[dom.length] = toAdd[j]; - dom.length++; - } - } - return dom; - } - }; - $.fn = Dom7.prototype; - $.unique = function (arr) { - var unique = []; - for (var i = 0; i < arr.length; i++) { - if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]); - } - return unique; - }; - - return $; - })(); - - - /*=========================== - Get Dom libraries - ===========================*/ - var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7']; - for (var i = 0; i < swiperDomPlugins.length; i++) { - if (window[swiperDomPlugins[i]]) { - addLibraryPlugin(window[swiperDomPlugins[i]]); - } - } - // Required DOM Plugins - var domLib; - if (typeof Dom7 === 'undefined') { - domLib = window.Dom7 || window.Zepto || window.jQuery; - } - else { - domLib = Dom7; - } - - /*=========================== - Add .swiper plugin from Dom libraries - ===========================*/ - function addLibraryPlugin(lib) { - lib.fn.swiper = function (params) { - var firstInstance; - lib(this).each(function () { - var s = new Swiper(this, params); - if (!firstInstance) firstInstance = s; - }); - return firstInstance; - }; - } - - if (domLib) { - if (!('transitionEnd' in domLib.fn)) { - domLib.fn.transitionEnd = function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }; - } - if (!('transform' in domLib.fn)) { - domLib.fn.transform = function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }; - } - if (!('transition' in domLib.fn)) { - domLib.fn.transition = function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }; - } - } - - window.Swiper = Swiper; -})(); -/*=========================== -Swiper AMD Export -===========================*/ -if (typeof(module) !== 'undefined') -{ - module.exports = window.Swiper; -} -else if (typeof define === 'function' && define.amd) { - define([], function () { - 'use strict'; - return window.Swiper; - }); -} -//# sourceMappingURL=maps/swiper.js.map diff --git a/dashboard-ui/bower_components/Swiper/src/js/a11y.js b/dashboard-ui/bower_components/Swiper/src/js/a11y.js deleted file mode 100644 index 3d75d2ebb7..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/a11y.js +++ /dev/null @@ -1,88 +0,0 @@ -// Accessibility tools -s.a11y = { - makeFocusable: function ($el) { - $el.attr('tabIndex', '0'); - return $el; - }, - addRole: function ($el, role) { - $el.attr('role', role); - return $el; - }, - - addLabel: function ($el, label) { - $el.attr('aria-label', label); - return $el; - }, - - disable: function ($el) { - $el.attr('aria-disabled', true); - return $el; - }, - - enable: function ($el) { - $el.attr('aria-disabled', false); - return $el; - }, - - onEnterKey: function (event) { - if (event.keyCode !== 13) return; - if ($(event.target).is(s.params.nextButton)) { - s.onClickNext(event); - if (s.isEnd) { - s.a11y.notify(s.params.lastSlideMessage); - } - else { - s.a11y.notify(s.params.nextSlideMessage); - } - } - else if ($(event.target).is(s.params.prevButton)) { - s.onClickPrev(event); - if (s.isBeginning) { - s.a11y.notify(s.params.firstSlideMessage); - } - else { - s.a11y.notify(s.params.prevSlideMessage); - } - } - if ($(event.target).is('.' + s.params.bulletClass)) { - $(event.target)[0].click(); - } - }, - - liveRegion: $(''), - - notify: function (message) { - var notification = s.a11y.liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(message); - }, - init: function () { - // Setup accessibility - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.a11y.makeFocusable(s.nextButton); - s.a11y.addRole(s.nextButton, 'button'); - s.a11y.addLabel(s.nextButton, s.params.nextSlideMessage); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.a11y.makeFocusable(s.prevButton); - s.a11y.addRole(s.prevButton, 'button'); - s.a11y.addLabel(s.prevButton, s.params.prevSlideMessage); - } - - $(s.container).append(s.a11y.liveRegion); - }, - initPagination: function () { - if (s.params.pagination && s.params.paginationClickable && s.bullets && s.bullets.length) { - s.bullets.each(function () { - var bullet = $(this); - s.a11y.makeFocusable(bullet); - s.a11y.addRole(bullet, 'button'); - s.a11y.addLabel(bullet, s.params.paginationBulletMessage.replace(/{{index}}/, bullet.index() + 1)); - }); - } - }, - destroy: function () { - if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove(); - } -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/amd.js b/dashboard-ui/bower_components/Swiper/src/js/amd.js deleted file mode 100644 index 4d1d2b5d1d..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/amd.js +++ /dev/null @@ -1,13 +0,0 @@ -/*=========================== -Swiper AMD Export -===========================*/ -if (typeof(module) !== 'undefined') -{ - module.exports = window.Swiper; -} -else if (typeof define === 'function' && define.amd) { - define([], function () { - 'use strict'; - return window.Swiper; - }); -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/controller.js b/dashboard-ui/bower_components/Swiper/src/js/controller.js deleted file mode 100644 index b6b5d7acb6..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/controller.js +++ /dev/null @@ -1,116 +0,0 @@ -/*========================= - Controller - ===========================*/ -s.controller = { - LinearSpline: function (x, y) { - this.x = x; - this.y = y; - this.lastIndex = x.length - 1; - // Given an x value (x2), return the expected y2 value: - // (x1,y1) is the known point before given value, - // (x3,y3) is the known point after given value. - var i1, i3; - var l = this.x.length; - - this.interpolate = function (x2) { - if (!x2) return 0; - - // Get the indexes of x1 and x3 (the array indexes before and after given x2): - i3 = binarySearch(this.x, x2); - i1 = i3 - 1; - - // We have our indexes i1 & i3, so we can calculate already: - // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 - return ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]; - }; - - var binarySearch = (function() { - var maxIndex, minIndex, guess; - return function(array, val) { - minIndex = -1; - maxIndex = array.length; - while (maxIndex - minIndex > 1) - if (array[guess = maxIndex + minIndex >> 1] <= val) { - minIndex = guess; - } else { - maxIndex = guess; - } - return maxIndex; - }; - })(); - }, - //xxx: for now i will just save one spline function to to - getInterpolateFunction: function(c){ - if(!s.controller.spline) s.controller.spline = s.params.loop ? - new s.controller.LinearSpline(s.slidesGrid, c.slidesGrid) : - new s.controller.LinearSpline(s.snapGrid, c.snapGrid); - }, - setTranslate: function (translate, byController) { - var controlled = s.params.control; - var multiplier, controlledTranslate; - function setControlledTranslate(c) { - // this will create an Interpolate function based on the snapGrids - // x is the Grid of the scrolled scroller and y will be the controlled scroller - // it makes sense to create this only once and recall it for the interpolation - // the function does a lot of value caching for performance - translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate; - if (s.params.controlBy === 'slide') { - s.controller.getInterpolateFunction(c); - // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid - // but it did not work out - controlledTranslate = -s.controller.spline.interpolate(-translate); - } - - if(!controlledTranslate || s.params.controlBy === 'container'){ - multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate()); - controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate(); - } - - if (s.params.controlInverse) { - controlledTranslate = c.maxTranslate() - controlledTranslate; - } - c.updateProgress(controlledTranslate); - c.setWrapperTranslate(controlledTranslate, false, s); - c.updateActiveIndex(); - } - if (s.isArray(controlled)) { - for (var i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTranslate(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - - setControlledTranslate(controlled); - } - }, - setTransition: function (duration, byController) { - var controlled = s.params.control; - var i; - function setControlledTransition(c) { - c.setWrapperTransition(duration, s); - if (duration !== 0) { - c.onTransitionStart(); - c.wrapper.transitionEnd(function(){ - if (!controlled) return; - if (c.params.loop && s.params.controlBy === 'slide') { - c.fixLoop(); - } - c.onTransitionEnd(); - - }); - } - } - if (s.isArray(controlled)) { - for (i = 0; i < controlled.length; i++) { - if (controlled[i] !== byController && controlled[i] instanceof Swiper) { - setControlledTransition(controlled[i]); - } - } - } - else if (controlled instanceof Swiper && byController !== controlled) { - setControlledTransition(controlled); - } - } -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/core.js b/dashboard-ui/bower_components/Swiper/src/js/core.js deleted file mode 100644 index ab3e49d065..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/core.js +++ /dev/null @@ -1,2288 +0,0 @@ -var defaults = { - direction: 'horizontal', - touchEventsTarget: 'container', - initialSlide: 0, - speed: 300, - // autoplay - autoplay: false, - autoplayDisableOnInteraction: true, - autoplayStopOnLast: false, - // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). - iOSEdgeSwipeDetection: false, - iOSEdgeSwipeThreshold: 20, - // Free mode - freeMode: false, - freeModeMomentum: true, - freeModeMomentumRatio: 1, - freeModeMomentumBounce: true, - freeModeMomentumBounceRatio: 1, - freeModeSticky: false, - freeModeMinimumVelocity: 0.02, - // Autoheight - autoHeight: false, - // Set wrapper width - setWrapperSize: false, - // Virtual Translate - virtualTranslate: false, - // Effects - effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' - coverflow: { - rotate: 50, - stretch: 0, - depth: 100, - modifier: 1, - slideShadows : true - }, - flip: { - slideShadows : true, - limitRotation: true - }, - cube: { - slideShadows: true, - shadow: true, - shadowOffset: 20, - shadowScale: 0.94 - }, - fade: { - crossFade: false - }, - // Parallax - parallax: false, - // Scrollbar - scrollbar: null, - scrollbarHide: true, - scrollbarDraggable: false, - scrollbarSnapOnRelease: false, - // Keyboard Mousewheel - keyboardControl: false, - mousewheelControl: false, - mousewheelReleaseOnEdges: false, - mousewheelInvert: false, - mousewheelForceToAxis: false, - mousewheelSensitivity: 1, - // Hash Navigation - hashnav: false, - // Breakpoints - breakpoints: undefined, - // Slides grid - spaceBetween: 0, - slidesPerView: 1, - slidesPerColumn: 1, - slidesPerColumnFill: 'column', - slidesPerGroup: 1, - centeredSlides: false, - slidesOffsetBefore: 0, // in px - slidesOffsetAfter: 0, // in px - // Round length - roundLengths: false, - // Touches - touchRatio: 1, - touchAngle: 45, - simulateTouch: true, - shortSwipes: true, - longSwipes: true, - longSwipesRatio: 0.5, - longSwipesMs: 300, - followFinger: true, - onlyExternal: false, - threshold: 0, - touchMoveStopPropagation: true, - // Unique Navigation Elements - uniqueNavElements: true, - // Pagination - pagination: null, - paginationElement: 'span', - paginationClickable: false, - paginationHide: false, - paginationBulletRender: null, - paginationProgressRender: null, - paginationFractionRender: null, - paginationCustomRender: null, - paginationType: 'bullets', // 'bullets' or 'progress' or 'fraction' or 'custom' - // Resistance - resistance: true, - resistanceRatio: 0.85, - // Next/prev buttons - nextButton: null, - prevButton: null, - // Progress - watchSlidesProgress: false, - watchSlidesVisibility: false, - // Cursor - grabCursor: false, - // Clicks - preventClicks: true, - preventClicksPropagation: true, - slideToClickedSlide: false, - // Lazy Loading - lazyLoading: false, - lazyLoadingInPrevNext: false, - lazyLoadingInPrevNextAmount: 1, - lazyLoadingOnTransitionStart: false, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - // Control - control: undefined, - controlInverse: false, - controlBy: 'slide', //or 'container' - // Swiping/no swiping - allowSwipeToPrev: true, - allowSwipeToNext: true, - swipeHandler: null, //'.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - // NS - slideClass: 'swiper-slide', - slideActiveClass: 'swiper-slide-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slidePrevClass: 'swiper-slide-prev', - wrapperClass: 'swiper-wrapper', - bulletClass: 'swiper-pagination-bullet', - bulletActiveClass: 'swiper-pagination-bullet-active', - buttonDisabledClass: 'swiper-button-disabled', - paginationCurrentClass: 'swiper-pagination-current', - paginationTotalClass: 'swiper-pagination-total', - paginationHiddenClass: 'swiper-pagination-hidden', - paginationProgressbarClass: 'swiper-pagination-progressbar', - // Observer - observer: false, - observeParents: false, - // Accessibility - a11y: false, - prevSlideMessage: 'Previous slide', - nextSlideMessage: 'Next slide', - firstSlideMessage: 'This is the first slide', - lastSlideMessage: 'This is the last slide', - paginationBulletMessage: 'Go to slide {{index}}', - // Callbacks - runCallbacksOnInit: true - /* - Callbacks: - onInit: function (swiper) - onDestroy: function (swiper) - onClick: function (swiper, e) - onTap: function (swiper, e) - onDoubleTap: function (swiper, e) - onSliderMove: function (swiper, e) - onSlideChangeStart: function (swiper) - onSlideChangeEnd: function (swiper) - onTransitionStart: function (swiper) - onTransitionEnd: function (swiper) - onImagesReady: function (swiper) - onProgress: function (swiper, progress) - onTouchStart: function (swiper, e) - onTouchMove: function (swiper, e) - onTouchMoveOpposite: function (swiper, e) - onTouchEnd: function (swiper, e) - onReachBeginning: function (swiper) - onReachEnd: function (swiper) - onSetTransition: function (swiper, duration) - onSetTranslate: function (swiper, translate) - onAutoplayStart: function (swiper) - onAutoplayStop: function (swiper), - onLazyImageLoad: function (swiper, slide, image) - onLazyImageReady: function (swiper, slide, image) - */ - -}; -var initialVirtualTranslate = params && params.virtualTranslate; - -params = params || {}; -var originalParams = {}; -for (var param in params) { - if (typeof params[param] === 'object' && params[param] !== null && !(params[param].nodeType || params[param] === window || params[param] === document || (typeof Dom7 !== 'undefined' && params[param] instanceof Dom7) || (typeof jQuery !== 'undefined' && params[param] instanceof jQuery))) { - originalParams[param] = {}; - for (var deepParam in params[param]) { - originalParams[param][deepParam] = params[param][deepParam]; - } - } - else { - originalParams[param] = params[param]; - } -} -for (var def in defaults) { - if (typeof params[def] === 'undefined') { - params[def] = defaults[def]; - } - else if (typeof params[def] === 'object') { - for (var deepDef in defaults[def]) { - if (typeof params[def][deepDef] === 'undefined') { - params[def][deepDef] = defaults[def][deepDef]; - } - } - } -} - -// Swiper -var s = this; - -// Params -s.params = params; -s.originalParams = originalParams; - -// Classname -s.classNames = []; -/*========================= - Dom Library and plugins - ===========================*/ -if (typeof $ !== 'undefined' && typeof Dom7 !== 'undefined'){ - $ = Dom7; -} -if (typeof $ === 'undefined') { - if (typeof Dom7 === 'undefined') { - $ = window.Dom7 || window.Zepto || window.jQuery; - } - else { - $ = Dom7; - } - if (!$) return; -} -// Export it to Swiper instance -s.$ = $; - -/*========================= - Breakpoints - ===========================*/ -s.currentBreakpoint = undefined; -s.getActiveBreakpoint = function () { - //Get breakpoint for window width - if (!s.params.breakpoints) return false; - var breakpoint = false; - var points = [], point; - for ( point in s.params.breakpoints ) { - if (s.params.breakpoints.hasOwnProperty(point)) { - points.push(point); - } - } - points.sort(function (a, b) { - return parseInt(a, 10) > parseInt(b, 10); - }); - for (var i = 0; i < points.length; i++) { - point = points[i]; - if (point >= window.innerWidth && !breakpoint) { - breakpoint = point; - } - } - return breakpoint || 'max'; -}; -s.setBreakpoint = function () { - //Set breakpoint for window width and update parameters - var breakpoint = s.getActiveBreakpoint(); - if (breakpoint && s.currentBreakpoint !== breakpoint) { - var breakPointsParams = breakpoint in s.params.breakpoints ? s.params.breakpoints[breakpoint] : s.originalParams; - var needsReLoop = s.params.loop && (breakPointsParams.slidesPerView !== s.params.slidesPerView); - for ( var param in breakPointsParams ) { - s.params[param] = breakPointsParams[param]; - } - s.currentBreakpoint = breakpoint; - if(needsReLoop && s.destroyLoop) { - s.reLoop(true); - } - } -}; -// Set breakpoint on load -if (s.params.breakpoints) { - s.setBreakpoint(); -} - -/*========================= - Preparation - Define Container, Wrapper and Pagination - ===========================*/ -s.container = $(container); -if (s.container.length === 0) return; -if (s.container.length > 1) { - var swipers = []; - s.container.each(function () { - var container = this; - swipers.push(new Swiper(this, params)); - }); - return swipers; -} - -// Save instance in container HTML Element and in data -s.container[0].swiper = s; -s.container.data('swiper', s); - -s.classNames.push('swiper-container-' + s.params.direction); - -if (s.params.freeMode) { - s.classNames.push('swiper-container-free-mode'); -} -if (!s.support.flexbox) { - s.classNames.push('swiper-container-no-flexbox'); - s.params.slidesPerColumn = 1; -} -if (s.params.autoHeight) { - s.classNames.push('swiper-container-autoheight'); -} -// Enable slides progress when required -if (s.params.parallax || s.params.watchSlidesVisibility) { - s.params.watchSlidesProgress = true; -} -// Coverflow / 3D -if (['cube', 'coverflow', 'flip'].indexOf(s.params.effect) >= 0) { - if (s.support.transforms3d) { - s.params.watchSlidesProgress = true; - s.classNames.push('swiper-container-3d'); - } - else { - s.params.effect = 'slide'; - } -} -if (s.params.effect !== 'slide') { - s.classNames.push('swiper-container-' + s.params.effect); -} -if (s.params.effect === 'cube') { - s.params.resistanceRatio = 0; - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.centeredSlides = false; - s.params.spaceBetween = 0; - s.params.virtualTranslate = true; - s.params.setWrapperSize = false; -} -if (s.params.effect === 'fade' || s.params.effect === 'flip') { - s.params.slidesPerView = 1; - s.params.slidesPerColumn = 1; - s.params.slidesPerGroup = 1; - s.params.watchSlidesProgress = true; - s.params.spaceBetween = 0; - s.params.setWrapperSize = false; - if (typeof initialVirtualTranslate === 'undefined') { - s.params.virtualTranslate = true; - } -} - -// Grab Cursor -if (s.params.grabCursor && s.support.touch) { - s.params.grabCursor = false; -} - -// Wrapper -s.wrapper = s.container.children('.' + s.params.wrapperClass); - -// Pagination -if (s.params.pagination) { - s.paginationContainer = $(s.params.pagination); - if (s.params.uniqueNavElements && typeof s.params.pagination === 'string' && s.paginationContainer.length > 1 && s.container.find(s.params.pagination).length === 1) { - s.paginationContainer = s.container.find(s.params.pagination); - } - - if (s.params.paginationType === 'bullets' && s.params.paginationClickable) { - s.paginationContainer.addClass('swiper-pagination-clickable'); - } - else { - s.params.paginationClickable = false; - } - s.paginationContainer.addClass('swiper-pagination-' + s.params.paginationType); -} -// Next/Prev Buttons -if (s.params.nextButton || s.params.prevButton) { - if (s.params.nextButton) { - s.nextButton = $(s.params.nextButton); - if (s.params.uniqueNavElements && typeof s.params.nextButton === 'string' && s.nextButton.length > 1 && s.container.find(s.params.nextButton).length === 1) { - s.nextButton = s.container.find(s.params.nextButton); - } - } - if (s.params.prevButton) { - s.prevButton = $(s.params.prevButton); - if (s.params.uniqueNavElements && typeof s.params.prevButton === 'string' && s.prevButton.length > 1 && s.container.find(s.params.prevButton).length === 1) { - s.prevButton = s.container.find(s.params.prevButton); - } - } -} - -// Is Horizontal -s.isHorizontal = function () { - return s.params.direction === 'horizontal'; -}; -// s.isH = isH; - -// RTL -s.rtl = s.isHorizontal() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl'); -if (s.rtl) { - s.classNames.push('swiper-container-rtl'); -} - -// Wrong RTL support -if (s.rtl) { - s.wrongRTL = s.wrapper.css('display') === '-webkit-box'; -} - -// Columns -if (s.params.slidesPerColumn > 1) { - s.classNames.push('swiper-container-multirow'); -} - -// Check for Android -if (s.device.android) { - s.classNames.push('swiper-container-android'); -} - -// Add classes -s.container.addClass(s.classNames.join(' ')); - -// Translate -s.translate = 0; - -// Progress -s.progress = 0; - -// Velocity -s.velocity = 0; - -/*========================= - Locks, unlocks - ===========================*/ -s.lockSwipeToNext = function () { - s.params.allowSwipeToNext = false; -}; -s.lockSwipeToPrev = function () { - s.params.allowSwipeToPrev = false; -}; -s.lockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false; -}; -s.unlockSwipeToNext = function () { - s.params.allowSwipeToNext = true; -}; -s.unlockSwipeToPrev = function () { - s.params.allowSwipeToPrev = true; -}; -s.unlockSwipes = function () { - s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true; -}; - -/*========================= - Round helper - ===========================*/ -function round(a) { - return Math.floor(a); -} -/*========================= - Set grab cursor - ===========================*/ -if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; -} -/*========================= - Update on Images Ready - ===========================*/ -s.imagesToLoad = []; -s.imagesLoaded = 0; - -s.loadImage = function (imgElement, src, srcset, checkForComplete, callback) { - var image; - function onReady () { - if (callback) callback(); - } - if (!imgElement.complete || !checkForComplete) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - if (srcset) { - image.srcset = srcset; - } - if (src) { - image.src = src; - } - } else { - onReady(); - } - - } else {//image already loaded... - onReady(); - } -}; -s.preloadImages = function () { - s.imagesToLoad = s.container.find('img'); - function _onReady() { - if (typeof s === 'undefined' || s === null) return; - if (s.imagesLoaded !== undefined) s.imagesLoaded++; - if (s.imagesLoaded === s.imagesToLoad.length) { - if (s.params.updateOnImagesReady) s.update(); - s.emit('onImagesReady', s); - } - } - for (var i = 0; i < s.imagesToLoad.length; i++) { - s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), (s.imagesToLoad[i].srcset || s.imagesToLoad[i].getAttribute('srcset')), true, _onReady); - } -}; - -/*========================= - Autoplay - ===========================*/ -s.autoplayTimeoutId = undefined; -s.autoplaying = false; -s.autoplayPaused = false; -function autoplay() { - s.autoplayTimeoutId = setTimeout(function () { - if (s.params.loop) { - s.fixLoop(); - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!s.isEnd) { - s._slideNext(); - s.emit('onAutoplay', s); - } - else { - if (!params.autoplayStopOnLast) { - s._slideTo(0); - s.emit('onAutoplay', s); - } - else { - s.stopAutoplay(); - } - } - } - }, s.params.autoplay); -} -s.startAutoplay = function () { - if (typeof s.autoplayTimeoutId !== 'undefined') return false; - if (!s.params.autoplay) return false; - if (s.autoplaying) return false; - s.autoplaying = true; - s.emit('onAutoplayStart', s); - autoplay(); -}; -s.stopAutoplay = function (internal) { - if (!s.autoplayTimeoutId) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplaying = false; - s.autoplayTimeoutId = undefined; - s.emit('onAutoplayStop', s); -}; -s.pauseAutoplay = function (speed) { - if (s.autoplayPaused) return; - if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId); - s.autoplayPaused = true; - if (speed === 0) { - s.autoplayPaused = false; - autoplay(); - } - else { - s.wrapper.transitionEnd(function () { - if (!s) return; - s.autoplayPaused = false; - if (!s.autoplaying) { - s.stopAutoplay(); - } - else { - autoplay(); - } - }); - } -}; -/*========================= - Min/Max Translate - ===========================*/ -s.minTranslate = function () { - return (-s.snapGrid[0]); -}; -s.maxTranslate = function () { - return (-s.snapGrid[s.snapGrid.length - 1]); -}; -/*========================= - Slider/slides sizes - ===========================*/ -s.updateAutoHeight = function () { - // Update Height - var slide = s.slides.eq(s.activeIndex)[0]; - if (typeof slide !== 'undefined') { - var newHeight = slide.offsetHeight; - if (newHeight) s.wrapper.css('height', newHeight + 'px'); - } -}; -s.updateContainerSize = function () { - var width, height; - if (typeof s.params.width !== 'undefined') { - width = s.params.width; - } - else { - width = s.container[0].clientWidth; - } - if (typeof s.params.height !== 'undefined') { - height = s.params.height; - } - else { - height = s.container[0].clientHeight; - } - if (width === 0 && s.isHorizontal() || height === 0 && !s.isHorizontal()) { - return; - } - - //Subtract paddings - width = width - parseInt(s.container.css('padding-left'), 10) - parseInt(s.container.css('padding-right'), 10); - height = height - parseInt(s.container.css('padding-top'), 10) - parseInt(s.container.css('padding-bottom'), 10); - - // Store values - s.width = width; - s.height = height; - s.size = s.isHorizontal() ? s.width : s.height; -}; - -s.updateSlidesSize = function () { - s.slides = s.wrapper.children('.' + s.params.slideClass); - s.snapGrid = []; - s.slidesGrid = []; - s.slidesSizesGrid = []; - - var spaceBetween = s.params.spaceBetween, - slidePosition = -s.params.slidesOffsetBefore, - i, - prevSlideSize = 0, - index = 0; - if (typeof s.size === 'undefined') return; - if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { - spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size; - } - - s.virtualSize = -spaceBetween; - // reset margins - if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''}); - else s.slides.css({marginRight: '', marginBottom: ''}); - - var slidesNumberEvenToRows; - if (s.params.slidesPerColumn > 1) { - if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) { - slidesNumberEvenToRows = s.slides.length; - } - else { - slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn; - } - if (s.params.slidesPerView !== 'auto' && s.params.slidesPerColumnFill === 'row') { - slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, s.params.slidesPerView * s.params.slidesPerColumn); - } - } - - // Calc slides - var slideSize; - var slidesPerColumn = s.params.slidesPerColumn; - var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; - var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length); - for (i = 0; i < s.slides.length; i++) { - slideSize = 0; - var slide = s.slides.eq(i); - if (s.params.slidesPerColumn > 1) { - // Set slides order - var newSlideOrderIndex; - var column, row; - if (s.params.slidesPerColumnFill === 'column') { - column = Math.floor(i / slidesPerColumn); - row = i - column * slidesPerColumn; - if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) { - if (++row >= slidesPerColumn) { - row = 0; - column++; - } - } - newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; - slide - .css({ - '-webkit-box-ordinal-group': newSlideOrderIndex, - '-moz-box-ordinal-group': newSlideOrderIndex, - '-ms-flex-order': newSlideOrderIndex, - '-webkit-order': newSlideOrderIndex, - 'order': newSlideOrderIndex - }); - } - else { - row = Math.floor(i / slidesPerRow); - column = i - row * slidesPerRow; - } - slide - .css({ - 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px') - }) - .attr('data-swiper-column', column) - .attr('data-swiper-row', row); - - } - if (slide.css('display') === 'none') continue; - if (s.params.slidesPerView === 'auto') { - slideSize = s.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); - if (s.params.roundLengths) slideSize = round(slideSize); - } - else { - slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView; - if (s.params.roundLengths) slideSize = round(slideSize); - - if (s.isHorizontal()) { - s.slides[i].style.width = slideSize + 'px'; - } - else { - s.slides[i].style.height = slideSize + 'px'; - } - } - s.slides[i].swiperSlideSize = slideSize; - s.slidesSizesGrid.push(slideSize); - - - if (s.params.centeredSlides) { - slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; - if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween; - if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - } - else { - if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition); - s.slidesGrid.push(slidePosition); - slidePosition = slidePosition + slideSize + spaceBetween; - } - - s.virtualSize += slideSize + spaceBetween; - - prevSlideSize = slideSize; - - index ++; - } - s.virtualSize = Math.max(s.virtualSize, s.size) + s.params.slidesOffsetAfter; - var newSlidesGrid; - - if ( - s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) { - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - } - if (!s.support.flexbox || s.params.setWrapperSize) { - if (s.isHorizontal()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'}); - } - - if (s.params.slidesPerColumn > 1) { - s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows; - s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween; - s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'}); - if (s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]); - } - s.snapGrid = newSlidesGrid; - } - } - - // Remove last grid elements depending on width - if (!s.params.centeredSlides) { - newSlidesGrid = []; - for (i = 0; i < s.snapGrid.length; i++) { - if (s.snapGrid[i] <= s.virtualSize - s.size) { - newSlidesGrid.push(s.snapGrid[i]); - } - } - s.snapGrid = newSlidesGrid; - if (Math.floor(s.virtualSize - s.size) - Math.floor(s.snapGrid[s.snapGrid.length - 1]) > 1) { - s.snapGrid.push(s.virtualSize - s.size); - } - } - if (s.snapGrid.length === 0) s.snapGrid = [0]; - - if (s.params.spaceBetween !== 0) { - if (s.isHorizontal()) { - if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'}); - else s.slides.css({marginRight: spaceBetween + 'px'}); - } - else s.slides.css({marginBottom: spaceBetween + 'px'}); - } - if (s.params.watchSlidesProgress) { - s.updateSlidesOffset(); - } -}; -s.updateSlidesOffset = function () { - for (var i = 0; i < s.slides.length; i++) { - s.slides[i].swiperSlideOffset = s.isHorizontal() ? s.slides[i].offsetLeft : s.slides[i].offsetTop; - } -}; - -/*========================= - Slider/slides progress - ===========================*/ -s.updateSlidesProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - if (s.slides.length === 0) return; - if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset(); - - var offsetCenter = -translate; - if (s.rtl) offsetCenter = translate; - - // Visible Slides - s.slides.removeClass(s.params.slideVisibleClass); - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides[i]; - var slideProgress = (offsetCenter - slide.swiperSlideOffset) / (slide.swiperSlideSize + s.params.spaceBetween); - if (s.params.watchSlidesVisibility) { - var slideBefore = -(offsetCenter - slide.swiperSlideOffset); - var slideAfter = slideBefore + s.slidesSizesGrid[i]; - var isVisible = - (slideBefore >= 0 && slideBefore < s.size) || - (slideAfter > 0 && slideAfter <= s.size) || - (slideBefore <= 0 && slideAfter >= s.size); - if (isVisible) { - s.slides.eq(i).addClass(s.params.slideVisibleClass); - } - } - slide.progress = s.rtl ? -slideProgress : slideProgress; - } -}; -s.updateProgress = function (translate) { - if (typeof translate === 'undefined') { - translate = s.translate || 0; - } - var translatesDiff = s.maxTranslate() - s.minTranslate(); - var wasBeginning = s.isBeginning; - var wasEnd = s.isEnd; - if (translatesDiff === 0) { - s.progress = 0; - s.isBeginning = s.isEnd = true; - } - else { - s.progress = (translate - s.minTranslate()) / (translatesDiff); - s.isBeginning = s.progress <= 0; - s.isEnd = s.progress >= 1; - } - if (s.isBeginning && !wasBeginning) s.emit('onReachBeginning', s); - if (s.isEnd && !wasEnd) s.emit('onReachEnd', s); - - if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate); - s.emit('onProgress', s, s.progress); -}; -s.updateActiveIndex = function () { - var translate = s.rtl ? s.translate : -s.translate; - var newActiveIndex, i, snapIndex; - for (i = 0; i < s.slidesGrid.length; i ++) { - if (typeof s.slidesGrid[i + 1] !== 'undefined') { - if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) { - newActiveIndex = i; - } - else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) { - newActiveIndex = i + 1; - } - } - else { - if (translate >= s.slidesGrid[i]) { - newActiveIndex = i; - } - } - } - // Normalize slideIndex - if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0; - // for (i = 0; i < s.slidesGrid.length; i++) { - // if (- translate >= s.slidesGrid[i]) { - // newActiveIndex = i; - // } - // } - snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup); - if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1; - - if (newActiveIndex === s.activeIndex) { - return; - } - s.snapIndex = snapIndex; - s.previousIndex = s.activeIndex; - s.activeIndex = newActiveIndex; - s.updateClasses(); -}; - -/*========================= - Classes - ===========================*/ -s.updateClasses = function () { - s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass); - var activeSlide = s.slides.eq(s.activeIndex); - // Active classes - activeSlide.addClass(s.params.slideActiveClass); - // Next Slide - var nextSlide = activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass); - if (s.params.loop && nextSlide.length === 0) { - s.slides.eq(0).addClass(s.params.slideNextClass); - } - // Prev Slide - var prevSlide = activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass); - if (s.params.loop && prevSlide.length === 0) { - s.slides.eq(-1).addClass(s.params.slidePrevClass); - } - - // Pagination - if (s.paginationContainer && s.paginationContainer.length > 0) { - // Current/Total - var current, - total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - if (s.params.loop) { - current = Math.ceil((s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup); - if (current > s.slides.length - 1 - s.loopedSlides * 2) { - current = current - (s.slides.length - s.loopedSlides * 2); - } - if (current > total - 1) current = current - total; - if (current < 0 && s.params.paginationType !== 'bullets') current = total + current; - } - else { - if (typeof s.snapIndex !== 'undefined') { - current = s.snapIndex; - } - else { - current = s.activeIndex || 0; - } - } - // Types - if (s.params.paginationType === 'bullets' && s.bullets && s.bullets.length > 0) { - s.bullets.removeClass(s.params.bulletActiveClass); - if (s.paginationContainer.length > 1) { - s.bullets.each(function () { - if ($(this).index() === current) $(this).addClass(s.params.bulletActiveClass); - }); - } - else { - s.bullets.eq(current).addClass(s.params.bulletActiveClass); - } - } - if (s.params.paginationType === 'fraction') { - s.paginationContainer.find('.' + s.params.paginationCurrentClass).text(current + 1); - s.paginationContainer.find('.' + s.params.paginationTotalClass).text(total); - } - if (s.params.paginationType === 'progress') { - var scale = (current + 1) / total, - scaleX = scale, - scaleY = 1; - if (!s.isHorizontal()) { - scaleY = scale; - scaleX = 1; - } - s.paginationContainer.find('.' + s.params.paginationProgressbarClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(s.params.speed); - } - if (s.params.paginationType === 'custom' && s.params.paginationCustomRender) { - s.paginationContainer.html(s.params.paginationCustomRender(s, current + 1, total)); - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } - - // Next/active buttons - if (!s.params.loop) { - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - if (s.isBeginning) { - s.prevButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.prevButton); - } - else { - s.prevButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.prevButton); - } - } - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - if (s.isEnd) { - s.nextButton.addClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.disable(s.nextButton); - } - else { - s.nextButton.removeClass(s.params.buttonDisabledClass); - if (s.params.a11y && s.a11y) s.a11y.enable(s.nextButton); - } - } - } -}; - -/*========================= - Pagination - ===========================*/ -s.updatePagination = function () { - if (!s.params.pagination) return; - if (s.paginationContainer && s.paginationContainer.length > 0) { - var paginationHTML = ''; - if (s.params.paginationType === 'bullets') { - var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length; - for (var i = 0; i < numberOfBullets; i++) { - if (s.params.paginationBulletRender) { - paginationHTML += s.params.paginationBulletRender(i, s.params.bulletClass); - } - else { - paginationHTML += '<' + s.params.paginationElement+' class="' + s.params.bulletClass + '">'; - } - } - s.paginationContainer.html(paginationHTML); - s.bullets = s.paginationContainer.find('.' + s.params.bulletClass); - if (s.params.paginationClickable && s.params.a11y && s.a11y) { - s.a11y.initPagination(); - } - } - if (s.params.paginationType === 'fraction') { - if (s.params.paginationFractionRender) { - paginationHTML = s.params.paginationFractionRender(s, s.params.paginationCurrentClass, s.params.paginationTotalClass); - } - else { - paginationHTML = - '' + - ' / ' + - ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType === 'progress') { - if (s.params.paginationProgressRender) { - paginationHTML = s.params.paginationProgressRender(s, s.params.paginationProgressbarClass); - } - else { - paginationHTML = ''; - } - s.paginationContainer.html(paginationHTML); - } - if (s.params.paginationType !== 'custom') { - s.emit('onPaginationRendered', s, s.paginationContainer[0]); - } - } -}; -/*========================= - Common update method - ===========================*/ -s.update = function (updateTranslate) { - s.updateContainerSize(); - s.updateSlidesSize(); - s.updateProgress(); - s.updatePagination(); - s.updateClasses(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - function forceSetTranslate() { - newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - } - if (updateTranslate) { - var translated, newTranslate; - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - if (s.params.freeMode) { - forceSetTranslate(); - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - translated = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - translated = s.slideTo(s.activeIndex, 0, false, true); - } - if (!translated) { - forceSetTranslate(); - } - } - } - else if (s.params.autoHeight) { - s.updateAutoHeight(); - } -}; - -/*========================= - Resize Handler - ===========================*/ -s.onResize = function (forceUpdatePagination) { - //Breakpoints - if (s.params.breakpoints) { - s.setBreakpoint(); - } - - // Disable locks on resize - var allowSwipeToPrev = s.params.allowSwipeToPrev; - var allowSwipeToNext = s.params.allowSwipeToNext; - s.params.allowSwipeToPrev = s.params.allowSwipeToNext = true; - - s.updateContainerSize(); - s.updateSlidesSize(); - if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - } - if (s.controller && s.controller.spline) { - s.controller.spline = undefined; - } - var slideChangedBySlideTo = false; - if (s.params.freeMode) { - var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate()); - s.setWrapperTranslate(newTranslate); - s.updateActiveIndex(); - s.updateClasses(); - - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - } - else { - s.updateClasses(); - if ((s.params.slidesPerView === 'auto' || s.params.slidesPerView > 1) && s.isEnd && !s.params.centeredSlides) { - slideChangedBySlideTo = s.slideTo(s.slides.length - 1, 0, false, true); - } - else { - slideChangedBySlideTo = s.slideTo(s.activeIndex, 0, false, true); - } - } - if (s.params.lazyLoading && !slideChangedBySlideTo && s.lazy) { - s.lazy.load(); - } - // Return locks after resize - s.params.allowSwipeToPrev = allowSwipeToPrev; - s.params.allowSwipeToNext = allowSwipeToNext; -}; - -/*========================= - Events - ===========================*/ - -//Define Touch Events -var desktopEvents = ['mousedown', 'mousemove', 'mouseup']; -if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup']; -else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; -s.touchEvents = { - start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0], - move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1], - end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2] -}; - - -// WP8 Touch Events Fix -if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) { - (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction); -} - -// Attach/detach events -s.initEvents = function (detach) { - var actionDom = detach ? 'off' : 'on'; - var action = detach ? 'removeEventListener' : 'addEventListener'; - var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0]; - var target = s.support.touch ? touchEventsTarget : document; - - var moveCapture = s.params.nested ? true : false; - - //Touch Events - if (s.browser.ie) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - target[action](s.touchEvents.move, s.onTouchMove, moveCapture); - target[action](s.touchEvents.end, s.onTouchEnd, false); - } - else { - if (s.support.touch) { - touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false); - touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture); - touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false); - } - if (params.simulateTouch && !s.device.ios && !s.device.android) { - touchEventsTarget[action]('mousedown', s.onTouchStart, false); - document[action]('mousemove', s.onTouchMove, moveCapture); - document[action]('mouseup', s.onTouchEnd, false); - } - } - window[action]('resize', s.onResize); - - // Next, Prev, Index - if (s.params.nextButton && s.nextButton && s.nextButton.length > 0) { - s.nextButton[actionDom]('click', s.onClickNext); - if (s.params.a11y && s.a11y) s.nextButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.prevButton && s.prevButton && s.prevButton.length > 0) { - s.prevButton[actionDom]('click', s.onClickPrev); - if (s.params.a11y && s.a11y) s.prevButton[actionDom]('keydown', s.a11y.onEnterKey); - } - if (s.params.pagination && s.params.paginationClickable) { - s.paginationContainer[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex); - if (s.params.a11y && s.a11y) s.paginationContainer[actionDom]('keydown', '.' + s.params.bulletClass, s.a11y.onEnterKey); - } - - // Prevent Links Clicks - if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true); -}; -s.attachEvents = function () { - s.initEvents(); -}; -s.detachEvents = function () { - s.initEvents(true); -}; - -/*========================= - Handle Clicks - ===========================*/ -// Prevent Clicks -s.allowClick = true; -s.preventClicks = function (e) { - if (!s.allowClick) { - if (s.params.preventClicks) e.preventDefault(); - if (s.params.preventClicksPropagation && s.animating) { - e.stopPropagation(); - e.stopImmediatePropagation(); - } - } -}; -// Clicks -s.onClickNext = function (e) { - e.preventDefault(); - if (s.isEnd && !s.params.loop) return; - s.slideNext(); -}; -s.onClickPrev = function (e) { - e.preventDefault(); - if (s.isBeginning && !s.params.loop) return; - s.slidePrev(); -}; -s.onClickIndex = function (e) { - e.preventDefault(); - var index = $(this).index() * s.params.slidesPerGroup; - if (s.params.loop) index = index + s.loopedSlides; - s.slideTo(index); -}; - -/*========================= - Handle Touches - ===========================*/ -function findElementInEvent(e, selector) { - var el = $(e.target); - if (!el.is(selector)) { - if (typeof selector === 'string') { - el = el.parents(selector); - } - else if (selector.nodeType) { - var found; - el.parents().each(function (index, _el) { - if (_el === selector) found = selector; - }); - if (!found) return undefined; - else return selector; - } - } - if (el.length === 0) { - return undefined; - } - return el[0]; -} -s.updateClickedSlide = function (e) { - var slide = findElementInEvent(e, '.' + s.params.slideClass); - var slideFound = false; - if (slide) { - for (var i = 0; i < s.slides.length; i++) { - if (s.slides[i] === slide) slideFound = true; - } - } - - if (slide && slideFound) { - s.clickedSlide = slide; - s.clickedIndex = $(slide).index(); - } - else { - s.clickedSlide = undefined; - s.clickedIndex = undefined; - return; - } - if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) { - var slideToIndex = s.clickedIndex, - realIndex, - duplicatedSlides; - if (s.params.loop) { - if (s.animating) return; - realIndex = $(s.clickedSlide).attr('data-swiper-slide-index'); - if (s.params.centeredSlides) { - if ((slideToIndex < s.loopedSlides - s.params.slidesPerView/2) || (slideToIndex > s.slides.length - s.loopedSlides + s.params.slidesPerView/2)) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - else { - if (slideToIndex > s.slides.length - s.params.slidesPerView) { - s.fixLoop(); - slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.swiper-slide-duplicate)').eq(0).index(); - setTimeout(function () { - s.slideTo(slideToIndex); - }, 0); - } - else { - s.slideTo(slideToIndex); - } - } - } - else { - s.slideTo(slideToIndex); - } - } -}; - -var isTouched, - isMoved, - allowTouchCallbacks, - touchStartTime, - isScrolling, - currentTranslate, - startTranslate, - allowThresholdMove, - // Form elements to match - formElements = 'input, select, textarea, button', - // Last click time - lastClickTime = Date.now(), clickTimeout, - //Velocities - velocities = [], - allowMomentumBounce; - -// Animating Flag -s.animating = false; - -// Touches information -s.touches = { - startX: 0, - startY: 0, - currentX: 0, - currentY: 0, - diff: 0 -}; - -// Touch handlers -var isTouchEvent, startMoving; -s.onTouchStart = function (e) { - if (e.originalEvent) e = e.originalEvent; - isTouchEvent = e.type === 'touchstart'; - if (!isTouchEvent && 'which' in e && e.which === 3) return; - if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) { - s.allowClick = true; - return; - } - if (s.params.swipeHandler) { - if (!findElementInEvent(e, s.params.swipeHandler)) return; - } - - var startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - var startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - - // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore - if(s.device.ios && s.params.iOSEdgeSwipeDetection && startX <= s.params.iOSEdgeSwipeThreshold) { - return; - } - - isTouched = true; - isMoved = false; - allowTouchCallbacks = true; - isScrolling = undefined; - startMoving = undefined; - s.touches.startX = startX; - s.touches.startY = startY; - touchStartTime = Date.now(); - s.allowClick = true; - s.updateContainerSize(); - s.swipeDirection = undefined; - if (s.params.threshold > 0) allowThresholdMove = false; - if (e.type !== 'touchstart') { - var preventDefault = true; - if ($(e.target).is(formElements)) preventDefault = false; - if (document.activeElement && $(document.activeElement).is(formElements)) { - document.activeElement.blur(); - } - if (preventDefault) { - e.preventDefault(); - } - } - s.emit('onTouchStart', s, e); -}; - -s.onTouchMove = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (isTouchEvent && e.type === 'mousemove') return; - if (e.preventedByNestedSwiper) { - s.touches.startX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - return; - } - if (s.params.onlyExternal) { - // isMoved = true; - s.allowClick = false; - if (isTouched) { - s.touches.startX = s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.startY = s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - touchStartTime = Date.now(); - } - return; - } - if (isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(formElements)) { - isMoved = true; - s.allowClick = false; - return; - } - } - if (allowTouchCallbacks) { - s.emit('onTouchMove', s, e); - } - if (e.targetTouches && e.targetTouches.length > 1) return; - - s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - if (typeof isScrolling === 'undefined') { - var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI; - isScrolling = s.isHorizontal() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle); - } - if (isScrolling) { - s.emit('onTouchMoveOpposite', s, e); - } - if (typeof startMoving === 'undefined' && s.browser.ieTouch) { - if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) { - startMoving = true; - } - } - if (!isTouched) return; - if (isScrolling) { - isTouched = false; - return; - } - if (!startMoving && s.browser.ieTouch) { - return; - } - s.allowClick = false; - s.emit('onSliderMove', s, e); - e.preventDefault(); - if (s.params.touchMoveStopPropagation && !s.params.nested) { - e.stopPropagation(); - } - - if (!isMoved) { - if (params.loop) { - s.fixLoop(); - } - startTranslate = s.getWrapperTranslate(); - s.setWrapperTransition(0); - if (s.animating) { - s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd'); - } - if (s.params.autoplay && s.autoplaying) { - if (s.params.autoplayDisableOnInteraction) { - s.stopAutoplay(); - } - else { - s.pauseAutoplay(); - } - } - allowMomentumBounce = false; - //Grab Cursor - if (s.params.grabCursor) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grabbing'; - s.container[0].style.cursor = '-moz-grabbin'; - s.container[0].style.cursor = 'grabbing'; - } - } - isMoved = true; - - var diff = s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - - diff = diff * s.params.touchRatio; - if (s.rtl) diff = -diff; - - s.swipeDirection = diff > 0 ? 'prev' : 'next'; - currentTranslate = diff + startTranslate; - - var disableParentSwiper = true; - if ((diff > 0 && currentTranslate > s.minTranslate())) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio); - } - else if (diff < 0 && currentTranslate < s.maxTranslate()) { - disableParentSwiper = false; - if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio); - } - - if (disableParentSwiper) { - e.preventedByNestedSwiper = true; - } - - // Directions locks - if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) { - currentTranslate = startTranslate; - } - if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) { - currentTranslate = startTranslate; - } - - if (!s.params.followFinger) return; - - // Threshold - if (s.params.threshold > 0) { - if (Math.abs(diff) > s.params.threshold || allowThresholdMove) { - if (!allowThresholdMove) { - allowThresholdMove = true; - s.touches.startX = s.touches.currentX; - s.touches.startY = s.touches.currentY; - currentTranslate = startTranslate; - s.touches.diff = s.isHorizontal() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY; - return; - } - } - else { - currentTranslate = startTranslate; - return; - } - } - // Update active index in free mode - if (s.params.freeMode || s.params.watchSlidesProgress) { - s.updateActiveIndex(); - } - if (s.params.freeMode) { - //Velocity - if (velocities.length === 0) { - velocities.push({ - position: s.touches[s.isHorizontal() ? 'startX' : 'startY'], - time: touchStartTime - }); - } - velocities.push({ - position: s.touches[s.isHorizontal() ? 'currentX' : 'currentY'], - time: (new window.Date()).getTime() - }); - } - // Update progress - s.updateProgress(currentTranslate); - // Update translate - s.setWrapperTranslate(currentTranslate); -}; -s.onTouchEnd = function (e) { - if (e.originalEvent) e = e.originalEvent; - if (allowTouchCallbacks) { - s.emit('onTouchEnd', s, e); - } - allowTouchCallbacks = false; - if (!isTouched) return; - //Return Grab Cursor - if (s.params.grabCursor && isMoved && isTouched) { - s.container[0].style.cursor = 'move'; - s.container[0].style.cursor = '-webkit-grab'; - s.container[0].style.cursor = '-moz-grab'; - s.container[0].style.cursor = 'grab'; - } - - // Time diff - var touchEndTime = Date.now(); - var timeDiff = touchEndTime - touchStartTime; - - // Tap, doubleTap, Click - if (s.allowClick) { - s.updateClickedSlide(e); - s.emit('onTap', s, e); - if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) { - if (clickTimeout) clearTimeout(clickTimeout); - clickTimeout = setTimeout(function () { - if (!s) return; - if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) { - s.paginationContainer.toggleClass(s.params.paginationHiddenClass); - } - s.emit('onClick', s, e); - }, 300); - - } - if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) { - if (clickTimeout) clearTimeout(clickTimeout); - s.emit('onDoubleTap', s, e); - } - } - - lastClickTime = Date.now(); - setTimeout(function () { - if (s) s.allowClick = true; - }, 0); - - if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) { - isTouched = isMoved = false; - return; - } - isTouched = isMoved = false; - - var currentPos; - if (s.params.followFinger) { - currentPos = s.rtl ? s.translate : -s.translate; - } - else { - currentPos = -currentTranslate; - } - if (s.params.freeMode) { - if (currentPos < -s.minTranslate()) { - s.slideTo(s.activeIndex); - return; - } - else if (currentPos > -s.maxTranslate()) { - if (s.slides.length < s.snapGrid.length) { - s.slideTo(s.snapGrid.length - 1); - } - else { - s.slideTo(s.slides.length - 1); - } - return; - } - - if (s.params.freeModeMomentum) { - if (velocities.length > 1) { - var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop(); - - var distance = lastMoveEvent.position - velocityEvent.position; - var time = lastMoveEvent.time - velocityEvent.time; - s.velocity = distance / time; - s.velocity = s.velocity / 2; - if (Math.abs(s.velocity) < s.params.freeModeMinimumVelocity) { - s.velocity = 0; - } - // this implies that the user stopped moving a finger then released. - // There would be no events with distance zero, so the last event is stale. - if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) { - s.velocity = 0; - } - } else { - s.velocity = 0; - } - - velocities.length = 0; - var momentumDuration = 1000 * s.params.freeModeMomentumRatio; - var momentumDistance = s.velocity * momentumDuration; - - var newPosition = s.translate + momentumDistance; - if (s.rtl) newPosition = - newPosition; - var doBounce = false; - var afterBouncePosition; - var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio; - if (newPosition < s.maxTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition + s.maxTranslate() < -bounceAmount) { - newPosition = s.maxTranslate() - bounceAmount; - } - afterBouncePosition = s.maxTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.maxTranslate(); - } - } - else if (newPosition > s.minTranslate()) { - if (s.params.freeModeMomentumBounce) { - if (newPosition - s.minTranslate() > bounceAmount) { - newPosition = s.minTranslate() + bounceAmount; - } - afterBouncePosition = s.minTranslate(); - doBounce = true; - allowMomentumBounce = true; - } - else { - newPosition = s.minTranslate(); - } - } - else if (s.params.freeModeSticky) { - var j = 0, - nextSlide; - for (j = 0; j < s.snapGrid.length; j += 1) { - if (s.snapGrid[j] > -newPosition) { - nextSlide = j; - break; - } - - } - if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') { - newPosition = s.snapGrid[nextSlide]; - } else { - newPosition = s.snapGrid[nextSlide - 1]; - } - if (!s.rtl) newPosition = - newPosition; - } - //Fix duration - if (s.velocity !== 0) { - if (s.rtl) { - momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity); - } - else { - momentumDuration = Math.abs((newPosition - s.translate) / s.velocity); - } - } - else if (s.params.freeModeSticky) { - s.slideReset(); - return; - } - - if (s.params.freeModeMomentumBounce && doBounce) { - s.updateProgress(afterBouncePosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s || !allowMomentumBounce) return; - s.emit('onMomentumBounce', s); - - s.setWrapperTransition(s.params.speed); - s.setWrapperTranslate(afterBouncePosition); - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - }); - } else if (s.velocity) { - s.updateProgress(newPosition); - s.setWrapperTransition(momentumDuration); - s.setWrapperTranslate(newPosition); - s.onTransitionStart(); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(); - }); - } - - } else { - s.updateProgress(newPosition); - } - - s.updateActiveIndex(); - } - if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) { - s.updateProgress(); - s.updateActiveIndex(); - } - return; - } - - // Find current slide - var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0]; - for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) { - if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') { - if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) { - stopIndex = i; - groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i]; - } - } - else { - if (currentPos >= s.slidesGrid[i]) { - stopIndex = i; - groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2]; - } - } - } - - // Find current slide size - var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize; - - if (timeDiff > s.params.longSwipesMs) { - // Long touches - if (!s.params.longSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - - } - if (s.swipeDirection === 'prev') { - if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup); - else s.slideTo(stopIndex); - } - } - else { - // Short swipes - if (!s.params.shortSwipes) { - s.slideTo(s.activeIndex); - return; - } - if (s.swipeDirection === 'next') { - s.slideTo(stopIndex + s.params.slidesPerGroup); - - } - if (s.swipeDirection === 'prev') { - s.slideTo(stopIndex); - } - } -}; -/*========================= - Transitions - ===========================*/ -s._slideTo = function (slideIndex, speed) { - return s.slideTo(slideIndex, speed, true, true); -}; -s.slideTo = function (slideIndex, speed, runCallbacks, internal) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (typeof slideIndex === 'undefined') slideIndex = 0; - if (slideIndex < 0) slideIndex = 0; - s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup); - if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1; - - var translate = - s.snapGrid[s.snapIndex]; - // Stop autoplay - if (s.params.autoplay && s.autoplaying) { - if (internal || !s.params.autoplayDisableOnInteraction) { - s.pauseAutoplay(speed); - } - else { - s.stopAutoplay(); - } - } - // Update progress - s.updateProgress(translate); - - // Normalize slideIndex - for (var i = 0; i < s.slidesGrid.length; i++) { - if (- Math.floor(translate * 100) >= Math.floor(s.slidesGrid[i] * 100)) { - slideIndex = i; - } - } - - // Directions locks - if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) { - return false; - } - if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) { - if ((s.activeIndex || 0) !== slideIndex ) return false; - } - - // Update Index - if (typeof speed === 'undefined') speed = s.params.speed; - s.previousIndex = s.activeIndex || 0; - s.activeIndex = slideIndex; - - if ((s.rtl && -translate === s.translate) || (!s.rtl && translate === s.translate)) { - // Update Height - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - s.updateClasses(); - if (s.params.effect !== 'slide') { - s.setWrapperTranslate(translate); - } - return false; - } - s.updateClasses(); - s.onTransitionStart(runCallbacks); - - if (speed === 0) { - s.setWrapperTranslate(translate); - s.setWrapperTransition(0); - s.onTransitionEnd(runCallbacks); - } - else { - s.setWrapperTranslate(translate); - s.setWrapperTransition(speed); - if (!s.animating) { - s.animating = true; - s.wrapper.transitionEnd(function () { - if (!s) return; - s.onTransitionEnd(runCallbacks); - }); - } - - } - - return true; -}; - -s.onTransitionStart = function (runCallbacks) { - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.params.autoHeight) { - s.updateAutoHeight(); - } - if (s.lazy) s.lazy.onTransitionStart(); - if (runCallbacks) { - s.emit('onTransitionStart', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeStart', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextStart', s); - } - else { - s.emit('onSlidePrevStart', s); - } - } - - } -}; -s.onTransitionEnd = function (runCallbacks) { - s.animating = false; - s.setWrapperTransition(0); - if (typeof runCallbacks === 'undefined') runCallbacks = true; - if (s.lazy) s.lazy.onTransitionEnd(); - if (runCallbacks) { - s.emit('onTransitionEnd', s); - if (s.activeIndex !== s.previousIndex) { - s.emit('onSlideChangeEnd', s); - if (s.activeIndex > s.previousIndex) { - s.emit('onSlideNextEnd', s); - } - else { - s.emit('onSlidePrevEnd', s); - } - } - } - if (s.params.hashnav && s.hashnav) { - s.hashnav.setHash(); - } - -}; -s.slideNext = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal); -}; -s._slideNext = function (speed) { - return s.slideNext(true, speed, true); -}; -s.slidePrev = function (runCallbacks, speed, internal) { - if (s.params.loop) { - if (s.animating) return false; - s.fixLoop(); - var clientLeft = s.container[0].clientLeft; - return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); - } - else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal); -}; -s._slidePrev = function (speed) { - return s.slidePrev(true, speed, true); -}; -s.slideReset = function (runCallbacks, speed, internal) { - return s.slideTo(s.activeIndex, speed, runCallbacks); -}; - -/*========================= - Translate/transition helpers - ===========================*/ -s.setWrapperTransition = function (duration, byController) { - s.wrapper.transition(duration); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTransition(duration); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTransition(duration); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTransition(duration); - } - if (s.params.control && s.controller) { - s.controller.setTransition(duration, byController); - } - s.emit('onSetTransition', s, duration); -}; -s.setWrapperTranslate = function (translate, updateActiveIndex, byController) { - var x = 0, y = 0, z = 0; - if (s.isHorizontal()) { - x = s.rtl ? -translate : translate; - } - else { - y = translate; - } - - if (s.params.roundLengths) { - x = round(x); - y = round(y); - } - - if (!s.params.virtualTranslate) { - if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'); - else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)'); - } - - s.translate = s.isHorizontal() ? x : y; - - // Check if we need to update progress - var progress; - var translatesDiff = s.maxTranslate() - s.minTranslate(); - if (translatesDiff === 0) { - progress = 0; - } - else { - progress = (translate - s.minTranslate()) / (translatesDiff); - } - if (progress !== s.progress) { - s.updateProgress(translate); - } - - if (updateActiveIndex) s.updateActiveIndex(); - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - s.effects[s.params.effect].setTranslate(s.translate); - } - if (s.params.parallax && s.parallax) { - s.parallax.setTranslate(s.translate); - } - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.setTranslate(s.translate); - } - if (s.params.control && s.controller) { - s.controller.setTranslate(s.translate, byController); - } - s.emit('onSetTranslate', s, s.translate); -}; - -s.getTranslate = function (el, axis) { - var matrix, curTransform, curStyle, transformMatrix; - - // automatic axis detection - if (typeof axis === 'undefined') { - axis = 'x'; - } - - if (s.params.virtualTranslate) { - return s.rtl ? -s.translate : s.translate; - } - - curStyle = window.getComputedStyle(el, null); - if (window.WebKitCSSMatrix) { - curTransform = curStyle.transform || curStyle.webkitTransform; - if (curTransform.split(',').length > 6) { - curTransform = curTransform.split(', ').map(function(a){ - return a.replace(',','.'); - }).join(', '); - } - // Some old versions of Webkit choke when 'none' is passed; pass - // empty string instead in this case - transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); - } - else { - transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); - matrix = transformMatrix.toString().split(','); - } - - if (axis === 'x') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m41; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[12]); - //Normal Browsers - else - curTransform = parseFloat(matrix[4]); - } - if (axis === 'y') { - //Latest Chrome and webkits Fix - if (window.WebKitCSSMatrix) - curTransform = transformMatrix.m42; - //Crazy IE10 Matrix - else if (matrix.length === 16) - curTransform = parseFloat(matrix[13]); - //Normal Browsers - else - curTransform = parseFloat(matrix[5]); - } - if (s.rtl && curTransform) curTransform = -curTransform; - return curTransform || 0; -}; -s.getWrapperTranslate = function (axis) { - if (typeof axis === 'undefined') { - axis = s.isHorizontal() ? 'x' : 'y'; - } - return s.getTranslate(s.wrapper[0], axis); -}; - -/*========================= - Observer - ===========================*/ -s.observers = []; -function initObserver(target, options) { - options = options || {}; - // create an observer instance - var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; - var observer = new ObserverFunc(function (mutations) { - mutations.forEach(function (mutation) { - s.onResize(true); - s.emit('onObserverUpdate', s, mutation); - }); - }); - - observer.observe(target, { - attributes: typeof options.attributes === 'undefined' ? true : options.attributes, - childList: typeof options.childList === 'undefined' ? true : options.childList, - characterData: typeof options.characterData === 'undefined' ? true : options.characterData - }); - - s.observers.push(observer); -} -s.initObservers = function () { - if (s.params.observeParents) { - var containerParents = s.container.parents(); - for (var i = 0; i < containerParents.length; i++) { - initObserver(containerParents[i]); - } - } - - // Observe container - initObserver(s.container[0], {childList: false}); - - // Observe wrapper - initObserver(s.wrapper[0], {attributes: false}); -}; -s.disconnectObservers = function () { - for (var i = 0; i < s.observers.length; i++) { - s.observers[i].disconnect(); - } - s.observers = []; -}; -/*========================= - Loop - ===========================*/ -// Create looped slides -s.createLoop = function () { - // Remove duplicated slides - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - - var slides = s.wrapper.children('.' + s.params.slideClass); - - if(s.params.slidesPerView === 'auto' && !s.params.loopedSlides) s.params.loopedSlides = slides.length; - - s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10); - s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides; - if (s.loopedSlides > slides.length) { - s.loopedSlides = slides.length; - } - - var prependSlides = [], appendSlides = [], i; - slides.each(function (index, el) { - var slide = $(this); - if (index < s.loopedSlides) appendSlides.push(el); - if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el); - slide.attr('data-swiper-slide-index', index); - }); - for (i = 0; i < appendSlides.length; i++) { - s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } - for (i = prependSlides.length - 1; i >= 0; i--) { - s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass)); - } -}; -s.destroyLoop = function () { - s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove(); - s.slides.removeAttr('data-swiper-slide-index'); -}; -s.reLoop = function (updatePosition) { - var oldIndex = s.activeIndex - s.loopedSlides; - s.destroyLoop(); - s.createLoop(); - s.updateSlidesSize(); - if (updatePosition) { - s.slideTo(oldIndex + s.loopedSlides, 0, false); - } - -}; -s.fixLoop = function () { - var newIndex; - //Fix For Negative Oversliding - if (s.activeIndex < s.loopedSlides) { - newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } - //Fix For Positive Oversliding - else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) { - newIndex = -s.slides.length + s.activeIndex + s.loopedSlides; - newIndex = newIndex + s.loopedSlides; - s.slideTo(newIndex, 0, false, true); - } -}; -/*========================= - Append/Prepend/Remove Slides - ===========================*/ -s.appendSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.append(slides[i]); - } - } - else { - s.wrapper.append(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } -}; -s.prependSlide = function (slides) { - if (s.params.loop) { - s.destroyLoop(); - } - var newActiveIndex = s.activeIndex + 1; - if (typeof slides === 'object' && slides.length) { - for (var i = 0; i < slides.length; i++) { - if (slides[i]) s.wrapper.prepend(slides[i]); - } - newActiveIndex = s.activeIndex + slides.length; - } - else { - s.wrapper.prepend(slides); - } - if (s.params.loop) { - s.createLoop(); - } - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - s.slideTo(newActiveIndex, 0, false); -}; -s.removeSlide = function (slidesIndexes) { - if (s.params.loop) { - s.destroyLoop(); - s.slides = s.wrapper.children('.' + s.params.slideClass); - } - var newActiveIndex = s.activeIndex, - indexToRemove; - if (typeof slidesIndexes === 'object' && slidesIndexes.length) { - for (var i = 0; i < slidesIndexes.length; i++) { - indexToRemove = slidesIndexes[i]; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - } - newActiveIndex = Math.max(newActiveIndex, 0); - } - else { - indexToRemove = slidesIndexes; - if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex--; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (s.params.loop) { - s.createLoop(); - } - - if (!(s.params.observer && s.support.observer)) { - s.update(true); - } - if (s.params.loop) { - s.slideTo(newActiveIndex + s.loopedSlides, 0, false); - } - else { - s.slideTo(newActiveIndex, 0, false); - } - -}; -s.removeAllSlides = function () { - var slidesIndexes = []; - for (var i = 0; i < s.slides.length; i++) { - slidesIndexes.push(i); - } - s.removeSlide(slidesIndexes); -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/dom-plugins.js b/dashboard-ui/bower_components/Swiper/src/js/dom-plugins.js deleted file mode 100644 index c54de3192c..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/dom-plugins.js +++ /dev/null @@ -1,57 +0,0 @@ -/*=========================== -Add .swiper plugin from Dom libraries -===========================*/ -function addLibraryPlugin(lib) { - lib.fn.swiper = function (params) { - var firstInstance; - lib(this).each(function () { - var s = new Swiper(this, params); - if (!firstInstance) firstInstance = s; - }); - return firstInstance; - }; -} - -if (domLib) { - if (!('transitionEnd' in domLib.fn)) { - domLib.fn.transitionEnd = function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }; - } - if (!('transform' in domLib.fn)) { - domLib.fn.transform = function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }; - } - if (!('transition' in domLib.fn)) { - domLib.fn.transition = function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }; - } -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/dom.js b/dashboard-ui/bower_components/Swiper/src/js/dom.js deleted file mode 100644 index 995f6fb565..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/dom.js +++ /dev/null @@ -1,664 +0,0 @@ -/*=========================== -Dom7 Library -===========================*/ -var Dom7 = (function () { - var Dom7 = function (arr) { - var _this = this, i = 0; - // Create array-like object - for (i = 0; i < arr.length; i++) { - _this[i] = arr[i]; - } - _this.length = arr.length; - // Return collection with methods - return this; - }; - var $ = function (selector, context) { - var arr = [], i = 0; - if (selector && !context) { - if (selector instanceof Dom7) { - return selector; - } - } - if (selector) { - // String - if (typeof selector === 'string') { - var els, tempParent, html = selector.trim(); - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - var toCreate = 'div'; - if (html.indexOf(':~]/)) { - // Pure ID selector - els = [document.getElementById(selector.split('#')[1])]; - } - else { - // Other selectors - els = (context || document).querySelectorAll(selector); - } - for (i = 0; i < els.length; i++) { - if (els[i]) arr.push(els[i]); - } - } - } - // Node/element - else if (selector.nodeType || selector === window || selector === document) { - arr.push(selector); - } - //Array of elements or instance of Dom - else if (selector.length > 0 && selector[0].nodeType) { - for (i = 0; i < selector.length; i++) { - arr.push(selector[i]); - } - } - } - return new Dom7(arr); - }; - Dom7.prototype = { - // Classes and attriutes - addClass: function (className) { - if (typeof className === 'undefined') { - return this; - } - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.add(classes[i]); - } - } - return this; - }, - removeClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.remove(classes[i]); - } - } - return this; - }, - hasClass: function (className) { - if (!this[0]) return false; - else return this[0].classList.contains(className); - }, - toggleClass: function (className) { - var classes = className.split(' '); - for (var i = 0; i < classes.length; i++) { - for (var j = 0; j < this.length; j++) { - this[j].classList.toggle(classes[i]); - } - } - return this; - }, - attr: function (attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - else return undefined; - } - else { - // Set attrs - for (var i = 0; i < this.length; i++) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } - else { - // Object - for (var attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - return this; - } - }, - removeAttr: function (attr) { - for (var i = 0; i < this.length; i++) { - this[i].removeAttribute(attr); - } - return this; - }, - data: function (key, value) { - if (typeof value === 'undefined') { - // Get value - if (this[0]) { - var dataKey = this[0].getAttribute('data-' + key); - if (dataKey) return dataKey; - else if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) return this[0].dom7ElementDataStorage[key]; - else return undefined; - } - else return undefined; - } - else { - // Set value - for (var i = 0; i < this.length; i++) { - var el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - return this; - } - }, - // Transforms - transform : function (transform) { - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; - } - return this; - }, - transition: function (duration) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - for (var i = 0; i < this.length; i++) { - var elStyle = this[i].style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; - } - return this; - }, - //Events - on: function (eventName, targetSelector, listener, capture) { - function handleLiveEvent(e) { - var target = e.target; - if ($(target).is(targetSelector)) listener.call(target, e); - else { - var parents = $(target).parents(); - for (var k = 0; k < parents.length; k++) { - if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e); - } - } - } - var events = eventName.split(' '); - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - for (j = 0; j < events.length; j++) { - this[i].addEventListener(events[j], listener, capture); - } - } - else { - //Live events - for (j = 0; j < events.length; j++) { - if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = []; - this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent}); - this[i].addEventListener(events[j], handleLiveEvent, capture); - } - } - } - - return this; - }, - off: function (eventName, targetSelector, listener, capture) { - var events = eventName.split(' '); - for (var i = 0; i < events.length; i++) { - for (var j = 0; j < this.length; j++) { - if (typeof targetSelector === 'function' || targetSelector === false) { - // Usual events - if (typeof targetSelector === 'function') { - listener = arguments[1]; - capture = arguments[2] || false; - } - this[j].removeEventListener(events[i], listener, capture); - } - else { - // Live event - if (this[j].dom7LiveListeners) { - for (var k = 0; k < this[j].dom7LiveListeners.length; k++) { - if (this[j].dom7LiveListeners[k].listener === listener) { - this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture); - } - } - } - } - } - } - return this; - }, - once: function (eventName, targetSelector, listener, capture) { - var dom = this; - if (typeof targetSelector === 'function') { - targetSelector = false; - listener = arguments[1]; - capture = arguments[2]; - } - function proxy(e) { - listener(e); - dom.off(eventName, targetSelector, proxy, capture); - } - dom.on(eventName, targetSelector, proxy, capture); - }, - trigger: function (eventName, eventData) { - for (var i = 0; i < this.length; i++) { - var evt; - try { - evt = new window.CustomEvent(eventName, {detail: eventData, bubbles: true, cancelable: true}); - } - catch (e) { - evt = document.createEvent('Event'); - evt.initEvent(eventName, true, true); - evt.detail = eventData; - } - this[i].dispatchEvent(evt); - } - return this; - }, - transitionEnd: function (callback) { - var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], - i, j, dom = this; - function fireCallBack(e) { - /*jshint validthis:true */ - if (e.target !== this) return; - callback.call(this, e); - for (i = 0; i < events.length; i++) { - dom.off(events[i], fireCallBack); - } - } - if (callback) { - for (i = 0; i < events.length; i++) { - dom.on(events[i], fireCallBack); - } - } - return this; - }, - // Sizing/Styles - width: function () { - if (this[0] === window) { - return window.innerWidth; - } - else { - if (this.length > 0) { - return parseFloat(this.css('width')); - } - else { - return null; - } - } - }, - outerWidth: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetWidth + parseFloat(this.css('margin-right')) + parseFloat(this.css('margin-left')); - else - return this[0].offsetWidth; - } - else return null; - }, - height: function () { - if (this[0] === window) { - return window.innerHeight; - } - else { - if (this.length > 0) { - return parseFloat(this.css('height')); - } - else { - return null; - } - } - }, - outerHeight: function (includeMargins) { - if (this.length > 0) { - if (includeMargins) - return this[0].offsetHeight + parseFloat(this.css('margin-top')) + parseFloat(this.css('margin-bottom')); - else - return this[0].offsetHeight; - } - else return null; - }, - offset: function () { - if (this.length > 0) { - var el = this[0]; - var box = el.getBoundingClientRect(); - var body = document.body; - var clientTop = el.clientTop || body.clientTop || 0; - var clientLeft = el.clientLeft || body.clientLeft || 0; - var scrollTop = window.pageYOffset || el.scrollTop; - var scrollLeft = window.pageXOffset || el.scrollLeft; - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - }; - } - else { - return null; - } - }, - css: function (props, value) { - var i; - if (arguments.length === 1) { - if (typeof props === 'string') { - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } - else { - for (i = 0; i < this.length; i++) { - for (var prop in props) { - this[i].style[prop] = props[prop]; - } - } - return this; - } - } - if (arguments.length === 2 && typeof props === 'string') { - for (i = 0; i < this.length; i++) { - this[i].style[props] = value; - } - return this; - } - return this; - }, - - //Dom manipulation - each: function (callback) { - for (var i = 0; i < this.length; i++) { - callback.call(this[i], i, this[i]); - } - return this; - }, - html: function (html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : undefined; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].innerHTML = html; - } - return this; - } - }, - text: function (text) { - if (typeof text === 'undefined') { - if (this[0]) { - return this[0].textContent.trim(); - } - else return null; - } - else { - for (var i = 0; i < this.length; i++) { - this[i].textContent = text; - } - return this; - } - }, - is: function (selector) { - if (!this[0]) return false; - var compareWith, i; - if (typeof selector === 'string') { - var el = this[0]; - if (el === document) return selector === document; - if (el === window) return selector === window; - - if (el.matches) return el.matches(selector); - else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector); - else if (el.msMatchesSelector) return el.msMatchesSelector(selector); - else { - compareWith = $(selector); - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - } - else if (selector === document) return this[0] === document; - else if (selector === window) return this[0] === window; - else { - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - for (i = 0; i < compareWith.length; i++) { - if (compareWith[i] === this[0]) return true; - } - return false; - } - return false; - } - - }, - index: function () { - if (this[0]) { - var child = this[0]; - var i = 0; - while ((child = child.previousSibling) !== null) { - if (child.nodeType === 1) i++; - } - return i; - } - else return undefined; - }, - eq: function (index) { - if (typeof index === 'undefined') return this; - var length = this.length; - var returnIndex; - if (index > length - 1) { - return new Dom7([]); - } - if (index < 0) { - returnIndex = length + index; - if (returnIndex < 0) return new Dom7([]); - else return new Dom7([this[returnIndex]]); - } - return new Dom7([this[index]]); - }, - append: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].appendChild(newChild[j]); - } - } - else { - this[i].appendChild(newChild); - } - } - return this; - }, - prepend: function (newChild) { - var i, j; - for (i = 0; i < this.length; i++) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - for (j = tempDiv.childNodes.length - 1; j >= 0; j--) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - // this[i].insertAdjacentHTML('afterbegin', newChild); - } - else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j++) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } - else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - return this; - }, - insertBefore: function (selector) { - var before = $(selector); - for (var i = 0; i < this.length; i++) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } - else if (before.length > 1) { - for (var j = 0; j < before.length; j++) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - }, - insertAfter: function (selector) { - var after = $(selector); - for (var i = 0; i < this.length; i++) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } - else if (after.length > 1) { - for (var j = 0; j < after.length; j++) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - }, - next: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - nextAll: function (selector) { - var nextEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.nextElementSibling) { - var next = el.nextElementSibling; - if (selector) { - if($(next).is(selector)) nextEls.push(next); - } - else nextEls.push(next); - el = next; - } - return new Dom7(nextEls); - }, - prev: function (selector) { - if (this.length > 0) { - if (selector) { - if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - else { - if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]); - else return new Dom7([]); - } - } - else return new Dom7([]); - }, - prevAll: function (selector) { - var prevEls = []; - var el = this[0]; - if (!el) return new Dom7([]); - while (el.previousElementSibling) { - var prev = el.previousElementSibling; - if (selector) { - if($(prev).is(selector)) prevEls.push(prev); - } - else prevEls.push(prev); - el = prev; - } - return new Dom7(prevEls); - }, - parent: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } - else { - parents.push(this[i].parentNode); - } - } - return $($.unique(parents)); - }, - parents: function (selector) { - var parents = []; - for (var i = 0; i < this.length; i++) { - var parent = this[i].parentNode; - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } - else { - parents.push(parent); - } - parent = parent.parentNode; - } - } - return $($.unique(parents)); - }, - find : function (selector) { - var foundElements = []; - for (var i = 0; i < this.length; i++) { - var found = this[i].querySelectorAll(selector); - for (var j = 0; j < found.length; j++) { - foundElements.push(found[j]); - } - } - return new Dom7(foundElements); - }, - children: function (selector) { - var children = []; - for (var i = 0; i < this.length; i++) { - var childNodes = this[i].childNodes; - - for (var j = 0; j < childNodes.length; j++) { - if (!selector) { - if (childNodes[j].nodeType === 1) children.push(childNodes[j]); - } - else { - if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]); - } - } - } - return new Dom7($.unique(children)); - }, - remove: function () { - for (var i = 0; i < this.length; i++) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - return this; - }, - add: function () { - var dom = this; - var i, j; - for (i = 0; i < arguments.length; i++) { - var toAdd = $(arguments[i]); - for (j = 0; j < toAdd.length; j++) { - dom[dom.length] = toAdd[j]; - dom.length++; - } - } - return dom; - } - }; - $.fn = Dom7.prototype; - $.unique = function (arr) { - var unique = []; - for (var i = 0; i < arr.length; i++) { - if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]); - } - return unique; - }; - - return $; -})(); diff --git a/dashboard-ui/bower_components/Swiper/src/js/effects.js b/dashboard-ui/bower_components/Swiper/src/js/effects.js deleted file mode 100644 index e2c530028a..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/effects.js +++ /dev/null @@ -1,276 +0,0 @@ -/*========================= - Effects - ===========================*/ -s.effects = { - fade: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var offset = slide[0].swiperSlideOffset; - var tx = -offset; - if (!s.params.virtualTranslate) tx = tx - s.translate; - var ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - var slideOpacity = s.params.fade.crossFade ? - Math.max(1 - Math.abs(slide[0].progress), 0) : - 1 + Math.min(Math.max(slide[0].progress, -1), 0); - slide - .css({ - opacity: slideOpacity - }) - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)'); - - } - - }, - setTransition: function (duration) { - s.slides.transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - flip: { - setTranslate: function () { - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var progress = slide[0].progress; - if (s.params.flip.limitRotation) { - progress = Math.max(Math.min(slide[0].progress, 1), -1); - } - var offset = slide[0].swiperSlideOffset; - var rotate = -180 * progress, - rotateY = rotate, - rotateX = 0, - tx = -offset, - ty = 0; - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - rotateX = -rotateY; - rotateY = 0; - } - else if (s.rtl) { - rotateY = -rotateY; - } - - slide[0].style.zIndex = -Math.abs(Math.round(progress)) + s.slides.length; - - if (s.params.flip.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - slide - .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'); - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.virtualTranslate && duration !== 0) { - var eventTriggered = false; - s.slides.eq(s.activeIndex).transitionEnd(function () { - if (eventTriggered) return; - if (!s) return; - if (!$(this).hasClass(s.params.slideActiveClass)) return; - eventTriggered = true; - s.animating = false; - var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd']; - for (var i = 0; i < triggerEvents.length; i++) { - s.wrapper.trigger(triggerEvents[i]); - } - }); - } - } - }, - cube: { - setTranslate: function () { - var wrapperRotate = 0, cubeShadow; - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow = s.wrapper.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.wrapper.append(cubeShadow); - } - cubeShadow.css({height: s.width + 'px'}); - } - else { - cubeShadow = s.container.find('.swiper-cube-shadow'); - if (cubeShadow.length === 0) { - cubeShadow = $('
'); - s.container.append(cubeShadow); - } - } - } - for (var i = 0; i < s.slides.length; i++) { - var slide = s.slides.eq(i); - var slideAngle = i * 90; - var round = Math.floor(slideAngle / 360); - if (s.rtl) { - slideAngle = -slideAngle; - round = Math.floor(-slideAngle / 360); - } - var progress = Math.max(Math.min(slide[0].progress, 1), -1); - var tx = 0, ty = 0, tz = 0; - if (i % 4 === 0) { - tx = - round * 4 * s.size; - tz = 0; - } - else if ((i - 1) % 4 === 0) { - tx = 0; - tz = - round * 4 * s.size; - } - else if ((i - 2) % 4 === 0) { - tx = s.size + round * 4 * s.size; - tz = s.size; - } - else if ((i - 3) % 4 === 0) { - tx = - s.size; - tz = 3 * s.size + s.size * 4 * round; - } - if (s.rtl) { - tx = -tx; - } - - if (!s.isHorizontal()) { - ty = tx; - tx = 0; - } - - var transform = 'rotateX(' + (s.isHorizontal() ? 0 : -slideAngle) + 'deg) rotateY(' + (s.isHorizontal() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)'; - if (progress <= 1 && progress > -1) { - wrapperRotate = i * 90 + progress * 90; - if (s.rtl) wrapperRotate = -i * 90 - progress * 90; - } - slide.transform(transform); - if (s.params.cube.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - s.wrapper.css({ - '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px', - 'transform-origin': '50% 50% -' + (s.size / 2) + 'px' - }); - - if (s.params.cube.shadow) { - if (s.isHorizontal()) { - cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')'); - } - else { - var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; - var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); - var scale1 = s.params.cube.shadowScale, - scale2 = s.params.cube.shadowScale / multiplier, - offset = s.params.cube.shadowOffset; - cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)'); - } - } - var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0; - s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (s.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (s.isHorizontal() ? -wrapperRotate : 0) + 'deg)'); - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - if (s.params.cube.shadow && !s.isHorizontal()) { - s.container.find('.swiper-cube-shadow').transition(duration); - } - } - }, - coverflow: { - setTranslate: function () { - var transform = s.translate; - var center = s.isHorizontal() ? -transform + s.width / 2 : -transform + s.height / 2; - var rotate = s.isHorizontal() ? s.params.coverflow.rotate: -s.params.coverflow.rotate; - var translate = s.params.coverflow.depth; - //Each slide offset from center - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideSize = s.slidesSizesGrid[i]; - var slideOffset = slide[0].swiperSlideOffset; - var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier; - - var rotateY = s.isHorizontal() ? rotate * offsetMultiplier : 0; - var rotateX = s.isHorizontal() ? 0 : rotate * offsetMultiplier; - // var rotateZ = 0 - var translateZ = -translate * Math.abs(offsetMultiplier); - - var translateY = s.isHorizontal() ? 0 : s.params.coverflow.stretch * (offsetMultiplier); - var translateX = s.isHorizontal() ? s.params.coverflow.stretch * (offsetMultiplier) : 0; - - //Fix for ultra small values - if (Math.abs(translateX) < 0.001) translateX = 0; - if (Math.abs(translateY) < 0.001) translateY = 0; - if (Math.abs(translateZ) < 0.001) translateZ = 0; - if (Math.abs(rotateY) < 0.001) rotateY = 0; - if (Math.abs(rotateX) < 0.001) rotateX = 0; - - var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)'; - - slide.transform(slideTransform); - slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - if (s.params.coverflow.slideShadows) { - //Set shadows - var shadowBefore = s.isHorizontal() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top'); - var shadowAfter = s.isHorizontal() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom'); - if (shadowBefore.length === 0) { - shadowBefore = $('
'); - slide.append(shadowBefore); - } - if (shadowAfter.length === 0) { - shadowAfter = $('
'); - slide.append(shadowAfter); - } - if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; - } - } - - //Set correct perspective for IE10 - if (s.browser.ie) { - var ws = s.wrapper[0].style; - ws.perspectiveOrigin = center + 'px 50%'; - } - }, - setTransition: function (duration) { - s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - } - } -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/emitter.js b/dashboard-ui/bower_components/Swiper/src/js/emitter.js deleted file mode 100644 index 836111f305..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/emitter.js +++ /dev/null @@ -1,61 +0,0 @@ -/*========================= - Events/Callbacks/Plugins Emitter - ===========================*/ -function normalizeEventName (eventName) { - if (eventName.indexOf('on') !== 0) { - if (eventName[0] !== eventName[0].toUpperCase()) { - eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); - } - else { - eventName = 'on' + eventName; - } - } - return eventName; -} -s.emitterEventListeners = { - -}; -s.emit = function (eventName) { - // Trigger callbacks - if (s.params[eventName]) { - s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - var i; - // Trigger events - if (s.emitterEventListeners[eventName]) { - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } - // Trigger plugins - if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); -}; -s.on = function (eventName, handler) { - eventName = normalizeEventName(eventName); - if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; - s.emitterEventListeners[eventName].push(handler); - return s; -}; -s.off = function (eventName, handler) { - var i; - eventName = normalizeEventName(eventName); - if (typeof handler === 'undefined') { - // Remove all handlers for such event - s.emitterEventListeners[eventName] = []; - return s; - } - if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; - for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { - if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); - } - return s; -}; -s.once = function (eventName, handler) { - eventName = normalizeEventName(eventName); - var _handler = function () { - handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - s.off(eventName, _handler); - }; - s.on(eventName, _handler); - return s; -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/get-dom-lib.js b/dashboard-ui/bower_components/Swiper/src/js/get-dom-lib.js deleted file mode 100644 index aff1d835f9..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/get-dom-lib.js +++ /dev/null @@ -1,17 +0,0 @@ -/*=========================== - Get Dom libraries - ===========================*/ -var swiperDomPlugins = ['jQuery', 'Zepto', 'Dom7']; -for (var i = 0; i < swiperDomPlugins.length; i++) { - if (window[swiperDomPlugins[i]]) { - addLibraryPlugin(window[swiperDomPlugins[i]]); - } -} -// Required DOM Plugins -var domLib; -if (typeof Dom7 === 'undefined') { - domLib = window.Dom7 || window.Zepto || window.jQuery; -} -else { - domLib = Dom7; -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/get-jquery.js b/dashboard-ui/bower_components/Swiper/src/js/get-jquery.js deleted file mode 100644 index 07ba61dcf8..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/get-jquery.js +++ /dev/null @@ -1,7 +0,0 @@ -/*=========================== - Get jQuery - ===========================*/ - -addLibraryPlugin($); - -var domLib = $; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/hashnav.js b/dashboard-ui/bower_components/Swiper/src/js/hashnav.js deleted file mode 100644 index d4965e4303..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/hashnav.js +++ /dev/null @@ -1,24 +0,0 @@ -/*========================= - Hash Navigation - ===========================*/ -s.hashnav = { - init: function () { - if (!s.params.hashnav) return; - s.hashnav.initialized = true; - var hash = document.location.hash.replace('#', ''); - if (!hash) return; - var speed = 0; - for (var i = 0, length = s.slides.length; i < length; i++) { - var slide = s.slides.eq(i); - var slideHash = slide.attr('data-hash'); - if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) { - var index = slide.index(); - s.slideTo(index, speed, s.params.runCallbacksOnInit, true); - } - } - }, - setHash: function () { - if (!s.hashnav.initialized || !s.params.hashnav) return; - document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || ''; - } -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/init.js b/dashboard-ui/bower_components/Swiper/src/js/init.js deleted file mode 100644 index d21b373214..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/init.js +++ /dev/null @@ -1,133 +0,0 @@ -/*========================= - Init/Destroy - ===========================*/ -s.init = function () { - if (s.params.loop) s.createLoop(); - s.updateContainerSize(); - s.updateSlidesSize(); - s.updatePagination(); - if (s.params.scrollbar && s.scrollbar) { - s.scrollbar.set(); - if (s.params.scrollbarDraggable) { - s.scrollbar.enableDraggable(); - } - } - if (s.params.effect !== 'slide' && s.effects[s.params.effect]) { - if (!s.params.loop) s.updateProgress(); - s.effects[s.params.effect].setTranslate(); - } - if (s.params.loop) { - s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit); - } - else { - s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit); - if (s.params.initialSlide === 0) { - if (s.parallax && s.params.parallax) s.parallax.setTranslate(); - if (s.lazy && s.params.lazyLoading) { - s.lazy.load(); - s.lazy.initialImageLoaded = true; - } - } - } - s.attachEvents(); - if (s.params.observer && s.support.observer) { - s.initObservers(); - } - if (s.params.preloadImages && !s.params.lazyLoading) { - s.preloadImages(); - } - if (s.params.autoplay) { - s.startAutoplay(); - } - if (s.params.keyboardControl) { - if (s.enableKeyboardControl) s.enableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.enableMousewheelControl) s.enableMousewheelControl(); - } - if (s.params.hashnav) { - if (s.hashnav) s.hashnav.init(); - } - if (s.params.a11y && s.a11y) s.a11y.init(); - s.emit('onInit', s); -}; - -// Cleanup dynamic styles -s.cleanupStyles = function () { - // Container - s.container.removeClass(s.classNames.join(' ')).removeAttr('style'); - - // Wrapper - s.wrapper.removeAttr('style'); - - // Slides - if (s.slides && s.slides.length) { - s.slides - .removeClass([ - s.params.slideVisibleClass, - s.params.slideActiveClass, - s.params.slideNextClass, - s.params.slidePrevClass - ].join(' ')) - .removeAttr('style') - .removeAttr('data-swiper-column') - .removeAttr('data-swiper-row'); - } - - // Pagination/Bullets - if (s.paginationContainer && s.paginationContainer.length) { - s.paginationContainer.removeClass(s.params.paginationHiddenClass); - } - if (s.bullets && s.bullets.length) { - s.bullets.removeClass(s.params.bulletActiveClass); - } - - // Buttons - if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass); - if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass); - - // Scrollbar - if (s.params.scrollbar && s.scrollbar) { - if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style'); - if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style'); - } -}; - -// Destroy -s.destroy = function (deleteInstance, cleanupStyles) { - // Detach evebts - s.detachEvents(); - // Stop autoplay - s.stopAutoplay(); - // Disable draggable - if (s.params.scrollbar && s.scrollbar) { - if (s.params.scrollbarDraggable) { - s.scrollbar.disableDraggable(); - } - } - // Destroy loop - if (s.params.loop) { - s.destroyLoop(); - } - // Cleanup styles - if (cleanupStyles) { - s.cleanupStyles(); - } - // Disconnect observer - s.disconnectObservers(); - // Disable keyboard/mousewheel - if (s.params.keyboardControl) { - if (s.disableKeyboardControl) s.disableKeyboardControl(); - } - if (s.params.mousewheelControl) { - if (s.disableMousewheelControl) s.disableMousewheelControl(); - } - // Disable a11y - if (s.params.a11y && s.a11y) s.a11y.destroy(); - // Destroy callback - s.emit('onDestroy'); - // Delete instance - if (deleteInstance !== false) s = null; -}; - -s.init(); diff --git a/dashboard-ui/bower_components/Swiper/src/js/keyboard.js b/dashboard-ui/bower_components/Swiper/src/js/keyboard.js deleted file mode 100644 index 53dd5f4891..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/keyboard.js +++ /dev/null @@ -1,76 +0,0 @@ -/*========================= - Keyboard Control - ===========================*/ -function handleKeyboard(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var kc = e.keyCode || e.charCode; - // Directions locks - if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) { - return false; - } - if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) { - return false; - } - if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { - return; - } - if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { - return; - } - if (kc === 37 || kc === 39 || kc === 38 || kc === 40) { - var inView = false; - //Check that swiper should be inside of visible area of window - if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) { - return; - } - var windowScroll = { - left: window.pageXOffset, - top: window.pageYOffset - }; - var windowWidth = window.innerWidth; - var windowHeight = window.innerHeight; - var swiperOffset = s.container.offset(); - if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft; - var swiperCoord = [ - [swiperOffset.left, swiperOffset.top], - [swiperOffset.left + s.width, swiperOffset.top], - [swiperOffset.left, swiperOffset.top + s.height], - [swiperOffset.left + s.width, swiperOffset.top + s.height] - ]; - for (var i = 0; i < swiperCoord.length; i++) { - var point = swiperCoord[i]; - if ( - point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth && - point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight - ) { - inView = true; - } - - } - if (!inView) return; - } - if (s.isHorizontal()) { - if (kc === 37 || kc === 39) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext(); - if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev(); - } - else { - if (kc === 38 || kc === 40) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - } - if (kc === 40) s.slideNext(); - if (kc === 38) s.slidePrev(); - } -} -s.disableKeyboardControl = function () { - s.params.keyboardControl = false; - $(document).off('keydown', handleKeyboard); -}; -s.enableKeyboardControl = function () { - s.params.keyboardControl = true; - $(document).on('keydown', handleKeyboard); -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/lazy-load.js b/dashboard-ui/bower_components/Swiper/src/js/lazy-load.js deleted file mode 100644 index fb546d667e..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/lazy-load.js +++ /dev/null @@ -1,114 +0,0 @@ -/*========================= - Images Lazy Loading - ===========================*/ -s.lazy = { - initialImageLoaded: false, - loadImageInSlide: function (index, loadInDuplicate) { - if (typeof index === 'undefined') return; - if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true; - if (s.slides.length === 0) return; - - var slide = s.slides.eq(index); - var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)'); - if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) { - img = img.add(slide[0]); - } - if (img.length === 0) return; - - img.each(function () { - var _img = $(this); - _img.addClass('swiper-lazy-loading'); - var background = _img.attr('data-background'); - var src = _img.attr('data-src'), - srcset = _img.attr('data-srcset'); - s.loadImage(_img[0], (src || background), srcset, false, function () { - if (background) { - _img.css('background-image', 'url("' + background + '")'); - _img.removeAttr('data-background'); - } - else { - if (srcset) { - _img.attr('srcset', srcset); - _img.removeAttr('data-srcset'); - } - if (src) { - _img.attr('src', src); - _img.removeAttr('data-src'); - } - - } - - _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading'); - slide.find('.swiper-lazy-preloader, .preloader').remove(); - if (s.params.loop && loadInDuplicate) { - var slideOriginalIndex = slide.attr('data-swiper-slide-index'); - if (slide.hasClass(s.params.slideDuplicateClass)) { - var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')'); - s.lazy.loadImageInSlide(originalSlide.index(), false); - } - else { - var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]'); - s.lazy.loadImageInSlide(duplicatedSlide.index(), false); - } - } - s.emit('onLazyImageReady', s, slide[0], _img[0]); - }); - - s.emit('onLazyImageLoad', s, slide[0], _img[0]); - }); - - }, - load: function () { - var i; - if (s.params.watchSlidesVisibility) { - s.wrapper.children('.' + s.params.slideVisibleClass).each(function () { - s.lazy.loadImageInSlide($(this).index()); - }); - } - else { - if (s.params.slidesPerView > 1) { - for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - s.lazy.loadImageInSlide(s.activeIndex); - } - } - if (s.params.lazyLoadingInPrevNext) { - if (s.params.slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) { - var amount = s.params.lazyLoadingInPrevNextAmount; - var spv = s.params.slidesPerView; - var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length); - var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0); - // Next Slides - for (i = s.activeIndex + s.params.slidesPerView; i < maxIndex; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - // Prev Slides - for (i = minIndex; i < s.activeIndex ; i++) { - if (s.slides[i]) s.lazy.loadImageInSlide(i); - } - } - else { - var nextSlide = s.wrapper.children('.' + s.params.slideNextClass); - if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index()); - - var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass); - if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index()); - } - } - }, - onTransitionStart: function () { - if (s.params.lazyLoading) { - if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) { - s.lazy.load(); - } - } - }, - onTransitionEnd: function () { - if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) { - s.lazy.load(); - } - } -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/mousewheel.js b/dashboard-ui/bower_components/Swiper/src/js/mousewheel.js deleted file mode 100644 index d704d7c0e6..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/mousewheel.js +++ /dev/null @@ -1,134 +0,0 @@ -/*========================= - Mousewheel Control - ===========================*/ -s.mousewheel = { - event: false, - lastScrollTime: (new window.Date()).getTime() -}; -if (s.params.mousewheelControl) { - try { - new window.WheelEvent('wheel'); - s.mousewheel.event = 'wheel'; - } catch (e) { - if (window.WheelEvent || (s.container[0] && 'wheel' in s.container[0])) { - s.mousewheel.event = 'wheel'; - } - } - if (!s.mousewheel.event && window.WheelEvent) { - - } - if (!s.mousewheel.event && document.onmousewheel !== undefined) { - s.mousewheel.event = 'mousewheel'; - } - if (!s.mousewheel.event) { - s.mousewheel.event = 'DOMMouseScroll'; - } -} -function handleMousewheel(e) { - if (e.originalEvent) e = e.originalEvent; //jquery fix - var we = s.mousewheel.event; - var delta = 0; - var rtlFactor = s.rtl ? -1 : 1; - - //WebKits - if (we === 'mousewheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY; - else return; - } - } - else { - delta = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? - e.wheelDeltaX * rtlFactor : - e.wheelDeltaY; - } - } - //Old FireFox - else if (we === 'DOMMouseScroll') delta = -e.detail; - //New FireFox - else if (we === 'wheel') { - if (s.params.mousewheelForceToAxis) { - if (s.isHorizontal()) { - if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX * rtlFactor; - else return; - } - else { - if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY; - else return; - } - } - else { - delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX * rtlFactor : - e.deltaY; - } - } - if (delta === 0) return; - - if (s.params.mousewheelInvert) delta = -delta; - - if (!s.params.freeMode) { - if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) { - if (delta < 0) { - if ((!s.isEnd || s.params.loop) && !s.animating) s.slideNext(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - else { - if ((!s.isBeginning || s.params.loop) && !s.animating) s.slidePrev(); - else if (s.params.mousewheelReleaseOnEdges) return true; - } - } - s.mousewheel.lastScrollTime = (new window.Date()).getTime(); - - } - else { - //Freemode or scrollContainer: - var position = s.getWrapperTranslate() + delta * s.params.mousewheelSensitivity; - var wasBeginning = s.isBeginning, - wasEnd = s.isEnd; - - if (position >= s.minTranslate()) position = s.minTranslate(); - if (position <= s.maxTranslate()) position = s.maxTranslate(); - - s.setWrapperTransition(0); - s.setWrapperTranslate(position); - s.updateProgress(); - s.updateActiveIndex(); - - if (!wasBeginning && s.isBeginning || !wasEnd && s.isEnd) { - s.updateClasses(); - } - - if (s.params.freeModeSticky) { - clearTimeout(s.mousewheel.timeout); - s.mousewheel.timeout = setTimeout(function () { - s.slideReset(); - }, 300); - } - else { - if (s.params.lazyLoading && s.lazy) { - s.lazy.load(); - } - } - - // Return page scroll on edge positions - if (position === 0 || position === s.maxTranslate()) return; - } - if (s.params.autoplay) s.stopAutoplay(); - - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - return false; -} -s.disableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.off(s.mousewheel.event, handleMousewheel); - return true; -}; - -s.enableMousewheelControl = function () { - if (!s.mousewheel.event) return false; - s.container.on(s.mousewheel.event, handleMousewheel); - return true; -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/parallax.js b/dashboard-ui/bower_components/Swiper/src/js/parallax.js deleted file mode 100644 index 78ad997154..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/parallax.js +++ /dev/null @@ -1,65 +0,0 @@ -/*========================= - Parallax - ===========================*/ -function setParallaxTransform(el, progress) { - el = $(el); - var p, pX, pY; - var rtlFactor = s.rtl ? -1 : 1; - - p = el.attr('data-swiper-parallax') || '0'; - pX = el.attr('data-swiper-parallax-x'); - pY = el.attr('data-swiper-parallax-y'); - if (pX || pY) { - pX = pX || '0'; - pY = pY || '0'; - } - else { - if (s.isHorizontal()) { - pX = p; - pY = '0'; - } - else { - pY = p; - pX = '0'; - } - } - - if ((pX).indexOf('%') >= 0) { - pX = parseInt(pX, 10) * progress * rtlFactor + '%'; - } - else { - pX = pX * progress * rtlFactor + 'px' ; - } - if ((pY).indexOf('%') >= 0) { - pY = parseInt(pY, 10) * progress + '%'; - } - else { - pY = pY * progress + 'px' ; - } - - el.transform('translate3d(' + pX + ', ' + pY + ',0px)'); -} -s.parallax = { - setTranslate: function () { - s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - setParallaxTransform(this, s.progress); - - }); - s.slides.each(function () { - var slide = $(this); - slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () { - var progress = Math.min(Math.max(slide[0].progress, -1), 1); - setParallaxTransform(this, progress); - }); - }); - }, - setTransition: function (duration) { - if (typeof duration === 'undefined') duration = s.params.speed; - s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){ - var el = $(this); - var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - el.transition(parallaxDuration); - }); - } -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/plugins.js b/dashboard-ui/bower_components/Swiper/src/js/plugins.js deleted file mode 100644 index 012b58bb85..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/plugins.js +++ /dev/null @@ -1,16 +0,0 @@ -/*========================= - Plugins API. Collect all and init all plugins - ===========================*/ -s._plugins = []; -for (var plugin in s.plugins) { - var p = s.plugins[plugin](s, s.params[plugin]); - if (p) s._plugins.push(p); -} -// Method to call all plugins event/method -s.callPlugins = function (eventName) { - for (var i = 0; i < s._plugins.length; i++) { - if (eventName in s._plugins[i]) { - s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); - } - } -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/scrollbar.js b/dashboard-ui/bower_components/Swiper/src/js/scrollbar.js deleted file mode 100644 index a96b3dc158..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/scrollbar.js +++ /dev/null @@ -1,181 +0,0 @@ -/*========================= - Scrollbar - ===========================*/ -s.scrollbar = { - isTouched: false, - setDragPosition: function (e) { - var sb = s.scrollbar; - var x = 0, y = 0; - var translate; - var pointerPosition = s.isHorizontal() ? - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX) : - ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY) ; - var position = (pointerPosition) - sb.track.offset()[s.isHorizontal() ? 'left' : 'top'] - sb.dragSize / 2; - var positionMin = -s.minTranslate() * sb.moveDivider; - var positionMax = -s.maxTranslate() * sb.moveDivider; - if (position < positionMin) { - position = positionMin; - } - else if (position > positionMax) { - position = positionMax; - } - position = -position / sb.moveDivider; - s.updateProgress(position); - s.setWrapperTranslate(position, true); - }, - dragStart: function (e) { - var sb = s.scrollbar; - sb.isTouched = true; - e.preventDefault(); - e.stopPropagation(); - - sb.setDragPosition(e); - clearTimeout(sb.dragTimeout); - - sb.track.transition(0); - if (s.params.scrollbarHide) { - sb.track.css('opacity', 1); - } - s.wrapper.transition(100); - sb.drag.transition(100); - s.emit('onScrollbarDragStart', s); - }, - dragMove: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - sb.setDragPosition(e); - s.wrapper.transition(0); - sb.track.transition(0); - sb.drag.transition(0); - s.emit('onScrollbarDragMove', s); - }, - dragEnd: function (e) { - var sb = s.scrollbar; - if (!sb.isTouched) return; - sb.isTouched = false; - if (s.params.scrollbarHide) { - clearTimeout(sb.dragTimeout); - sb.dragTimeout = setTimeout(function () { - sb.track.css('opacity', 0); - sb.track.transition(400); - }, 1000); - - } - s.emit('onScrollbarDragEnd', s); - if (s.params.scrollbarSnapOnRelease) { - s.slideReset(); - } - }, - enableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).on(s.touchEvents.start, sb.dragStart); - $(target).on(s.touchEvents.move, sb.dragMove); - $(target).on(s.touchEvents.end, sb.dragEnd); - }, - disableDraggable: function () { - var sb = s.scrollbar; - var target = s.support.touch ? sb.track : document; - $(sb.track).off(s.touchEvents.start, sb.dragStart); - $(target).off(s.touchEvents.move, sb.dragMove); - $(target).off(s.touchEvents.end, sb.dragEnd); - }, - set: function () { - if (!s.params.scrollbar) return; - var sb = s.scrollbar; - sb.track = $(s.params.scrollbar); - if (s.params.uniqueNavElements && typeof s.params.scrollbar === 'string' && sb.track.length > 1 && s.container.find(s.params.scrollbar).length === 1) { - sb.track = s.container.find(s.params.scrollbar); - } - sb.drag = sb.track.find('.swiper-scrollbar-drag'); - if (sb.drag.length === 0) { - sb.drag = $('
'); - sb.track.append(sb.drag); - } - sb.drag[0].style.width = ''; - sb.drag[0].style.height = ''; - sb.trackSize = s.isHorizontal() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight; - - sb.divider = s.size / s.virtualSize; - sb.moveDivider = sb.divider * (sb.trackSize / s.size); - sb.dragSize = sb.trackSize * sb.divider; - - if (s.isHorizontal()) { - sb.drag[0].style.width = sb.dragSize + 'px'; - } - else { - sb.drag[0].style.height = sb.dragSize + 'px'; - } - - if (sb.divider >= 1) { - sb.track[0].style.display = 'none'; - } - else { - sb.track[0].style.display = ''; - } - if (s.params.scrollbarHide) { - sb.track[0].style.opacity = 0; - } - }, - setTranslate: function () { - if (!s.params.scrollbar) return; - var diff; - var sb = s.scrollbar; - var translate = s.translate || 0; - var newPos; - - var newSize = sb.dragSize; - newPos = (sb.trackSize - sb.dragSize) * s.progress; - if (s.rtl && s.isHorizontal()) { - newPos = -newPos; - if (newPos > 0) { - newSize = sb.dragSize - newPos; - newPos = 0; - } - else if (-newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize + newPos; - } - } - else { - if (newPos < 0) { - newSize = sb.dragSize + newPos; - newPos = 0; - } - else if (newPos + sb.dragSize > sb.trackSize) { - newSize = sb.trackSize - newPos; - } - } - if (s.isHorizontal()) { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)'); - } - else { - sb.drag.transform('translateX(' + (newPos) + 'px)'); - } - sb.drag[0].style.width = newSize + 'px'; - } - else { - if (s.support.transforms3d) { - sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)'); - } - else { - sb.drag.transform('translateY(' + (newPos) + 'px)'); - } - sb.drag[0].style.height = newSize + 'px'; - } - if (s.params.scrollbarHide) { - clearTimeout(sb.timeout); - sb.track[0].style.opacity = 1; - sb.timeout = setTimeout(function () { - sb.track[0].style.opacity = 0; - sb.track.transition(400); - }, 1000); - } - }, - setTransition: function (duration) { - if (!s.params.scrollbar) return; - s.scrollbar.drag.transition(duration); - } -}; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/swiper-intro-f7.js b/dashboard-ui/bower_components/Swiper/src/js/swiper-intro-f7.js deleted file mode 100644 index 9ec3ad5476..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/swiper-intro-f7.js +++ /dev/null @@ -1,5 +0,0 @@ -/*=========================== -Swiper -===========================*/ -window.Swiper = function (container, params) { - if (!(this instanceof Swiper)) return new Swiper(container, params); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/swiper-intro.js b/dashboard-ui/bower_components/Swiper/src/js/swiper-intro.js deleted file mode 100644 index 884f10bb04..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/swiper-intro.js +++ /dev/null @@ -1,5 +0,0 @@ -/*=========================== -Swiper -===========================*/ -var Swiper = function (container, params) { - if (!(this instanceof Swiper)) return new Swiper(container, params); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/swiper-outro.js b/dashboard-ui/bower_components/Swiper/src/js/swiper-outro.js deleted file mode 100644 index ffafa22823..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/swiper-outro.js +++ /dev/null @@ -1,4 +0,0 @@ - - // Return swiper instance - return s; -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/swiper-proto.js b/dashboard-ui/bower_components/Swiper/src/js/swiper-proto.js deleted file mode 100644 index 53746a571f..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/swiper-proto.js +++ /dev/null @@ -1,63 +0,0 @@ -/*================================================== - Prototype -====================================================*/ -Swiper.prototype = { - isSafari: (function () { - var ua = navigator.userAgent.toLowerCase(); - return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); - })(), - isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent), - isArray: function (arr) { - return Object.prototype.toString.apply(arr) === '[object Array]'; - }, - /*================================================== - Browser - ====================================================*/ - browser: { - ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled, - ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1) - }, - /*================================================== - Devices - ====================================================*/ - device: (function () { - var ua = navigator.userAgent; - var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); - var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); - var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); - var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); - return { - ios: ipad || iphone || ipod, - android: android - }; - })(), - /*================================================== - Feature Detection - ====================================================*/ - support: { - touch : (window.Modernizr && Modernizr.touch === true) || (function () { - return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); - })(), - - transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () { - var div = document.createElement('div').style; - return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); - })(), - - flexbox: (function () { - var div = document.createElement('div').style; - var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); - for (var i = 0; i < styles.length; i++) { - if (styles[i] in div) return true; - } - })(), - - observer: (function () { - return ('MutationObserver' in window || 'WebkitMutationObserver' in window); - })() - }, - /*================================================== - Plugins - ====================================================*/ - plugins: {} -}; diff --git a/dashboard-ui/bower_components/Swiper/src/js/wrap-end-umd.js b/dashboard-ui/bower_components/Swiper/src/js/wrap-end-umd.js deleted file mode 100644 index ccafdf4015..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/wrap-end-umd.js +++ /dev/null @@ -1,2 +0,0 @@ - return Swiper; -})); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/wrap-end.js b/dashboard-ui/bower_components/Swiper/src/js/wrap-end.js deleted file mode 100644 index 5f3d75ca38..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/wrap-end.js +++ /dev/null @@ -1,2 +0,0 @@ - window.Swiper = Swiper; -})(); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/js/wrap-start-umd.js b/dashboard-ui/bower_components/Swiper/src/js/wrap-start-umd.js deleted file mode 100644 index 7dff9f2c8e..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/wrap-start-umd.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (root, factory) { - 'use strict'; - - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(require('jquery')); - } else { - // Browser globals (root is window) - root.Swiper = factory(root.jQuery); - } -}(this, function ($) { - 'use strict'; diff --git a/dashboard-ui/bower_components/Swiper/src/js/wrap-start.js b/dashboard-ui/bower_components/Swiper/src/js/wrap-start.js deleted file mode 100644 index 3628709ca3..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/js/wrap-start.js +++ /dev/null @@ -1,3 +0,0 @@ -(function () { - 'use strict'; - var $; \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/core.less b/dashboard-ui/bower_components/Swiper/src/less/core.less deleted file mode 100644 index 88b359c9be..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/core.less +++ /dev/null @@ -1,104 +0,0 @@ -.swiper-container { - margin:0 auto; - position:relative; - overflow:hidden; - /* Fix of Webkit flickering */ - z-index:1; -} -.swiper-container-no-flexbox { - .swiper-slide { - float: left; - } -} -.swiper-container-vertical > .swiper-wrapper{ - -webkit-box-orient: vertical; - -moz-box-orient: vertical; - -ms-flex-direction: column; - -webkit-flex-direction: column; - flex-direction: column; -} -.swiper-wrapper { - position:relative; - width: 100%; - height: 100%; - z-index: 1; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - - -webkit-transition-property:-webkit-transform; - -moz-transition-property:-moz-transform; - -o-transition-property:-o-transform; - -ms-transition-property:-ms-transform; - transition-property:transform; - - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.swiper-container-android .swiper-slide, .swiper-wrapper { - -webkit-transform:translate3d(0px,0,0); - -moz-transform:translate3d(0px,0,0); - -o-transform:translate(0px,0px); - -ms-transform:translate3d(0px,0,0); - transform:translate3d(0px,0,0); -} -.swiper-container-multirow > .swiper-wrapper { - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - -ms-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; -} -.swiper-container-free-mode > .swiper-wrapper { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; - margin: 0 auto; -} -.swiper-slide { - -webkit-flex-shrink: 0; - -ms-flex: 0 0 auto; - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; -} -/* Auto Height */ -.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide { - height: auto; -} -.swiper-container-autoheight .swiper-wrapper { - -webkit-box-align: start; - -ms-flex-align: start; - -webkit-align-items: flex-start; - align-items: flex-start; - -webkit-transition-property: -webkit-transform, height; - -moz-transition-property: -moz-transform; - -o-transition-property: -o-transform; - -ms-transition-property: -ms-transform; - transition-property: transform, height; -} -/* a11y */ -.swiper-container .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} - -/* IE10 Windows Phone 8 Fixes */ -.swiper-wp8-horizontal { - -ms-touch-action: pan-y; - touch-action: pan-y; -} -.swiper-wp8-vertical { - -ms-touch-action: pan-x; - touch-action: pan-x; -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/effects.less b/dashboard-ui/bower_components/Swiper/src/less/effects.less deleted file mode 100644 index dcc7c7c9db..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/effects.less +++ /dev/null @@ -1,142 +0,0 @@ -/* 3D Container */ -.swiper-container-3d { - -webkit-perspective: 1200px; - -moz-perspective: 1200px; - -o-perspective: 1200px; - perspective: 1200px; - .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { - .preserve3d(); - } - .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10; - } - .swiper-slide-shadow-left { - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0))); /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(right, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(right, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(right, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Opera 11.10-12.00 */ - background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 16+, IE10, Opera 12.50+ */ - } - .swiper-slide-shadow-right { - background-image: -webkit-gradient(linear, right top, left top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0))); /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(left, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(left, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(left, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Opera 11.10-12.00 */ - background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 16+, IE10, Opera 12.50+ */ - } - .swiper-slide-shadow-top { - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0))); /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Opera 11.10-12.00 */ - background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 16+, IE10, Opera 12.50+ */ - } - .swiper-slide-shadow-bottom { - background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0))); /* Safari 4+, Chrome */ - background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Chrome 10+, Safari 5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 3.6-15 */ - background-image: -o-linear-gradient(top, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Opera 11.10-12.00 */ - background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* Firefox 16+, IE10, Opera 12.50+ */ - } -} -/* Coverflow */ -.swiper-container-coverflow, .swiper-container-flip { - .swiper-wrapper { - /* Windows 8 IE 10 fix */ - -ms-perspective:1200px; - } -} -/* Cube + Flip */ -.swiper-container-cube, .swiper-container-flip { - overflow: visible; - .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; - .swiper-slide { - pointer-events: none; - } - } - .swiper-slide-active { - &, & .swiper-slide-active { - pointer-events: auto; - } - } - .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - } -} -/* Cube */ -.swiper-container-cube { - .swiper-slide { - visibility: hidden; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - width: 100%; - height: 100%; - } - &.swiper-container-rtl .swiper-slide{ - -webkit-transform-origin: 100% 0; - -moz-transform-origin: 100% 0; - -ms-transform-origin: 100% 0; - transform-origin: 100% 0; - } - .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; - } - .swiper-cube-shadow { - position: absolute; - left: 0; - bottom: 0px; - width: 100%; - height: 100%; - background: #000; - opacity: 0.6; - -webkit-filter: blur(50px); - filter: blur(50px); - z-index: 0; - } -} -/* Fade */ -.swiper-container-fade { - &.swiper-container-free-mode { - .swiper-slide { - -webkit-transition-timing-function: ease-out; - -moz-transition-timing-function: ease-out; - -ms-transition-timing-function: ease-out; - -o-transition-timing-function: ease-out; - transition-timing-function: ease-out; - } - } - .swiper-slide { - pointer-events: none; - -webkit-transition-property: opacity; - -moz-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity; - .swiper-slide { - pointer-events: none; - } - } - .swiper-slide-active { - &, & .swiper-slide-active { - pointer-events: auto; - } - } -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/mixins.less b/dashboard-ui/bower_components/Swiper/src/less/mixins.less deleted file mode 100644 index c0e1aa339b..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/mixins.less +++ /dev/null @@ -1,10 +0,0 @@ -.preserve3d() { - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - transform-style: preserve-3d; -} -.encoded-svg-background(@svg) { - @url: `encodeURIComponent(@{svg})`; - background-image: url("data:image/svg+xml;charset=utf-8,@{url}"); -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/navigation-f7.less b/dashboard-ui/bower_components/Swiper/src/less/navigation-f7.less deleted file mode 100644 index 00f185f625..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/navigation-f7.less +++ /dev/null @@ -1,143 +0,0 @@ -/* Arrows */ -.swiper-button-prev, .swiper-button-next { - position: absolute; - top: 50%; - width: 27px; - height: 44px; - margin-top: -22px; - z-index: 10; - cursor: pointer; - -moz-background-size: 27px 44px; - -webkit-background-size: 27px 44px; - background-size: 27px 44px; - background-position: center; - background-repeat: no-repeat; - &.swiper-button-disabled { - opacity: 0.35; - cursor: auto; - pointer-events: none; - } -} -.swiper-button-prev, .swiper-container-rtl .swiper-button-next { - .encoded-svg-background(""); - left: 10px; - right: auto; -} -.swiper-button-next, .swiper-container-rtl .swiper-button-prev { - .encoded-svg-background(""); - right: 10px; - left: auto; -} - -/* Pagination Styles */ -.swiper-pagination { - position: absolute; - text-align: center; - -webkit-transition: 300ms; - -moz-transition: 300ms; - -o-transition: 300ms; - transition: 300ms; - -webkit-transform: translate3d(0,0,0); - -ms-transform: translate3d(0,0,0); - -o-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - z-index: 10; - &.swiper-pagination-hidden { - opacity: 0; - } -} -/* Common Styles */ -.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ - bottom: 10px; - left: 0; - width: 100%; -} -/* Bullets */ -.swiper-pagination-bullet { - width: 8px; - height: 8px; - display: inline-block; - border-radius: 100%; - background: #000; - opacity: 0.2; - button& { - border: none; - margin: 0; - padding: 0; - box-shadow: none; - -moz-appearance: none; - -ms-appearance: none; - -webkit-appearance: none; - appearance: none; - } - .swiper-pagination-clickable & { - cursor: pointer; - } -} -.swiper-pagination-bullet-active { - opacity: 1; - background: #007aff; -} -.swiper-container-vertical { - > .swiper-pagination-bullets { - right: 10px; - top: 50%; - -webkit-transform:translate3d(0px,-50%,0); - -moz-transform:translate3d(0px,-50%,0); - -o-transform:translate(0px,-50%); - -ms-transform:translate3d(0px,-50%,0); - transform:translate3d(0px,-50%,0); - .swiper-pagination-bullet { - margin: 5px 0; - display: block; - } - } -} -.swiper-container-horizontal { - > .swiper-pagination-bullets { - .swiper-pagination-bullet { - margin: 0 5px; - } - } -} -/* Progress */ -.swiper-pagination-progress { - background: rgba(0,0,0,0.25); - position: absolute; - .swiper-pagination-progressbar { - background: #007aff; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - -webkit-transform-origin: left top; - -moz-transform-origin: left top; - -ms-transform-origin: left top; - -o-transform-origin: left top; - transform-origin: left top; - } - .swiper-container-rtl & .swiper-pagination-progressbar { - -webkit-transform-origin: right top; - -moz-transform-origin: right top; - -ms-transform-origin: right top; - -o-transform-origin: right top; - transform-origin: right top; - } - .swiper-container-horizontal > & { - width: 100%; - height: 4px; - left: 0; - top: 0; - } - .swiper-container-vertical > & { - width: 4px; - height: 100%; - left: 0; - top: 0; - } -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/navigation.less b/dashboard-ui/bower_components/Swiper/src/less/navigation.less deleted file mode 100644 index 39cea89f46..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/navigation.less +++ /dev/null @@ -1,174 +0,0 @@ -/* Arrows */ -.swiper-button-prev, .swiper-button-next { - position: absolute; - top: 50%; - width: 27px; - height: 44px; - margin-top: -22px; - z-index: 10; - cursor: pointer; - -moz-background-size: 27px 44px; - -webkit-background-size: 27px 44px; - background-size: 27px 44px; - background-position: center; - background-repeat: no-repeat; - &.swiper-button-disabled { - opacity: 0.35; - cursor: auto; - pointer-events: none; - } -} -.swiper-button-prev, .swiper-container-rtl .swiper-button-next { - .encoded-svg-background(""); - left: 10px; - right: auto; - &.swiper-button-black { - .encoded-svg-background(""); - } - &.swiper-button-white { - .encoded-svg-background(""); - } -} -.swiper-button-next, .swiper-container-rtl .swiper-button-prev { - .encoded-svg-background(""); - right: 10px; - left: auto; - &.swiper-button-black { - .encoded-svg-background(""); - } - &.swiper-button-white { - .encoded-svg-background(""); - } -} -/* Pagination Styles */ -.swiper-pagination { - position: absolute; - text-align: center; - -webkit-transition: 300ms; - -moz-transition: 300ms; - -o-transition: 300ms; - transition: 300ms; - -webkit-transform: translate3d(0,0,0); - -ms-transform: translate3d(0,0,0); - -o-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - z-index: 10; - &.swiper-pagination-hidden { - opacity: 0; - } -} -/* Common Styles */ -.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ - bottom: 10px; - left: 0; - width: 100%; -} -/* Bullets */ -.swiper-pagination-bullet { - width: 8px; - height: 8px; - display: inline-block; - border-radius: 100%; - background: #000; - opacity: 0.2; - button& { - border: none; - margin: 0; - padding: 0; - box-shadow: none; - -moz-appearance: none; - -ms-appearance: none; - -webkit-appearance: none; - appearance: none; - } - .swiper-pagination-clickable & { - cursor: pointer; - } - .swiper-pagination-white & { - background: #fff; - } -} -.swiper-pagination-bullet-active { - opacity: 1; - background: #007aff; - .swiper-pagination-white & { - background: #fff; - } - .swiper-pagination-black & { - background: #000; - } -} -.swiper-container-vertical { - > .swiper-pagination-bullets { - right: 10px; - top: 50%; - -webkit-transform:translate3d(0px,-50%,0); - -moz-transform:translate3d(0px,-50%,0); - -o-transform:translate(0px,-50%); - -ms-transform:translate3d(0px,-50%,0); - transform:translate3d(0px,-50%,0); - .swiper-pagination-bullet { - margin: 5px 0; - display: block; - } - } -} -.swiper-container-horizontal { - > .swiper-pagination-bullets { - .swiper-pagination-bullet { - margin: 0 5px; - } - } -} -/* Progress */ -.swiper-pagination-progress { - background: rgba(0,0,0,0.25); - position: absolute; - .swiper-pagination-progressbar { - background: #007aff; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - -webkit-transform-origin: left top; - -moz-transform-origin: left top; - -ms-transform-origin: left top; - -o-transform-origin: left top; - transform-origin: left top; - } - .swiper-container-rtl & .swiper-pagination-progressbar { - -webkit-transform-origin: right top; - -moz-transform-origin: right top; - -ms-transform-origin: right top; - -o-transform-origin: right top; - transform-origin: right top; - } - .swiper-container-horizontal > & { - width: 100%; - height: 4px; - left: 0; - top: 0; - } - .swiper-container-vertical > & { - width: 4px; - height: 100%; - left: 0; - top: 0; - } - &.swiper-pagination-white { - background: rgba(255,255,255,0.5); - .swiper-pagination-progressbar { - background: #fff; - } - } - &.swiper-pagination-black { - .swiper-pagination-progressbar { - background: #000; - } - } -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/preloader-f7.less b/dashboard-ui/bower_components/Swiper/src/less/preloader-f7.less deleted file mode 100644 index 1b422e9e39..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/preloader-f7.less +++ /dev/null @@ -1,11 +0,0 @@ -/* Preloader */ -.swiper-slide .preloader { - width: 42px; - height: 42px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -21px; - margin-top: -21px; - z-index: 10; -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/preloader.less b/dashboard-ui/bower_components/Swiper/src/less/preloader.less deleted file mode 100644 index b15f8efc59..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/preloader.less +++ /dev/null @@ -1,42 +0,0 @@ -/* Preloader */ -.swiper-lazy-preloader { - width: 42px; - height: 42px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -21px; - margin-top: -21px; - z-index: 10; - -webkit-transform-origin: 50%; - -moz-transform-origin: 50%; - transform-origin: 50%; - -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; - -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; - animation: swiper-preloader-spin 1s steps(12, end) infinite; -} -.swiper-lazy-preloader:after { - display: block; - content: ""; - width: 100%; - height: 100%; - .encoded-svg-background(""); - background-position: 50%; - -webkit-background-size: 100%; - background-size: 100%; - background-repeat: no-repeat; - -} -.swiper-lazy-preloader-white:after { - .encoded-svg-background(""); -} -@-webkit-keyframes swiper-preloader-spin { - 100% { - -webkit-transform: rotate(360deg); - } -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/scrollbar.less b/dashboard-ui/bower_components/Swiper/src/less/scrollbar.less deleted file mode 100644 index 624f1dfd86..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/scrollbar.less +++ /dev/null @@ -1,35 +0,0 @@ -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0,0,0,0.1); - .swiper-container-horizontal > & { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; - } - .swiper-container-vertical > & { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; - } -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0,0,0,0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/src/less/swiper.less b/dashboard-ui/bower_components/Swiper/src/less/swiper.less deleted file mode 100644 index d8ec9136e9..0000000000 --- a/dashboard-ui/bower_components/Swiper/src/less/swiper.less +++ /dev/null @@ -1,6 +0,0 @@ -@import url('mixins.less'); -@import url('core.less'); -@import url('navigation.less'); -@import url('effects.less'); -@import url('scrollbar.less'); -@import url('preloader.less'); \ No newline at end of file diff --git a/dashboard-ui/bower_components/web-animations-js/.bower.json b/dashboard-ui/bower_components/web-animations-js/.bower.json index 968e817d6a..dd39e422ae 100644 --- a/dashboard-ui/bower_components/web-animations-js/.bower.json +++ b/dashboard-ui/bower_components/web-animations-js/.bower.json @@ -35,8 +35,7 @@ "tag": "2.2.1", "commit": "45d8e40300e82ff02ccfbbc78c89500de0f5616f" }, - "_source": "https://github.com/web-animations/web-animations-js.git", - "_target": "^2.2.1", - "_originalSource": "web-animations-js", - "_direct": true + "_source": "git://github.com/web-animations/web-animations-js.git", + "_target": "^2.2.0", + "_originalSource": "web-animations/web-animations-js" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/web-animations-js/web-animations-next-lite.min.js.map b/dashboard-ui/bower_components/web-animations-js/web-animations-next-lite.min.js.map deleted file mode 100644 index 0352ea275c..0000000000 --- a/dashboard-ui/bower_components/web-animations-js/web-animations-next-lite.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","rotate","makePropertySpecificKeyframeGroups","rotate3d","propertySpecificKeyframeGroups","scaley","_","scalez","propertySpecificKeyframe","cast","groupName","group","scope","concat","candidate","makeInterpolations","interpolations","alias","startTime","endTime","startValue","animate","oncancel","now","performance","AnimationCancelEvent","target","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","originalElementAnimate","Element","options","animation","call","_cancelHandlers","originalCancel","cancel","event","handlers","setTimeout","handler","originalAddEventListener","addEventListener","originalRemoveEventListener","removeEventListener","index","splice","element","documentElement","animated","originalOpacity","getComputedStyle","getPropertyValue","testOpacity","opacity","error","webAnimationsNextTick","t","timeline","_discardAnimations","_animations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","playState","_play","Animation","restartWebAnimationsNextTick","play","remove","defineProperty","configurable","get","e","id","_id","_timeline","_sequenceNumber","sequenceNumber","_holdTime","_paused","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","oldCurrentTime","hadUnderlying","_wrapper","KeyframeEffect","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","pause","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","bind","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","onfinish","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","finish","reverse","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","keyframeEffect","groupAnimation","originalGetComputedStyle","enumerable","arguments","register","_registered","callbacks","tick","updating","left","right","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","args","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","max","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next-lite.min.js"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/web-animations-js/web-animations-next.min.js.map b/dashboard-ui/bower_components/web-animations-js/web-animations-next.min.js.map deleted file mode 100644 index c478544dce..0000000000 --- a/dashboard-ui/bower_components/web-animations-js/web-animations-next.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","r","makePropertySpecificKeyframeGroups","leftCopy","propertySpecificKeyframeGroups","bind","addPropertiesHandler","parseShadowList","mergeShadowList","propertySpecificKeyframe","groupName","group","mergeFlex","left","right","round","makeInterpolations","interpolations","startTime","endTime","startValue","endValue","propertyInterpolation","leftInterpolation","rightInterpolation","convertEffectInput","trim","context","target","fraction","interpolation","fillStyle","offsetFraction","localDuration","scaledLocalTime","clamp","join","canvas","toCamelCase","parseColor","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","properties","ucProperty","test","matchedUnits","string","replace","unitRegExp","initialValues","handlers","parsedRight","parsedLeft","interpolationArgs","interp","Interpolation","t","taggedUnitRegExp","unit","bool","backgroundColor","nonNegative","backgroundPosition","units","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderLeftColor","borderRightColor","borderSpacing","borderTopColor","borderTopLeftRadius","borderTopRightRadius","numberToString","clip","color","height","marginBottom","marginLeft","marginRight","lengthUnits","marginTop","parseLengthOrPercent","maxWidth","minHeight","minWidth","opacity","parseAngle","outlineColor","outlineOffset","paddingBottom","paddingLeft","transform","verticalAlign","visibility","width","wordSpacing","consumeLength","zIndex","consumeParenthesised","consumeSizePairList","EffectTime","effectTime","_totalDuration","_isCurrent","KeyframeEffect","keyframeEffect","_update","_clear","_hasSameTarget","id","NullEffect","clear","nullEffect","configureProperty","object","descriptor","enumerable","configurable","defineProperty","AnimatedCSSStyleDeclaration","element","_surrogateStyle","ignore","consumeToken","_style","_length","_isAnimatedProperty","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","merged","animatedStyle","mergeDimensions","get","mergeWrappedNestedRepeated","_","styleAttributes","cssText","parentRule","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","transformRegExp","isAffectedProperty","functionName","argTypes","s","T","parsedArgs","index","method","modifiesStyle","list","arguments","documentElement","matrixModulesLoaded","set","_set","propertyName","Element","animate","options","mergeMatrices","timeline","interpolate","leftArgs","to","transformFunctions","leftType","leftResult","convertToString","typeTo2D","max","rightArgs","quat","product","dot","fromQ","theta","sqrt","cos","toQ","w","composeMatrix","leftFunctionData","multiply","leftArgsCopy","k","mergeNumbers","merge","rightArgsCopy","translate","skew","perspective","matrix","types","stringConversions","tmp","rightResult","rotMatrix","stringifiedArgs","args","arg","y","z","deg","temp","rotate","rotatez","scale","cast","scaley","scale3d","is2D","concat","translatey","sequenceNumber","AnimationEvent","currentTime","timelineTime","out","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","now","Animation","_id","_sequenceNumber","_currentTime","dimension","_paused","_inTimeline","_finishedFlag","onfinish","consumeOffset","_finishHandlers","_idle","consumeLengthOrPercent","_currentTimePending","_ensureAlive","_inEffect","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","position","restart","_startTime","_timeline","bottomOrRight","invalidateEffects","token","center","oldCurrentTime","mergeNestedRepeated","playState","play","parseOrigin","consumePosition","mergeOffsetList","circle","consumeList","pause","finish","ellipse","cancel","reverse","polygon","addEventListener","handler","_fireEvents","baseTime","event","setTimeout","mergeNonNegativeSizePair","call","_tick","isAnimationFrame","_needsTick","running","mergeSizePair","processRafCallbacks","processing","rafCallbacks","candidate","entry","applyPendingEffects","compareAnimations","rightAnimation","leftAnimation","InternalTimeline","performance","oncancel","AnimationCancelEvent","originalElementAnimate","animation","_cancelHandlers","originalCancel","originalAddEventListener","originalRemoveEventListener","removeEventListener","splice","animated","originalOpacity","getComputedStyle","testOpacity","error","webAnimationsNextTick","_discardAnimations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","_play","restartWebAnimationsNextTick","remove","e","_holdTime","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","hadUnderlying","_wrapper","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","groupAnimation","originalGetComputedStyle","register","_registered","callbacks","tick","updating","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next.min.js"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/web-animations-js/web-animations.min.js.map b/dashboard-ui/bower_components/web-animations-js/web-animations.min.js.map deleted file mode 100644 index 8c6d3075fe..0000000000 --- a/dashboard-ui/bower_components/web-animations-js/web-animations.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","r","makePropertySpecificKeyframeGroups","leftCopy","propertySpecificKeyframeGroups","bind","addPropertiesHandler","parseShadowList","mergeShadowList","propertySpecificKeyframe","groupName","group","mergeFlex","left","right","round","makeInterpolations","interpolations","startTime","endTime","startValue","endValue","propertyInterpolation","leftInterpolation","rightInterpolation","convertEffectInput","trim","context","target","fraction","interpolation","fillStyle","offsetFraction","localDuration","scaledLocalTime","clamp","join","canvas","toCamelCase","parseColor","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","properties","ucProperty","test","matchedUnits","string","replace","unitRegExp","initialValues","handlers","parsedRight","parsedLeft","interpolationArgs","interp","Interpolation","t","taggedUnitRegExp","unit","bool","backgroundColor","nonNegative","backgroundPosition","units","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderLeftColor","borderRightColor","borderSpacing","borderTopColor","borderTopLeftRadius","borderTopRightRadius","numberToString","clip","color","height","marginBottom","marginLeft","marginRight","lengthUnits","marginTop","parseLengthOrPercent","maxWidth","minHeight","minWidth","opacity","parseAngle","outlineColor","outlineOffset","paddingBottom","paddingLeft","transform","verticalAlign","visibility","width","wordSpacing","consumeLength","zIndex","consumeParenthesised","consumeSizePairList","EffectTime","effectTime","_totalDuration","_isCurrent","KeyframeEffect","keyframeEffect","_update","_clear","_hasSameTarget","id","NullEffect","clear","nullEffect","configureProperty","object","descriptor","enumerable","configurable","defineProperty","AnimatedCSSStyleDeclaration","element","_surrogateStyle","ignore","consumeToken","_style","_length","_isAnimatedProperty","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","merged","animatedStyle","mergeDimensions","get","mergeWrappedNestedRepeated","_","styleAttributes","cssText","parentRule","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","transformRegExp","isAffectedProperty","functionName","argTypes","s","T","parsedArgs","index","method","modifiesStyle","list","arguments","documentElement","matrixModulesLoaded","set","_set","propertyName","Element","animate","options","mergeMatrices","timeline","interpolate","leftArgs","to","transformFunctions","leftType","leftResult","convertToString","typeTo2D","max","rightArgs","quat","product","dot","fromQ","theta","sqrt","cos","toQ","w","composeMatrix","leftFunctionData","multiply","leftArgsCopy","k","mergeNumbers","merge","rightArgsCopy","translate","skew","perspective","matrix","types","stringConversions","tmp","rightResult","rotMatrix","stringifiedArgs","args","arg","y","z","deg","temp","rotate","rotatez","scale","cast","scaley","scale3d","is2D","concat","translatey","sequenceNumber","AnimationEvent","currentTime","timelineTime","out","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","now","Animation","_id","_sequenceNumber","_currentTime","dimension","_paused","_inTimeline","_finishedFlag","onfinish","consumeOffset","_finishHandlers","_idle","consumeLengthOrPercent","_currentTimePending","_ensureAlive","_inEffect","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","position","restart","_startTime","_timeline","bottomOrRight","invalidateEffects","token","center","oldCurrentTime","mergeNestedRepeated","playState","play","parseOrigin","consumePosition","mergeOffsetList","circle","consumeList","pause","finish","ellipse","cancel","reverse","polygon","addEventListener","handler","_fireEvents","baseTime","event","setTimeout","mergeNonNegativeSizePair","call","_tick","isAnimationFrame","_needsTick","running","mergeSizePair","processRafCallbacks","processing","rafCallbacks","candidate","entry","applyPendingEffects","compareAnimations","rightAnimation","leftAnimation","InternalTimeline","performance","oncancel","AnimationCancelEvent","originalElementAnimate","animation","_cancelHandlers","originalCancel","originalAddEventListener","originalRemoveEventListener","removeEventListener","splice","animated","originalOpacity","getComputedStyle","testOpacity","error","exports"],"mappings":"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","file":"web-animations.min.js"} \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/CustomElements.js b/dashboard-ui/bower_components/webcomponentsjs/CustomElements.js deleted file mode 100644 index 931f6c22e1..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/CustomElements.js +++ /dev/null @@ -1,1029 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); -} - -(function(global) { - if (global.JsMutationObserver) { - return; - } - var registrationsTable = new WeakMap(); - var setImmediate; - if (/Trident|Edge/.test(navigator.userAgent)) { - setImmediate = setTimeout; - } else if (window.setImmediate) { - setImmediate = window.setImmediate; - } else { - var setImmediateQueue = []; - var sentinel = String(Math.random()); - window.addEventListener("message", function(e) { - if (e.data === sentinel) { - var queue = setImmediateQueue; - setImmediateQueue = []; - queue.forEach(function(func) { - func(); - }); - } - }); - setImmediate = function(func) { - setImmediateQueue.push(func); - window.postMessage(sentinel, "*"); - }; - } - var isScheduled = false; - var scheduledObservers = []; - function scheduleCallback(observer) { - scheduledObservers.push(observer); - if (!isScheduled) { - isScheduled = true; - setImmediate(dispatchCallbacks); - } - } - function wrapIfNeeded(node) { - return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node; - } - function dispatchCallbacks() { - isScheduled = false; - var observers = scheduledObservers; - scheduledObservers = []; - observers.sort(function(o1, o2) { - return o1.uid_ - o2.uid_; - }); - var anyNonEmpty = false; - observers.forEach(function(observer) { - var queue = observer.takeRecords(); - removeTransientObserversFor(observer); - if (queue.length) { - observer.callback_(queue, observer); - anyNonEmpty = true; - } - }); - if (anyNonEmpty) dispatchCallbacks(); - } - function removeTransientObserversFor(observer) { - observer.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - if (!registrations) return; - registrations.forEach(function(registration) { - if (registration.observer === observer) registration.removeTransientObservers(); - }); - }); - } - function forEachAncestorAndObserverEnqueueRecord(target, callback) { - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (registrations) { - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - var record = callback(options); - if (record) registration.enqueue(record); - } - } - } - } - var uidCounter = 0; - function JsMutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - } - JsMutationObserver.prototype = { - observe: function(target, options) { - target = wrapIfNeeded(target); - if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) { - throw new SyntaxError(); - } - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - var registration; - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeListeners(); - registration.options = options; - break; - } - } - if (!registration) { - registration = new Registration(this, target, options); - registrations.push(registration); - this.nodes_.push(target); - } - registration.addListeners(); - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registration.removeListeners(); - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = []; - this.removedNodes = []; - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function copyMutationRecord(original) { - var record = new MutationRecord(original.type, original.target); - record.addedNodes = original.addedNodes.slice(); - record.removedNodes = original.removedNodes.slice(); - record.previousSibling = original.previousSibling; - record.nextSibling = original.nextSibling; - record.attributeName = original.attributeName; - record.attributeNamespace = original.attributeNamespace; - record.oldValue = original.oldValue; - return record; - } - var currentRecord, recordWithOldValue; - function getRecord(type, target) { - return currentRecord = new MutationRecord(type, target); - } - function getRecordWithOldValue(oldValue) { - if (recordWithOldValue) return recordWithOldValue; - recordWithOldValue = copyMutationRecord(currentRecord); - recordWithOldValue.oldValue = oldValue; - return recordWithOldValue; - } - function clearRecords() { - currentRecord = recordWithOldValue = undefined; - } - function recordRepresentsCurrentMutation(record) { - return record === recordWithOldValue || record === currentRecord; - } - function selectRecord(lastRecord, newRecord) { - if (lastRecord === newRecord) return lastRecord; - if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue; - return null; - } - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - enqueue: function(record) { - var records = this.observer.records_; - var length = records.length; - if (records.length > 0) { - var lastRecord = records[length - 1]; - var recordToReplaceLast = selectRecord(lastRecord, record); - if (recordToReplaceLast) { - records[length - 1] = recordToReplaceLast; - return; - } - } else { - scheduleCallback(this.observer); - } - records[length] = record; - }, - addListeners: function() { - this.addListeners_(this.target); - }, - addListeners_: function(node) { - var options = this.options; - if (options.attributes) node.addEventListener("DOMAttrModified", this, true); - if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.addEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true); - }, - removeListeners: function() { - this.removeListeners_(this.target); - }, - removeListeners_: function(node) { - var options = this.options; - if (options.attributes) node.removeEventListener("DOMAttrModified", this, true); - if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.removeEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true); - }, - addTransientObserver: function(node) { - if (node === this.target) return; - this.addListeners_(node); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - transientObservedNodes.forEach(function(node) { - this.removeListeners_(node); - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i] === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - }, - handleEvent: function(e) { - e.stopImmediatePropagation(); - switch (e.type) { - case "DOMAttrModified": - var name = e.attrName; - var namespace = e.relatedNode.namespaceURI; - var target = e.target; - var record = new getRecord("attributes", target); - record.attributeName = name; - record.attributeNamespace = namespace; - var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.attributes) return; - if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) { - return; - } - if (options.attributeOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMCharacterDataModified": - var target = e.target; - var record = getRecord("characterData", target); - var oldValue = e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.characterData) return; - if (options.characterDataOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMNodeRemoved": - this.addTransientObserver(e.target); - - case "DOMNodeInserted": - var changedNode = e.target; - var addedNodes, removedNodes; - if (e.type === "DOMNodeInserted") { - addedNodes = [ changedNode ]; - removedNodes = []; - } else { - addedNodes = []; - removedNodes = [ changedNode ]; - } - var previousSibling = changedNode.previousSibling; - var nextSibling = changedNode.nextSibling; - var record = getRecord("childList", e.target.parentNode); - record.addedNodes = addedNodes; - record.removedNodes = removedNodes; - record.previousSibling = previousSibling; - record.nextSibling = nextSibling; - forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { - if (!options.childList) return; - return record; - }); - } - clearRecords(); - } - }; - global.JsMutationObserver = JsMutationObserver; - if (!global.MutationObserver) { - global.MutationObserver = JsMutationObserver; - JsMutationObserver._isPolyfilled = true; - } -})(self); - -(function(scope) { - "use strict"; - if (!window.performance) { - var start = Date.now(); - window.performance = { - now: function() { - return Date.now() - start; - } - }; - } - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = function() { - var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; - return nativeRaf ? function(callback) { - return nativeRaf(function() { - callback(performance.now()); - }); - } : function(callback) { - return window.setTimeout(callback, 1e3 / 60); - }; - }(); - } - if (!window.cancelAnimationFrame) { - window.cancelAnimationFrame = function() { - return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) { - clearTimeout(id); - }; - }(); - } - var workingDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("foo", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!workingDefaultPrevented) { - var origPreventDefault = Event.prototype.preventDefault; - Event.prototype.preventDefault = function() { - if (!this.cancelable) { - return; - } - origPreventDefault.call(this); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - var isIE = /Trident/.test(navigator.userAgent); - if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { - window.CustomEvent = function(inType, params) { - params = params || {}; - var e = document.createEvent("CustomEvent"); - e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail); - return e; - }; - window.CustomEvent.prototype = window.Event.prototype; - } - if (!window.Event || isIE && typeof window.Event !== "function") { - var origEvent = window.Event; - window.Event = function(inType, params) { - params = params || {}; - var e = document.createEvent("Event"); - e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); - return e; - }; - window.Event.prototype = origEvent.prototype; - } -})(window.WebComponents); - -window.CustomElements = window.CustomElements || { - flags: {} -}; - -(function(scope) { - var flags = scope.flags; - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; - scope.hasNative = Boolean(document.registerElement); - scope.isIE = /Trident/.test(navigator.userAgent); - scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative); -})(window.CustomElements); - -window.CustomElements.addModule(function(scope) { - var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none"; - function forSubtree(node, cb) { - findAllElements(node, function(e) { - if (cb(e)) { - return true; - } - forRoots(e, cb); - }); - forRoots(node, cb); - } - function findAllElements(node, find, data) { - var e = node.firstElementChild; - if (!e) { - e = node.firstChild; - while (e && e.nodeType !== Node.ELEMENT_NODE) { - e = e.nextSibling; - } - } - while (e) { - if (find(e, data) !== true) { - findAllElements(e, find, data); - } - e = e.nextElementSibling; - } - return null; - } - function forRoots(node, cb) { - var root = node.shadowRoot; - while (root) { - forSubtree(root, cb); - root = root.olderShadowRoot; - } - } - function forDocumentTree(doc, cb) { - _forDocumentTree(doc, cb, []); - } - function _forDocumentTree(doc, cb, processingDocuments) { - doc = window.wrap(doc); - if (processingDocuments.indexOf(doc) >= 0) { - return; - } - processingDocuments.push(doc); - var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); - for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { - if (n.import) { - _forDocumentTree(n.import, cb, processingDocuments); - } - } - cb(doc); - } - scope.forDocumentTree = forDocumentTree; - scope.forSubtree = forSubtree; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - var forSubtree = scope.forSubtree; - var forDocumentTree = scope.forDocumentTree; - function addedNode(node, isAttached) { - return added(node, isAttached) || addedSubtree(node, isAttached); - } - function added(node, isAttached) { - if (scope.upgrade(node, isAttached)) { - return true; - } - if (isAttached) { - attached(node); - } - } - function addedSubtree(node, isAttached) { - forSubtree(node, function(e) { - if (added(e, isAttached)) { - return true; - } - }); - } - var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["throttle-attached"]; - scope.hasPolyfillMutations = hasThrottledAttached; - scope.hasThrottledAttached = hasThrottledAttached; - var isPendingMutations = false; - var pendingMutations = []; - function deferMutation(fn) { - pendingMutations.push(fn); - if (!isPendingMutations) { - isPendingMutations = true; - setTimeout(takeMutations); - } - } - function takeMutations() { - isPendingMutations = false; - var $p = pendingMutations; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - p(); - } - pendingMutations = []; - } - function attached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _attached(element); - }); - } else { - _attached(element); - } - } - function _attached(element) { - if (element.__upgraded__ && !element.__attached) { - element.__attached = true; - if (element.attachedCallback) { - element.attachedCallback(); - } - } - } - function detachedNode(node) { - detached(node); - forSubtree(node, function(e) { - detached(e); - }); - } - function detached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _detached(element); - }); - } else { - _detached(element); - } - } - function _detached(element) { - if (element.__upgraded__ && element.__attached) { - element.__attached = false; - if (element.detachedCallback) { - element.detachedCallback(); - } - } - } - function inDocument(element) { - var p = element; - var doc = window.wrap(document); - while (p) { - if (p == doc) { - return true; - } - p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; - } - } - function watchShadow(node) { - if (node.shadowRoot && !node.shadowRoot.__watched) { - flags.dom && console.log("watching shadow-root for: ", node.localName); - var root = node.shadowRoot; - while (root) { - observe(root); - root = root.olderShadowRoot; - } - } - } - function handler(root, mutations) { - if (flags.dom) { - var mx = mutations[0]; - if (mx && mx.type === "childList" && mx.addedNodes) { - if (mx.addedNodes) { - var d = mx.addedNodes[0]; - while (d && d !== document && !d.host) { - d = d.parentNode; - } - var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; - u = u.split("/?").shift().split("/").pop(); - } - } - console.group("mutations (%d) [%s]", mutations.length, u || ""); - } - var isAttached = inDocument(root); - mutations.forEach(function(mx) { - if (mx.type === "childList") { - forEach(mx.addedNodes, function(n) { - if (!n.localName) { - return; - } - addedNode(n, isAttached); - }); - forEach(mx.removedNodes, function(n) { - if (!n.localName) { - return; - } - detachedNode(n); - }); - } - }); - flags.dom && console.groupEnd(); - } - function takeRecords(node) { - node = window.wrap(node); - if (!node) { - node = window.wrap(document); - } - while (node.parentNode) { - node = node.parentNode; - } - var observer = node.__observer; - if (observer) { - handler(node, observer.takeRecords()); - takeMutations(); - } - } - var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); - function observe(inRoot) { - if (inRoot.__observer) { - return; - } - var observer = new MutationObserver(handler.bind(this, inRoot)); - observer.observe(inRoot, { - childList: true, - subtree: true - }); - inRoot.__observer = observer; - } - function upgradeDocument(doc) { - doc = window.wrap(doc); - flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()); - var isMainDocument = doc === window.wrap(document); - addedNode(doc, isMainDocument); - observe(doc); - flags.dom && console.groupEnd(); - } - function upgradeDocumentTree(doc) { - forDocumentTree(doc, upgradeDocument); - } - var originalCreateShadowRoot = Element.prototype.createShadowRoot; - if (originalCreateShadowRoot) { - Element.prototype.createShadowRoot = function() { - var root = originalCreateShadowRoot.call(this); - window.CustomElements.watchShadow(this); - return root; - }; - } - scope.watchShadow = watchShadow; - scope.upgradeDocumentTree = upgradeDocumentTree; - scope.upgradeDocument = upgradeDocument; - scope.upgradeSubtree = addedSubtree; - scope.upgradeAll = addedNode; - scope.attached = attached; - scope.takeRecords = takeRecords; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - function upgrade(node, isAttached) { - if (node.localName === "template") { - if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) { - HTMLTemplateElement.decorate(node); - } - } - if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { - var is = node.getAttribute("is"); - var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is); - if (definition) { - if (is && definition.tag == node.localName || !is && !definition.extends) { - return upgradeWithDefinition(node, definition, isAttached); - } - } - } - } - function upgradeWithDefinition(element, definition, isAttached) { - flags.upgrade && console.group("upgrade:", element.localName); - if (definition.is) { - element.setAttribute("is", definition.is); - } - implementPrototype(element, definition); - element.__upgraded__ = true; - created(element); - if (isAttached) { - scope.attached(element); - } - scope.upgradeSubtree(element, isAttached); - flags.upgrade && console.groupEnd(); - return element; - } - function implementPrototype(element, definition) { - if (Object.__proto__) { - element.__proto__ = definition.prototype; - } else { - customMixin(element, definition.prototype, definition.native); - element.__proto__ = definition.prototype; - } - } - function customMixin(inTarget, inSrc, inNative) { - var used = {}; - var p = inSrc; - while (p !== inNative && p !== HTMLElement.prototype) { - var keys = Object.getOwnPropertyNames(p); - for (var i = 0, k; k = keys[i]; i++) { - if (!used[k]) { - Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k)); - used[k] = 1; - } - } - p = Object.getPrototypeOf(p); - } - } - function created(element) { - if (element.createdCallback) { - element.createdCallback(); - } - } - scope.upgrade = upgrade; - scope.upgradeWithDefinition = upgradeWithDefinition; - scope.implementPrototype = implementPrototype; -}); - -window.CustomElements.addModule(function(scope) { - var isIE = scope.isIE; - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeAll = scope.upgradeAll; - var upgradeWithDefinition = scope.upgradeWithDefinition; - var implementPrototype = scope.implementPrototype; - var useNative = scope.useNative; - function register(name, options) { - var definition = options || {}; - if (!name) { - throw new Error("document.registerElement: first argument `name` must not be empty"); - } - if (name.indexOf("-") < 0) { - throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'."); - } - if (isReservedTag(name)) { - throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid."); - } - if (getRegisteredDefinition(name)) { - throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered"); - } - if (!definition.prototype) { - definition.prototype = Object.create(HTMLElement.prototype); - } - definition.__name = name.toLowerCase(); - if (definition.extends) { - definition.extends = definition.extends.toLowerCase(); - } - definition.lifecycle = definition.lifecycle || {}; - definition.ancestry = ancestry(definition.extends); - resolveTagName(definition); - resolvePrototypeChain(definition); - overrideAttributeApi(definition.prototype); - registerDefinition(definition.__name, definition); - definition.ctor = generateConstructor(definition); - definition.ctor.prototype = definition.prototype; - definition.prototype.constructor = definition.ctor; - if (scope.ready) { - upgradeDocumentTree(document); - } - return definition.ctor; - } - function overrideAttributeApi(prototype) { - if (prototype.setAttribute._polyfilled) { - return; - } - var setAttribute = prototype.setAttribute; - prototype.setAttribute = function(name, value) { - changeAttribute.call(this, name, value, setAttribute); - }; - var removeAttribute = prototype.removeAttribute; - prototype.removeAttribute = function(name) { - changeAttribute.call(this, name, null, removeAttribute); - }; - prototype.setAttribute._polyfilled = true; - } - function changeAttribute(name, value, operation) { - name = name.toLowerCase(); - var oldValue = this.getAttribute(name); - operation.apply(this, arguments); - var newValue = this.getAttribute(name); - if (this.attributeChangedCallback && newValue !== oldValue) { - this.attributeChangedCallback(name, oldValue, newValue); - } - } - function isReservedTag(name) { - for (var i = 0; i < reservedTagList.length; i++) { - if (name === reservedTagList[i]) { - return true; - } - } - } - var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ]; - function ancestry(extnds) { - var extendee = getRegisteredDefinition(extnds); - if (extendee) { - return ancestry(extendee.extends).concat([ extendee ]); - } - return []; - } - function resolveTagName(definition) { - var baseTag = definition.extends; - for (var i = 0, a; a = definition.ancestry[i]; i++) { - baseTag = a.is && a.tag; - } - definition.tag = baseTag || definition.__name; - if (baseTag) { - definition.is = definition.__name; - } - } - function resolvePrototypeChain(definition) { - if (!Object.__proto__) { - var nativePrototype = HTMLElement.prototype; - if (definition.is) { - var inst = document.createElement(definition.tag); - nativePrototype = Object.getPrototypeOf(inst); - } - var proto = definition.prototype, ancestor; - var foundPrototype = false; - while (proto) { - if (proto == nativePrototype) { - foundPrototype = true; - } - ancestor = Object.getPrototypeOf(proto); - if (ancestor) { - proto.__proto__ = ancestor; - } - proto = ancestor; - } - if (!foundPrototype) { - console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is); - } - definition.native = nativePrototype; - } - } - function instantiate(definition) { - return upgradeWithDefinition(domCreateElement(definition.tag), definition); - } - var registry = {}; - function getRegisteredDefinition(name) { - if (name) { - return registry[name.toLowerCase()]; - } - } - function registerDefinition(name, definition) { - registry[name] = definition; - } - function generateConstructor(definition) { - return function() { - return instantiate(definition); - }; - } - var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; - function createElementNS(namespace, tag, typeExtension) { - if (namespace === HTML_NAMESPACE) { - return createElement(tag, typeExtension); - } else { - return domCreateElementNS(namespace, tag); - } - } - function createElement(tag, typeExtension) { - if (tag) { - tag = tag.toLowerCase(); - } - if (typeExtension) { - typeExtension = typeExtension.toLowerCase(); - } - var definition = getRegisteredDefinition(typeExtension || tag); - if (definition) { - if (tag == definition.tag && typeExtension == definition.is) { - return new definition.ctor(); - } - if (!typeExtension && !definition.is) { - return new definition.ctor(); - } - } - var element; - if (typeExtension) { - element = createElement(tag); - element.setAttribute("is", typeExtension); - return element; - } - element = domCreateElement(tag); - if (tag.indexOf("-") >= 0) { - implementPrototype(element, HTMLElement); - } - return element; - } - var domCreateElement = document.createElement.bind(document); - var domCreateElementNS = document.createElementNS.bind(document); - var isInstance; - if (!Object.__proto__ && !useNative) { - isInstance = function(obj, ctor) { - if (obj instanceof ctor) { - return true; - } - var p = obj; - while (p) { - if (p === ctor.prototype) { - return true; - } - p = p.__proto__; - } - return false; - }; - } else { - isInstance = function(obj, base) { - return obj instanceof base; - }; - } - function wrapDomMethodToForceUpgrade(obj, methodName) { - var orig = obj[methodName]; - obj[methodName] = function() { - var n = orig.apply(this, arguments); - upgradeAll(n); - return n; - }; - } - wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); - wrapDomMethodToForceUpgrade(document, "importNode"); - document.registerElement = register; - document.createElement = createElement; - document.createElementNS = createElementNS; - scope.registry = registry; - scope.instanceof = isInstance; - scope.reservedTagList = reservedTagList; - scope.getRegisteredDefinition = getRegisteredDefinition; - document.register = document.registerElement; -}); - -(function(scope) { - var useNative = scope.useNative; - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (useNative) { - var nop = function() {}; - scope.watchShadow = nop; - scope.upgrade = nop; - scope.upgradeAll = nop; - scope.upgradeDocumentTree = nop; - scope.upgradeSubtree = nop; - scope.takeRecords = nop; - scope.instanceof = function(obj, base) { - return obj instanceof base; - }; - } else { - initializeModules(); - } - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeDocument = scope.upgradeDocument; - if (!window.wrap) { - if (window.ShadowDOMPolyfill) { - window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; - window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; - } else { - window.wrap = window.unwrap = function(node) { - return node; - }; - } - } - if (window.HTMLImports) { - window.HTMLImports.__importsParsingHook = function(elt) { - if (elt.import) { - upgradeDocument(wrap(elt.import)); - } - }; - } - function bootstrap() { - upgradeDocumentTree(window.wrap(document)); - window.CustomElements.ready = true; - var requestAnimationFrame = window.requestAnimationFrame || function(f) { - setTimeout(f, 16); - }; - requestAnimationFrame(function() { - setTimeout(function() { - window.CustomElements.readyTime = Date.now(); - if (window.HTMLImports) { - window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime; - } - document.dispatchEvent(new CustomEvent("WebComponentsReady", { - bubbles: true - })); - }); - }); - } - if (document.readyState === "complete" || scope.flags.eager) { - bootstrap(); - } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) { - bootstrap(); - } else { - var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded"; - window.addEventListener(loadEvent, bootstrap); - } -})(window.CustomElements); \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/HTMLImports.js b/dashboard-ui/bower_components/webcomponentsjs/HTMLImports.js deleted file mode 100644 index cc8ac641d8..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/HTMLImports.js +++ /dev/null @@ -1,1157 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); -} - -(function(global) { - if (global.JsMutationObserver) { - return; - } - var registrationsTable = new WeakMap(); - var setImmediate; - if (/Trident|Edge/.test(navigator.userAgent)) { - setImmediate = setTimeout; - } else if (window.setImmediate) { - setImmediate = window.setImmediate; - } else { - var setImmediateQueue = []; - var sentinel = String(Math.random()); - window.addEventListener("message", function(e) { - if (e.data === sentinel) { - var queue = setImmediateQueue; - setImmediateQueue = []; - queue.forEach(function(func) { - func(); - }); - } - }); - setImmediate = function(func) { - setImmediateQueue.push(func); - window.postMessage(sentinel, "*"); - }; - } - var isScheduled = false; - var scheduledObservers = []; - function scheduleCallback(observer) { - scheduledObservers.push(observer); - if (!isScheduled) { - isScheduled = true; - setImmediate(dispatchCallbacks); - } - } - function wrapIfNeeded(node) { - return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node; - } - function dispatchCallbacks() { - isScheduled = false; - var observers = scheduledObservers; - scheduledObservers = []; - observers.sort(function(o1, o2) { - return o1.uid_ - o2.uid_; - }); - var anyNonEmpty = false; - observers.forEach(function(observer) { - var queue = observer.takeRecords(); - removeTransientObserversFor(observer); - if (queue.length) { - observer.callback_(queue, observer); - anyNonEmpty = true; - } - }); - if (anyNonEmpty) dispatchCallbacks(); - } - function removeTransientObserversFor(observer) { - observer.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - if (!registrations) return; - registrations.forEach(function(registration) { - if (registration.observer === observer) registration.removeTransientObservers(); - }); - }); - } - function forEachAncestorAndObserverEnqueueRecord(target, callback) { - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (registrations) { - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - var record = callback(options); - if (record) registration.enqueue(record); - } - } - } - } - var uidCounter = 0; - function JsMutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - } - JsMutationObserver.prototype = { - observe: function(target, options) { - target = wrapIfNeeded(target); - if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) { - throw new SyntaxError(); - } - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - var registration; - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeListeners(); - registration.options = options; - break; - } - } - if (!registration) { - registration = new Registration(this, target, options); - registrations.push(registration); - this.nodes_.push(target); - } - registration.addListeners(); - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registration.removeListeners(); - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = []; - this.removedNodes = []; - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function copyMutationRecord(original) { - var record = new MutationRecord(original.type, original.target); - record.addedNodes = original.addedNodes.slice(); - record.removedNodes = original.removedNodes.slice(); - record.previousSibling = original.previousSibling; - record.nextSibling = original.nextSibling; - record.attributeName = original.attributeName; - record.attributeNamespace = original.attributeNamespace; - record.oldValue = original.oldValue; - return record; - } - var currentRecord, recordWithOldValue; - function getRecord(type, target) { - return currentRecord = new MutationRecord(type, target); - } - function getRecordWithOldValue(oldValue) { - if (recordWithOldValue) return recordWithOldValue; - recordWithOldValue = copyMutationRecord(currentRecord); - recordWithOldValue.oldValue = oldValue; - return recordWithOldValue; - } - function clearRecords() { - currentRecord = recordWithOldValue = undefined; - } - function recordRepresentsCurrentMutation(record) { - return record === recordWithOldValue || record === currentRecord; - } - function selectRecord(lastRecord, newRecord) { - if (lastRecord === newRecord) return lastRecord; - if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue; - return null; - } - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - enqueue: function(record) { - var records = this.observer.records_; - var length = records.length; - if (records.length > 0) { - var lastRecord = records[length - 1]; - var recordToReplaceLast = selectRecord(lastRecord, record); - if (recordToReplaceLast) { - records[length - 1] = recordToReplaceLast; - return; - } - } else { - scheduleCallback(this.observer); - } - records[length] = record; - }, - addListeners: function() { - this.addListeners_(this.target); - }, - addListeners_: function(node) { - var options = this.options; - if (options.attributes) node.addEventListener("DOMAttrModified", this, true); - if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.addEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true); - }, - removeListeners: function() { - this.removeListeners_(this.target); - }, - removeListeners_: function(node) { - var options = this.options; - if (options.attributes) node.removeEventListener("DOMAttrModified", this, true); - if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.removeEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true); - }, - addTransientObserver: function(node) { - if (node === this.target) return; - this.addListeners_(node); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - transientObservedNodes.forEach(function(node) { - this.removeListeners_(node); - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i] === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - }, - handleEvent: function(e) { - e.stopImmediatePropagation(); - switch (e.type) { - case "DOMAttrModified": - var name = e.attrName; - var namespace = e.relatedNode.namespaceURI; - var target = e.target; - var record = new getRecord("attributes", target); - record.attributeName = name; - record.attributeNamespace = namespace; - var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.attributes) return; - if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) { - return; - } - if (options.attributeOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMCharacterDataModified": - var target = e.target; - var record = getRecord("characterData", target); - var oldValue = e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.characterData) return; - if (options.characterDataOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMNodeRemoved": - this.addTransientObserver(e.target); - - case "DOMNodeInserted": - var changedNode = e.target; - var addedNodes, removedNodes; - if (e.type === "DOMNodeInserted") { - addedNodes = [ changedNode ]; - removedNodes = []; - } else { - addedNodes = []; - removedNodes = [ changedNode ]; - } - var previousSibling = changedNode.previousSibling; - var nextSibling = changedNode.nextSibling; - var record = getRecord("childList", e.target.parentNode); - record.addedNodes = addedNodes; - record.removedNodes = removedNodes; - record.previousSibling = previousSibling; - record.nextSibling = nextSibling; - forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { - if (!options.childList) return; - return record; - }); - } - clearRecords(); - } - }; - global.JsMutationObserver = JsMutationObserver; - if (!global.MutationObserver) { - global.MutationObserver = JsMutationObserver; - JsMutationObserver._isPolyfilled = true; - } -})(self); - -(function(scope) { - "use strict"; - if (!window.performance) { - var start = Date.now(); - window.performance = { - now: function() { - return Date.now() - start; - } - }; - } - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = function() { - var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; - return nativeRaf ? function(callback) { - return nativeRaf(function() { - callback(performance.now()); - }); - } : function(callback) { - return window.setTimeout(callback, 1e3 / 60); - }; - }(); - } - if (!window.cancelAnimationFrame) { - window.cancelAnimationFrame = function() { - return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) { - clearTimeout(id); - }; - }(); - } - var workingDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("foo", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!workingDefaultPrevented) { - var origPreventDefault = Event.prototype.preventDefault; - Event.prototype.preventDefault = function() { - if (!this.cancelable) { - return; - } - origPreventDefault.call(this); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - var isIE = /Trident/.test(navigator.userAgent); - if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { - window.CustomEvent = function(inType, params) { - params = params || {}; - var e = document.createEvent("CustomEvent"); - e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail); - return e; - }; - window.CustomEvent.prototype = window.Event.prototype; - } - if (!window.Event || isIE && typeof window.Event !== "function") { - var origEvent = window.Event; - window.Event = function(inType, params) { - params = params || {}; - var e = document.createEvent("Event"); - e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); - return e; - }; - window.Event.prototype = origEvent.prototype; - } -})(window.WebComponents); - -window.HTMLImports = window.HTMLImports || { - flags: {} -}; - -(function(scope) { - var IMPORT_LINK_TYPE = "import"; - var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); - var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); - var wrap = function(node) { - return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node; - }; - var rootDocument = wrap(document); - var currentScriptDescriptor = { - get: function() { - var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null); - return wrap(script); - }, - configurable: true - }; - Object.defineProperty(document, "_currentScript", currentScriptDescriptor); - Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor); - var isIE = /Trident/.test(navigator.userAgent); - function whenReady(callback, doc) { - doc = doc || rootDocument; - whenDocumentReady(function() { - watchImportsLoad(callback, doc); - }, doc); - } - var requiredReadyState = isIE ? "complete" : "interactive"; - var READY_EVENT = "readystatechange"; - function isDocumentReady(doc) { - return doc.readyState === "complete" || doc.readyState === requiredReadyState; - } - function whenDocumentReady(callback, doc) { - if (!isDocumentReady(doc)) { - var checkReady = function() { - if (doc.readyState === "complete" || doc.readyState === requiredReadyState) { - doc.removeEventListener(READY_EVENT, checkReady); - whenDocumentReady(callback, doc); - } - }; - doc.addEventListener(READY_EVENT, checkReady); - } else if (callback) { - callback(); - } - } - function markTargetLoaded(event) { - event.target.__loaded = true; - } - function watchImportsLoad(callback, doc) { - var imports = doc.querySelectorAll("link[rel=import]"); - var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = []; - function checkDone() { - if (parsedCount == importCount && callback) { - callback({ - allImports: imports, - loadedImports: newImports, - errorImports: errorImports - }); - } - } - function loadedImport(e) { - markTargetLoaded(e); - newImports.push(this); - parsedCount++; - checkDone(); - } - function errorLoadingImport(e) { - errorImports.push(this); - parsedCount++; - checkDone(); - } - if (importCount) { - for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { - if (isImportLoaded(imp)) { - newImports.push(this); - parsedCount++; - checkDone(); - } else { - imp.addEventListener("load", loadedImport); - imp.addEventListener("error", errorLoadingImport); - } - } - } else { - checkDone(); - } - } - function isImportLoaded(link) { - return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed; - } - if (useNative) { - new MutationObserver(function(mxns) { - for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) { - if (m.addedNodes) { - handleImports(m.addedNodes); - } - } - }).observe(document.head, { - childList: true - }); - function handleImports(nodes) { - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (isImport(n)) { - handleImport(n); - } - } - } - function isImport(element) { - return element.localName === "link" && element.rel === "import"; - } - function handleImport(element) { - var loaded = element.import; - if (loaded) { - markTargetLoaded({ - target: element - }); - } else { - element.addEventListener("load", markTargetLoaded); - element.addEventListener("error", markTargetLoaded); - } - } - (function() { - if (document.readyState === "loading") { - var imports = document.querySelectorAll("link[rel=import]"); - for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) { - handleImport(imp); - } - } - })(); - } - whenReady(function(detail) { - window.HTMLImports.ready = true; - window.HTMLImports.readyTime = new Date().getTime(); - var evt = rootDocument.createEvent("CustomEvent"); - evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); - rootDocument.dispatchEvent(evt); - }); - scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; - scope.useNative = useNative; - scope.rootDocument = rootDocument; - scope.whenReady = whenReady; - scope.isIE = isIE; -})(window.HTMLImports); - -(function(scope) { - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; -})(window.HTMLImports); - -window.HTMLImports.addModule(function(scope) { - var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; - var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; - var path = { - resolveUrlsInStyle: function(style, linkUrl) { - var doc = style.ownerDocument; - var resolver = doc.createElement("a"); - style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver); - return style; - }, - resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { - var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); - r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); - return r; - }, - replaceUrls: function(text, urlObj, linkUrl, regexp) { - return text.replace(regexp, function(m, pre, url, post) { - var urlPath = url.replace(/["']/g, ""); - if (linkUrl) { - urlPath = new URL(urlPath, linkUrl).href; - } - urlObj.href = urlPath; - urlPath = urlObj.href; - return pre + "'" + urlPath + "'" + post; - }); - } - }; - scope.path = path; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = { - async: true, - ok: function(request) { - return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0; - }, - load: function(url, next, nextContext) { - var request = new XMLHttpRequest(); - if (scope.flags.debug || scope.flags.bust) { - url += "?" + Math.random(); - } - request.open("GET", url, xhr.async); - request.addEventListener("readystatechange", function(e) { - if (request.readyState === 4) { - var redirectedUrl = null; - try { - var locationHeader = request.getResponseHeader("Location"); - if (locationHeader) { - redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader; - } - } catch (e) { - console.error(e.message); - } - next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl); - } - }); - request.send(); - return request; - }, - loadDocument: function(url, next, nextContext) { - this.load(url, next, nextContext).responseType = "document"; - } - }; - scope.xhr = xhr; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = scope.xhr; - var flags = scope.flags; - var Loader = function(onLoad, onComplete) { - this.cache = {}; - this.onload = onLoad; - this.oncomplete = onComplete; - this.inflight = 0; - this.pending = {}; - }; - Loader.prototype = { - addNodes: function(nodes) { - this.inflight += nodes.length; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - this.require(n); - } - this.checkDone(); - }, - addNode: function(node) { - this.inflight++; - this.require(node); - this.checkDone(); - }, - require: function(elt) { - var url = elt.src || elt.href; - elt.__nodeUrl = url; - if (!this.dedupe(url, elt)) { - this.fetch(url, elt); - } - }, - dedupe: function(url, elt) { - if (this.pending[url]) { - this.pending[url].push(elt); - return true; - } - var resource; - if (this.cache[url]) { - this.onload(url, elt, this.cache[url]); - this.tail(); - return true; - } - this.pending[url] = [ elt ]; - return false; - }, - fetch: function(url, elt) { - flags.load && console.log("fetch", url, elt); - if (!url) { - setTimeout(function() { - this.receive(url, elt, { - error: "href must be specified" - }, null); - }.bind(this), 0); - } else if (url.match(/^data:/)) { - var pieces = url.split(","); - var header = pieces[0]; - var body = pieces[1]; - if (header.indexOf(";base64") > -1) { - body = atob(body); - } else { - body = decodeURIComponent(body); - } - setTimeout(function() { - this.receive(url, elt, null, body); - }.bind(this), 0); - } else { - var receiveXhr = function(err, resource, redirectedUrl) { - this.receive(url, elt, err, resource, redirectedUrl); - }.bind(this); - xhr.load(url, receiveXhr); - } - }, - receive: function(url, elt, err, resource, redirectedUrl) { - this.cache[url] = resource; - var $p = this.pending[url]; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - this.onload(url, p, resource, err, redirectedUrl); - this.tail(); - } - this.pending[url] = null; - }, - tail: function() { - --this.inflight; - this.checkDone(); - }, - checkDone: function() { - if (!this.inflight) { - this.oncomplete(); - } - } - }; - scope.Loader = Loader; -}); - -window.HTMLImports.addModule(function(scope) { - var Observer = function(addCallback) { - this.addCallback = addCallback; - this.mo = new MutationObserver(this.handler.bind(this)); - }; - Observer.prototype = { - handler: function(mutations) { - for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) { - if (m.type === "childList" && m.addedNodes.length) { - this.addedNodes(m.addedNodes); - } - } - }, - addedNodes: function(nodes) { - if (this.addCallback) { - this.addCallback(nodes); - } - for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) { - if (n.children && n.children.length) { - this.addedNodes(n.children); - } - } - }, - observe: function(root) { - this.mo.observe(root, { - childList: true, - subtree: true - }); - } - }; - scope.Observer = Observer; -}); - -window.HTMLImports.addModule(function(scope) { - var path = scope.path; - var rootDocument = scope.rootDocument; - var flags = scope.flags; - var isIE = scope.isIE; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; - var importParser = { - documentSelectors: IMPORT_SELECTOR, - importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","), - map: { - link: "parseLink", - script: "parseScript", - style: "parseStyle" - }, - dynamicElements: [], - parseNext: function() { - var next = this.nextToParse(); - if (next) { - this.parse(next); - } - }, - parse: function(elt) { - if (this.isParsed(elt)) { - flags.parse && console.log("[%s] is already parsed", elt.localName); - return; - } - var fn = this[this.map[elt.localName]]; - if (fn) { - this.markParsing(elt); - fn.call(this, elt); - } - }, - parseDynamic: function(elt, quiet) { - this.dynamicElements.push(elt); - if (!quiet) { - this.parseNext(); - } - }, - markParsing: function(elt) { - flags.parse && console.log("parsing", elt); - this.parsingElement = elt; - }, - markParsingComplete: function(elt) { - elt.__importParsed = true; - this.markDynamicParsingComplete(elt); - if (elt.__importElement) { - elt.__importElement.__importParsed = true; - this.markDynamicParsingComplete(elt.__importElement); - } - this.parsingElement = null; - flags.parse && console.log("completed", elt); - }, - markDynamicParsingComplete: function(elt) { - var i = this.dynamicElements.indexOf(elt); - if (i >= 0) { - this.dynamicElements.splice(i, 1); - } - }, - parseImport: function(elt) { - elt.import = elt.__doc; - if (window.HTMLImports.__importsParsingHook) { - window.HTMLImports.__importsParsingHook(elt); - } - if (elt.import) { - elt.import.__importParsed = true; - } - this.markParsingComplete(elt); - if (elt.__resource && !elt.__error) { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - } else { - elt.dispatchEvent(new CustomEvent("error", { - bubbles: false - })); - } - if (elt.__pending) { - var fn; - while (elt.__pending.length) { - fn = elt.__pending.shift(); - if (fn) { - fn({ - target: elt - }); - } - } - } - this.parseNext(); - }, - parseLink: function(linkElt) { - if (nodeIsImport(linkElt)) { - this.parseImport(linkElt); - } else { - linkElt.href = linkElt.href; - this.parseGeneric(linkElt); - } - }, - parseStyle: function(elt) { - var src = elt; - elt = cloneStyle(elt); - src.__appliedElement = elt; - elt.__importElement = src; - this.parseGeneric(elt); - }, - parseGeneric: function(elt) { - this.trackElement(elt); - this.addElementToDocument(elt); - }, - rootImportForElement: function(elt) { - var n = elt; - while (n.ownerDocument.__importLink) { - n = n.ownerDocument.__importLink; - } - return n; - }, - addElementToDocument: function(elt) { - var port = this.rootImportForElement(elt.__importElement || elt); - port.parentNode.insertBefore(elt, port); - }, - trackElement: function(elt, callback) { - var self = this; - var done = function(e) { - elt.removeEventListener("load", done); - elt.removeEventListener("error", done); - if (callback) { - callback(e); - } - self.markParsingComplete(elt); - self.parseNext(); - }; - elt.addEventListener("load", done); - elt.addEventListener("error", done); - if (isIE && elt.localName === "style") { - var fakeLoad = false; - if (elt.textContent.indexOf("@import") == -1) { - fakeLoad = true; - } else if (elt.sheet) { - fakeLoad = true; - var csr = elt.sheet.cssRules; - var len = csr ? csr.length : 0; - for (var i = 0, r; i < len && (r = csr[i]); i++) { - if (r.type === CSSRule.IMPORT_RULE) { - fakeLoad = fakeLoad && Boolean(r.styleSheet); - } - } - } - if (fakeLoad) { - setTimeout(function() { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - }); - } - } - }, - parseScript: function(scriptElt) { - var script = document.createElement("script"); - script.__importElement = scriptElt; - script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt); - scope.currentScript = scriptElt; - this.trackElement(script, function(e) { - if (script.parentNode) { - script.parentNode.removeChild(script); - } - scope.currentScript = null; - }); - this.addElementToDocument(script); - }, - nextToParse: function() { - this._mayParse = []; - return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic()); - }, - nextToParseInDoc: function(doc, link) { - if (doc && this._mayParse.indexOf(doc) < 0) { - this._mayParse.push(doc); - var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!this.isParsed(n)) { - if (this.hasResource(n)) { - return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n; - } else { - return; - } - } - } - } - return link; - }, - nextToParseDynamic: function() { - return this.dynamicElements[0]; - }, - parseSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentSelectors : this.importsSelectors; - }, - isParsed: function(node) { - return node.__importParsed; - }, - needsDynamicParsing: function(elt) { - return this.dynamicElements.indexOf(elt) >= 0; - }, - hasResource: function(node) { - if (nodeIsImport(node) && node.__doc === undefined) { - return false; - } - return true; - } - }; - function nodeIsImport(elt) { - return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; - } - function generateScriptDataUrl(script) { - var scriptContent = generateScriptContent(script); - return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent); - } - function generateScriptContent(script) { - return script.textContent + generateSourceMapHint(script); - } - function generateSourceMapHint(script) { - var owner = script.ownerDocument; - owner.__importedScripts = owner.__importedScripts || 0; - var moniker = script.ownerDocument.baseURI; - var num = owner.__importedScripts ? "-" + owner.__importedScripts : ""; - owner.__importedScripts++; - return "\n//# sourceURL=" + moniker + num + ".js\n"; - } - function cloneStyle(style) { - var clone = style.ownerDocument.createElement("style"); - clone.textContent = style.textContent; - path.resolveUrlsInStyle(clone); - return clone; - } - scope.parser = importParser; - scope.IMPORT_SELECTOR = IMPORT_SELECTOR; -}); - -window.HTMLImports.addModule(function(scope) { - var flags = scope.flags; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; - var rootDocument = scope.rootDocument; - var Loader = scope.Loader; - var Observer = scope.Observer; - var parser = scope.parser; - var importer = { - documents: {}, - documentPreloadSelectors: IMPORT_SELECTOR, - importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","), - loadNode: function(node) { - importLoader.addNode(node); - }, - loadSubtree: function(parent) { - var nodes = this.marshalNodes(parent); - importLoader.addNodes(nodes); - }, - marshalNodes: function(parent) { - return parent.querySelectorAll(this.loadSelectorsForNode(parent)); - }, - loadSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors; - }, - loaded: function(url, elt, resource, err, redirectedUrl) { - flags.load && console.log("loaded", url, elt); - elt.__resource = resource; - elt.__error = err; - if (isImportLink(elt)) { - var doc = this.documents[url]; - if (doc === undefined) { - doc = err ? null : makeDocument(resource, redirectedUrl || url); - if (doc) { - doc.__importLink = elt; - this.bootDocument(doc); - } - this.documents[url] = doc; - } - elt.__doc = doc; - } - parser.parseNext(); - }, - bootDocument: function(doc) { - this.loadSubtree(doc); - this.observer.observe(doc); - parser.parseNext(); - }, - loadedAll: function() { - parser.parseNext(); - } - }; - var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer)); - importer.observer = new Observer(); - function isImportLink(elt) { - return isLinkRel(elt, IMPORT_LINK_TYPE); - } - function isLinkRel(elt, rel) { - return elt.localName === "link" && elt.getAttribute("rel") === rel; - } - function hasBaseURIAccessor(doc) { - return !!Object.getOwnPropertyDescriptor(doc, "baseURI"); - } - function makeDocument(resource, url) { - var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE); - doc._URL = url; - var base = doc.createElement("base"); - base.setAttribute("href", url); - if (!doc.baseURI && !hasBaseURIAccessor(doc)) { - Object.defineProperty(doc, "baseURI", { - value: url - }); - } - var meta = doc.createElement("meta"); - meta.setAttribute("charset", "utf-8"); - doc.head.appendChild(meta); - doc.head.appendChild(base); - doc.body.innerHTML = resource; - if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) { - HTMLTemplateElement.bootstrap(doc); - } - return doc; - } - if (!document.baseURI) { - var baseURIDescriptor = { - get: function() { - var base = document.querySelector("base"); - return base ? base.href : window.location.href; - }, - configurable: true - }; - Object.defineProperty(document, "baseURI", baseURIDescriptor); - Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); - } - scope.importer = importer; - scope.importLoader = importLoader; -}); - -window.HTMLImports.addModule(function(scope) { - var parser = scope.parser; - var importer = scope.importer; - var dynamic = { - added: function(nodes) { - var owner, parsed, loading; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!owner) { - owner = n.ownerDocument; - parsed = parser.isParsed(owner); - } - loading = this.shouldLoadNode(n); - if (loading) { - importer.loadNode(n); - } - if (this.shouldParseNode(n) && parsed) { - parser.parseDynamic(n, loading); - } - } - }, - shouldLoadNode: function(node) { - return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node)); - }, - shouldParseNode: function(node) { - return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node)); - } - }; - importer.observer.addCallback = dynamic.added.bind(dynamic); - var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector; -}); - -(function(scope) { - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (scope.useNative) { - return; - } - initializeModules(); - var rootDocument = scope.rootDocument; - function bootstrap() { - window.HTMLImports.importer.bootDocument(rootDocument); - } - if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) { - bootstrap(); - } else { - document.addEventListener("DOMContentLoaded", bootstrap); - } -})(window.HTMLImports); \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/MutationObserver.js b/dashboard-ui/bower_components/webcomponentsjs/MutationObserver.js deleted file mode 100644 index e58713b6a8..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/MutationObserver.js +++ /dev/null @@ -1,350 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); -} - -(function(global) { - if (global.JsMutationObserver) { - return; - } - var registrationsTable = new WeakMap(); - var setImmediate; - if (/Trident|Edge/.test(navigator.userAgent)) { - setImmediate = setTimeout; - } else if (window.setImmediate) { - setImmediate = window.setImmediate; - } else { - var setImmediateQueue = []; - var sentinel = String(Math.random()); - window.addEventListener("message", function(e) { - if (e.data === sentinel) { - var queue = setImmediateQueue; - setImmediateQueue = []; - queue.forEach(function(func) { - func(); - }); - } - }); - setImmediate = function(func) { - setImmediateQueue.push(func); - window.postMessage(sentinel, "*"); - }; - } - var isScheduled = false; - var scheduledObservers = []; - function scheduleCallback(observer) { - scheduledObservers.push(observer); - if (!isScheduled) { - isScheduled = true; - setImmediate(dispatchCallbacks); - } - } - function wrapIfNeeded(node) { - return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node; - } - function dispatchCallbacks() { - isScheduled = false; - var observers = scheduledObservers; - scheduledObservers = []; - observers.sort(function(o1, o2) { - return o1.uid_ - o2.uid_; - }); - var anyNonEmpty = false; - observers.forEach(function(observer) { - var queue = observer.takeRecords(); - removeTransientObserversFor(observer); - if (queue.length) { - observer.callback_(queue, observer); - anyNonEmpty = true; - } - }); - if (anyNonEmpty) dispatchCallbacks(); - } - function removeTransientObserversFor(observer) { - observer.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - if (!registrations) return; - registrations.forEach(function(registration) { - if (registration.observer === observer) registration.removeTransientObservers(); - }); - }); - } - function forEachAncestorAndObserverEnqueueRecord(target, callback) { - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (registrations) { - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - var record = callback(options); - if (record) registration.enqueue(record); - } - } - } - } - var uidCounter = 0; - function JsMutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - } - JsMutationObserver.prototype = { - observe: function(target, options) { - target = wrapIfNeeded(target); - if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) { - throw new SyntaxError(); - } - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - var registration; - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeListeners(); - registration.options = options; - break; - } - } - if (!registration) { - registration = new Registration(this, target, options); - registrations.push(registration); - this.nodes_.push(target); - } - registration.addListeners(); - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registration.removeListeners(); - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = []; - this.removedNodes = []; - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function copyMutationRecord(original) { - var record = new MutationRecord(original.type, original.target); - record.addedNodes = original.addedNodes.slice(); - record.removedNodes = original.removedNodes.slice(); - record.previousSibling = original.previousSibling; - record.nextSibling = original.nextSibling; - record.attributeName = original.attributeName; - record.attributeNamespace = original.attributeNamespace; - record.oldValue = original.oldValue; - return record; - } - var currentRecord, recordWithOldValue; - function getRecord(type, target) { - return currentRecord = new MutationRecord(type, target); - } - function getRecordWithOldValue(oldValue) { - if (recordWithOldValue) return recordWithOldValue; - recordWithOldValue = copyMutationRecord(currentRecord); - recordWithOldValue.oldValue = oldValue; - return recordWithOldValue; - } - function clearRecords() { - currentRecord = recordWithOldValue = undefined; - } - function recordRepresentsCurrentMutation(record) { - return record === recordWithOldValue || record === currentRecord; - } - function selectRecord(lastRecord, newRecord) { - if (lastRecord === newRecord) return lastRecord; - if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue; - return null; - } - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - enqueue: function(record) { - var records = this.observer.records_; - var length = records.length; - if (records.length > 0) { - var lastRecord = records[length - 1]; - var recordToReplaceLast = selectRecord(lastRecord, record); - if (recordToReplaceLast) { - records[length - 1] = recordToReplaceLast; - return; - } - } else { - scheduleCallback(this.observer); - } - records[length] = record; - }, - addListeners: function() { - this.addListeners_(this.target); - }, - addListeners_: function(node) { - var options = this.options; - if (options.attributes) node.addEventListener("DOMAttrModified", this, true); - if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.addEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true); - }, - removeListeners: function() { - this.removeListeners_(this.target); - }, - removeListeners_: function(node) { - var options = this.options; - if (options.attributes) node.removeEventListener("DOMAttrModified", this, true); - if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.removeEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true); - }, - addTransientObserver: function(node) { - if (node === this.target) return; - this.addListeners_(node); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - transientObservedNodes.forEach(function(node) { - this.removeListeners_(node); - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i] === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - }, - handleEvent: function(e) { - e.stopImmediatePropagation(); - switch (e.type) { - case "DOMAttrModified": - var name = e.attrName; - var namespace = e.relatedNode.namespaceURI; - var target = e.target; - var record = new getRecord("attributes", target); - record.attributeName = name; - record.attributeNamespace = namespace; - var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.attributes) return; - if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) { - return; - } - if (options.attributeOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMCharacterDataModified": - var target = e.target; - var record = getRecord("characterData", target); - var oldValue = e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.characterData) return; - if (options.characterDataOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMNodeRemoved": - this.addTransientObserver(e.target); - - case "DOMNodeInserted": - var changedNode = e.target; - var addedNodes, removedNodes; - if (e.type === "DOMNodeInserted") { - addedNodes = [ changedNode ]; - removedNodes = []; - } else { - addedNodes = []; - removedNodes = [ changedNode ]; - } - var previousSibling = changedNode.previousSibling; - var nextSibling = changedNode.nextSibling; - var record = getRecord("childList", e.target.parentNode); - record.addedNodes = addedNodes; - record.removedNodes = removedNodes; - record.previousSibling = previousSibling; - record.nextSibling = nextSibling; - forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { - if (!options.childList) return; - return record; - }); - } - clearRecords(); - } - }; - global.JsMutationObserver = JsMutationObserver; - if (!global.MutationObserver) { - global.MutationObserver = JsMutationObserver; - JsMutationObserver._isPolyfilled = true; - } -})(self); \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/ShadowDOM.js b/dashboard-ui/bower_components/webcomponentsjs/ShadowDOM.js deleted file mode 100644 index 5a59b4da12..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/ShadowDOM.js +++ /dev/null @@ -1,4493 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); -} - -window.ShadowDOMPolyfill = {}; - -(function(scope) { - "use strict"; - var constructorTable = new WeakMap(); - var nativePrototypeTable = new WeakMap(); - var wrappers = Object.create(null); - function detectEval() { - if (typeof chrome !== "undefined" && chrome.app && chrome.app.runtime) { - return false; - } - if (navigator.getDeviceStorage) { - return false; - } - try { - var f = new Function("return true;"); - return f(); - } catch (ex) { - return false; - } - } - var hasEval = detectEval(); - function assert(b) { - if (!b) throw new Error("Assertion failed"); - } - var defineProperty = Object.defineProperty; - var getOwnPropertyNames = Object.getOwnPropertyNames; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - function mixin(to, from) { - var names = getOwnPropertyNames(from); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - defineProperty(to, name, getOwnPropertyDescriptor(from, name)); - } - return to; - } - function mixinStatics(to, from) { - var names = getOwnPropertyNames(from); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - switch (name) { - case "arguments": - case "caller": - case "length": - case "name": - case "prototype": - case "toString": - continue; - } - defineProperty(to, name, getOwnPropertyDescriptor(from, name)); - } - return to; - } - function oneOf(object, propertyNames) { - for (var i = 0; i < propertyNames.length; i++) { - if (propertyNames[i] in object) return propertyNames[i]; - } - } - var nonEnumerableDataDescriptor = { - value: undefined, - configurable: true, - enumerable: false, - writable: true - }; - function defineNonEnumerableDataProperty(object, name, value) { - nonEnumerableDataDescriptor.value = value; - defineProperty(object, name, nonEnumerableDataDescriptor); - } - getOwnPropertyNames(window); - function getWrapperConstructor(node, opt_instance) { - var nativePrototype = node.__proto__ || Object.getPrototypeOf(node); - if (isFirefox) { - try { - getOwnPropertyNames(nativePrototype); - } catch (error) { - nativePrototype = nativePrototype.__proto__; - } - } - var wrapperConstructor = constructorTable.get(nativePrototype); - if (wrapperConstructor) return wrapperConstructor; - var parentWrapperConstructor = getWrapperConstructor(nativePrototype); - var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor); - registerInternal(nativePrototype, GeneratedWrapper, opt_instance); - return GeneratedWrapper; - } - function addForwardingProperties(nativePrototype, wrapperPrototype) { - installProperty(nativePrototype, wrapperPrototype, true); - } - function registerInstanceProperties(wrapperPrototype, instanceObject) { - installProperty(instanceObject, wrapperPrototype, false); - } - var isFirefox = /Firefox/.test(navigator.userAgent); - var dummyDescriptor = { - get: function() {}, - set: function(v) {}, - configurable: true, - enumerable: true - }; - function isEventHandlerName(name) { - return /^on[a-z]+$/.test(name); - } - function isIdentifierName(name) { - return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name); - } - function getGetter(name) { - return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name) : function() { - return this.__impl4cf1e782hg__[name]; - }; - } - function getSetter(name) { - return hasEval && isIdentifierName(name) ? new Function("v", "this.__impl4cf1e782hg__." + name + " = v") : function(v) { - this.__impl4cf1e782hg__[name] = v; - }; - } - function getMethod(name) { - return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name + ".apply(this.__impl4cf1e782hg__, arguments)") : function() { - return this.__impl4cf1e782hg__[name].apply(this.__impl4cf1e782hg__, arguments); - }; - } - function getDescriptor(source, name) { - try { - return Object.getOwnPropertyDescriptor(source, name); - } catch (ex) { - return dummyDescriptor; - } - } - var isBrokenSafari = function() { - var descr = Object.getOwnPropertyDescriptor(Node.prototype, "nodeType"); - return descr && !descr.get && !descr.set; - }(); - function installProperty(source, target, allowMethod, opt_blacklist) { - var names = getOwnPropertyNames(source); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - if (name === "polymerBlackList_") continue; - if (name in target) continue; - if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue; - if (isFirefox) { - source.__lookupGetter__(name); - } - var descriptor = getDescriptor(source, name); - var getter, setter; - if (typeof descriptor.value === "function") { - if (allowMethod) { - target[name] = getMethod(name); - } - continue; - } - var isEvent = isEventHandlerName(name); - if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = getGetter(name); - if (descriptor.writable || descriptor.set || isBrokenSafari) { - if (isEvent) setter = scope.getEventHandlerSetter(name); else setter = getSetter(name); - } - var configurable = isBrokenSafari || descriptor.configurable; - defineProperty(target, name, { - get: getter, - set: setter, - configurable: configurable, - enumerable: descriptor.enumerable - }); - } - } - function register(nativeConstructor, wrapperConstructor, opt_instance) { - if (nativeConstructor == null) { - return; - } - var nativePrototype = nativeConstructor.prototype; - registerInternal(nativePrototype, wrapperConstructor, opt_instance); - mixinStatics(wrapperConstructor, nativeConstructor); - } - function registerInternal(nativePrototype, wrapperConstructor, opt_instance) { - var wrapperPrototype = wrapperConstructor.prototype; - assert(constructorTable.get(nativePrototype) === undefined); - constructorTable.set(nativePrototype, wrapperConstructor); - nativePrototypeTable.set(wrapperPrototype, nativePrototype); - addForwardingProperties(nativePrototype, wrapperPrototype); - if (opt_instance) registerInstanceProperties(wrapperPrototype, opt_instance); - defineNonEnumerableDataProperty(wrapperPrototype, "constructor", wrapperConstructor); - wrapperConstructor.prototype = wrapperPrototype; - } - function isWrapperFor(wrapperConstructor, nativeConstructor) { - return constructorTable.get(nativeConstructor.prototype) === wrapperConstructor; - } - function registerObject(object) { - var nativePrototype = Object.getPrototypeOf(object); - var superWrapperConstructor = getWrapperConstructor(nativePrototype); - var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor); - registerInternal(nativePrototype, GeneratedWrapper, object); - return GeneratedWrapper; - } - function createWrapperConstructor(superWrapperConstructor) { - function GeneratedWrapper(node) { - superWrapperConstructor.call(this, node); - } - var p = Object.create(superWrapperConstructor.prototype); - p.constructor = GeneratedWrapper; - GeneratedWrapper.prototype = p; - return GeneratedWrapper; - } - function isWrapper(object) { - return object && object.__impl4cf1e782hg__; - } - function isNative(object) { - return !isWrapper(object); - } - function wrap(impl) { - if (impl === null) return null; - assert(isNative(impl)); - var wrapper = impl.__wrapper8e3dd93a60__; - if (wrapper != null) { - return wrapper; - } - return impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl, impl))(impl); - } - function unwrap(wrapper) { - if (wrapper === null) return null; - assert(isWrapper(wrapper)); - return wrapper.__impl4cf1e782hg__; - } - function unsafeUnwrap(wrapper) { - return wrapper.__impl4cf1e782hg__; - } - function setWrapper(impl, wrapper) { - wrapper.__impl4cf1e782hg__ = impl; - impl.__wrapper8e3dd93a60__ = wrapper; - } - function unwrapIfNeeded(object) { - return object && isWrapper(object) ? unwrap(object) : object; - } - function wrapIfNeeded(object) { - return object && !isWrapper(object) ? wrap(object) : object; - } - function rewrap(node, wrapper) { - if (wrapper === null) return; - assert(isNative(node)); - assert(wrapper === undefined || isWrapper(wrapper)); - node.__wrapper8e3dd93a60__ = wrapper; - } - var getterDescriptor = { - get: undefined, - configurable: true, - enumerable: true - }; - function defineGetter(constructor, name, getter) { - getterDescriptor.get = getter; - defineProperty(constructor.prototype, name, getterDescriptor); - } - function defineWrapGetter(constructor, name) { - defineGetter(constructor, name, function() { - return wrap(this.__impl4cf1e782hg__[name]); - }); - } - function forwardMethodsToWrapper(constructors, names) { - constructors.forEach(function(constructor) { - names.forEach(function(name) { - constructor.prototype[name] = function() { - var w = wrapIfNeeded(this); - return w[name].apply(w, arguments); - }; - }); - }); - } - scope.addForwardingProperties = addForwardingProperties; - scope.assert = assert; - scope.constructorTable = constructorTable; - scope.defineGetter = defineGetter; - scope.defineWrapGetter = defineWrapGetter; - scope.forwardMethodsToWrapper = forwardMethodsToWrapper; - scope.isIdentifierName = isIdentifierName; - scope.isWrapper = isWrapper; - scope.isWrapperFor = isWrapperFor; - scope.mixin = mixin; - scope.nativePrototypeTable = nativePrototypeTable; - scope.oneOf = oneOf; - scope.registerObject = registerObject; - scope.registerWrapper = register; - scope.rewrap = rewrap; - scope.setWrapper = setWrapper; - scope.unsafeUnwrap = unsafeUnwrap; - scope.unwrap = unwrap; - scope.unwrapIfNeeded = unwrapIfNeeded; - scope.wrap = wrap; - scope.wrapIfNeeded = wrapIfNeeded; - scope.wrappers = wrappers; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - function newSplice(index, removed, addedCount) { - return { - index: index, - removed: removed, - addedCount: addedCount - }; - } - var EDIT_LEAVE = 0; - var EDIT_UPDATE = 1; - var EDIT_ADD = 2; - var EDIT_DELETE = 3; - function ArraySplice() {} - ArraySplice.prototype = { - calcEditDistances: function(current, currentStart, currentEnd, old, oldStart, oldEnd) { - var rowCount = oldEnd - oldStart + 1; - var columnCount = currentEnd - currentStart + 1; - var distances = new Array(rowCount); - for (var i = 0; i < rowCount; i++) { - distances[i] = new Array(columnCount); - distances[i][0] = i; - } - for (var j = 0; j < columnCount; j++) distances[0][j] = j; - for (var i = 1; i < rowCount; i++) { - for (var j = 1; j < columnCount; j++) { - if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) distances[i][j] = distances[i - 1][j - 1]; else { - var north = distances[i - 1][j] + 1; - var west = distances[i][j - 1] + 1; - distances[i][j] = north < west ? north : west; - } - } - } - return distances; - }, - spliceOperationsFromEditDistances: function(distances) { - var i = distances.length - 1; - var j = distances[0].length - 1; - var current = distances[i][j]; - var edits = []; - while (i > 0 || j > 0) { - if (i == 0) { - edits.push(EDIT_ADD); - j--; - continue; - } - if (j == 0) { - edits.push(EDIT_DELETE); - i--; - continue; - } - var northWest = distances[i - 1][j - 1]; - var west = distances[i - 1][j]; - var north = distances[i][j - 1]; - var min; - if (west < north) min = west < northWest ? west : northWest; else min = north < northWest ? north : northWest; - if (min == northWest) { - if (northWest == current) { - edits.push(EDIT_LEAVE); - } else { - edits.push(EDIT_UPDATE); - current = northWest; - } - i--; - j--; - } else if (min == west) { - edits.push(EDIT_DELETE); - i--; - current = west; - } else { - edits.push(EDIT_ADD); - j--; - current = north; - } - } - edits.reverse(); - return edits; - }, - calcSplices: function(current, currentStart, currentEnd, old, oldStart, oldEnd) { - var prefixCount = 0; - var suffixCount = 0; - var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart); - if (currentStart == 0 && oldStart == 0) prefixCount = this.sharedPrefix(current, old, minLength); - if (currentEnd == current.length && oldEnd == old.length) suffixCount = this.sharedSuffix(current, old, minLength - prefixCount); - currentStart += prefixCount; - oldStart += prefixCount; - currentEnd -= suffixCount; - oldEnd -= suffixCount; - if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) return []; - if (currentStart == currentEnd) { - var splice = newSplice(currentStart, [], 0); - while (oldStart < oldEnd) splice.removed.push(old[oldStart++]); - return [ splice ]; - } else if (oldStart == oldEnd) return [ newSplice(currentStart, [], currentEnd - currentStart) ]; - var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd)); - var splice = undefined; - var splices = []; - var index = currentStart; - var oldIndex = oldStart; - for (var i = 0; i < ops.length; i++) { - switch (ops[i]) { - case EDIT_LEAVE: - if (splice) { - splices.push(splice); - splice = undefined; - } - index++; - oldIndex++; - break; - - case EDIT_UPDATE: - if (!splice) splice = newSplice(index, [], 0); - splice.addedCount++; - index++; - splice.removed.push(old[oldIndex]); - oldIndex++; - break; - - case EDIT_ADD: - if (!splice) splice = newSplice(index, [], 0); - splice.addedCount++; - index++; - break; - - case EDIT_DELETE: - if (!splice) splice = newSplice(index, [], 0); - splice.removed.push(old[oldIndex]); - oldIndex++; - break; - } - } - if (splice) { - splices.push(splice); - } - return splices; - }, - sharedPrefix: function(current, old, searchLength) { - for (var i = 0; i < searchLength; i++) if (!this.equals(current[i], old[i])) return i; - return searchLength; - }, - sharedSuffix: function(current, old, searchLength) { - var index1 = current.length; - var index2 = old.length; - var count = 0; - while (count < searchLength && this.equals(current[--index1], old[--index2])) count++; - return count; - }, - calculateSplices: function(current, previous) { - return this.calcSplices(current, 0, current.length, previous, 0, previous.length); - }, - equals: function(currentValue, previousValue) { - return currentValue === previousValue; - } - }; - scope.ArraySplice = ArraySplice; -})(window.ShadowDOMPolyfill); - -(function(context) { - "use strict"; - var OriginalMutationObserver = window.MutationObserver; - var callbacks = []; - var pending = false; - var timerFunc; - function handle() { - pending = false; - var copies = callbacks.slice(0); - callbacks = []; - for (var i = 0; i < copies.length; i++) { - (0, copies[i])(); - } - } - if (OriginalMutationObserver) { - var counter = 1; - var observer = new OriginalMutationObserver(handle); - var textNode = document.createTextNode(counter); - observer.observe(textNode, { - characterData: true - }); - timerFunc = function() { - counter = (counter + 1) % 2; - textNode.data = counter; - }; - } else { - timerFunc = window.setTimeout; - } - function setEndOfMicrotask(func) { - callbacks.push(func); - if (pending) return; - pending = true; - timerFunc(handle, 0); - } - context.setEndOfMicrotask = setEndOfMicrotask; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var setEndOfMicrotask = scope.setEndOfMicrotask; - var wrapIfNeeded = scope.wrapIfNeeded; - var wrappers = scope.wrappers; - var registrationsTable = new WeakMap(); - var globalMutationObservers = []; - var isScheduled = false; - function scheduleCallback(observer) { - if (observer.scheduled_) return; - observer.scheduled_ = true; - globalMutationObservers.push(observer); - if (isScheduled) return; - setEndOfMicrotask(notifyObservers); - isScheduled = true; - } - function notifyObservers() { - isScheduled = false; - while (globalMutationObservers.length) { - var notifyList = globalMutationObservers; - globalMutationObservers = []; - notifyList.sort(function(x, y) { - return x.uid_ - y.uid_; - }); - for (var i = 0; i < notifyList.length; i++) { - var mo = notifyList[i]; - mo.scheduled_ = false; - var queue = mo.takeRecords(); - removeTransientObserversFor(mo); - if (queue.length) { - mo.callback_(queue, mo); - } - } - } - } - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = new wrappers.NodeList(); - this.removedNodes = new wrappers.NodeList(); - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function registerTransientObservers(ancestor, node) { - for (;ancestor; ancestor = ancestor.parentNode) { - var registrations = registrationsTable.get(ancestor); - if (!registrations) continue; - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.options.subtree) registration.addTransientObserver(node); - } - } - } - function removeTransientObserversFor(observer) { - for (var i = 0; i < observer.nodes_.length; i++) { - var node = observer.nodes_[i]; - var registrations = registrationsTable.get(node); - if (!registrations) return; - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - if (registration.observer === observer) registration.removeTransientObservers(); - } - } - } - function enqueueMutation(target, type, data) { - var interestedObservers = Object.create(null); - var associatedStrings = Object.create(null); - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (!registrations) continue; - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - if (type === "attributes" && !options.attributes) continue; - if (type === "attributes" && options.attributeFilter && (data.namespace !== null || options.attributeFilter.indexOf(data.name) === -1)) { - continue; - } - if (type === "characterData" && !options.characterData) continue; - if (type === "childList" && !options.childList) continue; - var observer = registration.observer; - interestedObservers[observer.uid_] = observer; - if (type === "attributes" && options.attributeOldValue || type === "characterData" && options.characterDataOldValue) { - associatedStrings[observer.uid_] = data.oldValue; - } - } - } - for (var uid in interestedObservers) { - var observer = interestedObservers[uid]; - var record = new MutationRecord(type, target); - if ("name" in data && "namespace" in data) { - record.attributeName = data.name; - record.attributeNamespace = data.namespace; - } - if (data.addedNodes) record.addedNodes = data.addedNodes; - if (data.removedNodes) record.removedNodes = data.removedNodes; - if (data.previousSibling) record.previousSibling = data.previousSibling; - if (data.nextSibling) record.nextSibling = data.nextSibling; - if (associatedStrings[uid] !== undefined) record.oldValue = associatedStrings[uid]; - scheduleCallback(observer); - observer.records_.push(record); - } - } - var slice = Array.prototype.slice; - function MutationObserverOptions(options) { - this.childList = !!options.childList; - this.subtree = !!options.subtree; - if (!("attributes" in options) && ("attributeOldValue" in options || "attributeFilter" in options)) { - this.attributes = true; - } else { - this.attributes = !!options.attributes; - } - if ("characterDataOldValue" in options && !("characterData" in options)) this.characterData = true; else this.characterData = !!options.characterData; - if (!this.attributes && (options.attributeOldValue || "attributeFilter" in options) || !this.characterData && options.characterDataOldValue) { - throw new TypeError(); - } - this.characterData = !!options.characterData; - this.attributeOldValue = !!options.attributeOldValue; - this.characterDataOldValue = !!options.characterDataOldValue; - if ("attributeFilter" in options) { - if (options.attributeFilter == null || typeof options.attributeFilter !== "object") { - throw new TypeError(); - } - this.attributeFilter = slice.call(options.attributeFilter); - } else { - this.attributeFilter = null; - } - } - var uidCounter = 0; - function MutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - this.scheduled_ = false; - } - MutationObserver.prototype = { - constructor: MutationObserver, - observe: function(target, options) { - target = wrapIfNeeded(target); - var newOptions = new MutationObserverOptions(options); - var registration; - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeTransientObservers(); - registration.options = newOptions; - } - } - if (!registration) { - registration = new Registration(this, target, newOptions); - registrations.push(registration); - this.nodes_.push(target); - } - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - addTransientObserver: function(node) { - if (node === this.target) return; - scheduleCallback(this.observer); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - for (var i = 0; i < transientObservedNodes.length; i++) { - var node = transientObservedNodes[i]; - var registrations = registrationsTable.get(node); - for (var j = 0; j < registrations.length; j++) { - if (registrations[j] === this) { - registrations.splice(j, 1); - break; - } - } - } - } - }; - scope.enqueueMutation = enqueueMutation; - scope.registerTransientObservers = registerTransientObservers; - scope.wrappers.MutationObserver = MutationObserver; - scope.wrappers.MutationRecord = MutationRecord; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - function TreeScope(root, parent) { - this.root = root; - this.parent = parent; - } - TreeScope.prototype = { - get renderer() { - if (this.root instanceof scope.wrappers.ShadowRoot) { - return scope.getRendererForHost(this.root.host); - } - return null; - }, - contains: function(treeScope) { - for (;treeScope; treeScope = treeScope.parent) { - if (treeScope === this) return true; - } - return false; - } - }; - function setTreeScope(node, treeScope) { - if (node.treeScope_ !== treeScope) { - node.treeScope_ = treeScope; - for (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) { - sr.treeScope_.parent = treeScope; - } - for (var child = node.firstChild; child; child = child.nextSibling) { - setTreeScope(child, treeScope); - } - } - } - function getTreeScope(node) { - if (node instanceof scope.wrappers.Window) { - debugger; - } - if (node.treeScope_) return node.treeScope_; - var parent = node.parentNode; - var treeScope; - if (parent) treeScope = getTreeScope(parent); else treeScope = new TreeScope(node, null); - return node.treeScope_ = treeScope; - } - scope.TreeScope = TreeScope; - scope.getTreeScope = getTreeScope; - scope.setTreeScope = setTreeScope; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrappers = scope.wrappers; - var wrappedFuns = new WeakMap(); - var listenersTable = new WeakMap(); - var handledEventsTable = new WeakMap(); - var currentlyDispatchingEvents = new WeakMap(); - var targetTable = new WeakMap(); - var currentTargetTable = new WeakMap(); - var relatedTargetTable = new WeakMap(); - var eventPhaseTable = new WeakMap(); - var stopPropagationTable = new WeakMap(); - var stopImmediatePropagationTable = new WeakMap(); - var eventHandlersTable = new WeakMap(); - var eventPathTable = new WeakMap(); - function isShadowRoot(node) { - return node instanceof wrappers.ShadowRoot; - } - function rootOfNode(node) { - return getTreeScope(node).root; - } - function getEventPath(node, event) { - var path = []; - var current = node; - path.push(current); - while (current) { - var destinationInsertionPoints = getDestinationInsertionPoints(current); - if (destinationInsertionPoints && destinationInsertionPoints.length > 0) { - for (var i = 0; i < destinationInsertionPoints.length; i++) { - var insertionPoint = destinationInsertionPoints[i]; - if (isShadowInsertionPoint(insertionPoint)) { - var shadowRoot = rootOfNode(insertionPoint); - var olderShadowRoot = shadowRoot.olderShadowRoot; - if (olderShadowRoot) path.push(olderShadowRoot); - } - path.push(insertionPoint); - } - current = destinationInsertionPoints[destinationInsertionPoints.length - 1]; - } else { - if (isShadowRoot(current)) { - if (inSameTree(node, current) && eventMustBeStopped(event)) { - break; - } - current = current.host; - path.push(current); - } else { - current = current.parentNode; - if (current) path.push(current); - } - } - } - return path; - } - function eventMustBeStopped(event) { - if (!event) return false; - switch (event.type) { - case "abort": - case "error": - case "select": - case "change": - case "load": - case "reset": - case "resize": - case "scroll": - case "selectstart": - return true; - } - return false; - } - function isShadowInsertionPoint(node) { - return node instanceof HTMLShadowElement; - } - function getDestinationInsertionPoints(node) { - return scope.getDestinationInsertionPoints(node); - } - function eventRetargetting(path, currentTarget) { - if (path.length === 0) return currentTarget; - if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document; - var currentTargetTree = getTreeScope(currentTarget); - var originalTarget = path[0]; - var originalTargetTree = getTreeScope(originalTarget); - var relativeTargetTree = lowestCommonInclusiveAncestor(currentTargetTree, originalTargetTree); - for (var i = 0; i < path.length; i++) { - var node = path[i]; - if (getTreeScope(node) === relativeTargetTree) return node; - } - return path[path.length - 1]; - } - function getTreeScopeAncestors(treeScope) { - var ancestors = []; - for (;treeScope; treeScope = treeScope.parent) { - ancestors.push(treeScope); - } - return ancestors; - } - function lowestCommonInclusiveAncestor(tsA, tsB) { - var ancestorsA = getTreeScopeAncestors(tsA); - var ancestorsB = getTreeScopeAncestors(tsB); - var result = null; - while (ancestorsA.length > 0 && ancestorsB.length > 0) { - var a = ancestorsA.pop(); - var b = ancestorsB.pop(); - if (a === b) result = a; else break; - } - return result; - } - function getTreeScopeRoot(ts) { - if (!ts.parent) return ts; - return getTreeScopeRoot(ts.parent); - } - function relatedTargetResolution(event, currentTarget, relatedTarget) { - if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document; - var currentTargetTree = getTreeScope(currentTarget); - var relatedTargetTree = getTreeScope(relatedTarget); - var relatedTargetEventPath = getEventPath(relatedTarget, event); - var lowestCommonAncestorTree; - var lowestCommonAncestorTree = lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree); - if (!lowestCommonAncestorTree) lowestCommonAncestorTree = relatedTargetTree.root; - for (var commonAncestorTree = lowestCommonAncestorTree; commonAncestorTree; commonAncestorTree = commonAncestorTree.parent) { - var adjustedRelatedTarget; - for (var i = 0; i < relatedTargetEventPath.length; i++) { - var node = relatedTargetEventPath[i]; - if (getTreeScope(node) === commonAncestorTree) return node; - } - } - return null; - } - function inSameTree(a, b) { - return getTreeScope(a) === getTreeScope(b); - } - var NONE = 0; - var CAPTURING_PHASE = 1; - var AT_TARGET = 2; - var BUBBLING_PHASE = 3; - var pendingError; - function dispatchOriginalEvent(originalEvent) { - if (handledEventsTable.get(originalEvent)) return; - handledEventsTable.set(originalEvent, true); - dispatchEvent(wrap(originalEvent), wrap(originalEvent.target)); - if (pendingError) { - var err = pendingError; - pendingError = null; - throw err; - } - } - function isLoadLikeEvent(event) { - switch (event.type) { - case "load": - case "beforeunload": - case "unload": - return true; - } - return false; - } - function dispatchEvent(event, originalWrapperTarget) { - if (currentlyDispatchingEvents.get(event)) throw new Error("InvalidStateError"); - currentlyDispatchingEvents.set(event, true); - scope.renderAllPending(); - var eventPath; - var overrideTarget; - var win; - if (isLoadLikeEvent(event) && !event.bubbles) { - var doc = originalWrapperTarget; - if (doc instanceof wrappers.Document && (win = doc.defaultView)) { - overrideTarget = doc; - eventPath = []; - } - } - if (!eventPath) { - if (originalWrapperTarget instanceof wrappers.Window) { - win = originalWrapperTarget; - eventPath = []; - } else { - eventPath = getEventPath(originalWrapperTarget, event); - if (!isLoadLikeEvent(event)) { - var doc = eventPath[eventPath.length - 1]; - if (doc instanceof wrappers.Document) win = doc.defaultView; - } - } - } - eventPathTable.set(event, eventPath); - if (dispatchCapturing(event, eventPath, win, overrideTarget)) { - if (dispatchAtTarget(event, eventPath, win, overrideTarget)) { - dispatchBubbling(event, eventPath, win, overrideTarget); - } - } - eventPhaseTable.set(event, NONE); - currentTargetTable.delete(event, null); - currentlyDispatchingEvents.delete(event); - return event.defaultPrevented; - } - function dispatchCapturing(event, eventPath, win, overrideTarget) { - var phase = CAPTURING_PHASE; - if (win) { - if (!invoke(win, event, phase, eventPath, overrideTarget)) return false; - } - for (var i = eventPath.length - 1; i > 0; i--) { - if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return false; - } - return true; - } - function dispatchAtTarget(event, eventPath, win, overrideTarget) { - var phase = AT_TARGET; - var currentTarget = eventPath[0] || win; - return invoke(currentTarget, event, phase, eventPath, overrideTarget); - } - function dispatchBubbling(event, eventPath, win, overrideTarget) { - var phase = BUBBLING_PHASE; - for (var i = 1; i < eventPath.length; i++) { - if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return; - } - if (win && eventPath.length > 0) { - invoke(win, event, phase, eventPath, overrideTarget); - } - } - function invoke(currentTarget, event, phase, eventPath, overrideTarget) { - var listeners = listenersTable.get(currentTarget); - if (!listeners) return true; - var target = overrideTarget || eventRetargetting(eventPath, currentTarget); - if (target === currentTarget) { - if (phase === CAPTURING_PHASE) return true; - if (phase === BUBBLING_PHASE) phase = AT_TARGET; - } else if (phase === BUBBLING_PHASE && !event.bubbles) { - return true; - } - if ("relatedTarget" in event) { - var originalEvent = unwrap(event); - var unwrappedRelatedTarget = originalEvent.relatedTarget; - if (unwrappedRelatedTarget) { - if (unwrappedRelatedTarget instanceof Object && unwrappedRelatedTarget.addEventListener) { - var relatedTarget = wrap(unwrappedRelatedTarget); - var adjusted = relatedTargetResolution(event, currentTarget, relatedTarget); - if (adjusted === target) return true; - } else { - adjusted = null; - } - relatedTargetTable.set(event, adjusted); - } - } - eventPhaseTable.set(event, phase); - var type = event.type; - var anyRemoved = false; - targetTable.set(event, target); - currentTargetTable.set(event, currentTarget); - listeners.depth++; - for (var i = 0, len = listeners.length; i < len; i++) { - var listener = listeners[i]; - if (listener.removed) { - anyRemoved = true; - continue; - } - if (listener.type !== type || !listener.capture && phase === CAPTURING_PHASE || listener.capture && phase === BUBBLING_PHASE) { - continue; - } - try { - if (typeof listener.handler === "function") listener.handler.call(currentTarget, event); else listener.handler.handleEvent(event); - if (stopImmediatePropagationTable.get(event)) return false; - } catch (ex) { - if (!pendingError) pendingError = ex; - } - } - listeners.depth--; - if (anyRemoved && listeners.depth === 0) { - var copy = listeners.slice(); - listeners.length = 0; - for (var i = 0; i < copy.length; i++) { - if (!copy[i].removed) listeners.push(copy[i]); - } - } - return !stopPropagationTable.get(event); - } - function Listener(type, handler, capture) { - this.type = type; - this.handler = handler; - this.capture = Boolean(capture); - } - Listener.prototype = { - equals: function(that) { - return this.handler === that.handler && this.type === that.type && this.capture === that.capture; - }, - get removed() { - return this.handler === null; - }, - remove: function() { - this.handler = null; - } - }; - var OriginalEvent = window.Event; - OriginalEvent.prototype.polymerBlackList_ = { - returnValue: true, - keyLocation: true - }; - function Event(type, options) { - if (type instanceof OriginalEvent) { - var impl = type; - if (!OriginalBeforeUnloadEvent && impl.type === "beforeunload" && !(this instanceof BeforeUnloadEvent)) { - return new BeforeUnloadEvent(impl); - } - setWrapper(impl, this); - } else { - return wrap(constructEvent(OriginalEvent, "Event", type, options)); - } - } - Event.prototype = { - get target() { - return targetTable.get(this); - }, - get currentTarget() { - return currentTargetTable.get(this); - }, - get eventPhase() { - return eventPhaseTable.get(this); - }, - get path() { - var eventPath = eventPathTable.get(this); - if (!eventPath) return []; - return eventPath.slice(); - }, - stopPropagation: function() { - stopPropagationTable.set(this, true); - }, - stopImmediatePropagation: function() { - stopPropagationTable.set(this, true); - stopImmediatePropagationTable.set(this, true); - } - }; - var supportsDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("test", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!supportsDefaultPrevented) { - Event.prototype.preventDefault = function() { - if (!this.cancelable) return; - unsafeUnwrap(this).preventDefault(); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - registerWrapper(OriginalEvent, Event, document.createEvent("Event")); - function unwrapOptions(options) { - if (!options || !options.relatedTarget) return options; - return Object.create(options, { - relatedTarget: { - value: unwrap(options.relatedTarget) - } - }); - } - function registerGenericEvent(name, SuperEvent, prototype) { - var OriginalEvent = window[name]; - var GenericEvent = function(type, options) { - if (type instanceof OriginalEvent) setWrapper(type, this); else return wrap(constructEvent(OriginalEvent, name, type, options)); - }; - GenericEvent.prototype = Object.create(SuperEvent.prototype); - if (prototype) mixin(GenericEvent.prototype, prototype); - if (OriginalEvent) { - try { - registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent("temp")); - } catch (ex) { - registerWrapper(OriginalEvent, GenericEvent, document.createEvent(name)); - } - } - return GenericEvent; - } - var UIEvent = registerGenericEvent("UIEvent", Event); - var CustomEvent = registerGenericEvent("CustomEvent", Event); - var relatedTargetProto = { - get relatedTarget() { - var relatedTarget = relatedTargetTable.get(this); - if (relatedTarget !== undefined) return relatedTarget; - return wrap(unwrap(this).relatedTarget); - } - }; - function getInitFunction(name, relatedTargetIndex) { - return function() { - arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]); - var impl = unwrap(this); - impl[name].apply(impl, arguments); - }; - } - var mouseEventProto = mixin({ - initMouseEvent: getInitFunction("initMouseEvent", 14) - }, relatedTargetProto); - var focusEventProto = mixin({ - initFocusEvent: getInitFunction("initFocusEvent", 5) - }, relatedTargetProto); - var MouseEvent = registerGenericEvent("MouseEvent", UIEvent, mouseEventProto); - var FocusEvent = registerGenericEvent("FocusEvent", UIEvent, focusEventProto); - var defaultInitDicts = Object.create(null); - var supportsEventConstructors = function() { - try { - new window.FocusEvent("focus"); - } catch (ex) { - return false; - } - return true; - }(); - function constructEvent(OriginalEvent, name, type, options) { - if (supportsEventConstructors) return new OriginalEvent(type, unwrapOptions(options)); - var event = unwrap(document.createEvent(name)); - var defaultDict = defaultInitDicts[name]; - var args = [ type ]; - Object.keys(defaultDict).forEach(function(key) { - var v = options != null && key in options ? options[key] : defaultDict[key]; - if (key === "relatedTarget") v = unwrap(v); - args.push(v); - }); - event["init" + name].apply(event, args); - return event; - } - if (!supportsEventConstructors) { - var configureEventConstructor = function(name, initDict, superName) { - if (superName) { - var superDict = defaultInitDicts[superName]; - initDict = mixin(mixin({}, superDict), initDict); - } - defaultInitDicts[name] = initDict; - }; - configureEventConstructor("Event", { - bubbles: false, - cancelable: false - }); - configureEventConstructor("CustomEvent", { - detail: null - }, "Event"); - configureEventConstructor("UIEvent", { - view: null, - detail: 0 - }, "Event"); - configureEventConstructor("MouseEvent", { - screenX: 0, - screenY: 0, - clientX: 0, - clientY: 0, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - button: 0, - relatedTarget: null - }, "UIEvent"); - configureEventConstructor("FocusEvent", { - relatedTarget: null - }, "UIEvent"); - } - var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent; - function BeforeUnloadEvent(impl) { - Event.call(this, impl); - } - BeforeUnloadEvent.prototype = Object.create(Event.prototype); - mixin(BeforeUnloadEvent.prototype, { - get returnValue() { - return unsafeUnwrap(this).returnValue; - }, - set returnValue(v) { - unsafeUnwrap(this).returnValue = v; - } - }); - if (OriginalBeforeUnloadEvent) registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent); - function isValidListener(fun) { - if (typeof fun === "function") return true; - return fun && fun.handleEvent; - } - function isMutationEvent(type) { - switch (type) { - case "DOMAttrModified": - case "DOMAttributeNameChanged": - case "DOMCharacterDataModified": - case "DOMElementNameChanged": - case "DOMNodeInserted": - case "DOMNodeInsertedIntoDocument": - case "DOMNodeRemoved": - case "DOMNodeRemovedFromDocument": - case "DOMSubtreeModified": - return true; - } - return false; - } - var OriginalEventTarget = window.EventTarget; - function EventTarget(impl) { - setWrapper(impl, this); - } - var methodNames = [ "addEventListener", "removeEventListener", "dispatchEvent" ]; - [ Node, Window ].forEach(function(constructor) { - var p = constructor.prototype; - methodNames.forEach(function(name) { - Object.defineProperty(p, name + "_", { - value: p[name] - }); - }); - }); - function getTargetToListenAt(wrapper) { - if (wrapper instanceof wrappers.ShadowRoot) wrapper = wrapper.host; - return unwrap(wrapper); - } - EventTarget.prototype = { - addEventListener: function(type, fun, capture) { - if (!isValidListener(fun) || isMutationEvent(type)) return; - var listener = new Listener(type, fun, capture); - var listeners = listenersTable.get(this); - if (!listeners) { - listeners = []; - listeners.depth = 0; - listenersTable.set(this, listeners); - } else { - for (var i = 0; i < listeners.length; i++) { - if (listener.equals(listeners[i])) return; - } - } - listeners.push(listener); - var target = getTargetToListenAt(this); - target.addEventListener_(type, dispatchOriginalEvent, true); - }, - removeEventListener: function(type, fun, capture) { - capture = Boolean(capture); - var listeners = listenersTable.get(this); - if (!listeners) return; - var count = 0, found = false; - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].type === type && listeners[i].capture === capture) { - count++; - if (listeners[i].handler === fun) { - found = true; - listeners[i].remove(); - } - } - } - if (found && count === 1) { - var target = getTargetToListenAt(this); - target.removeEventListener_(type, dispatchOriginalEvent, true); - } - }, - dispatchEvent: function(event) { - var nativeEvent = unwrap(event); - var eventType = nativeEvent.type; - handledEventsTable.set(nativeEvent, false); - scope.renderAllPending(); - var tempListener; - if (!hasListenerInAncestors(this, eventType)) { - tempListener = function() {}; - this.addEventListener(eventType, tempListener, true); - } - try { - return unwrap(this).dispatchEvent_(nativeEvent); - } finally { - if (tempListener) this.removeEventListener(eventType, tempListener, true); - } - } - }; - function hasListener(node, type) { - var listeners = listenersTable.get(node); - if (listeners) { - for (var i = 0; i < listeners.length; i++) { - if (!listeners[i].removed && listeners[i].type === type) return true; - } - } - return false; - } - function hasListenerInAncestors(target, type) { - for (var node = unwrap(target); node; node = node.parentNode) { - if (hasListener(wrap(node), type)) return true; - } - return false; - } - if (OriginalEventTarget) registerWrapper(OriginalEventTarget, EventTarget); - function wrapEventTargetMethods(constructors) { - forwardMethodsToWrapper(constructors, methodNames); - } - var originalElementFromPoint = document.elementFromPoint; - function elementFromPoint(self, document, x, y) { - scope.renderAllPending(); - var element = wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y)); - if (!element) return null; - var path = getEventPath(element, null); - var idx = path.lastIndexOf(self); - if (idx == -1) return null; else path = path.slice(0, idx); - return eventRetargetting(path, self); - } - function getEventHandlerGetter(name) { - return function() { - var inlineEventHandlers = eventHandlersTable.get(this); - return inlineEventHandlers && inlineEventHandlers[name] && inlineEventHandlers[name].value || null; - }; - } - function getEventHandlerSetter(name) { - var eventType = name.slice(2); - return function(value) { - var inlineEventHandlers = eventHandlersTable.get(this); - if (!inlineEventHandlers) { - inlineEventHandlers = Object.create(null); - eventHandlersTable.set(this, inlineEventHandlers); - } - var old = inlineEventHandlers[name]; - if (old) this.removeEventListener(eventType, old.wrapped, false); - if (typeof value === "function") { - var wrapped = function(e) { - var rv = value.call(this, e); - if (rv === false) e.preventDefault(); else if (name === "onbeforeunload" && typeof rv === "string") e.returnValue = rv; - }; - this.addEventListener(eventType, wrapped, false); - inlineEventHandlers[name] = { - value: value, - wrapped: wrapped - }; - } - }; - } - scope.elementFromPoint = elementFromPoint; - scope.getEventHandlerGetter = getEventHandlerGetter; - scope.getEventHandlerSetter = getEventHandlerSetter; - scope.wrapEventTargetMethods = wrapEventTargetMethods; - scope.wrappers.BeforeUnloadEvent = BeforeUnloadEvent; - scope.wrappers.CustomEvent = CustomEvent; - scope.wrappers.Event = Event; - scope.wrappers.EventTarget = EventTarget; - scope.wrappers.FocusEvent = FocusEvent; - scope.wrappers.MouseEvent = MouseEvent; - scope.wrappers.UIEvent = UIEvent; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var UIEvent = scope.wrappers.UIEvent; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalTouchEvent = window.TouchEvent; - if (!OriginalTouchEvent) return; - var nativeEvent; - try { - nativeEvent = document.createEvent("TouchEvent"); - } catch (ex) { - return; - } - var nonEnumDescriptor = { - enumerable: false - }; - function nonEnum(obj, prop) { - Object.defineProperty(obj, prop, nonEnumDescriptor); - } - function Touch(impl) { - setWrapper(impl, this); - } - Touch.prototype = { - get target() { - return wrap(unsafeUnwrap(this).target); - } - }; - var descr = { - configurable: true, - enumerable: true, - get: null - }; - [ "clientX", "clientY", "screenX", "screenY", "pageX", "pageY", "identifier", "webkitRadiusX", "webkitRadiusY", "webkitRotationAngle", "webkitForce" ].forEach(function(name) { - descr.get = function() { - return unsafeUnwrap(this)[name]; - }; - Object.defineProperty(Touch.prototype, name, descr); - }); - function TouchList() { - this.length = 0; - nonEnum(this, "length"); - } - TouchList.prototype = { - item: function(index) { - return this[index]; - } - }; - function wrapTouchList(nativeTouchList) { - var list = new TouchList(); - for (var i = 0; i < nativeTouchList.length; i++) { - list[i] = new Touch(nativeTouchList[i]); - } - list.length = i; - return list; - } - function TouchEvent(impl) { - UIEvent.call(this, impl); - } - TouchEvent.prototype = Object.create(UIEvent.prototype); - mixin(TouchEvent.prototype, { - get touches() { - return wrapTouchList(unsafeUnwrap(this).touches); - }, - get targetTouches() { - return wrapTouchList(unsafeUnwrap(this).targetTouches); - }, - get changedTouches() { - return wrapTouchList(unsafeUnwrap(this).changedTouches); - }, - initTouchEvent: function() { - throw new Error("Not implemented"); - } - }); - registerWrapper(OriginalTouchEvent, TouchEvent, nativeEvent); - scope.wrappers.Touch = Touch; - scope.wrappers.TouchEvent = TouchEvent; - scope.wrappers.TouchList = TouchList; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var nonEnumDescriptor = { - enumerable: false - }; - function nonEnum(obj, prop) { - Object.defineProperty(obj, prop, nonEnumDescriptor); - } - function NodeList() { - this.length = 0; - nonEnum(this, "length"); - } - NodeList.prototype = { - item: function(index) { - return this[index]; - } - }; - nonEnum(NodeList.prototype, "item"); - function wrapNodeList(list) { - if (list == null) return list; - var wrapperList = new NodeList(); - for (var i = 0, length = list.length; i < length; i++) { - wrapperList[i] = wrap(list[i]); - } - wrapperList.length = length; - return wrapperList; - } - function addWrapNodeListMethod(wrapperConstructor, name) { - wrapperConstructor.prototype[name] = function() { - return wrapNodeList(unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments)); - }; - } - scope.wrappers.NodeList = NodeList; - scope.addWrapNodeListMethod = addWrapNodeListMethod; - scope.wrapNodeList = wrapNodeList; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - scope.wrapHTMLCollection = scope.wrapNodeList; - scope.wrappers.HTMLCollection = scope.wrappers.NodeList; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var NodeList = scope.wrappers.NodeList; - var TreeScope = scope.TreeScope; - var assert = scope.assert; - var defineWrapGetter = scope.defineWrapGetter; - var enqueueMutation = scope.enqueueMutation; - var getTreeScope = scope.getTreeScope; - var isWrapper = scope.isWrapper; - var mixin = scope.mixin; - var registerTransientObservers = scope.registerTransientObservers; - var registerWrapper = scope.registerWrapper; - var setTreeScope = scope.setTreeScope; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var wrapIfNeeded = scope.wrapIfNeeded; - var wrappers = scope.wrappers; - function assertIsNodeWrapper(node) { - assert(node instanceof Node); - } - function createOneElementNodeList(node) { - var nodes = new NodeList(); - nodes[0] = node; - nodes.length = 1; - return nodes; - } - var surpressMutations = false; - function enqueueRemovalForInsertedNodes(node, parent, nodes) { - enqueueMutation(parent, "childList", { - removedNodes: nodes, - previousSibling: node.previousSibling, - nextSibling: node.nextSibling - }); - } - function enqueueRemovalForInsertedDocumentFragment(df, nodes) { - enqueueMutation(df, "childList", { - removedNodes: nodes - }); - } - function collectNodes(node, parentNode, previousNode, nextNode) { - if (node instanceof DocumentFragment) { - var nodes = collectNodesForDocumentFragment(node); - surpressMutations = true; - for (var i = nodes.length - 1; i >= 0; i--) { - node.removeChild(nodes[i]); - nodes[i].parentNode_ = parentNode; - } - surpressMutations = false; - for (var i = 0; i < nodes.length; i++) { - nodes[i].previousSibling_ = nodes[i - 1] || previousNode; - nodes[i].nextSibling_ = nodes[i + 1] || nextNode; - } - if (previousNode) previousNode.nextSibling_ = nodes[0]; - if (nextNode) nextNode.previousSibling_ = nodes[nodes.length - 1]; - return nodes; - } - var nodes = createOneElementNodeList(node); - var oldParent = node.parentNode; - if (oldParent) { - oldParent.removeChild(node); - } - node.parentNode_ = parentNode; - node.previousSibling_ = previousNode; - node.nextSibling_ = nextNode; - if (previousNode) previousNode.nextSibling_ = node; - if (nextNode) nextNode.previousSibling_ = node; - return nodes; - } - function collectNodesNative(node) { - if (node instanceof DocumentFragment) return collectNodesForDocumentFragment(node); - var nodes = createOneElementNodeList(node); - var oldParent = node.parentNode; - if (oldParent) enqueueRemovalForInsertedNodes(node, oldParent, nodes); - return nodes; - } - function collectNodesForDocumentFragment(node) { - var nodes = new NodeList(); - var i = 0; - for (var child = node.firstChild; child; child = child.nextSibling) { - nodes[i++] = child; - } - nodes.length = i; - enqueueRemovalForInsertedDocumentFragment(node, nodes); - return nodes; - } - function snapshotNodeList(nodeList) { - return nodeList; - } - function nodeWasAdded(node, treeScope) { - setTreeScope(node, treeScope); - node.nodeIsInserted_(); - } - function nodesWereAdded(nodes, parent) { - var treeScope = getTreeScope(parent); - for (var i = 0; i < nodes.length; i++) { - nodeWasAdded(nodes[i], treeScope); - } - } - function nodeWasRemoved(node) { - setTreeScope(node, new TreeScope(node, null)); - } - function nodesWereRemoved(nodes) { - for (var i = 0; i < nodes.length; i++) { - nodeWasRemoved(nodes[i]); - } - } - function ensureSameOwnerDocument(parent, child) { - var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ? parent : parent.ownerDocument; - if (ownerDoc !== child.ownerDocument) ownerDoc.adoptNode(child); - } - function adoptNodesIfNeeded(owner, nodes) { - if (!nodes.length) return; - var ownerDoc = owner.ownerDocument; - if (ownerDoc === nodes[0].ownerDocument) return; - for (var i = 0; i < nodes.length; i++) { - scope.adoptNodeNoRemove(nodes[i], ownerDoc); - } - } - function unwrapNodesForInsertion(owner, nodes) { - adoptNodesIfNeeded(owner, nodes); - var length = nodes.length; - if (length === 1) return unwrap(nodes[0]); - var df = unwrap(owner.ownerDocument.createDocumentFragment()); - for (var i = 0; i < length; i++) { - df.appendChild(unwrap(nodes[i])); - } - return df; - } - function clearChildNodes(wrapper) { - if (wrapper.firstChild_ !== undefined) { - var child = wrapper.firstChild_; - while (child) { - var tmp = child; - child = child.nextSibling_; - tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined; - } - } - wrapper.firstChild_ = wrapper.lastChild_ = undefined; - } - function removeAllChildNodes(wrapper) { - if (wrapper.invalidateShadowRenderer()) { - var childWrapper = wrapper.firstChild; - while (childWrapper) { - assert(childWrapper.parentNode === wrapper); - var nextSibling = childWrapper.nextSibling; - var childNode = unwrap(childWrapper); - var parentNode = childNode.parentNode; - if (parentNode) originalRemoveChild.call(parentNode, childNode); - childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = null; - childWrapper = nextSibling; - } - wrapper.firstChild_ = wrapper.lastChild_ = null; - } else { - var node = unwrap(wrapper); - var child = node.firstChild; - var nextSibling; - while (child) { - nextSibling = child.nextSibling; - originalRemoveChild.call(node, child); - child = nextSibling; - } - } - } - function invalidateParent(node) { - var p = node.parentNode; - return p && p.invalidateShadowRenderer(); - } - function cleanupNodes(nodes) { - for (var i = 0, n; i < nodes.length; i++) { - n = nodes[i]; - n.parentNode.removeChild(n); - } - } - var originalImportNode = document.importNode; - var originalCloneNode = window.Node.prototype.cloneNode; - function cloneNode(node, deep, opt_doc) { - var clone; - if (opt_doc) clone = wrap(originalImportNode.call(opt_doc, unsafeUnwrap(node), false)); else clone = wrap(originalCloneNode.call(unsafeUnwrap(node), false)); - if (deep) { - for (var child = node.firstChild; child; child = child.nextSibling) { - clone.appendChild(cloneNode(child, true, opt_doc)); - } - if (node instanceof wrappers.HTMLTemplateElement) { - var cloneContent = clone.content; - for (var child = node.content.firstChild; child; child = child.nextSibling) { - cloneContent.appendChild(cloneNode(child, true, opt_doc)); - } - } - } - return clone; - } - function contains(self, child) { - if (!child || getTreeScope(self) !== getTreeScope(child)) return false; - for (var node = child; node; node = node.parentNode) { - if (node === self) return true; - } - return false; - } - var OriginalNode = window.Node; - function Node(original) { - assert(original instanceof OriginalNode); - EventTarget.call(this, original); - this.parentNode_ = undefined; - this.firstChild_ = undefined; - this.lastChild_ = undefined; - this.nextSibling_ = undefined; - this.previousSibling_ = undefined; - this.treeScope_ = undefined; - } - var OriginalDocumentFragment = window.DocumentFragment; - var originalAppendChild = OriginalNode.prototype.appendChild; - var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPosition; - var originalIsEqualNode = OriginalNode.prototype.isEqualNode; - var originalInsertBefore = OriginalNode.prototype.insertBefore; - var originalRemoveChild = OriginalNode.prototype.removeChild; - var originalReplaceChild = OriginalNode.prototype.replaceChild; - var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent); - var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) { - try { - originalRemoveChild.call(parent, child); - } catch (ex) { - if (!(parent instanceof OriginalDocumentFragment)) throw ex; - } - } : function(parent, child) { - originalRemoveChild.call(parent, child); - }; - Node.prototype = Object.create(EventTarget.prototype); - mixin(Node.prototype, { - appendChild: function(childWrapper) { - return this.insertBefore(childWrapper, null); - }, - insertBefore: function(childWrapper, refWrapper) { - assertIsNodeWrapper(childWrapper); - var refNode; - if (refWrapper) { - if (isWrapper(refWrapper)) { - refNode = unwrap(refWrapper); - } else { - refNode = refWrapper; - refWrapper = wrap(refNode); - } - } else { - refWrapper = null; - refNode = null; - } - refWrapper && assert(refWrapper.parentNode === this); - var nodes; - var previousNode = refWrapper ? refWrapper.previousSibling : this.lastChild; - var useNative = !this.invalidateShadowRenderer() && !invalidateParent(childWrapper); - if (useNative) nodes = collectNodesNative(childWrapper); else nodes = collectNodes(childWrapper, this, previousNode, refWrapper); - if (useNative) { - ensureSameOwnerDocument(this, childWrapper); - clearChildNodes(this); - originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode); - } else { - if (!previousNode) this.firstChild_ = nodes[0]; - if (!refWrapper) { - this.lastChild_ = nodes[nodes.length - 1]; - if (this.firstChild_ === undefined) this.firstChild_ = this.firstChild; - } - var parentNode = refNode ? refNode.parentNode : unsafeUnwrap(this); - if (parentNode) { - originalInsertBefore.call(parentNode, unwrapNodesForInsertion(this, nodes), refNode); - } else { - adoptNodesIfNeeded(this, nodes); - } - } - enqueueMutation(this, "childList", { - addedNodes: nodes, - nextSibling: refWrapper, - previousSibling: previousNode - }); - nodesWereAdded(nodes, this); - return childWrapper; - }, - removeChild: function(childWrapper) { - assertIsNodeWrapper(childWrapper); - if (childWrapper.parentNode !== this) { - var found = false; - var childNodes = this.childNodes; - for (var ieChild = this.firstChild; ieChild; ieChild = ieChild.nextSibling) { - if (ieChild === childWrapper) { - found = true; - break; - } - } - if (!found) { - throw new Error("NotFoundError"); - } - } - var childNode = unwrap(childWrapper); - var childWrapperNextSibling = childWrapper.nextSibling; - var childWrapperPreviousSibling = childWrapper.previousSibling; - if (this.invalidateShadowRenderer()) { - var thisFirstChild = this.firstChild; - var thisLastChild = this.lastChild; - var parentNode = childNode.parentNode; - if (parentNode) removeChildOriginalHelper(parentNode, childNode); - if (thisFirstChild === childWrapper) this.firstChild_ = childWrapperNextSibling; - if (thisLastChild === childWrapper) this.lastChild_ = childWrapperPreviousSibling; - if (childWrapperPreviousSibling) childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling; - if (childWrapperNextSibling) { - childWrapperNextSibling.previousSibling_ = childWrapperPreviousSibling; - } - childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = undefined; - } else { - clearChildNodes(this); - removeChildOriginalHelper(unsafeUnwrap(this), childNode); - } - if (!surpressMutations) { - enqueueMutation(this, "childList", { - removedNodes: createOneElementNodeList(childWrapper), - nextSibling: childWrapperNextSibling, - previousSibling: childWrapperPreviousSibling - }); - } - registerTransientObservers(this, childWrapper); - return childWrapper; - }, - replaceChild: function(newChildWrapper, oldChildWrapper) { - assertIsNodeWrapper(newChildWrapper); - var oldChildNode; - if (isWrapper(oldChildWrapper)) { - oldChildNode = unwrap(oldChildWrapper); - } else { - oldChildNode = oldChildWrapper; - oldChildWrapper = wrap(oldChildNode); - } - if (oldChildWrapper.parentNode !== this) { - throw new Error("NotFoundError"); - } - var nextNode = oldChildWrapper.nextSibling; - var previousNode = oldChildWrapper.previousSibling; - var nodes; - var useNative = !this.invalidateShadowRenderer() && !invalidateParent(newChildWrapper); - if (useNative) { - nodes = collectNodesNative(newChildWrapper); - } else { - if (nextNode === newChildWrapper) nextNode = newChildWrapper.nextSibling; - nodes = collectNodes(newChildWrapper, this, previousNode, nextNode); - } - if (!useNative) { - if (this.firstChild === oldChildWrapper) this.firstChild_ = nodes[0]; - if (this.lastChild === oldChildWrapper) this.lastChild_ = nodes[nodes.length - 1]; - oldChildWrapper.previousSibling_ = oldChildWrapper.nextSibling_ = oldChildWrapper.parentNode_ = undefined; - if (oldChildNode.parentNode) { - originalReplaceChild.call(oldChildNode.parentNode, unwrapNodesForInsertion(this, nodes), oldChildNode); - } - } else { - ensureSameOwnerDocument(this, newChildWrapper); - clearChildNodes(this); - originalReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper), oldChildNode); - } - enqueueMutation(this, "childList", { - addedNodes: nodes, - removedNodes: createOneElementNodeList(oldChildWrapper), - nextSibling: nextNode, - previousSibling: previousNode - }); - nodeWasRemoved(oldChildWrapper); - nodesWereAdded(nodes, this); - return oldChildWrapper; - }, - nodeIsInserted_: function() { - for (var child = this.firstChild; child; child = child.nextSibling) { - child.nodeIsInserted_(); - } - }, - hasChildNodes: function() { - return this.firstChild !== null; - }, - get parentNode() { - return this.parentNode_ !== undefined ? this.parentNode_ : wrap(unsafeUnwrap(this).parentNode); - }, - get firstChild() { - return this.firstChild_ !== undefined ? this.firstChild_ : wrap(unsafeUnwrap(this).firstChild); - }, - get lastChild() { - return this.lastChild_ !== undefined ? this.lastChild_ : wrap(unsafeUnwrap(this).lastChild); - }, - get nextSibling() { - return this.nextSibling_ !== undefined ? this.nextSibling_ : wrap(unsafeUnwrap(this).nextSibling); - }, - get previousSibling() { - return this.previousSibling_ !== undefined ? this.previousSibling_ : wrap(unsafeUnwrap(this).previousSibling); - }, - get parentElement() { - var p = this.parentNode; - while (p && p.nodeType !== Node.ELEMENT_NODE) { - p = p.parentNode; - } - return p; - }, - get textContent() { - var s = ""; - for (var child = this.firstChild; child; child = child.nextSibling) { - if (child.nodeType != Node.COMMENT_NODE) { - s += child.textContent; - } - } - return s; - }, - set textContent(textContent) { - if (textContent == null) textContent = ""; - var removedNodes = snapshotNodeList(this.childNodes); - if (this.invalidateShadowRenderer()) { - removeAllChildNodes(this); - if (textContent !== "") { - var textNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent); - this.appendChild(textNode); - } - } else { - clearChildNodes(this); - unsafeUnwrap(this).textContent = textContent; - } - var addedNodes = snapshotNodeList(this.childNodes); - enqueueMutation(this, "childList", { - addedNodes: addedNodes, - removedNodes: removedNodes - }); - nodesWereRemoved(removedNodes); - nodesWereAdded(addedNodes, this); - }, - get childNodes() { - var wrapperList = new NodeList(); - var i = 0; - for (var child = this.firstChild; child; child = child.nextSibling) { - wrapperList[i++] = child; - } - wrapperList.length = i; - return wrapperList; - }, - cloneNode: function(deep) { - return cloneNode(this, deep); - }, - contains: function(child) { - return contains(this, wrapIfNeeded(child)); - }, - compareDocumentPosition: function(otherNode) { - return originalCompareDocumentPosition.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode)); - }, - isEqualNode: function(otherNode) { - return originalIsEqualNode.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode)); - }, - normalize: function() { - var nodes = snapshotNodeList(this.childNodes); - var remNodes = []; - var s = ""; - var modNode; - for (var i = 0, n; i < nodes.length; i++) { - n = nodes[i]; - if (n.nodeType === Node.TEXT_NODE) { - if (!modNode && !n.data.length) this.removeChild(n); else if (!modNode) modNode = n; else { - s += n.data; - remNodes.push(n); - } - } else { - if (modNode && remNodes.length) { - modNode.data += s; - cleanupNodes(remNodes); - } - remNodes = []; - s = ""; - modNode = null; - if (n.childNodes.length) n.normalize(); - } - } - if (modNode && remNodes.length) { - modNode.data += s; - cleanupNodes(remNodes); - } - } - }); - defineWrapGetter(Node, "ownerDocument"); - registerWrapper(OriginalNode, Node, document.createDocumentFragment()); - delete Node.prototype.querySelector; - delete Node.prototype.querySelectorAll; - Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype); - scope.cloneNode = cloneNode; - scope.nodeWasAdded = nodeWasAdded; - scope.nodeWasRemoved = nodeWasRemoved; - scope.nodesWereAdded = nodesWereAdded; - scope.nodesWereRemoved = nodesWereRemoved; - scope.originalInsertBefore = originalInsertBefore; - scope.originalRemoveChild = originalRemoveChild; - scope.snapshotNodeList = snapshotNodeList; - scope.wrappers.Node = Node; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLCollection = scope.wrappers.HTMLCollection; - var NodeList = scope.wrappers.NodeList; - var getTreeScope = scope.getTreeScope; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var originalDocumentQuerySelector = document.querySelector; - var originalElementQuerySelector = document.documentElement.querySelector; - var originalDocumentQuerySelectorAll = document.querySelectorAll; - var originalElementQuerySelectorAll = document.documentElement.querySelectorAll; - var originalDocumentGetElementsByTagName = document.getElementsByTagName; - var originalElementGetElementsByTagName = document.documentElement.getElementsByTagName; - var originalDocumentGetElementsByTagNameNS = document.getElementsByTagNameNS; - var originalElementGetElementsByTagNameNS = document.documentElement.getElementsByTagNameNS; - var OriginalElement = window.Element; - var OriginalDocument = window.HTMLDocument || window.Document; - function filterNodeList(list, index, result, deep) { - var wrappedItem = null; - var root = null; - for (var i = 0, length = list.length; i < length; i++) { - wrappedItem = wrap(list[i]); - if (!deep && (root = getTreeScope(wrappedItem).root)) { - if (root instanceof scope.wrappers.ShadowRoot) { - continue; - } - } - result[index++] = wrappedItem; - } - return index; - } - function shimSelector(selector) { - return String(selector).replace(/\/deep\/|::shadow|>>>/g, " "); - } - function shimMatchesSelector(selector) { - return String(selector).replace(/:host\(([^\s]+)\)/g, "$1").replace(/([^\s]):host/g, "$1").replace(":host", "*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g, " "); - } - function findOne(node, selector) { - var m, el = node.firstElementChild; - while (el) { - if (el.matches(selector)) return el; - m = findOne(el, selector); - if (m) return m; - el = el.nextElementSibling; - } - return null; - } - function matchesSelector(el, selector) { - return el.matches(selector); - } - var XHTML_NS = "http://www.w3.org/1999/xhtml"; - function matchesTagName(el, localName, localNameLowerCase) { - var ln = el.localName; - return ln === localName || ln === localNameLowerCase && el.namespaceURI === XHTML_NS; - } - function matchesEveryThing() { - return true; - } - function matchesLocalNameOnly(el, ns, localName) { - return el.localName === localName; - } - function matchesNameSpace(el, ns) { - return el.namespaceURI === ns; - } - function matchesLocalNameNS(el, ns, localName) { - return el.namespaceURI === ns && el.localName === localName; - } - function findElements(node, index, result, p, arg0, arg1) { - var el = node.firstElementChild; - while (el) { - if (p(el, arg0, arg1)) result[index++] = el; - index = findElements(el, index, result, p, arg0, arg1); - el = el.nextElementSibling; - } - return index; - } - function querySelectorAllFiltered(p, index, result, selector, deep) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, selector, null); - } else if (target instanceof OriginalElement) { - list = originalElementQuerySelectorAll.call(target, selector); - } else if (target instanceof OriginalDocument) { - list = originalDocumentQuerySelectorAll.call(target, selector); - } else { - return findElements(this, index, result, p, selector, null); - } - return filterNodeList(list, index, result, deep); - } - var SelectorsInterface = { - querySelector: function(selector) { - var shimmed = shimSelector(selector); - var deep = shimmed !== selector; - selector = shimmed; - var target = unsafeUnwrap(this); - var wrappedItem; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findOne(this, selector); - } else if (target instanceof OriginalElement) { - wrappedItem = wrap(originalElementQuerySelector.call(target, selector)); - } else if (target instanceof OriginalDocument) { - wrappedItem = wrap(originalDocumentQuerySelector.call(target, selector)); - } else { - return findOne(this, selector); - } - if (!wrappedItem) { - return wrappedItem; - } else if (!deep && (root = getTreeScope(wrappedItem).root)) { - if (root instanceof scope.wrappers.ShadowRoot) { - return findOne(this, selector); - } - } - return wrappedItem; - }, - querySelectorAll: function(selector) { - var shimmed = shimSelector(selector); - var deep = shimmed !== selector; - selector = shimmed; - var result = new NodeList(); - result.length = querySelectorAllFiltered.call(this, matchesSelector, 0, result, selector, deep); - return result; - } - }; - var MatchesInterface = { - matches: function(selector) { - selector = shimMatchesSelector(selector); - return scope.originalMatches.call(unsafeUnwrap(this), selector); - } - }; - function getElementsByTagNameFiltered(p, index, result, localName, lowercase) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, localName, lowercase); - } else if (target instanceof OriginalElement) { - list = originalElementGetElementsByTagName.call(target, localName, lowercase); - } else if (target instanceof OriginalDocument) { - list = originalDocumentGetElementsByTagName.call(target, localName, lowercase); - } else { - return findElements(this, index, result, p, localName, lowercase); - } - return filterNodeList(list, index, result, false); - } - function getElementsByTagNameNSFiltered(p, index, result, ns, localName) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, ns, localName); - } else if (target instanceof OriginalElement) { - list = originalElementGetElementsByTagNameNS.call(target, ns, localName); - } else if (target instanceof OriginalDocument) { - list = originalDocumentGetElementsByTagNameNS.call(target, ns, localName); - } else { - return findElements(this, index, result, p, ns, localName); - } - return filterNodeList(list, index, result, false); - } - var GetElementsByInterface = { - getElementsByTagName: function(localName) { - var result = new HTMLCollection(); - var match = localName === "*" ? matchesEveryThing : matchesTagName; - result.length = getElementsByTagNameFiltered.call(this, match, 0, result, localName, localName.toLowerCase()); - return result; - }, - getElementsByClassName: function(className) { - return this.querySelectorAll("." + className); - }, - getElementsByTagNameNS: function(ns, localName) { - var result = new HTMLCollection(); - var match = null; - if (ns === "*") { - match = localName === "*" ? matchesEveryThing : matchesLocalNameOnly; - } else { - match = localName === "*" ? matchesNameSpace : matchesLocalNameNS; - } - result.length = getElementsByTagNameNSFiltered.call(this, match, 0, result, ns || null, localName); - return result; - } - }; - scope.GetElementsByInterface = GetElementsByInterface; - scope.SelectorsInterface = SelectorsInterface; - scope.MatchesInterface = MatchesInterface; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var NodeList = scope.wrappers.NodeList; - function forwardElement(node) { - while (node && node.nodeType !== Node.ELEMENT_NODE) { - node = node.nextSibling; - } - return node; - } - function backwardsElement(node) { - while (node && node.nodeType !== Node.ELEMENT_NODE) { - node = node.previousSibling; - } - return node; - } - var ParentNodeInterface = { - get firstElementChild() { - return forwardElement(this.firstChild); - }, - get lastElementChild() { - return backwardsElement(this.lastChild); - }, - get childElementCount() { - var count = 0; - for (var child = this.firstElementChild; child; child = child.nextElementSibling) { - count++; - } - return count; - }, - get children() { - var wrapperList = new NodeList(); - var i = 0; - for (var child = this.firstElementChild; child; child = child.nextElementSibling) { - wrapperList[i++] = child; - } - wrapperList.length = i; - return wrapperList; - }, - remove: function() { - var p = this.parentNode; - if (p) p.removeChild(this); - } - }; - var ChildNodeInterface = { - get nextElementSibling() { - return forwardElement(this.nextSibling); - }, - get previousElementSibling() { - return backwardsElement(this.previousSibling); - } - }; - var NonElementParentNodeInterface = { - getElementById: function(id) { - if (/[ \t\n\r\f]/.test(id)) return null; - return this.querySelector('[id="' + id + '"]'); - } - }; - scope.ChildNodeInterface = ChildNodeInterface; - scope.NonElementParentNodeInterface = NonElementParentNodeInterface; - scope.ParentNodeInterface = ParentNodeInterface; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var ChildNodeInterface = scope.ChildNodeInterface; - var Node = scope.wrappers.Node; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var OriginalCharacterData = window.CharacterData; - function CharacterData(node) { - Node.call(this, node); - } - CharacterData.prototype = Object.create(Node.prototype); - mixin(CharacterData.prototype, { - get nodeValue() { - return this.data; - }, - set nodeValue(data) { - this.data = data; - }, - get textContent() { - return this.data; - }, - set textContent(value) { - this.data = value; - }, - get data() { - return unsafeUnwrap(this).data; - }, - set data(value) { - var oldValue = unsafeUnwrap(this).data; - enqueueMutation(this, "characterData", { - oldValue: oldValue - }); - unsafeUnwrap(this).data = value; - } - }); - mixin(CharacterData.prototype, ChildNodeInterface); - registerWrapper(OriginalCharacterData, CharacterData, document.createTextNode("")); - scope.wrappers.CharacterData = CharacterData; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var CharacterData = scope.wrappers.CharacterData; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - function toUInt32(x) { - return x >>> 0; - } - var OriginalText = window.Text; - function Text(node) { - CharacterData.call(this, node); - } - Text.prototype = Object.create(CharacterData.prototype); - mixin(Text.prototype, { - splitText: function(offset) { - offset = toUInt32(offset); - var s = this.data; - if (offset > s.length) throw new Error("IndexSizeError"); - var head = s.slice(0, offset); - var tail = s.slice(offset); - this.data = head; - var newTextNode = this.ownerDocument.createTextNode(tail); - if (this.parentNode) this.parentNode.insertBefore(newTextNode, this.nextSibling); - return newTextNode; - } - }); - registerWrapper(OriginalText, Text, document.createTextNode("")); - scope.wrappers.Text = Text; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - if (!window.DOMTokenList) { - console.warn("Missing DOMTokenList prototype, please include a " + "compatible classList polyfill such as http://goo.gl/uTcepH."); - return; - } - var unsafeUnwrap = scope.unsafeUnwrap; - var enqueueMutation = scope.enqueueMutation; - function getClass(el) { - return unsafeUnwrap(el).getAttribute("class"); - } - function enqueueClassAttributeChange(el, oldValue) { - enqueueMutation(el, "attributes", { - name: "class", - namespace: null, - oldValue: oldValue - }); - } - function invalidateClass(el) { - scope.invalidateRendererBasedOnAttribute(el, "class"); - } - function changeClass(tokenList, method, args) { - var ownerElement = tokenList.ownerElement_; - if (ownerElement == null) { - return method.apply(tokenList, args); - } - var oldValue = getClass(ownerElement); - var retv = method.apply(tokenList, args); - if (getClass(ownerElement) !== oldValue) { - enqueueClassAttributeChange(ownerElement, oldValue); - invalidateClass(ownerElement); - } - return retv; - } - var oldAdd = DOMTokenList.prototype.add; - DOMTokenList.prototype.add = function() { - changeClass(this, oldAdd, arguments); - }; - var oldRemove = DOMTokenList.prototype.remove; - DOMTokenList.prototype.remove = function() { - changeClass(this, oldRemove, arguments); - }; - var oldToggle = DOMTokenList.prototype.toggle; - DOMTokenList.prototype.toggle = function() { - return changeClass(this, oldToggle, arguments); - }; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var ChildNodeInterface = scope.ChildNodeInterface; - var GetElementsByInterface = scope.GetElementsByInterface; - var Node = scope.wrappers.Node; - var ParentNodeInterface = scope.ParentNodeInterface; - var SelectorsInterface = scope.SelectorsInterface; - var MatchesInterface = scope.MatchesInterface; - var addWrapNodeListMethod = scope.addWrapNodeListMethod; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var oneOf = scope.oneOf; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrappers = scope.wrappers; - var OriginalElement = window.Element; - var matchesNames = [ "matches", "mozMatchesSelector", "msMatchesSelector", "webkitMatchesSelector" ].filter(function(name) { - return OriginalElement.prototype[name]; - }); - var matchesName = matchesNames[0]; - var originalMatches = OriginalElement.prototype[matchesName]; - function invalidateRendererBasedOnAttribute(element, name) { - var p = element.parentNode; - if (!p || !p.shadowRoot) return; - var renderer = scope.getRendererForHost(p); - if (renderer.dependsOnAttribute(name)) renderer.invalidate(); - } - function enqueAttributeChange(element, name, oldValue) { - enqueueMutation(element, "attributes", { - name: name, - namespace: null, - oldValue: oldValue - }); - } - var classListTable = new WeakMap(); - function Element(node) { - Node.call(this, node); - } - Element.prototype = Object.create(Node.prototype); - mixin(Element.prototype, { - createShadowRoot: function() { - var newShadowRoot = new wrappers.ShadowRoot(this); - unsafeUnwrap(this).polymerShadowRoot_ = newShadowRoot; - var renderer = scope.getRendererForHost(this); - renderer.invalidate(); - return newShadowRoot; - }, - get shadowRoot() { - return unsafeUnwrap(this).polymerShadowRoot_ || null; - }, - setAttribute: function(name, value) { - var oldValue = unsafeUnwrap(this).getAttribute(name); - unsafeUnwrap(this).setAttribute(name, value); - enqueAttributeChange(this, name, oldValue); - invalidateRendererBasedOnAttribute(this, name); - }, - removeAttribute: function(name) { - var oldValue = unsafeUnwrap(this).getAttribute(name); - unsafeUnwrap(this).removeAttribute(name); - enqueAttributeChange(this, name, oldValue); - invalidateRendererBasedOnAttribute(this, name); - }, - get classList() { - var list = classListTable.get(this); - if (!list) { - list = unsafeUnwrap(this).classList; - if (!list) return; - list.ownerElement_ = this; - classListTable.set(this, list); - } - return list; - }, - get className() { - return unsafeUnwrap(this).className; - }, - set className(v) { - this.setAttribute("class", v); - }, - get id() { - return unsafeUnwrap(this).id; - }, - set id(v) { - this.setAttribute("id", v); - } - }); - matchesNames.forEach(function(name) { - if (name !== "matches") { - Element.prototype[name] = function(selector) { - return this.matches(selector); - }; - } - }); - if (OriginalElement.prototype.webkitCreateShadowRoot) { - Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRoot; - } - mixin(Element.prototype, ChildNodeInterface); - mixin(Element.prototype, GetElementsByInterface); - mixin(Element.prototype, ParentNodeInterface); - mixin(Element.prototype, SelectorsInterface); - mixin(Element.prototype, MatchesInterface); - registerWrapper(OriginalElement, Element, document.createElementNS(null, "x")); - scope.invalidateRendererBasedOnAttribute = invalidateRendererBasedOnAttribute; - scope.matchesNames = matchesNames; - scope.originalMatches = originalMatches; - scope.wrappers.Element = Element; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var defineGetter = scope.defineGetter; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var nodesWereAdded = scope.nodesWereAdded; - var nodesWereRemoved = scope.nodesWereRemoved; - var registerWrapper = scope.registerWrapper; - var snapshotNodeList = scope.snapshotNodeList; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrappers = scope.wrappers; - var escapeAttrRegExp = /[&\u00A0"]/g; - var escapeDataRegExp = /[&\u00A0<>]/g; - function escapeReplace(c) { - switch (c) { - case "&": - return "&"; - - case "<": - return "<"; - - case ">": - return ">"; - - case '"': - return """; - - case " ": - return " "; - } - } - function escapeAttr(s) { - return s.replace(escapeAttrRegExp, escapeReplace); - } - function escapeData(s) { - return s.replace(escapeDataRegExp, escapeReplace); - } - function makeSet(arr) { - var set = {}; - for (var i = 0; i < arr.length; i++) { - set[arr[i]] = true; - } - return set; - } - var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); - var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]); - var XHTML_NS = "http://www.w3.org/1999/xhtml"; - function needsSelfClosingSlash(node) { - if (node.namespaceURI !== XHTML_NS) return true; - var doctype = node.ownerDocument.doctype; - return doctype && doctype.publicId && doctype.systemId; - } - function getOuterHTML(node, parentNode) { - switch (node.nodeType) { - case Node.ELEMENT_NODE: - var tagName = node.tagName.toLowerCase(); - var s = "<" + tagName; - var attrs = node.attributes; - for (var i = 0, attr; attr = attrs[i]; i++) { - s += " " + attr.name + '="' + escapeAttr(attr.value) + '"'; - } - if (voidElements[tagName]) { - if (needsSelfClosingSlash(node)) s += "/"; - return s + ">"; - } - return s + ">" + getInnerHTML(node) + ""; - - case Node.TEXT_NODE: - var data = node.data; - if (parentNode && plaintextParents[parentNode.localName]) return data; - return escapeData(data); - - case Node.COMMENT_NODE: - return ""; - - default: - console.error(node); - throw new Error("not implemented"); - } - } - function getInnerHTML(node) { - if (node instanceof wrappers.HTMLTemplateElement) node = node.content; - var s = ""; - for (var child = node.firstChild; child; child = child.nextSibling) { - s += getOuterHTML(child, node); - } - return s; - } - function setInnerHTML(node, value, opt_tagName) { - var tagName = opt_tagName || "div"; - node.textContent = ""; - var tempElement = unwrap(node.ownerDocument.createElement(tagName)); - tempElement.innerHTML = value; - var firstChild; - while (firstChild = tempElement.firstChild) { - node.appendChild(wrap(firstChild)); - } - } - var oldIe = /MSIE/.test(navigator.userAgent); - var OriginalHTMLElement = window.HTMLElement; - var OriginalHTMLTemplateElement = window.HTMLTemplateElement; - function HTMLElement(node) { - Element.call(this, node); - } - HTMLElement.prototype = Object.create(Element.prototype); - mixin(HTMLElement.prototype, { - get innerHTML() { - return getInnerHTML(this); - }, - set innerHTML(value) { - if (oldIe && plaintextParents[this.localName]) { - this.textContent = value; - return; - } - var removedNodes = snapshotNodeList(this.childNodes); - if (this.invalidateShadowRenderer()) { - if (this instanceof wrappers.HTMLTemplateElement) setInnerHTML(this.content, value); else setInnerHTML(this, value, this.tagName); - } else if (!OriginalHTMLTemplateElement && this instanceof wrappers.HTMLTemplateElement) { - setInnerHTML(this.content, value); - } else { - unsafeUnwrap(this).innerHTML = value; - } - var addedNodes = snapshotNodeList(this.childNodes); - enqueueMutation(this, "childList", { - addedNodes: addedNodes, - removedNodes: removedNodes - }); - nodesWereRemoved(removedNodes); - nodesWereAdded(addedNodes, this); - }, - get outerHTML() { - return getOuterHTML(this, this.parentNode); - }, - set outerHTML(value) { - var p = this.parentNode; - if (p) { - p.invalidateShadowRenderer(); - var df = frag(p, value); - p.replaceChild(df, this); - } - }, - insertAdjacentHTML: function(position, text) { - var contextElement, refNode; - switch (String(position).toLowerCase()) { - case "beforebegin": - contextElement = this.parentNode; - refNode = this; - break; - - case "afterend": - contextElement = this.parentNode; - refNode = this.nextSibling; - break; - - case "afterbegin": - contextElement = this; - refNode = this.firstChild; - break; - - case "beforeend": - contextElement = this; - refNode = null; - break; - - default: - return; - } - var df = frag(contextElement, text); - contextElement.insertBefore(df, refNode); - }, - get hidden() { - return this.hasAttribute("hidden"); - }, - set hidden(v) { - if (v) { - this.setAttribute("hidden", ""); - } else { - this.removeAttribute("hidden"); - } - } - }); - function frag(contextElement, html) { - var p = unwrap(contextElement.cloneNode(false)); - p.innerHTML = html; - var df = unwrap(document.createDocumentFragment()); - var c; - while (c = p.firstChild) { - df.appendChild(c); - } - return wrap(df); - } - function getter(name) { - return function() { - scope.renderAllPending(); - return unsafeUnwrap(this)[name]; - }; - } - function getterRequiresRendering(name) { - defineGetter(HTMLElement, name, getter(name)); - } - [ "clientHeight", "clientLeft", "clientTop", "clientWidth", "offsetHeight", "offsetLeft", "offsetTop", "offsetWidth", "scrollHeight", "scrollWidth" ].forEach(getterRequiresRendering); - function getterAndSetterRequiresRendering(name) { - Object.defineProperty(HTMLElement.prototype, name, { - get: getter(name), - set: function(v) { - scope.renderAllPending(); - unsafeUnwrap(this)[name] = v; - }, - configurable: true, - enumerable: true - }); - } - [ "scrollLeft", "scrollTop" ].forEach(getterAndSetterRequiresRendering); - function methodRequiresRendering(name) { - Object.defineProperty(HTMLElement.prototype, name, { - value: function() { - scope.renderAllPending(); - return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); - }, - configurable: true, - enumerable: true - }); - } - [ "focus", "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(methodRequiresRendering); - registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b")); - scope.wrappers.HTMLElement = HTMLElement; - scope.getInnerHTML = getInnerHTML; - scope.setInnerHTML = setInnerHTML; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalHTMLCanvasElement = window.HTMLCanvasElement; - function HTMLCanvasElement(node) { - HTMLElement.call(this, node); - } - HTMLCanvasElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLCanvasElement.prototype, { - getContext: function() { - var context = unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this), arguments); - return context && wrap(context); - } - }); - registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement, document.createElement("canvas")); - scope.wrappers.HTMLCanvasElement = HTMLCanvasElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLContentElement = window.HTMLContentElement; - function HTMLContentElement(node) { - HTMLElement.call(this, node); - } - HTMLContentElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLContentElement.prototype, { - constructor: HTMLContentElement, - get select() { - return this.getAttribute("select"); - }, - set select(value) { - this.setAttribute("select", value); - }, - setAttribute: function(n, v) { - HTMLElement.prototype.setAttribute.call(this, n, v); - if (String(n).toLowerCase() === "select") this.invalidateShadowRenderer(true); - } - }); - if (OriginalHTMLContentElement) registerWrapper(OriginalHTMLContentElement, HTMLContentElement); - scope.wrappers.HTMLContentElement = HTMLContentElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var OriginalHTMLFormElement = window.HTMLFormElement; - function HTMLFormElement(node) { - HTMLElement.call(this, node); - } - HTMLFormElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLFormElement.prototype, { - get elements() { - return wrapHTMLCollection(unwrap(this).elements); - } - }); - registerWrapper(OriginalHTMLFormElement, HTMLFormElement, document.createElement("form")); - scope.wrappers.HTMLFormElement = HTMLFormElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var rewrap = scope.rewrap; - var OriginalHTMLImageElement = window.HTMLImageElement; - function HTMLImageElement(node) { - HTMLElement.call(this, node); - } - HTMLImageElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLImageElement, HTMLImageElement, document.createElement("img")); - function Image(width, height) { - if (!(this instanceof Image)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("img")); - HTMLElement.call(this, node); - rewrap(node, this); - if (width !== undefined) node.width = width; - if (height !== undefined) node.height = height; - } - Image.prototype = HTMLImageElement.prototype; - scope.wrappers.HTMLImageElement = HTMLImageElement; - scope.wrappers.Image = Image; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var NodeList = scope.wrappers.NodeList; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLShadowElement = window.HTMLShadowElement; - function HTMLShadowElement(node) { - HTMLElement.call(this, node); - } - HTMLShadowElement.prototype = Object.create(HTMLElement.prototype); - HTMLShadowElement.prototype.constructor = HTMLShadowElement; - if (OriginalHTMLShadowElement) registerWrapper(OriginalHTMLShadowElement, HTMLShadowElement); - scope.wrappers.HTMLShadowElement = HTMLShadowElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var contentTable = new WeakMap(); - var templateContentsOwnerTable = new WeakMap(); - function getTemplateContentsOwner(doc) { - if (!doc.defaultView) return doc; - var d = templateContentsOwnerTable.get(doc); - if (!d) { - d = doc.implementation.createHTMLDocument(""); - while (d.lastChild) { - d.removeChild(d.lastChild); - } - templateContentsOwnerTable.set(doc, d); - } - return d; - } - function extractContent(templateElement) { - var doc = getTemplateContentsOwner(templateElement.ownerDocument); - var df = unwrap(doc.createDocumentFragment()); - var child; - while (child = templateElement.firstChild) { - df.appendChild(child); - } - return df; - } - var OriginalHTMLTemplateElement = window.HTMLTemplateElement; - function HTMLTemplateElement(node) { - HTMLElement.call(this, node); - if (!OriginalHTMLTemplateElement) { - var content = extractContent(node); - contentTable.set(this, wrap(content)); - } - } - HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTemplateElement.prototype, { - constructor: HTMLTemplateElement, - get content() { - if (OriginalHTMLTemplateElement) return wrap(unsafeUnwrap(this).content); - return contentTable.get(this); - } - }); - if (OriginalHTMLTemplateElement) registerWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement); - scope.wrappers.HTMLTemplateElement = HTMLTemplateElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLMediaElement = window.HTMLMediaElement; - if (!OriginalHTMLMediaElement) return; - function HTMLMediaElement(node) { - HTMLElement.call(this, node); - } - HTMLMediaElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLMediaElement, HTMLMediaElement, document.createElement("audio")); - scope.wrappers.HTMLMediaElement = HTMLMediaElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLMediaElement = scope.wrappers.HTMLMediaElement; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var rewrap = scope.rewrap; - var OriginalHTMLAudioElement = window.HTMLAudioElement; - if (!OriginalHTMLAudioElement) return; - function HTMLAudioElement(node) { - HTMLMediaElement.call(this, node); - } - HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype); - registerWrapper(OriginalHTMLAudioElement, HTMLAudioElement, document.createElement("audio")); - function Audio(src) { - if (!(this instanceof Audio)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("audio")); - HTMLMediaElement.call(this, node); - rewrap(node, this); - node.setAttribute("preload", "auto"); - if (src !== undefined) node.setAttribute("src", src); - } - Audio.prototype = HTMLAudioElement.prototype; - scope.wrappers.HTMLAudioElement = HTMLAudioElement; - scope.wrappers.Audio = Audio; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var rewrap = scope.rewrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLOptionElement = window.HTMLOptionElement; - function trimText(s) { - return s.replace(/\s+/g, " ").trim(); - } - function HTMLOptionElement(node) { - HTMLElement.call(this, node); - } - HTMLOptionElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLOptionElement.prototype, { - get text() { - return trimText(this.textContent); - }, - set text(value) { - this.textContent = trimText(String(value)); - }, - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(OriginalHTMLOptionElement, HTMLOptionElement, document.createElement("option")); - function Option(text, value, defaultSelected, selected) { - if (!(this instanceof Option)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("option")); - HTMLElement.call(this, node); - rewrap(node, this); - if (text !== undefined) node.text = text; - if (value !== undefined) node.setAttribute("value", value); - if (defaultSelected === true) node.setAttribute("selected", ""); - node.selected = selected === true; - } - Option.prototype = HTMLOptionElement.prototype; - scope.wrappers.HTMLOptionElement = HTMLOptionElement; - scope.wrappers.Option = Option; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLSelectElement = window.HTMLSelectElement; - function HTMLSelectElement(node) { - HTMLElement.call(this, node); - } - HTMLSelectElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLSelectElement.prototype, { - add: function(element, before) { - if (typeof before === "object") before = unwrap(before); - unwrap(this).add(unwrap(element), before); - }, - remove: function(indexOrNode) { - if (indexOrNode === undefined) { - HTMLElement.prototype.remove.call(this); - return; - } - if (typeof indexOrNode === "object") indexOrNode = unwrap(indexOrNode); - unwrap(this).remove(indexOrNode); - }, - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(OriginalHTMLSelectElement, HTMLSelectElement, document.createElement("select")); - scope.wrappers.HTMLSelectElement = HTMLSelectElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var OriginalHTMLTableElement = window.HTMLTableElement; - function HTMLTableElement(node) { - HTMLElement.call(this, node); - } - HTMLTableElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableElement.prototype, { - get caption() { - return wrap(unwrap(this).caption); - }, - createCaption: function() { - return wrap(unwrap(this).createCaption()); - }, - get tHead() { - return wrap(unwrap(this).tHead); - }, - createTHead: function() { - return wrap(unwrap(this).createTHead()); - }, - createTFoot: function() { - return wrap(unwrap(this).createTFoot()); - }, - get tFoot() { - return wrap(unwrap(this).tFoot); - }, - get tBodies() { - return wrapHTMLCollection(unwrap(this).tBodies); - }, - createTBody: function() { - return wrap(unwrap(this).createTBody()); - }, - get rows() { - return wrapHTMLCollection(unwrap(this).rows); - }, - insertRow: function(index) { - return wrap(unwrap(this).insertRow(index)); - } - }); - registerWrapper(OriginalHTMLTableElement, HTMLTableElement, document.createElement("table")); - scope.wrappers.HTMLTableElement = HTMLTableElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLTableSectionElement = window.HTMLTableSectionElement; - function HTMLTableSectionElement(node) { - HTMLElement.call(this, node); - } - HTMLTableSectionElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableSectionElement.prototype, { - constructor: HTMLTableSectionElement, - get rows() { - return wrapHTMLCollection(unwrap(this).rows); - }, - insertRow: function(index) { - return wrap(unwrap(this).insertRow(index)); - } - }); - registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionElement, document.createElement("thead")); - scope.wrappers.HTMLTableSectionElement = HTMLTableSectionElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLTableRowElement = window.HTMLTableRowElement; - function HTMLTableRowElement(node) { - HTMLElement.call(this, node); - } - HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableRowElement.prototype, { - get cells() { - return wrapHTMLCollection(unwrap(this).cells); - }, - insertCell: function(index) { - return wrap(unwrap(this).insertCell(index)); - } - }); - registerWrapper(OriginalHTMLTableRowElement, HTMLTableRowElement, document.createElement("tr")); - scope.wrappers.HTMLTableRowElement = HTMLTableRowElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLContentElement = scope.wrappers.HTMLContentElement; - var HTMLElement = scope.wrappers.HTMLElement; - var HTMLShadowElement = scope.wrappers.HTMLShadowElement; - var HTMLTemplateElement = scope.wrappers.HTMLTemplateElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLUnknownElement = window.HTMLUnknownElement; - function HTMLUnknownElement(node) { - switch (node.localName) { - case "content": - return new HTMLContentElement(node); - - case "shadow": - return new HTMLShadowElement(node); - - case "template": - return new HTMLTemplateElement(node); - } - HTMLElement.call(this, node); - } - HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); - scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var defineWrapGetter = scope.defineWrapGetter; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var mixin = scope.mixin; - var SVG_NS = "http://www.w3.org/2000/svg"; - var OriginalSVGElement = window.SVGElement; - var svgTitleElement = document.createElementNS(SVG_NS, "title"); - if (!("classList" in svgTitleElement)) { - var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"); - Object.defineProperty(HTMLElement.prototype, "classList", descr); - delete Element.prototype.classList; - } - function SVGElement(node) { - Element.call(this, node); - } - SVGElement.prototype = Object.create(Element.prototype); - mixin(SVGElement.prototype, { - get ownerSVGElement() { - return wrap(unsafeUnwrap(this).ownerSVGElement); - } - }); - registerWrapper(OriginalSVGElement, SVGElement, document.createElementNS(SVG_NS, "title")); - scope.wrappers.SVGElement = SVGElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalSVGUseElement = window.SVGUseElement; - var SVG_NS = "http://www.w3.org/2000/svg"; - var gWrapper = wrap(document.createElementNS(SVG_NS, "g")); - var useElement = document.createElementNS(SVG_NS, "use"); - var SVGGElement = gWrapper.constructor; - var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype); - var parentInterface = parentInterfacePrototype.constructor; - function SVGUseElement(impl) { - parentInterface.call(this, impl); - } - SVGUseElement.prototype = Object.create(parentInterfacePrototype); - if ("instanceRoot" in useElement) { - mixin(SVGUseElement.prototype, { - get instanceRoot() { - return wrap(unwrap(this).instanceRoot); - }, - get animatedInstanceRoot() { - return wrap(unwrap(this).animatedInstanceRoot); - } - }); - } - registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement); - scope.wrappers.SVGUseElement = SVGUseElement; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalSVGElementInstance = window.SVGElementInstance; - if (!OriginalSVGElementInstance) return; - function SVGElementInstance(impl) { - EventTarget.call(this, impl); - } - SVGElementInstance.prototype = Object.create(EventTarget.prototype); - mixin(SVGElementInstance.prototype, { - get correspondingElement() { - return wrap(unsafeUnwrap(this).correspondingElement); - }, - get correspondingUseElement() { - return wrap(unsafeUnwrap(this).correspondingUseElement); - }, - get parentNode() { - return wrap(unsafeUnwrap(this).parentNode); - }, - get childNodes() { - throw new Error("Not implemented"); - }, - get firstChild() { - return wrap(unsafeUnwrap(this).firstChild); - }, - get lastChild() { - return wrap(unsafeUnwrap(this).lastChild); - }, - get previousSibling() { - return wrap(unsafeUnwrap(this).previousSibling); - }, - get nextSibling() { - return wrap(unsafeUnwrap(this).nextSibling); - } - }); - registerWrapper(OriginalSVGElementInstance, SVGElementInstance); - scope.wrappers.SVGElementInstance = SVGElementInstance; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D; - function CanvasRenderingContext2D(impl) { - setWrapper(impl, this); - } - mixin(CanvasRenderingContext2D.prototype, { - get canvas() { - return wrap(unsafeUnwrap(this).canvas); - }, - drawImage: function() { - arguments[0] = unwrapIfNeeded(arguments[0]); - unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this), arguments); - }, - createPattern: function() { - arguments[0] = unwrap(arguments[0]); - return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), arguments); - } - }); - registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d")); - scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var addForwardingProperties = scope.addForwardingProperties; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalWebGLRenderingContext = window.WebGLRenderingContext; - if (!OriginalWebGLRenderingContext) return; - function WebGLRenderingContext(impl) { - setWrapper(impl, this); - } - mixin(WebGLRenderingContext.prototype, { - get canvas() { - return wrap(unsafeUnwrap(this).canvas); - }, - texImage2D: function() { - arguments[5] = unwrapIfNeeded(arguments[5]); - unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); - }, - texSubImage2D: function() { - arguments[6] = unwrapIfNeeded(arguments[6]); - unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); - } - }); - var OriginalWebGLRenderingContextBase = Object.getPrototypeOf(OriginalWebGLRenderingContext.prototype); - if (OriginalWebGLRenderingContextBase !== Object.prototype) { - addForwardingProperties(OriginalWebGLRenderingContextBase, WebGLRenderingContext.prototype); - } - var instanceProperties = /WebKit/.test(navigator.userAgent) ? { - drawingBufferHeight: null, - drawingBufferWidth: null - } : {}; - registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instanceProperties); - scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var Node = scope.wrappers.Node; - var GetElementsByInterface = scope.GetElementsByInterface; - var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; - var ParentNodeInterface = scope.ParentNodeInterface; - var SelectorsInterface = scope.SelectorsInterface; - var mixin = scope.mixin; - var registerObject = scope.registerObject; - var registerWrapper = scope.registerWrapper; - var OriginalDocumentFragment = window.DocumentFragment; - function DocumentFragment(node) { - Node.call(this, node); - } - DocumentFragment.prototype = Object.create(Node.prototype); - mixin(DocumentFragment.prototype, ParentNodeInterface); - mixin(DocumentFragment.prototype, SelectorsInterface); - mixin(DocumentFragment.prototype, GetElementsByInterface); - mixin(DocumentFragment.prototype, NonElementParentNodeInterface); - registerWrapper(OriginalDocumentFragment, DocumentFragment, document.createDocumentFragment()); - scope.wrappers.DocumentFragment = DocumentFragment; - var Comment = registerObject(document.createComment("")); - scope.wrappers.Comment = Comment; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var DocumentFragment = scope.wrappers.DocumentFragment; - var TreeScope = scope.TreeScope; - var elementFromPoint = scope.elementFromPoint; - var getInnerHTML = scope.getInnerHTML; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var rewrap = scope.rewrap; - var setInnerHTML = scope.setInnerHTML; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var shadowHostTable = new WeakMap(); - var nextOlderShadowTreeTable = new WeakMap(); - function ShadowRoot(hostWrapper) { - var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment()); - DocumentFragment.call(this, node); - rewrap(node, this); - var oldShadowRoot = hostWrapper.shadowRoot; - nextOlderShadowTreeTable.set(this, oldShadowRoot); - this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrapper)); - shadowHostTable.set(this, hostWrapper); - } - ShadowRoot.prototype = Object.create(DocumentFragment.prototype); - mixin(ShadowRoot.prototype, { - constructor: ShadowRoot, - get innerHTML() { - return getInnerHTML(this); - }, - set innerHTML(value) { - setInnerHTML(this, value); - this.invalidateShadowRenderer(); - }, - get olderShadowRoot() { - return nextOlderShadowTreeTable.get(this) || null; - }, - get host() { - return shadowHostTable.get(this) || null; - }, - invalidateShadowRenderer: function() { - return shadowHostTable.get(this).invalidateShadowRenderer(); - }, - elementFromPoint: function(x, y) { - return elementFromPoint(this, this.ownerDocument, x, y); - }, - getSelection: function() { - return document.getSelection(); - }, - get activeElement() { - var unwrappedActiveElement = unwrap(this).ownerDocument.activeElement; - if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null; - var activeElement = wrap(unwrappedActiveElement); - while (!this.contains(activeElement)) { - while (activeElement.parentNode) { - activeElement = activeElement.parentNode; - } - if (activeElement.host) { - activeElement = activeElement.host; - } else { - return null; - } - } - return activeElement; - } - }); - scope.wrappers.ShadowRoot = ShadowRoot; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var getTreeScope = scope.getTreeScope; - var OriginalRange = window.Range; - var ShadowRoot = scope.wrappers.ShadowRoot; - function getHost(node) { - var root = getTreeScope(node).root; - if (root instanceof ShadowRoot) { - return root.host; - } - return null; - } - function hostNodeToShadowNode(refNode, offset) { - if (refNode.shadowRoot) { - offset = Math.min(refNode.childNodes.length - 1, offset); - var child = refNode.childNodes[offset]; - if (child) { - var insertionPoint = scope.getDestinationInsertionPoints(child); - if (insertionPoint.length > 0) { - var parentNode = insertionPoint[0].parentNode; - if (parentNode.nodeType == Node.ELEMENT_NODE) { - refNode = parentNode; - } - } - } - } - return refNode; - } - function shadowNodeToHostNode(node) { - node = wrap(node); - return getHost(node) || node; - } - function Range(impl) { - setWrapper(impl, this); - } - Range.prototype = { - get startContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).startContainer); - }, - get endContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).endContainer); - }, - get commonAncestorContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer); - }, - setStart: function(refNode, offset) { - refNode = hostNodeToShadowNode(refNode, offset); - unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode), offset); - }, - setEnd: function(refNode, offset) { - refNode = hostNodeToShadowNode(refNode, offset); - unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode), offset); - }, - setStartBefore: function(refNode) { - unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode)); - }, - setStartAfter: function(refNode) { - unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode)); - }, - setEndBefore: function(refNode) { - unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode)); - }, - setEndAfter: function(refNode) { - unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode)); - }, - selectNode: function(refNode) { - unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode)); - }, - selectNodeContents: function(refNode) { - unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode)); - }, - compareBoundaryPoints: function(how, sourceRange) { - return unsafeUnwrap(this).compareBoundaryPoints(how, unwrap(sourceRange)); - }, - extractContents: function() { - return wrap(unsafeUnwrap(this).extractContents()); - }, - cloneContents: function() { - return wrap(unsafeUnwrap(this).cloneContents()); - }, - insertNode: function(node) { - unsafeUnwrap(this).insertNode(unwrapIfNeeded(node)); - }, - surroundContents: function(newParent) { - unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent)); - }, - cloneRange: function() { - return wrap(unsafeUnwrap(this).cloneRange()); - }, - isPointInRange: function(node, offset) { - return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node), offset); - }, - comparePoint: function(node, offset) { - return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node), offset); - }, - intersectsNode: function(node) { - return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node)); - }, - toString: function() { - return unsafeUnwrap(this).toString(); - } - }; - if (OriginalRange.prototype.createContextualFragment) { - Range.prototype.createContextualFragment = function(html) { - return wrap(unsafeUnwrap(this).createContextualFragment(html)); - }; - } - registerWrapper(window.Range, Range, document.createRange()); - scope.wrappers.Range = Range; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var HTMLContentElement = scope.wrappers.HTMLContentElement; - var HTMLShadowElement = scope.wrappers.HTMLShadowElement; - var Node = scope.wrappers.Node; - var ShadowRoot = scope.wrappers.ShadowRoot; - var assert = scope.assert; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var oneOf = scope.oneOf; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var ArraySplice = scope.ArraySplice; - function updateWrapperUpAndSideways(wrapper) { - wrapper.previousSibling_ = wrapper.previousSibling; - wrapper.nextSibling_ = wrapper.nextSibling; - wrapper.parentNode_ = wrapper.parentNode; - } - function updateWrapperDown(wrapper) { - wrapper.firstChild_ = wrapper.firstChild; - wrapper.lastChild_ = wrapper.lastChild; - } - function updateAllChildNodes(parentNodeWrapper) { - assert(parentNodeWrapper instanceof Node); - for (var childWrapper = parentNodeWrapper.firstChild; childWrapper; childWrapper = childWrapper.nextSibling) { - updateWrapperUpAndSideways(childWrapper); - } - updateWrapperDown(parentNodeWrapper); - } - function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper) { - var parentNode = unwrap(parentNodeWrapper); - var newChild = unwrap(newChildWrapper); - var refChild = refChildWrapper ? unwrap(refChildWrapper) : null; - remove(newChildWrapper); - updateWrapperUpAndSideways(newChildWrapper); - if (!refChildWrapper) { - parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild; - if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild) parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild; - var lastChildWrapper = wrap(parentNode.lastChild); - if (lastChildWrapper) lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling; - } else { - if (parentNodeWrapper.firstChild === refChildWrapper) parentNodeWrapper.firstChild_ = refChildWrapper; - refChildWrapper.previousSibling_ = refChildWrapper.previousSibling; - } - scope.originalInsertBefore.call(parentNode, newChild, refChild); - } - function remove(nodeWrapper) { - var node = unwrap(nodeWrapper); - var parentNode = node.parentNode; - if (!parentNode) return; - var parentNodeWrapper = wrap(parentNode); - updateWrapperUpAndSideways(nodeWrapper); - if (nodeWrapper.previousSibling) nodeWrapper.previousSibling.nextSibling_ = nodeWrapper; - if (nodeWrapper.nextSibling) nodeWrapper.nextSibling.previousSibling_ = nodeWrapper; - if (parentNodeWrapper.lastChild === nodeWrapper) parentNodeWrapper.lastChild_ = nodeWrapper; - if (parentNodeWrapper.firstChild === nodeWrapper) parentNodeWrapper.firstChild_ = nodeWrapper; - scope.originalRemoveChild.call(parentNode, node); - } - var distributedNodesTable = new WeakMap(); - var destinationInsertionPointsTable = new WeakMap(); - var rendererForHostTable = new WeakMap(); - function resetDistributedNodes(insertionPoint) { - distributedNodesTable.set(insertionPoint, []); - } - function getDistributedNodes(insertionPoint) { - var rv = distributedNodesTable.get(insertionPoint); - if (!rv) distributedNodesTable.set(insertionPoint, rv = []); - return rv; - } - function getChildNodesSnapshot(node) { - var result = [], i = 0; - for (var child = node.firstChild; child; child = child.nextSibling) { - result[i++] = child; - } - return result; - } - var request = oneOf(window, [ "requestAnimationFrame", "mozRequestAnimationFrame", "webkitRequestAnimationFrame", "setTimeout" ]); - var pendingDirtyRenderers = []; - var renderTimer; - function renderAllPending() { - for (var i = 0; i < pendingDirtyRenderers.length; i++) { - var renderer = pendingDirtyRenderers[i]; - var parentRenderer = renderer.parentRenderer; - if (parentRenderer && parentRenderer.dirty) continue; - renderer.render(); - } - pendingDirtyRenderers = []; - } - function handleRequestAnimationFrame() { - renderTimer = null; - renderAllPending(); - } - function getRendererForHost(host) { - var renderer = rendererForHostTable.get(host); - if (!renderer) { - renderer = new ShadowRenderer(host); - rendererForHostTable.set(host, renderer); - } - return renderer; - } - function getShadowRootAncestor(node) { - var root = getTreeScope(node).root; - if (root instanceof ShadowRoot) return root; - return null; - } - function getRendererForShadowRoot(shadowRoot) { - return getRendererForHost(shadowRoot.host); - } - var spliceDiff = new ArraySplice(); - spliceDiff.equals = function(renderNode, rawNode) { - return unwrap(renderNode.node) === rawNode; - }; - function RenderNode(node) { - this.skip = false; - this.node = node; - this.childNodes = []; - } - RenderNode.prototype = { - append: function(node) { - var rv = new RenderNode(node); - this.childNodes.push(rv); - return rv; - }, - sync: function(opt_added) { - if (this.skip) return; - var nodeWrapper = this.node; - var newChildren = this.childNodes; - var oldChildren = getChildNodesSnapshot(unwrap(nodeWrapper)); - var added = opt_added || new WeakMap(); - var splices = spliceDiff.calculateSplices(newChildren, oldChildren); - var newIndex = 0, oldIndex = 0; - var lastIndex = 0; - for (var i = 0; i < splices.length; i++) { - var splice = splices[i]; - for (;lastIndex < splice.index; lastIndex++) { - oldIndex++; - newChildren[newIndex++].sync(added); - } - var removedCount = splice.removed.length; - for (var j = 0; j < removedCount; j++) { - var wrapper = wrap(oldChildren[oldIndex++]); - if (!added.get(wrapper)) remove(wrapper); - } - var addedCount = splice.addedCount; - var refNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]); - for (var j = 0; j < addedCount; j++) { - var newChildRenderNode = newChildren[newIndex++]; - var newChildWrapper = newChildRenderNode.node; - insertBefore(nodeWrapper, newChildWrapper, refNode); - added.set(newChildWrapper, true); - newChildRenderNode.sync(added); - } - lastIndex += addedCount; - } - for (var i = lastIndex; i < newChildren.length; i++) { - newChildren[i].sync(added); - } - } - }; - function ShadowRenderer(host) { - this.host = host; - this.dirty = false; - this.invalidateAttributes(); - this.associateNode(host); - } - ShadowRenderer.prototype = { - render: function(opt_renderNode) { - if (!this.dirty) return; - this.invalidateAttributes(); - var host = this.host; - this.distribution(host); - var renderNode = opt_renderNode || new RenderNode(host); - this.buildRenderTree(renderNode, host); - var topMostRenderer = !opt_renderNode; - if (topMostRenderer) renderNode.sync(); - this.dirty = false; - }, - get parentRenderer() { - return getTreeScope(this.host).renderer; - }, - invalidate: function() { - if (!this.dirty) { - this.dirty = true; - var parentRenderer = this.parentRenderer; - if (parentRenderer) parentRenderer.invalidate(); - pendingDirtyRenderers.push(this); - if (renderTimer) return; - renderTimer = window[request](handleRequestAnimationFrame, 0); - } - }, - distribution: function(root) { - this.resetAllSubtrees(root); - this.distributionResolution(root); - }, - resetAll: function(node) { - if (isInsertionPoint(node)) resetDistributedNodes(node); else resetDestinationInsertionPoints(node); - this.resetAllSubtrees(node); - }, - resetAllSubtrees: function(node) { - for (var child = node.firstChild; child; child = child.nextSibling) { - this.resetAll(child); - } - if (node.shadowRoot) this.resetAll(node.shadowRoot); - if (node.olderShadowRoot) this.resetAll(node.olderShadowRoot); - }, - distributionResolution: function(node) { - if (isShadowHost(node)) { - var shadowHost = node; - var pool = poolPopulation(shadowHost); - var shadowTrees = getShadowTrees(shadowHost); - for (var i = 0; i < shadowTrees.length; i++) { - this.poolDistribution(shadowTrees[i], pool); - } - for (var i = shadowTrees.length - 1; i >= 0; i--) { - var shadowTree = shadowTrees[i]; - var shadow = getShadowInsertionPoint(shadowTree); - if (shadow) { - var olderShadowRoot = shadowTree.olderShadowRoot; - if (olderShadowRoot) { - pool = poolPopulation(olderShadowRoot); - } - for (var j = 0; j < pool.length; j++) { - destributeNodeInto(pool[j], shadow); - } - } - this.distributionResolution(shadowTree); - } - } - for (var child = node.firstChild; child; child = child.nextSibling) { - this.distributionResolution(child); - } - }, - poolDistribution: function(node, pool) { - if (node instanceof HTMLShadowElement) return; - if (node instanceof HTMLContentElement) { - var content = node; - this.updateDependentAttributes(content.getAttribute("select")); - var anyDistributed = false; - for (var i = 0; i < pool.length; i++) { - var node = pool[i]; - if (!node) continue; - if (matches(node, content)) { - destributeNodeInto(node, content); - pool[i] = undefined; - anyDistributed = true; - } - } - if (!anyDistributed) { - for (var child = content.firstChild; child; child = child.nextSibling) { - destributeNodeInto(child, content); - } - } - return; - } - for (var child = node.firstChild; child; child = child.nextSibling) { - this.poolDistribution(child, pool); - } - }, - buildRenderTree: function(renderNode, node) { - var children = this.compose(node); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var childRenderNode = renderNode.append(child); - this.buildRenderTree(childRenderNode, child); - } - if (isShadowHost(node)) { - var renderer = getRendererForHost(node); - renderer.dirty = false; - } - }, - compose: function(node) { - var children = []; - var p = node.shadowRoot || node; - for (var child = p.firstChild; child; child = child.nextSibling) { - if (isInsertionPoint(child)) { - this.associateNode(p); - var distributedNodes = getDistributedNodes(child); - for (var j = 0; j < distributedNodes.length; j++) { - var distributedNode = distributedNodes[j]; - if (isFinalDestination(child, distributedNode)) children.push(distributedNode); - } - } else { - children.push(child); - } - } - return children; - }, - invalidateAttributes: function() { - this.attributes = Object.create(null); - }, - updateDependentAttributes: function(selector) { - if (!selector) return; - var attributes = this.attributes; - if (/\.\w+/.test(selector)) attributes["class"] = true; - if (/#\w+/.test(selector)) attributes["id"] = true; - selector.replace(/\[\s*([^\s=\|~\]]+)/g, function(_, name) { - attributes[name] = true; - }); - }, - dependsOnAttribute: function(name) { - return this.attributes[name]; - }, - associateNode: function(node) { - unsafeUnwrap(node).polymerShadowRenderer_ = this; - } - }; - function poolPopulation(node) { - var pool = []; - for (var child = node.firstChild; child; child = child.nextSibling) { - if (isInsertionPoint(child)) { - pool.push.apply(pool, getDistributedNodes(child)); - } else { - pool.push(child); - } - } - return pool; - } - function getShadowInsertionPoint(node) { - if (node instanceof HTMLShadowElement) return node; - if (node instanceof HTMLContentElement) return null; - for (var child = node.firstChild; child; child = child.nextSibling) { - var res = getShadowInsertionPoint(child); - if (res) return res; - } - return null; - } - function destributeNodeInto(child, insertionPoint) { - getDistributedNodes(insertionPoint).push(child); - var points = destinationInsertionPointsTable.get(child); - if (!points) destinationInsertionPointsTable.set(child, [ insertionPoint ]); else points.push(insertionPoint); - } - function getDestinationInsertionPoints(node) { - return destinationInsertionPointsTable.get(node); - } - function resetDestinationInsertionPoints(node) { - destinationInsertionPointsTable.set(node, undefined); - } - var selectorStartCharRe = /^(:not\()?[*.#[a-zA-Z_|]/; - function matches(node, contentElement) { - var select = contentElement.getAttribute("select"); - if (!select) return true; - select = select.trim(); - if (!select) return true; - if (!(node instanceof Element)) return false; - if (!selectorStartCharRe.test(select)) return false; - try { - return node.matches(select); - } catch (ex) { - return false; - } - } - function isFinalDestination(insertionPoint, node) { - var points = getDestinationInsertionPoints(node); - return points && points[points.length - 1] === insertionPoint; - } - function isInsertionPoint(node) { - return node instanceof HTMLContentElement || node instanceof HTMLShadowElement; - } - function isShadowHost(shadowHost) { - return shadowHost.shadowRoot; - } - function getShadowTrees(host) { - var trees = []; - for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) { - trees.push(tree); - } - return trees; - } - function render(host) { - new ShadowRenderer(host).render(); - } - Node.prototype.invalidateShadowRenderer = function(force) { - var renderer = unsafeUnwrap(this).polymerShadowRenderer_; - if (renderer) { - renderer.invalidate(); - return true; - } - return false; - }; - HTMLContentElement.prototype.getDistributedNodes = HTMLShadowElement.prototype.getDistributedNodes = function() { - renderAllPending(); - return getDistributedNodes(this); - }; - Element.prototype.getDestinationInsertionPoints = function() { - renderAllPending(); - return getDestinationInsertionPoints(this) || []; - }; - HTMLContentElement.prototype.nodeIsInserted_ = HTMLShadowElement.prototype.nodeIsInserted_ = function() { - this.invalidateShadowRenderer(); - var shadowRoot = getShadowRootAncestor(this); - var renderer; - if (shadowRoot) renderer = getRendererForShadowRoot(shadowRoot); - unsafeUnwrap(this).polymerShadowRenderer_ = renderer; - if (renderer) renderer.invalidate(); - }; - scope.getRendererForHost = getRendererForHost; - scope.getShadowTrees = getShadowTrees; - scope.renderAllPending = renderAllPending; - scope.getDestinationInsertionPoints = getDestinationInsertionPoints; - scope.visual = { - insertBefore: insertBefore, - remove: remove - }; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var assert = scope.assert; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var elementsWithFormProperty = [ "HTMLButtonElement", "HTMLFieldSetElement", "HTMLInputElement", "HTMLKeygenElement", "HTMLLabelElement", "HTMLLegendElement", "HTMLObjectElement", "HTMLOutputElement", "HTMLTextAreaElement" ]; - function createWrapperConstructor(name) { - if (!window[name]) return; - assert(!scope.wrappers[name]); - var GeneratedWrapper = function(node) { - HTMLElement.call(this, node); - }; - GeneratedWrapper.prototype = Object.create(HTMLElement.prototype); - mixin(GeneratedWrapper.prototype, { - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(window[name], GeneratedWrapper, document.createElement(name.slice(4, -7))); - scope.wrappers[name] = GeneratedWrapper; - } - elementsWithFormProperty.forEach(createWrapperConstructor); -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalSelection = window.Selection; - function Selection(impl) { - setWrapper(impl, this); - } - Selection.prototype = { - get anchorNode() { - return wrap(unsafeUnwrap(this).anchorNode); - }, - get focusNode() { - return wrap(unsafeUnwrap(this).focusNode); - }, - addRange: function(range) { - unsafeUnwrap(this).addRange(unwrapIfNeeded(range)); - }, - collapse: function(node, index) { - unsafeUnwrap(this).collapse(unwrapIfNeeded(node), index); - }, - containsNode: function(node, allowPartial) { - return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial); - }, - getRangeAt: function(index) { - return wrap(unsafeUnwrap(this).getRangeAt(index)); - }, - removeRange: function(range) { - unsafeUnwrap(this).removeRange(unwrap(range)); - }, - selectAllChildren: function(node) { - unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot ? unsafeUnwrap(node.host) : unwrapIfNeeded(node)); - }, - toString: function() { - return unsafeUnwrap(this).toString(); - } - }; - if (OriginalSelection.prototype.extend) { - Selection.prototype.extend = function(node, offset) { - unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); - }; - } - registerWrapper(window.Selection, Selection, window.getSelection()); - scope.wrappers.Selection = Selection; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalTreeWalker = window.TreeWalker; - function TreeWalker(impl) { - setWrapper(impl, this); - } - TreeWalker.prototype = { - get root() { - return wrap(unsafeUnwrap(this).root); - }, - get currentNode() { - return wrap(unsafeUnwrap(this).currentNode); - }, - set currentNode(node) { - unsafeUnwrap(this).currentNode = unwrapIfNeeded(node); - }, - get filter() { - return unsafeUnwrap(this).filter; - }, - parentNode: function() { - return wrap(unsafeUnwrap(this).parentNode()); - }, - firstChild: function() { - return wrap(unsafeUnwrap(this).firstChild()); - }, - lastChild: function() { - return wrap(unsafeUnwrap(this).lastChild()); - }, - previousSibling: function() { - return wrap(unsafeUnwrap(this).previousSibling()); - }, - previousNode: function() { - return wrap(unsafeUnwrap(this).previousNode()); - }, - nextNode: function() { - return wrap(unsafeUnwrap(this).nextNode()); - } - }; - registerWrapper(OriginalTreeWalker, TreeWalker); - scope.wrappers.TreeWalker = TreeWalker; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var GetElementsByInterface = scope.GetElementsByInterface; - var Node = scope.wrappers.Node; - var ParentNodeInterface = scope.ParentNodeInterface; - var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; - var Selection = scope.wrappers.Selection; - var SelectorsInterface = scope.SelectorsInterface; - var ShadowRoot = scope.wrappers.ShadowRoot; - var TreeScope = scope.TreeScope; - var cloneNode = scope.cloneNode; - var defineGetter = scope.defineGetter; - var defineWrapGetter = scope.defineWrapGetter; - var elementFromPoint = scope.elementFromPoint; - var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; - var matchesNames = scope.matchesNames; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var renderAllPending = scope.renderAllPending; - var rewrap = scope.rewrap; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrapEventTargetMethods = scope.wrapEventTargetMethods; - var wrapNodeList = scope.wrapNodeList; - var implementationTable = new WeakMap(); - function Document(node) { - Node.call(this, node); - this.treeScope_ = new TreeScope(this, null); - } - Document.prototype = Object.create(Node.prototype); - defineWrapGetter(Document, "documentElement"); - defineWrapGetter(Document, "body"); - defineWrapGetter(Document, "head"); - defineGetter(Document, "activeElement", function() { - var unwrappedActiveElement = unwrap(this).activeElement; - if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null; - var activeElement = wrap(unwrappedActiveElement); - while (!this.contains(activeElement)) { - while (activeElement.parentNode) { - activeElement = activeElement.parentNode; - } - if (activeElement.host) { - activeElement = activeElement.host; - } else { - return null; - } - } - return activeElement; - }); - function wrapMethod(name) { - var original = document[name]; - Document.prototype[name] = function() { - return wrap(original.apply(unsafeUnwrap(this), arguments)); - }; - } - [ "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wrapMethod); - var originalAdoptNode = document.adoptNode; - function adoptNodeNoRemove(node, doc) { - originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); - adoptSubtree(node, doc); - } - function adoptSubtree(node, doc) { - if (node.shadowRoot) doc.adoptNode(node.shadowRoot); - if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc); - for (var child = node.firstChild; child; child = child.nextSibling) { - adoptSubtree(child, doc); - } - } - function adoptOlderShadowRoots(shadowRoot, doc) { - var oldShadowRoot = shadowRoot.olderShadowRoot; - if (oldShadowRoot) doc.adoptNode(oldShadowRoot); - } - var originalGetSelection = document.getSelection; - mixin(Document.prototype, { - adoptNode: function(node) { - if (node.parentNode) node.parentNode.removeChild(node); - adoptNodeNoRemove(node, this); - return node; - }, - elementFromPoint: function(x, y) { - return elementFromPoint(this, this, x, y); - }, - importNode: function(node, deep) { - return cloneNode(node, deep, unsafeUnwrap(this)); - }, - getSelection: function() { - renderAllPending(); - return new Selection(originalGetSelection.call(unwrap(this))); - }, - getElementsByName: function(name) { - return SelectorsInterface.querySelectorAll.call(this, "[name=" + JSON.stringify(String(name)) + "]"); - } - }); - var originalCreateTreeWalker = document.createTreeWalker; - var TreeWalkerWrapper = scope.wrappers.TreeWalker; - Document.prototype.createTreeWalker = function(root, whatToShow, filter, expandEntityReferences) { - var newFilter = null; - if (filter) { - if (filter.acceptNode && typeof filter.acceptNode === "function") { - newFilter = { - acceptNode: function(node) { - return filter.acceptNode(wrap(node)); - } - }; - } else if (typeof filter === "function") { - newFilter = function(node) { - return filter(wrap(node)); - }; - } - } - return new TreeWalkerWrapper(originalCreateTreeWalker.call(unwrap(this), unwrap(root), whatToShow, newFilter, expandEntityReferences)); - }; - if (document.registerElement) { - var originalRegisterElement = document.registerElement; - Document.prototype.registerElement = function(tagName, object) { - var prototype, extendsOption; - if (object !== undefined) { - prototype = object.prototype; - extendsOption = object.extends; - } - if (!prototype) prototype = Object.create(HTMLElement.prototype); - if (scope.nativePrototypeTable.get(prototype)) { - throw new Error("NotSupportedError"); - } - var proto = Object.getPrototypeOf(prototype); - var nativePrototype; - var prototypes = []; - while (proto) { - nativePrototype = scope.nativePrototypeTable.get(proto); - if (nativePrototype) break; - prototypes.push(proto); - proto = Object.getPrototypeOf(proto); - } - if (!nativePrototype) { - throw new Error("NotSupportedError"); - } - var newPrototype = Object.create(nativePrototype); - for (var i = prototypes.length - 1; i >= 0; i--) { - newPrototype = Object.create(newPrototype); - } - [ "createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback" ].forEach(function(name) { - var f = prototype[name]; - if (!f) return; - newPrototype[name] = function() { - if (!(wrap(this) instanceof CustomElementConstructor)) { - rewrap(this); - } - f.apply(wrap(this), arguments); - }; - }); - var p = { - prototype: newPrototype - }; - if (extendsOption) p.extends = extendsOption; - function CustomElementConstructor(node) { - if (!node) { - if (extendsOption) { - return document.createElement(extendsOption, tagName); - } else { - return document.createElement(tagName); - } - } - setWrapper(node, this); - } - CustomElementConstructor.prototype = prototype; - CustomElementConstructor.prototype.constructor = CustomElementConstructor; - scope.constructorTable.set(newPrototype, CustomElementConstructor); - scope.nativePrototypeTable.set(prototype, newPrototype); - var nativeConstructor = originalRegisterElement.call(unwrap(this), tagName, p); - return CustomElementConstructor; - }; - forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "registerElement" ]); - } - forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ]); - forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement ], matchesNames); - forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getElementsByName", "getSelection" ]); - mixin(Document.prototype, GetElementsByInterface); - mixin(Document.prototype, ParentNodeInterface); - mixin(Document.prototype, SelectorsInterface); - mixin(Document.prototype, NonElementParentNodeInterface); - mixin(Document.prototype, { - get implementation() { - var implementation = implementationTable.get(this); - if (implementation) return implementation; - implementation = new DOMImplementation(unwrap(this).implementation); - implementationTable.set(this, implementation); - return implementation; - }, - get defaultView() { - return wrap(unwrap(this).defaultView); - } - }); - registerWrapper(window.Document, Document, document.implementation.createHTMLDocument("")); - if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document); - wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement ]); - function DOMImplementation(impl) { - setWrapper(impl, this); - } - var originalCreateDocument = document.implementation.createDocument; - DOMImplementation.prototype.createDocument = function() { - arguments[2] = unwrap(arguments[2]); - return wrap(originalCreateDocument.apply(unsafeUnwrap(this), arguments)); - }; - function wrapImplMethod(constructor, name) { - var original = document.implementation[name]; - constructor.prototype[name] = function() { - return wrap(original.apply(unsafeUnwrap(this), arguments)); - }; - } - function forwardImplMethod(constructor, name) { - var original = document.implementation[name]; - constructor.prototype[name] = function() { - return original.apply(unsafeUnwrap(this), arguments); - }; - } - wrapImplMethod(DOMImplementation, "createDocumentType"); - wrapImplMethod(DOMImplementation, "createHTMLDocument"); - forwardImplMethod(DOMImplementation, "hasFeature"); - registerWrapper(window.DOMImplementation, DOMImplementation); - forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocument", "createDocumentType", "createHTMLDocument", "hasFeature" ]); - scope.adoptNodeNoRemove = adoptNodeNoRemove; - scope.wrappers.DOMImplementation = DOMImplementation; - scope.wrappers.Document = Document; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var Selection = scope.wrappers.Selection; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var renderAllPending = scope.renderAllPending; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalWindow = window.Window; - var originalGetComputedStyle = window.getComputedStyle; - var originalGetDefaultComputedStyle = window.getDefaultComputedStyle; - var originalGetSelection = window.getSelection; - function Window(impl) { - EventTarget.call(this, impl); - } - Window.prototype = Object.create(EventTarget.prototype); - OriginalWindow.prototype.getComputedStyle = function(el, pseudo) { - return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo); - }; - if (originalGetDefaultComputedStyle) { - OriginalWindow.prototype.getDefaultComputedStyle = function(el, pseudo) { - return wrap(this || window).getDefaultComputedStyle(unwrapIfNeeded(el), pseudo); - }; - } - OriginalWindow.prototype.getSelection = function() { - return wrap(this || window).getSelection(); - }; - delete window.getComputedStyle; - delete window.getDefaultComputedStyle; - delete window.getSelection; - [ "addEventListener", "removeEventListener", "dispatchEvent" ].forEach(function(name) { - OriginalWindow.prototype[name] = function() { - var w = wrap(this || window); - return w[name].apply(w, arguments); - }; - delete window[name]; - }); - mixin(Window.prototype, { - getComputedStyle: function(el, pseudo) { - renderAllPending(); - return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo); - }, - getSelection: function() { - renderAllPending(); - return new Selection(originalGetSelection.call(unwrap(this))); - }, - get document() { - return wrap(unwrap(this).document); - } - }); - if (originalGetDefaultComputedStyle) { - Window.prototype.getDefaultComputedStyle = function(el, pseudo) { - renderAllPending(); - return originalGetDefaultComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo); - }; - } - registerWrapper(OriginalWindow, Window, window); - scope.wrappers.Window = Window; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var unwrap = scope.unwrap; - var OriginalDataTransfer = window.DataTransfer || window.Clipboard; - var OriginalDataTransferSetDragImage = OriginalDataTransfer.prototype.setDragImage; - if (OriginalDataTransferSetDragImage) { - OriginalDataTransfer.prototype.setDragImage = function(image, x, y) { - OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y); - }; - } -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unwrap = scope.unwrap; - var OriginalFormData = window.FormData; - if (!OriginalFormData) return; - function FormData(formElement) { - var impl; - if (formElement instanceof OriginalFormData) { - impl = formElement; - } else { - impl = new OriginalFormData(formElement && unwrap(formElement)); - } - setWrapper(impl, this); - } - registerWrapper(OriginalFormData, FormData, new OriginalFormData()); - scope.wrappers.FormData = FormData; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var originalSend = XMLHttpRequest.prototype.send; - XMLHttpRequest.prototype.send = function(obj) { - return originalSend.call(this, unwrapIfNeeded(obj)); - }; -})(window.ShadowDOMPolyfill); - -(function(scope) { - "use strict"; - var isWrapperFor = scope.isWrapperFor; - var elements = { - a: "HTMLAnchorElement", - area: "HTMLAreaElement", - audio: "HTMLAudioElement", - base: "HTMLBaseElement", - body: "HTMLBodyElement", - br: "HTMLBRElement", - button: "HTMLButtonElement", - canvas: "HTMLCanvasElement", - caption: "HTMLTableCaptionElement", - col: "HTMLTableColElement", - content: "HTMLContentElement", - data: "HTMLDataElement", - datalist: "HTMLDataListElement", - del: "HTMLModElement", - dir: "HTMLDirectoryElement", - div: "HTMLDivElement", - dl: "HTMLDListElement", - embed: "HTMLEmbedElement", - fieldset: "HTMLFieldSetElement", - font: "HTMLFontElement", - form: "HTMLFormElement", - frame: "HTMLFrameElement", - frameset: "HTMLFrameSetElement", - h1: "HTMLHeadingElement", - head: "HTMLHeadElement", - hr: "HTMLHRElement", - html: "HTMLHtmlElement", - iframe: "HTMLIFrameElement", - img: "HTMLImageElement", - input: "HTMLInputElement", - keygen: "HTMLKeygenElement", - label: "HTMLLabelElement", - legend: "HTMLLegendElement", - li: "HTMLLIElement", - link: "HTMLLinkElement", - map: "HTMLMapElement", - marquee: "HTMLMarqueeElement", - menu: "HTMLMenuElement", - menuitem: "HTMLMenuItemElement", - meta: "HTMLMetaElement", - meter: "HTMLMeterElement", - object: "HTMLObjectElement", - ol: "HTMLOListElement", - optgroup: "HTMLOptGroupElement", - option: "HTMLOptionElement", - output: "HTMLOutputElement", - p: "HTMLParagraphElement", - param: "HTMLParamElement", - pre: "HTMLPreElement", - progress: "HTMLProgressElement", - q: "HTMLQuoteElement", - script: "HTMLScriptElement", - select: "HTMLSelectElement", - shadow: "HTMLShadowElement", - source: "HTMLSourceElement", - span: "HTMLSpanElement", - style: "HTMLStyleElement", - table: "HTMLTableElement", - tbody: "HTMLTableSectionElement", - template: "HTMLTemplateElement", - textarea: "HTMLTextAreaElement", - thead: "HTMLTableSectionElement", - time: "HTMLTimeElement", - title: "HTMLTitleElement", - tr: "HTMLTableRowElement", - track: "HTMLTrackElement", - ul: "HTMLUListElement", - video: "HTMLVideoElement" - }; - function overrideConstructor(tagName) { - var nativeConstructorName = elements[tagName]; - var nativeConstructor = window[nativeConstructorName]; - if (!nativeConstructor) return; - var element = document.createElement(tagName); - var wrapperConstructor = element.constructor; - window[nativeConstructorName] = wrapperConstructor; - } - Object.keys(elements).forEach(overrideConstructor); - Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) { - window[name] = scope.wrappers[name]; - }); -})(window.ShadowDOMPolyfill); \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/webcomponents-lite.js b/dashboard-ui/bower_components/webcomponentsjs/webcomponents-lite.js deleted file mode 100644 index 44059a5b7b..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/webcomponents-lite.js +++ /dev/null @@ -1,2505 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -(function() { - window.WebComponents = window.WebComponents || { - flags: {} - }; - var file = "webcomponents-lite.js"; - var script = document.querySelector('script[src*="' + file + '"]'); - var flags = {}; - if (!flags.noOpts) { - location.search.slice(1).split("&").forEach(function(option) { - var parts = option.split("="); - var match; - if (parts[0] && (match = parts[0].match(/wc-(.+)/))) { - flags[match[1]] = parts[1] || true; - } - }); - if (script) { - for (var i = 0, a; a = script.attributes[i]; i++) { - if (a.name !== "src") { - flags[a.name] = a.value || true; - } - } - } - if (flags.log && flags.log.split) { - var parts = flags.log.split(","); - flags.log = {}; - parts.forEach(function(f) { - flags.log[f] = true; - }); - } else { - flags.log = {}; - } - } - if (flags.register) { - window.CustomElements = window.CustomElements || { - flags: {} - }; - window.CustomElements.flags.register = flags.register; - } - WebComponents.flags = flags; -})(); - -(function(scope) { - "use strict"; - var hasWorkingUrl = false; - if (!scope.forceJURL) { - try { - var u = new URL("b", "http://a"); - u.pathname = "c%20d"; - hasWorkingUrl = u.href === "http://a/c%20d"; - } catch (e) {} - } - if (hasWorkingUrl) return; - var relative = Object.create(null); - relative["ftp"] = 21; - relative["file"] = 0; - relative["gopher"] = 70; - relative["http"] = 80; - relative["https"] = 443; - relative["ws"] = 80; - relative["wss"] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping["%2e"] = "."; - relativePathDotMapping[".%2e"] = ".."; - relativePathDotMapping["%2e."] = ".."; - relativePathDotMapping["%2e%2e"] = ".."; - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - function invalid() { - clear.call(this); - this._isInvalid = true; - } - function IDNAToASCII(h) { - if ("" == h) { - invalid.call(this); - } - return h.toLowerCase(); - } - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 63, 96 ].indexOf(unicode) == -1) { - return c; - } - return encodeURIComponent(c); - } - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 96 ].indexOf(unicode) == -1) { - return c; - } - return encodeURIComponent(c); - } - var EOF = undefined, ALPHA = /[a-zA-Z]/, ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - var state = stateOverride || "scheme start", cursor = 0, buffer = "", seenAt = false, seenBracket = false, errors = []; - loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case "scheme start": - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = "scheme"; - } else if (!stateOverride) { - buffer = ""; - state = "no scheme"; - continue; - } else { - err("Invalid scheme."); - break loop; - } - break; - - case "scheme": - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (":" == c) { - this._scheme = buffer; - buffer = ""; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if ("file" == this._scheme) { - state = "relative"; - } else if (this._isRelative && base && base._scheme == this._scheme) { - state = "relative or authority"; - } else if (this._isRelative) { - state = "authority first slash"; - } else { - state = "scheme data"; - } - } else if (!stateOverride) { - buffer = ""; - cursor = 0; - state = "no scheme"; - continue; - } else if (EOF == c) { - break loop; - } else { - err("Code point not allowed in scheme: " + c); - break loop; - } - break; - - case "scheme data": - if ("?" == c) { - this._query = "?"; - state = "query"; - } else if ("#" == c) { - this._fragment = "#"; - state = "fragment"; - } else { - if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._schemeData += percentEscape(c); - } - } - break; - - case "no scheme": - if (!base || !isRelativeScheme(base._scheme)) { - err("Missing scheme."); - invalid.call(this); - } else { - state = "relative"; - continue; - } - break; - - case "relative or authority": - if ("/" == c && "/" == input[cursor + 1]) { - state = "authority ignore slashes"; - } else { - err("Expected /, got: " + c); - state = "relative"; - continue; - } - break; - - case "relative": - this._isRelative = true; - if ("file" != this._scheme) this._scheme = base._scheme; - if (EOF == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if ("/" == c || "\\" == c) { - if ("\\" == c) err("\\ is an invalid code point."); - state = "relative slash"; - } else if ("?" == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = "?"; - this._username = base._username; - this._password = base._password; - state = "query"; - } else if ("#" == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = "#"; - this._username = base._username; - this._password = base._password; - state = "fragment"; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC != "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != nextNextC && "#" != nextNextC) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = "relative path"; - continue; - } - break; - - case "relative slash": - if ("/" == c || "\\" == c) { - if ("\\" == c) { - err("\\ is an invalid code point."); - } - if ("file" == this._scheme) { - state = "file host"; - } else { - state = "authority ignore slashes"; - } - } else { - if ("file" != this._scheme) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = "relative path"; - continue; - } - break; - - case "authority first slash": - if ("/" == c) { - state = "authority second slash"; - } else { - err("Expected '/', got: " + c); - state = "authority ignore slashes"; - continue; - } - break; - - case "authority second slash": - state = "authority ignore slashes"; - if ("/" != c) { - err("Expected '/', got: " + c); - continue; - } - break; - - case "authority ignore slashes": - if ("/" != c && "\\" != c) { - state = "authority"; - continue; - } else { - err("Expected authority, got: " + c); - } - break; - - case "authority": - if ("@" == c) { - if (seenAt) { - err("@ already seen."); - buffer += "%40"; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if (" " == cp || "\n" == cp || "\r" == cp) { - err("Invalid whitespace in authority."); - continue; - } - if (":" == cp && null === this._password) { - this._password = ""; - continue; - } - var tempC = percentEscape(cp); - null !== this._password ? this._password += tempC : this._username += tempC; - } - buffer = ""; - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - cursor -= buffer.length; - buffer = ""; - state = "host"; - continue; - } else { - buffer += c; - } - break; - - case "file host": - if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" || buffer[1] == "|")) { - state = "relative path"; - } else if (buffer.length == 0) { - state = "relative path start"; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "relative path start"; - } - continue; - } else if (" " == c || "\n" == c || "\r" == c) { - err("Invalid whitespace in file host."); - } else { - buffer += c; - } - break; - - case "host": - case "hostname": - if (":" == c && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "port"; - if ("hostname" == stateOverride) { - break loop; - } - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "relative path start"; - if (stateOverride) { - break loop; - } - continue; - } else if (" " != c && "\n" != c && "\r" != c) { - if ("[" == c) { - seenBracket = true; - } else if ("]" == c) { - seenBracket = false; - } - buffer += c; - } else { - err("Invalid code point in host/hostname: " + c); - } - break; - - case "port": - if (/[0-9]/.test(c)) { - buffer += c; - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c || stateOverride) { - if ("" != buffer) { - var temp = parseInt(buffer, 10); - if (temp != relative[this._scheme]) { - this._port = temp + ""; - } - buffer = ""; - } - if (stateOverride) { - break loop; - } - state = "relative path start"; - continue; - } else if (" " == c || "\n" == c || "\r" == c) { - err("Invalid code point in port: " + c); - } else { - invalid.call(this); - } - break; - - case "relative path start": - if ("\\" == c) err("'\\' not allowed in path."); - state = "relative path"; - if ("/" != c && "\\" != c) { - continue; - } - break; - - case "relative path": - if (EOF == c || "/" == c || "\\" == c || !stateOverride && ("?" == c || "#" == c)) { - if ("\\" == c) { - err("\\ not allowed in relative path."); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if (".." == buffer) { - this._path.pop(); - if ("/" != c && "\\" != c) { - this._path.push(""); - } - } else if ("." == buffer && "/" != c && "\\" != c) { - this._path.push(""); - } else if ("." != buffer) { - if ("file" == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == "|") { - buffer = buffer[0] + ":"; - } - this._path.push(buffer); - } - buffer = ""; - if ("?" == c) { - this._query = "?"; - state = "query"; - } else if ("#" == c) { - this._fragment = "#"; - state = "fragment"; - } - } else if (" " != c && "\n" != c && "\r" != c) { - buffer += percentEscape(c); - } - break; - - case "query": - if (!stateOverride && "#" == c) { - this._fragment = "#"; - state = "fragment"; - } else if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._query += percentEscapeQuery(c); - } - break; - - case "fragment": - if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._fragment += c; - } - break; - } - cursor++; - } - } - function clear() { - this._scheme = ""; - this._schemeData = ""; - this._username = ""; - this._password = null; - this._host = ""; - this._port = ""; - this._path = []; - this._query = ""; - this._fragment = ""; - this._isInvalid = false; - this._isRelative = false; - } - function jURL(url, base) { - if (base !== undefined && !(base instanceof jURL)) base = new jURL(String(base)); - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ""); - parse.call(this, input, null, base); - } - jURL.prototype = { - toString: function() { - return this.href; - }, - get href() { - if (this._isInvalid) return this._url; - var authority = ""; - if ("" != this._username || null != this._password) { - authority = this._username + (null != this._password ? ":" + this._password : "") + "@"; - } - return this.protocol + (this._isRelative ? "//" + authority + this.host : "") + this.pathname + this._query + this._fragment; - }, - set href(href) { - clear.call(this); - parse.call(this, href); - }, - get protocol() { - return this._scheme + ":"; - }, - set protocol(protocol) { - if (this._isInvalid) return; - parse.call(this, protocol + ":", "scheme start"); - }, - get host() { - return this._isInvalid ? "" : this._port ? this._host + ":" + this._port : this._host; - }, - set host(host) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, host, "host"); - }, - get hostname() { - return this._host; - }, - set hostname(hostname) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, hostname, "hostname"); - }, - get port() { - return this._port; - }, - set port(port) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, port, "port"); - }, - get pathname() { - return this._isInvalid ? "" : this._isRelative ? "/" + this._path.join("/") : this._schemeData; - }, - set pathname(pathname) { - if (this._isInvalid || !this._isRelative) return; - this._path = []; - parse.call(this, pathname, "relative path start"); - }, - get search() { - return this._isInvalid || !this._query || "?" == this._query ? "" : this._query; - }, - set search(search) { - if (this._isInvalid || !this._isRelative) return; - this._query = "?"; - if ("?" == search[0]) search = search.slice(1); - parse.call(this, search, "query"); - }, - get hash() { - return this._isInvalid || !this._fragment || "#" == this._fragment ? "" : this._fragment; - }, - set hash(hash) { - if (this._isInvalid) return; - this._fragment = "#"; - if ("#" == hash[0]) hash = hash.slice(1); - parse.call(this, hash, "fragment"); - }, - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ""; - } - switch (this._scheme) { - case "data": - case "file": - case "javascript": - case "mailto": - return "null"; - } - host = this.host; - if (!host) { - return ""; - } - return this._scheme + "://" + host; - } - }; - var OriginalURL = scope.URL; - if (OriginalURL) { - jURL.createObjectURL = function(blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - jURL.revokeObjectURL = function(url) { - OriginalURL.revokeObjectURL(url); - }; - } - scope.URL = jURL; -})(self); - -if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); -} - -(function(global) { - if (global.JsMutationObserver) { - return; - } - var registrationsTable = new WeakMap(); - var setImmediate; - if (/Trident|Edge/.test(navigator.userAgent)) { - setImmediate = setTimeout; - } else if (window.setImmediate) { - setImmediate = window.setImmediate; - } else { - var setImmediateQueue = []; - var sentinel = String(Math.random()); - window.addEventListener("message", function(e) { - if (e.data === sentinel) { - var queue = setImmediateQueue; - setImmediateQueue = []; - queue.forEach(function(func) { - func(); - }); - } - }); - setImmediate = function(func) { - setImmediateQueue.push(func); - window.postMessage(sentinel, "*"); - }; - } - var isScheduled = false; - var scheduledObservers = []; - function scheduleCallback(observer) { - scheduledObservers.push(observer); - if (!isScheduled) { - isScheduled = true; - setImmediate(dispatchCallbacks); - } - } - function wrapIfNeeded(node) { - return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node; - } - function dispatchCallbacks() { - isScheduled = false; - var observers = scheduledObservers; - scheduledObservers = []; - observers.sort(function(o1, o2) { - return o1.uid_ - o2.uid_; - }); - var anyNonEmpty = false; - observers.forEach(function(observer) { - var queue = observer.takeRecords(); - removeTransientObserversFor(observer); - if (queue.length) { - observer.callback_(queue, observer); - anyNonEmpty = true; - } - }); - if (anyNonEmpty) dispatchCallbacks(); - } - function removeTransientObserversFor(observer) { - observer.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - if (!registrations) return; - registrations.forEach(function(registration) { - if (registration.observer === observer) registration.removeTransientObservers(); - }); - }); - } - function forEachAncestorAndObserverEnqueueRecord(target, callback) { - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (registrations) { - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - var record = callback(options); - if (record) registration.enqueue(record); - } - } - } - } - var uidCounter = 0; - function JsMutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - } - JsMutationObserver.prototype = { - observe: function(target, options) { - target = wrapIfNeeded(target); - if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) { - throw new SyntaxError(); - } - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - var registration; - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeListeners(); - registration.options = options; - break; - } - } - if (!registration) { - registration = new Registration(this, target, options); - registrations.push(registration); - this.nodes_.push(target); - } - registration.addListeners(); - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registration.removeListeners(); - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = []; - this.removedNodes = []; - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function copyMutationRecord(original) { - var record = new MutationRecord(original.type, original.target); - record.addedNodes = original.addedNodes.slice(); - record.removedNodes = original.removedNodes.slice(); - record.previousSibling = original.previousSibling; - record.nextSibling = original.nextSibling; - record.attributeName = original.attributeName; - record.attributeNamespace = original.attributeNamespace; - record.oldValue = original.oldValue; - return record; - } - var currentRecord, recordWithOldValue; - function getRecord(type, target) { - return currentRecord = new MutationRecord(type, target); - } - function getRecordWithOldValue(oldValue) { - if (recordWithOldValue) return recordWithOldValue; - recordWithOldValue = copyMutationRecord(currentRecord); - recordWithOldValue.oldValue = oldValue; - return recordWithOldValue; - } - function clearRecords() { - currentRecord = recordWithOldValue = undefined; - } - function recordRepresentsCurrentMutation(record) { - return record === recordWithOldValue || record === currentRecord; - } - function selectRecord(lastRecord, newRecord) { - if (lastRecord === newRecord) return lastRecord; - if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue; - return null; - } - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - enqueue: function(record) { - var records = this.observer.records_; - var length = records.length; - if (records.length > 0) { - var lastRecord = records[length - 1]; - var recordToReplaceLast = selectRecord(lastRecord, record); - if (recordToReplaceLast) { - records[length - 1] = recordToReplaceLast; - return; - } - } else { - scheduleCallback(this.observer); - } - records[length] = record; - }, - addListeners: function() { - this.addListeners_(this.target); - }, - addListeners_: function(node) { - var options = this.options; - if (options.attributes) node.addEventListener("DOMAttrModified", this, true); - if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.addEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true); - }, - removeListeners: function() { - this.removeListeners_(this.target); - }, - removeListeners_: function(node) { - var options = this.options; - if (options.attributes) node.removeEventListener("DOMAttrModified", this, true); - if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.removeEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true); - }, - addTransientObserver: function(node) { - if (node === this.target) return; - this.addListeners_(node); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - transientObservedNodes.forEach(function(node) { - this.removeListeners_(node); - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i] === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - }, - handleEvent: function(e) { - e.stopImmediatePropagation(); - switch (e.type) { - case "DOMAttrModified": - var name = e.attrName; - var namespace = e.relatedNode.namespaceURI; - var target = e.target; - var record = new getRecord("attributes", target); - record.attributeName = name; - record.attributeNamespace = namespace; - var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.attributes) return; - if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) { - return; - } - if (options.attributeOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMCharacterDataModified": - var target = e.target; - var record = getRecord("characterData", target); - var oldValue = e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.characterData) return; - if (options.characterDataOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMNodeRemoved": - this.addTransientObserver(e.target); - - case "DOMNodeInserted": - var changedNode = e.target; - var addedNodes, removedNodes; - if (e.type === "DOMNodeInserted") { - addedNodes = [ changedNode ]; - removedNodes = []; - } else { - addedNodes = []; - removedNodes = [ changedNode ]; - } - var previousSibling = changedNode.previousSibling; - var nextSibling = changedNode.nextSibling; - var record = getRecord("childList", e.target.parentNode); - record.addedNodes = addedNodes; - record.removedNodes = removedNodes; - record.previousSibling = previousSibling; - record.nextSibling = nextSibling; - forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { - if (!options.childList) return; - return record; - }); - } - clearRecords(); - } - }; - global.JsMutationObserver = JsMutationObserver; - if (!global.MutationObserver) { - global.MutationObserver = JsMutationObserver; - JsMutationObserver._isPolyfilled = true; - } -})(self); - -(function() { - var needsTemplate = typeof HTMLTemplateElement === "undefined"; - if (/Trident/.test(navigator.userAgent)) { - (function() { - var importNode = document.importNode; - document.importNode = function() { - var n = importNode.apply(document, arguments); - if (n.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - var f = document.createDocumentFragment(); - f.appendChild(n); - return f; - } else { - return n; - } - }; - })(); - } - var needsCloning = function() { - if (!needsTemplate) { - var t = document.createElement("template"); - var t2 = document.createElement("template"); - t2.content.appendChild(document.createElement("div")); - t.content.appendChild(t2); - var clone = t.cloneNode(true); - return clone.content.childNodes.length === 0 || clone.content.firstChild.content.childNodes.length === 0; - } - }(); - var TEMPLATE_TAG = "template"; - var TemplateImpl = function() {}; - if (needsTemplate) { - var contentDoc = document.implementation.createHTMLDocument("template"); - var canDecorate = true; - var templateStyle = document.createElement("style"); - templateStyle.textContent = TEMPLATE_TAG + "{display:none;}"; - var head = document.head; - head.insertBefore(templateStyle, head.firstElementChild); - TemplateImpl.prototype = Object.create(HTMLElement.prototype); - TemplateImpl.decorate = function(template) { - if (template.content) { - return; - } - template.content = contentDoc.createDocumentFragment(); - var child; - while (child = template.firstChild) { - template.content.appendChild(child); - } - template.cloneNode = function(deep) { - return TemplateImpl.cloneNode(this, deep); - }; - if (canDecorate) { - try { - Object.defineProperty(template, "innerHTML", { - get: function() { - var o = ""; - for (var e = this.content.firstChild; e; e = e.nextSibling) { - o += e.outerHTML || escapeData(e.data); - } - return o; - }, - set: function(text) { - contentDoc.body.innerHTML = text; - TemplateImpl.bootstrap(contentDoc); - while (this.content.firstChild) { - this.content.removeChild(this.content.firstChild); - } - while (contentDoc.body.firstChild) { - this.content.appendChild(contentDoc.body.firstChild); - } - }, - configurable: true - }); - } catch (err) { - canDecorate = false; - } - } - TemplateImpl.bootstrap(template.content); - }; - TemplateImpl.bootstrap = function(doc) { - var templates = doc.querySelectorAll(TEMPLATE_TAG); - for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++) { - TemplateImpl.decorate(t); - } - }; - document.addEventListener("DOMContentLoaded", function() { - TemplateImpl.bootstrap(document); - }); - var createElement = document.createElement; - document.createElement = function() { - "use strict"; - var el = createElement.apply(document, arguments); - if (el.localName === "template") { - TemplateImpl.decorate(el); - } - return el; - }; - var escapeDataRegExp = /[&\u00A0<>]/g; - function escapeReplace(c) { - switch (c) { - case "&": - return "&"; - - case "<": - return "<"; - - case ">": - return ">"; - - case " ": - return " "; - } - } - function escapeData(s) { - return s.replace(escapeDataRegExp, escapeReplace); - } - } - if (needsTemplate || needsCloning) { - var nativeCloneNode = Node.prototype.cloneNode; - TemplateImpl.cloneNode = function(template, deep) { - var clone = nativeCloneNode.call(template, false); - if (this.decorate) { - this.decorate(clone); - } - if (deep) { - clone.content.appendChild(nativeCloneNode.call(template.content, true)); - this.fixClonedDom(clone.content, template.content); - } - return clone; - }; - TemplateImpl.fixClonedDom = function(clone, source) { - if (!source.querySelectorAll) return; - var s$ = source.querySelectorAll(TEMPLATE_TAG); - var t$ = clone.querySelectorAll(TEMPLATE_TAG); - for (var i = 0, l = t$.length, t, s; i < l; i++) { - s = s$[i]; - t = t$[i]; - if (this.decorate) { - this.decorate(s); - } - t.parentNode.replaceChild(s.cloneNode(true), t); - } - }; - var originalImportNode = document.importNode; - Node.prototype.cloneNode = function(deep) { - var dom = nativeCloneNode.call(this, deep); - if (deep) { - TemplateImpl.fixClonedDom(dom, this); - } - return dom; - }; - document.importNode = function(element, deep) { - if (element.localName === TEMPLATE_TAG) { - return TemplateImpl.cloneNode(element, deep); - } else { - var dom = originalImportNode.call(document, element, deep); - if (deep) { - TemplateImpl.fixClonedDom(dom, element); - } - return dom; - } - }; - if (needsCloning) { - HTMLTemplateElement.prototype.cloneNode = function(deep) { - return TemplateImpl.cloneNode(this, deep); - }; - } - } - if (needsTemplate) { - window.HTMLTemplateElement = TemplateImpl; - } -})(); - -(function(scope) { - "use strict"; - if (!window.performance) { - var start = Date.now(); - window.performance = { - now: function() { - return Date.now() - start; - } - }; - } - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = function() { - var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; - return nativeRaf ? function(callback) { - return nativeRaf(function() { - callback(performance.now()); - }); - } : function(callback) { - return window.setTimeout(callback, 1e3 / 60); - }; - }(); - } - if (!window.cancelAnimationFrame) { - window.cancelAnimationFrame = function() { - return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) { - clearTimeout(id); - }; - }(); - } - var workingDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("foo", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!workingDefaultPrevented) { - var origPreventDefault = Event.prototype.preventDefault; - Event.prototype.preventDefault = function() { - if (!this.cancelable) { - return; - } - origPreventDefault.call(this); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - var isIE = /Trident/.test(navigator.userAgent); - if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { - window.CustomEvent = function(inType, params) { - params = params || {}; - var e = document.createEvent("CustomEvent"); - e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail); - return e; - }; - window.CustomEvent.prototype = window.Event.prototype; - } - if (!window.Event || isIE && typeof window.Event !== "function") { - var origEvent = window.Event; - window.Event = function(inType, params) { - params = params || {}; - var e = document.createEvent("Event"); - e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); - return e; - }; - window.Event.prototype = origEvent.prototype; - } -})(window.WebComponents); - -window.HTMLImports = window.HTMLImports || { - flags: {} -}; - -(function(scope) { - var IMPORT_LINK_TYPE = "import"; - var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); - var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); - var wrap = function(node) { - return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node; - }; - var rootDocument = wrap(document); - var currentScriptDescriptor = { - get: function() { - var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null); - return wrap(script); - }, - configurable: true - }; - Object.defineProperty(document, "_currentScript", currentScriptDescriptor); - Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor); - var isIE = /Trident/.test(navigator.userAgent); - function whenReady(callback, doc) { - doc = doc || rootDocument; - whenDocumentReady(function() { - watchImportsLoad(callback, doc); - }, doc); - } - var requiredReadyState = isIE ? "complete" : "interactive"; - var READY_EVENT = "readystatechange"; - function isDocumentReady(doc) { - return doc.readyState === "complete" || doc.readyState === requiredReadyState; - } - function whenDocumentReady(callback, doc) { - if (!isDocumentReady(doc)) { - var checkReady = function() { - if (doc.readyState === "complete" || doc.readyState === requiredReadyState) { - doc.removeEventListener(READY_EVENT, checkReady); - whenDocumentReady(callback, doc); - } - }; - doc.addEventListener(READY_EVENT, checkReady); - } else if (callback) { - callback(); - } - } - function markTargetLoaded(event) { - event.target.__loaded = true; - } - function watchImportsLoad(callback, doc) { - var imports = doc.querySelectorAll("link[rel=import]"); - var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = []; - function checkDone() { - if (parsedCount == importCount && callback) { - callback({ - allImports: imports, - loadedImports: newImports, - errorImports: errorImports - }); - } - } - function loadedImport(e) { - markTargetLoaded(e); - newImports.push(this); - parsedCount++; - checkDone(); - } - function errorLoadingImport(e) { - errorImports.push(this); - parsedCount++; - checkDone(); - } - if (importCount) { - for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { - if (isImportLoaded(imp)) { - newImports.push(this); - parsedCount++; - checkDone(); - } else { - imp.addEventListener("load", loadedImport); - imp.addEventListener("error", errorLoadingImport); - } - } - } else { - checkDone(); - } - } - function isImportLoaded(link) { - return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed; - } - if (useNative) { - new MutationObserver(function(mxns) { - for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) { - if (m.addedNodes) { - handleImports(m.addedNodes); - } - } - }).observe(document.head, { - childList: true - }); - function handleImports(nodes) { - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (isImport(n)) { - handleImport(n); - } - } - } - function isImport(element) { - return element.localName === "link" && element.rel === "import"; - } - function handleImport(element) { - var loaded = element.import; - if (loaded) { - markTargetLoaded({ - target: element - }); - } else { - element.addEventListener("load", markTargetLoaded); - element.addEventListener("error", markTargetLoaded); - } - } - (function() { - if (document.readyState === "loading") { - var imports = document.querySelectorAll("link[rel=import]"); - for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) { - handleImport(imp); - } - } - })(); - } - whenReady(function(detail) { - window.HTMLImports.ready = true; - window.HTMLImports.readyTime = new Date().getTime(); - var evt = rootDocument.createEvent("CustomEvent"); - evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); - rootDocument.dispatchEvent(evt); - }); - scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; - scope.useNative = useNative; - scope.rootDocument = rootDocument; - scope.whenReady = whenReady; - scope.isIE = isIE; -})(window.HTMLImports); - -(function(scope) { - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; -})(window.HTMLImports); - -window.HTMLImports.addModule(function(scope) { - var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; - var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; - var path = { - resolveUrlsInStyle: function(style, linkUrl) { - var doc = style.ownerDocument; - var resolver = doc.createElement("a"); - style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver); - return style; - }, - resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { - var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); - r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); - return r; - }, - replaceUrls: function(text, urlObj, linkUrl, regexp) { - return text.replace(regexp, function(m, pre, url, post) { - var urlPath = url.replace(/["']/g, ""); - if (linkUrl) { - urlPath = new URL(urlPath, linkUrl).href; - } - urlObj.href = urlPath; - urlPath = urlObj.href; - return pre + "'" + urlPath + "'" + post; - }); - } - }; - scope.path = path; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = { - async: true, - ok: function(request) { - return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0; - }, - load: function(url, next, nextContext) { - var request = new XMLHttpRequest(); - if (scope.flags.debug || scope.flags.bust) { - url += "?" + Math.random(); - } - request.open("GET", url, xhr.async); - request.addEventListener("readystatechange", function(e) { - if (request.readyState === 4) { - var redirectedUrl = null; - try { - var locationHeader = request.getResponseHeader("Location"); - if (locationHeader) { - redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader; - } - } catch (e) { - console.error(e.message); - } - next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl); - } - }); - request.send(); - return request; - }, - loadDocument: function(url, next, nextContext) { - this.load(url, next, nextContext).responseType = "document"; - } - }; - scope.xhr = xhr; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = scope.xhr; - var flags = scope.flags; - var Loader = function(onLoad, onComplete) { - this.cache = {}; - this.onload = onLoad; - this.oncomplete = onComplete; - this.inflight = 0; - this.pending = {}; - }; - Loader.prototype = { - addNodes: function(nodes) { - this.inflight += nodes.length; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - this.require(n); - } - this.checkDone(); - }, - addNode: function(node) { - this.inflight++; - this.require(node); - this.checkDone(); - }, - require: function(elt) { - var url = elt.src || elt.href; - elt.__nodeUrl = url; - if (!this.dedupe(url, elt)) { - this.fetch(url, elt); - } - }, - dedupe: function(url, elt) { - if (this.pending[url]) { - this.pending[url].push(elt); - return true; - } - var resource; - if (this.cache[url]) { - this.onload(url, elt, this.cache[url]); - this.tail(); - return true; - } - this.pending[url] = [ elt ]; - return false; - }, - fetch: function(url, elt) { - flags.load && console.log("fetch", url, elt); - if (!url) { - setTimeout(function() { - this.receive(url, elt, { - error: "href must be specified" - }, null); - }.bind(this), 0); - } else if (url.match(/^data:/)) { - var pieces = url.split(","); - var header = pieces[0]; - var body = pieces[1]; - if (header.indexOf(";base64") > -1) { - body = atob(body); - } else { - body = decodeURIComponent(body); - } - setTimeout(function() { - this.receive(url, elt, null, body); - }.bind(this), 0); - } else { - var receiveXhr = function(err, resource, redirectedUrl) { - this.receive(url, elt, err, resource, redirectedUrl); - }.bind(this); - xhr.load(url, receiveXhr); - } - }, - receive: function(url, elt, err, resource, redirectedUrl) { - this.cache[url] = resource; - var $p = this.pending[url]; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - this.onload(url, p, resource, err, redirectedUrl); - this.tail(); - } - this.pending[url] = null; - }, - tail: function() { - --this.inflight; - this.checkDone(); - }, - checkDone: function() { - if (!this.inflight) { - this.oncomplete(); - } - } - }; - scope.Loader = Loader; -}); - -window.HTMLImports.addModule(function(scope) { - var Observer = function(addCallback) { - this.addCallback = addCallback; - this.mo = new MutationObserver(this.handler.bind(this)); - }; - Observer.prototype = { - handler: function(mutations) { - for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) { - if (m.type === "childList" && m.addedNodes.length) { - this.addedNodes(m.addedNodes); - } - } - }, - addedNodes: function(nodes) { - if (this.addCallback) { - this.addCallback(nodes); - } - for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) { - if (n.children && n.children.length) { - this.addedNodes(n.children); - } - } - }, - observe: function(root) { - this.mo.observe(root, { - childList: true, - subtree: true - }); - } - }; - scope.Observer = Observer; -}); - -window.HTMLImports.addModule(function(scope) { - var path = scope.path; - var rootDocument = scope.rootDocument; - var flags = scope.flags; - var isIE = scope.isIE; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; - var importParser = { - documentSelectors: IMPORT_SELECTOR, - importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","), - map: { - link: "parseLink", - script: "parseScript", - style: "parseStyle" - }, - dynamicElements: [], - parseNext: function() { - var next = this.nextToParse(); - if (next) { - this.parse(next); - } - }, - parse: function(elt) { - if (this.isParsed(elt)) { - flags.parse && console.log("[%s] is already parsed", elt.localName); - return; - } - var fn = this[this.map[elt.localName]]; - if (fn) { - this.markParsing(elt); - fn.call(this, elt); - } - }, - parseDynamic: function(elt, quiet) { - this.dynamicElements.push(elt); - if (!quiet) { - this.parseNext(); - } - }, - markParsing: function(elt) { - flags.parse && console.log("parsing", elt); - this.parsingElement = elt; - }, - markParsingComplete: function(elt) { - elt.__importParsed = true; - this.markDynamicParsingComplete(elt); - if (elt.__importElement) { - elt.__importElement.__importParsed = true; - this.markDynamicParsingComplete(elt.__importElement); - } - this.parsingElement = null; - flags.parse && console.log("completed", elt); - }, - markDynamicParsingComplete: function(elt) { - var i = this.dynamicElements.indexOf(elt); - if (i >= 0) { - this.dynamicElements.splice(i, 1); - } - }, - parseImport: function(elt) { - elt.import = elt.__doc; - if (window.HTMLImports.__importsParsingHook) { - window.HTMLImports.__importsParsingHook(elt); - } - if (elt.import) { - elt.import.__importParsed = true; - } - this.markParsingComplete(elt); - if (elt.__resource && !elt.__error) { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - } else { - elt.dispatchEvent(new CustomEvent("error", { - bubbles: false - })); - } - if (elt.__pending) { - var fn; - while (elt.__pending.length) { - fn = elt.__pending.shift(); - if (fn) { - fn({ - target: elt - }); - } - } - } - this.parseNext(); - }, - parseLink: function(linkElt) { - if (nodeIsImport(linkElt)) { - this.parseImport(linkElt); - } else { - linkElt.href = linkElt.href; - this.parseGeneric(linkElt); - } - }, - parseStyle: function(elt) { - var src = elt; - elt = cloneStyle(elt); - src.__appliedElement = elt; - elt.__importElement = src; - this.parseGeneric(elt); - }, - parseGeneric: function(elt) { - this.trackElement(elt); - this.addElementToDocument(elt); - }, - rootImportForElement: function(elt) { - var n = elt; - while (n.ownerDocument.__importLink) { - n = n.ownerDocument.__importLink; - } - return n; - }, - addElementToDocument: function(elt) { - var port = this.rootImportForElement(elt.__importElement || elt); - port.parentNode.insertBefore(elt, port); - }, - trackElement: function(elt, callback) { - var self = this; - var done = function(e) { - elt.removeEventListener("load", done); - elt.removeEventListener("error", done); - if (callback) { - callback(e); - } - self.markParsingComplete(elt); - self.parseNext(); - }; - elt.addEventListener("load", done); - elt.addEventListener("error", done); - if (isIE && elt.localName === "style") { - var fakeLoad = false; - if (elt.textContent.indexOf("@import") == -1) { - fakeLoad = true; - } else if (elt.sheet) { - fakeLoad = true; - var csr = elt.sheet.cssRules; - var len = csr ? csr.length : 0; - for (var i = 0, r; i < len && (r = csr[i]); i++) { - if (r.type === CSSRule.IMPORT_RULE) { - fakeLoad = fakeLoad && Boolean(r.styleSheet); - } - } - } - if (fakeLoad) { - setTimeout(function() { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - }); - } - } - }, - parseScript: function(scriptElt) { - var script = document.createElement("script"); - script.__importElement = scriptElt; - script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt); - scope.currentScript = scriptElt; - this.trackElement(script, function(e) { - if (script.parentNode) { - script.parentNode.removeChild(script); - } - scope.currentScript = null; - }); - this.addElementToDocument(script); - }, - nextToParse: function() { - this._mayParse = []; - return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic()); - }, - nextToParseInDoc: function(doc, link) { - if (doc && this._mayParse.indexOf(doc) < 0) { - this._mayParse.push(doc); - var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!this.isParsed(n)) { - if (this.hasResource(n)) { - return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n; - } else { - return; - } - } - } - } - return link; - }, - nextToParseDynamic: function() { - return this.dynamicElements[0]; - }, - parseSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentSelectors : this.importsSelectors; - }, - isParsed: function(node) { - return node.__importParsed; - }, - needsDynamicParsing: function(elt) { - return this.dynamicElements.indexOf(elt) >= 0; - }, - hasResource: function(node) { - if (nodeIsImport(node) && node.__doc === undefined) { - return false; - } - return true; - } - }; - function nodeIsImport(elt) { - return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; - } - function generateScriptDataUrl(script) { - var scriptContent = generateScriptContent(script); - return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent); - } - function generateScriptContent(script) { - return script.textContent + generateSourceMapHint(script); - } - function generateSourceMapHint(script) { - var owner = script.ownerDocument; - owner.__importedScripts = owner.__importedScripts || 0; - var moniker = script.ownerDocument.baseURI; - var num = owner.__importedScripts ? "-" + owner.__importedScripts : ""; - owner.__importedScripts++; - return "\n//# sourceURL=" + moniker + num + ".js\n"; - } - function cloneStyle(style) { - var clone = style.ownerDocument.createElement("style"); - clone.textContent = style.textContent; - path.resolveUrlsInStyle(clone); - return clone; - } - scope.parser = importParser; - scope.IMPORT_SELECTOR = IMPORT_SELECTOR; -}); - -window.HTMLImports.addModule(function(scope) { - var flags = scope.flags; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; - var rootDocument = scope.rootDocument; - var Loader = scope.Loader; - var Observer = scope.Observer; - var parser = scope.parser; - var importer = { - documents: {}, - documentPreloadSelectors: IMPORT_SELECTOR, - importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","), - loadNode: function(node) { - importLoader.addNode(node); - }, - loadSubtree: function(parent) { - var nodes = this.marshalNodes(parent); - importLoader.addNodes(nodes); - }, - marshalNodes: function(parent) { - return parent.querySelectorAll(this.loadSelectorsForNode(parent)); - }, - loadSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors; - }, - loaded: function(url, elt, resource, err, redirectedUrl) { - flags.load && console.log("loaded", url, elt); - elt.__resource = resource; - elt.__error = err; - if (isImportLink(elt)) { - var doc = this.documents[url]; - if (doc === undefined) { - doc = err ? null : makeDocument(resource, redirectedUrl || url); - if (doc) { - doc.__importLink = elt; - this.bootDocument(doc); - } - this.documents[url] = doc; - } - elt.__doc = doc; - } - parser.parseNext(); - }, - bootDocument: function(doc) { - this.loadSubtree(doc); - this.observer.observe(doc); - parser.parseNext(); - }, - loadedAll: function() { - parser.parseNext(); - } - }; - var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer)); - importer.observer = new Observer(); - function isImportLink(elt) { - return isLinkRel(elt, IMPORT_LINK_TYPE); - } - function isLinkRel(elt, rel) { - return elt.localName === "link" && elt.getAttribute("rel") === rel; - } - function hasBaseURIAccessor(doc) { - return !!Object.getOwnPropertyDescriptor(doc, "baseURI"); - } - function makeDocument(resource, url) { - var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE); - doc._URL = url; - var base = doc.createElement("base"); - base.setAttribute("href", url); - if (!doc.baseURI && !hasBaseURIAccessor(doc)) { - Object.defineProperty(doc, "baseURI", { - value: url - }); - } - var meta = doc.createElement("meta"); - meta.setAttribute("charset", "utf-8"); - doc.head.appendChild(meta); - doc.head.appendChild(base); - doc.body.innerHTML = resource; - if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) { - HTMLTemplateElement.bootstrap(doc); - } - return doc; - } - if (!document.baseURI) { - var baseURIDescriptor = { - get: function() { - var base = document.querySelector("base"); - return base ? base.href : window.location.href; - }, - configurable: true - }; - Object.defineProperty(document, "baseURI", baseURIDescriptor); - Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); - } - scope.importer = importer; - scope.importLoader = importLoader; -}); - -window.HTMLImports.addModule(function(scope) { - var parser = scope.parser; - var importer = scope.importer; - var dynamic = { - added: function(nodes) { - var owner, parsed, loading; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!owner) { - owner = n.ownerDocument; - parsed = parser.isParsed(owner); - } - loading = this.shouldLoadNode(n); - if (loading) { - importer.loadNode(n); - } - if (this.shouldParseNode(n) && parsed) { - parser.parseDynamic(n, loading); - } - } - }, - shouldLoadNode: function(node) { - return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node)); - }, - shouldParseNode: function(node) { - return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node)); - } - }; - importer.observer.addCallback = dynamic.added.bind(dynamic); - var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector; -}); - -(function(scope) { - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (scope.useNative) { - return; - } - initializeModules(); - var rootDocument = scope.rootDocument; - function bootstrap() { - window.HTMLImports.importer.bootDocument(rootDocument); - } - if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) { - bootstrap(); - } else { - document.addEventListener("DOMContentLoaded", bootstrap); - } -})(window.HTMLImports); - -window.CustomElements = window.CustomElements || { - flags: {} -}; - -(function(scope) { - var flags = scope.flags; - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; - scope.hasNative = Boolean(document.registerElement); - scope.isIE = /Trident/.test(navigator.userAgent); - scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative); -})(window.CustomElements); - -window.CustomElements.addModule(function(scope) { - var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none"; - function forSubtree(node, cb) { - findAllElements(node, function(e) { - if (cb(e)) { - return true; - } - forRoots(e, cb); - }); - forRoots(node, cb); - } - function findAllElements(node, find, data) { - var e = node.firstElementChild; - if (!e) { - e = node.firstChild; - while (e && e.nodeType !== Node.ELEMENT_NODE) { - e = e.nextSibling; - } - } - while (e) { - if (find(e, data) !== true) { - findAllElements(e, find, data); - } - e = e.nextElementSibling; - } - return null; - } - function forRoots(node, cb) { - var root = node.shadowRoot; - while (root) { - forSubtree(root, cb); - root = root.olderShadowRoot; - } - } - function forDocumentTree(doc, cb) { - _forDocumentTree(doc, cb, []); - } - function _forDocumentTree(doc, cb, processingDocuments) { - doc = window.wrap(doc); - if (processingDocuments.indexOf(doc) >= 0) { - return; - } - processingDocuments.push(doc); - var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); - for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { - if (n.import) { - _forDocumentTree(n.import, cb, processingDocuments); - } - } - cb(doc); - } - scope.forDocumentTree = forDocumentTree; - scope.forSubtree = forSubtree; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - var forSubtree = scope.forSubtree; - var forDocumentTree = scope.forDocumentTree; - function addedNode(node, isAttached) { - return added(node, isAttached) || addedSubtree(node, isAttached); - } - function added(node, isAttached) { - if (scope.upgrade(node, isAttached)) { - return true; - } - if (isAttached) { - attached(node); - } - } - function addedSubtree(node, isAttached) { - forSubtree(node, function(e) { - if (added(e, isAttached)) { - return true; - } - }); - } - var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["throttle-attached"]; - scope.hasPolyfillMutations = hasThrottledAttached; - scope.hasThrottledAttached = hasThrottledAttached; - var isPendingMutations = false; - var pendingMutations = []; - function deferMutation(fn) { - pendingMutations.push(fn); - if (!isPendingMutations) { - isPendingMutations = true; - setTimeout(takeMutations); - } - } - function takeMutations() { - isPendingMutations = false; - var $p = pendingMutations; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - p(); - } - pendingMutations = []; - } - function attached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _attached(element); - }); - } else { - _attached(element); - } - } - function _attached(element) { - if (element.__upgraded__ && !element.__attached) { - element.__attached = true; - if (element.attachedCallback) { - element.attachedCallback(); - } - } - } - function detachedNode(node) { - detached(node); - forSubtree(node, function(e) { - detached(e); - }); - } - function detached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _detached(element); - }); - } else { - _detached(element); - } - } - function _detached(element) { - if (element.__upgraded__ && element.__attached) { - element.__attached = false; - if (element.detachedCallback) { - element.detachedCallback(); - } - } - } - function inDocument(element) { - var p = element; - var doc = window.wrap(document); - while (p) { - if (p == doc) { - return true; - } - p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; - } - } - function watchShadow(node) { - if (node.shadowRoot && !node.shadowRoot.__watched) { - flags.dom && console.log("watching shadow-root for: ", node.localName); - var root = node.shadowRoot; - while (root) { - observe(root); - root = root.olderShadowRoot; - } - } - } - function handler(root, mutations) { - if (flags.dom) { - var mx = mutations[0]; - if (mx && mx.type === "childList" && mx.addedNodes) { - if (mx.addedNodes) { - var d = mx.addedNodes[0]; - while (d && d !== document && !d.host) { - d = d.parentNode; - } - var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; - u = u.split("/?").shift().split("/").pop(); - } - } - console.group("mutations (%d) [%s]", mutations.length, u || ""); - } - var isAttached = inDocument(root); - mutations.forEach(function(mx) { - if (mx.type === "childList") { - forEach(mx.addedNodes, function(n) { - if (!n.localName) { - return; - } - addedNode(n, isAttached); - }); - forEach(mx.removedNodes, function(n) { - if (!n.localName) { - return; - } - detachedNode(n); - }); - } - }); - flags.dom && console.groupEnd(); - } - function takeRecords(node) { - node = window.wrap(node); - if (!node) { - node = window.wrap(document); - } - while (node.parentNode) { - node = node.parentNode; - } - var observer = node.__observer; - if (observer) { - handler(node, observer.takeRecords()); - takeMutations(); - } - } - var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); - function observe(inRoot) { - if (inRoot.__observer) { - return; - } - var observer = new MutationObserver(handler.bind(this, inRoot)); - observer.observe(inRoot, { - childList: true, - subtree: true - }); - inRoot.__observer = observer; - } - function upgradeDocument(doc) { - doc = window.wrap(doc); - flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()); - var isMainDocument = doc === window.wrap(document); - addedNode(doc, isMainDocument); - observe(doc); - flags.dom && console.groupEnd(); - } - function upgradeDocumentTree(doc) { - forDocumentTree(doc, upgradeDocument); - } - var originalCreateShadowRoot = Element.prototype.createShadowRoot; - if (originalCreateShadowRoot) { - Element.prototype.createShadowRoot = function() { - var root = originalCreateShadowRoot.call(this); - window.CustomElements.watchShadow(this); - return root; - }; - } - scope.watchShadow = watchShadow; - scope.upgradeDocumentTree = upgradeDocumentTree; - scope.upgradeDocument = upgradeDocument; - scope.upgradeSubtree = addedSubtree; - scope.upgradeAll = addedNode; - scope.attached = attached; - scope.takeRecords = takeRecords; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - function upgrade(node, isAttached) { - if (node.localName === "template") { - if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) { - HTMLTemplateElement.decorate(node); - } - } - if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { - var is = node.getAttribute("is"); - var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is); - if (definition) { - if (is && definition.tag == node.localName || !is && !definition.extends) { - return upgradeWithDefinition(node, definition, isAttached); - } - } - } - } - function upgradeWithDefinition(element, definition, isAttached) { - flags.upgrade && console.group("upgrade:", element.localName); - if (definition.is) { - element.setAttribute("is", definition.is); - } - implementPrototype(element, definition); - element.__upgraded__ = true; - created(element); - if (isAttached) { - scope.attached(element); - } - scope.upgradeSubtree(element, isAttached); - flags.upgrade && console.groupEnd(); - return element; - } - function implementPrototype(element, definition) { - if (Object.__proto__) { - element.__proto__ = definition.prototype; - } else { - customMixin(element, definition.prototype, definition.native); - element.__proto__ = definition.prototype; - } - } - function customMixin(inTarget, inSrc, inNative) { - var used = {}; - var p = inSrc; - while (p !== inNative && p !== HTMLElement.prototype) { - var keys = Object.getOwnPropertyNames(p); - for (var i = 0, k; k = keys[i]; i++) { - if (!used[k]) { - Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k)); - used[k] = 1; - } - } - p = Object.getPrototypeOf(p); - } - } - function created(element) { - if (element.createdCallback) { - element.createdCallback(); - } - } - scope.upgrade = upgrade; - scope.upgradeWithDefinition = upgradeWithDefinition; - scope.implementPrototype = implementPrototype; -}); - -window.CustomElements.addModule(function(scope) { - var isIE = scope.isIE; - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeAll = scope.upgradeAll; - var upgradeWithDefinition = scope.upgradeWithDefinition; - var implementPrototype = scope.implementPrototype; - var useNative = scope.useNative; - function register(name, options) { - var definition = options || {}; - if (!name) { - throw new Error("document.registerElement: first argument `name` must not be empty"); - } - if (name.indexOf("-") < 0) { - throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'."); - } - if (isReservedTag(name)) { - throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid."); - } - if (getRegisteredDefinition(name)) { - throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered"); - } - if (!definition.prototype) { - definition.prototype = Object.create(HTMLElement.prototype); - } - definition.__name = name.toLowerCase(); - if (definition.extends) { - definition.extends = definition.extends.toLowerCase(); - } - definition.lifecycle = definition.lifecycle || {}; - definition.ancestry = ancestry(definition.extends); - resolveTagName(definition); - resolvePrototypeChain(definition); - overrideAttributeApi(definition.prototype); - registerDefinition(definition.__name, definition); - definition.ctor = generateConstructor(definition); - definition.ctor.prototype = definition.prototype; - definition.prototype.constructor = definition.ctor; - if (scope.ready) { - upgradeDocumentTree(document); - } - return definition.ctor; - } - function overrideAttributeApi(prototype) { - if (prototype.setAttribute._polyfilled) { - return; - } - var setAttribute = prototype.setAttribute; - prototype.setAttribute = function(name, value) { - changeAttribute.call(this, name, value, setAttribute); - }; - var removeAttribute = prototype.removeAttribute; - prototype.removeAttribute = function(name) { - changeAttribute.call(this, name, null, removeAttribute); - }; - prototype.setAttribute._polyfilled = true; - } - function changeAttribute(name, value, operation) { - name = name.toLowerCase(); - var oldValue = this.getAttribute(name); - operation.apply(this, arguments); - var newValue = this.getAttribute(name); - if (this.attributeChangedCallback && newValue !== oldValue) { - this.attributeChangedCallback(name, oldValue, newValue); - } - } - function isReservedTag(name) { - for (var i = 0; i < reservedTagList.length; i++) { - if (name === reservedTagList[i]) { - return true; - } - } - } - var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ]; - function ancestry(extnds) { - var extendee = getRegisteredDefinition(extnds); - if (extendee) { - return ancestry(extendee.extends).concat([ extendee ]); - } - return []; - } - function resolveTagName(definition) { - var baseTag = definition.extends; - for (var i = 0, a; a = definition.ancestry[i]; i++) { - baseTag = a.is && a.tag; - } - definition.tag = baseTag || definition.__name; - if (baseTag) { - definition.is = definition.__name; - } - } - function resolvePrototypeChain(definition) { - if (!Object.__proto__) { - var nativePrototype = HTMLElement.prototype; - if (definition.is) { - var inst = document.createElement(definition.tag); - nativePrototype = Object.getPrototypeOf(inst); - } - var proto = definition.prototype, ancestor; - var foundPrototype = false; - while (proto) { - if (proto == nativePrototype) { - foundPrototype = true; - } - ancestor = Object.getPrototypeOf(proto); - if (ancestor) { - proto.__proto__ = ancestor; - } - proto = ancestor; - } - if (!foundPrototype) { - console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is); - } - definition.native = nativePrototype; - } - } - function instantiate(definition) { - return upgradeWithDefinition(domCreateElement(definition.tag), definition); - } - var registry = {}; - function getRegisteredDefinition(name) { - if (name) { - return registry[name.toLowerCase()]; - } - } - function registerDefinition(name, definition) { - registry[name] = definition; - } - function generateConstructor(definition) { - return function() { - return instantiate(definition); - }; - } - var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; - function createElementNS(namespace, tag, typeExtension) { - if (namespace === HTML_NAMESPACE) { - return createElement(tag, typeExtension); - } else { - return domCreateElementNS(namespace, tag); - } - } - function createElement(tag, typeExtension) { - if (tag) { - tag = tag.toLowerCase(); - } - if (typeExtension) { - typeExtension = typeExtension.toLowerCase(); - } - var definition = getRegisteredDefinition(typeExtension || tag); - if (definition) { - if (tag == definition.tag && typeExtension == definition.is) { - return new definition.ctor(); - } - if (!typeExtension && !definition.is) { - return new definition.ctor(); - } - } - var element; - if (typeExtension) { - element = createElement(tag); - element.setAttribute("is", typeExtension); - return element; - } - element = domCreateElement(tag); - if (tag.indexOf("-") >= 0) { - implementPrototype(element, HTMLElement); - } - return element; - } - var domCreateElement = document.createElement.bind(document); - var domCreateElementNS = document.createElementNS.bind(document); - var isInstance; - if (!Object.__proto__ && !useNative) { - isInstance = function(obj, ctor) { - if (obj instanceof ctor) { - return true; - } - var p = obj; - while (p) { - if (p === ctor.prototype) { - return true; - } - p = p.__proto__; - } - return false; - }; - } else { - isInstance = function(obj, base) { - return obj instanceof base; - }; - } - function wrapDomMethodToForceUpgrade(obj, methodName) { - var orig = obj[methodName]; - obj[methodName] = function() { - var n = orig.apply(this, arguments); - upgradeAll(n); - return n; - }; - } - wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); - wrapDomMethodToForceUpgrade(document, "importNode"); - document.registerElement = register; - document.createElement = createElement; - document.createElementNS = createElementNS; - scope.registry = registry; - scope.instanceof = isInstance; - scope.reservedTagList = reservedTagList; - scope.getRegisteredDefinition = getRegisteredDefinition; - document.register = document.registerElement; -}); - -(function(scope) { - var useNative = scope.useNative; - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (useNative) { - var nop = function() {}; - scope.watchShadow = nop; - scope.upgrade = nop; - scope.upgradeAll = nop; - scope.upgradeDocumentTree = nop; - scope.upgradeSubtree = nop; - scope.takeRecords = nop; - scope.instanceof = function(obj, base) { - return obj instanceof base; - }; - } else { - initializeModules(); - } - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeDocument = scope.upgradeDocument; - if (!window.wrap) { - if (window.ShadowDOMPolyfill) { - window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; - window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; - } else { - window.wrap = window.unwrap = function(node) { - return node; - }; - } - } - if (window.HTMLImports) { - window.HTMLImports.__importsParsingHook = function(elt) { - if (elt.import) { - upgradeDocument(wrap(elt.import)); - } - }; - } - function bootstrap() { - upgradeDocumentTree(window.wrap(document)); - window.CustomElements.ready = true; - var requestAnimationFrame = window.requestAnimationFrame || function(f) { - setTimeout(f, 16); - }; - requestAnimationFrame(function() { - setTimeout(function() { - window.CustomElements.readyTime = Date.now(); - if (window.HTMLImports) { - window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime; - } - document.dispatchEvent(new CustomEvent("WebComponentsReady", { - bubbles: true - })); - }); - }); - } - if (document.readyState === "complete" || scope.flags.eager) { - bootstrap(); - } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) { - bootstrap(); - } else { - var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded"; - window.addEventListener(loadEvent, bootstrap); - } -})(window.CustomElements); - -(function(scope) { - var style = document.createElement("style"); - style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " } \n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; position: relative;" + " } \n"; - var head = document.querySelector("head"); - head.insertBefore(style, head.firstChild); -})(window.WebComponents); \ No newline at end of file diff --git a/dashboard-ui/bower_components/webcomponentsjs/webcomponents.js b/dashboard-ui/bower_components/webcomponentsjs/webcomponents.js deleted file mode 100644 index f363c0e14c..0000000000 --- a/dashboard-ui/bower_components/webcomponentsjs/webcomponents.js +++ /dev/null @@ -1,7206 +0,0 @@ -/** - * @license - * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -// @version 0.7.22 -(function() { - window.WebComponents = window.WebComponents || { - flags: {} - }; - var file = "webcomponents.js"; - var script = document.querySelector('script[src*="' + file + '"]'); - var flags = {}; - if (!flags.noOpts) { - location.search.slice(1).split("&").forEach(function(option) { - var parts = option.split("="); - var match; - if (parts[0] && (match = parts[0].match(/wc-(.+)/))) { - flags[match[1]] = parts[1] || true; - } - }); - if (script) { - for (var i = 0, a; a = script.attributes[i]; i++) { - if (a.name !== "src") { - flags[a.name] = a.value || true; - } - } - } - if (flags.log && flags.log.split) { - var parts = flags.log.split(","); - flags.log = {}; - parts.forEach(function(f) { - flags.log[f] = true; - }); - } else { - flags.log = {}; - } - } - flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill; - if (flags.shadow === "native") { - flags.shadow = false; - } else { - flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot; - } - if (flags.register) { - window.CustomElements = window.CustomElements || { - flags: {} - }; - window.CustomElements.flags.register = flags.register; - } - WebComponents.flags = flags; -})(); - -if (WebComponents.flags.shadow) { - if (typeof WeakMap === "undefined") { - (function() { - var defineProperty = Object.defineProperty; - var counter = Date.now() % 1e9; - var WeakMap = function() { - this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); - }; - WeakMap.prototype = { - set: function(key, value) { - var entry = key[this.name]; - if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, { - value: [ key, value ], - writable: true - }); - return this; - }, - get: function(key) { - var entry; - return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined; - }, - "delete": function(key) { - var entry = key[this.name]; - if (!entry || entry[0] !== key) return false; - entry[0] = entry[1] = undefined; - return true; - }, - has: function(key) { - var entry = key[this.name]; - if (!entry) return false; - return entry[0] === key; - } - }; - window.WeakMap = WeakMap; - })(); - } - window.ShadowDOMPolyfill = {}; - (function(scope) { - "use strict"; - var constructorTable = new WeakMap(); - var nativePrototypeTable = new WeakMap(); - var wrappers = Object.create(null); - function detectEval() { - if (typeof chrome !== "undefined" && chrome.app && chrome.app.runtime) { - return false; - } - if (navigator.getDeviceStorage) { - return false; - } - try { - var f = new Function("return true;"); - return f(); - } catch (ex) { - return false; - } - } - var hasEval = detectEval(); - function assert(b) { - if (!b) throw new Error("Assertion failed"); - } - var defineProperty = Object.defineProperty; - var getOwnPropertyNames = Object.getOwnPropertyNames; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - function mixin(to, from) { - var names = getOwnPropertyNames(from); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - defineProperty(to, name, getOwnPropertyDescriptor(from, name)); - } - return to; - } - function mixinStatics(to, from) { - var names = getOwnPropertyNames(from); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - switch (name) { - case "arguments": - case "caller": - case "length": - case "name": - case "prototype": - case "toString": - continue; - } - defineProperty(to, name, getOwnPropertyDescriptor(from, name)); - } - return to; - } - function oneOf(object, propertyNames) { - for (var i = 0; i < propertyNames.length; i++) { - if (propertyNames[i] in object) return propertyNames[i]; - } - } - var nonEnumerableDataDescriptor = { - value: undefined, - configurable: true, - enumerable: false, - writable: true - }; - function defineNonEnumerableDataProperty(object, name, value) { - nonEnumerableDataDescriptor.value = value; - defineProperty(object, name, nonEnumerableDataDescriptor); - } - getOwnPropertyNames(window); - function getWrapperConstructor(node, opt_instance) { - var nativePrototype = node.__proto__ || Object.getPrototypeOf(node); - if (isFirefox) { - try { - getOwnPropertyNames(nativePrototype); - } catch (error) { - nativePrototype = nativePrototype.__proto__; - } - } - var wrapperConstructor = constructorTable.get(nativePrototype); - if (wrapperConstructor) return wrapperConstructor; - var parentWrapperConstructor = getWrapperConstructor(nativePrototype); - var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor); - registerInternal(nativePrototype, GeneratedWrapper, opt_instance); - return GeneratedWrapper; - } - function addForwardingProperties(nativePrototype, wrapperPrototype) { - installProperty(nativePrototype, wrapperPrototype, true); - } - function registerInstanceProperties(wrapperPrototype, instanceObject) { - installProperty(instanceObject, wrapperPrototype, false); - } - var isFirefox = /Firefox/.test(navigator.userAgent); - var dummyDescriptor = { - get: function() {}, - set: function(v) {}, - configurable: true, - enumerable: true - }; - function isEventHandlerName(name) { - return /^on[a-z]+$/.test(name); - } - function isIdentifierName(name) { - return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name); - } - function getGetter(name) { - return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name) : function() { - return this.__impl4cf1e782hg__[name]; - }; - } - function getSetter(name) { - return hasEval && isIdentifierName(name) ? new Function("v", "this.__impl4cf1e782hg__." + name + " = v") : function(v) { - this.__impl4cf1e782hg__[name] = v; - }; - } - function getMethod(name) { - return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name + ".apply(this.__impl4cf1e782hg__, arguments)") : function() { - return this.__impl4cf1e782hg__[name].apply(this.__impl4cf1e782hg__, arguments); - }; - } - function getDescriptor(source, name) { - try { - return Object.getOwnPropertyDescriptor(source, name); - } catch (ex) { - return dummyDescriptor; - } - } - var isBrokenSafari = function() { - var descr = Object.getOwnPropertyDescriptor(Node.prototype, "nodeType"); - return descr && !descr.get && !descr.set; - }(); - function installProperty(source, target, allowMethod, opt_blacklist) { - var names = getOwnPropertyNames(source); - for (var i = 0; i < names.length; i++) { - var name = names[i]; - if (name === "polymerBlackList_") continue; - if (name in target) continue; - if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue; - if (isFirefox) { - source.__lookupGetter__(name); - } - var descriptor = getDescriptor(source, name); - var getter, setter; - if (typeof descriptor.value === "function") { - if (allowMethod) { - target[name] = getMethod(name); - } - continue; - } - var isEvent = isEventHandlerName(name); - if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = getGetter(name); - if (descriptor.writable || descriptor.set || isBrokenSafari) { - if (isEvent) setter = scope.getEventHandlerSetter(name); else setter = getSetter(name); - } - var configurable = isBrokenSafari || descriptor.configurable; - defineProperty(target, name, { - get: getter, - set: setter, - configurable: configurable, - enumerable: descriptor.enumerable - }); - } - } - function register(nativeConstructor, wrapperConstructor, opt_instance) { - if (nativeConstructor == null) { - return; - } - var nativePrototype = nativeConstructor.prototype; - registerInternal(nativePrototype, wrapperConstructor, opt_instance); - mixinStatics(wrapperConstructor, nativeConstructor); - } - function registerInternal(nativePrototype, wrapperConstructor, opt_instance) { - var wrapperPrototype = wrapperConstructor.prototype; - assert(constructorTable.get(nativePrototype) === undefined); - constructorTable.set(nativePrototype, wrapperConstructor); - nativePrototypeTable.set(wrapperPrototype, nativePrototype); - addForwardingProperties(nativePrototype, wrapperPrototype); - if (opt_instance) registerInstanceProperties(wrapperPrototype, opt_instance); - defineNonEnumerableDataProperty(wrapperPrototype, "constructor", wrapperConstructor); - wrapperConstructor.prototype = wrapperPrototype; - } - function isWrapperFor(wrapperConstructor, nativeConstructor) { - return constructorTable.get(nativeConstructor.prototype) === wrapperConstructor; - } - function registerObject(object) { - var nativePrototype = Object.getPrototypeOf(object); - var superWrapperConstructor = getWrapperConstructor(nativePrototype); - var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor); - registerInternal(nativePrototype, GeneratedWrapper, object); - return GeneratedWrapper; - } - function createWrapperConstructor(superWrapperConstructor) { - function GeneratedWrapper(node) { - superWrapperConstructor.call(this, node); - } - var p = Object.create(superWrapperConstructor.prototype); - p.constructor = GeneratedWrapper; - GeneratedWrapper.prototype = p; - return GeneratedWrapper; - } - function isWrapper(object) { - return object && object.__impl4cf1e782hg__; - } - function isNative(object) { - return !isWrapper(object); - } - function wrap(impl) { - if (impl === null) return null; - assert(isNative(impl)); - var wrapper = impl.__wrapper8e3dd93a60__; - if (wrapper != null) { - return wrapper; - } - return impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl, impl))(impl); - } - function unwrap(wrapper) { - if (wrapper === null) return null; - assert(isWrapper(wrapper)); - return wrapper.__impl4cf1e782hg__; - } - function unsafeUnwrap(wrapper) { - return wrapper.__impl4cf1e782hg__; - } - function setWrapper(impl, wrapper) { - wrapper.__impl4cf1e782hg__ = impl; - impl.__wrapper8e3dd93a60__ = wrapper; - } - function unwrapIfNeeded(object) { - return object && isWrapper(object) ? unwrap(object) : object; - } - function wrapIfNeeded(object) { - return object && !isWrapper(object) ? wrap(object) : object; - } - function rewrap(node, wrapper) { - if (wrapper === null) return; - assert(isNative(node)); - assert(wrapper === undefined || isWrapper(wrapper)); - node.__wrapper8e3dd93a60__ = wrapper; - } - var getterDescriptor = { - get: undefined, - configurable: true, - enumerable: true - }; - function defineGetter(constructor, name, getter) { - getterDescriptor.get = getter; - defineProperty(constructor.prototype, name, getterDescriptor); - } - function defineWrapGetter(constructor, name) { - defineGetter(constructor, name, function() { - return wrap(this.__impl4cf1e782hg__[name]); - }); - } - function forwardMethodsToWrapper(constructors, names) { - constructors.forEach(function(constructor) { - names.forEach(function(name) { - constructor.prototype[name] = function() { - var w = wrapIfNeeded(this); - return w[name].apply(w, arguments); - }; - }); - }); - } - scope.addForwardingProperties = addForwardingProperties; - scope.assert = assert; - scope.constructorTable = constructorTable; - scope.defineGetter = defineGetter; - scope.defineWrapGetter = defineWrapGetter; - scope.forwardMethodsToWrapper = forwardMethodsToWrapper; - scope.isIdentifierName = isIdentifierName; - scope.isWrapper = isWrapper; - scope.isWrapperFor = isWrapperFor; - scope.mixin = mixin; - scope.nativePrototypeTable = nativePrototypeTable; - scope.oneOf = oneOf; - scope.registerObject = registerObject; - scope.registerWrapper = register; - scope.rewrap = rewrap; - scope.setWrapper = setWrapper; - scope.unsafeUnwrap = unsafeUnwrap; - scope.unwrap = unwrap; - scope.unwrapIfNeeded = unwrapIfNeeded; - scope.wrap = wrap; - scope.wrapIfNeeded = wrapIfNeeded; - scope.wrappers = wrappers; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - function newSplice(index, removed, addedCount) { - return { - index: index, - removed: removed, - addedCount: addedCount - }; - } - var EDIT_LEAVE = 0; - var EDIT_UPDATE = 1; - var EDIT_ADD = 2; - var EDIT_DELETE = 3; - function ArraySplice() {} - ArraySplice.prototype = { - calcEditDistances: function(current, currentStart, currentEnd, old, oldStart, oldEnd) { - var rowCount = oldEnd - oldStart + 1; - var columnCount = currentEnd - currentStart + 1; - var distances = new Array(rowCount); - for (var i = 0; i < rowCount; i++) { - distances[i] = new Array(columnCount); - distances[i][0] = i; - } - for (var j = 0; j < columnCount; j++) distances[0][j] = j; - for (var i = 1; i < rowCount; i++) { - for (var j = 1; j < columnCount; j++) { - if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) distances[i][j] = distances[i - 1][j - 1]; else { - var north = distances[i - 1][j] + 1; - var west = distances[i][j - 1] + 1; - distances[i][j] = north < west ? north : west; - } - } - } - return distances; - }, - spliceOperationsFromEditDistances: function(distances) { - var i = distances.length - 1; - var j = distances[0].length - 1; - var current = distances[i][j]; - var edits = []; - while (i > 0 || j > 0) { - if (i == 0) { - edits.push(EDIT_ADD); - j--; - continue; - } - if (j == 0) { - edits.push(EDIT_DELETE); - i--; - continue; - } - var northWest = distances[i - 1][j - 1]; - var west = distances[i - 1][j]; - var north = distances[i][j - 1]; - var min; - if (west < north) min = west < northWest ? west : northWest; else min = north < northWest ? north : northWest; - if (min == northWest) { - if (northWest == current) { - edits.push(EDIT_LEAVE); - } else { - edits.push(EDIT_UPDATE); - current = northWest; - } - i--; - j--; - } else if (min == west) { - edits.push(EDIT_DELETE); - i--; - current = west; - } else { - edits.push(EDIT_ADD); - j--; - current = north; - } - } - edits.reverse(); - return edits; - }, - calcSplices: function(current, currentStart, currentEnd, old, oldStart, oldEnd) { - var prefixCount = 0; - var suffixCount = 0; - var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart); - if (currentStart == 0 && oldStart == 0) prefixCount = this.sharedPrefix(current, old, minLength); - if (currentEnd == current.length && oldEnd == old.length) suffixCount = this.sharedSuffix(current, old, minLength - prefixCount); - currentStart += prefixCount; - oldStart += prefixCount; - currentEnd -= suffixCount; - oldEnd -= suffixCount; - if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) return []; - if (currentStart == currentEnd) { - var splice = newSplice(currentStart, [], 0); - while (oldStart < oldEnd) splice.removed.push(old[oldStart++]); - return [ splice ]; - } else if (oldStart == oldEnd) return [ newSplice(currentStart, [], currentEnd - currentStart) ]; - var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd)); - var splice = undefined; - var splices = []; - var index = currentStart; - var oldIndex = oldStart; - for (var i = 0; i < ops.length; i++) { - switch (ops[i]) { - case EDIT_LEAVE: - if (splice) { - splices.push(splice); - splice = undefined; - } - index++; - oldIndex++; - break; - - case EDIT_UPDATE: - if (!splice) splice = newSplice(index, [], 0); - splice.addedCount++; - index++; - splice.removed.push(old[oldIndex]); - oldIndex++; - break; - - case EDIT_ADD: - if (!splice) splice = newSplice(index, [], 0); - splice.addedCount++; - index++; - break; - - case EDIT_DELETE: - if (!splice) splice = newSplice(index, [], 0); - splice.removed.push(old[oldIndex]); - oldIndex++; - break; - } - } - if (splice) { - splices.push(splice); - } - return splices; - }, - sharedPrefix: function(current, old, searchLength) { - for (var i = 0; i < searchLength; i++) if (!this.equals(current[i], old[i])) return i; - return searchLength; - }, - sharedSuffix: function(current, old, searchLength) { - var index1 = current.length; - var index2 = old.length; - var count = 0; - while (count < searchLength && this.equals(current[--index1], old[--index2])) count++; - return count; - }, - calculateSplices: function(current, previous) { - return this.calcSplices(current, 0, current.length, previous, 0, previous.length); - }, - equals: function(currentValue, previousValue) { - return currentValue === previousValue; - } - }; - scope.ArraySplice = ArraySplice; - })(window.ShadowDOMPolyfill); - (function(context) { - "use strict"; - var OriginalMutationObserver = window.MutationObserver; - var callbacks = []; - var pending = false; - var timerFunc; - function handle() { - pending = false; - var copies = callbacks.slice(0); - callbacks = []; - for (var i = 0; i < copies.length; i++) { - (0, copies[i])(); - } - } - if (OriginalMutationObserver) { - var counter = 1; - var observer = new OriginalMutationObserver(handle); - var textNode = document.createTextNode(counter); - observer.observe(textNode, { - characterData: true - }); - timerFunc = function() { - counter = (counter + 1) % 2; - textNode.data = counter; - }; - } else { - timerFunc = window.setTimeout; - } - function setEndOfMicrotask(func) { - callbacks.push(func); - if (pending) return; - pending = true; - timerFunc(handle, 0); - } - context.setEndOfMicrotask = setEndOfMicrotask; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var setEndOfMicrotask = scope.setEndOfMicrotask; - var wrapIfNeeded = scope.wrapIfNeeded; - var wrappers = scope.wrappers; - var registrationsTable = new WeakMap(); - var globalMutationObservers = []; - var isScheduled = false; - function scheduleCallback(observer) { - if (observer.scheduled_) return; - observer.scheduled_ = true; - globalMutationObservers.push(observer); - if (isScheduled) return; - setEndOfMicrotask(notifyObservers); - isScheduled = true; - } - function notifyObservers() { - isScheduled = false; - while (globalMutationObservers.length) { - var notifyList = globalMutationObservers; - globalMutationObservers = []; - notifyList.sort(function(x, y) { - return x.uid_ - y.uid_; - }); - for (var i = 0; i < notifyList.length; i++) { - var mo = notifyList[i]; - mo.scheduled_ = false; - var queue = mo.takeRecords(); - removeTransientObserversFor(mo); - if (queue.length) { - mo.callback_(queue, mo); - } - } - } - } - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = new wrappers.NodeList(); - this.removedNodes = new wrappers.NodeList(); - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function registerTransientObservers(ancestor, node) { - for (;ancestor; ancestor = ancestor.parentNode) { - var registrations = registrationsTable.get(ancestor); - if (!registrations) continue; - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.options.subtree) registration.addTransientObserver(node); - } - } - } - function removeTransientObserversFor(observer) { - for (var i = 0; i < observer.nodes_.length; i++) { - var node = observer.nodes_[i]; - var registrations = registrationsTable.get(node); - if (!registrations) return; - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - if (registration.observer === observer) registration.removeTransientObservers(); - } - } - } - function enqueueMutation(target, type, data) { - var interestedObservers = Object.create(null); - var associatedStrings = Object.create(null); - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (!registrations) continue; - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - if (type === "attributes" && !options.attributes) continue; - if (type === "attributes" && options.attributeFilter && (data.namespace !== null || options.attributeFilter.indexOf(data.name) === -1)) { - continue; - } - if (type === "characterData" && !options.characterData) continue; - if (type === "childList" && !options.childList) continue; - var observer = registration.observer; - interestedObservers[observer.uid_] = observer; - if (type === "attributes" && options.attributeOldValue || type === "characterData" && options.characterDataOldValue) { - associatedStrings[observer.uid_] = data.oldValue; - } - } - } - for (var uid in interestedObservers) { - var observer = interestedObservers[uid]; - var record = new MutationRecord(type, target); - if ("name" in data && "namespace" in data) { - record.attributeName = data.name; - record.attributeNamespace = data.namespace; - } - if (data.addedNodes) record.addedNodes = data.addedNodes; - if (data.removedNodes) record.removedNodes = data.removedNodes; - if (data.previousSibling) record.previousSibling = data.previousSibling; - if (data.nextSibling) record.nextSibling = data.nextSibling; - if (associatedStrings[uid] !== undefined) record.oldValue = associatedStrings[uid]; - scheduleCallback(observer); - observer.records_.push(record); - } - } - var slice = Array.prototype.slice; - function MutationObserverOptions(options) { - this.childList = !!options.childList; - this.subtree = !!options.subtree; - if (!("attributes" in options) && ("attributeOldValue" in options || "attributeFilter" in options)) { - this.attributes = true; - } else { - this.attributes = !!options.attributes; - } - if ("characterDataOldValue" in options && !("characterData" in options)) this.characterData = true; else this.characterData = !!options.characterData; - if (!this.attributes && (options.attributeOldValue || "attributeFilter" in options) || !this.characterData && options.characterDataOldValue) { - throw new TypeError(); - } - this.characterData = !!options.characterData; - this.attributeOldValue = !!options.attributeOldValue; - this.characterDataOldValue = !!options.characterDataOldValue; - if ("attributeFilter" in options) { - if (options.attributeFilter == null || typeof options.attributeFilter !== "object") { - throw new TypeError(); - } - this.attributeFilter = slice.call(options.attributeFilter); - } else { - this.attributeFilter = null; - } - } - var uidCounter = 0; - function MutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - this.scheduled_ = false; - } - MutationObserver.prototype = { - constructor: MutationObserver, - observe: function(target, options) { - target = wrapIfNeeded(target); - var newOptions = new MutationObserverOptions(options); - var registration; - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeTransientObservers(); - registration.options = newOptions; - } - } - if (!registration) { - registration = new Registration(this, target, newOptions); - registrations.push(registration); - this.nodes_.push(target); - } - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - addTransientObserver: function(node) { - if (node === this.target) return; - scheduleCallback(this.observer); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - for (var i = 0; i < transientObservedNodes.length; i++) { - var node = transientObservedNodes[i]; - var registrations = registrationsTable.get(node); - for (var j = 0; j < registrations.length; j++) { - if (registrations[j] === this) { - registrations.splice(j, 1); - break; - } - } - } - } - }; - scope.enqueueMutation = enqueueMutation; - scope.registerTransientObservers = registerTransientObservers; - scope.wrappers.MutationObserver = MutationObserver; - scope.wrappers.MutationRecord = MutationRecord; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - function TreeScope(root, parent) { - this.root = root; - this.parent = parent; - } - TreeScope.prototype = { - get renderer() { - if (this.root instanceof scope.wrappers.ShadowRoot) { - return scope.getRendererForHost(this.root.host); - } - return null; - }, - contains: function(treeScope) { - for (;treeScope; treeScope = treeScope.parent) { - if (treeScope === this) return true; - } - return false; - } - }; - function setTreeScope(node, treeScope) { - if (node.treeScope_ !== treeScope) { - node.treeScope_ = treeScope; - for (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) { - sr.treeScope_.parent = treeScope; - } - for (var child = node.firstChild; child; child = child.nextSibling) { - setTreeScope(child, treeScope); - } - } - } - function getTreeScope(node) { - if (node instanceof scope.wrappers.Window) { - debugger; - } - if (node.treeScope_) return node.treeScope_; - var parent = node.parentNode; - var treeScope; - if (parent) treeScope = getTreeScope(parent); else treeScope = new TreeScope(node, null); - return node.treeScope_ = treeScope; - } - scope.TreeScope = TreeScope; - scope.getTreeScope = getTreeScope; - scope.setTreeScope = setTreeScope; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrappers = scope.wrappers; - var wrappedFuns = new WeakMap(); - var listenersTable = new WeakMap(); - var handledEventsTable = new WeakMap(); - var currentlyDispatchingEvents = new WeakMap(); - var targetTable = new WeakMap(); - var currentTargetTable = new WeakMap(); - var relatedTargetTable = new WeakMap(); - var eventPhaseTable = new WeakMap(); - var stopPropagationTable = new WeakMap(); - var stopImmediatePropagationTable = new WeakMap(); - var eventHandlersTable = new WeakMap(); - var eventPathTable = new WeakMap(); - function isShadowRoot(node) { - return node instanceof wrappers.ShadowRoot; - } - function rootOfNode(node) { - return getTreeScope(node).root; - } - function getEventPath(node, event) { - var path = []; - var current = node; - path.push(current); - while (current) { - var destinationInsertionPoints = getDestinationInsertionPoints(current); - if (destinationInsertionPoints && destinationInsertionPoints.length > 0) { - for (var i = 0; i < destinationInsertionPoints.length; i++) { - var insertionPoint = destinationInsertionPoints[i]; - if (isShadowInsertionPoint(insertionPoint)) { - var shadowRoot = rootOfNode(insertionPoint); - var olderShadowRoot = shadowRoot.olderShadowRoot; - if (olderShadowRoot) path.push(olderShadowRoot); - } - path.push(insertionPoint); - } - current = destinationInsertionPoints[destinationInsertionPoints.length - 1]; - } else { - if (isShadowRoot(current)) { - if (inSameTree(node, current) && eventMustBeStopped(event)) { - break; - } - current = current.host; - path.push(current); - } else { - current = current.parentNode; - if (current) path.push(current); - } - } - } - return path; - } - function eventMustBeStopped(event) { - if (!event) return false; - switch (event.type) { - case "abort": - case "error": - case "select": - case "change": - case "load": - case "reset": - case "resize": - case "scroll": - case "selectstart": - return true; - } - return false; - } - function isShadowInsertionPoint(node) { - return node instanceof HTMLShadowElement; - } - function getDestinationInsertionPoints(node) { - return scope.getDestinationInsertionPoints(node); - } - function eventRetargetting(path, currentTarget) { - if (path.length === 0) return currentTarget; - if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document; - var currentTargetTree = getTreeScope(currentTarget); - var originalTarget = path[0]; - var originalTargetTree = getTreeScope(originalTarget); - var relativeTargetTree = lowestCommonInclusiveAncestor(currentTargetTree, originalTargetTree); - for (var i = 0; i < path.length; i++) { - var node = path[i]; - if (getTreeScope(node) === relativeTargetTree) return node; - } - return path[path.length - 1]; - } - function getTreeScopeAncestors(treeScope) { - var ancestors = []; - for (;treeScope; treeScope = treeScope.parent) { - ancestors.push(treeScope); - } - return ancestors; - } - function lowestCommonInclusiveAncestor(tsA, tsB) { - var ancestorsA = getTreeScopeAncestors(tsA); - var ancestorsB = getTreeScopeAncestors(tsB); - var result = null; - while (ancestorsA.length > 0 && ancestorsB.length > 0) { - var a = ancestorsA.pop(); - var b = ancestorsB.pop(); - if (a === b) result = a; else break; - } - return result; - } - function getTreeScopeRoot(ts) { - if (!ts.parent) return ts; - return getTreeScopeRoot(ts.parent); - } - function relatedTargetResolution(event, currentTarget, relatedTarget) { - if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document; - var currentTargetTree = getTreeScope(currentTarget); - var relatedTargetTree = getTreeScope(relatedTarget); - var relatedTargetEventPath = getEventPath(relatedTarget, event); - var lowestCommonAncestorTree; - var lowestCommonAncestorTree = lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree); - if (!lowestCommonAncestorTree) lowestCommonAncestorTree = relatedTargetTree.root; - for (var commonAncestorTree = lowestCommonAncestorTree; commonAncestorTree; commonAncestorTree = commonAncestorTree.parent) { - var adjustedRelatedTarget; - for (var i = 0; i < relatedTargetEventPath.length; i++) { - var node = relatedTargetEventPath[i]; - if (getTreeScope(node) === commonAncestorTree) return node; - } - } - return null; - } - function inSameTree(a, b) { - return getTreeScope(a) === getTreeScope(b); - } - var NONE = 0; - var CAPTURING_PHASE = 1; - var AT_TARGET = 2; - var BUBBLING_PHASE = 3; - var pendingError; - function dispatchOriginalEvent(originalEvent) { - if (handledEventsTable.get(originalEvent)) return; - handledEventsTable.set(originalEvent, true); - dispatchEvent(wrap(originalEvent), wrap(originalEvent.target)); - if (pendingError) { - var err = pendingError; - pendingError = null; - throw err; - } - } - function isLoadLikeEvent(event) { - switch (event.type) { - case "load": - case "beforeunload": - case "unload": - return true; - } - return false; - } - function dispatchEvent(event, originalWrapperTarget) { - if (currentlyDispatchingEvents.get(event)) throw new Error("InvalidStateError"); - currentlyDispatchingEvents.set(event, true); - scope.renderAllPending(); - var eventPath; - var overrideTarget; - var win; - if (isLoadLikeEvent(event) && !event.bubbles) { - var doc = originalWrapperTarget; - if (doc instanceof wrappers.Document && (win = doc.defaultView)) { - overrideTarget = doc; - eventPath = []; - } - } - if (!eventPath) { - if (originalWrapperTarget instanceof wrappers.Window) { - win = originalWrapperTarget; - eventPath = []; - } else { - eventPath = getEventPath(originalWrapperTarget, event); - if (!isLoadLikeEvent(event)) { - var doc = eventPath[eventPath.length - 1]; - if (doc instanceof wrappers.Document) win = doc.defaultView; - } - } - } - eventPathTable.set(event, eventPath); - if (dispatchCapturing(event, eventPath, win, overrideTarget)) { - if (dispatchAtTarget(event, eventPath, win, overrideTarget)) { - dispatchBubbling(event, eventPath, win, overrideTarget); - } - } - eventPhaseTable.set(event, NONE); - currentTargetTable.delete(event, null); - currentlyDispatchingEvents.delete(event); - return event.defaultPrevented; - } - function dispatchCapturing(event, eventPath, win, overrideTarget) { - var phase = CAPTURING_PHASE; - if (win) { - if (!invoke(win, event, phase, eventPath, overrideTarget)) return false; - } - for (var i = eventPath.length - 1; i > 0; i--) { - if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return false; - } - return true; - } - function dispatchAtTarget(event, eventPath, win, overrideTarget) { - var phase = AT_TARGET; - var currentTarget = eventPath[0] || win; - return invoke(currentTarget, event, phase, eventPath, overrideTarget); - } - function dispatchBubbling(event, eventPath, win, overrideTarget) { - var phase = BUBBLING_PHASE; - for (var i = 1; i < eventPath.length; i++) { - if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return; - } - if (win && eventPath.length > 0) { - invoke(win, event, phase, eventPath, overrideTarget); - } - } - function invoke(currentTarget, event, phase, eventPath, overrideTarget) { - var listeners = listenersTable.get(currentTarget); - if (!listeners) return true; - var target = overrideTarget || eventRetargetting(eventPath, currentTarget); - if (target === currentTarget) { - if (phase === CAPTURING_PHASE) return true; - if (phase === BUBBLING_PHASE) phase = AT_TARGET; - } else if (phase === BUBBLING_PHASE && !event.bubbles) { - return true; - } - if ("relatedTarget" in event) { - var originalEvent = unwrap(event); - var unwrappedRelatedTarget = originalEvent.relatedTarget; - if (unwrappedRelatedTarget) { - if (unwrappedRelatedTarget instanceof Object && unwrappedRelatedTarget.addEventListener) { - var relatedTarget = wrap(unwrappedRelatedTarget); - var adjusted = relatedTargetResolution(event, currentTarget, relatedTarget); - if (adjusted === target) return true; - } else { - adjusted = null; - } - relatedTargetTable.set(event, adjusted); - } - } - eventPhaseTable.set(event, phase); - var type = event.type; - var anyRemoved = false; - targetTable.set(event, target); - currentTargetTable.set(event, currentTarget); - listeners.depth++; - for (var i = 0, len = listeners.length; i < len; i++) { - var listener = listeners[i]; - if (listener.removed) { - anyRemoved = true; - continue; - } - if (listener.type !== type || !listener.capture && phase === CAPTURING_PHASE || listener.capture && phase === BUBBLING_PHASE) { - continue; - } - try { - if (typeof listener.handler === "function") listener.handler.call(currentTarget, event); else listener.handler.handleEvent(event); - if (stopImmediatePropagationTable.get(event)) return false; - } catch (ex) { - if (!pendingError) pendingError = ex; - } - } - listeners.depth--; - if (anyRemoved && listeners.depth === 0) { - var copy = listeners.slice(); - listeners.length = 0; - for (var i = 0; i < copy.length; i++) { - if (!copy[i].removed) listeners.push(copy[i]); - } - } - return !stopPropagationTable.get(event); - } - function Listener(type, handler, capture) { - this.type = type; - this.handler = handler; - this.capture = Boolean(capture); - } - Listener.prototype = { - equals: function(that) { - return this.handler === that.handler && this.type === that.type && this.capture === that.capture; - }, - get removed() { - return this.handler === null; - }, - remove: function() { - this.handler = null; - } - }; - var OriginalEvent = window.Event; - OriginalEvent.prototype.polymerBlackList_ = { - returnValue: true, - keyLocation: true - }; - function Event(type, options) { - if (type instanceof OriginalEvent) { - var impl = type; - if (!OriginalBeforeUnloadEvent && impl.type === "beforeunload" && !(this instanceof BeforeUnloadEvent)) { - return new BeforeUnloadEvent(impl); - } - setWrapper(impl, this); - } else { - return wrap(constructEvent(OriginalEvent, "Event", type, options)); - } - } - Event.prototype = { - get target() { - return targetTable.get(this); - }, - get currentTarget() { - return currentTargetTable.get(this); - }, - get eventPhase() { - return eventPhaseTable.get(this); - }, - get path() { - var eventPath = eventPathTable.get(this); - if (!eventPath) return []; - return eventPath.slice(); - }, - stopPropagation: function() { - stopPropagationTable.set(this, true); - }, - stopImmediatePropagation: function() { - stopPropagationTable.set(this, true); - stopImmediatePropagationTable.set(this, true); - } - }; - var supportsDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("test", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!supportsDefaultPrevented) { - Event.prototype.preventDefault = function() { - if (!this.cancelable) return; - unsafeUnwrap(this).preventDefault(); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - registerWrapper(OriginalEvent, Event, document.createEvent("Event")); - function unwrapOptions(options) { - if (!options || !options.relatedTarget) return options; - return Object.create(options, { - relatedTarget: { - value: unwrap(options.relatedTarget) - } - }); - } - function registerGenericEvent(name, SuperEvent, prototype) { - var OriginalEvent = window[name]; - var GenericEvent = function(type, options) { - if (type instanceof OriginalEvent) setWrapper(type, this); else return wrap(constructEvent(OriginalEvent, name, type, options)); - }; - GenericEvent.prototype = Object.create(SuperEvent.prototype); - if (prototype) mixin(GenericEvent.prototype, prototype); - if (OriginalEvent) { - try { - registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent("temp")); - } catch (ex) { - registerWrapper(OriginalEvent, GenericEvent, document.createEvent(name)); - } - } - return GenericEvent; - } - var UIEvent = registerGenericEvent("UIEvent", Event); - var CustomEvent = registerGenericEvent("CustomEvent", Event); - var relatedTargetProto = { - get relatedTarget() { - var relatedTarget = relatedTargetTable.get(this); - if (relatedTarget !== undefined) return relatedTarget; - return wrap(unwrap(this).relatedTarget); - } - }; - function getInitFunction(name, relatedTargetIndex) { - return function() { - arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]); - var impl = unwrap(this); - impl[name].apply(impl, arguments); - }; - } - var mouseEventProto = mixin({ - initMouseEvent: getInitFunction("initMouseEvent", 14) - }, relatedTargetProto); - var focusEventProto = mixin({ - initFocusEvent: getInitFunction("initFocusEvent", 5) - }, relatedTargetProto); - var MouseEvent = registerGenericEvent("MouseEvent", UIEvent, mouseEventProto); - var FocusEvent = registerGenericEvent("FocusEvent", UIEvent, focusEventProto); - var defaultInitDicts = Object.create(null); - var supportsEventConstructors = function() { - try { - new window.FocusEvent("focus"); - } catch (ex) { - return false; - } - return true; - }(); - function constructEvent(OriginalEvent, name, type, options) { - if (supportsEventConstructors) return new OriginalEvent(type, unwrapOptions(options)); - var event = unwrap(document.createEvent(name)); - var defaultDict = defaultInitDicts[name]; - var args = [ type ]; - Object.keys(defaultDict).forEach(function(key) { - var v = options != null && key in options ? options[key] : defaultDict[key]; - if (key === "relatedTarget") v = unwrap(v); - args.push(v); - }); - event["init" + name].apply(event, args); - return event; - } - if (!supportsEventConstructors) { - var configureEventConstructor = function(name, initDict, superName) { - if (superName) { - var superDict = defaultInitDicts[superName]; - initDict = mixin(mixin({}, superDict), initDict); - } - defaultInitDicts[name] = initDict; - }; - configureEventConstructor("Event", { - bubbles: false, - cancelable: false - }); - configureEventConstructor("CustomEvent", { - detail: null - }, "Event"); - configureEventConstructor("UIEvent", { - view: null, - detail: 0 - }, "Event"); - configureEventConstructor("MouseEvent", { - screenX: 0, - screenY: 0, - clientX: 0, - clientY: 0, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - button: 0, - relatedTarget: null - }, "UIEvent"); - configureEventConstructor("FocusEvent", { - relatedTarget: null - }, "UIEvent"); - } - var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent; - function BeforeUnloadEvent(impl) { - Event.call(this, impl); - } - BeforeUnloadEvent.prototype = Object.create(Event.prototype); - mixin(BeforeUnloadEvent.prototype, { - get returnValue() { - return unsafeUnwrap(this).returnValue; - }, - set returnValue(v) { - unsafeUnwrap(this).returnValue = v; - } - }); - if (OriginalBeforeUnloadEvent) registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent); - function isValidListener(fun) { - if (typeof fun === "function") return true; - return fun && fun.handleEvent; - } - function isMutationEvent(type) { - switch (type) { - case "DOMAttrModified": - case "DOMAttributeNameChanged": - case "DOMCharacterDataModified": - case "DOMElementNameChanged": - case "DOMNodeInserted": - case "DOMNodeInsertedIntoDocument": - case "DOMNodeRemoved": - case "DOMNodeRemovedFromDocument": - case "DOMSubtreeModified": - return true; - } - return false; - } - var OriginalEventTarget = window.EventTarget; - function EventTarget(impl) { - setWrapper(impl, this); - } - var methodNames = [ "addEventListener", "removeEventListener", "dispatchEvent" ]; - [ Node, Window ].forEach(function(constructor) { - var p = constructor.prototype; - methodNames.forEach(function(name) { - Object.defineProperty(p, name + "_", { - value: p[name] - }); - }); - }); - function getTargetToListenAt(wrapper) { - if (wrapper instanceof wrappers.ShadowRoot) wrapper = wrapper.host; - return unwrap(wrapper); - } - EventTarget.prototype = { - addEventListener: function(type, fun, capture) { - if (!isValidListener(fun) || isMutationEvent(type)) return; - var listener = new Listener(type, fun, capture); - var listeners = listenersTable.get(this); - if (!listeners) { - listeners = []; - listeners.depth = 0; - listenersTable.set(this, listeners); - } else { - for (var i = 0; i < listeners.length; i++) { - if (listener.equals(listeners[i])) return; - } - } - listeners.push(listener); - var target = getTargetToListenAt(this); - target.addEventListener_(type, dispatchOriginalEvent, true); - }, - removeEventListener: function(type, fun, capture) { - capture = Boolean(capture); - var listeners = listenersTable.get(this); - if (!listeners) return; - var count = 0, found = false; - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].type === type && listeners[i].capture === capture) { - count++; - if (listeners[i].handler === fun) { - found = true; - listeners[i].remove(); - } - } - } - if (found && count === 1) { - var target = getTargetToListenAt(this); - target.removeEventListener_(type, dispatchOriginalEvent, true); - } - }, - dispatchEvent: function(event) { - var nativeEvent = unwrap(event); - var eventType = nativeEvent.type; - handledEventsTable.set(nativeEvent, false); - scope.renderAllPending(); - var tempListener; - if (!hasListenerInAncestors(this, eventType)) { - tempListener = function() {}; - this.addEventListener(eventType, tempListener, true); - } - try { - return unwrap(this).dispatchEvent_(nativeEvent); - } finally { - if (tempListener) this.removeEventListener(eventType, tempListener, true); - } - } - }; - function hasListener(node, type) { - var listeners = listenersTable.get(node); - if (listeners) { - for (var i = 0; i < listeners.length; i++) { - if (!listeners[i].removed && listeners[i].type === type) return true; - } - } - return false; - } - function hasListenerInAncestors(target, type) { - for (var node = unwrap(target); node; node = node.parentNode) { - if (hasListener(wrap(node), type)) return true; - } - return false; - } - if (OriginalEventTarget) registerWrapper(OriginalEventTarget, EventTarget); - function wrapEventTargetMethods(constructors) { - forwardMethodsToWrapper(constructors, methodNames); - } - var originalElementFromPoint = document.elementFromPoint; - function elementFromPoint(self, document, x, y) { - scope.renderAllPending(); - var element = wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y)); - if (!element) return null; - var path = getEventPath(element, null); - var idx = path.lastIndexOf(self); - if (idx == -1) return null; else path = path.slice(0, idx); - return eventRetargetting(path, self); - } - function getEventHandlerGetter(name) { - return function() { - var inlineEventHandlers = eventHandlersTable.get(this); - return inlineEventHandlers && inlineEventHandlers[name] && inlineEventHandlers[name].value || null; - }; - } - function getEventHandlerSetter(name) { - var eventType = name.slice(2); - return function(value) { - var inlineEventHandlers = eventHandlersTable.get(this); - if (!inlineEventHandlers) { - inlineEventHandlers = Object.create(null); - eventHandlersTable.set(this, inlineEventHandlers); - } - var old = inlineEventHandlers[name]; - if (old) this.removeEventListener(eventType, old.wrapped, false); - if (typeof value === "function") { - var wrapped = function(e) { - var rv = value.call(this, e); - if (rv === false) e.preventDefault(); else if (name === "onbeforeunload" && typeof rv === "string") e.returnValue = rv; - }; - this.addEventListener(eventType, wrapped, false); - inlineEventHandlers[name] = { - value: value, - wrapped: wrapped - }; - } - }; - } - scope.elementFromPoint = elementFromPoint; - scope.getEventHandlerGetter = getEventHandlerGetter; - scope.getEventHandlerSetter = getEventHandlerSetter; - scope.wrapEventTargetMethods = wrapEventTargetMethods; - scope.wrappers.BeforeUnloadEvent = BeforeUnloadEvent; - scope.wrappers.CustomEvent = CustomEvent; - scope.wrappers.Event = Event; - scope.wrappers.EventTarget = EventTarget; - scope.wrappers.FocusEvent = FocusEvent; - scope.wrappers.MouseEvent = MouseEvent; - scope.wrappers.UIEvent = UIEvent; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var UIEvent = scope.wrappers.UIEvent; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalTouchEvent = window.TouchEvent; - if (!OriginalTouchEvent) return; - var nativeEvent; - try { - nativeEvent = document.createEvent("TouchEvent"); - } catch (ex) { - return; - } - var nonEnumDescriptor = { - enumerable: false - }; - function nonEnum(obj, prop) { - Object.defineProperty(obj, prop, nonEnumDescriptor); - } - function Touch(impl) { - setWrapper(impl, this); - } - Touch.prototype = { - get target() { - return wrap(unsafeUnwrap(this).target); - } - }; - var descr = { - configurable: true, - enumerable: true, - get: null - }; - [ "clientX", "clientY", "screenX", "screenY", "pageX", "pageY", "identifier", "webkitRadiusX", "webkitRadiusY", "webkitRotationAngle", "webkitForce" ].forEach(function(name) { - descr.get = function() { - return unsafeUnwrap(this)[name]; - }; - Object.defineProperty(Touch.prototype, name, descr); - }); - function TouchList() { - this.length = 0; - nonEnum(this, "length"); - } - TouchList.prototype = { - item: function(index) { - return this[index]; - } - }; - function wrapTouchList(nativeTouchList) { - var list = new TouchList(); - for (var i = 0; i < nativeTouchList.length; i++) { - list[i] = new Touch(nativeTouchList[i]); - } - list.length = i; - return list; - } - function TouchEvent(impl) { - UIEvent.call(this, impl); - } - TouchEvent.prototype = Object.create(UIEvent.prototype); - mixin(TouchEvent.prototype, { - get touches() { - return wrapTouchList(unsafeUnwrap(this).touches); - }, - get targetTouches() { - return wrapTouchList(unsafeUnwrap(this).targetTouches); - }, - get changedTouches() { - return wrapTouchList(unsafeUnwrap(this).changedTouches); - }, - initTouchEvent: function() { - throw new Error("Not implemented"); - } - }); - registerWrapper(OriginalTouchEvent, TouchEvent, nativeEvent); - scope.wrappers.Touch = Touch; - scope.wrappers.TouchEvent = TouchEvent; - scope.wrappers.TouchList = TouchList; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var nonEnumDescriptor = { - enumerable: false - }; - function nonEnum(obj, prop) { - Object.defineProperty(obj, prop, nonEnumDescriptor); - } - function NodeList() { - this.length = 0; - nonEnum(this, "length"); - } - NodeList.prototype = { - item: function(index) { - return this[index]; - } - }; - nonEnum(NodeList.prototype, "item"); - function wrapNodeList(list) { - if (list == null) return list; - var wrapperList = new NodeList(); - for (var i = 0, length = list.length; i < length; i++) { - wrapperList[i] = wrap(list[i]); - } - wrapperList.length = length; - return wrapperList; - } - function addWrapNodeListMethod(wrapperConstructor, name) { - wrapperConstructor.prototype[name] = function() { - return wrapNodeList(unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments)); - }; - } - scope.wrappers.NodeList = NodeList; - scope.addWrapNodeListMethod = addWrapNodeListMethod; - scope.wrapNodeList = wrapNodeList; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - scope.wrapHTMLCollection = scope.wrapNodeList; - scope.wrappers.HTMLCollection = scope.wrappers.NodeList; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var NodeList = scope.wrappers.NodeList; - var TreeScope = scope.TreeScope; - var assert = scope.assert; - var defineWrapGetter = scope.defineWrapGetter; - var enqueueMutation = scope.enqueueMutation; - var getTreeScope = scope.getTreeScope; - var isWrapper = scope.isWrapper; - var mixin = scope.mixin; - var registerTransientObservers = scope.registerTransientObservers; - var registerWrapper = scope.registerWrapper; - var setTreeScope = scope.setTreeScope; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var wrapIfNeeded = scope.wrapIfNeeded; - var wrappers = scope.wrappers; - function assertIsNodeWrapper(node) { - assert(node instanceof Node); - } - function createOneElementNodeList(node) { - var nodes = new NodeList(); - nodes[0] = node; - nodes.length = 1; - return nodes; - } - var surpressMutations = false; - function enqueueRemovalForInsertedNodes(node, parent, nodes) { - enqueueMutation(parent, "childList", { - removedNodes: nodes, - previousSibling: node.previousSibling, - nextSibling: node.nextSibling - }); - } - function enqueueRemovalForInsertedDocumentFragment(df, nodes) { - enqueueMutation(df, "childList", { - removedNodes: nodes - }); - } - function collectNodes(node, parentNode, previousNode, nextNode) { - if (node instanceof DocumentFragment) { - var nodes = collectNodesForDocumentFragment(node); - surpressMutations = true; - for (var i = nodes.length - 1; i >= 0; i--) { - node.removeChild(nodes[i]); - nodes[i].parentNode_ = parentNode; - } - surpressMutations = false; - for (var i = 0; i < nodes.length; i++) { - nodes[i].previousSibling_ = nodes[i - 1] || previousNode; - nodes[i].nextSibling_ = nodes[i + 1] || nextNode; - } - if (previousNode) previousNode.nextSibling_ = nodes[0]; - if (nextNode) nextNode.previousSibling_ = nodes[nodes.length - 1]; - return nodes; - } - var nodes = createOneElementNodeList(node); - var oldParent = node.parentNode; - if (oldParent) { - oldParent.removeChild(node); - } - node.parentNode_ = parentNode; - node.previousSibling_ = previousNode; - node.nextSibling_ = nextNode; - if (previousNode) previousNode.nextSibling_ = node; - if (nextNode) nextNode.previousSibling_ = node; - return nodes; - } - function collectNodesNative(node) { - if (node instanceof DocumentFragment) return collectNodesForDocumentFragment(node); - var nodes = createOneElementNodeList(node); - var oldParent = node.parentNode; - if (oldParent) enqueueRemovalForInsertedNodes(node, oldParent, nodes); - return nodes; - } - function collectNodesForDocumentFragment(node) { - var nodes = new NodeList(); - var i = 0; - for (var child = node.firstChild; child; child = child.nextSibling) { - nodes[i++] = child; - } - nodes.length = i; - enqueueRemovalForInsertedDocumentFragment(node, nodes); - return nodes; - } - function snapshotNodeList(nodeList) { - return nodeList; - } - function nodeWasAdded(node, treeScope) { - setTreeScope(node, treeScope); - node.nodeIsInserted_(); - } - function nodesWereAdded(nodes, parent) { - var treeScope = getTreeScope(parent); - for (var i = 0; i < nodes.length; i++) { - nodeWasAdded(nodes[i], treeScope); - } - } - function nodeWasRemoved(node) { - setTreeScope(node, new TreeScope(node, null)); - } - function nodesWereRemoved(nodes) { - for (var i = 0; i < nodes.length; i++) { - nodeWasRemoved(nodes[i]); - } - } - function ensureSameOwnerDocument(parent, child) { - var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ? parent : parent.ownerDocument; - if (ownerDoc !== child.ownerDocument) ownerDoc.adoptNode(child); - } - function adoptNodesIfNeeded(owner, nodes) { - if (!nodes.length) return; - var ownerDoc = owner.ownerDocument; - if (ownerDoc === nodes[0].ownerDocument) return; - for (var i = 0; i < nodes.length; i++) { - scope.adoptNodeNoRemove(nodes[i], ownerDoc); - } - } - function unwrapNodesForInsertion(owner, nodes) { - adoptNodesIfNeeded(owner, nodes); - var length = nodes.length; - if (length === 1) return unwrap(nodes[0]); - var df = unwrap(owner.ownerDocument.createDocumentFragment()); - for (var i = 0; i < length; i++) { - df.appendChild(unwrap(nodes[i])); - } - return df; - } - function clearChildNodes(wrapper) { - if (wrapper.firstChild_ !== undefined) { - var child = wrapper.firstChild_; - while (child) { - var tmp = child; - child = child.nextSibling_; - tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined; - } - } - wrapper.firstChild_ = wrapper.lastChild_ = undefined; - } - function removeAllChildNodes(wrapper) { - if (wrapper.invalidateShadowRenderer()) { - var childWrapper = wrapper.firstChild; - while (childWrapper) { - assert(childWrapper.parentNode === wrapper); - var nextSibling = childWrapper.nextSibling; - var childNode = unwrap(childWrapper); - var parentNode = childNode.parentNode; - if (parentNode) originalRemoveChild.call(parentNode, childNode); - childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = null; - childWrapper = nextSibling; - } - wrapper.firstChild_ = wrapper.lastChild_ = null; - } else { - var node = unwrap(wrapper); - var child = node.firstChild; - var nextSibling; - while (child) { - nextSibling = child.nextSibling; - originalRemoveChild.call(node, child); - child = nextSibling; - } - } - } - function invalidateParent(node) { - var p = node.parentNode; - return p && p.invalidateShadowRenderer(); - } - function cleanupNodes(nodes) { - for (var i = 0, n; i < nodes.length; i++) { - n = nodes[i]; - n.parentNode.removeChild(n); - } - } - var originalImportNode = document.importNode; - var originalCloneNode = window.Node.prototype.cloneNode; - function cloneNode(node, deep, opt_doc) { - var clone; - if (opt_doc) clone = wrap(originalImportNode.call(opt_doc, unsafeUnwrap(node), false)); else clone = wrap(originalCloneNode.call(unsafeUnwrap(node), false)); - if (deep) { - for (var child = node.firstChild; child; child = child.nextSibling) { - clone.appendChild(cloneNode(child, true, opt_doc)); - } - if (node instanceof wrappers.HTMLTemplateElement) { - var cloneContent = clone.content; - for (var child = node.content.firstChild; child; child = child.nextSibling) { - cloneContent.appendChild(cloneNode(child, true, opt_doc)); - } - } - } - return clone; - } - function contains(self, child) { - if (!child || getTreeScope(self) !== getTreeScope(child)) return false; - for (var node = child; node; node = node.parentNode) { - if (node === self) return true; - } - return false; - } - var OriginalNode = window.Node; - function Node(original) { - assert(original instanceof OriginalNode); - EventTarget.call(this, original); - this.parentNode_ = undefined; - this.firstChild_ = undefined; - this.lastChild_ = undefined; - this.nextSibling_ = undefined; - this.previousSibling_ = undefined; - this.treeScope_ = undefined; - } - var OriginalDocumentFragment = window.DocumentFragment; - var originalAppendChild = OriginalNode.prototype.appendChild; - var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPosition; - var originalIsEqualNode = OriginalNode.prototype.isEqualNode; - var originalInsertBefore = OriginalNode.prototype.insertBefore; - var originalRemoveChild = OriginalNode.prototype.removeChild; - var originalReplaceChild = OriginalNode.prototype.replaceChild; - var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent); - var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) { - try { - originalRemoveChild.call(parent, child); - } catch (ex) { - if (!(parent instanceof OriginalDocumentFragment)) throw ex; - } - } : function(parent, child) { - originalRemoveChild.call(parent, child); - }; - Node.prototype = Object.create(EventTarget.prototype); - mixin(Node.prototype, { - appendChild: function(childWrapper) { - return this.insertBefore(childWrapper, null); - }, - insertBefore: function(childWrapper, refWrapper) { - assertIsNodeWrapper(childWrapper); - var refNode; - if (refWrapper) { - if (isWrapper(refWrapper)) { - refNode = unwrap(refWrapper); - } else { - refNode = refWrapper; - refWrapper = wrap(refNode); - } - } else { - refWrapper = null; - refNode = null; - } - refWrapper && assert(refWrapper.parentNode === this); - var nodes; - var previousNode = refWrapper ? refWrapper.previousSibling : this.lastChild; - var useNative = !this.invalidateShadowRenderer() && !invalidateParent(childWrapper); - if (useNative) nodes = collectNodesNative(childWrapper); else nodes = collectNodes(childWrapper, this, previousNode, refWrapper); - if (useNative) { - ensureSameOwnerDocument(this, childWrapper); - clearChildNodes(this); - originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode); - } else { - if (!previousNode) this.firstChild_ = nodes[0]; - if (!refWrapper) { - this.lastChild_ = nodes[nodes.length - 1]; - if (this.firstChild_ === undefined) this.firstChild_ = this.firstChild; - } - var parentNode = refNode ? refNode.parentNode : unsafeUnwrap(this); - if (parentNode) { - originalInsertBefore.call(parentNode, unwrapNodesForInsertion(this, nodes), refNode); - } else { - adoptNodesIfNeeded(this, nodes); - } - } - enqueueMutation(this, "childList", { - addedNodes: nodes, - nextSibling: refWrapper, - previousSibling: previousNode - }); - nodesWereAdded(nodes, this); - return childWrapper; - }, - removeChild: function(childWrapper) { - assertIsNodeWrapper(childWrapper); - if (childWrapper.parentNode !== this) { - var found = false; - var childNodes = this.childNodes; - for (var ieChild = this.firstChild; ieChild; ieChild = ieChild.nextSibling) { - if (ieChild === childWrapper) { - found = true; - break; - } - } - if (!found) { - throw new Error("NotFoundError"); - } - } - var childNode = unwrap(childWrapper); - var childWrapperNextSibling = childWrapper.nextSibling; - var childWrapperPreviousSibling = childWrapper.previousSibling; - if (this.invalidateShadowRenderer()) { - var thisFirstChild = this.firstChild; - var thisLastChild = this.lastChild; - var parentNode = childNode.parentNode; - if (parentNode) removeChildOriginalHelper(parentNode, childNode); - if (thisFirstChild === childWrapper) this.firstChild_ = childWrapperNextSibling; - if (thisLastChild === childWrapper) this.lastChild_ = childWrapperPreviousSibling; - if (childWrapperPreviousSibling) childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling; - if (childWrapperNextSibling) { - childWrapperNextSibling.previousSibling_ = childWrapperPreviousSibling; - } - childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = undefined; - } else { - clearChildNodes(this); - removeChildOriginalHelper(unsafeUnwrap(this), childNode); - } - if (!surpressMutations) { - enqueueMutation(this, "childList", { - removedNodes: createOneElementNodeList(childWrapper), - nextSibling: childWrapperNextSibling, - previousSibling: childWrapperPreviousSibling - }); - } - registerTransientObservers(this, childWrapper); - return childWrapper; - }, - replaceChild: function(newChildWrapper, oldChildWrapper) { - assertIsNodeWrapper(newChildWrapper); - var oldChildNode; - if (isWrapper(oldChildWrapper)) { - oldChildNode = unwrap(oldChildWrapper); - } else { - oldChildNode = oldChildWrapper; - oldChildWrapper = wrap(oldChildNode); - } - if (oldChildWrapper.parentNode !== this) { - throw new Error("NotFoundError"); - } - var nextNode = oldChildWrapper.nextSibling; - var previousNode = oldChildWrapper.previousSibling; - var nodes; - var useNative = !this.invalidateShadowRenderer() && !invalidateParent(newChildWrapper); - if (useNative) { - nodes = collectNodesNative(newChildWrapper); - } else { - if (nextNode === newChildWrapper) nextNode = newChildWrapper.nextSibling; - nodes = collectNodes(newChildWrapper, this, previousNode, nextNode); - } - if (!useNative) { - if (this.firstChild === oldChildWrapper) this.firstChild_ = nodes[0]; - if (this.lastChild === oldChildWrapper) this.lastChild_ = nodes[nodes.length - 1]; - oldChildWrapper.previousSibling_ = oldChildWrapper.nextSibling_ = oldChildWrapper.parentNode_ = undefined; - if (oldChildNode.parentNode) { - originalReplaceChild.call(oldChildNode.parentNode, unwrapNodesForInsertion(this, nodes), oldChildNode); - } - } else { - ensureSameOwnerDocument(this, newChildWrapper); - clearChildNodes(this); - originalReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper), oldChildNode); - } - enqueueMutation(this, "childList", { - addedNodes: nodes, - removedNodes: createOneElementNodeList(oldChildWrapper), - nextSibling: nextNode, - previousSibling: previousNode - }); - nodeWasRemoved(oldChildWrapper); - nodesWereAdded(nodes, this); - return oldChildWrapper; - }, - nodeIsInserted_: function() { - for (var child = this.firstChild; child; child = child.nextSibling) { - child.nodeIsInserted_(); - } - }, - hasChildNodes: function() { - return this.firstChild !== null; - }, - get parentNode() { - return this.parentNode_ !== undefined ? this.parentNode_ : wrap(unsafeUnwrap(this).parentNode); - }, - get firstChild() { - return this.firstChild_ !== undefined ? this.firstChild_ : wrap(unsafeUnwrap(this).firstChild); - }, - get lastChild() { - return this.lastChild_ !== undefined ? this.lastChild_ : wrap(unsafeUnwrap(this).lastChild); - }, - get nextSibling() { - return this.nextSibling_ !== undefined ? this.nextSibling_ : wrap(unsafeUnwrap(this).nextSibling); - }, - get previousSibling() { - return this.previousSibling_ !== undefined ? this.previousSibling_ : wrap(unsafeUnwrap(this).previousSibling); - }, - get parentElement() { - var p = this.parentNode; - while (p && p.nodeType !== Node.ELEMENT_NODE) { - p = p.parentNode; - } - return p; - }, - get textContent() { - var s = ""; - for (var child = this.firstChild; child; child = child.nextSibling) { - if (child.nodeType != Node.COMMENT_NODE) { - s += child.textContent; - } - } - return s; - }, - set textContent(textContent) { - if (textContent == null) textContent = ""; - var removedNodes = snapshotNodeList(this.childNodes); - if (this.invalidateShadowRenderer()) { - removeAllChildNodes(this); - if (textContent !== "") { - var textNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent); - this.appendChild(textNode); - } - } else { - clearChildNodes(this); - unsafeUnwrap(this).textContent = textContent; - } - var addedNodes = snapshotNodeList(this.childNodes); - enqueueMutation(this, "childList", { - addedNodes: addedNodes, - removedNodes: removedNodes - }); - nodesWereRemoved(removedNodes); - nodesWereAdded(addedNodes, this); - }, - get childNodes() { - var wrapperList = new NodeList(); - var i = 0; - for (var child = this.firstChild; child; child = child.nextSibling) { - wrapperList[i++] = child; - } - wrapperList.length = i; - return wrapperList; - }, - cloneNode: function(deep) { - return cloneNode(this, deep); - }, - contains: function(child) { - return contains(this, wrapIfNeeded(child)); - }, - compareDocumentPosition: function(otherNode) { - return originalCompareDocumentPosition.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode)); - }, - isEqualNode: function(otherNode) { - return originalIsEqualNode.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode)); - }, - normalize: function() { - var nodes = snapshotNodeList(this.childNodes); - var remNodes = []; - var s = ""; - var modNode; - for (var i = 0, n; i < nodes.length; i++) { - n = nodes[i]; - if (n.nodeType === Node.TEXT_NODE) { - if (!modNode && !n.data.length) this.removeChild(n); else if (!modNode) modNode = n; else { - s += n.data; - remNodes.push(n); - } - } else { - if (modNode && remNodes.length) { - modNode.data += s; - cleanupNodes(remNodes); - } - remNodes = []; - s = ""; - modNode = null; - if (n.childNodes.length) n.normalize(); - } - } - if (modNode && remNodes.length) { - modNode.data += s; - cleanupNodes(remNodes); - } - } - }); - defineWrapGetter(Node, "ownerDocument"); - registerWrapper(OriginalNode, Node, document.createDocumentFragment()); - delete Node.prototype.querySelector; - delete Node.prototype.querySelectorAll; - Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype); - scope.cloneNode = cloneNode; - scope.nodeWasAdded = nodeWasAdded; - scope.nodeWasRemoved = nodeWasRemoved; - scope.nodesWereAdded = nodesWereAdded; - scope.nodesWereRemoved = nodesWereRemoved; - scope.originalInsertBefore = originalInsertBefore; - scope.originalRemoveChild = originalRemoveChild; - scope.snapshotNodeList = snapshotNodeList; - scope.wrappers.Node = Node; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLCollection = scope.wrappers.HTMLCollection; - var NodeList = scope.wrappers.NodeList; - var getTreeScope = scope.getTreeScope; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var originalDocumentQuerySelector = document.querySelector; - var originalElementQuerySelector = document.documentElement.querySelector; - var originalDocumentQuerySelectorAll = document.querySelectorAll; - var originalElementQuerySelectorAll = document.documentElement.querySelectorAll; - var originalDocumentGetElementsByTagName = document.getElementsByTagName; - var originalElementGetElementsByTagName = document.documentElement.getElementsByTagName; - var originalDocumentGetElementsByTagNameNS = document.getElementsByTagNameNS; - var originalElementGetElementsByTagNameNS = document.documentElement.getElementsByTagNameNS; - var OriginalElement = window.Element; - var OriginalDocument = window.HTMLDocument || window.Document; - function filterNodeList(list, index, result, deep) { - var wrappedItem = null; - var root = null; - for (var i = 0, length = list.length; i < length; i++) { - wrappedItem = wrap(list[i]); - if (!deep && (root = getTreeScope(wrappedItem).root)) { - if (root instanceof scope.wrappers.ShadowRoot) { - continue; - } - } - result[index++] = wrappedItem; - } - return index; - } - function shimSelector(selector) { - return String(selector).replace(/\/deep\/|::shadow|>>>/g, " "); - } - function shimMatchesSelector(selector) { - return String(selector).replace(/:host\(([^\s]+)\)/g, "$1").replace(/([^\s]):host/g, "$1").replace(":host", "*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g, " "); - } - function findOne(node, selector) { - var m, el = node.firstElementChild; - while (el) { - if (el.matches(selector)) return el; - m = findOne(el, selector); - if (m) return m; - el = el.nextElementSibling; - } - return null; - } - function matchesSelector(el, selector) { - return el.matches(selector); - } - var XHTML_NS = "http://www.w3.org/1999/xhtml"; - function matchesTagName(el, localName, localNameLowerCase) { - var ln = el.localName; - return ln === localName || ln === localNameLowerCase && el.namespaceURI === XHTML_NS; - } - function matchesEveryThing() { - return true; - } - function matchesLocalNameOnly(el, ns, localName) { - return el.localName === localName; - } - function matchesNameSpace(el, ns) { - return el.namespaceURI === ns; - } - function matchesLocalNameNS(el, ns, localName) { - return el.namespaceURI === ns && el.localName === localName; - } - function findElements(node, index, result, p, arg0, arg1) { - var el = node.firstElementChild; - while (el) { - if (p(el, arg0, arg1)) result[index++] = el; - index = findElements(el, index, result, p, arg0, arg1); - el = el.nextElementSibling; - } - return index; - } - function querySelectorAllFiltered(p, index, result, selector, deep) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, selector, null); - } else if (target instanceof OriginalElement) { - list = originalElementQuerySelectorAll.call(target, selector); - } else if (target instanceof OriginalDocument) { - list = originalDocumentQuerySelectorAll.call(target, selector); - } else { - return findElements(this, index, result, p, selector, null); - } - return filterNodeList(list, index, result, deep); - } - var SelectorsInterface = { - querySelector: function(selector) { - var shimmed = shimSelector(selector); - var deep = shimmed !== selector; - selector = shimmed; - var target = unsafeUnwrap(this); - var wrappedItem; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findOne(this, selector); - } else if (target instanceof OriginalElement) { - wrappedItem = wrap(originalElementQuerySelector.call(target, selector)); - } else if (target instanceof OriginalDocument) { - wrappedItem = wrap(originalDocumentQuerySelector.call(target, selector)); - } else { - return findOne(this, selector); - } - if (!wrappedItem) { - return wrappedItem; - } else if (!deep && (root = getTreeScope(wrappedItem).root)) { - if (root instanceof scope.wrappers.ShadowRoot) { - return findOne(this, selector); - } - } - return wrappedItem; - }, - querySelectorAll: function(selector) { - var shimmed = shimSelector(selector); - var deep = shimmed !== selector; - selector = shimmed; - var result = new NodeList(); - result.length = querySelectorAllFiltered.call(this, matchesSelector, 0, result, selector, deep); - return result; - } - }; - var MatchesInterface = { - matches: function(selector) { - selector = shimMatchesSelector(selector); - return scope.originalMatches.call(unsafeUnwrap(this), selector); - } - }; - function getElementsByTagNameFiltered(p, index, result, localName, lowercase) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, localName, lowercase); - } else if (target instanceof OriginalElement) { - list = originalElementGetElementsByTagName.call(target, localName, lowercase); - } else if (target instanceof OriginalDocument) { - list = originalDocumentGetElementsByTagName.call(target, localName, lowercase); - } else { - return findElements(this, index, result, p, localName, lowercase); - } - return filterNodeList(list, index, result, false); - } - function getElementsByTagNameNSFiltered(p, index, result, ns, localName) { - var target = unsafeUnwrap(this); - var list; - var root = getTreeScope(this).root; - if (root instanceof scope.wrappers.ShadowRoot) { - return findElements(this, index, result, p, ns, localName); - } else if (target instanceof OriginalElement) { - list = originalElementGetElementsByTagNameNS.call(target, ns, localName); - } else if (target instanceof OriginalDocument) { - list = originalDocumentGetElementsByTagNameNS.call(target, ns, localName); - } else { - return findElements(this, index, result, p, ns, localName); - } - return filterNodeList(list, index, result, false); - } - var GetElementsByInterface = { - getElementsByTagName: function(localName) { - var result = new HTMLCollection(); - var match = localName === "*" ? matchesEveryThing : matchesTagName; - result.length = getElementsByTagNameFiltered.call(this, match, 0, result, localName, localName.toLowerCase()); - return result; - }, - getElementsByClassName: function(className) { - return this.querySelectorAll("." + className); - }, - getElementsByTagNameNS: function(ns, localName) { - var result = new HTMLCollection(); - var match = null; - if (ns === "*") { - match = localName === "*" ? matchesEveryThing : matchesLocalNameOnly; - } else { - match = localName === "*" ? matchesNameSpace : matchesLocalNameNS; - } - result.length = getElementsByTagNameNSFiltered.call(this, match, 0, result, ns || null, localName); - return result; - } - }; - scope.GetElementsByInterface = GetElementsByInterface; - scope.SelectorsInterface = SelectorsInterface; - scope.MatchesInterface = MatchesInterface; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var NodeList = scope.wrappers.NodeList; - function forwardElement(node) { - while (node && node.nodeType !== Node.ELEMENT_NODE) { - node = node.nextSibling; - } - return node; - } - function backwardsElement(node) { - while (node && node.nodeType !== Node.ELEMENT_NODE) { - node = node.previousSibling; - } - return node; - } - var ParentNodeInterface = { - get firstElementChild() { - return forwardElement(this.firstChild); - }, - get lastElementChild() { - return backwardsElement(this.lastChild); - }, - get childElementCount() { - var count = 0; - for (var child = this.firstElementChild; child; child = child.nextElementSibling) { - count++; - } - return count; - }, - get children() { - var wrapperList = new NodeList(); - var i = 0; - for (var child = this.firstElementChild; child; child = child.nextElementSibling) { - wrapperList[i++] = child; - } - wrapperList.length = i; - return wrapperList; - }, - remove: function() { - var p = this.parentNode; - if (p) p.removeChild(this); - } - }; - var ChildNodeInterface = { - get nextElementSibling() { - return forwardElement(this.nextSibling); - }, - get previousElementSibling() { - return backwardsElement(this.previousSibling); - } - }; - var NonElementParentNodeInterface = { - getElementById: function(id) { - if (/[ \t\n\r\f]/.test(id)) return null; - return this.querySelector('[id="' + id + '"]'); - } - }; - scope.ChildNodeInterface = ChildNodeInterface; - scope.NonElementParentNodeInterface = NonElementParentNodeInterface; - scope.ParentNodeInterface = ParentNodeInterface; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var ChildNodeInterface = scope.ChildNodeInterface; - var Node = scope.wrappers.Node; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var OriginalCharacterData = window.CharacterData; - function CharacterData(node) { - Node.call(this, node); - } - CharacterData.prototype = Object.create(Node.prototype); - mixin(CharacterData.prototype, { - get nodeValue() { - return this.data; - }, - set nodeValue(data) { - this.data = data; - }, - get textContent() { - return this.data; - }, - set textContent(value) { - this.data = value; - }, - get data() { - return unsafeUnwrap(this).data; - }, - set data(value) { - var oldValue = unsafeUnwrap(this).data; - enqueueMutation(this, "characterData", { - oldValue: oldValue - }); - unsafeUnwrap(this).data = value; - } - }); - mixin(CharacterData.prototype, ChildNodeInterface); - registerWrapper(OriginalCharacterData, CharacterData, document.createTextNode("")); - scope.wrappers.CharacterData = CharacterData; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var CharacterData = scope.wrappers.CharacterData; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - function toUInt32(x) { - return x >>> 0; - } - var OriginalText = window.Text; - function Text(node) { - CharacterData.call(this, node); - } - Text.prototype = Object.create(CharacterData.prototype); - mixin(Text.prototype, { - splitText: function(offset) { - offset = toUInt32(offset); - var s = this.data; - if (offset > s.length) throw new Error("IndexSizeError"); - var head = s.slice(0, offset); - var tail = s.slice(offset); - this.data = head; - var newTextNode = this.ownerDocument.createTextNode(tail); - if (this.parentNode) this.parentNode.insertBefore(newTextNode, this.nextSibling); - return newTextNode; - } - }); - registerWrapper(OriginalText, Text, document.createTextNode("")); - scope.wrappers.Text = Text; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - if (!window.DOMTokenList) { - console.warn("Missing DOMTokenList prototype, please include a " + "compatible classList polyfill such as http://goo.gl/uTcepH."); - return; - } - var unsafeUnwrap = scope.unsafeUnwrap; - var enqueueMutation = scope.enqueueMutation; - function getClass(el) { - return unsafeUnwrap(el).getAttribute("class"); - } - function enqueueClassAttributeChange(el, oldValue) { - enqueueMutation(el, "attributes", { - name: "class", - namespace: null, - oldValue: oldValue - }); - } - function invalidateClass(el) { - scope.invalidateRendererBasedOnAttribute(el, "class"); - } - function changeClass(tokenList, method, args) { - var ownerElement = tokenList.ownerElement_; - if (ownerElement == null) { - return method.apply(tokenList, args); - } - var oldValue = getClass(ownerElement); - var retv = method.apply(tokenList, args); - if (getClass(ownerElement) !== oldValue) { - enqueueClassAttributeChange(ownerElement, oldValue); - invalidateClass(ownerElement); - } - return retv; - } - var oldAdd = DOMTokenList.prototype.add; - DOMTokenList.prototype.add = function() { - changeClass(this, oldAdd, arguments); - }; - var oldRemove = DOMTokenList.prototype.remove; - DOMTokenList.prototype.remove = function() { - changeClass(this, oldRemove, arguments); - }; - var oldToggle = DOMTokenList.prototype.toggle; - DOMTokenList.prototype.toggle = function() { - return changeClass(this, oldToggle, arguments); - }; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var ChildNodeInterface = scope.ChildNodeInterface; - var GetElementsByInterface = scope.GetElementsByInterface; - var Node = scope.wrappers.Node; - var ParentNodeInterface = scope.ParentNodeInterface; - var SelectorsInterface = scope.SelectorsInterface; - var MatchesInterface = scope.MatchesInterface; - var addWrapNodeListMethod = scope.addWrapNodeListMethod; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var oneOf = scope.oneOf; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrappers = scope.wrappers; - var OriginalElement = window.Element; - var matchesNames = [ "matches", "mozMatchesSelector", "msMatchesSelector", "webkitMatchesSelector" ].filter(function(name) { - return OriginalElement.prototype[name]; - }); - var matchesName = matchesNames[0]; - var originalMatches = OriginalElement.prototype[matchesName]; - function invalidateRendererBasedOnAttribute(element, name) { - var p = element.parentNode; - if (!p || !p.shadowRoot) return; - var renderer = scope.getRendererForHost(p); - if (renderer.dependsOnAttribute(name)) renderer.invalidate(); - } - function enqueAttributeChange(element, name, oldValue) { - enqueueMutation(element, "attributes", { - name: name, - namespace: null, - oldValue: oldValue - }); - } - var classListTable = new WeakMap(); - function Element(node) { - Node.call(this, node); - } - Element.prototype = Object.create(Node.prototype); - mixin(Element.prototype, { - createShadowRoot: function() { - var newShadowRoot = new wrappers.ShadowRoot(this); - unsafeUnwrap(this).polymerShadowRoot_ = newShadowRoot; - var renderer = scope.getRendererForHost(this); - renderer.invalidate(); - return newShadowRoot; - }, - get shadowRoot() { - return unsafeUnwrap(this).polymerShadowRoot_ || null; - }, - setAttribute: function(name, value) { - var oldValue = unsafeUnwrap(this).getAttribute(name); - unsafeUnwrap(this).setAttribute(name, value); - enqueAttributeChange(this, name, oldValue); - invalidateRendererBasedOnAttribute(this, name); - }, - removeAttribute: function(name) { - var oldValue = unsafeUnwrap(this).getAttribute(name); - unsafeUnwrap(this).removeAttribute(name); - enqueAttributeChange(this, name, oldValue); - invalidateRendererBasedOnAttribute(this, name); - }, - get classList() { - var list = classListTable.get(this); - if (!list) { - list = unsafeUnwrap(this).classList; - if (!list) return; - list.ownerElement_ = this; - classListTable.set(this, list); - } - return list; - }, - get className() { - return unsafeUnwrap(this).className; - }, - set className(v) { - this.setAttribute("class", v); - }, - get id() { - return unsafeUnwrap(this).id; - }, - set id(v) { - this.setAttribute("id", v); - } - }); - matchesNames.forEach(function(name) { - if (name !== "matches") { - Element.prototype[name] = function(selector) { - return this.matches(selector); - }; - } - }); - if (OriginalElement.prototype.webkitCreateShadowRoot) { - Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRoot; - } - mixin(Element.prototype, ChildNodeInterface); - mixin(Element.prototype, GetElementsByInterface); - mixin(Element.prototype, ParentNodeInterface); - mixin(Element.prototype, SelectorsInterface); - mixin(Element.prototype, MatchesInterface); - registerWrapper(OriginalElement, Element, document.createElementNS(null, "x")); - scope.invalidateRendererBasedOnAttribute = invalidateRendererBasedOnAttribute; - scope.matchesNames = matchesNames; - scope.originalMatches = originalMatches; - scope.wrappers.Element = Element; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var defineGetter = scope.defineGetter; - var enqueueMutation = scope.enqueueMutation; - var mixin = scope.mixin; - var nodesWereAdded = scope.nodesWereAdded; - var nodesWereRemoved = scope.nodesWereRemoved; - var registerWrapper = scope.registerWrapper; - var snapshotNodeList = scope.snapshotNodeList; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrappers = scope.wrappers; - var escapeAttrRegExp = /[&\u00A0"]/g; - var escapeDataRegExp = /[&\u00A0<>]/g; - function escapeReplace(c) { - switch (c) { - case "&": - return "&"; - - case "<": - return "<"; - - case ">": - return ">"; - - case '"': - return """; - - case " ": - return " "; - } - } - function escapeAttr(s) { - return s.replace(escapeAttrRegExp, escapeReplace); - } - function escapeData(s) { - return s.replace(escapeDataRegExp, escapeReplace); - } - function makeSet(arr) { - var set = {}; - for (var i = 0; i < arr.length; i++) { - set[arr[i]] = true; - } - return set; - } - var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); - var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]); - var XHTML_NS = "http://www.w3.org/1999/xhtml"; - function needsSelfClosingSlash(node) { - if (node.namespaceURI !== XHTML_NS) return true; - var doctype = node.ownerDocument.doctype; - return doctype && doctype.publicId && doctype.systemId; - } - function getOuterHTML(node, parentNode) { - switch (node.nodeType) { - case Node.ELEMENT_NODE: - var tagName = node.tagName.toLowerCase(); - var s = "<" + tagName; - var attrs = node.attributes; - for (var i = 0, attr; attr = attrs[i]; i++) { - s += " " + attr.name + '="' + escapeAttr(attr.value) + '"'; - } - if (voidElements[tagName]) { - if (needsSelfClosingSlash(node)) s += "/"; - return s + ">"; - } - return s + ">" + getInnerHTML(node) + ""; - - case Node.TEXT_NODE: - var data = node.data; - if (parentNode && plaintextParents[parentNode.localName]) return data; - return escapeData(data); - - case Node.COMMENT_NODE: - return ""; - - default: - console.error(node); - throw new Error("not implemented"); - } - } - function getInnerHTML(node) { - if (node instanceof wrappers.HTMLTemplateElement) node = node.content; - var s = ""; - for (var child = node.firstChild; child; child = child.nextSibling) { - s += getOuterHTML(child, node); - } - return s; - } - function setInnerHTML(node, value, opt_tagName) { - var tagName = opt_tagName || "div"; - node.textContent = ""; - var tempElement = unwrap(node.ownerDocument.createElement(tagName)); - tempElement.innerHTML = value; - var firstChild; - while (firstChild = tempElement.firstChild) { - node.appendChild(wrap(firstChild)); - } - } - var oldIe = /MSIE/.test(navigator.userAgent); - var OriginalHTMLElement = window.HTMLElement; - var OriginalHTMLTemplateElement = window.HTMLTemplateElement; - function HTMLElement(node) { - Element.call(this, node); - } - HTMLElement.prototype = Object.create(Element.prototype); - mixin(HTMLElement.prototype, { - get innerHTML() { - return getInnerHTML(this); - }, - set innerHTML(value) { - if (oldIe && plaintextParents[this.localName]) { - this.textContent = value; - return; - } - var removedNodes = snapshotNodeList(this.childNodes); - if (this.invalidateShadowRenderer()) { - if (this instanceof wrappers.HTMLTemplateElement) setInnerHTML(this.content, value); else setInnerHTML(this, value, this.tagName); - } else if (!OriginalHTMLTemplateElement && this instanceof wrappers.HTMLTemplateElement) { - setInnerHTML(this.content, value); - } else { - unsafeUnwrap(this).innerHTML = value; - } - var addedNodes = snapshotNodeList(this.childNodes); - enqueueMutation(this, "childList", { - addedNodes: addedNodes, - removedNodes: removedNodes - }); - nodesWereRemoved(removedNodes); - nodesWereAdded(addedNodes, this); - }, - get outerHTML() { - return getOuterHTML(this, this.parentNode); - }, - set outerHTML(value) { - var p = this.parentNode; - if (p) { - p.invalidateShadowRenderer(); - var df = frag(p, value); - p.replaceChild(df, this); - } - }, - insertAdjacentHTML: function(position, text) { - var contextElement, refNode; - switch (String(position).toLowerCase()) { - case "beforebegin": - contextElement = this.parentNode; - refNode = this; - break; - - case "afterend": - contextElement = this.parentNode; - refNode = this.nextSibling; - break; - - case "afterbegin": - contextElement = this; - refNode = this.firstChild; - break; - - case "beforeend": - contextElement = this; - refNode = null; - break; - - default: - return; - } - var df = frag(contextElement, text); - contextElement.insertBefore(df, refNode); - }, - get hidden() { - return this.hasAttribute("hidden"); - }, - set hidden(v) { - if (v) { - this.setAttribute("hidden", ""); - } else { - this.removeAttribute("hidden"); - } - } - }); - function frag(contextElement, html) { - var p = unwrap(contextElement.cloneNode(false)); - p.innerHTML = html; - var df = unwrap(document.createDocumentFragment()); - var c; - while (c = p.firstChild) { - df.appendChild(c); - } - return wrap(df); - } - function getter(name) { - return function() { - scope.renderAllPending(); - return unsafeUnwrap(this)[name]; - }; - } - function getterRequiresRendering(name) { - defineGetter(HTMLElement, name, getter(name)); - } - [ "clientHeight", "clientLeft", "clientTop", "clientWidth", "offsetHeight", "offsetLeft", "offsetTop", "offsetWidth", "scrollHeight", "scrollWidth" ].forEach(getterRequiresRendering); - function getterAndSetterRequiresRendering(name) { - Object.defineProperty(HTMLElement.prototype, name, { - get: getter(name), - set: function(v) { - scope.renderAllPending(); - unsafeUnwrap(this)[name] = v; - }, - configurable: true, - enumerable: true - }); - } - [ "scrollLeft", "scrollTop" ].forEach(getterAndSetterRequiresRendering); - function methodRequiresRendering(name) { - Object.defineProperty(HTMLElement.prototype, name, { - value: function() { - scope.renderAllPending(); - return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); - }, - configurable: true, - enumerable: true - }); - } - [ "focus", "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(methodRequiresRendering); - registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b")); - scope.wrappers.HTMLElement = HTMLElement; - scope.getInnerHTML = getInnerHTML; - scope.setInnerHTML = setInnerHTML; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalHTMLCanvasElement = window.HTMLCanvasElement; - function HTMLCanvasElement(node) { - HTMLElement.call(this, node); - } - HTMLCanvasElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLCanvasElement.prototype, { - getContext: function() { - var context = unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this), arguments); - return context && wrap(context); - } - }); - registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement, document.createElement("canvas")); - scope.wrappers.HTMLCanvasElement = HTMLCanvasElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLContentElement = window.HTMLContentElement; - function HTMLContentElement(node) { - HTMLElement.call(this, node); - } - HTMLContentElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLContentElement.prototype, { - constructor: HTMLContentElement, - get select() { - return this.getAttribute("select"); - }, - set select(value) { - this.setAttribute("select", value); - }, - setAttribute: function(n, v) { - HTMLElement.prototype.setAttribute.call(this, n, v); - if (String(n).toLowerCase() === "select") this.invalidateShadowRenderer(true); - } - }); - if (OriginalHTMLContentElement) registerWrapper(OriginalHTMLContentElement, HTMLContentElement); - scope.wrappers.HTMLContentElement = HTMLContentElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var OriginalHTMLFormElement = window.HTMLFormElement; - function HTMLFormElement(node) { - HTMLElement.call(this, node); - } - HTMLFormElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLFormElement.prototype, { - get elements() { - return wrapHTMLCollection(unwrap(this).elements); - } - }); - registerWrapper(OriginalHTMLFormElement, HTMLFormElement, document.createElement("form")); - scope.wrappers.HTMLFormElement = HTMLFormElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var rewrap = scope.rewrap; - var OriginalHTMLImageElement = window.HTMLImageElement; - function HTMLImageElement(node) { - HTMLElement.call(this, node); - } - HTMLImageElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLImageElement, HTMLImageElement, document.createElement("img")); - function Image(width, height) { - if (!(this instanceof Image)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("img")); - HTMLElement.call(this, node); - rewrap(node, this); - if (width !== undefined) node.width = width; - if (height !== undefined) node.height = height; - } - Image.prototype = HTMLImageElement.prototype; - scope.wrappers.HTMLImageElement = HTMLImageElement; - scope.wrappers.Image = Image; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var NodeList = scope.wrappers.NodeList; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLShadowElement = window.HTMLShadowElement; - function HTMLShadowElement(node) { - HTMLElement.call(this, node); - } - HTMLShadowElement.prototype = Object.create(HTMLElement.prototype); - HTMLShadowElement.prototype.constructor = HTMLShadowElement; - if (OriginalHTMLShadowElement) registerWrapper(OriginalHTMLShadowElement, HTMLShadowElement); - scope.wrappers.HTMLShadowElement = HTMLShadowElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var contentTable = new WeakMap(); - var templateContentsOwnerTable = new WeakMap(); - function getTemplateContentsOwner(doc) { - if (!doc.defaultView) return doc; - var d = templateContentsOwnerTable.get(doc); - if (!d) { - d = doc.implementation.createHTMLDocument(""); - while (d.lastChild) { - d.removeChild(d.lastChild); - } - templateContentsOwnerTable.set(doc, d); - } - return d; - } - function extractContent(templateElement) { - var doc = getTemplateContentsOwner(templateElement.ownerDocument); - var df = unwrap(doc.createDocumentFragment()); - var child; - while (child = templateElement.firstChild) { - df.appendChild(child); - } - return df; - } - var OriginalHTMLTemplateElement = window.HTMLTemplateElement; - function HTMLTemplateElement(node) { - HTMLElement.call(this, node); - if (!OriginalHTMLTemplateElement) { - var content = extractContent(node); - contentTable.set(this, wrap(content)); - } - } - HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTemplateElement.prototype, { - constructor: HTMLTemplateElement, - get content() { - if (OriginalHTMLTemplateElement) return wrap(unsafeUnwrap(this).content); - return contentTable.get(this); - } - }); - if (OriginalHTMLTemplateElement) registerWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement); - scope.wrappers.HTMLTemplateElement = HTMLTemplateElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLMediaElement = window.HTMLMediaElement; - if (!OriginalHTMLMediaElement) return; - function HTMLMediaElement(node) { - HTMLElement.call(this, node); - } - HTMLMediaElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLMediaElement, HTMLMediaElement, document.createElement("audio")); - scope.wrappers.HTMLMediaElement = HTMLMediaElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLMediaElement = scope.wrappers.HTMLMediaElement; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var rewrap = scope.rewrap; - var OriginalHTMLAudioElement = window.HTMLAudioElement; - if (!OriginalHTMLAudioElement) return; - function HTMLAudioElement(node) { - HTMLMediaElement.call(this, node); - } - HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype); - registerWrapper(OriginalHTMLAudioElement, HTMLAudioElement, document.createElement("audio")); - function Audio(src) { - if (!(this instanceof Audio)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("audio")); - HTMLMediaElement.call(this, node); - rewrap(node, this); - node.setAttribute("preload", "auto"); - if (src !== undefined) node.setAttribute("src", src); - } - Audio.prototype = HTMLAudioElement.prototype; - scope.wrappers.HTMLAudioElement = HTMLAudioElement; - scope.wrappers.Audio = Audio; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var rewrap = scope.rewrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLOptionElement = window.HTMLOptionElement; - function trimText(s) { - return s.replace(/\s+/g, " ").trim(); - } - function HTMLOptionElement(node) { - HTMLElement.call(this, node); - } - HTMLOptionElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLOptionElement.prototype, { - get text() { - return trimText(this.textContent); - }, - set text(value) { - this.textContent = trimText(String(value)); - }, - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(OriginalHTMLOptionElement, HTMLOptionElement, document.createElement("option")); - function Option(text, value, defaultSelected, selected) { - if (!(this instanceof Option)) { - throw new TypeError("DOM object constructor cannot be called as a function."); - } - var node = unwrap(document.createElement("option")); - HTMLElement.call(this, node); - rewrap(node, this); - if (text !== undefined) node.text = text; - if (value !== undefined) node.setAttribute("value", value); - if (defaultSelected === true) node.setAttribute("selected", ""); - node.selected = selected === true; - } - Option.prototype = HTMLOptionElement.prototype; - scope.wrappers.HTMLOptionElement = HTMLOptionElement; - scope.wrappers.Option = Option; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLSelectElement = window.HTMLSelectElement; - function HTMLSelectElement(node) { - HTMLElement.call(this, node); - } - HTMLSelectElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLSelectElement.prototype, { - add: function(element, before) { - if (typeof before === "object") before = unwrap(before); - unwrap(this).add(unwrap(element), before); - }, - remove: function(indexOrNode) { - if (indexOrNode === undefined) { - HTMLElement.prototype.remove.call(this); - return; - } - if (typeof indexOrNode === "object") indexOrNode = unwrap(indexOrNode); - unwrap(this).remove(indexOrNode); - }, - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(OriginalHTMLSelectElement, HTMLSelectElement, document.createElement("select")); - scope.wrappers.HTMLSelectElement = HTMLSelectElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var OriginalHTMLTableElement = window.HTMLTableElement; - function HTMLTableElement(node) { - HTMLElement.call(this, node); - } - HTMLTableElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableElement.prototype, { - get caption() { - return wrap(unwrap(this).caption); - }, - createCaption: function() { - return wrap(unwrap(this).createCaption()); - }, - get tHead() { - return wrap(unwrap(this).tHead); - }, - createTHead: function() { - return wrap(unwrap(this).createTHead()); - }, - createTFoot: function() { - return wrap(unwrap(this).createTFoot()); - }, - get tFoot() { - return wrap(unwrap(this).tFoot); - }, - get tBodies() { - return wrapHTMLCollection(unwrap(this).tBodies); - }, - createTBody: function() { - return wrap(unwrap(this).createTBody()); - }, - get rows() { - return wrapHTMLCollection(unwrap(this).rows); - }, - insertRow: function(index) { - return wrap(unwrap(this).insertRow(index)); - } - }); - registerWrapper(OriginalHTMLTableElement, HTMLTableElement, document.createElement("table")); - scope.wrappers.HTMLTableElement = HTMLTableElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLTableSectionElement = window.HTMLTableSectionElement; - function HTMLTableSectionElement(node) { - HTMLElement.call(this, node); - } - HTMLTableSectionElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableSectionElement.prototype, { - constructor: HTMLTableSectionElement, - get rows() { - return wrapHTMLCollection(unwrap(this).rows); - }, - insertRow: function(index) { - return wrap(unwrap(this).insertRow(index)); - } - }); - registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionElement, document.createElement("thead")); - scope.wrappers.HTMLTableSectionElement = HTMLTableSectionElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var wrapHTMLCollection = scope.wrapHTMLCollection; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalHTMLTableRowElement = window.HTMLTableRowElement; - function HTMLTableRowElement(node) { - HTMLElement.call(this, node); - } - HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype); - mixin(HTMLTableRowElement.prototype, { - get cells() { - return wrapHTMLCollection(unwrap(this).cells); - }, - insertCell: function(index) { - return wrap(unwrap(this).insertCell(index)); - } - }); - registerWrapper(OriginalHTMLTableRowElement, HTMLTableRowElement, document.createElement("tr")); - scope.wrappers.HTMLTableRowElement = HTMLTableRowElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLContentElement = scope.wrappers.HTMLContentElement; - var HTMLElement = scope.wrappers.HTMLElement; - var HTMLShadowElement = scope.wrappers.HTMLShadowElement; - var HTMLTemplateElement = scope.wrappers.HTMLTemplateElement; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var OriginalHTMLUnknownElement = window.HTMLUnknownElement; - function HTMLUnknownElement(node) { - switch (node.localName) { - case "content": - return new HTMLContentElement(node); - - case "shadow": - return new HTMLShadowElement(node); - - case "template": - return new HTMLTemplateElement(node); - } - HTMLElement.call(this, node); - } - HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); - registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); - scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var HTMLElement = scope.wrappers.HTMLElement; - var registerWrapper = scope.registerWrapper; - var defineWrapGetter = scope.defineWrapGetter; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var mixin = scope.mixin; - var SVG_NS = "http://www.w3.org/2000/svg"; - var OriginalSVGElement = window.SVGElement; - var svgTitleElement = document.createElementNS(SVG_NS, "title"); - if (!("classList" in svgTitleElement)) { - var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"); - Object.defineProperty(HTMLElement.prototype, "classList", descr); - delete Element.prototype.classList; - } - function SVGElement(node) { - Element.call(this, node); - } - SVGElement.prototype = Object.create(Element.prototype); - mixin(SVGElement.prototype, { - get ownerSVGElement() { - return wrap(unsafeUnwrap(this).ownerSVGElement); - } - }); - registerWrapper(OriginalSVGElement, SVGElement, document.createElementNS(SVG_NS, "title")); - scope.wrappers.SVGElement = SVGElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var OriginalSVGUseElement = window.SVGUseElement; - var SVG_NS = "http://www.w3.org/2000/svg"; - var gWrapper = wrap(document.createElementNS(SVG_NS, "g")); - var useElement = document.createElementNS(SVG_NS, "use"); - var SVGGElement = gWrapper.constructor; - var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype); - var parentInterface = parentInterfacePrototype.constructor; - function SVGUseElement(impl) { - parentInterface.call(this, impl); - } - SVGUseElement.prototype = Object.create(parentInterfacePrototype); - if ("instanceRoot" in useElement) { - mixin(SVGUseElement.prototype, { - get instanceRoot() { - return wrap(unwrap(this).instanceRoot); - }, - get animatedInstanceRoot() { - return wrap(unwrap(this).animatedInstanceRoot); - } - }); - } - registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement); - scope.wrappers.SVGUseElement = SVGUseElement; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var wrap = scope.wrap; - var OriginalSVGElementInstance = window.SVGElementInstance; - if (!OriginalSVGElementInstance) return; - function SVGElementInstance(impl) { - EventTarget.call(this, impl); - } - SVGElementInstance.prototype = Object.create(EventTarget.prototype); - mixin(SVGElementInstance.prototype, { - get correspondingElement() { - return wrap(unsafeUnwrap(this).correspondingElement); - }, - get correspondingUseElement() { - return wrap(unsafeUnwrap(this).correspondingUseElement); - }, - get parentNode() { - return wrap(unsafeUnwrap(this).parentNode); - }, - get childNodes() { - throw new Error("Not implemented"); - }, - get firstChild() { - return wrap(unsafeUnwrap(this).firstChild); - }, - get lastChild() { - return wrap(unsafeUnwrap(this).lastChild); - }, - get previousSibling() { - return wrap(unsafeUnwrap(this).previousSibling); - }, - get nextSibling() { - return wrap(unsafeUnwrap(this).nextSibling); - } - }); - registerWrapper(OriginalSVGElementInstance, SVGElementInstance); - scope.wrappers.SVGElementInstance = SVGElementInstance; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D; - function CanvasRenderingContext2D(impl) { - setWrapper(impl, this); - } - mixin(CanvasRenderingContext2D.prototype, { - get canvas() { - return wrap(unsafeUnwrap(this).canvas); - }, - drawImage: function() { - arguments[0] = unwrapIfNeeded(arguments[0]); - unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this), arguments); - }, - createPattern: function() { - arguments[0] = unwrap(arguments[0]); - return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), arguments); - } - }); - registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d")); - scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var addForwardingProperties = scope.addForwardingProperties; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalWebGLRenderingContext = window.WebGLRenderingContext; - if (!OriginalWebGLRenderingContext) return; - function WebGLRenderingContext(impl) { - setWrapper(impl, this); - } - mixin(WebGLRenderingContext.prototype, { - get canvas() { - return wrap(unsafeUnwrap(this).canvas); - }, - texImage2D: function() { - arguments[5] = unwrapIfNeeded(arguments[5]); - unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); - }, - texSubImage2D: function() { - arguments[6] = unwrapIfNeeded(arguments[6]); - unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); - } - }); - var OriginalWebGLRenderingContextBase = Object.getPrototypeOf(OriginalWebGLRenderingContext.prototype); - if (OriginalWebGLRenderingContextBase !== Object.prototype) { - addForwardingProperties(OriginalWebGLRenderingContextBase, WebGLRenderingContext.prototype); - } - var instanceProperties = /WebKit/.test(navigator.userAgent) ? { - drawingBufferHeight: null, - drawingBufferWidth: null - } : {}; - registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instanceProperties); - scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var Node = scope.wrappers.Node; - var GetElementsByInterface = scope.GetElementsByInterface; - var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; - var ParentNodeInterface = scope.ParentNodeInterface; - var SelectorsInterface = scope.SelectorsInterface; - var mixin = scope.mixin; - var registerObject = scope.registerObject; - var registerWrapper = scope.registerWrapper; - var OriginalDocumentFragment = window.DocumentFragment; - function DocumentFragment(node) { - Node.call(this, node); - } - DocumentFragment.prototype = Object.create(Node.prototype); - mixin(DocumentFragment.prototype, ParentNodeInterface); - mixin(DocumentFragment.prototype, SelectorsInterface); - mixin(DocumentFragment.prototype, GetElementsByInterface); - mixin(DocumentFragment.prototype, NonElementParentNodeInterface); - registerWrapper(OriginalDocumentFragment, DocumentFragment, document.createDocumentFragment()); - scope.wrappers.DocumentFragment = DocumentFragment; - var Comment = registerObject(document.createComment("")); - scope.wrappers.Comment = Comment; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var DocumentFragment = scope.wrappers.DocumentFragment; - var TreeScope = scope.TreeScope; - var elementFromPoint = scope.elementFromPoint; - var getInnerHTML = scope.getInnerHTML; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var rewrap = scope.rewrap; - var setInnerHTML = scope.setInnerHTML; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var shadowHostTable = new WeakMap(); - var nextOlderShadowTreeTable = new WeakMap(); - function ShadowRoot(hostWrapper) { - var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment()); - DocumentFragment.call(this, node); - rewrap(node, this); - var oldShadowRoot = hostWrapper.shadowRoot; - nextOlderShadowTreeTable.set(this, oldShadowRoot); - this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrapper)); - shadowHostTable.set(this, hostWrapper); - } - ShadowRoot.prototype = Object.create(DocumentFragment.prototype); - mixin(ShadowRoot.prototype, { - constructor: ShadowRoot, - get innerHTML() { - return getInnerHTML(this); - }, - set innerHTML(value) { - setInnerHTML(this, value); - this.invalidateShadowRenderer(); - }, - get olderShadowRoot() { - return nextOlderShadowTreeTable.get(this) || null; - }, - get host() { - return shadowHostTable.get(this) || null; - }, - invalidateShadowRenderer: function() { - return shadowHostTable.get(this).invalidateShadowRenderer(); - }, - elementFromPoint: function(x, y) { - return elementFromPoint(this, this.ownerDocument, x, y); - }, - getSelection: function() { - return document.getSelection(); - }, - get activeElement() { - var unwrappedActiveElement = unwrap(this).ownerDocument.activeElement; - if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null; - var activeElement = wrap(unwrappedActiveElement); - while (!this.contains(activeElement)) { - while (activeElement.parentNode) { - activeElement = activeElement.parentNode; - } - if (activeElement.host) { - activeElement = activeElement.host; - } else { - return null; - } - } - return activeElement; - } - }); - scope.wrappers.ShadowRoot = ShadowRoot; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var getTreeScope = scope.getTreeScope; - var OriginalRange = window.Range; - var ShadowRoot = scope.wrappers.ShadowRoot; - function getHost(node) { - var root = getTreeScope(node).root; - if (root instanceof ShadowRoot) { - return root.host; - } - return null; - } - function hostNodeToShadowNode(refNode, offset) { - if (refNode.shadowRoot) { - offset = Math.min(refNode.childNodes.length - 1, offset); - var child = refNode.childNodes[offset]; - if (child) { - var insertionPoint = scope.getDestinationInsertionPoints(child); - if (insertionPoint.length > 0) { - var parentNode = insertionPoint[0].parentNode; - if (parentNode.nodeType == Node.ELEMENT_NODE) { - refNode = parentNode; - } - } - } - } - return refNode; - } - function shadowNodeToHostNode(node) { - node = wrap(node); - return getHost(node) || node; - } - function Range(impl) { - setWrapper(impl, this); - } - Range.prototype = { - get startContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).startContainer); - }, - get endContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).endContainer); - }, - get commonAncestorContainer() { - return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer); - }, - setStart: function(refNode, offset) { - refNode = hostNodeToShadowNode(refNode, offset); - unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode), offset); - }, - setEnd: function(refNode, offset) { - refNode = hostNodeToShadowNode(refNode, offset); - unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode), offset); - }, - setStartBefore: function(refNode) { - unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode)); - }, - setStartAfter: function(refNode) { - unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode)); - }, - setEndBefore: function(refNode) { - unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode)); - }, - setEndAfter: function(refNode) { - unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode)); - }, - selectNode: function(refNode) { - unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode)); - }, - selectNodeContents: function(refNode) { - unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode)); - }, - compareBoundaryPoints: function(how, sourceRange) { - return unsafeUnwrap(this).compareBoundaryPoints(how, unwrap(sourceRange)); - }, - extractContents: function() { - return wrap(unsafeUnwrap(this).extractContents()); - }, - cloneContents: function() { - return wrap(unsafeUnwrap(this).cloneContents()); - }, - insertNode: function(node) { - unsafeUnwrap(this).insertNode(unwrapIfNeeded(node)); - }, - surroundContents: function(newParent) { - unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent)); - }, - cloneRange: function() { - return wrap(unsafeUnwrap(this).cloneRange()); - }, - isPointInRange: function(node, offset) { - return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node), offset); - }, - comparePoint: function(node, offset) { - return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node), offset); - }, - intersectsNode: function(node) { - return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node)); - }, - toString: function() { - return unsafeUnwrap(this).toString(); - } - }; - if (OriginalRange.prototype.createContextualFragment) { - Range.prototype.createContextualFragment = function(html) { - return wrap(unsafeUnwrap(this).createContextualFragment(html)); - }; - } - registerWrapper(window.Range, Range, document.createRange()); - scope.wrappers.Range = Range; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var Element = scope.wrappers.Element; - var HTMLContentElement = scope.wrappers.HTMLContentElement; - var HTMLShadowElement = scope.wrappers.HTMLShadowElement; - var Node = scope.wrappers.Node; - var ShadowRoot = scope.wrappers.ShadowRoot; - var assert = scope.assert; - var getTreeScope = scope.getTreeScope; - var mixin = scope.mixin; - var oneOf = scope.oneOf; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var ArraySplice = scope.ArraySplice; - function updateWrapperUpAndSideways(wrapper) { - wrapper.previousSibling_ = wrapper.previousSibling; - wrapper.nextSibling_ = wrapper.nextSibling; - wrapper.parentNode_ = wrapper.parentNode; - } - function updateWrapperDown(wrapper) { - wrapper.firstChild_ = wrapper.firstChild; - wrapper.lastChild_ = wrapper.lastChild; - } - function updateAllChildNodes(parentNodeWrapper) { - assert(parentNodeWrapper instanceof Node); - for (var childWrapper = parentNodeWrapper.firstChild; childWrapper; childWrapper = childWrapper.nextSibling) { - updateWrapperUpAndSideways(childWrapper); - } - updateWrapperDown(parentNodeWrapper); - } - function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper) { - var parentNode = unwrap(parentNodeWrapper); - var newChild = unwrap(newChildWrapper); - var refChild = refChildWrapper ? unwrap(refChildWrapper) : null; - remove(newChildWrapper); - updateWrapperUpAndSideways(newChildWrapper); - if (!refChildWrapper) { - parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild; - if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild) parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild; - var lastChildWrapper = wrap(parentNode.lastChild); - if (lastChildWrapper) lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling; - } else { - if (parentNodeWrapper.firstChild === refChildWrapper) parentNodeWrapper.firstChild_ = refChildWrapper; - refChildWrapper.previousSibling_ = refChildWrapper.previousSibling; - } - scope.originalInsertBefore.call(parentNode, newChild, refChild); - } - function remove(nodeWrapper) { - var node = unwrap(nodeWrapper); - var parentNode = node.parentNode; - if (!parentNode) return; - var parentNodeWrapper = wrap(parentNode); - updateWrapperUpAndSideways(nodeWrapper); - if (nodeWrapper.previousSibling) nodeWrapper.previousSibling.nextSibling_ = nodeWrapper; - if (nodeWrapper.nextSibling) nodeWrapper.nextSibling.previousSibling_ = nodeWrapper; - if (parentNodeWrapper.lastChild === nodeWrapper) parentNodeWrapper.lastChild_ = nodeWrapper; - if (parentNodeWrapper.firstChild === nodeWrapper) parentNodeWrapper.firstChild_ = nodeWrapper; - scope.originalRemoveChild.call(parentNode, node); - } - var distributedNodesTable = new WeakMap(); - var destinationInsertionPointsTable = new WeakMap(); - var rendererForHostTable = new WeakMap(); - function resetDistributedNodes(insertionPoint) { - distributedNodesTable.set(insertionPoint, []); - } - function getDistributedNodes(insertionPoint) { - var rv = distributedNodesTable.get(insertionPoint); - if (!rv) distributedNodesTable.set(insertionPoint, rv = []); - return rv; - } - function getChildNodesSnapshot(node) { - var result = [], i = 0; - for (var child = node.firstChild; child; child = child.nextSibling) { - result[i++] = child; - } - return result; - } - var request = oneOf(window, [ "requestAnimationFrame", "mozRequestAnimationFrame", "webkitRequestAnimationFrame", "setTimeout" ]); - var pendingDirtyRenderers = []; - var renderTimer; - function renderAllPending() { - for (var i = 0; i < pendingDirtyRenderers.length; i++) { - var renderer = pendingDirtyRenderers[i]; - var parentRenderer = renderer.parentRenderer; - if (parentRenderer && parentRenderer.dirty) continue; - renderer.render(); - } - pendingDirtyRenderers = []; - } - function handleRequestAnimationFrame() { - renderTimer = null; - renderAllPending(); - } - function getRendererForHost(host) { - var renderer = rendererForHostTable.get(host); - if (!renderer) { - renderer = new ShadowRenderer(host); - rendererForHostTable.set(host, renderer); - } - return renderer; - } - function getShadowRootAncestor(node) { - var root = getTreeScope(node).root; - if (root instanceof ShadowRoot) return root; - return null; - } - function getRendererForShadowRoot(shadowRoot) { - return getRendererForHost(shadowRoot.host); - } - var spliceDiff = new ArraySplice(); - spliceDiff.equals = function(renderNode, rawNode) { - return unwrap(renderNode.node) === rawNode; - }; - function RenderNode(node) { - this.skip = false; - this.node = node; - this.childNodes = []; - } - RenderNode.prototype = { - append: function(node) { - var rv = new RenderNode(node); - this.childNodes.push(rv); - return rv; - }, - sync: function(opt_added) { - if (this.skip) return; - var nodeWrapper = this.node; - var newChildren = this.childNodes; - var oldChildren = getChildNodesSnapshot(unwrap(nodeWrapper)); - var added = opt_added || new WeakMap(); - var splices = spliceDiff.calculateSplices(newChildren, oldChildren); - var newIndex = 0, oldIndex = 0; - var lastIndex = 0; - for (var i = 0; i < splices.length; i++) { - var splice = splices[i]; - for (;lastIndex < splice.index; lastIndex++) { - oldIndex++; - newChildren[newIndex++].sync(added); - } - var removedCount = splice.removed.length; - for (var j = 0; j < removedCount; j++) { - var wrapper = wrap(oldChildren[oldIndex++]); - if (!added.get(wrapper)) remove(wrapper); - } - var addedCount = splice.addedCount; - var refNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]); - for (var j = 0; j < addedCount; j++) { - var newChildRenderNode = newChildren[newIndex++]; - var newChildWrapper = newChildRenderNode.node; - insertBefore(nodeWrapper, newChildWrapper, refNode); - added.set(newChildWrapper, true); - newChildRenderNode.sync(added); - } - lastIndex += addedCount; - } - for (var i = lastIndex; i < newChildren.length; i++) { - newChildren[i].sync(added); - } - } - }; - function ShadowRenderer(host) { - this.host = host; - this.dirty = false; - this.invalidateAttributes(); - this.associateNode(host); - } - ShadowRenderer.prototype = { - render: function(opt_renderNode) { - if (!this.dirty) return; - this.invalidateAttributes(); - var host = this.host; - this.distribution(host); - var renderNode = opt_renderNode || new RenderNode(host); - this.buildRenderTree(renderNode, host); - var topMostRenderer = !opt_renderNode; - if (topMostRenderer) renderNode.sync(); - this.dirty = false; - }, - get parentRenderer() { - return getTreeScope(this.host).renderer; - }, - invalidate: function() { - if (!this.dirty) { - this.dirty = true; - var parentRenderer = this.parentRenderer; - if (parentRenderer) parentRenderer.invalidate(); - pendingDirtyRenderers.push(this); - if (renderTimer) return; - renderTimer = window[request](handleRequestAnimationFrame, 0); - } - }, - distribution: function(root) { - this.resetAllSubtrees(root); - this.distributionResolution(root); - }, - resetAll: function(node) { - if (isInsertionPoint(node)) resetDistributedNodes(node); else resetDestinationInsertionPoints(node); - this.resetAllSubtrees(node); - }, - resetAllSubtrees: function(node) { - for (var child = node.firstChild; child; child = child.nextSibling) { - this.resetAll(child); - } - if (node.shadowRoot) this.resetAll(node.shadowRoot); - if (node.olderShadowRoot) this.resetAll(node.olderShadowRoot); - }, - distributionResolution: function(node) { - if (isShadowHost(node)) { - var shadowHost = node; - var pool = poolPopulation(shadowHost); - var shadowTrees = getShadowTrees(shadowHost); - for (var i = 0; i < shadowTrees.length; i++) { - this.poolDistribution(shadowTrees[i], pool); - } - for (var i = shadowTrees.length - 1; i >= 0; i--) { - var shadowTree = shadowTrees[i]; - var shadow = getShadowInsertionPoint(shadowTree); - if (shadow) { - var olderShadowRoot = shadowTree.olderShadowRoot; - if (olderShadowRoot) { - pool = poolPopulation(olderShadowRoot); - } - for (var j = 0; j < pool.length; j++) { - destributeNodeInto(pool[j], shadow); - } - } - this.distributionResolution(shadowTree); - } - } - for (var child = node.firstChild; child; child = child.nextSibling) { - this.distributionResolution(child); - } - }, - poolDistribution: function(node, pool) { - if (node instanceof HTMLShadowElement) return; - if (node instanceof HTMLContentElement) { - var content = node; - this.updateDependentAttributes(content.getAttribute("select")); - var anyDistributed = false; - for (var i = 0; i < pool.length; i++) { - var node = pool[i]; - if (!node) continue; - if (matches(node, content)) { - destributeNodeInto(node, content); - pool[i] = undefined; - anyDistributed = true; - } - } - if (!anyDistributed) { - for (var child = content.firstChild; child; child = child.nextSibling) { - destributeNodeInto(child, content); - } - } - return; - } - for (var child = node.firstChild; child; child = child.nextSibling) { - this.poolDistribution(child, pool); - } - }, - buildRenderTree: function(renderNode, node) { - var children = this.compose(node); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var childRenderNode = renderNode.append(child); - this.buildRenderTree(childRenderNode, child); - } - if (isShadowHost(node)) { - var renderer = getRendererForHost(node); - renderer.dirty = false; - } - }, - compose: function(node) { - var children = []; - var p = node.shadowRoot || node; - for (var child = p.firstChild; child; child = child.nextSibling) { - if (isInsertionPoint(child)) { - this.associateNode(p); - var distributedNodes = getDistributedNodes(child); - for (var j = 0; j < distributedNodes.length; j++) { - var distributedNode = distributedNodes[j]; - if (isFinalDestination(child, distributedNode)) children.push(distributedNode); - } - } else { - children.push(child); - } - } - return children; - }, - invalidateAttributes: function() { - this.attributes = Object.create(null); - }, - updateDependentAttributes: function(selector) { - if (!selector) return; - var attributes = this.attributes; - if (/\.\w+/.test(selector)) attributes["class"] = true; - if (/#\w+/.test(selector)) attributes["id"] = true; - selector.replace(/\[\s*([^\s=\|~\]]+)/g, function(_, name) { - attributes[name] = true; - }); - }, - dependsOnAttribute: function(name) { - return this.attributes[name]; - }, - associateNode: function(node) { - unsafeUnwrap(node).polymerShadowRenderer_ = this; - } - }; - function poolPopulation(node) { - var pool = []; - for (var child = node.firstChild; child; child = child.nextSibling) { - if (isInsertionPoint(child)) { - pool.push.apply(pool, getDistributedNodes(child)); - } else { - pool.push(child); - } - } - return pool; - } - function getShadowInsertionPoint(node) { - if (node instanceof HTMLShadowElement) return node; - if (node instanceof HTMLContentElement) return null; - for (var child = node.firstChild; child; child = child.nextSibling) { - var res = getShadowInsertionPoint(child); - if (res) return res; - } - return null; - } - function destributeNodeInto(child, insertionPoint) { - getDistributedNodes(insertionPoint).push(child); - var points = destinationInsertionPointsTable.get(child); - if (!points) destinationInsertionPointsTable.set(child, [ insertionPoint ]); else points.push(insertionPoint); - } - function getDestinationInsertionPoints(node) { - return destinationInsertionPointsTable.get(node); - } - function resetDestinationInsertionPoints(node) { - destinationInsertionPointsTable.set(node, undefined); - } - var selectorStartCharRe = /^(:not\()?[*.#[a-zA-Z_|]/; - function matches(node, contentElement) { - var select = contentElement.getAttribute("select"); - if (!select) return true; - select = select.trim(); - if (!select) return true; - if (!(node instanceof Element)) return false; - if (!selectorStartCharRe.test(select)) return false; - try { - return node.matches(select); - } catch (ex) { - return false; - } - } - function isFinalDestination(insertionPoint, node) { - var points = getDestinationInsertionPoints(node); - return points && points[points.length - 1] === insertionPoint; - } - function isInsertionPoint(node) { - return node instanceof HTMLContentElement || node instanceof HTMLShadowElement; - } - function isShadowHost(shadowHost) { - return shadowHost.shadowRoot; - } - function getShadowTrees(host) { - var trees = []; - for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) { - trees.push(tree); - } - return trees; - } - function render(host) { - new ShadowRenderer(host).render(); - } - Node.prototype.invalidateShadowRenderer = function(force) { - var renderer = unsafeUnwrap(this).polymerShadowRenderer_; - if (renderer) { - renderer.invalidate(); - return true; - } - return false; - }; - HTMLContentElement.prototype.getDistributedNodes = HTMLShadowElement.prototype.getDistributedNodes = function() { - renderAllPending(); - return getDistributedNodes(this); - }; - Element.prototype.getDestinationInsertionPoints = function() { - renderAllPending(); - return getDestinationInsertionPoints(this) || []; - }; - HTMLContentElement.prototype.nodeIsInserted_ = HTMLShadowElement.prototype.nodeIsInserted_ = function() { - this.invalidateShadowRenderer(); - var shadowRoot = getShadowRootAncestor(this); - var renderer; - if (shadowRoot) renderer = getRendererForShadowRoot(shadowRoot); - unsafeUnwrap(this).polymerShadowRenderer_ = renderer; - if (renderer) renderer.invalidate(); - }; - scope.getRendererForHost = getRendererForHost; - scope.getShadowTrees = getShadowTrees; - scope.renderAllPending = renderAllPending; - scope.getDestinationInsertionPoints = getDestinationInsertionPoints; - scope.visual = { - insertBefore: insertBefore, - remove: remove - }; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var HTMLElement = scope.wrappers.HTMLElement; - var assert = scope.assert; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var elementsWithFormProperty = [ "HTMLButtonElement", "HTMLFieldSetElement", "HTMLInputElement", "HTMLKeygenElement", "HTMLLabelElement", "HTMLLegendElement", "HTMLObjectElement", "HTMLOutputElement", "HTMLTextAreaElement" ]; - function createWrapperConstructor(name) { - if (!window[name]) return; - assert(!scope.wrappers[name]); - var GeneratedWrapper = function(node) { - HTMLElement.call(this, node); - }; - GeneratedWrapper.prototype = Object.create(HTMLElement.prototype); - mixin(GeneratedWrapper.prototype, { - get form() { - return wrap(unwrap(this).form); - } - }); - registerWrapper(window[name], GeneratedWrapper, document.createElement(name.slice(4, -7))); - scope.wrappers[name] = GeneratedWrapper; - } - elementsWithFormProperty.forEach(createWrapperConstructor); - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalSelection = window.Selection; - function Selection(impl) { - setWrapper(impl, this); - } - Selection.prototype = { - get anchorNode() { - return wrap(unsafeUnwrap(this).anchorNode); - }, - get focusNode() { - return wrap(unsafeUnwrap(this).focusNode); - }, - addRange: function(range) { - unsafeUnwrap(this).addRange(unwrapIfNeeded(range)); - }, - collapse: function(node, index) { - unsafeUnwrap(this).collapse(unwrapIfNeeded(node), index); - }, - containsNode: function(node, allowPartial) { - return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial); - }, - getRangeAt: function(index) { - return wrap(unsafeUnwrap(this).getRangeAt(index)); - }, - removeRange: function(range) { - unsafeUnwrap(this).removeRange(unwrap(range)); - }, - selectAllChildren: function(node) { - unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot ? unsafeUnwrap(node.host) : unwrapIfNeeded(node)); - }, - toString: function() { - return unsafeUnwrap(this).toString(); - } - }; - if (OriginalSelection.prototype.extend) { - Selection.prototype.extend = function(node, offset) { - unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); - }; - } - registerWrapper(window.Selection, Selection, window.getSelection()); - scope.wrappers.Selection = Selection; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalTreeWalker = window.TreeWalker; - function TreeWalker(impl) { - setWrapper(impl, this); - } - TreeWalker.prototype = { - get root() { - return wrap(unsafeUnwrap(this).root); - }, - get currentNode() { - return wrap(unsafeUnwrap(this).currentNode); - }, - set currentNode(node) { - unsafeUnwrap(this).currentNode = unwrapIfNeeded(node); - }, - get filter() { - return unsafeUnwrap(this).filter; - }, - parentNode: function() { - return wrap(unsafeUnwrap(this).parentNode()); - }, - firstChild: function() { - return wrap(unsafeUnwrap(this).firstChild()); - }, - lastChild: function() { - return wrap(unsafeUnwrap(this).lastChild()); - }, - previousSibling: function() { - return wrap(unsafeUnwrap(this).previousSibling()); - }, - previousNode: function() { - return wrap(unsafeUnwrap(this).previousNode()); - }, - nextNode: function() { - return wrap(unsafeUnwrap(this).nextNode()); - } - }; - registerWrapper(OriginalTreeWalker, TreeWalker); - scope.wrappers.TreeWalker = TreeWalker; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var GetElementsByInterface = scope.GetElementsByInterface; - var Node = scope.wrappers.Node; - var ParentNodeInterface = scope.ParentNodeInterface; - var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; - var Selection = scope.wrappers.Selection; - var SelectorsInterface = scope.SelectorsInterface; - var ShadowRoot = scope.wrappers.ShadowRoot; - var TreeScope = scope.TreeScope; - var cloneNode = scope.cloneNode; - var defineGetter = scope.defineGetter; - var defineWrapGetter = scope.defineWrapGetter; - var elementFromPoint = scope.elementFromPoint; - var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; - var matchesNames = scope.matchesNames; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var renderAllPending = scope.renderAllPending; - var rewrap = scope.rewrap; - var setWrapper = scope.setWrapper; - var unsafeUnwrap = scope.unsafeUnwrap; - var unwrap = scope.unwrap; - var wrap = scope.wrap; - var wrapEventTargetMethods = scope.wrapEventTargetMethods; - var wrapNodeList = scope.wrapNodeList; - var implementationTable = new WeakMap(); - function Document(node) { - Node.call(this, node); - this.treeScope_ = new TreeScope(this, null); - } - Document.prototype = Object.create(Node.prototype); - defineWrapGetter(Document, "documentElement"); - defineWrapGetter(Document, "body"); - defineWrapGetter(Document, "head"); - defineGetter(Document, "activeElement", function() { - var unwrappedActiveElement = unwrap(this).activeElement; - if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null; - var activeElement = wrap(unwrappedActiveElement); - while (!this.contains(activeElement)) { - while (activeElement.parentNode) { - activeElement = activeElement.parentNode; - } - if (activeElement.host) { - activeElement = activeElement.host; - } else { - return null; - } - } - return activeElement; - }); - function wrapMethod(name) { - var original = document[name]; - Document.prototype[name] = function() { - return wrap(original.apply(unsafeUnwrap(this), arguments)); - }; - } - [ "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wrapMethod); - var originalAdoptNode = document.adoptNode; - function adoptNodeNoRemove(node, doc) { - originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); - adoptSubtree(node, doc); - } - function adoptSubtree(node, doc) { - if (node.shadowRoot) doc.adoptNode(node.shadowRoot); - if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc); - for (var child = node.firstChild; child; child = child.nextSibling) { - adoptSubtree(child, doc); - } - } - function adoptOlderShadowRoots(shadowRoot, doc) { - var oldShadowRoot = shadowRoot.olderShadowRoot; - if (oldShadowRoot) doc.adoptNode(oldShadowRoot); - } - var originalGetSelection = document.getSelection; - mixin(Document.prototype, { - adoptNode: function(node) { - if (node.parentNode) node.parentNode.removeChild(node); - adoptNodeNoRemove(node, this); - return node; - }, - elementFromPoint: function(x, y) { - return elementFromPoint(this, this, x, y); - }, - importNode: function(node, deep) { - return cloneNode(node, deep, unsafeUnwrap(this)); - }, - getSelection: function() { - renderAllPending(); - return new Selection(originalGetSelection.call(unwrap(this))); - }, - getElementsByName: function(name) { - return SelectorsInterface.querySelectorAll.call(this, "[name=" + JSON.stringify(String(name)) + "]"); - } - }); - var originalCreateTreeWalker = document.createTreeWalker; - var TreeWalkerWrapper = scope.wrappers.TreeWalker; - Document.prototype.createTreeWalker = function(root, whatToShow, filter, expandEntityReferences) { - var newFilter = null; - if (filter) { - if (filter.acceptNode && typeof filter.acceptNode === "function") { - newFilter = { - acceptNode: function(node) { - return filter.acceptNode(wrap(node)); - } - }; - } else if (typeof filter === "function") { - newFilter = function(node) { - return filter(wrap(node)); - }; - } - } - return new TreeWalkerWrapper(originalCreateTreeWalker.call(unwrap(this), unwrap(root), whatToShow, newFilter, expandEntityReferences)); - }; - if (document.registerElement) { - var originalRegisterElement = document.registerElement; - Document.prototype.registerElement = function(tagName, object) { - var prototype, extendsOption; - if (object !== undefined) { - prototype = object.prototype; - extendsOption = object.extends; - } - if (!prototype) prototype = Object.create(HTMLElement.prototype); - if (scope.nativePrototypeTable.get(prototype)) { - throw new Error("NotSupportedError"); - } - var proto = Object.getPrototypeOf(prototype); - var nativePrototype; - var prototypes = []; - while (proto) { - nativePrototype = scope.nativePrototypeTable.get(proto); - if (nativePrototype) break; - prototypes.push(proto); - proto = Object.getPrototypeOf(proto); - } - if (!nativePrototype) { - throw new Error("NotSupportedError"); - } - var newPrototype = Object.create(nativePrototype); - for (var i = prototypes.length - 1; i >= 0; i--) { - newPrototype = Object.create(newPrototype); - } - [ "createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback" ].forEach(function(name) { - var f = prototype[name]; - if (!f) return; - newPrototype[name] = function() { - if (!(wrap(this) instanceof CustomElementConstructor)) { - rewrap(this); - } - f.apply(wrap(this), arguments); - }; - }); - var p = { - prototype: newPrototype - }; - if (extendsOption) p.extends = extendsOption; - function CustomElementConstructor(node) { - if (!node) { - if (extendsOption) { - return document.createElement(extendsOption, tagName); - } else { - return document.createElement(tagName); - } - } - setWrapper(node, this); - } - CustomElementConstructor.prototype = prototype; - CustomElementConstructor.prototype.constructor = CustomElementConstructor; - scope.constructorTable.set(newPrototype, CustomElementConstructor); - scope.nativePrototypeTable.set(prototype, newPrototype); - var nativeConstructor = originalRegisterElement.call(unwrap(this), tagName, p); - return CustomElementConstructor; - }; - forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "registerElement" ]); - } - forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ]); - forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement ], matchesNames); - forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getElementsByName", "getSelection" ]); - mixin(Document.prototype, GetElementsByInterface); - mixin(Document.prototype, ParentNodeInterface); - mixin(Document.prototype, SelectorsInterface); - mixin(Document.prototype, NonElementParentNodeInterface); - mixin(Document.prototype, { - get implementation() { - var implementation = implementationTable.get(this); - if (implementation) return implementation; - implementation = new DOMImplementation(unwrap(this).implementation); - implementationTable.set(this, implementation); - return implementation; - }, - get defaultView() { - return wrap(unwrap(this).defaultView); - } - }); - registerWrapper(window.Document, Document, document.implementation.createHTMLDocument("")); - if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document); - wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement ]); - function DOMImplementation(impl) { - setWrapper(impl, this); - } - var originalCreateDocument = document.implementation.createDocument; - DOMImplementation.prototype.createDocument = function() { - arguments[2] = unwrap(arguments[2]); - return wrap(originalCreateDocument.apply(unsafeUnwrap(this), arguments)); - }; - function wrapImplMethod(constructor, name) { - var original = document.implementation[name]; - constructor.prototype[name] = function() { - return wrap(original.apply(unsafeUnwrap(this), arguments)); - }; - } - function forwardImplMethod(constructor, name) { - var original = document.implementation[name]; - constructor.prototype[name] = function() { - return original.apply(unsafeUnwrap(this), arguments); - }; - } - wrapImplMethod(DOMImplementation, "createDocumentType"); - wrapImplMethod(DOMImplementation, "createHTMLDocument"); - forwardImplMethod(DOMImplementation, "hasFeature"); - registerWrapper(window.DOMImplementation, DOMImplementation); - forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocument", "createDocumentType", "createHTMLDocument", "hasFeature" ]); - scope.adoptNodeNoRemove = adoptNodeNoRemove; - scope.wrappers.DOMImplementation = DOMImplementation; - scope.wrappers.Document = Document; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var EventTarget = scope.wrappers.EventTarget; - var Selection = scope.wrappers.Selection; - var mixin = scope.mixin; - var registerWrapper = scope.registerWrapper; - var renderAllPending = scope.renderAllPending; - var unwrap = scope.unwrap; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var wrap = scope.wrap; - var OriginalWindow = window.Window; - var originalGetComputedStyle = window.getComputedStyle; - var originalGetDefaultComputedStyle = window.getDefaultComputedStyle; - var originalGetSelection = window.getSelection; - function Window(impl) { - EventTarget.call(this, impl); - } - Window.prototype = Object.create(EventTarget.prototype); - OriginalWindow.prototype.getComputedStyle = function(el, pseudo) { - return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo); - }; - if (originalGetDefaultComputedStyle) { - OriginalWindow.prototype.getDefaultComputedStyle = function(el, pseudo) { - return wrap(this || window).getDefaultComputedStyle(unwrapIfNeeded(el), pseudo); - }; - } - OriginalWindow.prototype.getSelection = function() { - return wrap(this || window).getSelection(); - }; - delete window.getComputedStyle; - delete window.getDefaultComputedStyle; - delete window.getSelection; - [ "addEventListener", "removeEventListener", "dispatchEvent" ].forEach(function(name) { - OriginalWindow.prototype[name] = function() { - var w = wrap(this || window); - return w[name].apply(w, arguments); - }; - delete window[name]; - }); - mixin(Window.prototype, { - getComputedStyle: function(el, pseudo) { - renderAllPending(); - return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo); - }, - getSelection: function() { - renderAllPending(); - return new Selection(originalGetSelection.call(unwrap(this))); - }, - get document() { - return wrap(unwrap(this).document); - } - }); - if (originalGetDefaultComputedStyle) { - Window.prototype.getDefaultComputedStyle = function(el, pseudo) { - renderAllPending(); - return originalGetDefaultComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo); - }; - } - registerWrapper(OriginalWindow, Window, window); - scope.wrappers.Window = Window; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var unwrap = scope.unwrap; - var OriginalDataTransfer = window.DataTransfer || window.Clipboard; - var OriginalDataTransferSetDragImage = OriginalDataTransfer.prototype.setDragImage; - if (OriginalDataTransferSetDragImage) { - OriginalDataTransfer.prototype.setDragImage = function(image, x, y) { - OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y); - }; - } - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var registerWrapper = scope.registerWrapper; - var setWrapper = scope.setWrapper; - var unwrap = scope.unwrap; - var OriginalFormData = window.FormData; - if (!OriginalFormData) return; - function FormData(formElement) { - var impl; - if (formElement instanceof OriginalFormData) { - impl = formElement; - } else { - impl = new OriginalFormData(formElement && unwrap(formElement)); - } - setWrapper(impl, this); - } - registerWrapper(OriginalFormData, FormData, new OriginalFormData()); - scope.wrappers.FormData = FormData; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var unwrapIfNeeded = scope.unwrapIfNeeded; - var originalSend = XMLHttpRequest.prototype.send; - XMLHttpRequest.prototype.send = function(obj) { - return originalSend.call(this, unwrapIfNeeded(obj)); - }; - })(window.ShadowDOMPolyfill); - (function(scope) { - "use strict"; - var isWrapperFor = scope.isWrapperFor; - var elements = { - a: "HTMLAnchorElement", - area: "HTMLAreaElement", - audio: "HTMLAudioElement", - base: "HTMLBaseElement", - body: "HTMLBodyElement", - br: "HTMLBRElement", - button: "HTMLButtonElement", - canvas: "HTMLCanvasElement", - caption: "HTMLTableCaptionElement", - col: "HTMLTableColElement", - content: "HTMLContentElement", - data: "HTMLDataElement", - datalist: "HTMLDataListElement", - del: "HTMLModElement", - dir: "HTMLDirectoryElement", - div: "HTMLDivElement", - dl: "HTMLDListElement", - embed: "HTMLEmbedElement", - fieldset: "HTMLFieldSetElement", - font: "HTMLFontElement", - form: "HTMLFormElement", - frame: "HTMLFrameElement", - frameset: "HTMLFrameSetElement", - h1: "HTMLHeadingElement", - head: "HTMLHeadElement", - hr: "HTMLHRElement", - html: "HTMLHtmlElement", - iframe: "HTMLIFrameElement", - img: "HTMLImageElement", - input: "HTMLInputElement", - keygen: "HTMLKeygenElement", - label: "HTMLLabelElement", - legend: "HTMLLegendElement", - li: "HTMLLIElement", - link: "HTMLLinkElement", - map: "HTMLMapElement", - marquee: "HTMLMarqueeElement", - menu: "HTMLMenuElement", - menuitem: "HTMLMenuItemElement", - meta: "HTMLMetaElement", - meter: "HTMLMeterElement", - object: "HTMLObjectElement", - ol: "HTMLOListElement", - optgroup: "HTMLOptGroupElement", - option: "HTMLOptionElement", - output: "HTMLOutputElement", - p: "HTMLParagraphElement", - param: "HTMLParamElement", - pre: "HTMLPreElement", - progress: "HTMLProgressElement", - q: "HTMLQuoteElement", - script: "HTMLScriptElement", - select: "HTMLSelectElement", - shadow: "HTMLShadowElement", - source: "HTMLSourceElement", - span: "HTMLSpanElement", - style: "HTMLStyleElement", - table: "HTMLTableElement", - tbody: "HTMLTableSectionElement", - template: "HTMLTemplateElement", - textarea: "HTMLTextAreaElement", - thead: "HTMLTableSectionElement", - time: "HTMLTimeElement", - title: "HTMLTitleElement", - tr: "HTMLTableRowElement", - track: "HTMLTrackElement", - ul: "HTMLUListElement", - video: "HTMLVideoElement" - }; - function overrideConstructor(tagName) { - var nativeConstructorName = elements[tagName]; - var nativeConstructor = window[nativeConstructorName]; - if (!nativeConstructor) return; - var element = document.createElement(tagName); - var wrapperConstructor = element.constructor; - window[nativeConstructorName] = wrapperConstructor; - } - Object.keys(elements).forEach(overrideConstructor); - Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) { - window[name] = scope.wrappers[name]; - }); - })(window.ShadowDOMPolyfill); - (function(scope) { - var ShadowCSS = { - strictStyling: false, - registry: {}, - shimStyling: function(root, name, extendsName) { - var scopeStyles = this.prepareRoot(root, name, extendsName); - var typeExtension = this.isTypeExtension(extendsName); - var scopeSelector = this.makeScopeSelector(name, typeExtension); - var cssText = stylesToCssText(scopeStyles, true); - cssText = this.scopeCssText(cssText, scopeSelector); - if (root) { - root.shimmedStyle = cssText; - } - this.addCssToDocument(cssText, name); - }, - shimStyle: function(style, selector) { - return this.shimCssText(style.textContent, selector); - }, - shimCssText: function(cssText, selector) { - cssText = this.insertDirectives(cssText); - return this.scopeCssText(cssText, selector); - }, - makeScopeSelector: function(name, typeExtension) { - if (name) { - return typeExtension ? "[is=" + name + "]" : name; - } - return ""; - }, - isTypeExtension: function(extendsName) { - return extendsName && extendsName.indexOf("-") < 0; - }, - prepareRoot: function(root, name, extendsName) { - var def = this.registerRoot(root, name, extendsName); - this.replaceTextInStyles(def.rootStyles, this.insertDirectives); - this.removeStyles(root, def.rootStyles); - if (this.strictStyling) { - this.applyScopeToContent(root, name); - } - return def.scopeStyles; - }, - removeStyles: function(root, styles) { - for (var i = 0, l = styles.length, s; i < l && (s = styles[i]); i++) { - s.parentNode.removeChild(s); - } - }, - registerRoot: function(root, name, extendsName) { - var def = this.registry[name] = { - root: root, - name: name, - extendsName: extendsName - }; - var styles = this.findStyles(root); - def.rootStyles = styles; - def.scopeStyles = def.rootStyles; - var extendee = this.registry[def.extendsName]; - if (extendee) { - def.scopeStyles = extendee.scopeStyles.concat(def.scopeStyles); - } - return def; - }, - findStyles: function(root) { - if (!root) { - return []; - } - var styles = root.querySelectorAll("style"); - return Array.prototype.filter.call(styles, function(s) { - return !s.hasAttribute(NO_SHIM_ATTRIBUTE); - }); - }, - applyScopeToContent: function(root, name) { - if (root) { - Array.prototype.forEach.call(root.querySelectorAll("*"), function(node) { - node.setAttribute(name, ""); - }); - Array.prototype.forEach.call(root.querySelectorAll("template"), function(template) { - this.applyScopeToContent(template.content, name); - }, this); - } - }, - insertDirectives: function(cssText) { - cssText = this.insertPolyfillDirectivesInCssText(cssText); - return this.insertPolyfillRulesInCssText(cssText); - }, - insertPolyfillDirectivesInCssText: function(cssText) { - cssText = cssText.replace(cssCommentNextSelectorRe, function(match, p1) { - return p1.slice(0, -2) + "{"; - }); - return cssText.replace(cssContentNextSelectorRe, function(match, p1) { - return p1 + " {"; - }); - }, - insertPolyfillRulesInCssText: function(cssText) { - cssText = cssText.replace(cssCommentRuleRe, function(match, p1) { - return p1.slice(0, -1); - }); - return cssText.replace(cssContentRuleRe, function(match, p1, p2, p3) { - var rule = match.replace(p1, "").replace(p2, ""); - return p3 + rule; - }); - }, - scopeCssText: function(cssText, scopeSelector) { - var unscoped = this.extractUnscopedRulesFromCssText(cssText); - cssText = this.insertPolyfillHostInCssText(cssText); - cssText = this.convertColonHost(cssText); - cssText = this.convertColonHostContext(cssText); - cssText = this.convertShadowDOMSelectors(cssText); - if (scopeSelector) { - var self = this, cssText; - withCssRules(cssText, function(rules) { - cssText = self.scopeRules(rules, scopeSelector); - }); - } - cssText = cssText + "\n" + unscoped; - return cssText.trim(); - }, - extractUnscopedRulesFromCssText: function(cssText) { - var r = "", m; - while (m = cssCommentUnscopedRuleRe.exec(cssText)) { - r += m[1].slice(0, -1) + "\n\n"; - } - while (m = cssContentUnscopedRuleRe.exec(cssText)) { - r += m[0].replace(m[2], "").replace(m[1], m[3]) + "\n\n"; - } - return r; - }, - convertColonHost: function(cssText) { - return this.convertColonRule(cssText, cssColonHostRe, this.colonHostPartReplacer); - }, - convertColonHostContext: function(cssText) { - return this.convertColonRule(cssText, cssColonHostContextRe, this.colonHostContextPartReplacer); - }, - convertColonRule: function(cssText, regExp, partReplacer) { - return cssText.replace(regExp, function(m, p1, p2, p3) { - p1 = polyfillHostNoCombinator; - if (p2) { - var parts = p2.split(","), r = []; - for (var i = 0, l = parts.length, p; i < l && (p = parts[i]); i++) { - p = p.trim(); - r.push(partReplacer(p1, p, p3)); - } - return r.join(","); - } else { - return p1 + p3; - } - }); - }, - colonHostContextPartReplacer: function(host, part, suffix) { - if (part.match(polyfillHost)) { - return this.colonHostPartReplacer(host, part, suffix); - } else { - return host + part + suffix + ", " + part + " " + host + suffix; - } - }, - colonHostPartReplacer: function(host, part, suffix) { - return host + part.replace(polyfillHost, "") + suffix; - }, - convertShadowDOMSelectors: function(cssText) { - for (var i = 0; i < shadowDOMSelectorsRe.length; i++) { - cssText = cssText.replace(shadowDOMSelectorsRe[i], " "); - } - return cssText; - }, - scopeRules: function(cssRules, scopeSelector) { - var cssText = ""; - if (cssRules) { - Array.prototype.forEach.call(cssRules, function(rule) { - if (rule.selectorText && (rule.style && rule.style.cssText !== undefined)) { - cssText += this.scopeSelector(rule.selectorText, scopeSelector, this.strictStyling) + " {\n "; - cssText += this.propertiesFromRule(rule) + "\n}\n\n"; - } else if (rule.type === CSSRule.MEDIA_RULE) { - cssText += "@media " + rule.media.mediaText + " {\n"; - cssText += this.scopeRules(rule.cssRules, scopeSelector); - cssText += "\n}\n\n"; - } else { - try { - if (rule.cssText) { - cssText += rule.cssText + "\n\n"; - } - } catch (x) { - if (rule.type === CSSRule.KEYFRAMES_RULE && rule.cssRules) { - cssText += this.ieSafeCssTextFromKeyFrameRule(rule); - } - } - } - }, this); - } - return cssText; - }, - ieSafeCssTextFromKeyFrameRule: function(rule) { - var cssText = "@keyframes " + rule.name + " {"; - Array.prototype.forEach.call(rule.cssRules, function(rule) { - cssText += " " + rule.keyText + " {" + rule.style.cssText + "}"; - }); - cssText += " }"; - return cssText; - }, - scopeSelector: function(selector, scopeSelector, strict) { - var r = [], parts = selector.split(","); - parts.forEach(function(p) { - p = p.trim(); - if (this.selectorNeedsScoping(p, scopeSelector)) { - p = strict && !p.match(polyfillHostNoCombinator) ? this.applyStrictSelectorScope(p, scopeSelector) : this.applySelectorScope(p, scopeSelector); - } - r.push(p); - }, this); - return r.join(", "); - }, - selectorNeedsScoping: function(selector, scopeSelector) { - if (Array.isArray(scopeSelector)) { - return true; - } - var re = this.makeScopeMatcher(scopeSelector); - return !selector.match(re); - }, - makeScopeMatcher: function(scopeSelector) { - scopeSelector = scopeSelector.replace(/\[/g, "\\[").replace(/\]/g, "\\]"); - return new RegExp("^(" + scopeSelector + ")" + selectorReSuffix, "m"); - }, - applySelectorScope: function(selector, selectorScope) { - return Array.isArray(selectorScope) ? this.applySelectorScopeList(selector, selectorScope) : this.applySimpleSelectorScope(selector, selectorScope); - }, - applySelectorScopeList: function(selector, scopeSelectorList) { - var r = []; - for (var i = 0, s; s = scopeSelectorList[i]; i++) { - r.push(this.applySimpleSelectorScope(selector, s)); - } - return r.join(", "); - }, - applySimpleSelectorScope: function(selector, scopeSelector) { - if (selector.match(polyfillHostRe)) { - selector = selector.replace(polyfillHostNoCombinator, scopeSelector); - return selector.replace(polyfillHostRe, scopeSelector + " "); - } else { - return scopeSelector + " " + selector; - } - }, - applyStrictSelectorScope: function(selector, scopeSelector) { - scopeSelector = scopeSelector.replace(/\[is=([^\]]*)\]/g, "$1"); - var splits = [ " ", ">", "+", "~" ], scoped = selector, attrName = "[" + scopeSelector + "]"; - splits.forEach(function(sep) { - var parts = scoped.split(sep); - scoped = parts.map(function(p) { - var t = p.trim().replace(polyfillHostRe, ""); - if (t && splits.indexOf(t) < 0 && t.indexOf(attrName) < 0) { - p = t.replace(/([^:]*)(:*)(.*)/, "$1" + attrName + "$2$3"); - } - return p; - }).join(sep); - }); - return scoped; - }, - insertPolyfillHostInCssText: function(selector) { - return selector.replace(colonHostContextRe, polyfillHostContext).replace(colonHostRe, polyfillHost); - }, - propertiesFromRule: function(rule) { - var cssText = rule.style.cssText; - if (rule.style.content && !rule.style.content.match(/['"]+|attr/)) { - cssText = cssText.replace(/content:[^;]*;/g, "content: '" + rule.style.content + "';"); - } - var style = rule.style; - for (var i in style) { - if (style[i] === "initial") { - cssText += i + ": initial; "; - } - } - return cssText; - }, - replaceTextInStyles: function(styles, action) { - if (styles && action) { - if (!(styles instanceof Array)) { - styles = [ styles ]; - } - Array.prototype.forEach.call(styles, function(s) { - s.textContent = action.call(this, s.textContent); - }, this); - } - }, - addCssToDocument: function(cssText, name) { - if (cssText.match("@import")) { - addOwnSheet(cssText, name); - } else { - addCssToDocument(cssText); - } - } - }; - var selectorRe = /([^{]*)({[\s\S]*?})/gim, cssCommentRe = /\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim, cssCommentNextSelectorRe = /\/\*\s*@polyfill ([^*]*\*+([^\/*][^*]*\*+)*\/)([^{]*?){/gim, cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim, cssCommentRuleRe = /\/\*\s@polyfill-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, cssContentRuleRe = /(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssCommentUnscopedRuleRe = /\/\*\s@polyfill-unscoped-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssPseudoRe = /::(x-[^\s{,(]*)/gim, cssPartRe = /::part\(([^)]*)\)/gim, polyfillHost = "-shadowcsshost", polyfillHostContext = "-shadowcsscontext", parenSuffix = ")(?:\\((" + "(?:\\([^)(]*\\)|[^)(]*)+?" + ")\\))?([^,{]*)"; - var cssColonHostRe = new RegExp("(" + polyfillHost + parenSuffix, "gim"), cssColonHostContextRe = new RegExp("(" + polyfillHostContext + parenSuffix, "gim"), selectorReSuffix = "([>\\s~+[.,{:][\\s\\S]*)?$", colonHostRe = /\:host/gim, colonHostContextRe = /\:host-context/gim, polyfillHostNoCombinator = polyfillHost + "-no-combinator", polyfillHostRe = new RegExp(polyfillHost, "gim"), polyfillHostContextRe = new RegExp(polyfillHostContext, "gim"), shadowDOMSelectorsRe = [ />>>/g, /::shadow/g, /::content/g, /\/deep\//g, /\/shadow\//g, /\/shadow-deep\//g, /\^\^/g, /\^/g ]; - function stylesToCssText(styles, preserveComments) { - var cssText = ""; - Array.prototype.forEach.call(styles, function(s) { - cssText += s.textContent + "\n\n"; - }); - if (!preserveComments) { - cssText = cssText.replace(cssCommentRe, ""); - } - return cssText; - } - function cssTextToStyle(cssText) { - var style = document.createElement("style"); - style.textContent = cssText; - return style; - } - function cssToRules(cssText) { - var style = cssTextToStyle(cssText); - document.head.appendChild(style); - var rules = []; - if (style.sheet) { - try { - rules = style.sheet.cssRules; - } catch (e) {} - } else { - console.warn("sheet not found", style); - } - style.parentNode.removeChild(style); - return rules; - } - var frame = document.createElement("iframe"); - frame.style.display = "none"; - function initFrame() { - frame.initialized = true; - document.body.appendChild(frame); - var doc = frame.contentDocument; - var base = doc.createElement("base"); - base.href = document.baseURI; - doc.head.appendChild(base); - } - function inFrame(fn) { - if (!frame.initialized) { - initFrame(); - } - document.body.appendChild(frame); - fn(frame.contentDocument); - document.body.removeChild(frame); - } - var isChrome = navigator.userAgent.match("Chrome"); - function withCssRules(cssText, callback) { - if (!callback) { - return; - } - var rules; - if (cssText.match("@import") && isChrome) { - var style = cssTextToStyle(cssText); - inFrame(function(doc) { - doc.head.appendChild(style.impl); - rules = Array.prototype.slice.call(style.sheet.cssRules, 0); - callback(rules); - }); - } else { - rules = cssToRules(cssText); - callback(rules); - } - } - function rulesToCss(cssRules) { - for (var i = 0, css = []; i < cssRules.length; i++) { - css.push(cssRules[i].cssText); - } - return css.join("\n\n"); - } - function addCssToDocument(cssText) { - if (cssText) { - getSheet().appendChild(document.createTextNode(cssText)); - } - } - function addOwnSheet(cssText, name) { - var style = cssTextToStyle(cssText); - style.setAttribute(name, ""); - style.setAttribute(SHIMMED_ATTRIBUTE, ""); - document.head.appendChild(style); - } - var SHIM_ATTRIBUTE = "shim-shadowdom"; - var SHIMMED_ATTRIBUTE = "shim-shadowdom-css"; - var NO_SHIM_ATTRIBUTE = "no-shim"; - var sheet; - function getSheet() { - if (!sheet) { - sheet = document.createElement("style"); - sheet.setAttribute(SHIMMED_ATTRIBUTE, ""); - sheet[SHIMMED_ATTRIBUTE] = true; - } - return sheet; - } - if (window.ShadowDOMPolyfill) { - addCssToDocument("style { display: none !important; }\n"); - var doc = ShadowDOMPolyfill.wrap(document); - var head = doc.querySelector("head"); - head.insertBefore(getSheet(), head.childNodes[0]); - document.addEventListener("DOMContentLoaded", function() { - var urlResolver = scope.urlResolver; - if (window.HTMLImports && !HTMLImports.useNative) { - var SHIM_SHEET_SELECTOR = "link[rel=stylesheet]" + "[" + SHIM_ATTRIBUTE + "]"; - var SHIM_STYLE_SELECTOR = "style[" + SHIM_ATTRIBUTE + "]"; - HTMLImports.importer.documentPreloadSelectors += "," + SHIM_SHEET_SELECTOR; - HTMLImports.importer.importsPreloadSelectors += "," + SHIM_SHEET_SELECTOR; - HTMLImports.parser.documentSelectors = [ HTMLImports.parser.documentSelectors, SHIM_SHEET_SELECTOR, SHIM_STYLE_SELECTOR ].join(","); - var originalParseGeneric = HTMLImports.parser.parseGeneric; - HTMLImports.parser.parseGeneric = function(elt) { - if (elt[SHIMMED_ATTRIBUTE]) { - return; - } - var style = elt.__importElement || elt; - if (!style.hasAttribute(SHIM_ATTRIBUTE)) { - originalParseGeneric.call(this, elt); - return; - } - if (elt.__resource) { - style = elt.ownerDocument.createElement("style"); - style.textContent = elt.__resource; - } - HTMLImports.path.resolveUrlsInStyle(style, elt.href); - style.textContent = ShadowCSS.shimStyle(style); - style.removeAttribute(SHIM_ATTRIBUTE, ""); - style.setAttribute(SHIMMED_ATTRIBUTE, ""); - style[SHIMMED_ATTRIBUTE] = true; - if (style.parentNode !== head) { - if (elt.parentNode === head) { - head.replaceChild(style, elt); - } else { - this.addElementToDocument(style); - } - } - style.__importParsed = true; - this.markParsingComplete(elt); - this.parseNext(); - }; - var hasResource = HTMLImports.parser.hasResource; - HTMLImports.parser.hasResource = function(node) { - if (node.localName === "link" && node.rel === "stylesheet" && node.hasAttribute(SHIM_ATTRIBUTE)) { - return node.__resource; - } else { - return hasResource.call(this, node); - } - }; - } - }); - } - scope.ShadowCSS = ShadowCSS; - })(window.WebComponents); -} - -(function(scope) { - if (window.ShadowDOMPolyfill) { - window.wrap = ShadowDOMPolyfill.wrapIfNeeded; - window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded; - } else { - window.wrap = window.unwrap = function(n) { - return n; - }; - } -})(window.WebComponents); - -(function(scope) { - "use strict"; - var hasWorkingUrl = false; - if (!scope.forceJURL) { - try { - var u = new URL("b", "http://a"); - u.pathname = "c%20d"; - hasWorkingUrl = u.href === "http://a/c%20d"; - } catch (e) {} - } - if (hasWorkingUrl) return; - var relative = Object.create(null); - relative["ftp"] = 21; - relative["file"] = 0; - relative["gopher"] = 70; - relative["http"] = 80; - relative["https"] = 443; - relative["ws"] = 80; - relative["wss"] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping["%2e"] = "."; - relativePathDotMapping[".%2e"] = ".."; - relativePathDotMapping["%2e."] = ".."; - relativePathDotMapping["%2e%2e"] = ".."; - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - function invalid() { - clear.call(this); - this._isInvalid = true; - } - function IDNAToASCII(h) { - if ("" == h) { - invalid.call(this); - } - return h.toLowerCase(); - } - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 63, 96 ].indexOf(unicode) == -1) { - return c; - } - return encodeURIComponent(c); - } - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 96 ].indexOf(unicode) == -1) { - return c; - } - return encodeURIComponent(c); - } - var EOF = undefined, ALPHA = /[a-zA-Z]/, ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - var state = stateOverride || "scheme start", cursor = 0, buffer = "", seenAt = false, seenBracket = false, errors = []; - loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case "scheme start": - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = "scheme"; - } else if (!stateOverride) { - buffer = ""; - state = "no scheme"; - continue; - } else { - err("Invalid scheme."); - break loop; - } - break; - - case "scheme": - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (":" == c) { - this._scheme = buffer; - buffer = ""; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if ("file" == this._scheme) { - state = "relative"; - } else if (this._isRelative && base && base._scheme == this._scheme) { - state = "relative or authority"; - } else if (this._isRelative) { - state = "authority first slash"; - } else { - state = "scheme data"; - } - } else if (!stateOverride) { - buffer = ""; - cursor = 0; - state = "no scheme"; - continue; - } else if (EOF == c) { - break loop; - } else { - err("Code point not allowed in scheme: " + c); - break loop; - } - break; - - case "scheme data": - if ("?" == c) { - this._query = "?"; - state = "query"; - } else if ("#" == c) { - this._fragment = "#"; - state = "fragment"; - } else { - if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._schemeData += percentEscape(c); - } - } - break; - - case "no scheme": - if (!base || !isRelativeScheme(base._scheme)) { - err("Missing scheme."); - invalid.call(this); - } else { - state = "relative"; - continue; - } - break; - - case "relative or authority": - if ("/" == c && "/" == input[cursor + 1]) { - state = "authority ignore slashes"; - } else { - err("Expected /, got: " + c); - state = "relative"; - continue; - } - break; - - case "relative": - this._isRelative = true; - if ("file" != this._scheme) this._scheme = base._scheme; - if (EOF == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if ("/" == c || "\\" == c) { - if ("\\" == c) err("\\ is an invalid code point."); - state = "relative slash"; - } else if ("?" == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = "?"; - this._username = base._username; - this._password = base._password; - state = "query"; - } else if ("#" == c) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = "#"; - this._username = base._username; - this._password = base._password; - state = "fragment"; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC != "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != nextNextC && "#" != nextNextC) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = "relative path"; - continue; - } - break; - - case "relative slash": - if ("/" == c || "\\" == c) { - if ("\\" == c) { - err("\\ is an invalid code point."); - } - if ("file" == this._scheme) { - state = "file host"; - } else { - state = "authority ignore slashes"; - } - } else { - if ("file" != this._scheme) { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = "relative path"; - continue; - } - break; - - case "authority first slash": - if ("/" == c) { - state = "authority second slash"; - } else { - err("Expected '/', got: " + c); - state = "authority ignore slashes"; - continue; - } - break; - - case "authority second slash": - state = "authority ignore slashes"; - if ("/" != c) { - err("Expected '/', got: " + c); - continue; - } - break; - - case "authority ignore slashes": - if ("/" != c && "\\" != c) { - state = "authority"; - continue; - } else { - err("Expected authority, got: " + c); - } - break; - - case "authority": - if ("@" == c) { - if (seenAt) { - err("@ already seen."); - buffer += "%40"; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if (" " == cp || "\n" == cp || "\r" == cp) { - err("Invalid whitespace in authority."); - continue; - } - if (":" == cp && null === this._password) { - this._password = ""; - continue; - } - var tempC = percentEscape(cp); - null !== this._password ? this._password += tempC : this._username += tempC; - } - buffer = ""; - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - cursor -= buffer.length; - buffer = ""; - state = "host"; - continue; - } else { - buffer += c; - } - break; - - case "file host": - if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" || buffer[1] == "|")) { - state = "relative path"; - } else if (buffer.length == 0) { - state = "relative path start"; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "relative path start"; - } - continue; - } else if (" " == c || "\n" == c || "\r" == c) { - err("Invalid whitespace in file host."); - } else { - buffer += c; - } - break; - - case "host": - case "hostname": - if (":" == c && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "port"; - if ("hostname" == stateOverride) { - break loop; - } - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ""; - state = "relative path start"; - if (stateOverride) { - break loop; - } - continue; - } else if (" " != c && "\n" != c && "\r" != c) { - if ("[" == c) { - seenBracket = true; - } else if ("]" == c) { - seenBracket = false; - } - buffer += c; - } else { - err("Invalid code point in host/hostname: " + c); - } - break; - - case "port": - if (/[0-9]/.test(c)) { - buffer += c; - } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c || stateOverride) { - if ("" != buffer) { - var temp = parseInt(buffer, 10); - if (temp != relative[this._scheme]) { - this._port = temp + ""; - } - buffer = ""; - } - if (stateOverride) { - break loop; - } - state = "relative path start"; - continue; - } else if (" " == c || "\n" == c || "\r" == c) { - err("Invalid code point in port: " + c); - } else { - invalid.call(this); - } - break; - - case "relative path start": - if ("\\" == c) err("'\\' not allowed in path."); - state = "relative path"; - if ("/" != c && "\\" != c) { - continue; - } - break; - - case "relative path": - if (EOF == c || "/" == c || "\\" == c || !stateOverride && ("?" == c || "#" == c)) { - if ("\\" == c) { - err("\\ not allowed in relative path."); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if (".." == buffer) { - this._path.pop(); - if ("/" != c && "\\" != c) { - this._path.push(""); - } - } else if ("." == buffer && "/" != c && "\\" != c) { - this._path.push(""); - } else if ("." != buffer) { - if ("file" == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == "|") { - buffer = buffer[0] + ":"; - } - this._path.push(buffer); - } - buffer = ""; - if ("?" == c) { - this._query = "?"; - state = "query"; - } else if ("#" == c) { - this._fragment = "#"; - state = "fragment"; - } - } else if (" " != c && "\n" != c && "\r" != c) { - buffer += percentEscape(c); - } - break; - - case "query": - if (!stateOverride && "#" == c) { - this._fragment = "#"; - state = "fragment"; - } else if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._query += percentEscapeQuery(c); - } - break; - - case "fragment": - if (EOF != c && " " != c && "\n" != c && "\r" != c) { - this._fragment += c; - } - break; - } - cursor++; - } - } - function clear() { - this._scheme = ""; - this._schemeData = ""; - this._username = ""; - this._password = null; - this._host = ""; - this._port = ""; - this._path = []; - this._query = ""; - this._fragment = ""; - this._isInvalid = false; - this._isRelative = false; - } - function jURL(url, base) { - if (base !== undefined && !(base instanceof jURL)) base = new jURL(String(base)); - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ""); - parse.call(this, input, null, base); - } - jURL.prototype = { - toString: function() { - return this.href; - }, - get href() { - if (this._isInvalid) return this._url; - var authority = ""; - if ("" != this._username || null != this._password) { - authority = this._username + (null != this._password ? ":" + this._password : "") + "@"; - } - return this.protocol + (this._isRelative ? "//" + authority + this.host : "") + this.pathname + this._query + this._fragment; - }, - set href(href) { - clear.call(this); - parse.call(this, href); - }, - get protocol() { - return this._scheme + ":"; - }, - set protocol(protocol) { - if (this._isInvalid) return; - parse.call(this, protocol + ":", "scheme start"); - }, - get host() { - return this._isInvalid ? "" : this._port ? this._host + ":" + this._port : this._host; - }, - set host(host) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, host, "host"); - }, - get hostname() { - return this._host; - }, - set hostname(hostname) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, hostname, "hostname"); - }, - get port() { - return this._port; - }, - set port(port) { - if (this._isInvalid || !this._isRelative) return; - parse.call(this, port, "port"); - }, - get pathname() { - return this._isInvalid ? "" : this._isRelative ? "/" + this._path.join("/") : this._schemeData; - }, - set pathname(pathname) { - if (this._isInvalid || !this._isRelative) return; - this._path = []; - parse.call(this, pathname, "relative path start"); - }, - get search() { - return this._isInvalid || !this._query || "?" == this._query ? "" : this._query; - }, - set search(search) { - if (this._isInvalid || !this._isRelative) return; - this._query = "?"; - if ("?" == search[0]) search = search.slice(1); - parse.call(this, search, "query"); - }, - get hash() { - return this._isInvalid || !this._fragment || "#" == this._fragment ? "" : this._fragment; - }, - set hash(hash) { - if (this._isInvalid) return; - this._fragment = "#"; - if ("#" == hash[0]) hash = hash.slice(1); - parse.call(this, hash, "fragment"); - }, - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ""; - } - switch (this._scheme) { - case "data": - case "file": - case "javascript": - case "mailto": - return "null"; - } - host = this.host; - if (!host) { - return ""; - } - return this._scheme + "://" + host; - } - }; - var OriginalURL = scope.URL; - if (OriginalURL) { - jURL.createObjectURL = function(blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - jURL.revokeObjectURL = function(url) { - OriginalURL.revokeObjectURL(url); - }; - } - scope.URL = jURL; -})(self); - -(function(global) { - if (global.JsMutationObserver) { - return; - } - var registrationsTable = new WeakMap(); - var setImmediate; - if (/Trident|Edge/.test(navigator.userAgent)) { - setImmediate = setTimeout; - } else if (window.setImmediate) { - setImmediate = window.setImmediate; - } else { - var setImmediateQueue = []; - var sentinel = String(Math.random()); - window.addEventListener("message", function(e) { - if (e.data === sentinel) { - var queue = setImmediateQueue; - setImmediateQueue = []; - queue.forEach(function(func) { - func(); - }); - } - }); - setImmediate = function(func) { - setImmediateQueue.push(func); - window.postMessage(sentinel, "*"); - }; - } - var isScheduled = false; - var scheduledObservers = []; - function scheduleCallback(observer) { - scheduledObservers.push(observer); - if (!isScheduled) { - isScheduled = true; - setImmediate(dispatchCallbacks); - } - } - function wrapIfNeeded(node) { - return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node; - } - function dispatchCallbacks() { - isScheduled = false; - var observers = scheduledObservers; - scheduledObservers = []; - observers.sort(function(o1, o2) { - return o1.uid_ - o2.uid_; - }); - var anyNonEmpty = false; - observers.forEach(function(observer) { - var queue = observer.takeRecords(); - removeTransientObserversFor(observer); - if (queue.length) { - observer.callback_(queue, observer); - anyNonEmpty = true; - } - }); - if (anyNonEmpty) dispatchCallbacks(); - } - function removeTransientObserversFor(observer) { - observer.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - if (!registrations) return; - registrations.forEach(function(registration) { - if (registration.observer === observer) registration.removeTransientObservers(); - }); - }); - } - function forEachAncestorAndObserverEnqueueRecord(target, callback) { - for (var node = target; node; node = node.parentNode) { - var registrations = registrationsTable.get(node); - if (registrations) { - for (var j = 0; j < registrations.length; j++) { - var registration = registrations[j]; - var options = registration.options; - if (node !== target && !options.subtree) continue; - var record = callback(options); - if (record) registration.enqueue(record); - } - } - } - } - var uidCounter = 0; - function JsMutationObserver(callback) { - this.callback_ = callback; - this.nodes_ = []; - this.records_ = []; - this.uid_ = ++uidCounter; - } - JsMutationObserver.prototype = { - observe: function(target, options) { - target = wrapIfNeeded(target); - if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) { - throw new SyntaxError(); - } - var registrations = registrationsTable.get(target); - if (!registrations) registrationsTable.set(target, registrations = []); - var registration; - for (var i = 0; i < registrations.length; i++) { - if (registrations[i].observer === this) { - registration = registrations[i]; - registration.removeListeners(); - registration.options = options; - break; - } - } - if (!registration) { - registration = new Registration(this, target, options); - registrations.push(registration); - this.nodes_.push(target); - } - registration.addListeners(); - }, - disconnect: function() { - this.nodes_.forEach(function(node) { - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - var registration = registrations[i]; - if (registration.observer === this) { - registration.removeListeners(); - registrations.splice(i, 1); - break; - } - } - }, this); - this.records_ = []; - }, - takeRecords: function() { - var copyOfRecords = this.records_; - this.records_ = []; - return copyOfRecords; - } - }; - function MutationRecord(type, target) { - this.type = type; - this.target = target; - this.addedNodes = []; - this.removedNodes = []; - this.previousSibling = null; - this.nextSibling = null; - this.attributeName = null; - this.attributeNamespace = null; - this.oldValue = null; - } - function copyMutationRecord(original) { - var record = new MutationRecord(original.type, original.target); - record.addedNodes = original.addedNodes.slice(); - record.removedNodes = original.removedNodes.slice(); - record.previousSibling = original.previousSibling; - record.nextSibling = original.nextSibling; - record.attributeName = original.attributeName; - record.attributeNamespace = original.attributeNamespace; - record.oldValue = original.oldValue; - return record; - } - var currentRecord, recordWithOldValue; - function getRecord(type, target) { - return currentRecord = new MutationRecord(type, target); - } - function getRecordWithOldValue(oldValue) { - if (recordWithOldValue) return recordWithOldValue; - recordWithOldValue = copyMutationRecord(currentRecord); - recordWithOldValue.oldValue = oldValue; - return recordWithOldValue; - } - function clearRecords() { - currentRecord = recordWithOldValue = undefined; - } - function recordRepresentsCurrentMutation(record) { - return record === recordWithOldValue || record === currentRecord; - } - function selectRecord(lastRecord, newRecord) { - if (lastRecord === newRecord) return lastRecord; - if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue; - return null; - } - function Registration(observer, target, options) { - this.observer = observer; - this.target = target; - this.options = options; - this.transientObservedNodes = []; - } - Registration.prototype = { - enqueue: function(record) { - var records = this.observer.records_; - var length = records.length; - if (records.length > 0) { - var lastRecord = records[length - 1]; - var recordToReplaceLast = selectRecord(lastRecord, record); - if (recordToReplaceLast) { - records[length - 1] = recordToReplaceLast; - return; - } - } else { - scheduleCallback(this.observer); - } - records[length] = record; - }, - addListeners: function() { - this.addListeners_(this.target); - }, - addListeners_: function(node) { - var options = this.options; - if (options.attributes) node.addEventListener("DOMAttrModified", this, true); - if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.addEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true); - }, - removeListeners: function() { - this.removeListeners_(this.target); - }, - removeListeners_: function(node) { - var options = this.options; - if (options.attributes) node.removeEventListener("DOMAttrModified", this, true); - if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true); - if (options.childList) node.removeEventListener("DOMNodeInserted", this, true); - if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true); - }, - addTransientObserver: function(node) { - if (node === this.target) return; - this.addListeners_(node); - this.transientObservedNodes.push(node); - var registrations = registrationsTable.get(node); - if (!registrations) registrationsTable.set(node, registrations = []); - registrations.push(this); - }, - removeTransientObservers: function() { - var transientObservedNodes = this.transientObservedNodes; - this.transientObservedNodes = []; - transientObservedNodes.forEach(function(node) { - this.removeListeners_(node); - var registrations = registrationsTable.get(node); - for (var i = 0; i < registrations.length; i++) { - if (registrations[i] === this) { - registrations.splice(i, 1); - break; - } - } - }, this); - }, - handleEvent: function(e) { - e.stopImmediatePropagation(); - switch (e.type) { - case "DOMAttrModified": - var name = e.attrName; - var namespace = e.relatedNode.namespaceURI; - var target = e.target; - var record = new getRecord("attributes", target); - record.attributeName = name; - record.attributeNamespace = namespace; - var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.attributes) return; - if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) { - return; - } - if (options.attributeOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMCharacterDataModified": - var target = e.target; - var record = getRecord("characterData", target); - var oldValue = e.prevValue; - forEachAncestorAndObserverEnqueueRecord(target, function(options) { - if (!options.characterData) return; - if (options.characterDataOldValue) return getRecordWithOldValue(oldValue); - return record; - }); - break; - - case "DOMNodeRemoved": - this.addTransientObserver(e.target); - - case "DOMNodeInserted": - var changedNode = e.target; - var addedNodes, removedNodes; - if (e.type === "DOMNodeInserted") { - addedNodes = [ changedNode ]; - removedNodes = []; - } else { - addedNodes = []; - removedNodes = [ changedNode ]; - } - var previousSibling = changedNode.previousSibling; - var nextSibling = changedNode.nextSibling; - var record = getRecord("childList", e.target.parentNode); - record.addedNodes = addedNodes; - record.removedNodes = removedNodes; - record.previousSibling = previousSibling; - record.nextSibling = nextSibling; - forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { - if (!options.childList) return; - return record; - }); - } - clearRecords(); - } - }; - global.JsMutationObserver = JsMutationObserver; - if (!global.MutationObserver) { - global.MutationObserver = JsMutationObserver; - JsMutationObserver._isPolyfilled = true; - } -})(self); - -(function(scope) { - "use strict"; - if (!window.performance) { - var start = Date.now(); - window.performance = { - now: function() { - return Date.now() - start; - } - }; - } - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = function() { - var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; - return nativeRaf ? function(callback) { - return nativeRaf(function() { - callback(performance.now()); - }); - } : function(callback) { - return window.setTimeout(callback, 1e3 / 60); - }; - }(); - } - if (!window.cancelAnimationFrame) { - window.cancelAnimationFrame = function() { - return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) { - clearTimeout(id); - }; - }(); - } - var workingDefaultPrevented = function() { - var e = document.createEvent("Event"); - e.initEvent("foo", true, true); - e.preventDefault(); - return e.defaultPrevented; - }(); - if (!workingDefaultPrevented) { - var origPreventDefault = Event.prototype.preventDefault; - Event.prototype.preventDefault = function() { - if (!this.cancelable) { - return; - } - origPreventDefault.call(this); - Object.defineProperty(this, "defaultPrevented", { - get: function() { - return true; - }, - configurable: true - }); - }; - } - var isIE = /Trident/.test(navigator.userAgent); - if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { - window.CustomEvent = function(inType, params) { - params = params || {}; - var e = document.createEvent("CustomEvent"); - e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail); - return e; - }; - window.CustomEvent.prototype = window.Event.prototype; - } - if (!window.Event || isIE && typeof window.Event !== "function") { - var origEvent = window.Event; - window.Event = function(inType, params) { - params = params || {}; - var e = document.createEvent("Event"); - e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); - return e; - }; - window.Event.prototype = origEvent.prototype; - } -})(window.WebComponents); - -window.HTMLImports = window.HTMLImports || { - flags: {} -}; - -(function(scope) { - var IMPORT_LINK_TYPE = "import"; - var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); - var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); - var wrap = function(node) { - return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node; - }; - var rootDocument = wrap(document); - var currentScriptDescriptor = { - get: function() { - var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null); - return wrap(script); - }, - configurable: true - }; - Object.defineProperty(document, "_currentScript", currentScriptDescriptor); - Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor); - var isIE = /Trident/.test(navigator.userAgent); - function whenReady(callback, doc) { - doc = doc || rootDocument; - whenDocumentReady(function() { - watchImportsLoad(callback, doc); - }, doc); - } - var requiredReadyState = isIE ? "complete" : "interactive"; - var READY_EVENT = "readystatechange"; - function isDocumentReady(doc) { - return doc.readyState === "complete" || doc.readyState === requiredReadyState; - } - function whenDocumentReady(callback, doc) { - if (!isDocumentReady(doc)) { - var checkReady = function() { - if (doc.readyState === "complete" || doc.readyState === requiredReadyState) { - doc.removeEventListener(READY_EVENT, checkReady); - whenDocumentReady(callback, doc); - } - }; - doc.addEventListener(READY_EVENT, checkReady); - } else if (callback) { - callback(); - } - } - function markTargetLoaded(event) { - event.target.__loaded = true; - } - function watchImportsLoad(callback, doc) { - var imports = doc.querySelectorAll("link[rel=import]"); - var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = []; - function checkDone() { - if (parsedCount == importCount && callback) { - callback({ - allImports: imports, - loadedImports: newImports, - errorImports: errorImports - }); - } - } - function loadedImport(e) { - markTargetLoaded(e); - newImports.push(this); - parsedCount++; - checkDone(); - } - function errorLoadingImport(e) { - errorImports.push(this); - parsedCount++; - checkDone(); - } - if (importCount) { - for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { - if (isImportLoaded(imp)) { - newImports.push(this); - parsedCount++; - checkDone(); - } else { - imp.addEventListener("load", loadedImport); - imp.addEventListener("error", errorLoadingImport); - } - } - } else { - checkDone(); - } - } - function isImportLoaded(link) { - return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed; - } - if (useNative) { - new MutationObserver(function(mxns) { - for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) { - if (m.addedNodes) { - handleImports(m.addedNodes); - } - } - }).observe(document.head, { - childList: true - }); - function handleImports(nodes) { - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (isImport(n)) { - handleImport(n); - } - } - } - function isImport(element) { - return element.localName === "link" && element.rel === "import"; - } - function handleImport(element) { - var loaded = element.import; - if (loaded) { - markTargetLoaded({ - target: element - }); - } else { - element.addEventListener("load", markTargetLoaded); - element.addEventListener("error", markTargetLoaded); - } - } - (function() { - if (document.readyState === "loading") { - var imports = document.querySelectorAll("link[rel=import]"); - for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) { - handleImport(imp); - } - } - })(); - } - whenReady(function(detail) { - window.HTMLImports.ready = true; - window.HTMLImports.readyTime = new Date().getTime(); - var evt = rootDocument.createEvent("CustomEvent"); - evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); - rootDocument.dispatchEvent(evt); - }); - scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; - scope.useNative = useNative; - scope.rootDocument = rootDocument; - scope.whenReady = whenReady; - scope.isIE = isIE; -})(window.HTMLImports); - -(function(scope) { - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; -})(window.HTMLImports); - -window.HTMLImports.addModule(function(scope) { - var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; - var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; - var path = { - resolveUrlsInStyle: function(style, linkUrl) { - var doc = style.ownerDocument; - var resolver = doc.createElement("a"); - style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver); - return style; - }, - resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { - var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); - r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); - return r; - }, - replaceUrls: function(text, urlObj, linkUrl, regexp) { - return text.replace(regexp, function(m, pre, url, post) { - var urlPath = url.replace(/["']/g, ""); - if (linkUrl) { - urlPath = new URL(urlPath, linkUrl).href; - } - urlObj.href = urlPath; - urlPath = urlObj.href; - return pre + "'" + urlPath + "'" + post; - }); - } - }; - scope.path = path; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = { - async: true, - ok: function(request) { - return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0; - }, - load: function(url, next, nextContext) { - var request = new XMLHttpRequest(); - if (scope.flags.debug || scope.flags.bust) { - url += "?" + Math.random(); - } - request.open("GET", url, xhr.async); - request.addEventListener("readystatechange", function(e) { - if (request.readyState === 4) { - var redirectedUrl = null; - try { - var locationHeader = request.getResponseHeader("Location"); - if (locationHeader) { - redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader; - } - } catch (e) { - console.error(e.message); - } - next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl); - } - }); - request.send(); - return request; - }, - loadDocument: function(url, next, nextContext) { - this.load(url, next, nextContext).responseType = "document"; - } - }; - scope.xhr = xhr; -}); - -window.HTMLImports.addModule(function(scope) { - var xhr = scope.xhr; - var flags = scope.flags; - var Loader = function(onLoad, onComplete) { - this.cache = {}; - this.onload = onLoad; - this.oncomplete = onComplete; - this.inflight = 0; - this.pending = {}; - }; - Loader.prototype = { - addNodes: function(nodes) { - this.inflight += nodes.length; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - this.require(n); - } - this.checkDone(); - }, - addNode: function(node) { - this.inflight++; - this.require(node); - this.checkDone(); - }, - require: function(elt) { - var url = elt.src || elt.href; - elt.__nodeUrl = url; - if (!this.dedupe(url, elt)) { - this.fetch(url, elt); - } - }, - dedupe: function(url, elt) { - if (this.pending[url]) { - this.pending[url].push(elt); - return true; - } - var resource; - if (this.cache[url]) { - this.onload(url, elt, this.cache[url]); - this.tail(); - return true; - } - this.pending[url] = [ elt ]; - return false; - }, - fetch: function(url, elt) { - flags.load && console.log("fetch", url, elt); - if (!url) { - setTimeout(function() { - this.receive(url, elt, { - error: "href must be specified" - }, null); - }.bind(this), 0); - } else if (url.match(/^data:/)) { - var pieces = url.split(","); - var header = pieces[0]; - var body = pieces[1]; - if (header.indexOf(";base64") > -1) { - body = atob(body); - } else { - body = decodeURIComponent(body); - } - setTimeout(function() { - this.receive(url, elt, null, body); - }.bind(this), 0); - } else { - var receiveXhr = function(err, resource, redirectedUrl) { - this.receive(url, elt, err, resource, redirectedUrl); - }.bind(this); - xhr.load(url, receiveXhr); - } - }, - receive: function(url, elt, err, resource, redirectedUrl) { - this.cache[url] = resource; - var $p = this.pending[url]; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - this.onload(url, p, resource, err, redirectedUrl); - this.tail(); - } - this.pending[url] = null; - }, - tail: function() { - --this.inflight; - this.checkDone(); - }, - checkDone: function() { - if (!this.inflight) { - this.oncomplete(); - } - } - }; - scope.Loader = Loader; -}); - -window.HTMLImports.addModule(function(scope) { - var Observer = function(addCallback) { - this.addCallback = addCallback; - this.mo = new MutationObserver(this.handler.bind(this)); - }; - Observer.prototype = { - handler: function(mutations) { - for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) { - if (m.type === "childList" && m.addedNodes.length) { - this.addedNodes(m.addedNodes); - } - } - }, - addedNodes: function(nodes) { - if (this.addCallback) { - this.addCallback(nodes); - } - for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) { - if (n.children && n.children.length) { - this.addedNodes(n.children); - } - } - }, - observe: function(root) { - this.mo.observe(root, { - childList: true, - subtree: true - }); - } - }; - scope.Observer = Observer; -}); - -window.HTMLImports.addModule(function(scope) { - var path = scope.path; - var rootDocument = scope.rootDocument; - var flags = scope.flags; - var isIE = scope.isIE; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; - var importParser = { - documentSelectors: IMPORT_SELECTOR, - importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","), - map: { - link: "parseLink", - script: "parseScript", - style: "parseStyle" - }, - dynamicElements: [], - parseNext: function() { - var next = this.nextToParse(); - if (next) { - this.parse(next); - } - }, - parse: function(elt) { - if (this.isParsed(elt)) { - flags.parse && console.log("[%s] is already parsed", elt.localName); - return; - } - var fn = this[this.map[elt.localName]]; - if (fn) { - this.markParsing(elt); - fn.call(this, elt); - } - }, - parseDynamic: function(elt, quiet) { - this.dynamicElements.push(elt); - if (!quiet) { - this.parseNext(); - } - }, - markParsing: function(elt) { - flags.parse && console.log("parsing", elt); - this.parsingElement = elt; - }, - markParsingComplete: function(elt) { - elt.__importParsed = true; - this.markDynamicParsingComplete(elt); - if (elt.__importElement) { - elt.__importElement.__importParsed = true; - this.markDynamicParsingComplete(elt.__importElement); - } - this.parsingElement = null; - flags.parse && console.log("completed", elt); - }, - markDynamicParsingComplete: function(elt) { - var i = this.dynamicElements.indexOf(elt); - if (i >= 0) { - this.dynamicElements.splice(i, 1); - } - }, - parseImport: function(elt) { - elt.import = elt.__doc; - if (window.HTMLImports.__importsParsingHook) { - window.HTMLImports.__importsParsingHook(elt); - } - if (elt.import) { - elt.import.__importParsed = true; - } - this.markParsingComplete(elt); - if (elt.__resource && !elt.__error) { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - } else { - elt.dispatchEvent(new CustomEvent("error", { - bubbles: false - })); - } - if (elt.__pending) { - var fn; - while (elt.__pending.length) { - fn = elt.__pending.shift(); - if (fn) { - fn({ - target: elt - }); - } - } - } - this.parseNext(); - }, - parseLink: function(linkElt) { - if (nodeIsImport(linkElt)) { - this.parseImport(linkElt); - } else { - linkElt.href = linkElt.href; - this.parseGeneric(linkElt); - } - }, - parseStyle: function(elt) { - var src = elt; - elt = cloneStyle(elt); - src.__appliedElement = elt; - elt.__importElement = src; - this.parseGeneric(elt); - }, - parseGeneric: function(elt) { - this.trackElement(elt); - this.addElementToDocument(elt); - }, - rootImportForElement: function(elt) { - var n = elt; - while (n.ownerDocument.__importLink) { - n = n.ownerDocument.__importLink; - } - return n; - }, - addElementToDocument: function(elt) { - var port = this.rootImportForElement(elt.__importElement || elt); - port.parentNode.insertBefore(elt, port); - }, - trackElement: function(elt, callback) { - var self = this; - var done = function(e) { - elt.removeEventListener("load", done); - elt.removeEventListener("error", done); - if (callback) { - callback(e); - } - self.markParsingComplete(elt); - self.parseNext(); - }; - elt.addEventListener("load", done); - elt.addEventListener("error", done); - if (isIE && elt.localName === "style") { - var fakeLoad = false; - if (elt.textContent.indexOf("@import") == -1) { - fakeLoad = true; - } else if (elt.sheet) { - fakeLoad = true; - var csr = elt.sheet.cssRules; - var len = csr ? csr.length : 0; - for (var i = 0, r; i < len && (r = csr[i]); i++) { - if (r.type === CSSRule.IMPORT_RULE) { - fakeLoad = fakeLoad && Boolean(r.styleSheet); - } - } - } - if (fakeLoad) { - setTimeout(function() { - elt.dispatchEvent(new CustomEvent("load", { - bubbles: false - })); - }); - } - } - }, - parseScript: function(scriptElt) { - var script = document.createElement("script"); - script.__importElement = scriptElt; - script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt); - scope.currentScript = scriptElt; - this.trackElement(script, function(e) { - if (script.parentNode) { - script.parentNode.removeChild(script); - } - scope.currentScript = null; - }); - this.addElementToDocument(script); - }, - nextToParse: function() { - this._mayParse = []; - return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic()); - }, - nextToParseInDoc: function(doc, link) { - if (doc && this._mayParse.indexOf(doc) < 0) { - this._mayParse.push(doc); - var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!this.isParsed(n)) { - if (this.hasResource(n)) { - return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n; - } else { - return; - } - } - } - } - return link; - }, - nextToParseDynamic: function() { - return this.dynamicElements[0]; - }, - parseSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentSelectors : this.importsSelectors; - }, - isParsed: function(node) { - return node.__importParsed; - }, - needsDynamicParsing: function(elt) { - return this.dynamicElements.indexOf(elt) >= 0; - }, - hasResource: function(node) { - if (nodeIsImport(node) && node.__doc === undefined) { - return false; - } - return true; - } - }; - function nodeIsImport(elt) { - return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; - } - function generateScriptDataUrl(script) { - var scriptContent = generateScriptContent(script); - return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent); - } - function generateScriptContent(script) { - return script.textContent + generateSourceMapHint(script); - } - function generateSourceMapHint(script) { - var owner = script.ownerDocument; - owner.__importedScripts = owner.__importedScripts || 0; - var moniker = script.ownerDocument.baseURI; - var num = owner.__importedScripts ? "-" + owner.__importedScripts : ""; - owner.__importedScripts++; - return "\n//# sourceURL=" + moniker + num + ".js\n"; - } - function cloneStyle(style) { - var clone = style.ownerDocument.createElement("style"); - clone.textContent = style.textContent; - path.resolveUrlsInStyle(clone); - return clone; - } - scope.parser = importParser; - scope.IMPORT_SELECTOR = IMPORT_SELECTOR; -}); - -window.HTMLImports.addModule(function(scope) { - var flags = scope.flags; - var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; - var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; - var rootDocument = scope.rootDocument; - var Loader = scope.Loader; - var Observer = scope.Observer; - var parser = scope.parser; - var importer = { - documents: {}, - documentPreloadSelectors: IMPORT_SELECTOR, - importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","), - loadNode: function(node) { - importLoader.addNode(node); - }, - loadSubtree: function(parent) { - var nodes = this.marshalNodes(parent); - importLoader.addNodes(nodes); - }, - marshalNodes: function(parent) { - return parent.querySelectorAll(this.loadSelectorsForNode(parent)); - }, - loadSelectorsForNode: function(node) { - var doc = node.ownerDocument || node; - return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors; - }, - loaded: function(url, elt, resource, err, redirectedUrl) { - flags.load && console.log("loaded", url, elt); - elt.__resource = resource; - elt.__error = err; - if (isImportLink(elt)) { - var doc = this.documents[url]; - if (doc === undefined) { - doc = err ? null : makeDocument(resource, redirectedUrl || url); - if (doc) { - doc.__importLink = elt; - this.bootDocument(doc); - } - this.documents[url] = doc; - } - elt.__doc = doc; - } - parser.parseNext(); - }, - bootDocument: function(doc) { - this.loadSubtree(doc); - this.observer.observe(doc); - parser.parseNext(); - }, - loadedAll: function() { - parser.parseNext(); - } - }; - var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer)); - importer.observer = new Observer(); - function isImportLink(elt) { - return isLinkRel(elt, IMPORT_LINK_TYPE); - } - function isLinkRel(elt, rel) { - return elt.localName === "link" && elt.getAttribute("rel") === rel; - } - function hasBaseURIAccessor(doc) { - return !!Object.getOwnPropertyDescriptor(doc, "baseURI"); - } - function makeDocument(resource, url) { - var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE); - doc._URL = url; - var base = doc.createElement("base"); - base.setAttribute("href", url); - if (!doc.baseURI && !hasBaseURIAccessor(doc)) { - Object.defineProperty(doc, "baseURI", { - value: url - }); - } - var meta = doc.createElement("meta"); - meta.setAttribute("charset", "utf-8"); - doc.head.appendChild(meta); - doc.head.appendChild(base); - doc.body.innerHTML = resource; - if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) { - HTMLTemplateElement.bootstrap(doc); - } - return doc; - } - if (!document.baseURI) { - var baseURIDescriptor = { - get: function() { - var base = document.querySelector("base"); - return base ? base.href : window.location.href; - }, - configurable: true - }; - Object.defineProperty(document, "baseURI", baseURIDescriptor); - Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); - } - scope.importer = importer; - scope.importLoader = importLoader; -}); - -window.HTMLImports.addModule(function(scope) { - var parser = scope.parser; - var importer = scope.importer; - var dynamic = { - added: function(nodes) { - var owner, parsed, loading; - for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { - if (!owner) { - owner = n.ownerDocument; - parsed = parser.isParsed(owner); - } - loading = this.shouldLoadNode(n); - if (loading) { - importer.loadNode(n); - } - if (this.shouldParseNode(n) && parsed) { - parser.parseDynamic(n, loading); - } - } - }, - shouldLoadNode: function(node) { - return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node)); - }, - shouldParseNode: function(node) { - return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node)); - } - }; - importer.observer.addCallback = dynamic.added.bind(dynamic); - var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector; -}); - -(function(scope) { - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (scope.useNative) { - return; - } - initializeModules(); - var rootDocument = scope.rootDocument; - function bootstrap() { - window.HTMLImports.importer.bootDocument(rootDocument); - } - if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) { - bootstrap(); - } else { - document.addEventListener("DOMContentLoaded", bootstrap); - } -})(window.HTMLImports); - -window.CustomElements = window.CustomElements || { - flags: {} -}; - -(function(scope) { - var flags = scope.flags; - var modules = []; - var addModule = function(module) { - modules.push(module); - }; - var initializeModules = function() { - modules.forEach(function(module) { - module(scope); - }); - }; - scope.addModule = addModule; - scope.initializeModules = initializeModules; - scope.hasNative = Boolean(document.registerElement); - scope.isIE = /Trident/.test(navigator.userAgent); - scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative); -})(window.CustomElements); - -window.CustomElements.addModule(function(scope) { - var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none"; - function forSubtree(node, cb) { - findAllElements(node, function(e) { - if (cb(e)) { - return true; - } - forRoots(e, cb); - }); - forRoots(node, cb); - } - function findAllElements(node, find, data) { - var e = node.firstElementChild; - if (!e) { - e = node.firstChild; - while (e && e.nodeType !== Node.ELEMENT_NODE) { - e = e.nextSibling; - } - } - while (e) { - if (find(e, data) !== true) { - findAllElements(e, find, data); - } - e = e.nextElementSibling; - } - return null; - } - function forRoots(node, cb) { - var root = node.shadowRoot; - while (root) { - forSubtree(root, cb); - root = root.olderShadowRoot; - } - } - function forDocumentTree(doc, cb) { - _forDocumentTree(doc, cb, []); - } - function _forDocumentTree(doc, cb, processingDocuments) { - doc = window.wrap(doc); - if (processingDocuments.indexOf(doc) >= 0) { - return; - } - processingDocuments.push(doc); - var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); - for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { - if (n.import) { - _forDocumentTree(n.import, cb, processingDocuments); - } - } - cb(doc); - } - scope.forDocumentTree = forDocumentTree; - scope.forSubtree = forSubtree; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - var forSubtree = scope.forSubtree; - var forDocumentTree = scope.forDocumentTree; - function addedNode(node, isAttached) { - return added(node, isAttached) || addedSubtree(node, isAttached); - } - function added(node, isAttached) { - if (scope.upgrade(node, isAttached)) { - return true; - } - if (isAttached) { - attached(node); - } - } - function addedSubtree(node, isAttached) { - forSubtree(node, function(e) { - if (added(e, isAttached)) { - return true; - } - }); - } - var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["throttle-attached"]; - scope.hasPolyfillMutations = hasThrottledAttached; - scope.hasThrottledAttached = hasThrottledAttached; - var isPendingMutations = false; - var pendingMutations = []; - function deferMutation(fn) { - pendingMutations.push(fn); - if (!isPendingMutations) { - isPendingMutations = true; - setTimeout(takeMutations); - } - } - function takeMutations() { - isPendingMutations = false; - var $p = pendingMutations; - for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { - p(); - } - pendingMutations = []; - } - function attached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _attached(element); - }); - } else { - _attached(element); - } - } - function _attached(element) { - if (element.__upgraded__ && !element.__attached) { - element.__attached = true; - if (element.attachedCallback) { - element.attachedCallback(); - } - } - } - function detachedNode(node) { - detached(node); - forSubtree(node, function(e) { - detached(e); - }); - } - function detached(element) { - if (hasThrottledAttached) { - deferMutation(function() { - _detached(element); - }); - } else { - _detached(element); - } - } - function _detached(element) { - if (element.__upgraded__ && element.__attached) { - element.__attached = false; - if (element.detachedCallback) { - element.detachedCallback(); - } - } - } - function inDocument(element) { - var p = element; - var doc = window.wrap(document); - while (p) { - if (p == doc) { - return true; - } - p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; - } - } - function watchShadow(node) { - if (node.shadowRoot && !node.shadowRoot.__watched) { - flags.dom && console.log("watching shadow-root for: ", node.localName); - var root = node.shadowRoot; - while (root) { - observe(root); - root = root.olderShadowRoot; - } - } - } - function handler(root, mutations) { - if (flags.dom) { - var mx = mutations[0]; - if (mx && mx.type === "childList" && mx.addedNodes) { - if (mx.addedNodes) { - var d = mx.addedNodes[0]; - while (d && d !== document && !d.host) { - d = d.parentNode; - } - var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; - u = u.split("/?").shift().split("/").pop(); - } - } - console.group("mutations (%d) [%s]", mutations.length, u || ""); - } - var isAttached = inDocument(root); - mutations.forEach(function(mx) { - if (mx.type === "childList") { - forEach(mx.addedNodes, function(n) { - if (!n.localName) { - return; - } - addedNode(n, isAttached); - }); - forEach(mx.removedNodes, function(n) { - if (!n.localName) { - return; - } - detachedNode(n); - }); - } - }); - flags.dom && console.groupEnd(); - } - function takeRecords(node) { - node = window.wrap(node); - if (!node) { - node = window.wrap(document); - } - while (node.parentNode) { - node = node.parentNode; - } - var observer = node.__observer; - if (observer) { - handler(node, observer.takeRecords()); - takeMutations(); - } - } - var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); - function observe(inRoot) { - if (inRoot.__observer) { - return; - } - var observer = new MutationObserver(handler.bind(this, inRoot)); - observer.observe(inRoot, { - childList: true, - subtree: true - }); - inRoot.__observer = observer; - } - function upgradeDocument(doc) { - doc = window.wrap(doc); - flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()); - var isMainDocument = doc === window.wrap(document); - addedNode(doc, isMainDocument); - observe(doc); - flags.dom && console.groupEnd(); - } - function upgradeDocumentTree(doc) { - forDocumentTree(doc, upgradeDocument); - } - var originalCreateShadowRoot = Element.prototype.createShadowRoot; - if (originalCreateShadowRoot) { - Element.prototype.createShadowRoot = function() { - var root = originalCreateShadowRoot.call(this); - window.CustomElements.watchShadow(this); - return root; - }; - } - scope.watchShadow = watchShadow; - scope.upgradeDocumentTree = upgradeDocumentTree; - scope.upgradeDocument = upgradeDocument; - scope.upgradeSubtree = addedSubtree; - scope.upgradeAll = addedNode; - scope.attached = attached; - scope.takeRecords = takeRecords; -}); - -window.CustomElements.addModule(function(scope) { - var flags = scope.flags; - function upgrade(node, isAttached) { - if (node.localName === "template") { - if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) { - HTMLTemplateElement.decorate(node); - } - } - if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { - var is = node.getAttribute("is"); - var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is); - if (definition) { - if (is && definition.tag == node.localName || !is && !definition.extends) { - return upgradeWithDefinition(node, definition, isAttached); - } - } - } - } - function upgradeWithDefinition(element, definition, isAttached) { - flags.upgrade && console.group("upgrade:", element.localName); - if (definition.is) { - element.setAttribute("is", definition.is); - } - implementPrototype(element, definition); - element.__upgraded__ = true; - created(element); - if (isAttached) { - scope.attached(element); - } - scope.upgradeSubtree(element, isAttached); - flags.upgrade && console.groupEnd(); - return element; - } - function implementPrototype(element, definition) { - if (Object.__proto__) { - element.__proto__ = definition.prototype; - } else { - customMixin(element, definition.prototype, definition.native); - element.__proto__ = definition.prototype; - } - } - function customMixin(inTarget, inSrc, inNative) { - var used = {}; - var p = inSrc; - while (p !== inNative && p !== HTMLElement.prototype) { - var keys = Object.getOwnPropertyNames(p); - for (var i = 0, k; k = keys[i]; i++) { - if (!used[k]) { - Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k)); - used[k] = 1; - } - } - p = Object.getPrototypeOf(p); - } - } - function created(element) { - if (element.createdCallback) { - element.createdCallback(); - } - } - scope.upgrade = upgrade; - scope.upgradeWithDefinition = upgradeWithDefinition; - scope.implementPrototype = implementPrototype; -}); - -window.CustomElements.addModule(function(scope) { - var isIE = scope.isIE; - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeAll = scope.upgradeAll; - var upgradeWithDefinition = scope.upgradeWithDefinition; - var implementPrototype = scope.implementPrototype; - var useNative = scope.useNative; - function register(name, options) { - var definition = options || {}; - if (!name) { - throw new Error("document.registerElement: first argument `name` must not be empty"); - } - if (name.indexOf("-") < 0) { - throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'."); - } - if (isReservedTag(name)) { - throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid."); - } - if (getRegisteredDefinition(name)) { - throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered"); - } - if (!definition.prototype) { - definition.prototype = Object.create(HTMLElement.prototype); - } - definition.__name = name.toLowerCase(); - if (definition.extends) { - definition.extends = definition.extends.toLowerCase(); - } - definition.lifecycle = definition.lifecycle || {}; - definition.ancestry = ancestry(definition.extends); - resolveTagName(definition); - resolvePrototypeChain(definition); - overrideAttributeApi(definition.prototype); - registerDefinition(definition.__name, definition); - definition.ctor = generateConstructor(definition); - definition.ctor.prototype = definition.prototype; - definition.prototype.constructor = definition.ctor; - if (scope.ready) { - upgradeDocumentTree(document); - } - return definition.ctor; - } - function overrideAttributeApi(prototype) { - if (prototype.setAttribute._polyfilled) { - return; - } - var setAttribute = prototype.setAttribute; - prototype.setAttribute = function(name, value) { - changeAttribute.call(this, name, value, setAttribute); - }; - var removeAttribute = prototype.removeAttribute; - prototype.removeAttribute = function(name) { - changeAttribute.call(this, name, null, removeAttribute); - }; - prototype.setAttribute._polyfilled = true; - } - function changeAttribute(name, value, operation) { - name = name.toLowerCase(); - var oldValue = this.getAttribute(name); - operation.apply(this, arguments); - var newValue = this.getAttribute(name); - if (this.attributeChangedCallback && newValue !== oldValue) { - this.attributeChangedCallback(name, oldValue, newValue); - } - } - function isReservedTag(name) { - for (var i = 0; i < reservedTagList.length; i++) { - if (name === reservedTagList[i]) { - return true; - } - } - } - var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ]; - function ancestry(extnds) { - var extendee = getRegisteredDefinition(extnds); - if (extendee) { - return ancestry(extendee.extends).concat([ extendee ]); - } - return []; - } - function resolveTagName(definition) { - var baseTag = definition.extends; - for (var i = 0, a; a = definition.ancestry[i]; i++) { - baseTag = a.is && a.tag; - } - definition.tag = baseTag || definition.__name; - if (baseTag) { - definition.is = definition.__name; - } - } - function resolvePrototypeChain(definition) { - if (!Object.__proto__) { - var nativePrototype = HTMLElement.prototype; - if (definition.is) { - var inst = document.createElement(definition.tag); - nativePrototype = Object.getPrototypeOf(inst); - } - var proto = definition.prototype, ancestor; - var foundPrototype = false; - while (proto) { - if (proto == nativePrototype) { - foundPrototype = true; - } - ancestor = Object.getPrototypeOf(proto); - if (ancestor) { - proto.__proto__ = ancestor; - } - proto = ancestor; - } - if (!foundPrototype) { - console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is); - } - definition.native = nativePrototype; - } - } - function instantiate(definition) { - return upgradeWithDefinition(domCreateElement(definition.tag), definition); - } - var registry = {}; - function getRegisteredDefinition(name) { - if (name) { - return registry[name.toLowerCase()]; - } - } - function registerDefinition(name, definition) { - registry[name] = definition; - } - function generateConstructor(definition) { - return function() { - return instantiate(definition); - }; - } - var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; - function createElementNS(namespace, tag, typeExtension) { - if (namespace === HTML_NAMESPACE) { - return createElement(tag, typeExtension); - } else { - return domCreateElementNS(namespace, tag); - } - } - function createElement(tag, typeExtension) { - if (tag) { - tag = tag.toLowerCase(); - } - if (typeExtension) { - typeExtension = typeExtension.toLowerCase(); - } - var definition = getRegisteredDefinition(typeExtension || tag); - if (definition) { - if (tag == definition.tag && typeExtension == definition.is) { - return new definition.ctor(); - } - if (!typeExtension && !definition.is) { - return new definition.ctor(); - } - } - var element; - if (typeExtension) { - element = createElement(tag); - element.setAttribute("is", typeExtension); - return element; - } - element = domCreateElement(tag); - if (tag.indexOf("-") >= 0) { - implementPrototype(element, HTMLElement); - } - return element; - } - var domCreateElement = document.createElement.bind(document); - var domCreateElementNS = document.createElementNS.bind(document); - var isInstance; - if (!Object.__proto__ && !useNative) { - isInstance = function(obj, ctor) { - if (obj instanceof ctor) { - return true; - } - var p = obj; - while (p) { - if (p === ctor.prototype) { - return true; - } - p = p.__proto__; - } - return false; - }; - } else { - isInstance = function(obj, base) { - return obj instanceof base; - }; - } - function wrapDomMethodToForceUpgrade(obj, methodName) { - var orig = obj[methodName]; - obj[methodName] = function() { - var n = orig.apply(this, arguments); - upgradeAll(n); - return n; - }; - } - wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); - wrapDomMethodToForceUpgrade(document, "importNode"); - document.registerElement = register; - document.createElement = createElement; - document.createElementNS = createElementNS; - scope.registry = registry; - scope.instanceof = isInstance; - scope.reservedTagList = reservedTagList; - scope.getRegisteredDefinition = getRegisteredDefinition; - document.register = document.registerElement; -}); - -(function(scope) { - var useNative = scope.useNative; - var initializeModules = scope.initializeModules; - var isIE = scope.isIE; - if (useNative) { - var nop = function() {}; - scope.watchShadow = nop; - scope.upgrade = nop; - scope.upgradeAll = nop; - scope.upgradeDocumentTree = nop; - scope.upgradeSubtree = nop; - scope.takeRecords = nop; - scope.instanceof = function(obj, base) { - return obj instanceof base; - }; - } else { - initializeModules(); - } - var upgradeDocumentTree = scope.upgradeDocumentTree; - var upgradeDocument = scope.upgradeDocument; - if (!window.wrap) { - if (window.ShadowDOMPolyfill) { - window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; - window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; - } else { - window.wrap = window.unwrap = function(node) { - return node; - }; - } - } - if (window.HTMLImports) { - window.HTMLImports.__importsParsingHook = function(elt) { - if (elt.import) { - upgradeDocument(wrap(elt.import)); - } - }; - } - function bootstrap() { - upgradeDocumentTree(window.wrap(document)); - window.CustomElements.ready = true; - var requestAnimationFrame = window.requestAnimationFrame || function(f) { - setTimeout(f, 16); - }; - requestAnimationFrame(function() { - setTimeout(function() { - window.CustomElements.readyTime = Date.now(); - if (window.HTMLImports) { - window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime; - } - document.dispatchEvent(new CustomEvent("WebComponentsReady", { - bubbles: true - })); - }); - }); - } - if (document.readyState === "complete" || scope.flags.eager) { - bootstrap(); - } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) { - bootstrap(); - } else { - var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded"; - window.addEventListener(loadEvent, bootstrap); - } -})(window.CustomElements); - -(function(scope) { - if (!Function.prototype.bind) { - Function.prototype.bind = function(scope) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - return function() { - var args2 = args.slice(); - args2.push.apply(args2, arguments); - return self.apply(scope, args2); - }; - }; - } -})(window.WebComponents); - -(function(scope) { - var style = document.createElement("style"); - style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " } \n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; position: relative;" + " } \n"; - var head = document.querySelector("head"); - head.insertBefore(style, head.firstChild); -})(window.WebComponents); - -(function(scope) { - window.Platform = scope; -})(window.WebComponents); \ No newline at end of file