diff --git a/_includes/gallery_map.html b/_layouts/gallery-map.html similarity index 82% rename from _includes/gallery_map.html rename to _layouts/gallery-map.html index b120944..5c7c601 100644 --- a/_includes/gallery_map.html +++ b/_layouts/gallery-map.html @@ -1,3 +1,7 @@ +--- +layout: "post" +--- +{% capture gallery %}{{ page.url|replace:'/map.html',''|remove_first:'/' }}{% endcapture %}
+ + + + + + + + + + + + + + + + + +
+

{{ page.title }}

+ {% loopdir path:gallery match:"*.md" sort:"ordering" %}
+ {% assign maxsize = 0 %} + {% assign maxref = false %} + {% for size in item.sizes %} + {% if maxsize < size[1].height * size[1].width %} + {% assign maxsize = size[1].height * size[1].width %} + {% assign maxref = size %} + {% endif %} + {% endfor %} + + {{ item.title }} + + +
{% endloopdir %} +
+ + + + + + + diff --git a/gallery/2014-albuquerque-balloon-fiesta/index.html b/gallery/2014-albuquerque-balloon-fiesta/index.html index e1f2dcd..ac15afe 100644 --- a/gallery/2014-albuquerque-balloon-fiesta/index.html +++ b/gallery/2014-albuquerque-balloon-fiesta/index.html @@ -6,4 +6,10 @@ date_end: '2014-10-13' highlight_photo: 'f114579-img-1074' --- +
+

+ View slideshow. +

+
+ {% include gallery_list.html gallery='2014-albuquerque-balloon-fiesta' %} diff --git a/gallery/2014-albuquerque-balloon-fiesta/slideshow.html b/gallery/2014-albuquerque-balloon-fiesta/slideshow.html new file mode 100644 index 0000000..07e99ef --- /dev/null +++ b/gallery/2014-albuquerque-balloon-fiesta/slideshow.html @@ -0,0 +1,4 @@ +--- +layout: "gallery-slideshow" +title: "Albuquerque Balloon Fiesta" +--- diff --git a/gallery/2014-barcelona-trip/index.html b/gallery/2014-barcelona-trip/index.html index 7464c0d..4a6b178 100644 --- a/gallery/2014-barcelona-trip/index.html +++ b/gallery/2014-barcelona-trip/index.html @@ -7,9 +7,9 @@ highlight_photo: '106c907-museu-nacional-dart-de-catalunya' ---
-

- Some photos from my trip to Barcelona. See them on a map, too. -

+

+ Some photos from my trip to Barcelona. View slideshow, map. +

{% include gallery_list.html gallery='2014-barcelona-trip' %} diff --git a/gallery/2014-barcelona-trip/map.html b/gallery/2014-barcelona-trip/map.html index 783a626..df41c0c 100644 --- a/gallery/2014-barcelona-trip/map.html +++ b/gallery/2014-barcelona-trip/map.html @@ -1,6 +1,8 @@ --- -layout: post -title: Barcelona Trip +layout: "gallery-map" +title: "Barcelona Trip" +gallery_map: + latitude: 41.3955627 + longitude: 2.1756329 + zoom: 12 --- - -{% include gallery_map.html gallery='2014-barcelona-trip' latitude=41.3955627 longitude=2.1756329 zoom=12 %} diff --git a/gallery/2014-barcelona-trip/slideshow.html b/gallery/2014-barcelona-trip/slideshow.html new file mode 100644 index 0000000..85e2b97 --- /dev/null +++ b/gallery/2014-barcelona-trip/slideshow.html @@ -0,0 +1,4 @@ +--- +layout: "gallery-slideshow" +title: "Barcelona Trip" +--- diff --git a/gallery/2014-colorado-aspens/index.html b/gallery/2014-colorado-aspens/index.html index 8231ab1..b76b15b 100644 --- a/gallery/2014-colorado-aspens/index.html +++ b/gallery/2014-colorado-aspens/index.html @@ -1,8 +1,14 @@ --- layout: gallery-list -title: Colorado Aspens +title: "Colorado Aspens" date: '2014-09-27' highlight_photo: '2dbeedb-aspens-invading' --- +
+

+ View slideshow. +

+
+ {% include gallery_list.html gallery='2014-colorado-aspens' %} diff --git a/gallery/2014-colorado-aspens/slideshow.html b/gallery/2014-colorado-aspens/slideshow.html new file mode 100644 index 0000000..3d1211a --- /dev/null +++ b/gallery/2014-colorado-aspens/slideshow.html @@ -0,0 +1,4 @@ +--- +layout: "gallery-slideshow" +title: "Colorado Aspens" +--- diff --git a/gallery/2014-london-iceland-trip/index.html b/gallery/2014-london-iceland-trip/index.html index 9e9807e..fe68aef 100644 --- a/gallery/2014-london-iceland-trip/index.html +++ b/gallery/2014-london-iceland-trip/index.html @@ -7,9 +7,9 @@ highlight_photo: 'df5150c-a-classic-view' ---
-

- Some photos from my trip to London and Iceland. See them on a map, too. -

+

+ Some photos from my trip to London and Iceland. View slideshow, map. +

{% include gallery_list.html gallery='2014-london-iceland-trip' %} diff --git a/gallery/2014-london-iceland-trip/map.html b/gallery/2014-london-iceland-trip/map.html index a76b007..070d1ee 100644 --- a/gallery/2014-london-iceland-trip/map.html +++ b/gallery/2014-london-iceland-trip/map.html @@ -1,6 +1,8 @@ --- -layout: post -title: London & Iceland Trip +layout: "gallery-map" +title: "London & Iceland Trip" +gallery_map: + latitude: 59.1116508 + longitude: -10.4266682 + zoom: 4 --- - -{% include gallery_map.html gallery='2014-london-iceland-trip' latitude=59.1116508 longitude=-10.4266682 zoom=4 %} diff --git a/gallery/2014-london-iceland-trip/slideshow.html b/gallery/2014-london-iceland-trip/slideshow.html new file mode 100644 index 0000000..c63ccc0 --- /dev/null +++ b/gallery/2014-london-iceland-trip/slideshow.html @@ -0,0 +1,4 @@ +--- +layout: "gallery-slideshow" +title: "London & Iceland Trip" +--- diff --git a/static/dev/photo-swipe/default-skin/default-skin.css b/static/dev/photo-swipe/default-skin/default-skin.css new file mode 100644 index 0000000..ee0db30 --- /dev/null +++ b/static/dev/photo-swipe/default-skin/default-skin.css @@ -0,0 +1,436 @@ +/** + * Default PhotoSwipe UI CSS file, http://photoswipe.com + * @author Dmitry Semenov + */ +.pswp__ui { + -webkit-font-smoothing: auto; + visibility: visible; + opacity: 1; + z-index: 1550; } + +.pswp__top-bar { + position: absolute; + left: 0; + top: 0; + height: 44px; + width: 100%; } + +/** + * Loading indicator, aka preloader. + * You can play with preloader is here: http://codepen.io/dimsemenov/pen/yyBWoR + */ +.pswp__preloader { + width: 44px; + height: 44px; + position: absolute; + top: 0; + left: 50%; + margin-left: -22px; + opacity: 0; + position: relative; + -webkit-transition: opacity 0.25s ease-out; + transition: opacity 0.25s ease-out; + will-change: opacity; } + +.pswp__preloader__icn { + width: 20px; + height: 20px; + margin: 12px; } + +.pswp__preloader--active { + opacity: 1; } + .pswp__preloader--active .pswp__preloader__icn { + background: url(preloader.gif) 0 0 no-repeat; } + +.pswp--css_animation .pswp__preloader--active { + opacity: 1; } + .pswp--css_animation .pswp__preloader--active .pswp__preloader__icn { + -webkit-animation: clockwise 500ms linear infinite; + animation: clockwise 500ms linear infinite; } + .pswp--css_animation .pswp__preloader--active .pswp__preloader__donut { + -webkit-animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite; + animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite; } +.pswp--css_animation .pswp__preloader__icn { + background: none; + opacity: 0.75; + width: 14px; + height: 14px; + position: absolute; + left: 15px; + top: 15px; + margin: 0; } +.pswp--css_animation .pswp__preloader__cut { + position: relative; + width: 7px; + height: 14px; + overflow: hidden; } +.pswp--css_animation .pswp__preloader__donut { + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + border: 2px solid #FFF; + border-radius: 50%; + border-left-color: transparent; + border-bottom-color: transparent; + position: absolute; + top: 0; + left: 0; + background: none; + margin: 0; } + +@-webkit-keyframes clockwise { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes clockwise { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@-webkit-keyframes donut-rotate { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 50% { + -webkit-transform: rotate(-140deg); + transform: rotate(-140deg); } + + 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +@keyframes donut-rotate { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 50% { + -webkit-transform: rotate(-140deg); + transform: rotate(-140deg); } + + 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +.pswp__error-msg { + position: absolute; + left: 0; + top: 50%; + width: 100%; + text-align: center; + color: #FFF; + font-size: 14px; + line-height: 16px; + margin-top: -8px; + color: #FFF; + opacity: 0.7; } + +.pswp__error-msg a { + color: #FFF; + text-decoration: underline; } + +.pswp__button { + width: 44px; + height: 44px; + position: relative; + background: none; + cursor: pointer; + overflow: visible; + border: 0; + -webkit-appearance: none; + display: block; + outline: none; + padding: 0; + margin: 0; + float: right; + opacity: 0.75; + -webkit-transition: opacity 0.25s; + transition: opacity 0.25s; + -webkit-box-shadow: none; + box-shadow: none; } + .pswp__button:focus, .pswp__button:hover { + opacity: 1; } + .pswp__button:active { + opacity: 0.9; } + .pswp__button::-moz-focus-inner { + padding: 0; + border: 0; } + +.pswp--animated-in .pswp__button { + -webkit-transition: opacity 0.25s; + transition: opacity 0.25s; } + +.pswp__ui--over-close .pswp__button--close { + opacity: 1; } + +.pswp__button, .pswp__button--arrow--left:before, .pswp__button--arrow--right:before { + background: url(default-skin.png) 0 0 no-repeat; + background-size: 264px 88px; + width: 44px; + height: 44px; } + +@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 105dpi), (min-resolution: 1.1dppx) { + .pswp--svg .pswp__button, .pswp--svg .pswp__button--arrow--left:before, .pswp--svg .pswp__button--arrow--right:before { + background-image: url(default-skin.svg); } + + .pswp--svg .pswp__button--arrow--left, .pswp--svg .pswp__button--arrow--right { + background: none; } + } + +.pswp__counter, .pswp__share-modal { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.pswp__share-modal { + display: block; + background: rgba(0, 0, 0, 0.5); + width: 100%; + height: 100%; + top: 0; + left: 0; + padding: 10px; + position: absolute; + z-index: 1600; + opacity: 0; + -webkit-transition: opacity 0.25s ease-out; + transition: opacity 0.25s ease-out; + will-change: opacity; + -webkit-backface-visibility: hidden; } + +.pswp__share-modal--hidden { + display: none; } + +.pswp__share-tooltip { + z-index: 1620; + position: absolute; + background: #FFF; + top: 56px; + border-radius: 2px; + display: block; + width: auto; + right: 44px; + -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); + -webkit-transform: translateY(6px); + -ms-transform: translateY(6px); + transform: translateY(6px); + -webkit-transition: -webkit-transform 0.25s; + transition: transform 0.25s; + will-change: transform; + -webkit-backface-visibility: hidden; } + .pswp__share-tooltip a { + display: block; + padding: 8px 12px; + color: #000; + text-decoration: none; + font-size: 14px; + line-height: 18px; } + .pswp__share-tooltip a:hover { + text-decoration: none; + color: #000; } + .pswp__share-tooltip a:hover:first-child { + border-radius: 2px 2px 0 0; } + .pswp__share-tooltip a:hover:last-child { + border-radius: 0 0 2px 2px; } + +.pswp__share-modal--fade-in { + opacity: 1; } + .pswp__share-modal--fade-in .pswp__share-tooltip { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); } + +.pswp--touch .pswp__share-tooltip a { + padding: 16px 12px; } + +a.pswp__share--facebook:before { + content: ''; + display: block; + width: 0; + height: 0; + position: absolute; + top: -12px; + right: 15px; + border: 6px solid rgba(0, 0, 0, 0); + border-bottom-color: #FFF; + -webkit-pointer-events: none; + -moz-pointer-events: none; + pointer-events: none; } +a.pswp__share--facebook:hover { + background: #3E5C9A; + color: #FFF; } + a.pswp__share--facebook:hover:before { + border-bottom-color: #3E5C9A; } + +a.pswp__share--twitter:hover { + background: #55ACEE; + color: #FFF; } + +a.pswp__share--pinterest:hover { + background: #CCC; + color: #CE272D; } + +a.pswp__share--download:hover { + background: #DDD; } + +.pswp__button--close { + background-position: 0 -44px; } + +.pswp__button--share { + background-position: -44px -44px; } + +.pswp__button--fs { + display: none; } + +.pswp--supports-fs .pswp__button--fs { + display: block; } + +.pswp--fs .pswp__button--fs { + background-position: -44px 0; } + +.pswp__button--zoom { + display: none; + background-position: -88px 0; } + +.pswp--zoom-allowed .pswp__button--zoom { + display: block; } + +.pswp--zoomed-in .pswp__button--zoom { + background-position: -132px 0; } + +.pswp__button--arrow--left, .pswp__button--arrow--right { + background: none; + top: 50%; + margin-top: -50px; + width: 70px; + height: 100px; + position: absolute; } + +.pswp__top-bar, .pswp__button--arrow--left, .pswp__button--arrow--right { + -webkit-backface-visibility: hidden; + will-change: opacity; } + +.pswp--touch .pswp__button--arrow--left, .pswp--touch .pswp__button--arrow--right { + visibility: hidden; } + +.pswp__button--arrow--left { + left: 0; } + +.pswp__button--arrow--right { + right: 0; } + +.pswp__button--arrow--left:before, .pswp__button--arrow--right:before { + content: ''; + top: 35px; + background-color: rgba(0, 0, 0, 0.3); + height: 30px; + width: 32px; + position: absolute; } + +.pswp__button--arrow--left:before { + left: 6px; + background-position: -138px -44px; } + +.pswp__button--arrow--right:before { + right: 6px; + background-position: -94px -44px; } + +.pswp__counter { + position: absolute; + left: 0; + top: 0; + height: 44px; + font-size: 13px; + line-height: 44px; + color: #FFF; + opacity: 0.75; + padding: 0 10px; } + +@media screen and (max-width: 1024px) { + .pswp_scroll-wrap { + top: 0; + bottom: 0; } + + .pswp__caption { + margin-top: 0; } + + .pswp__preloader { + position: relative; + left: auto; + top: auto; + margin: 0; + float: right; } + } + +.pswp__caption { + position: absolute; + left: 0; + bottom: 0; + color: #FFF; + width: 100%; + min-height: 44px; } + .pswp__caption small { + font-size: 11px; + color: #BBB; } + +.pswp__caption__center { + text-align: left; + max-width: 420px; + margin: 0 auto; + color: #FFF; + font-size: 13px; + padding: 10px; + line-height: 20px; + color: #CCC; } + +.pswp__caption--empty { + display: none; } + +.pswp__caption--fake { + visibility: hidden; } + +.pswp__caption, .pswp__top-bar, .pswp--has_mouse .pswp__button--arrow--left, .pswp--has_mouse .pswp__button--arrow--right { + will-change: opacity; + -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); + transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); } + +.pswp--has_mouse .pswp__button--arrow--left, .pswp--has_mouse .pswp__button--arrow--right { + visibility: visible; } + +.pswp__top-bar, .pswp__caption { + background-color: rgba(0, 0, 0, 0.5); } + +.pswp__ui--fit .pswp__top-bar, .pswp__ui--fit .pswp__caption { + background-color: rgba(0, 0, 0, 0.3); } + +.pswp__ui--hidden .pswp__top-bar, .pswp__ui--hidden .pswp__caption, .pswp__ui--hidden .pswp__button--arrow--left, .pswp__ui--hidden .pswp__button--arrow--right { + opacity: 0; } + +.pswp__ui--idle .pswp__top-bar { + opacity: 0; } +.pswp__ui--idle .pswp__button--arrow--left, .pswp__ui--idle .pswp__button--arrow--right { + opacity: 0; } + +.pswp__ui--hidden .pswp__top-bar, .pswp__ui--hidden .pswp__caption, .pswp__ui--hidden .pswp__bg, .pswp__ui--hidden .pswp__button--arrow--left, .pswp__ui--hidden .pswp__button--arrow--right { + opacity: 0.001; } + +.pswp__element--disabled { + display: none !important; } + +.pswp--minimal--dark .pswp__top-bar { + background: none; } +.pswp--minimal--dark .pswp__button--arrow--left, .pswp--minimal--dark .pswp__button--arrow--right { + background: none; } diff --git a/static/dev/photo-swipe/default-skin/default-skin.png b/static/dev/photo-swipe/default-skin/default-skin.png new file mode 100644 index 0000000..441c502 Binary files /dev/null and b/static/dev/photo-swipe/default-skin/default-skin.png differ diff --git a/static/dev/photo-swipe/default-skin/default-skin.svg b/static/dev/photo-swipe/default-skin/default-skin.svg new file mode 100644 index 0000000..9d5f0c6 --- /dev/null +++ b/static/dev/photo-swipe/default-skin/default-skin.svg @@ -0,0 +1 @@ +default-skin 2 \ No newline at end of file diff --git a/static/dev/photo-swipe/default-skin/preloader.gif b/static/dev/photo-swipe/default-skin/preloader.gif new file mode 100644 index 0000000..b8faa69 Binary files /dev/null and b/static/dev/photo-swipe/default-skin/preloader.gif differ diff --git a/static/dev/photo-swipe/photoswipe-ui-default.min.js b/static/dev/photo-swipe/photoswipe-ui-default.min.js new file mode 100644 index 0000000..d716931 --- /dev/null +++ b/static/dev/photo-swipe/photoswipe-ui-default.min.js @@ -0,0 +1,4 @@ +/*! PhotoSwipe Default UI - 4.0.1 - 2014-12-16 +* http://photoswipe.com +* Copyright (c) 2014 Dmitry Semenov; */ +!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.PhotoSwipeUI_Default=b()}(this,function(){"use strict";var a=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=this,t=!1,u=!0,v=!0,w={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(a,b){return a.title?(b.children[0].innerHTML=a.title,!0):(b.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],indexIndicatorSep:" / "},x=function(a){if(o)return!0;a=a||window.event;for(var c,d,e=a.target||a.srcElement,f=e.className,g=0;g-1&&(c.onTap(),d=!0);if(d){a.stopPropagation&&a.stopPropagation(),o=!0;var h=b.features.isOldAndroid?600:30;p=setTimeout(function(){o=!1},h)}},y=function(){return!a.likelyTouchDevice||a.options.mouseUsed||screen.width>1200},z=function(){return v=!v,v?(b.removeClass(i,"pswp__share-modal--fade-in"),setTimeout(function(){v&&b[(v?"add":"remove")+"Class"](i,"pswp__share-modal--hidden")},300)):(b[(v?"add":"remove")+"Class"](i,"pswp__share-modal--hidden"),setTimeout(function(){v||b.addClass(i,"pswp__share-modal--fade-in")},30)),v||B(),!1},A=function(a){a=a||window.event;var b=a.target||a.srcElement;return b.href?b.hasAttribute("download")?!0:(window.open(b.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),v||z(),!1):!1},B=function(){for(var b,c,d="",e=0;e"+b.label+"";i.children[0].innerHTML=d,i.children[0].onclick=A},C=function(c){for(var d=0;da?s.hideControls():!u&&a>=.95&&s.showControls()});var j;g("onPinchClose",function(a){u&&.9>a?(s.hideControls(),j=!0):j&&!u&&a>.9&&s.showControls()}),g("zoomGestureEnded",function(){j=!1,j&&!u&&s.showControls()}),g("beforeChange",s.update),g("doubleTap",function(b){var c=a.currItem.initialZoomLevel;a.getZoomLevel()!==c?a.zoomTo(c,b,333):a.zoomTo(a.currItem.doubleTapZoom,b,333)}),a.options.timeToIdle&&g("mouseUsed",function(){b.bind(document,"mousemove",E),b.bind(document,"mouseout",F),q=setInterval(function(){D++,2===D&&s.setIdle(!0)},a.options.timeToIdle/2)}),g("preventDragEvent",function(a,b,c){var d=a.target||a.srcElement;d&&d.className&&a.type.indexOf("mouse")>-1&&(d.className.indexOf("__caption")>0||/(SMALL|STRONG|EM)/i.test(d.tagName))&&(c.prevent=!1)}),g("bindEvents",function(){b.bind(d,"pswpTap click",x),b.bind(a.scrollWrap,"pswpTap",s.onGlobalTap),a.likelyTouchDevice||b.bind(a.scrollWrap,"mouseover",s.onMouseOver)}),g("unbindEvents",function(){v||z(),q&&clearInterval(q),b.unbind(document,"mouseout",F),b.unbind(document,"mousemove",E),b.unbind(d,"pswpTap click",x),b.unbind(a.scrollWrap,"pswpTap",s.onGlobalTap),b.unbind(a.scrollWrap,"mouseover",s.onMouseOver),c&&(b.unbind(document,c.eventK,s.updateFullscreen),c.isFullscreen()&&(w.hideAnimationDuration=0,c.exit()),c=null)}),g("destroy",function(){a.options.captionEl&&(f&&d.removeChild(f),b.removeClass(e,"pswp__caption--empty")),i&&(i.children[0].onclick=null),b.removeClass(d,"pswp__ui--over-close"),b.addClass(d,"pswp__ui--hidden"),s.setIdle(!1)}),a.options.showAnimationDuration||b.removeClass(d,"pswp__ui--hidden"),g("initialZoomIn",function(){a.options.showAnimationDuration&&b.removeClass(d,"pswp__ui--hidden")}),g("initialZoomOut",function(){b.addClass(d,"pswp__ui--hidden")}),g("parseVerticalMargin",function(c){var g=c.vGap;if(y()){var h=a.options.barsSize;if(a.options.captionEl&&"auto"===h.bottom)if(f||(f=b.createEl("pswp__caption pswp__caption--fake"),f.appendChild(b.createEl("pswp__caption__center")),d.insertBefore(f,e),b.addClass(d,"pswp__ui--fit")),a.options.addCaptionHTMLFn(c,f,!0)){var i=f.clientHeight;g.bottom=parseInt(i,10)||44}else g.bottom=h.top;else g.bottom=h.bottom;g.top=h.top}else g.top=g.bottom=0});var k,l,m,o=function(c){for(var d=c.length,e=0;d>e;e++){k=c[e],l=k.className;for(var f=0;f-1&&(a.options[m.option]?(b.removeClass(k,"pswp__element--disabled"),m.onInit&&m.onInit(k)):b.addClass(k,"pswp__element--disabled"))}};o(d.children),o(d.children[0].children),a.options.shareEl&&h&&i&&(v=!0),a.options.fullscreenEl&&(c||(c=s.getFullscreenAPI()),c?(b.bind(document,c.eventK,s.updateFullscreen),s.updateFullscreen(),b.addClass(a.template,"pswp--supports-fs")):b.removeClass(a.template,"pswp--supports-fs")),a.options.preloaderEl&&(G(!0),g("beforeChange",function(){clearTimeout(n),n=setTimeout(function(){a.currItem&&a.currItem.loading?(!a.allowProgressiveImg()||a.currItem.img&&!a.currItem.img.naturalWidth)&&G(!1):G(!0)},a.options.loadingIndicatorDelay)}),g("imageLoadComplete",function(b,c){a.currItem===c&&G(!0)}))},s.setIdle=function(a){k=a,b[(a?"add":"remove")+"Class"](d,"pswp__ui--idle")},s.update=function(){u&&a.currItem?(s.updateIndexIndicator(),a.options.captionEl&&(a.options.addCaptionHTMLFn(a.currItem,e),a.currItem.title?b.removeClass(e,"pswp__caption--empty"):b.addClass(e,"pswp__caption--empty")),t=!0):t=!1},s.updateFullscreen=function(){b[(c.isFullscreen()?"add":"remove")+"Class"](a.template,"pswp--fs")},s.updateIndexIndicator=function(){a.options.counterEl&&(g.innerHTML=a.getCurrentIndex()+1+a.options.indexIndicatorSep+a.options.getNumItemsFn())},s.onGlobalTap=function(c){c=c||window.event;var d=c.target||c.srcElement;if(!o)if(c.detail&&"mouse"===c.detail.pointerType)C(d)&&a.close(),b.hasClass(d,"pswp__img")&&(1===a.getZoomLevel()&&a.getZoomLevel()<=a.currItem.fitRatio?a.close():a.toggleDesktopZoom(c.detail.releasePoint));else if(a.options.tapToToggleControls&&(u?s.hideControls():s.showControls()),a.options.tapToClose&&(b.hasClass(d,"pswp__img")||C(d)))return void a.close()},s.onMouseOver=function(a){a=a||window.event;var c=a.target||a.srcElement;C(c)?b.addClass(d,"pswp__ui--over-close"):b.removeClass(d,"pswp__ui--over-close")},s.hideControls=function(){b.addClass(d,"pswp__ui--hidden"),u=!1},s.showControls=function(){u=!0,t||s.update(),b.removeClass(d,"pswp__ui--hidden")},s.supportsFullscreen=function(){var a=document;return!!(a.exitFullscreen||a.mozCancelFullScreen||a.webkitExitFullscreen||a.msExitFullscreen)},s.getFullscreenAPI=function(){var b,c=document.documentElement,d="fullscreenchange";return c.requestFullscreen?b={enterK:"requestFullscreen",exitK:"exitFullscreen",elementK:"fullscreenElement",eventK:d}:c.mozRequestFullScreen?b={enterK:"mozRequestFullScreen",exitK:"mozCancelFullScreen",elementK:"mozFullScreenElement",eventK:"moz"+d}:c.webkitRequestFullscreen?b={enterK:"webkitRequestFullscreen",exitK:"webkitExitFullscreen",elementK:"webkitFullscreenElement",eventK:"webkit"+d}:c.msRequestFullscreen&&(b={enterK:"msRequestFullscreen",exitK:"msExitFullscreen",elementK:"msFullscreenElement",eventK:"MSFullscreenChange"}),b&&(b.enter=function(){return j=a.options.closeOnScroll,a.options.closeOnScroll=!1,"webkitRequestFullscreen"!==this.enterK?a.template[this.enterK]():void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)},b.exit=function(){return a.options.closeOnScroll=j,document[this.exitK]()},b.isFullscreen=function(){return document[this.elementK]}),b}};return a}); \ No newline at end of file diff --git a/static/dev/photo-swipe/photoswipe.css b/static/dev/photo-swipe/photoswipe.css new file mode 100644 index 0000000..ac7b048 --- /dev/null +++ b/static/dev/photo-swipe/photoswipe.css @@ -0,0 +1,136 @@ +/** + * Core PhotoSwipe CSS file, http://photoswipe.com + * @author Dmitry Semenov + */ +.pswp { + display: none; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + overflow: hidden; + -ms-touch-action: none; + touch-action: none; + z-index: 1500; + -webkit-text-size-adjust: 100%; + -webkit-backface-visibility: hidden; + outline: none; } + .pswp * { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + .pswp img { + max-width: none; } + +.pswp--animate_opacity { + opacity: 0; + will-change: opacity; + -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); + transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); } + +.pswp--open { + display: block; } + +.pswp--zoom-allowed .pswp__img { + /* autoprefixer: off */ + cursor: -webkit-zoom-in; + cursor: -moz-zoom-in; + cursor: zoom-in; } + +.pswp--zoomed-in .pswp__img { + /* autoprefixer: off */ + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; } + +.pswp--dragging .pswp__img { + /* autoprefixer: off */ + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; } + +.pswp__bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: #000; + opacity: 0; + -webkit-backface-visibility: hidden; + will-change: opacity; } + +.pswp__scroll-wrap { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + -webkit-backface-visibility: hidden; + will-change: transform; } + +.pswp__container, .pswp__zoom-wrap { + -ms-touch-action: none; + touch-action: none; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; } + +.pswp__container, .pswp__img { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-touch-callout: none; } + +.pswp__zoom-wrap { + position: absolute; + width: 100%; + -webkit-transform-origin: left top; + -ms-transform-origin: left top; + transform-origin: left top; + -webkit-transition: -webkit-transform 333ms cubic-bezier(0.4, 0, 0.22, 1); + transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); } + +.pswp__bg { + will-change: opacity; + -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); + transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); } + +.pswp--animated-in .pswp__bg, .pswp--animated-in .pswp__zoom-wrap { + -webkit-transition: none; + transition: none; } + +.pswp__container, .pswp__zoom-wrap { + -webkit-backface-visibility: hidden; + will-change: transform; } + +.pswp__item { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + overflow: hidden; } + +.pswp__img { + position: absolute; + width: auto; + height: auto; + -webkit-transition: opacity 0.15s; + transition: opacity 0.15s; } + +.pswp__img--placeholder { + -webkit-backface-visibility: hidden; } + +.pswp__img--placeholder--blank { + background: #222; } + +.pswp--ie .pswp__img { + width: 100%; + height: 100%; + left: 0; + top: 0; } diff --git a/static/dev/photo-swipe/photoswipe.min.js b/static/dev/photo-swipe/photoswipe.min.js new file mode 100644 index 0000000..9895ec3 --- /dev/null +++ b/static/dev/photo-swipe/photoswipe.min.js @@ -0,0 +1,4 @@ +/*! PhotoSwipe - v4.0.1 - 2014-12-16 +* http://photoswipe.com +* Copyright (c) 2014 Dmitry Semenov; */ +!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.PhotoSwipe=b()}(this,function(){"use strict";var a=function(a,b,c,d){var e={features:null,bind:function(a,b,c,d){var e=(d?"remove":"add")+"EventListener";b=b.split(" ");for(var f=0;f0&&(g=parseInt(g[1],10),g>=1&&8>g&&(d.isOldIOSPhone=!0))}var h=f.match(/Android\s([0-9\.]*)/),i=h?h[1]:0;i=parseFloat(i),i>=1&&(4.4>i&&(d.isOldAndroid=!0),d.androidVersion=i),d.isMobileOpera=/opera mini|opera mobi/i.test(f)}for(var j,k,l=["transform","perspective","animationName"],m=["","webkit","Moz","ms","O"],n=0;4>n;n++){c=m[n];for(var o=0;3>o;o++)j=l[o],k=c+(c?j.charAt(0).toUpperCase()+j.slice(1):j),!d[j]&&k in b&&(d[j]=k);c&&!d.raf&&(c=c.toLowerCase(),d.raf=window[c+"RequestAnimationFrame"],d.raf&&(d.caf=window[c+"CancelAnimationFrame"]||window[c+"CancelRequestAnimationFrame"]))}if(!d.raf){var p=0;d.raf=function(a){var b=(new Date).getTime(),c=Math.max(0,16-(b-p)),d=window.setTimeout(function(){a(b+c)},c);return p=b+c,d},d.caf=function(a){clearTimeout(a)}}return d.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,e.features=d,d}};e.detectFeatures(),e.features.oldIE&&(e.bind=function(a,b,c,d){b=b.split(" ");for(var e,f=(d?"detach":"attach")+"Event",g=function(){c.handleEvent.call(c)},h=0;hb-1?a-b:0>a?b+a:a},Jb={},Kb=function(a,b){return Jb[a]||(Jb[a]=[]),Jb[a].push(b)},Lb=function(a){var b=Jb[a];if(b){var c=Array.prototype.slice.call(arguments);c.shift();for(var d=0;dc&&d>0||c>=rb()-1&&0>d)&&(a=vc.x+d*i.mainScrollEndFriction)}vc.x=a,Rb(a,n)},Tb=function(a){return 1/cb*a*t},Ub=function(a,b){var c=wc[a]-hb[a];return wb[a]+vb[a]+c-c*(b/t)},Vb=function(a,b){return a.x===b.x&&a.y===b.y},Wb=function(a,b){return Math.abs(a.x-b.x)b.min[a]?(c[a]=b.min[a],!0):c[a]=d)return ec(a),f(c),void(g&&g());f((c-b)*e(h/d)+b),cc[a].raf=H(j)}};j()},ic=function(b,c,d,f){O&&clearTimeout(O),pb=!0,ob=!0;var g;b.initialLayout?(g=b.initialLayout,b.initialLayout=null):g=i.getThumbBoundsFn&&i.getThumbBoundsFn(m);var h=function(){ec("initialZoom"),d||(Nb(1),c&&(c.style.display="block"),e.addClass(a,"pswp--animated-in"),Lb("initialZoom"+(d?"OutEnd":"InEnd"))),f&&f(),pb=!1},j=d?i.hideAnimationDuration:i.showAnimationDuration;return g&&void 0!==g.x&&j?(b.miniImg&&(b.miniImg.style.webkitBackfaceVisibility="hidden"),d||(s=g.w/b.w,xb.x=g.x,xb.y=g.y-K,i.showHideOpacity&&(a.style.opacity=.001,a.style.webkitBackfaceVisibility="hidden"),Pb()),fc("initialZoom"),d&&!l&&e.removeClass(a,"pswp--animated-in"),O=setTimeout(function(){if(Lb("initialZoom"+(d?"Out":"In")),d){var c=g.w/b.w,f={x:xb.x,y:xb.y},k=s,m=K,n=kb,o=function(b){x&&(m=e.getScrollY(),x=!1),1===b?(s=c,xb.x=g.x,xb.y=g.y-m,l&&h()):(s=(c-k)*b+k,xb.x=(g.x-f.x)*b+f.x,xb.y=(g.y-m-f.y)*b+f.y),Pb(),i.showHideOpacity?a.style.opacity=1-b:Nb(n-b*n)};l?hc("initialZoom",0,1,j,e.easing.cubic.out,o):(o(1),O=setTimeout(h,j+20))}else s=b.initialZoomLevel,Xb(xb,b.initialPosition),Pb(),Nb(1),i.showHideOpacity?a.style.opacity=1:Nb(1),O=setTimeout(h,j+20)},d?25:90),!0):(Lb("initialZoom"+(d?"Out":"In")),s=b.initialZoomLevel,Xb(xb,b.initialPosition),Pb(),a.style.opacity=d?0:1,Nb(1),h(),!1)},jc={shout:Lb,listen:Kb,viewportSize:zb,options:i,isMainScrollAnimating:function(){return fb},getZoomLevel:function(){return s},getCurrentIndex:function(){return m},isDragging:function(){return V},isZooming:function(){return ab},applyZoomPan:function(a,b,c){xb.x=b,xb.y=c,s=a,Pb()},init:function(){if(!j&&!k){var c;if(f.framework=e,f.template=a,f.bg=a.children[0],J=a.className,j=!0,N=e.detectFeatures(),H=N.raf,I=N.caf,E=N.transform,L=N.oldIE,f.scrollWrap=a.children[1],f.container=f.scrollWrap.children[0],n=f.container.style,E){var d=N.perspective&&!G;u="translate"+(d?"3d(":"("),v=N.perspective?", 0px)":")"}else E="left",e.addClass(a,"pswp--ie"),Rb=function(a,b){b.left=a+"px"},Qb=function(a){var b=a.container.style,c=a.fitRatio*a.w,d=a.fitRatio*a.h;b.width=c+"px",b.height=d+"px",b.left=a.initialPosition.x+"px",b.top=a.initialPosition.y+"px"},Pb=function(){if(eb){var a=eb,b=f.currItem,c=b.fitRatio*b.w,d=b.fitRatio*b.h;a.width=c+"px",a.height=d+"px",a.left=xb.x+"px",a.top=xb.y+"px"}};var g=function(a,b,c,d,e){A=a+b,B=a+c,C=a+d,D=e?a+e:""};for(f.itemHolders=y=[{el:f.container.children[0],wrap:0,index:-1},{el:f.container.children[1],wrap:0,index:-1},{el:f.container.children[2],wrap:0,index:-1}],y[0].el.style.display=y[2].el.style.display="none",F=N.pointerEvent,F&&N.touch&&(N.touch=!1),F?navigator.pointerEnabled?g("pointer","down","move","up","cancel"):g("MSPointer","Down","Move","Up","Cancel"):N.touch?(g("touch","start","move","end","cancel"),G=!0):g("mouse","down","move","up"),p=B+" "+C+" "+D,q=A,F&&!G&&(G=navigator.maxTouchPoints>1||navigator.msMaxTouchPoints>1),f.likelyTouchDevice=G,(!N.animationName||!N.transform||N.isOldIOSPhone||N.isOldAndroid||N.isMobileOpera)&&(i.showAnimationDuration=i.hideAnimationDuration=0),c=0;c2&&(l=!0,f.close())},keydown:function(a){z="",i.escKey&&27===a.keyCode?z="close":i.arrowKeys&&(37===a.keyCode?z="prev":39===a.keyCode&&(z="next")),z&&(a.ctrlKey||a.altKey||a.shiftKey||a.metaKey||(a.preventDefault?a.preventDefault():a.returnValue=!1,f[z]()))}},r[A]=Nc,r[B]=Oc,r[C]=Qc,D&&(r[D]=r[C]),N.touch&&(q+=" mousedown",p+=" mousemove mouseup",r.mousedown=r[A],r.mousemove=r[B],r.mouseup=r[C]),Lb("firstUpdate"),m=m||i.index||0,(isNaN(m)||0>m||m>=rb())&&(m=0),f.currItem=qb(m),(N.isOldIOSPhone||N.isOldAndroid)&&(Eb=!1),i.modal&&(a.setAttribute("aria-hidden","false"),Eb?a.style.position="fixed":(a.style.position="absolute",a.style.top=e.getScrollY()+"px")),void 0===M&&(Lb("initialLayout"),M=K=e.getScrollY());var O="pswp--open ";for(i.mainClass&&(O+=i.mainClass+" "),i.showHideOpacity&&(O+="pswp--animate_opacity "),O+=G?"pswp--touch":"pswp--notouch",O+=N.animationName?" pswp--css_animation":"",O+=N.svg?" pswp--svg":"",e.addClass(a,O),f.updateSize(),o=-1,Db=null,c=0;h>c;c++)Rb((c+o)*Cb.x,y[c].el.style);L||e.bind(f.scrollWrap,q,f),Kb("initialZoomInEnd",function(){f.setContent(y[0],m-1),f.setContent(y[2],m+1),y[0].el.style.display=y[2].el.style.display="block",i.focus&&a.focus(),Yb()}),f.setContent(y[1],m),f.updateCurrItem(),Lb("afterInit"),Eb||(w=setInterval(function(){dc||V||ab||s!==f.currItem.initialZoomLevel||f.updateSize()},1e3)),e.addClass(a,"pswp--visible")}},close:function(){j&&(j=!1,k=!0,Lb("close"),Zb(),ic(f.currItem,null,!0,f.destroy))},destroy:function(){Lb("destroy"),O&&clearTimeout(O),i.modal&&(a.setAttribute("aria-hidden","true"),a.className=J),w&&clearInterval(w),e.unbind(f.scrollWrap,q,f),e.unbind(window,"scroll",f),zc(),gc(),Jb=null},panTo:function(a,b,c){c||(a>db.min.x?a=db.min.x:adb.min.y?b=db.min.y:ba;a++)y[a].item&&(y[a].item.needsUpdate=!0)},updateCurrItem:function(a){if(0!==Db){var b,c=Math.abs(Db);if(!(a&&2>c)){f.currItem=qb(m),Lb("beforeChange",Db),c>=h&&(o+=Db+(Db>0?-h:h),c=h);for(var d=0;c>d;d++)Db>0?(b=y.shift(),y[h-1]=b,o++,Rb((o+2)*Cb.x,b.el.style),f.setContent(b,m-c+d+1+1)):(b=y.pop(),y.unshift(b),o--,Rb(o*Cb.x,b.el.style),f.setContent(b,m+c-d-1-1));if(eb&&1===Math.abs(Db)){var e=qb(z);e.initialZoomLevel!==s&&(Zc(e,zb),Qb(e))}Db=0,f.updateCurrZoomItem(),z=m,Lb("afterChange")}}},updateSize:function(b){if(!Eb){var c=e.getScrollY();if(M!==c&&(a.style.top=c+"px",M=c),!b&&Gb.x===window.innerWidth&&Gb.y===window.innerHeight)return;Gb.x=window.innerWidth,Gb.y=window.innerHeight,a.style.height=Gb.y+"px"}if(zb.x=f.scrollWrap.clientWidth,zb.y=f.scrollWrap.clientHeight,hb={x:0,y:M},Cb.x=zb.x+Math.round(zb.x*i.spacing),Cb.y=zb.y,Sb(Cb.x*Ab),Lb("beforeResize"),void 0!==o)for(var d,g,j=0;h>j;j++)d=y[j],Rb((j+o)*Cb.x,d.el.style),g=qb(d.index),g.needsUpdate&&(f.cleanSlide(g),f.setContent(d,d.index),1===j&&f.updateCurrZoomItem(!0),g.needsUpdate=!1),g&&g.container&&(Zc(g,zb),Qb(g));t=s=f.currItem.initialZoomLevel,db=f.currItem.bounds,db&&(xb.x=db.center.x,xb.y=db.center.y,Pb()),Lb("resize")},zoomTo:function(a,b,c,d,f){b&&(t=s,wc.x=Math.abs(b.x)-xb.x,wc.y=Math.abs(b.y)-xb.y,Xb(wb,xb));var g=ac(a,!1),h={};bc("x",g,h,a),bc("y",g,h,a);var i=s,j={x:xb.x,y:xb.y},k=function(b){1===b?(s=a,xb.x=h.x,xb.y=h.y):(s=(a-i)*b+i,xb.x=(h.x-j.x)*b+j.x,xb.y=(h.y-j.y)*b+j.y),f&&f(b),Pb()};c?hc("customZoomTo",0,1,c,d||e.easing.sine.inOut,k):k(1)}},kc=30,lc=10,mc={},nc={},oc={},pc={},qc={},rc=[],sc={},tc=[],uc={},vc=tb(),wc=tb(),xc=tb(),yc=function(a,b){return uc.x=Math.abs(a.x-b.x),uc.y=Math.abs(a.y-b.y),Math.sqrt(uc.x*uc.x+uc.y*uc.y)},zc=function(){Z&&(I(Z),Z=null)},Ac=function(){V&&(Z=H(Ac),Pc())},Bc=function(){return!("fit"===i.scaleMode&&s===f.currItem.initialZoomLevel)},Cc={},Dc=function(a,b){return Cc.prevent="A"!==a.target.tagName,Lb("preventDragEvent",a,b,Cc),Cc.prevent},Ec=function(a,b){return b.x=a.pageX,b.y=a.pageY,b.id=a.identifier,b},Fc=function(a,b,c){c.x=.5*(a.x+b.x),c.y=.5*(a.y+b.y)},Gc=function(a,b,c){if(a-Q>50){var d=tc.length>2?tc.shift():{};d.x=b,d.y=c,tc.push(d),Q=a}},Hc=function(){var a=xb.y-f.currItem.initialPosition.y;return 1-Math.abs(a/(zb.y/2))},Ic={},Jc={},Kc=[],Lc=function(a){for(;Kc.length>0;)Kc.pop();return F?(mb=0,rc.forEach(function(a){0===mb?Kc[0]=a:1===mb&&(Kc[1]=a),mb++})):a.type.indexOf("touch")>-1?a.touches&&a.touches.length>0&&(Kc[0]=Ec(a.touches[0],Ic),a.touches.length>1&&(Kc[1]=Ec(a.touches[1],Jc))):(Ic.x=a.pageX,Ic.y=a.pageY,Ic.id="",Kc[0]=Ic),Kc},Mc=function(a,b){var c,d,e=0,g=xb[a]+b[a],h=b[a]>0,j=vc.x+b.x,k=vc.x-sc.x;c=g>db.min[a]||gdb.min[a]&&(c=i.panEndFriction,e=db.min[a]-g,d=db.min[a]-wb[a]),(0>=d||0>k)&&rb()>1?(m=j,0>k&&j>sc.x&&(m=sc.x)):db.min.x!==db.max.x&&(l=g)):(g=d||k>0)&&rb()>1?(m=j,k>0&&jf.currItem.fitRatio&&(xb[a]+=b[a]*c)):(void 0!==m&&(Sb(m,!0),$=m===sc.x?!1:!0),db.min.x!==db.max.x&&(void 0!==l?xb.x=l:$||(xb.x+=b.x*c)),void 0!==m)},Nc=function(a){if(pb)return void a.preventDefault();if(!U||"mousedown"!==a.type){if(Dc(a,!0)&&a.preventDefault(),Lb("pointerDown"),F){var b=e.arraySearch(rc,a.pointerId,"id");0>b&&(b=rc.length),rc[b]={x:a.pageX,y:a.pageY,id:a.pointerId}}var c=Lc(a),d=c.length;_=null,gc(),V&&1!==d||(V=ib=!0,e.bind(window,p,f),S=lb=jb=T=$=Y=W=X=!1,gb=null,Lb("firstTouchStart",c),Xb(wb,xb),vb.x=vb.y=0,Xb(pc,c[0]),Xb(qc,pc),sc.x=Cb.x*Ab,tc=[{x:pc.x,y:pc.y}],Q=P=Mb(),ac(s,!0),zc(),Ac()),!ab&&d>1&&!fb&&!$&&(t=s,X=!1,ab=W=!0,vb.y=vb.x=0,Xb(wb,xb),Xb(mc,c[0]),Xb(nc,c[1]),Fc(mc,nc,xc),wc.x=Math.abs(xc.x)-xb.x,wc.y=Math.abs(xc.y)-xb.y,bb=cb=yc(mc,nc))}},Oc=function(a){if(a.preventDefault(),F){var b=e.arraySearch(rc,a.pointerId,"id");if(b>-1){var c=rc[b];c.x=a.pageX,c.y=a.pageY}}if(V){var d=Lc(a);if(gb||Y||ab)_=d;else{var f=Math.abs(d[0].x-pc.x)-Math.abs(d[0].y-pc.y);Math.abs(f)>=lc&&(gb=f>0?"h":"v",_=d)}}},Pc=function(){if(_){var a=_.length;if(0!==a)if(Xb(mc,_[0]),oc.x=mc.x-pc.x,oc.y=mc.y-pc.y,ab&&a>1){if(pc.x=mc.x,pc.y=mc.y,!oc.x&&!oc.y&&Vb(_[1],nc))return;Xb(nc,_[1]),X||(X=!0,Lb("zoomGestureStarted"));var b=yc(mc,nc),c=Tb(b);c>f.currItem.initialZoomLevel+f.currItem.initialZoomLevel/15&&(lb=!0);var d=1;if(c1&&(d=1),c=f.currItem.minZoom-d*(f.currItem.minZoom/3);else c>f.currItem.maxZoom&&(d=(c-f.currItem.maxZoom)/(6*f.currItem.minZoom),d>1&&(d=1),c=f.currItem.maxZoom+d*f.currItem.minZoom);1!==d&&0>d&&(d=0),bb=b,Fc(mc,nc,yb),vb.x+=yb.x-xc.x,vb.y+=yb.y-xc.y,Xb(xc,yb),xb.x=Ub("x",c),xb.y=Ub("y",c),S=c>s,s=c,Pb()}else{if(!gb)return;if(ib&&(ib=!1,Math.abs(oc.x)>=lc&&(oc.x-=_[0].x-qc.x),Math.abs(oc.y)>=lc&&(oc.y-=_[0].y-qc.y)),pc.x=mc.x,pc.y=mc.y,0===oc.x&&0===oc.y)return;if("v"===gb&&i.closeOnVerticalDrag&&!Bc()){vb.y+=oc.y,xb.y+=oc.y;var h=Hc();return T=!0,Lb("onVerticalDrag",h),Nb(h),void Pb()}Gc(Mb(),mc.x,mc.y),Y=!0,db=f.currItem.bounds;var j=Mc("x",oc);j||Mc("y",oc),Pb()}}},Qc=function(a){if(N.isOldAndroid){if(U&&"mouseup"===a.type)return;a.type.indexOf("touch")>-1&&(clearTimeout(U),U=setTimeout(function(){U=0},600))}Lb("pointerUp"),Dc(a,!1)&&a.preventDefault();var b;if(F){var c=e.arraySearch(rc,a.pointerId,"id");if(c>-1)if(b=rc.splice(c,1)[0],navigator.pointerEnabled)b.type=a.pointerType||"mouse";else{var d={4:"mouse",2:"touch",3:"pen"};b.type=d[a.pointerType],b.type||(b.type=a.pointerType||"mouse")}}var g,h=Lc(a),i=h.length;if("mouseup"===a.type&&(i=0),2===i)return _=null,!0;1===i&&Xb(qc,h[0]),0!==i||gb||fb||(b||("mouseup"===a.type?b={x:a.pageX,y:a.pageY,type:"mouse"}:a.changedTouches&&a.changedTouches[0]&&(b={x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY,type:"touch"})),Lb("touchRelease",a,b));var j=-1;if(0===i&&(V=!1,e.unbind(window,p,f),zc(),ab?j=0:-1!==ub&&(j=Mb()-ub)),ub=1===i?Mb():-1,g=-1!==j&&150>j?"zoom":"swipe",ab&&2>i&&(ab=!1,1===i&&(g="zoomPointerUp"),Lb("zoomGestureEnded")),_=null,Y||X||fb||T)if(gc(),R||(R=Rc()),R.calculateSwipeSpeed("x"),T){var k=Hc();if(.6>k)f.close();else{var l=xb.y,m=kb;hc("verticalDrag",0,1,300,e.easing.cubic.out,function(a){xb.y=(f.currItem.initialPosition.y-l)*a+l,Nb((1-m)*a+m),Pb()}),Lb("onVerticalDrag",1)}}else{if(($||fb)&&0===i){var n=Tc(g,R);if(n)return;g="zoomPointerUp"}if(!fb)return"swipe"!==g?void Uc():void(!$&&s>f.currItem.fitRatio&&Sc(R))}},Rc=function(){var a,b,c={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(d){tc.length>1?(a=Mb()-Q+50,b=tc[tc.length-2][d]):(a=Mb()-P,b=qc[d]),c.lastFlickOffset[d]=pc[d]-b,c.lastFlickDist[d]=Math.abs(c.lastFlickOffset[d]),c.lastFlickSpeed[d]=c.lastFlickDist[d]>20?c.lastFlickOffset[d]/a:0,Math.abs(c.lastFlickSpeed[d])<.1&&(c.lastFlickSpeed[d]=0),c.slowDownRatio[d]=.95,c.slowDownRatioReverse[d]=1-c.slowDownRatio[d],c.speedDecelerationRatio[d]=1},calculateOverBoundsAnimOffset:function(a,b){c.backAnimStarted[a]||(xb[a]>db.min[a]?c.backAnimDestination[a]=db.min[a]:xb[a]kc&&(b.lastFlickDist.x<10||b.lastFlickOffset.x>20)?d=-1:-kc>g&&(b.lastFlickDist.x<10||b.lastFlickOffset.x<-20)&&(d=1)}var h;d&&(m+=d,0>m?(m=i.loop?rb()-1:0,h=!0):m>=rb()&&(m=i.loop?0:rb()-1,h=!0),(!h||i.loop)&&(Db+=d,Ab-=d,c=!0));var j,k=Cb.x*Ab,l=Math.abs(k-vc.x);return c||k>vc.x==b.lastFlickSpeed.x>0?(j=Math.abs(b.lastFlickSpeed.x)>0?l/Math.abs(b.lastFlickSpeed.x):333,j=Math.min(j,400),j=Math.max(j,250)):j=333,Bb===m&&(c=!1),fb=!0,hc("mainScroll",vc.x,k,j,e.easing.cubic.out,Sb,function(){gc(),fb=!1,Bb=-1,(c||Bb!==m)&&f.updateCurrItem(),Lb("mainScrollAnimComplete")}),c&&f.updateCurrItem(!0),c},Uc=function(){var a=s;sf.currItem.maxZoom&&(a=f.currItem.maxZoom);var b,c=1,d=kb;return jb&&!S&&!lb&&sThe image could not be loaded.',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return nb.length}},Zc=function(a,b,c){if(a.src){var d=!c;if(d&&(a.vGap||(a.vGap={top:0,bottom:0}),Lb("parseVerticalMargin",a)),Vc.x=b.x,Vc.y=b.y-a.vGap.top-a.vGap.bottom,d){var e=Vc.x/a.w,f=Vc.y/a.h;a.fitRatio=f>e?e:f,a.fillRatio=e>f?e:f;var g=i.scaleMode;"orig"===g?c=1:"fit"===g?c=a.fitRatio:"fill"===g&&(c=a.fillRatio),c>1&&(c=1),a.initialZoomLevel=c,a.maxZoom=2,a.doubleTapZoom=2*c>1?2*c:1,a.minZoom=c,a.bounds||(a.bounds={center:{},max:{},min:{}})}if(!c)return;Wc.x=a.w*c,Wc.y=a.h*c;var h=a.bounds;return h.center.x=Math.round((Vc.x-Wc.x)/2),h.center.y=Math.round((Vc.y-Wc.y)/2)+a.vGap.top,h.max.x=Wc.x>Vc.x?Math.round(Vc.x-Wc.x):h.center.x,h.max.y=Wc.y>Vc.y?Math.round(Vc.y-Wc.y)+a.vGap.top:h.center.y,h.min.x=Wc.x>Vc.x?0:h.center.x,h.min.y=Wc.y>Vc.y?a.vGap.top:h.center.y,d&&c===a.initialZoomLevel&&(a.initialPosition=h.center),h}return!1},$c=function(a,b,c,d,e,g){var h;!e&&(G||i.alwaysFadeIn)&&(a===m||f.isMainScrollAnimating()||f.isDragging()&&!f.isZooming())&&(h=!0),d&&(h&&(d.style.opacity=0),b.imageAppended=!0,c.appendChild(d),h&&setTimeout(function(){d.style.opacity=1,g&&setTimeout(function(){b&&b.loaded&&b.placeholder&&(b.placeholder.style.display="none",b.placeholder=null)},500)},50))},_c=function(a){a.loading=!0,a.loaded=!1;var b=a.img=e.createEl("pswp__img","img"),c=function(){a.loading=!1,a.loaded=!0,a.loadComplete?a.loadComplete(a):a.img=null,b.onload=b.onerror=null,b=null};return b.onload=c,b.onerror=function(){a.loadError=!0,c()},b.src=a.src,b},ad=function(a,b){return a.loadError?(b.el.innerHTML=i.errorMsg.replace("%url%",a.src),!0):void 0},bd=function(){if(Xc.length){for(var a,b=0;b0,e=Math.min(c[0],rb()),g=Math.min(c[1],rb());for(b=1;(d?g:e)>=b;b++)f.lazyLoadItem(m+b);for(b=1;(d?e:g)>=b;b++)f.lazyLoadItem(m-b)}),Kb("initialLayout",function(){f.currItem.initialLayout=i.getThumbBoundsFn&&i.getThumbBoundsFn(m)}),Kb("mainScrollAnimComplete",bd),Kb("initialZoomInEnd",bd),Kb("destroy",function(){for(var a,b=0;b=0&&void 0!==nb[a]?nb[a]:!1},allowProgressiveImg:function(){return i.forceProgressiveLoading||!G||i.mouseUsed||screen.width>1200},setContent:function(a,b){i.loop&&(b=Ib(b));var c=f.getItemAt(a.index);c&&(c.container=null);var d,g=f.getItemAt(b);if(g){if(Lb("gettingData",b,g),a.index=b,a.item=g,ad(g,a))return g.initialPosition.x=g.initialPosition.y=0,g.initialZoomLevel=g.maxZoom=g.minZoom=1,eb=null,g.w=50,g.h=50,void Qb(g);var h=g.container=e.createEl("pswp__zoom-wrap");if(g.loaded)d=e.createEl("pswp__img","img"),d.style.webkitBackfaceVisibility="hidden",d.style.opacity=1,d.src=g.src,$c(b,g,h,d,!0);else{if(g.loadComplete=function(c){if(j){if(c.img.style.webkitBackfaceVisibility="hidden",a.index===b){if(ad(c,a))return void(c.img=null);c.imageAppended?!pb&&c.placeholder&&(c.placeholder.style.display="none",c.placeholder=null):N.transform&&(fb||pb)?Xc.push({item:c,baseDiv:h,img:c.img,index:b,holder:a}):$c(b,c,h,c.img,fb||pb)}c.loadComplete=null,c.img=null,Lb("imageLoadComplete",b,c)}},e.features.transform){var k=e.createEl("pswp__img pswp__img--placeholder"+(g.msrc?"":" pswp__img--placeholder--blank"),g.msrc?"img":"");g.msrc&&(k.src=g.msrc),k.style.width=g.w+"px",k.style.height=g.h+"px",h.appendChild(k),g.placeholder=k}g.loading||_c(g),f.allowProgressiveImg()&&(!ob&&N.transform?Xc.push({item:g,baseDiv:h,img:g.img,index:b,holder:a}):$c(b,g,h,g.img,!0,!0))}Zc(g,zb),ob||b!==m?Qb(g):(eb=h.style,ic(g,d||g.img)),a.el.innerHTML="",a.el.appendChild(h)}else a.el.innerHTML=""},cleanSlide:function(a){a.img&&(a.img.onload=a.img.onerror=null),a.loaded=a.loading=a.img=a.imageAppended=!1}}});var cd,dd={},ed=function(a,b,c){var d=document.createEvent("CustomEvent");d.initCustomEvent("pswpTap",!0,!0,{origEvent:a,target:a.target,releasePoint:b,pointerType:c||"touch"}),a.target.dispatchEvent(d)};Hb("Tap",{publicMethods:{initTap:function(){Kb("firstTouchStart",f.onTapStart),Kb("touchRelease",f.onTapRelease),Kb("destroy",function(){dd={},cd=null})},onTapStart:function(a){a.length>1&&(clearTimeout(cd),cd=null)},onTapRelease:function(a,b){if(b&&!Y&&!W&&!dc){var c=b;if(cd&&(clearTimeout(cd),cd=null,Wb(c,dd)))return void Lb("doubleTap",c);var d=a.target.tagName.toLowerCase();if("mouse"===b.type)return void ed(a,b,"mouse");if("button"===d||e.hasClass(a.target,"pswp__single-tap"))return void ed(a,b);Xb(dd,c),cd=setTimeout(function(){ed(a,b),cd=null},300)}}}});var fd;Hb("DesktopZoom",{publicMethods:{handleMouseWheel:function(a){if(s<=f.currItem.fitRatio)return!0;if(a.preventDefault(),a.stopPropagation(),fd.x=0,"deltaX"in a)fd.x=a.deltaX,fd.y=a.deltaY;else if("wheelDelta"in a)a.wheelDeltaX&&(fd.x=-.16*a.wheelDeltaX),fd.y=a.wheelDeltaY?-.16*a.wheelDeltaY:-.16*a.wheelDelta;else{if(!("detail"in a))return;fd.y=a.detail}ac(s,!0),f.panTo(xb.x-fd.x,xb.y-fd.y)},toggleDesktopZoom:function(b){b=b||{x:zb.x/2,y:zb.y/2+K};var c=1===s;f.mouseZoomedIn=!c,f.zoomTo(c?f.currItem.initialZoomLevel:1,b,333),e[(c?"remove":"add")+"Class"](a,"pswp--zoomed-in")},setupDesktopZoom:function(b){fd={};var c="wheel mousewheel DOMMouseScroll";Kb("bindEvents",function(){e.bind(a,c,f.handleMouseWheel)}),Kb("unbindEvents",function(){fd&&e.unbind(a,c,f.handleMouseWheel)}),f.mouseZoomedIn=!1;var d,g=function(){f.mouseZoomedIn&&(e.removeClass(a,"pswp--zoomed-in"),f.mouseZoomedIn=!1),1>s?e.addClass(a,"pswp--zoom-allowed"):e.removeClass(a,"pswp--zoom-allowed"),h()},h=function(){d&&(e.removeClass(a,"pswp--dragging"),d=!1)};Kb("resize",g),Kb("afterChange",g),Kb("pointerDown",function(){f.mouseZoomedIn&&(d=!0,e.addClass(a,"pswp--dragging"))}),Kb("pointerUp",h),b||g()},initDesktopZoom:function(){L||(G?Kb("mouseUsed",function(){f.setupDesktopZoom()}):f.setupDesktopZoom(!0))}}});var gd,hd,id,jd,kd,ld,md,nd,od,pd,qd,rd={history:!0,galleryUID:1},sd=function(){return qd.hash.substring(1)},td=function(){gd&&clearTimeout(gd),id&&clearTimeout(id)},ud=function(){var a=sd(),b={};if(a.length<5)return b;for(var c=a.split("&"),d=0;d-1&&(md=md.split("&gid=")[0],md=md.split("?gid=")[0]),Kb("afterChange",f.updateURL),Kb("unbindEvents",function(){e.unbind(window,"hashchange",f.onHashChange)});var a=function(){ld=!0,od||(pd?history.back():md?qd.hash=md:"pushState"in history?history.pushState("",document.title,qd.pathname+qd.search):qd.hash=""),td()};Kb("unbindEvents",function(){l&&a()}),Kb("destroy",function(){ld||a()}),Kb("firstUpdate",function(){m=ud().pid});var b=md.indexOf("pid=");b>-1&&(md=md.substring(0,b),"&"===md.slice(-1)&&(md=md.slice(0,-1))),setTimeout(function(){j&&e.bind(window,"hashchange",f.onHashChange)},40)}},onHashChange:function(){return sd()===md?(od=!0,void f.close()):void(jd||(kd=!0,f.goTo(ud().pid),kd=!1))},updateURL:function(){td(),kd||(nd?gd=setTimeout(vd,800):vd())}}}),e.extend(f,jc)};return a}); \ No newline at end of file