Visual Portfolio, Photo Gallery & Post Grid - Version 2.8.2

Version Description

Download this release

Release Info

Developer nko
Plugin Icon 128x128 Visual Portfolio, Photo Gallery & Post Grid
Version 2.8.2
Comparing to
See all releases

Code changes from version 2.8.1 to 2.8.2

assets/admin/js/elementor.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.8.1
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.8.2
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
assets/admin/js/mce-dropdown.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.8.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.8.2
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
assets/admin/js/script.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.8.1
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.8.2
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
assets/admin/js/vc-frontend.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.8.1
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.8.2
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
assets/css/layout-justified-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .vp-portfolio{--vp-justified__transition-duration: var(--vp-interactive__transition-duration);--vp-justified__transition-easing: var(--vp-interactive__transition-easing)}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:height}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:right;top:0;right:0;-webkit-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:transform, width, height}
1
+ .vp-portfolio{--vp-justified__transition-duration: var(--vp-interactive__transition-duration);--vp-justified__transition-easing: var(--vp-interactive__transition-easing)}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:height}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:right;top:0;right:0;-webkit-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);will-change:transform}
assets/css/layout-justified.min.css CHANGED
@@ -1 +1 @@
1
- .vp-portfolio{--vp-justified__transition-duration: var(--vp-interactive__transition-duration);--vp-justified__transition-easing: var(--vp-interactive__transition-easing)}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:height}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:left;top:0;left:0;-webkit-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) width var(--vp-justified__transition-easing),var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:transform, width, height}
1
+ .vp-portfolio{--vp-justified__transition-duration: var(--vp-interactive__transition-duration);--vp-justified__transition-easing: var(--vp-interactive__transition-easing)}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) height var(--vp-justified__transition-easing);will-change:height}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:left;top:0;left:0;-webkit-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);-o-transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);transition:var(--vp-justified__transition-duration) transform var(--vp-justified__transition-easing);will-change:transform}
assets/css/main-rtl.min.css CHANGED
@@ -1 +1 @@
1
- :root{--vp-color-brand: #2540cc;--vp-color-gray: #6c7781;--vp-color-gray-darken: #4b4b4b;--vp-color-gray-light: #e8e8e8;--vp-color-gray-lighten: #f7f7f7;--vp-border-radius: 5px;--vp-items__gap: 0;--vp-transition-duration: .3s;--vp-transition-easing: ease-in-out;--vp-interactive__transition-duration: .2s;--vp-interactive__transition-easing: ease-in-out}.vp-portfolio__items{--vp-items__gap-vertical: var(--vp-items__gap)}.vp-portfolio{--vp-wrap__min-height: 114px;--vp-elements__gap: 20px;--vp-images__object-fit: cover;--vp-images__object-position: 50% 50%;--vp-images-lazy__background: linear-gradient(-70deg, rgba(140, 140, 140, 0) 42%, rgba(140, 140, 140, .05) 50%, rgba(140, 140, 140, 0) 58%);--vp-images-lazy__background-color: rgba(140, 140, 140, .05);--vp-images-lazy__animation-duration: 3s}.vp-spinner{--vp-spinner__color: currentColor;--vp-spinner__size: 20px;--vp-spinner__border-size: 2px;--vp-spinner__speed: .3s;--vp-spinner--background__color: var(--vp-spinner__color);--vp-spinner--background__opacity: .3}.vp-portfolio{position:relative;min-height:var(--vp-wrap__min-height)}.vp-portfolio,.vp-portfolio *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-portfolio__items{-webkit-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);-o-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);will-change:height, transform}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__sort-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__layout-elements{margin-bottom:var(--vp-elements__gap);visibility:hidden;opacity:0;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio>:last-child{margin-bottom:0}.vp-portfolio__item-wrap{position:relative;float:right;width:33.333%}.vp-svg-icon{display:inline-block;width:1em;height:1em;overflow:visible;font-size:inherit;vertical-align:-.125em}.vp-screen-reader-text{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);word-break:normal;word-wrap:normal !important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.vp-screen-reader-text:focus{display:block;top:5px;left:5px;width:auto;height:auto;padding:15px 23px 14px;clip:auto !important;font-size:14px;font-size:.875rem;font-weight:700;line-height:normal;color:var(--vp-color-brand);text-decoration:none;background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,0.6);box-shadow:0 0 2px 2px rgba(0,0,0,0.6);-webkit-clip-path:none;clip-path:none;z-index:100000}[data-vp-layout]:not([data-vp-layout="slider"]) .vp-portfolio__item-wrap{padding:0 !important;margin:0 !important}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;padding:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a,.vp-portfolio__item .vp-portfolio__thumbnail-img img{display:block;width:100%;height:auto}.vp-portfolio__item-img,.vp-portfolio__thumbnail-img{position:relative}.vp-portfolio__layout-elements{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + var(--vp-elements__gap));margin-top:calc(-1 * var(--vp-elements__gap));margin-right:calc(-1 * var(--vp-elements__gap))}.vp-portfolio__layout-elements>*{margin-top:var(--vp-elements__gap);margin-right:var(--vp-elements__gap)}.vp-portfolio__layout-elements-align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-portfolio__layout-elements-align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__layout-elements-align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-portfolio__layout-elements-align-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vp-portfolio figure.vp-portfolio__item{margin:0}[class^="wp-block-"]:not(.wp-block-gallery) figcaption.vp-portfolio__item-meta,.vp-portfolio figcaption.vp-portfolio__item-meta{margin-bottom:0;font-style:inherit}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio__preloader{position:absolute;right:50%;width:20px;height:20px;margin-top:45px;margin-right:-10px}.vp-portfolio__preloader svg{display:block;width:100%;height:100%}.vp-portfolio__preloader::after{content:"";position:absolute;display:block;top:-2px;right:-2px;width:24px;height:24px;text-indent:-9999em;border:1px solid rgba(0,0,0,0.2);border-right:1px solid #000;border-radius:50%;-webkit-animation:vp-preloader-spinner .3s infinite linear;animation:vp-preloader-spinner .3s infinite linear}@-webkit-keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__layout-elements{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap{visibility:hidden;opacity:0}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap .vp-portfolio__preloader{-webkit-animation:none;animation:none}.vp-single-filter.vp-single-filter__ready .vp-portfolio__filter-wrap{visibility:visible;opacity:1}.vp-single-sort.vp-single-sort__ready .vp-portfolio__sort-wrap{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;left:0;bottom:0;right:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__layout-elements{opacity:.5}.vp-portfolio__item-popup{display:none}img.vp-lazyload{opacity:1;-webkit-transition:var(--vp-transition-duration) opacity;-o-transition:var(--vp-transition-duration) opacity;transition:var(--vp-transition-duration) opacity;will-change:opacity}.vp-portfolio__item-img::before,.vp-portfolio__thumbnail-img::before{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:var(--vp-images-lazy__background);background-color:var(--vp-images-lazy__background-color);background-position:100% 50%;background-size:500% 100%;-webkit-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility}.vp-portfolio__item-img-lazyloading::before,.vp-portfolio__thumbnail-img-lazyloading::before{visibility:visible;opacity:1;-webkit-transition:none;-o-transition:none;transition:none;-webkit-animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite;animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite}.vp-portfolio__item-img-lazyloading img.vp-lazyload,.vp-portfolio__thumbnail-img-lazyloading img.vp-lazyload{opacity:0}@-webkit-keyframes vp-lazyload-placeholder{0%,80%{background-position:0% 50%}100%{background-position:100% 50%}}@keyframes vp-lazyload-placeholder{0%,80%{background-position:0% 50%}100%{background-position:100% 50%}}.vp-spinner{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(--vp-spinner__size);height:var(--vp-spinner__size);text-indent:-9999em;border:var(--vp-spinner__border-size) solid transparent;border-right:var(--vp-spinner__border-size) solid var(--vp-spinner__color);border-radius:50%;-webkit-animation:vp-spinner var(--vp-spinner__speed) infinite linear;animation:vp-spinner var(--vp-spinner__speed) infinite linear}.vp-spinner::after{content:"";position:absolute;display:block;top:calc(-1 * var(--vp-spinner__border-size));left:calc(-1 * var(--vp-spinner__border-size));bottom:calc(-1 * var(--vp-spinner__border-size));right:calc(-1 * var(--vp-spinner__border-size));border:var(--vp-spinner__border-size) solid var(--vp-spinner--background__color);border-radius:50%;opacity:var(--vp-spinner--background__opacity)}@-webkit-keyframes vp-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes vp-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}
1
+ :root{--vp-color-brand: #2540cc;--vp-color-gray: #6c7781;--vp-color-gray-darken: #4b4b4b;--vp-color-gray-light: #e8e8e8;--vp-color-gray-lighten: #f7f7f7;--vp-border-radius: 5px;--vp-items__gap: 0;--vp-transition-duration: .3s;--vp-transition-easing: ease-in-out;--vp-interactive__transition-duration: .2s;--vp-interactive__transition-easing: ease-in-out}.vp-portfolio__items{--vp-items__gap-vertical: var(--vp-items__gap)}.vp-portfolio{--vp-wrap__min-height: 114px;--vp-elements__gap: 20px;--vp-images__object-fit: cover;--vp-images__object-position: 50% 50%;--vp-images-lazy__background: linear-gradient(-70deg, rgba(140, 140, 140, 0) 42%, rgba(140, 140, 140, .05) 50%, rgba(140, 140, 140, 0) 58%);--vp-images-lazy__background-color: rgba(140, 140, 140, .05);--vp-images-lazy__animation-duration: 3s}.vp-spinner{--vp-spinner__color: currentColor;--vp-spinner__size: 20px;--vp-spinner__border-size: 2px;--vp-spinner__speed: .3s;--vp-spinner--background__color: var(--vp-spinner__color);--vp-spinner--background__opacity: .3}.vp-portfolio{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:var(--vp-wrap__min-height)}.vp-portfolio *,.vp-portfolio *::before,.vp-portfolio *::after{-webkit-box-sizing:inherit;box-sizing:inherit}.vp-portfolio__items{-webkit-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);-o-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);will-change:height, transform}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__sort-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__layout-elements{margin-bottom:var(--vp-elements__gap);visibility:hidden;opacity:0;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio>:last-child{margin-bottom:0}.vp-portfolio__item-wrap{position:relative;float:right;width:33.333%}.vp-svg-icon{display:inline-block;width:1em;height:1em;overflow:visible;font-size:inherit;vertical-align:-.125em}.vp-screen-reader-text{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);word-break:normal;word-wrap:normal !important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.vp-screen-reader-text:focus{display:block;top:5px;left:5px;width:auto;height:auto;padding:15px 23px 14px;clip:auto !important;font-size:14px;font-size:.875rem;font-weight:700;line-height:normal;color:var(--vp-color-brand);text-decoration:none;background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,0.6);box-shadow:0 0 2px 2px rgba(0,0,0,0.6);-webkit-clip-path:none;clip-path:none;z-index:100000}[data-vp-layout]:not([data-vp-layout="slider"]) .vp-portfolio__item-wrap{padding:0 !important;margin:0 !important}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;padding:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a,.vp-portfolio__item .vp-portfolio__thumbnail-img img{display:block;width:100%;height:auto}.vp-portfolio__item-img,.vp-portfolio__thumbnail-img{position:relative}.vp-portfolio__layout-elements{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + var(--vp-elements__gap));margin-top:calc(-1 * var(--vp-elements__gap));margin-right:calc(-1 * var(--vp-elements__gap))}.vp-portfolio__layout-elements>*{margin-top:var(--vp-elements__gap);margin-right:var(--vp-elements__gap)}.vp-portfolio__layout-elements-align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-portfolio__layout-elements-align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__layout-elements-align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-portfolio__layout-elements-align-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vp-portfolio figure.vp-portfolio__item{margin:0}[class^="wp-block-"]:not(.wp-block-gallery) figcaption.vp-portfolio__item-meta,.vp-portfolio figcaption.vp-portfolio__item-meta{margin-bottom:0;font-style:inherit}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio__preloader{position:absolute;right:50%;width:20px;height:20px;margin-top:45px;margin-right:-10px}.vp-portfolio__preloader svg{display:block;width:100%;height:100%}.vp-portfolio__preloader::after{content:"";position:absolute;display:block;top:-2px;right:-2px;width:24px;height:24px;text-indent:-9999em;border:1px solid rgba(0,0,0,0.2);border-right:1px solid #000;border-radius:50%;-webkit-animation:vp-preloader-spinner .3s infinite linear;animation:vp-preloader-spinner .3s infinite linear}@-webkit-keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__layout-elements{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap{visibility:hidden;opacity:0}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap .vp-portfolio__preloader{-webkit-animation:none;animation:none}.vp-single-filter.vp-single-filter__ready .vp-portfolio__filter-wrap{visibility:visible;opacity:1}.vp-single-sort.vp-single-sort__ready .vp-portfolio__sort-wrap{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;left:0;bottom:0;right:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__layout-elements{opacity:.5}.vp-portfolio__item-popup{display:none}img.vp-lazyload{opacity:1;-webkit-transition:var(--vp-transition-duration) opacity;-o-transition:var(--vp-transition-duration) opacity;transition:var(--vp-transition-duration) opacity;will-change:opacity}.vp-portfolio__item-img::before,.vp-portfolio__thumbnail-img::before{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:var(--vp-images-lazy__background);background-color:var(--vp-images-lazy__background-color);background-position:100% 50%;background-size:500% 100%;-webkit-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility}.vp-portfolio__item-img-lazyloading::before,.vp-portfolio__thumbnail-img-lazyloading::before{visibility:visible;opacity:1;-webkit-transition:none;-o-transition:none;transition:none;-webkit-animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite;animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite}.vp-portfolio__item-img-lazyloading img.vp-lazyload,.vp-portfolio__thumbnail-img-lazyloading img.vp-lazyload{opacity:0}@-webkit-keyframes vp-lazyload-placeholder{0%,80%{background-position:0% 50%}100%{background-position:100% 50%}}@keyframes vp-lazyload-placeholder{0%,80%{background-position:0% 50%}100%{background-position:100% 50%}}.vp-spinner{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(--vp-spinner__size);height:var(--vp-spinner__size);text-indent:-9999em;border:var(--vp-spinner__border-size) solid transparent;border-right:var(--vp-spinner__border-size) solid var(--vp-spinner__color);border-radius:50%;-webkit-animation:vp-spinner var(--vp-spinner__speed) infinite linear;animation:vp-spinner var(--vp-spinner__speed) infinite linear}.vp-spinner::after{content:"";position:absolute;display:block;top:calc(-1 * var(--vp-spinner__border-size));left:calc(-1 * var(--vp-spinner__border-size));bottom:calc(-1 * var(--vp-spinner__border-size));right:calc(-1 * var(--vp-spinner__border-size));border:var(--vp-spinner__border-size) solid var(--vp-spinner--background__color);border-radius:50%;opacity:var(--vp-spinner--background__opacity)}@-webkit-keyframes vp-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes vp-spinner{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}
assets/css/main.min.css CHANGED
@@ -1 +1 @@
1
- :root{--vp-color-brand: #2540cc;--vp-color-gray: #6c7781;--vp-color-gray-darken: #4b4b4b;--vp-color-gray-light: #e8e8e8;--vp-color-gray-lighten: #f7f7f7;--vp-border-radius: 5px;--vp-items__gap: 0;--vp-transition-duration: .3s;--vp-transition-easing: ease-in-out;--vp-interactive__transition-duration: .2s;--vp-interactive__transition-easing: ease-in-out}.vp-portfolio__items{--vp-items__gap-vertical: var(--vp-items__gap)}.vp-portfolio{--vp-wrap__min-height: 114px;--vp-elements__gap: 20px;--vp-images__object-fit: cover;--vp-images__object-position: 50% 50%;--vp-images-lazy__background: linear-gradient(-70deg, rgba(140, 140, 140, 0) 42%, rgba(140, 140, 140, .05) 50%, rgba(140, 140, 140, 0) 58%);--vp-images-lazy__background-color: rgba(140, 140, 140, .05);--vp-images-lazy__animation-duration: 3s}.vp-spinner{--vp-spinner__color: currentColor;--vp-spinner__size: 20px;--vp-spinner__border-size: 2px;--vp-spinner__speed: .3s;--vp-spinner--background__color: var(--vp-spinner__color);--vp-spinner--background__opacity: .3}.vp-portfolio{position:relative;min-height:var(--vp-wrap__min-height)}.vp-portfolio,.vp-portfolio *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-portfolio__items{-webkit-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);-o-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);will-change:height, transform}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__sort-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__layout-elements{margin-bottom:var(--vp-elements__gap);visibility:hidden;opacity:0;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio>:last-child{margin-bottom:0}.vp-portfolio__item-wrap{position:relative;float:left;width:33.333%}.vp-svg-icon{display:inline-block;width:1em;height:1em;overflow:visible;font-size:inherit;vertical-align:-.125em}.vp-screen-reader-text{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);word-break:normal;word-wrap:normal !important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.vp-screen-reader-text:focus{display:block;top:5px;right:5px;width:auto;height:auto;padding:15px 23px 14px;clip:auto !important;font-size:14px;font-size:.875rem;font-weight:700;line-height:normal;color:var(--vp-color-brand);text-decoration:none;background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,0.6);box-shadow:0 0 2px 2px rgba(0,0,0,0.6);-webkit-clip-path:none;clip-path:none;z-index:100000}[data-vp-layout]:not([data-vp-layout="slider"]) .vp-portfolio__item-wrap{padding:0 !important;margin:0 !important}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;padding:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-left:0 !important}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a,.vp-portfolio__item .vp-portfolio__thumbnail-img img{display:block;width:100%;height:auto}.vp-portfolio__item-img,.vp-portfolio__thumbnail-img{position:relative}.vp-portfolio__layout-elements{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + var(--vp-elements__gap));margin-top:calc(-1 * var(--vp-elements__gap));margin-left:calc(-1 * var(--vp-elements__gap))}.vp-portfolio__layout-elements>*{margin-top:var(--vp-elements__gap);margin-left:var(--vp-elements__gap)}.vp-portfolio__layout-elements-align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-portfolio__layout-elements-align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__layout-elements-align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-portfolio__layout-elements-align-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vp-portfolio figure.vp-portfolio__item{margin:0}[class^="wp-block-"]:not(.wp-block-gallery) figcaption.vp-portfolio__item-meta,.vp-portfolio figcaption.vp-portfolio__item-meta{margin-bottom:0;font-style:inherit}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio__preloader{position:absolute;left:50%;width:20px;height:20px;margin-top:45px;margin-left:-10px}.vp-portfolio__preloader svg{display:block;width:100%;height:100%}.vp-portfolio__preloader::after{content:"";position:absolute;display:block;top:-2px;left:-2px;width:24px;height:24px;text-indent:-9999em;border:1px solid rgba(0,0,0,0.2);border-left:1px solid #000;border-radius:50%;-webkit-animation:vp-preloader-spinner .3s infinite linear;animation:vp-preloader-spinner .3s infinite linear}@-webkit-keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__layout-elements{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap{visibility:hidden;opacity:0}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap .vp-portfolio__preloader{-webkit-animation:none;animation:none}.vp-single-filter.vp-single-filter__ready .vp-portfolio__filter-wrap{visibility:visible;opacity:1}.vp-single-sort.vp-single-sort__ready .vp-portfolio__sort-wrap{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;right:0;bottom:0;left:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__layout-elements{opacity:.5}.vp-portfolio__item-popup{display:none}img.vp-lazyload{opacity:1;-webkit-transition:var(--vp-transition-duration) opacity;-o-transition:var(--vp-transition-duration) opacity;transition:var(--vp-transition-duration) opacity;will-change:opacity}.vp-portfolio__item-img::before,.vp-portfolio__thumbnail-img::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-images-lazy__background);background-color:var(--vp-images-lazy__background-color);background-position:0% 50%;background-size:500% 100%;-webkit-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility}.vp-portfolio__item-img-lazyloading::before,.vp-portfolio__thumbnail-img-lazyloading::before{visibility:visible;opacity:1;-webkit-transition:none;-o-transition:none;transition:none;-webkit-animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite;animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite}.vp-portfolio__item-img-lazyloading img.vp-lazyload,.vp-portfolio__thumbnail-img-lazyloading img.vp-lazyload{opacity:0}@-webkit-keyframes vp-lazyload-placeholder{0%,80%{background-position:100% 50%}100%{background-position:0% 50%}}@keyframes vp-lazyload-placeholder{0%,80%{background-position:100% 50%}100%{background-position:0% 50%}}.vp-spinner{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(--vp-spinner__size);height:var(--vp-spinner__size);text-indent:-9999em;border:var(--vp-spinner__border-size) solid transparent;border-left:var(--vp-spinner__border-size) solid var(--vp-spinner__color);border-radius:50%;-webkit-animation:vp-spinner var(--vp-spinner__speed) infinite linear;animation:vp-spinner var(--vp-spinner__speed) infinite linear}.vp-spinner::after{content:"";position:absolute;display:block;top:calc(-1 * var(--vp-spinner__border-size));right:calc(-1 * var(--vp-spinner__border-size));bottom:calc(-1 * var(--vp-spinner__border-size));left:calc(-1 * var(--vp-spinner__border-size));border:var(--vp-spinner__border-size) solid var(--vp-spinner--background__color);border-radius:50%;opacity:var(--vp-spinner--background__opacity)}@-webkit-keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
1
+ :root{--vp-color-brand: #2540cc;--vp-color-gray: #6c7781;--vp-color-gray-darken: #4b4b4b;--vp-color-gray-light: #e8e8e8;--vp-color-gray-lighten: #f7f7f7;--vp-border-radius: 5px;--vp-items__gap: 0;--vp-transition-duration: .3s;--vp-transition-easing: ease-in-out;--vp-interactive__transition-duration: .2s;--vp-interactive__transition-easing: ease-in-out}.vp-portfolio__items{--vp-items__gap-vertical: var(--vp-items__gap)}.vp-portfolio{--vp-wrap__min-height: 114px;--vp-elements__gap: 20px;--vp-images__object-fit: cover;--vp-images__object-position: 50% 50%;--vp-images-lazy__background: linear-gradient(-70deg, rgba(140, 140, 140, 0) 42%, rgba(140, 140, 140, .05) 50%, rgba(140, 140, 140, 0) 58%);--vp-images-lazy__background-color: rgba(140, 140, 140, .05);--vp-images-lazy__animation-duration: 3s}.vp-spinner{--vp-spinner__color: currentColor;--vp-spinner__size: 20px;--vp-spinner__border-size: 2px;--vp-spinner__speed: .3s;--vp-spinner--background__color: var(--vp-spinner__color);--vp-spinner--background__opacity: .3}.vp-portfolio{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:var(--vp-wrap__min-height)}.vp-portfolio *,.vp-portfolio *::before,.vp-portfolio *::after{-webkit-box-sizing:inherit;box-sizing:inherit}.vp-portfolio__items{-webkit-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);-o-transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);transition:var(--vp-transition-duration) height var(--vp-transition-easing),var(--vp-transition-duration) transform var(--vp-transition-easing);will-change:height, transform}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__sort-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__thumbnails-wrap,.vp-portfolio__layout-elements{margin-bottom:var(--vp-elements__gap);visibility:hidden;opacity:0;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio>:last-child{margin-bottom:0}.vp-portfolio__item-wrap{position:relative;float:left;width:33.333%}.vp-svg-icon{display:inline-block;width:1em;height:1em;overflow:visible;font-size:inherit;vertical-align:-.125em}.vp-screen-reader-text{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);word-break:normal;word-wrap:normal !important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.vp-screen-reader-text:focus{display:block;top:5px;right:5px;width:auto;height:auto;padding:15px 23px 14px;clip:auto !important;font-size:14px;font-size:.875rem;font-weight:700;line-height:normal;color:var(--vp-color-brand);text-decoration:none;background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,0.6);box-shadow:0 0 2px 2px rgba(0,0,0,0.6);-webkit-clip-path:none;clip-path:none;z-index:100000}[data-vp-layout]:not([data-vp-layout="slider"]) .vp-portfolio__item-wrap{padding:0 !important;margin:0 !important}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;padding:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-left:0 !important}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a,.vp-portfolio__item .vp-portfolio__thumbnail-img img{display:block;width:100%;height:auto}.vp-portfolio__item-img,.vp-portfolio__thumbnail-img{position:relative}.vp-portfolio__layout-elements{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + var(--vp-elements__gap));margin-top:calc(-1 * var(--vp-elements__gap));margin-left:calc(-1 * var(--vp-elements__gap))}.vp-portfolio__layout-elements>*{margin-top:var(--vp-elements__gap);margin-left:var(--vp-elements__gap)}.vp-portfolio__layout-elements-align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-portfolio__layout-elements-align-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__layout-elements-align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-portfolio__layout-elements-align-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vp-portfolio figure.vp-portfolio__item{margin:0}[class^="wp-block-"]:not(.wp-block-gallery) figcaption.vp-portfolio__item-meta,.vp-portfolio figcaption.vp-portfolio__item-meta{margin-bottom:0;font-style:inherit}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) opacity,var(--vp-transition-duration) visibility;will-change:opacity, visibility}.vp-portfolio__preloader{position:absolute;left:50%;width:20px;height:20px;margin-top:45px;margin-left:-10px}.vp-portfolio__preloader svg{display:block;width:100%;height:100%}.vp-portfolio__preloader::after{content:"";position:absolute;display:block;top:-2px;left:-2px;width:24px;height:24px;text-indent:-9999em;border:1px solid rgba(0,0,0,0.2);border-left:1px solid #000;border-radius:50%;-webkit-animation:vp-preloader-spinner .3s infinite linear;animation:vp-preloader-spinner .3s infinite linear}@-webkit-keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes vp-preloader-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__thumbnails-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__layout-elements{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap{visibility:hidden;opacity:0}.vp-portfolio.vp-portfolio__ready .vp-portfolio__preloader-wrap .vp-portfolio__preloader{-webkit-animation:none;animation:none}.vp-single-filter.vp-single-filter__ready .vp-portfolio__filter-wrap{visibility:visible;opacity:1}.vp-single-sort.vp-single-sort__ready .vp-portfolio__sort-wrap{visibility:visible;opacity:1}.vp-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;right:0;bottom:0;left:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__layout-elements{opacity:.5}.vp-portfolio__item-popup{display:none}img.vp-lazyload{opacity:1;-webkit-transition:var(--vp-transition-duration) opacity;-o-transition:var(--vp-transition-duration) opacity;transition:var(--vp-transition-duration) opacity;will-change:opacity}.vp-portfolio__item-img::before,.vp-portfolio__thumbnail-img::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-images-lazy__background);background-color:var(--vp-images-lazy__background-color);background-position:0% 50%;background-size:500% 100%;-webkit-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;-o-transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility;transition:var(--vp-transition-duration) var(--vp-transition-duration) opacity,var(--vp-transition-duration) var(--vp-transition-duration) visibility}.vp-portfolio__item-img-lazyloading::before,.vp-portfolio__thumbnail-img-lazyloading::before{visibility:visible;opacity:1;-webkit-transition:none;-o-transition:none;transition:none;-webkit-animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite;animation:vp-lazyload-placeholder var(--vp-images-lazy__animation-duration) linear infinite}.vp-portfolio__item-img-lazyloading img.vp-lazyload,.vp-portfolio__thumbnail-img-lazyloading img.vp-lazyload{opacity:0}@-webkit-keyframes vp-lazyload-placeholder{0%,80%{background-position:100% 50%}100%{background-position:0% 50%}}@keyframes vp-lazyload-placeholder{0%,80%{background-position:100% 50%}100%{background-position:0% 50%}}.vp-spinner{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(--vp-spinner__size);height:var(--vp-spinner__size);text-indent:-9999em;border:var(--vp-spinner__border-size) solid transparent;border-left:var(--vp-spinner__border-size) solid var(--vp-spinner__color);border-radius:50%;-webkit-animation:vp-spinner var(--vp-spinner__speed) infinite linear;animation:vp-spinner var(--vp-spinner__speed) infinite linear}.vp-spinner::after{content:"";position:absolute;display:block;top:calc(-1 * var(--vp-spinner__border-size));right:calc(-1 * var(--vp-spinner__border-size));bottom:calc(-1 * var(--vp-spinner__border-size));left:calc(-1 * var(--vp-spinner__border-size));border:var(--vp-spinner__border-size) solid var(--vp-spinner--background__color);border-radius:50%;opacity:var(--vp-spinner--background__opacity)}@-webkit-keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
assets/js/plugin-fj-gallery.js CHANGED
@@ -26,6 +26,7 @@ $( document ).on( 'extendClass.vpf', ( event, VP ) => {
26
  },
27
  rowHeight: parseFloat( self.options.justifiedRowHeight ) || 200,
28
  rowHeightTolerance: parseFloat( self.options.justifiedRowHeightTolerance ) || 0,
 
29
  itemSelector: '.vp-portfolio__item-wrap',
30
  imageSelector: '.vp-portfolio__item-img img',
31
  };
26
  },
27
  rowHeight: parseFloat( self.options.justifiedRowHeight ) || 200,
28
  rowHeightTolerance: parseFloat( self.options.justifiedRowHeightTolerance ) || 0,
29
+ calculateItemsHeight: true,
30
  itemSelector: '.vp-portfolio__item-wrap',
31
  imageSelector: '.vp-portfolio__item-img img',
32
  };
assets/js/plugin-fj-gallery.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=243)}({243:function(e,t,o){e.exports=o(244)},244:function(e,t){var o=window.jQuery;o(document).on("extendClass.vpf",(function(e,t){"vpf"===e.namespace&&(t.prototype.initFjGallery=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=this;if(o.$items_wrap.fjGallery&&"justified"===o.options.layout){var r=!1!==e?e:{gutter:{horizontal:parseFloat(o.options.itemsGap)||0,vertical:""!==o.options.itemsGapVertical?parseFloat(o.options.itemsGapVertical)||0:parseFloat(o.options.itemsGap)||0},rowHeight:parseFloat(o.options.justifiedRowHeight)||200,rowHeightTolerance:parseFloat(o.options.justifiedRowHeightTolerance)||0,itemSelector:".vp-portfolio__item-wrap",imageSelector:".vp-portfolio__item-img img"};o.emitEvent("beforeInitFjGallery",[r,t]),o.$items_wrap.fjGallery(r,t),o.emitEvent("initFjGallery",[r,t])}},t.prototype.destroyFjGallery=function(){this.$items_wrap.data("fjGallery")&&(this.$items_wrap.fjGallery("destroy"),this.emitEvent("destroyFjGallery"))})})),o(document).on("addItems.vpf",(function(e,t,o,r){"vpf"===e.namespace&&(t.$items_wrap.data("fjGallery")&&(r?(t.destroyFjGallery(),t.$items_wrap.find(".vp-portfolio__item-wrap").remove(),t.$items_wrap.prepend(o),t.initFjGallery()):(t.$items_wrap.append(o),t.initFjGallery("appendImages",o))))})),o(document).on("init.vpf",(function(e,t){"vpf"===e.namespace&&t.initFjGallery()})),o(document).on("imagesLoaded.vpf",(function(e,t){"vpf"===e.namespace&&t.initFjGallery()})),o(document).on("destroy.vpf",(function(e,t){"vpf"===e.namespace&&t.destroyFjGallery()}))}});
1
+ !function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=243)}({243:function(e,t,o){e.exports=o(244)},244:function(e,t){var o=window.jQuery;o(document).on("extendClass.vpf",(function(e,t){"vpf"===e.namespace&&(t.prototype.initFjGallery=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=this;if(o.$items_wrap.fjGallery&&"justified"===o.options.layout){var r=!1!==e?e:{gutter:{horizontal:parseFloat(o.options.itemsGap)||0,vertical:""!==o.options.itemsGapVertical?parseFloat(o.options.itemsGapVertical)||0:parseFloat(o.options.itemsGap)||0},rowHeight:parseFloat(o.options.justifiedRowHeight)||200,rowHeightTolerance:parseFloat(o.options.justifiedRowHeightTolerance)||0,calculateItemsHeight:!0,itemSelector:".vp-portfolio__item-wrap",imageSelector:".vp-portfolio__item-img img"};o.emitEvent("beforeInitFjGallery",[r,t]),o.$items_wrap.fjGallery(r,t),o.emitEvent("initFjGallery",[r,t])}},t.prototype.destroyFjGallery=function(){this.$items_wrap.data("fjGallery")&&(this.$items_wrap.fjGallery("destroy"),this.emitEvent("destroyFjGallery"))})})),o(document).on("addItems.vpf",(function(e,t,o,r){"vpf"===e.namespace&&(t.$items_wrap.data("fjGallery")&&(r?(t.destroyFjGallery(),t.$items_wrap.find(".vp-portfolio__item-wrap").remove(),t.$items_wrap.prepend(o),t.initFjGallery()):(t.$items_wrap.append(o),t.initFjGallery("appendImages",o))))})),o(document).on("init.vpf",(function(e,t){"vpf"===e.namespace&&t.initFjGallery()})),o(document).on("imagesLoaded.vpf",(function(e,t){"vpf"===e.namespace&&t.initFjGallery()})),o(document).on("destroy.vpf",(function(e,t){"vpf"===e.namespace&&t.destroyFjGallery()}))}});
assets/js/popup-gallery.js CHANGED
@@ -104,7 +104,9 @@ const VPPopupAPI = {
104
  let video;
105
  let videoData;
106
 
107
- $gallery.find( '.vp-portfolio__item-wrap' ).each( function() {
 
 
108
  $meta = $( this ).find( '.vp-portfolio__item-popup' );
109
 
110
  if ( $meta && $meta.length ) {
@@ -205,7 +207,9 @@ $( document ).on( 'extendClass.vpf', ( event, VP ) => {
205
  let index = -1;
206
  const clicked = $this.closest( '.vp-portfolio__item' )[ 0 ];
207
 
208
- self.$item.find( '.vp-portfolio__item-wrap .vp-portfolio__item-popup' ).each( function( idx ) {
 
 
209
  if ( -1 === index && $( this ).closest( '.vp-portfolio__item-wrap' ).find( '.vp-portfolio__item' )[ 0 ] === clicked ) {
210
  index = idx;
211
  }
104
  let video;
105
  let videoData;
106
 
107
+ // Find all gallery items
108
+ // Prevent Swiper slider duplicates.
109
+ $gallery.find( '.vp-portfolio__item-wrap:not(.swiper-slide-duplicate):not(.swiper-slide-duplicate-active)' ).each( function() {
110
  $meta = $( this ).find( '.vp-portfolio__item-popup' );
111
 
112
  if ( $meta && $meta.length ) {
207
  let index = -1;
208
  const clicked = $this.closest( '.vp-portfolio__item' )[ 0 ];
209
 
210
+ // Find all gallery items
211
+ // Prevent Swiper slider duplicates.
212
+ self.$item.find( '.vp-portfolio__item-wrap:not(.swiper-slide-duplicate):not(.swiper-slide-duplicate-active) .vp-portfolio__item-popup' ).each( function( idx ) {
213
  if ( -1 === index && $( this ).closest( '.vp-portfolio__item-wrap' ).find( '.vp-portfolio__item' )[ 0 ] === clicked ) {
214
  index = idx;
215
  }
assets/js/popup-gallery.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={};function i(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.d=function(e,t,o){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(o,r,function(t){return e[t]}.bind(null,r));return o},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=251)}({251:function(e,t,i){e.exports=i(252)},252:function(e,t){var i=window.jQuery,o=window.VPData.settingsPopupGallery,r={vendor:!1,vendors:[{vendor:"youtube",embedUrl:"https://www.youtube.com/embed/{{video_id}}",pattern:/(https?:\/\/)?(www.)?(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(?:embed\/|v\/|watch\?v=|watch\?list=(.*)&v=|watch\?(.*[^&]&)v=)?((\w|-){11})(&list=(\w+)&?)?/,patternIndex:6},{vendor:"vimeo",embedUrl:"https://player.vimeo.com/video/{{video_id}}",pattern:/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/,patternIndex:3}],init:function(){},open:function(){},close:function(){},parseVideo:function(e){var t=!1;return r.vendors.forEach((function(i){if(!t){var o=e.match(i.pattern),r=!(!o||!o[i.patternIndex])&&o[i.patternIndex];if(r)if(i.embedCallback)t=i.embedCallback(e,o);else{var n=i.embedUrl;n=(n=(n=n.replace(/{{video_id}}/g,r)).replace(/{{video_url}}/g,e)).replace(/{{video_url_encoded}}/g,encodeURIComponent(e));var p=i.width||1920,a=i.height||1080;t={vendor:i.vendor,id:r,embed:'<iframe width="'.concat(p,'" height="').concat(a,'" src="').concat(n,'" scrolling="no" frameborder="0" allowTransparency="true" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>'),embedUrl:n,url:e,width:p,height:a}}}})),t||{vendor:"unknown",id:e,url:e,embedUrl:e,embed:'<iframe width="1920" height="1080" src="'.concat(e,'" scrolling="no" frameborder="0" allowTransparency="true" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>')}},parseGallery:function(e){var t,o,n,p,a,l=[];return e.find(".vp-portfolio__item-wrap").each((function(){if((t=i(this).find(".vp-portfolio__item-popup"))&&t.length){if(o=(t.attr("data-vp-popup-img-size")||"1920x1080").split("x"),p=t.attr("data-vp-popup-video"),a=!1,p&&(a=r.parseVideo(p)),a)n={type:"embed",el:this,src:a.embedUrl,embed:a.embed,width:a.width||1920,height:a.height||1080};else{n={type:"image",el:this,src:t.attr("data-vp-popup-img"),srcset:t.attr("data-vp-popup-img-srcset"),width:parseInt(o[0],10),height:parseInt(o[1],10)};var e=t.attr("data-vp-popup-sm-img")||n.src;if(e){var c=(t.attr("data-vp-popup-sm-img-size")||t.attr("data-vp-popup-img-size")||"1920x1080").split("x");n.srcSmall=e,n.srcSmallWidth=parseInt(c[0],10),n.srcSmallHeight=parseInt(c[1],10)}var d=t.attr("data-vp-popup-md-img")||n.src;if(d){var s=(t.attr("data-vp-popup-md-img-size")||t.attr("data-vp-popup-img-size")||"1920x1080").split("x");n.srcMedium=d,n.srcMediumWidth=parseInt(s[0],10),n.srcMediumHeight=parseInt(s[1],10)}var u=t.children(".vp-portfolio__item-popup-title").get(0),f=t.children(".vp-portfolio__item-popup-description").get(0);(u||f)&&(n.caption=(u?u.outerHTML:"")+(f?f.outerHTML:""))}l.push(n)}})),l}};function n(e){return/(.png|.jpg|.jpeg|.gif|.tiff|.bmp|.webp)$/.test(e.href.toLowerCase().split("?")[0].split("#")[0])}function p(e){var t=i(e),o=e.childNodes[0],r=t.next("figcaption");return"NOSCRIPT"===o.nodeName&&e.childNodes[1]&&(o=e.childNodes[1]),!r.length&&t.parent(".gallery-icon").length&&(r=t.parent(".gallery-icon").next("figcaption")),(r=r.html())&&(r='<div class="vp-portfolio__item-popup-description">'.concat(r,"</div>")),{type:"image",el:o,linkEl:e,src:e.href,caption:r}}window.VPPopupAPI=r,i(document).on("extendClass.vpf",(function(e,t){"vpf"===e.namespace&&(t.prototype.initPopupGallery=function(){var e=this;e.options.itemsClickAction&&"popup_gallery"===e.options.itemsClickAction&&(e.isPreview()||e.$item.on("click.vpf-uid-".concat(e.uid),".vp-portfolio__item a.vp-portfolio__item-meta, .vp-portfolio__item .vp-portfolio__item-img > a, .vp-portfolio__item .vp-portfolio__item-meta-title > a",(function(t){var o=i(this);if(o.closest(".vp-portfolio__item-wrap").find(".vp-portfolio__item-popup").length){t.preventDefault();var n=-1,p=o.closest(".vp-portfolio__item")[0];e.$item.find(".vp-portfolio__item-wrap .vp-portfolio__item-popup").each((function(e){-1===n&&i(this).closest(".vp-portfolio__item-wrap").find(".vp-portfolio__item")[0]===p&&(n=e)})),0>n&&(n=0);var a=r.parseGallery(e.$item);r.open(a,n,e)}})))},t.prototype.destroyPopupGallery=function(){this.options.itemsClickAction&&"popup_gallery"===this.options.itemsClickAction&&(this.$item.off("click.vpf-uid-".concat(this.uid)),this.emitEvent("destroyPopupGallery"))})})),i(document).on("init.vpf",(function(e,t){"vpf"===e.namespace&&t.initPopupGallery()})),i(document).on("destroy.vpf",(function(e,t){"vpf"===e.namespace&&t.destroyPopupGallery()})),o.enable_on_wordpress_images&&i(document).on("click","\n .wp-block-image > a,\n .wp-block-image > figure > a,\n .wp-block-gallery .blocks-gallery-item > figure > a,\n .wp-block-media-text > figure > a,\n .gallery .gallery-icon > a,\n figure.wp-caption > a,\n figure.tiled-gallery__item > a,\n p > a\n ",(function(e){if(this.childNodes.length){var t=this.childNodes[0];if("NOSCRIPT"===t.nodeName&&this.childNodes[1]&&(t=this.childNodes[1]),("IMG"===t.nodeName||"PICTURE"===t.nodeName)&&n(this)){e.preventDefault();var o=i(this),a=[],l=p(this),c=o.closest(".wp-block-gallery, .gallery, .tiled-gallery__gallery"),d=0;if(c.length){var s=c.find(".blocks-gallery-item > figure > a, .gallery-icon > a, figure.tiled-gallery__item > a"),u=0;s.each((function(){n(this)&&(this===l.linkEl&&(d=u),a.push(p(this)),u+=1)}))}else a.push(l);r.open(a,d)}}}))}});
1
+ !function(e){var t={};function i(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.d=function(e,t,o){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(o,r,function(t){return e[t]}.bind(null,r));return o},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=251)}({251:function(e,t,i){e.exports=i(252)},252:function(e,t){var i=window.jQuery,o=window.VPData.settingsPopupGallery,r={vendor:!1,vendors:[{vendor:"youtube",embedUrl:"https://www.youtube.com/embed/{{video_id}}",pattern:/(https?:\/\/)?(www.)?(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(?:embed\/|v\/|watch\?v=|watch\?list=(.*)&v=|watch\?(.*[^&]&)v=)?((\w|-){11})(&list=(\w+)&?)?/,patternIndex:6},{vendor:"vimeo",embedUrl:"https://player.vimeo.com/video/{{video_id}}",pattern:/https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/,patternIndex:3}],init:function(){},open:function(){},close:function(){},parseVideo:function(e){var t=!1;return r.vendors.forEach((function(i){if(!t){var o=e.match(i.pattern),r=!(!o||!o[i.patternIndex])&&o[i.patternIndex];if(r)if(i.embedCallback)t=i.embedCallback(e,o);else{var p=i.embedUrl;p=(p=(p=p.replace(/{{video_id}}/g,r)).replace(/{{video_url}}/g,e)).replace(/{{video_url_encoded}}/g,encodeURIComponent(e));var n=i.width||1920,a=i.height||1080;t={vendor:i.vendor,id:r,embed:'<iframe width="'.concat(n,'" height="').concat(a,'" src="').concat(p,'" scrolling="no" frameborder="0" allowTransparency="true" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>'),embedUrl:p,url:e,width:n,height:a}}}})),t||{vendor:"unknown",id:e,url:e,embedUrl:e,embed:'<iframe width="1920" height="1080" src="'.concat(e,'" scrolling="no" frameborder="0" allowTransparency="true" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>')}},parseGallery:function(e){var t,o,p,n,a,l=[];return e.find(".vp-portfolio__item-wrap:not(.swiper-slide-duplicate):not(.swiper-slide-duplicate-active)").each((function(){if((t=i(this).find(".vp-portfolio__item-popup"))&&t.length){if(o=(t.attr("data-vp-popup-img-size")||"1920x1080").split("x"),n=t.attr("data-vp-popup-video"),a=!1,n&&(a=r.parseVideo(n)),a)p={type:"embed",el:this,src:a.embedUrl,embed:a.embed,width:a.width||1920,height:a.height||1080};else{p={type:"image",el:this,src:t.attr("data-vp-popup-img"),srcset:t.attr("data-vp-popup-img-srcset"),width:parseInt(o[0],10),height:parseInt(o[1],10)};var e=t.attr("data-vp-popup-sm-img")||p.src;if(e){var c=(t.attr("data-vp-popup-sm-img-size")||t.attr("data-vp-popup-img-size")||"1920x1080").split("x");p.srcSmall=e,p.srcSmallWidth=parseInt(c[0],10),p.srcSmallHeight=parseInt(c[1],10)}var d=t.attr("data-vp-popup-md-img")||p.src;if(d){var s=(t.attr("data-vp-popup-md-img-size")||t.attr("data-vp-popup-img-size")||"1920x1080").split("x");p.srcMedium=d,p.srcMediumWidth=parseInt(s[0],10),p.srcMediumHeight=parseInt(s[1],10)}var u=t.children(".vp-portfolio__item-popup-title").get(0),f=t.children(".vp-portfolio__item-popup-description").get(0);(u||f)&&(p.caption=(u?u.outerHTML:"")+(f?f.outerHTML:""))}l.push(p)}})),l}};function p(e){return/(.png|.jpg|.jpeg|.gif|.tiff|.bmp|.webp)$/.test(e.href.toLowerCase().split("?")[0].split("#")[0])}function n(e){var t=i(e),o=e.childNodes[0],r=t.next("figcaption");return"NOSCRIPT"===o.nodeName&&e.childNodes[1]&&(o=e.childNodes[1]),!r.length&&t.parent(".gallery-icon").length&&(r=t.parent(".gallery-icon").next("figcaption")),(r=r.html())&&(r='<div class="vp-portfolio__item-popup-description">'.concat(r,"</div>")),{type:"image",el:o,linkEl:e,src:e.href,caption:r}}window.VPPopupAPI=r,i(document).on("extendClass.vpf",(function(e,t){"vpf"===e.namespace&&(t.prototype.initPopupGallery=function(){var e=this;e.options.itemsClickAction&&"popup_gallery"===e.options.itemsClickAction&&(e.isPreview()||e.$item.on("click.vpf-uid-".concat(e.uid),".vp-portfolio__item a.vp-portfolio__item-meta, .vp-portfolio__item .vp-portfolio__item-img > a, .vp-portfolio__item .vp-portfolio__item-meta-title > a",(function(t){var o=i(this);if(o.closest(".vp-portfolio__item-wrap").find(".vp-portfolio__item-popup").length){t.preventDefault();var p=-1,n=o.closest(".vp-portfolio__item")[0];e.$item.find(".vp-portfolio__item-wrap:not(.swiper-slide-duplicate):not(.swiper-slide-duplicate-active) .vp-portfolio__item-popup").each((function(e){-1===p&&i(this).closest(".vp-portfolio__item-wrap").find(".vp-portfolio__item")[0]===n&&(p=e)})),0>p&&(p=0);var a=r.parseGallery(e.$item);r.open(a,p,e)}})))},t.prototype.destroyPopupGallery=function(){this.options.itemsClickAction&&"popup_gallery"===this.options.itemsClickAction&&(this.$item.off("click.vpf-uid-".concat(this.uid)),this.emitEvent("destroyPopupGallery"))})})),i(document).on("init.vpf",(function(e,t){"vpf"===e.namespace&&t.initPopupGallery()})),i(document).on("destroy.vpf",(function(e,t){"vpf"===e.namespace&&t.destroyPopupGallery()})),o.enable_on_wordpress_images&&i(document).on("click","\n .wp-block-image > a,\n .wp-block-image > figure > a,\n .wp-block-gallery .blocks-gallery-item > figure > a,\n .wp-block-media-text > figure > a,\n .gallery .gallery-icon > a,\n figure.wp-caption > a,\n figure.tiled-gallery__item > a,\n p > a\n ",(function(e){if(this.childNodes.length){var t=this.childNodes[0];if("NOSCRIPT"===t.nodeName&&this.childNodes[1]&&(t=this.childNodes[1]),("IMG"===t.nodeName||"PICTURE"===t.nodeName)&&p(this)){e.preventDefault();var o=i(this),a=[],l=n(this),c=o.closest(".wp-block-gallery, .gallery, .tiled-gallery__gallery"),d=0;if(c.length){var s=c.find(".blocks-gallery-item > figure > a, .gallery-icon > a, figure.tiled-gallery__item > a"),u=0;s.each((function(){p(this)&&(this===l.linkEl&&(d=u),a.push(n(this)),u+=1)}))}else a.push(l);r.open(a,d)}}}))}});
assets/js/preview.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.8.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.8.2
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
assets/vendor/flickr-justified-gallery/dist/fjGallery.css CHANGED
@@ -1,6 +1,7 @@
1
  .fj-gallery {
2
  position: relative;
3
  overflow: hidden;
 
4
  transition: .2s height ease-in-out;
5
  }
6
  .fj-gallery::after {
@@ -12,10 +13,11 @@
12
  float: left;
13
  top: 0;
14
  left: 0;
15
- -webkit-transition: .2s -webkit-transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out;
16
- transition: .2s transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out;
17
  }
18
  .fj-gallery .fj-gallery-item > img {
 
19
  width: 100%;
20
  height: auto;
21
  }
1
  .fj-gallery {
2
  position: relative;
3
  overflow: hidden;
4
+ -webkit-transition: .2s height ease-in-out;
5
  transition: .2s height ease-in-out;
6
  }
7
  .fj-gallery::after {
13
  float: left;
14
  top: 0;
15
  left: 0;
16
+ -webkit-transition: .2s -webkit-transform ease-in-out;
17
+ transition: .2s transform ease-in-out;
18
  }
19
  .fj-gallery .fj-gallery-item > img {
20
+ display: block;
21
  width: 100%;
22
  height: auto;
23
  }
assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js CHANGED
@@ -1,9 +1,9 @@
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
- * Version : 1.0.5
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
- */!function(o){var n={};function i(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}i.m=o,i.c=n,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(o,n,function(t){return e[t]}.bind(null,n));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,o){t.exports=o(1)},function(t,e,o){"use strict";o.r(e);var n=o(2),i=o.n(n),r=o(3),a=o(5);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s,u,l,f,h=r.window.fjGallery;r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=h,this},void 0!==r.jQuery&&(s=r.window.fjGallery.constructor.prototype.init,r.window.fjGallery.constructor.prototype.init=function(){this.jQcontainer=Object(r.jQuery)(this.$container),this.jQcontainer.data("fjGallery",this),s&&s.call(this)},u=r.window.fjGallery.constructor.prototype.destroy,r.window.fjGallery.constructor.prototype.destroy=function(){this.jQcontainer&&this.jQcontainer.removeData("fjGallery"),u&&u.call(this)},(l=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==c(e)?e:this}).constructor=a.default.constructor,f=r.jQuery.fn.fjGallery,r.jQuery.fn.fjGallery=l,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=f,this}),i()(function(){Object(a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e){t.exports=function(t){"complete"===document.readyState||"interactive"===document.readyState?t.call():document.attachEvent?document.attachEvent("onreadystatechange",function(){"interactive"===document.readyState&&t.call()}):document.addEventListener&&document.addEventListener("DOMContentLoaded",t)}},function(o,t,e){(function(t){var e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};o.exports=e}).call(this,e(4))},function(t,e){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"===("undefined"==typeof window?"undefined":o(window))&&(n=window)}t.exports=n},function(t,e,o){"use strict";o.r(e);var a=o(6),c=o(7),n=o(8),s=o.n(n),i=o(2),r=o.n(i),u=o(10),l=o.n(u),f=o(3);function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}var p=[];function g(){f.window.requestAnimationFrame(function(){p.forEach(function(t){t.resize()})})}f.window.addEventListener("resize",g),f.window.addEventListener("orientationchange",g),f.window.addEventListener("load",g),r()(function(){g()});function y(t,e){("object"===("undefined"==typeof HTMLElement?"undefined":h(HTMLElement))?t instanceof HTMLElement:t&&"object"===h(t)&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var o,n=e,i=Array.prototype.slice.call(arguments,2),r=t.length,a=0;a<r;a++)if("object"===h(n)||void 0===n?t[a].fjGallery||(t[a].fjGallery=new m(t[a],n)):t[a].fjGallery&&(o=t[a].fjGallery[n].apply(t[a].fjGallery,i)),void 0!==o)return o;return t}var w=0,m=function(){function r(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var o=this;o.instanceID=w++,o.$container=t,o.images=[],o.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,resizeThrottle:200,isRtl:"rtl"===o.css(o.$container,"direction"),onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var n=o.$container.dataset||{},i={};Object.keys(n).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==o.defaults[e]&&(i[e]=n[t])}),o.options=s()({},o.defaults,i,e),o.pureOptions=s()({},o.options),o.resize=Object(a.throttle)(o.options.resizeThrottle,o.resize),o.justify=Object(c.default)(o.justify.bind(o)),o.init()}var t,e,o;return t=r,(e=[{key:"css",value:function(e,o){return"string"==typeof o?f.window.getComputedStyle(e).getPropertyValue(o):(o.transform&&(o["-webkit-transform"]=o.transform),Object.keys(o).forEach(function(t){e.style[t]=o[t]}),e)}},{key:"addToFjGalleryList",value:function(){p.push(this),g()}},{key:"removeFromFjGalleryList",value:function(){var o=this;p.forEach(function(t,e){t.instanceID===o.instanceID&&p.splice(e,1)})}},{key:"init",value:function(){var t=this;t.appendImages(t.$container.querySelectorAll(t.options.itemSelector)),t.addToFjGalleryList(),t.options.onInit&&t.options.onInit.call(t)}},{key:"appendImages",value:function(t){var h=this;f.window.jQuery&&t instanceof f.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){var f,e;!t||t.fjGalleryImage||!t.querySelector||(f=t.querySelector(h.options.imageSelector))&&(t.fjGalleryImage=h,(e={$item:t,$image:f,width:parseFloat(f.getAttribute("width"))||!1,height:parseFloat(f.getAttribute("height"))||!1,loadSizes:function(){var t,e,o,n,i,r,a=this;function c(){n?e(n):(n={width:t.naturalWidth,height:t.naturalHeight},e(n),clearInterval(o),i&&r())}function s(){c()}function u(){c()}function l(){0<t.naturalWidth&&c()}t=f,i=n=!(e=function(t){a.width===t.width&&a.height===t.height||(a.width=t.width,a.height=t.height,h.resize())}),r=function(){i=!1,t.removeEventListener("load",s),t.removeEventListener("error",u)},l(),n||(i=!0,t.addEventListener("load",s),t.addEventListener("error",u),o=setInterval(l,100))}}).loadSizes(),h.images.push(e))}),h.options.onAppendImages&&h.options.onAppendImages.call(h,[t]),h.justify())}},{key:"justify",value:function(){var e=this,o=[];e.options.onBeforeJustify&&e.options.onBeforeJustify.call(e),e.images.forEach(function(t){t.width&&t.height&&o.push(t.width/t.height)});var n=l()(o,{containerWidth:e.$container.getBoundingClientRect().width,containerPadding:{top:parseFloat(e.css(e.$container,"padding-top"))||0,right:parseFloat(e.css(e.$container,"padding-right"))||0,bottom:parseFloat(e.css(e.$container,"padding-bottom"))||0,left:parseFloat(e.css(e.$container,"padding-left"))||0},boxSpacing:e.options.gutter,targetRowHeight:e.options.rowHeight,targetRowHeightTolerance:e.options.rowHeightTolerance});e.css(e.$container,{height:"".concat(n.containerHeight,"px")});var i=0;e.images.forEach(function(t){t.width&&t.height&&(e.css(t.$item,{position:"absolute",transform:"translateX(".concat((e.options.isRtl?-1:1)*n.boxes[i].left,"px) translateY(").concat(n.boxes[i].top,"px) translateZ(0)"),width:"".concat(n.boxes[i].width,"px"),height:"".concat(n.boxes[i].height,"px")}),i++)}),e.options.onJustify&&e.options.onJustify.call(e)}},{key:"updateOptions",value:function(t){this.options=s()({},this.options,t),this.justify()}},{key:"destroy",value:function(){var e=this;e.removeFromFjGalleryList(),e.options.onDestroy&&e.options.onDestroy.call(e),e.css(e.$container,{height:""}),e.images.forEach(function(t){e.css(t.$item,{position:"",transform:"",width:"",height:""})}),e.images.forEach(function(t){delete t.$item.fjGalleryImage}),delete e.$container.fjGallery}},{key:"resize",value:function(){this.justify()}}])&&d(t.prototype,e),o&&d(t,o),r}();y.constructor=m,e.default=y},function(t,e,o){var n,i,r,a;function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}a=function(t){"use strict";function n(a,c,s,u){var l,f=!1,h=0;function d(){l&&clearTimeout(l)}function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];var n=this,i=Date.now()-h;function r(){h=Date.now(),s.apply(n,e)}f||(u&&!l&&r(),d(),void 0===u&&a<i?r():!0!==c&&(l=setTimeout(u?function(){l=void 0}:r,void 0===u?a-i:a)))}return"boolean"!=typeof c&&(u=s,s=c,c=void 0),t.cancel=function(){d(),f=!0},t}t.debounce=function(t,e,o){return void 0===o?n(t,e,!1):n(t,o,!1!==e)},t.throttle=n,Object.defineProperty(t,"__esModule",{value:!0})},"object"===c(e)&&void 0!==t?a(e):(i=[e],void 0===(r="function"==typeof(n=a)?n.apply(e,i):n)||(t.exports=r))},function(t,e,o){"use strict";o.r(e);e.default=function(n){function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];i=e,r=r||requestAnimationFrame(function(){r=null,n.apply(void 0,i)})}var i,r=null;return t.cancel=function(){r&&(cancelAnimationFrame(r),r=null)},t}},function(t,e,o){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.1
9
  * @author yeikos
@@ -11,16 +11,16 @@
11
 
12
  * Copyright 2014 yeikos - MIT license
13
  * https://raw.github.com/yeikos/js.merge/master/LICENSE
14
- */function o(t,e,o){var n=o[0],i=o.length;!t&&"object"===u(n)||(n={});for(var r=0;r<i;++r){var a,c=o[r];if("object"===u(c))for(var s in c){"__proto__"!==s&&(a=t?l.clone(c[s]):c[s],n[s]=e?function t(e,o){if("object"!==u(e))return o;for(var n in o)"object"===u(e[n])&&"object"===u(o[n])?e[n]=t(e[n],o[n]):e[n]=o[n];return e}(n[s],a):a)}}return n}function u(t){return{}.toString.call(t).slice(8,-1).toLowerCase()}var n,l;n="object"===e(t)&&t&&"object"===e(t.exports)&&t.exports,(l=function(t){return o(!0===t,!1,arguments)}).recursive=function(t){return o(!0===t,!0,arguments)},l.clone=function(t){var e,o,n=t,i=u(t);if("array"===i)for(n=[],o=t.length,e=0;e<o;++e)n[e]=l.clone(t[e]);else if("object"===i)for(e in n={},t)n[e]=l.clone(t[e]);return n},n?t.exports=l:window.merge=l}).call(this,o(9)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,o){"use strict";
15
  /*!
16
  * Copyright 2019 SmugMug, Inc.
17
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
18
  * @license
19
- */var p=o(8),n=o(11);function g(t,e){var o;return!1!==t.fullWidthBreakoutRowCadence&&(e._rows.length+1)%t.fullWidthBreakoutRowCadence==0&&(o=!0),new n({top:e._containerHeight,left:t.containerPadding.left,width:t.containerWidth-t.containerPadding.left-t.containerPadding.right,spacing:t.boxSpacing.horizontal,targetRowHeight:t.targetRowHeight,targetRowHeightTolerance:t.targetRowHeightTolerance,edgeCaseMinRowHeight:.5*t.targetRowHeight,edgeCaseMaxRowHeight:2*t.targetRowHeight,rightToLeft:!1,isBreakoutRow:o,widowLayoutStyle:t.widowLayoutStyle})}function y(t,e,o){return e._rows.push(o),e._layoutItems=e._layoutItems.concat(o.getItems()),e._containerHeight+=o.height+t.boxSpacing.vertical,o.items}t.exports=function(t,e){var o,n,i,r,a,c,s,u={},l={},f={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:!1,showWidows:!0,fullWidthBreakoutRowCadence:!1,widowLayoutStyle:"left"},h={},d={},u=p(f,e=e||{});return h.top=isNaN(parseFloat(u.containerPadding.top))?u.containerPadding:u.containerPadding.top,h.right=isNaN(parseFloat(u.containerPadding.right))?u.containerPadding:u.containerPadding.right,h.bottom=isNaN(parseFloat(u.containerPadding.bottom))?u.containerPadding:u.containerPadding.bottom,h.left=isNaN(parseFloat(u.containerPadding.left))?u.containerPadding:u.containerPadding.left,d.horizontal=isNaN(parseFloat(u.boxSpacing.horizontal))?u.boxSpacing:u.boxSpacing.horizontal,d.vertical=isNaN(parseFloat(u.boxSpacing.vertical))?u.boxSpacing:u.boxSpacing.vertical,u.containerPadding=h,u.boxSpacing=d,l._layoutItems=[],l._awakeItems=[],l._inViewportItems=[],l._leadingOrphans=[],l._trailingOrphans=[],l._containerHeight=u.containerPadding.top,l._rows=[],l._orphans=[],u._widowCount=0,o=u,n=l,i=t.map(function(t){return t.width&&t.height?{aspectRatio:t.width/t.height}:{aspectRatio:t}}),s=[],o.forceAspectRatio&&i.forEach(function(t){t.forcedAspectRatio=!0,t.aspectRatio=o.forceAspectRatio}),i.some(function(t,e){if(isNaN(t.aspectRatio))throw new Error("Item "+e+" has an invalid aspect ratio");if(a=a||g(o,n),r=a.addItem(t),a.isLayoutComplete()){if(s=s.concat(y(o,n,a)),n._rows.length>=o.maxNumRows)return!(a=null);if(a=g(o,n),!r&&(r=a.addItem(t),a.isLayoutComplete())){if(s=s.concat(y(o,n,a)),n._rows.length>=o.maxNumRows)return!(a=null);a=g(o,n)}}}),a&&a.getItems().length&&o.showWidows&&(n._rows.length?(c=n._rows[n._rows.length-1].isBreakoutRow?n._rows[n._rows.length-1].targetRowHeight:n._rows[n._rows.length-1].height,a.forceComplete(!1,c)):a.forceComplete(!1),s=s.concat(y(o,n,a)),o._widowCount=a.getItems().length),n._containerHeight=n._containerHeight-o.boxSpacing.vertical,n._containerHeight=n._containerHeight+o.containerPadding.bottom,{containerHeight:n._containerHeight,widowCount:o._widowCount,boxes:n._layoutItems}}},function(t,e,o){
20
  /*!
21
  * Copyright 2019 SmugMug, Inc.
22
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
23
  * @license
24
  */
25
- var s=o(8);(t.exports=function(t){this.top=t.top,this.left=t.left,this.width=t.width,this.spacing=t.spacing,this.targetRowHeight=t.targetRowHeight,this.targetRowHeightTolerance=t.targetRowHeightTolerance,this.minAspectRatio=this.width/t.targetRowHeight*(1-t.targetRowHeightTolerance),this.maxAspectRatio=this.width/t.targetRowHeight*(1+t.targetRowHeightTolerance),this.edgeCaseMinRowHeight=t.edgeCaseMinRowHeight,this.edgeCaseMaxRowHeight=t.edgeCaseMaxRowHeight,this.widowLayoutStyle=t.widowLayoutStyle,this.isBreakoutRow=t.isBreakoutRow,this.items=[],this.height=0}).prototype={addItem:function(t){var e,o,n,i=this.items.concat(t),r=this.width-(i.length-1)*this.spacing,a=i.reduce(function(t,e){return t+e.aspectRatio},0),c=r/this.targetRowHeight;return this.isBreakoutRow&&0===this.items.length&&1<=t.aspectRatio?(this.items.push(t),this.completeLayout(r/t.aspectRatio,"justify"),!0):a<this.minAspectRatio?(this.items.push(s(t)),!0):!(a>this.maxAspectRatio)||0===this.items.length?(this.items.push(s(t)),this.completeLayout(r/a,"justify"),!0):(e=this.width-(this.items.length-1)*this.spacing,o=this.items.reduce(function(t,e){return t+e.aspectRatio},0),n=e/this.targetRowHeight,Math.abs(a-c)>Math.abs(o-n)?(this.completeLayout(e/o,"justify"),!1):(this.items.push(s(t)),this.completeLayout(r/a,"justify"),!0))},isLayoutComplete:function(){return 0<this.height},completeLayout:function(t,e){var o,n,i,r,a,c=this.left,s=this.width-(this.items.length-1)*this.spacing;(void 0===e||["justify","center","left"].indexOf(e)<0)&&(e="left"),n=Math.max(this.edgeCaseMinRowHeight,Math.min(t,this.edgeCaseMaxRowHeight)),o=t!==n?s/(this.height=n)/(s/t):(this.height=t,1),this.items.forEach(function(t){t.top=this.top,t.width=t.aspectRatio*this.height*o,t.height=this.height,t.left=c,c+=t.width+this.spacing},this),"justify"===e?(c-=this.spacing+this.left,i=(c-this.width)/this.items.length,r=this.items.map(function(t,e){return Math.round((e+1)*i)}),1===this.items.length?this.items[0].width-=Math.round(i):this.items.forEach(function(t,e){0<e?(t.left-=r[e-1],t.width-=r[e]-r[e-1]):t.width-=r[e]})):"center"===e&&(a=(this.width-c)/2,this.items.forEach(function(t){t.left+=a+this.spacing},this))},forceComplete:function(t,e){"number"==typeof e?this.completeLayout(e,this.widowLayoutStyle):this.completeLayout(this.targetRowHeight,this.widowLayoutStyle)},getItems:function(){return this.items}}}]);
26
  //# sourceMappingURL=fjGallery.min.js.map
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
+ * Version : 1.0.7
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
+ */!function(o){var n={};function i(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}i.m=o,i.c=n,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(o,n,function(t){return e[t]}.bind(null,n));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,o){t.exports=o(1)},function(t,e,o){"use strict";o.r(e);var n=o(2),i=o.n(n),r=o(3),a=o(5);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var c,l,u,f,h=r.window.fjGallery;r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=h,this},void 0!==r.jQuery&&(c=r.window.fjGallery.constructor.prototype.init,r.window.fjGallery.constructor.prototype.init=function(){this.jQcontainer=Object(r.jQuery)(this.$container),this.jQcontainer.data("fjGallery",this),c&&c.call(this)},l=r.window.fjGallery.constructor.prototype.destroy,r.window.fjGallery.constructor.prototype.destroy=function(){this.jQcontainer&&this.jQcontainer.removeData("fjGallery"),l&&l.call(this)},(u=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==s(e)?e:this}).constructor=a.default.constructor,f=r.jQuery.fn.fjGallery,r.jQuery.fn.fjGallery=u,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=f,this}),i()(function(){Object(a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e){t.exports=function(t){"complete"===document.readyState||"interactive"===document.readyState?t.call():document.attachEvent?document.attachEvent("onreadystatechange",function(){"interactive"===document.readyState&&t.call()}):document.addEventListener&&document.addEventListener("DOMContentLoaded",t)}},function(o,t,e){(function(t){var e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};o.exports=e}).call(this,e(4))},function(t,e){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"===("undefined"==typeof window?"undefined":o(window))&&(n=window)}t.exports=n},function(t,e,o){"use strict";o.r(e);var a=o(6),s=o(7),n=o(8),c=o.n(n),i=o(2),r=o.n(i),l=o(10),u=o.n(l),f=o(3);function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}var p=[],g=Object(s.default)(function(){p.forEach(function(t){t.resize()})});f.window.addEventListener("resize",g),f.window.addEventListener("orientationchange",g),f.window.addEventListener("load",g),r()(function(){g()});function y(t,e){("object"===("undefined"==typeof HTMLElement?"undefined":h(HTMLElement))?t instanceof HTMLElement:t&&"object"===h(t)&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var o,n=e,i=Array.prototype.slice.call(arguments,2),r=t.length,a=0;a<r;a++)if("object"===h(n)||void 0===n?t[a].fjGallery||(t[a].fjGallery=new w(t[a],n)):t[a].fjGallery&&(o=t[a].fjGallery[n].apply(t[a].fjGallery,i)),void 0!==o)return o;return t}var m=0,w=function(){function r(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var o=this;o.instanceID=m++,o.$container=t,o.images=[],o.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,calculateItemsHeight:!1,resizeDebounce:100,isRtl:"rtl"===o.css(o.$container,"direction"),onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var n=o.$container.dataset||{},i={};Object.keys(n).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==o.defaults[e]&&(i[e]=n[t])}),o.options=c()({},o.defaults,i,e),void 0!==o.options.resizeThrottle&&(console.warning("`resizeThrottle` option is deprecated, use `resizeDebounce` instead"),o.options.resizeDebounce=o.options.resizeThrottle),o.pureOptions=c()({},o.options),o.resize=Object(a.debounce)(o.options.resizeDebounce,o.resize),o.justify=Object(s.default)(o.justify.bind(o)),o.init()}var t,e,o;return t=r,(e=[{key:"css",value:function(e,o){return"string"==typeof o?f.window.getComputedStyle(e).getPropertyValue(o):(o.transform&&(o["-webkit-transform"]=o.transform),Object.keys(o).forEach(function(t){e.style[t]=o[t]}),e)}},{key:"addToFjGalleryList",value:function(){p.push(this),g()}},{key:"removeFromFjGalleryList",value:function(){var o=this;p.forEach(function(t,e){t.instanceID===o.instanceID&&p.splice(e,1)})}},{key:"init",value:function(){var t=this;t.appendImages(t.$container.querySelectorAll(t.options.itemSelector)),t.addToFjGalleryList(),t.options.onInit&&t.options.onInit.call(t)}},{key:"appendImages",value:function(t){var h=this;f.window.jQuery&&t instanceof f.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){var f,e;!t||t.fjGalleryImage||!t.querySelector||(f=t.querySelector(h.options.imageSelector))&&(t.fjGalleryImage=h,(e={$item:t,$image:f,width:parseFloat(f.getAttribute("width"))||!1,height:parseFloat(f.getAttribute("height"))||!1,loadSizes:function(){var t,e,o,n,i,r,a=this;function s(){n?e(n):(n={width:t.naturalWidth,height:t.naturalHeight},e(n),clearInterval(o),i&&r())}function c(){s()}function l(){s()}function u(){0<t.naturalWidth&&s()}t=f,i=n=!(e=function(t){a.width===t.width&&a.height===t.height||(a.width=t.width,a.height=t.height,h.resize())}),r=function(){i=!1,t.removeEventListener("load",c),t.removeEventListener("error",l)},u(),n||(i=!0,t.addEventListener("load",c),t.addEventListener("error",l),o=setInterval(u,100))}}).loadSizes(),h.images.push(e))}),h.options.onAppendImages&&h.options.onAppendImages.call(h,[t]),h.justify())}},{key:"justify",value:function(){var n=this,e=[];n.options.onBeforeJustify&&n.options.onBeforeJustify.call(n),n.images.forEach(function(t){t.width&&t.height&&e.push(t.width/t.height)});var i=u()(e,{containerWidth:n.$container.getBoundingClientRect().width,containerPadding:{top:parseFloat(n.css(n.$container,"padding-top"))||0,right:parseFloat(n.css(n.$container,"padding-right"))||0,bottom:parseFloat(n.css(n.$container,"padding-bottom"))||0,left:parseFloat(n.css(n.$container,"padding-left"))||0},boxSpacing:n.options.gutter,targetRowHeight:n.options.rowHeight,targetRowHeightTolerance:n.options.rowHeightTolerance}),r=0,a=0,s={};n.images.forEach(function(t,e){var o;t.width&&t.height&&(n.options.calculateItemsHeight&&void 0===s[i.boxes[r].top]&&Object.keys(s).length&&(a+=s[Object.keys(s).pop()]-i.boxes[e-1].height),n.css(t.$item,{position:"absolute",transform:"translateX(".concat((n.options.isRtl?-1:1)*i.boxes[r].left,"px) translateY(").concat(i.boxes[r].top+a,"px) translateZ(0)"),width:"".concat(i.boxes[r].width,"px")}),n.options.calculateItemsHeight&&(o=t.$item.getBoundingClientRect(),(void 0===s[i.boxes[r].top]||s[i.boxes[r].top]<o.height)&&(s[i.boxes[r].top]=o.height)),r++)}),n.options.calculateItemsHeight&&Object.keys(s).length&&(a+=s[Object.keys(s).pop()]-i.boxes[i.boxes.length-1].height),n.css(n.$container,{height:"".concat(i.containerHeight+a,"px")}),n.options.onJustify&&n.options.onJustify.call(n)}},{key:"updateOptions",value:function(t){this.options=c()({},this.options,t),this.justify()}},{key:"destroy",value:function(){var e=this;e.removeFromFjGalleryList(),e.options.onDestroy&&e.options.onDestroy.call(e),e.css(e.$container,{height:""}),e.images.forEach(function(t){e.css(t.$item,{position:"",transform:"",width:"",height:""})}),e.images.forEach(function(t){delete t.$item.fjGalleryImage}),delete e.$container.fjGallery}},{key:"resize",value:function(){this.justify()}}])&&d(t.prototype,e),o&&d(t,o),r}();y.constructor=w,e.default=y},function(t,e,o){var n,i,r,a;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}a=function(t){"use strict";function n(a,s,c,l){var u,f=!1,h=0;function d(){u&&clearTimeout(u)}function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];var n=this,i=Date.now()-h;function r(){h=Date.now(),c.apply(n,e)}f||(l&&!u&&r(),d(),void 0===l&&a<i?r():!0!==s&&(u=setTimeout(l?function(){u=void 0}:r,void 0===l?a-i:a)))}return"boolean"!=typeof s&&(l=c,c=s,s=void 0),t.cancel=function(){d(),f=!0},t}t.debounce=function(t,e,o){return void 0===o?n(t,e,!1):n(t,o,!1!==e)},t.throttle=n,Object.defineProperty(t,"__esModule",{value:!0})},"object"===s(e)&&void 0!==t?a(e):(i=[e],void 0===(r="function"==typeof(n=a)?n.apply(e,i):n)||(t.exports=r))},function(t,e,o){"use strict";o.r(e);e.default=function(n){function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];i=e,r=r||requestAnimationFrame(function(){r=null,n.apply(void 0,i)})}var i,r=null;return t.cancel=function(){r&&(cancelAnimationFrame(r),r=null)},t}},function(t,e,o){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.1
9
  * @author yeikos
11
 
12
  * Copyright 2014 yeikos - MIT license
13
  * https://raw.github.com/yeikos/js.merge/master/LICENSE
14
+ */function o(t,e,o){var n=o[0],i=o.length;!t&&"object"===l(n)||(n={});for(var r=0;r<i;++r){var a,s=o[r];if("object"===l(s))for(var c in s){"__proto__"!==c&&(a=t?u.clone(s[c]):s[c],n[c]=e?function t(e,o){if("object"!==l(e))return o;for(var n in o)"object"===l(e[n])&&"object"===l(o[n])?e[n]=t(e[n],o[n]):e[n]=o[n];return e}(n[c],a):a)}}return n}function l(t){return{}.toString.call(t).slice(8,-1).toLowerCase()}var n,u;n="object"===e(t)&&t&&"object"===e(t.exports)&&t.exports,(u=function(t){return o(!0===t,!1,arguments)}).recursive=function(t){return o(!0===t,!0,arguments)},u.clone=function(t){var e,o,n=t,i=l(t);if("array"===i)for(n=[],o=t.length,e=0;e<o;++e)n[e]=u.clone(t[e]);else if("object"===i)for(e in n={},t)n[e]=u.clone(t[e]);return n},n?t.exports=u:window.merge=u}).call(this,o(9)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,o){"use strict";
15
  /*!
16
  * Copyright 2019 SmugMug, Inc.
17
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
18
  * @license
19
+ */var p=o(8),n=o(11);function g(t,e){var o;return!1!==t.fullWidthBreakoutRowCadence&&(e._rows.length+1)%t.fullWidthBreakoutRowCadence==0&&(o=!0),new n({top:e._containerHeight,left:t.containerPadding.left,width:t.containerWidth-t.containerPadding.left-t.containerPadding.right,spacing:t.boxSpacing.horizontal,targetRowHeight:t.targetRowHeight,targetRowHeightTolerance:t.targetRowHeightTolerance,edgeCaseMinRowHeight:.5*t.targetRowHeight,edgeCaseMaxRowHeight:2*t.targetRowHeight,rightToLeft:!1,isBreakoutRow:o,widowLayoutStyle:t.widowLayoutStyle})}function y(t,e,o){return e._rows.push(o),e._layoutItems=e._layoutItems.concat(o.getItems()),e._containerHeight+=o.height+t.boxSpacing.vertical,o.items}t.exports=function(t,e){var o,n,i,r,a,s,c,l={},u={},f={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:!1,showWidows:!0,fullWidthBreakoutRowCadence:!1,widowLayoutStyle:"left"},h={},d={},l=p(f,e=e||{});return h.top=isNaN(parseFloat(l.containerPadding.top))?l.containerPadding:l.containerPadding.top,h.right=isNaN(parseFloat(l.containerPadding.right))?l.containerPadding:l.containerPadding.right,h.bottom=isNaN(parseFloat(l.containerPadding.bottom))?l.containerPadding:l.containerPadding.bottom,h.left=isNaN(parseFloat(l.containerPadding.left))?l.containerPadding:l.containerPadding.left,d.horizontal=isNaN(parseFloat(l.boxSpacing.horizontal))?l.boxSpacing:l.boxSpacing.horizontal,d.vertical=isNaN(parseFloat(l.boxSpacing.vertical))?l.boxSpacing:l.boxSpacing.vertical,l.containerPadding=h,l.boxSpacing=d,u._layoutItems=[],u._awakeItems=[],u._inViewportItems=[],u._leadingOrphans=[],u._trailingOrphans=[],u._containerHeight=l.containerPadding.top,u._rows=[],u._orphans=[],l._widowCount=0,o=l,n=u,i=t.map(function(t){return t.width&&t.height?{aspectRatio:t.width/t.height}:{aspectRatio:t}}),c=[],o.forceAspectRatio&&i.forEach(function(t){t.forcedAspectRatio=!0,t.aspectRatio=o.forceAspectRatio}),i.some(function(t,e){if(isNaN(t.aspectRatio))throw new Error("Item "+e+" has an invalid aspect ratio");if(a=a||g(o,n),r=a.addItem(t),a.isLayoutComplete()){if(c=c.concat(y(o,n,a)),n._rows.length>=o.maxNumRows)return!(a=null);if(a=g(o,n),!r&&(r=a.addItem(t),a.isLayoutComplete())){if(c=c.concat(y(o,n,a)),n._rows.length>=o.maxNumRows)return!(a=null);a=g(o,n)}}}),a&&a.getItems().length&&o.showWidows&&(n._rows.length?(s=n._rows[n._rows.length-1].isBreakoutRow?n._rows[n._rows.length-1].targetRowHeight:n._rows[n._rows.length-1].height,a.forceComplete(!1,s)):a.forceComplete(!1),c=c.concat(y(o,n,a)),o._widowCount=a.getItems().length),n._containerHeight=n._containerHeight-o.boxSpacing.vertical,n._containerHeight=n._containerHeight+o.containerPadding.bottom,{containerHeight:n._containerHeight,widowCount:o._widowCount,boxes:n._layoutItems}}},function(t,e,o){
20
  /*!
21
  * Copyright 2019 SmugMug, Inc.
22
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
23
  * @license
24
  */
25
+ var c=o(8);(t.exports=function(t){this.top=t.top,this.left=t.left,this.width=t.width,this.spacing=t.spacing,this.targetRowHeight=t.targetRowHeight,this.targetRowHeightTolerance=t.targetRowHeightTolerance,this.minAspectRatio=this.width/t.targetRowHeight*(1-t.targetRowHeightTolerance),this.maxAspectRatio=this.width/t.targetRowHeight*(1+t.targetRowHeightTolerance),this.edgeCaseMinRowHeight=t.edgeCaseMinRowHeight,this.edgeCaseMaxRowHeight=t.edgeCaseMaxRowHeight,this.widowLayoutStyle=t.widowLayoutStyle,this.isBreakoutRow=t.isBreakoutRow,this.items=[],this.height=0}).prototype={addItem:function(t){var e,o,n,i=this.items.concat(t),r=this.width-(i.length-1)*this.spacing,a=i.reduce(function(t,e){return t+e.aspectRatio},0),s=r/this.targetRowHeight;return this.isBreakoutRow&&0===this.items.length&&1<=t.aspectRatio?(this.items.push(t),this.completeLayout(r/t.aspectRatio,"justify"),!0):a<this.minAspectRatio?(this.items.push(c(t)),!0):!(a>this.maxAspectRatio)||0===this.items.length?(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0):(e=this.width-(this.items.length-1)*this.spacing,o=this.items.reduce(function(t,e){return t+e.aspectRatio},0),n=e/this.targetRowHeight,Math.abs(a-s)>Math.abs(o-n)?(this.completeLayout(e/o,"justify"),!1):(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0))},isLayoutComplete:function(){return 0<this.height},completeLayout:function(t,e){var o,n,i,r,a,s=this.left,c=this.width-(this.items.length-1)*this.spacing;(void 0===e||["justify","center","left"].indexOf(e)<0)&&(e="left"),n=Math.max(this.edgeCaseMinRowHeight,Math.min(t,this.edgeCaseMaxRowHeight)),o=t!==n?c/(this.height=n)/(c/t):(this.height=t,1),this.items.forEach(function(t){t.top=this.top,t.width=t.aspectRatio*this.height*o,t.height=this.height,t.left=s,s+=t.width+this.spacing},this),"justify"===e?(s-=this.spacing+this.left,i=(s-this.width)/this.items.length,r=this.items.map(function(t,e){return Math.round((e+1)*i)}),1===this.items.length?this.items[0].width-=Math.round(i):this.items.forEach(function(t,e){0<e?(t.left-=r[e-1],t.width-=r[e]-r[e-1]):t.width-=r[e]})):"center"===e&&(a=(this.width-s)/2,this.items.forEach(function(t){t.left+=a+this.spacing},this))},forceComplete:function(t,e){"number"==typeof e?this.completeLayout(e,this.widowLayoutStyle):this.completeLayout(this.targetRowHeight,this.widowLayoutStyle)},getItems:function(){return this.items}}}]);
26
  //# sourceMappingURL=fjGallery.min.js.map
assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["fjGallery.js"],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","lite_ready__WEBPACK_IMPORTED_MODULE_0__","lite_ready__WEBPACK_IMPORTED_MODULE_0___default","global__WEBPACK_IMPORTED_MODULE_1__","_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__","_typeof","obj","iterator","constructor","oldInit","oldDestroy","jQueryPlugin","oldJqPlugin","oldPlugin","fjGallery","noConflict","this","init","jQcontainer","$container","data","destroy","removeData","args","arguments","Array","unshift","res","apply","fn","document","querySelectorAll","callback","readyState","attachEvent","addEventListener","global","win","window","self","g","Function","e","throttle_debounce__WEBPACK_IMPORTED_MODULE_0__","raf_schd__WEBPACK_IMPORTED_MODULE_1__","merge__WEBPACK_IMPORTED_MODULE_2__","merge__WEBPACK_IMPORTED_MODULE_2___default","lite_ready__WEBPACK_IMPORTED_MODULE_3__","lite_ready__WEBPACK_IMPORTED_MODULE_3___default","justified_layout__WEBPACK_IMPORTED_MODULE_4__","justified_layout__WEBPACK_IMPORTED_MODULE_4___default","global__WEBPACK_IMPORTED_MODULE_5__","_defineProperties","target","props","length","descriptor","configurable","writable","fjGalleryList","updateFjGallery","requestAnimationFrame","forEach","item","resize","plugin","items","HTMLElement","nodeType","nodeName","ret","options","slice","len","k","instanceID","container","userOptions","instance","Constructor","TypeError","_classCallCheck","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","resizeThrottle","isRtl","css","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","toLowerCase","pureOptions","justify","protoProps","staticProps","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","jQuery","$item","$image","fjGalleryImage","querySelector","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","removeListeners","itemData","onHasSize","naturalWidth","naturalHeight","clearInterval","onLoaded","onError","checkSize","dimensions","removeEventListener","setInterval","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","concat","containerHeight","position","boxes","removeFromFjGalleryList","val","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","throttle","delay","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","Date","now","exec","undefined","setTimeout","cancel","debounce","atBegin","wrapperFn","lastArgs","frameId","cancelAnimationFrame","merge","clone","recursive","argv","result","size","typeOf","index","sitem","Public","merge_recursive","base","extend","input","toString","isNode","output","type","webpackPolyfill","deprecate","paths","children","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","Number","POSITIVE_INFINITY","forceAspectRatio","showWidows","isNaN","_awakeItems","_inViewportItems","_leadingOrphans","_trailingOrphans","_orphans","_widowCount","map","aspectRatio","forcedAspectRatio","some","Error","addItem","isLayoutComplete","forceComplete","widowCount","params","minAspectRatio","maxAspectRatio","previousRowWidthWithoutSpacing","previousAspectRatio","previousTargetAspectRatio","newItems","rowWidthWithoutSpacing","newAspectRatio","reduce","sum","targetAspectRatio","completeLayout","Math","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","max","min","round","fitToWidth"],"mappings":";;;;;IAAA,SAAAA,GAEA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAJ,EAAAG,GAAAK,KAAAH,EAAAD,QAAAC,EAAAA,EAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAT,EAGAC,EAAAS,EAAA,SAAAP,EAAAQ,EAAAC,GACAX,EAAAY,EAAAV,EAAAQ,IACAG,OAAAC,eAAAZ,EAAAQ,EAAA,CAAAK,YAAA,EAAAC,IAAAL,KAKAX,EAAAiB,EAAA,SAAAf,GACA,oBAAAgB,QAAAA,OAAAC,aACAN,OAAAC,eAAAZ,EAAAgB,OAAAC,YAAA,CAAAC,MAAA,WAEAP,OAAAC,eAAAZ,EAAA,aAAA,CAAAkB,OAAA,KAQApB,EAAAqB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAApB,EAAAoB,IACA,EAAAE,EAAA,OAAAF,EACA,GAAA,EAAAE,GAAA,iBAAAF,GAAAA,GAAAA,EAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAzB,EAAAiB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,UAAA,CAAAT,YAAA,EAAAK,MAAAA,IACA,EAAAE,GAAA,iBAAAF,EAAA,IAAA,IAAAM,KAAAN,EAAApB,EAAAS,EAAAe,EAAAE,EAAA,SAAAA,GAAA,OAAAN,EAAAM,IAAAC,KAAA,KAAAD,IACA,OAAAF,GAIAxB,EAAA4B,EAAA,SAAAzB,GACA,IAAAQ,EAAAR,GAAAA,EAAAoB,WACA,WAAA,OAAApB,EAAA,SACA,WAAA,OAAAA,GAEA,OADAH,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAiB,EAAAC,GAAA,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGA9B,EAAAiC,EAAA,GAIAjC,EAAAA,EAAAkC,EAAA,GAnFA,CAsFA,CAEA,SAAA/B,EAAAD,EAAAF,GAEAG,EAAAD,QAAAF,EAAA,IAKA,SAAAG,EAAAgC,EAAAnC,gBAGAA,EAAAiB,EAAAkB,GACA,IAAAC,EAAApC,EAAA,GACAqC,EAAArC,EAAA4B,EAAAQ,GACAE,EAAAtC,EAAA,GAEAuC,EAAAvC,EAAA,GACA,SAAAwC,EAAAC,GAAA,OAAAD,EAAA,mBAAAtB,QAAA,iBAAAA,OAAAwB,SAAA,SAAAD,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAvB,QAAAuB,EAAAE,cAAAzB,QAAAuB,IAAAvB,OAAAa,UAAA,gBAAAU,IAAAA,GAMA,IAWAG,EAYAC,EAYAC,EASAC,EA5CAC,EAAAV,EAAA,OAAAW,UACAX,EAAA,OAAAW,UAAAV,EAAA,QAEAD,EAAA,OAAAW,UAAAC,WAAA,WAEA,OADAZ,EAAA,OAAAW,UAAAD,EACAG,WAIA,IAAAb,EAAA,SAEAM,EAAAN,EAAA,OAAAW,UAAAN,YAAAZ,UAAAqB,KAEAd,EAAA,OAAAW,UAAAN,YAAAZ,UAAAqB,KAAA,WACAD,KAAAE,YAAAxC,OAAAyB,EAAA,OAAAzB,CAAAsC,KAAAG,YACAH,KAAAE,YAAAE,KAAA,YAAAJ,MAEAP,GACAA,EAAAtC,KAAA6C,OAKAN,EAAAP,EAAA,OAAAW,UAAAN,YAAAZ,UAAAyB,QAEAlB,EAAA,OAAAW,UAAAN,YAAAZ,UAAAyB,QAAA,WACAL,KAAAE,aACAF,KAAAE,YAAAI,WAAA,aAGAZ,GACAA,EAAAvC,KAAA6C,QAIAL,EAAA,WACA,IAAAY,EAAAC,WAAA,GACAC,MAAA7B,UAAA8B,QAAAvD,KAAAoD,EAAAP,MACA,IAAAW,EAAAvB,EAAA,QAAAwB,MAAAzB,EAAA,OAAAoB,GACA,MAAA,WAAAlB,EAAAsB,GAAAA,EAAAX,OAGAR,YAAAJ,EAAA,QAAAI,YAEAI,EAAAT,EAAA,OAAA0B,GAAAf,UACAX,EAAA,OAAA0B,GAAAf,UAAAH,EAEAR,EAAA,OAAA0B,GAAAf,UAAAC,WAAA,WAEA,OADAZ,EAAA,OAAA0B,GAAAf,UAAAF,EACAI,OAKAd,GAAAA,CAAA,WACAxB,OAAA0B,EAAA,QAAA1B,CAAAoD,SAAAC,iBAAA,mBAKA,SAAA/D,EAAAD,GAEAC,EAAAD,QAAA,SAAAiE,GACA,aAAAF,SAAAG,YAAA,gBAAAH,SAAAG,WAEAD,EAAA7D,OACA2D,SAAAI,YAEAJ,SAAAI,YAAA,qBAAA,WACA,gBAAAJ,SAAAG,YAAAD,EAAA7D,SAEA2D,SAAAK,kBAEAL,SAAAK,iBAAA,mBAAAH,KAMA,SAAAhE,EAAAD,EAAAF,IAEA,SAAAuE,GAAA,IAGAC,EADA,oBAAAC,OACAA,YACA,IAAAF,EACAA,EACA,oBAAAG,KACAA,KAEA,GAGAvE,EAAAD,QAAAsE,IACAlE,KAAA6C,KAAAnD,EAAA,KAIA,SAAAG,EAAAD,GAEA,SAAAsC,EAAAC,GAAA,OAAAD,EAAA,mBAAAtB,QAAA,iBAAAA,OAAAwB,SAAA,SAAAD,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAvB,QAAAuB,EAAAE,cAAAzB,QAAAuB,IAAAvB,OAAAa,UAAA,gBAAAU,IAAAA,GAEA,IAEAkC,EAAA,WACA,OAAAxB,KADA,GAIA,IAEAwB,EAAAA,GAAA,IAAAC,SAAA,cAAA,GACA,MAAAC,GAEA,YAAA,oBAAAJ,OAAA,YAAAjC,EAAAiC,WAAAE,EAAAF,QAMAtE,EAAAD,QAAAyE,GAIA,SAAAxE,EAAAgC,EAAAnC,gBAGAA,EAAAiB,EAAAkB,GACA,IAAA2C,EAAA9E,EAAA,GAEA+E,EAAA/E,EAAA,GACAgF,EAAAhF,EAAA,GACAiF,EAAAjF,EAAA4B,EAAAoD,GACAE,EAAAlF,EAAA,GACAmF,EAAAnF,EAAA4B,EAAAsD,GACAE,EAAApF,EAAA,IACAqF,EAAArF,EAAA4B,EAAAwD,GACAE,EAAAtF,EAAA,GAEA,SAAAwC,EAAAC,GAAA,OAAAD,EAAA,mBAAAtB,QAAA,iBAAAA,OAAAwB,SAAA,SAAAD,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAvB,QAAAuB,EAAAE,cAAAzB,QAAAuB,IAAAvB,OAAAa,UAAA,gBAAAU,IAAAA,GAIA,SAAA8C,EAAAC,EAAAC,GAAA,IAAA,IAAArF,EAAA,EAAAA,EAAAqF,EAAAC,OAAAtF,IAAA,CAAA,IAAAuF,EAAAF,EAAArF,GAAAuF,EAAA5E,WAAA4E,EAAA5E,aAAA,EAAA4E,EAAAC,cAAA,EAAA,UAAAD,IAAAA,EAAAE,UAAA,GAAAhF,OAAAC,eAAA0E,EAAAG,EAAAjE,IAAAiE,IAYA,IAAAG,EAAA,GAEA,SAAAC,IACAT,EAAA,OAAAU,sBAAA,WACAF,EAAAG,QAAA,SAAAC,GACAA,EAAAC,aAKAb,EAAA,OAAAhB,iBAAA,SAAAyB,GACAT,EAAA,OAAAhB,iBAAA,oBAAAyB,GACAT,EAAA,OAAAhB,iBAAA,OAAAyB,GACAZ,GAAAA,CAAA,WACAY,MAkTA,SAAAK,EAAAC,EAAA,IAGA,YAAA,oBAAAC,YAAA,YAAA9D,EAAA8D,cAAAD,aAAAC,YAAAD,GAAA,WAAA7D,EAAA6D,IAAA,OAAAA,GAAA,IAAAA,EAAAE,UAAA,iBAAAF,EAAAG,YACAH,EAAA,CAAAA,IASA,IANA,IAIAI,EAJAC,EAPA,EAQAhD,EAAAE,MAAA7B,UAAA4E,MAAArG,KAAAqD,UAAA,GACAiD,EAAAP,EAAAX,OACAmB,EAAA,EAGAA,EAAAD,EAAAC,IAWA,GAVA,WAAArE,EAAAkE,SAAA,IAAAA,EACAL,EAAAQ,GAAA5D,YAEAoD,EAAAQ,GAAA5D,UAAA,IAAAA,EAAAoD,EAAAQ,GAAAH,IAEAL,EAAAQ,GAAA5D,YAEAwD,EAAAJ,EAAAQ,GAAA5D,UAAAyD,GAAA3C,MAAAsC,EAAAQ,GAAA5D,UAAAS,SAGA,IAAA+C,EACA,OAAAA,EAIA,OAAAJ,EAjRA,IAAAS,EAAA,EAEA7D,EAAA,WACA,SAAAA,EAAA8D,EAAAC,IA7FA,SAAAC,EAAAC,GAAA,KAAAD,aAAAC,GAAA,MAAA,IAAAC,UAAA,qCA8FAC,CAAAjE,KAAAF,GAEA,IAAAyB,EAAAvB,KACAuB,EAAAoC,WAAAA,IACApC,EAAApB,WAAAyD,EACArC,EAAA2C,OAAA,GACA3C,EAAA4C,SAAA,CACAC,aAAA,mBACAC,cAAA,MACAC,OAAA,GAEAC,UAAA,IACAC,mBAAA,IAEAC,eAAA,IACAC,MAAA,QAAAnD,EAAAoD,IAAApD,EAAApB,WAAA,aAEAyE,OAAA,KAEAC,UAAA,KAEAC,eAAA,KAEAC,gBAAA,KAEAC,UAAA,MAIA,IAAAC,EAAA1D,EAAApB,WAAA+E,SAAA,GACAC,EAAA,GACAzH,OAAA0H,KAAAH,GAAAnC,QAAA,SAAAvE,GACA,IAAA8G,EAAA9G,EAAA+G,OAAA,EAAA,GAAAC,cAAAhH,EAAA+G,OAAA,GAEAD,QAAA,IAAA9D,EAAA4C,SAAAkB,KACAF,EAAAE,GAAAJ,EAAA1G,MAGAgD,EAAAgC,QAAAzB,GAAAA,CAAA,GAAAP,EAAA4C,SAAAgB,EAAAtB,GACAtC,EAAAiE,YAAA1D,GAAAA,CAAA,GAAAP,EAAAgC,SAEAhC,EAAAyB,OAAAtF,OAAAiE,EAAA,SAAAjE,CAAA6D,EAAAgC,QAAAkB,eAAAlD,EAAAyB,QACAzB,EAAAkE,QAAA/H,OAAAkE,EAAA,QAAAlE,CAAA6D,EAAAkE,QAAAjH,KAAA+C,IACAA,EAAAtB,OArIA,IAAA8D,EAAA2B,EAAAC,EAsUA,OAtUA5B,EAyIAjE,GAzIA4F,EAyIA,CAAA,CACAnH,IAAA,MACAN,MAAA,SAAA2H,EAAAC,GACA,MAAA,iBAAAA,EACA1D,EAAA,OAAA2D,iBAAAF,GAAAG,iBAAAF,IAIAA,EAAAG,YACAH,EAAA,qBAAAA,EAAAG,WAGAtI,OAAA0H,KAAAS,GAAA/C,QAAA,SAAAvE,GACAqH,EAAAK,MAAA1H,GAAAsH,EAAAtH,KAEAqH,KAGA,CACArH,IAAA,qBACAN,MAAA,WACA0E,EAAAuD,KAAAlG,MACA4C,MAGA,CACArE,IAAA,0BACAN,MAAA,WACA,IAAAsD,EAAAvB,KACA2C,EAAAG,QAAA,SAAAC,EAAAxE,GACAwE,EAAAY,aAAApC,EAAAoC,YACAhB,EAAAwD,OAAA5H,EAAA,OAIA,CACAA,IAAA,OACAN,MAAA,WACA,IAAAsD,EAAAvB,KACAuB,EAAA6E,aAAA7E,EAAApB,WAAAY,iBAAAQ,EAAAgC,QAAAa,eACA7C,EAAA8E,qBAEA9E,EAAAgC,QAAAqB,QACArD,EAAAgC,QAAAqB,OAAAzH,KAAAoE,KAIA,CACAhD,IAAA,eACAN,MAAA,SAAAqI,GACA,IAAA/E,EAAAvB,KAEAmC,EAAA,OAAAoE,QAAAD,aAAAnE,EAAA,OAAAoE,SACAD,EAAAA,EAAAzI,OAGAyI,GAAAA,EAAA/D,SAIA+D,EAAAxD,QAAA,SAAA0D,GAGA,IACAC,EAIArG,GALAoG,GAAAA,EAAAE,iBAAAF,EAAAG,gBACAF,EAAAD,EAAAG,cAAApF,EAAAgC,QAAAc,kBAGAmC,EAAAE,eAAAnF,GACAnB,EAAA,CACAoG,MAAAA,EACAC,OAAAA,EACAG,MAAAC,WAAAJ,EAAAK,aAAA,YAAA,EACAC,OAAAF,WAAAJ,EAAAK,aAAA,aAAA,EACAE,UAAA,WACA,IAvLAC,EAAAC,EACAC,EACAC,EACAC,EAyCAC,EA2IAC,EAAAvH,KAlLA,SAAAwH,IACAJ,EACAF,EAAAE,IAIAA,EAAA,CACAR,MAAAK,EAAAQ,aACAV,OAAAE,EAAAS,eAEAR,EAAAE,GACAO,cAAAR,GAEAE,GAEAC,KAIA,SAAAM,IACAJ,IAGA,SAAAK,IACAL,IAGA,SAAAM,IACA,EAAAb,EAAAQ,cACAD,IAlCAP,EAwLAR,EArLAY,EADAD,IAFAF,EAwLA,SAAAa,GACAR,EAAAX,QAAAmB,EAAAnB,OAAAW,EAAAR,SAAAgB,EAAAhB,SACAQ,EAAAX,MAAAmB,EAAAnB,MACAW,EAAAR,OAAAgB,EAAAhB,OACAxF,EAAAyB,YAhJAsE,EAAA,WACAD,GAAA,EACAJ,EAAAe,oBAAA,OAAAJ,GACAX,EAAAe,oBAAA,QAAAH,IAGAC,IAEAV,IAbAC,GAAA,EACAJ,EAAA9F,iBAAA,OAAAyG,GACAX,EAAA9F,iBAAA,QAAA0G,GAaAV,EAAAc,YAAAH,EAAA,SA2IAd,YACAzF,EAAA2C,OAAAgC,KAAA9F,MAKAmB,EAAAgC,QAAAuB,gBACAvD,EAAAgC,QAAAuB,eAAA3H,KAAAoE,EAAA,CAAA+E,IAGA/E,EAAAkE,aAGA,CACAlH,IAAA,UACAN,MAAA,WACA,IAAAsD,EAAAvB,KACAkI,EAAA,GAEA3G,EAAAgC,QAAAwB,iBACAxD,EAAAgC,QAAAwB,gBAAA5H,KAAAoE,GAGAA,EAAA2C,OAAApB,QAAA,SAAA1C,GACAA,EAAAwG,OAAAxG,EAAA2G,QACAmB,EAAAhC,KAAA9F,EAAAwG,MAAAxG,EAAA2G,UAGA,IAAAoB,EAAAjG,GAAAA,CAAAgG,EAAA,CACAE,eAAA7G,EAAApB,WAAAkI,wBAAAzB,MACA0B,iBAAA,CACAC,IAAA1B,WAAAtF,EAAAoD,IAAApD,EAAApB,WAAA,iBAAA,EACAqI,MAAA3B,WAAAtF,EAAAoD,IAAApD,EAAApB,WAAA,mBAAA,EACAsI,OAAA5B,WAAAtF,EAAAoD,IAAApD,EAAApB,WAAA,oBAAA,EACAuI,KAAA7B,WAAAtF,EAAAoD,IAAApD,EAAApB,WAAA,kBAAA,GAEAwI,WAAApH,EAAAgC,QAAAe,OACAsE,gBAAArH,EAAAgC,QAAAgB,UACAsE,yBAAAtH,EAAAgC,QAAAiB,qBAEAjD,EAAAoD,IAAApD,EAAApB,WAAA,CACA4G,OAAA,GAAA+B,OAAAX,EAAAY,gBAAA,QAEA,IAAA9L,EAAA,EACAsE,EAAA2C,OAAApB,QAAA,SAAA1C,GACAA,EAAAwG,OAAAxG,EAAA2G,SACAxF,EAAAoD,IAAAvE,EAAAoG,MAAA,CACAwC,SAAA,WACAhD,UAAA,cAAA8C,QAAAvH,EAAAgC,QAAAmB,OAAA,EAAA,GAAAyD,EAAAc,MAAAhM,GAAAyL,KAAA,mBAAAI,OAAAX,EAAAc,MAAAhM,GAAAsL,IAAA,qBACA3B,MAAA,GAAAkC,OAAAX,EAAAc,MAAAhM,GAAA2J,MAAA,MACAG,OAAA,GAAA+B,OAAAX,EAAAc,MAAAhM,GAAA8J,OAAA,QAEA9J,OAIAsE,EAAAgC,QAAAyB,WACAzD,EAAAgC,QAAAyB,UAAA7H,KAAAoE,KAIA,CACAhD,IAAA,gBACAN,MAAA,SAAAsF,GACAvD,KACAuD,QAAAzB,GAAAA,CAAA,GADA9B,KACAuD,QAAAA,GADAvD,KAEAyF,YAEA,CACAlH,IAAA,UACAN,MAAA,WACA,IAAAsD,EAAAvB,KACAuB,EAAA2H,0BAEA3H,EAAAgC,QAAAsB,WACAtD,EAAAgC,QAAAsB,UAAA1H,KAAAoE,GAIAA,EAAAoD,IAAApD,EAAApB,WAAA,CACA4G,OAAA,KAEAxF,EAAA2C,OAAApB,QAAA,SAAA1C,GACAmB,EAAAoD,IAAAvE,EAAAoG,MAAA,CACAwC,SAAA,GACAhD,UAAA,GACAY,MAAA,GACAG,OAAA,OAIAxF,EAAA2C,OAAApB,QAAA,SAAAqG,UACAA,EAAA3C,MAAAE,wBAGAnF,EAAApB,WAAAL,YAEA,CACAvB,IAAA,SACAN,MAAA,WACA+B,KACAyF,eAlUArD,EAAA2B,EAAAnF,UAAA8G,GAAAC,GAAAvD,EAAA2B,EAAA4B,GAsUA7F,EA9OA,GAkRAmD,EAAAzD,YAAAM,EACAd,EAAA,QAAA,GAIA,SAAAhC,EAAAD,EAAAF,GAEA,IAAAuM,EAAAC,EAAAC,EAEAC,EAFA,SAAAlK,EAAAC,GAAA,OAAAD,EAAA,mBAAAtB,QAAA,iBAAAA,OAAAwB,SAAA,SAAAD,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAvB,QAAAuB,EAAAE,cAAAzB,QAAAuB,IAAAvB,OAAAa,UAAA,gBAAAU,IAAAA,GAEAiK,EAKA,SAAAxM,gBAqBA,SAAAyM,EAAAC,EAAAC,EAAA1I,EAAA2I,GAMA,IAAAC,EACAC,GAAA,EAEAC,EAAA,EAEA,SAAAC,IACAH,GACAI,aAAAJ,GAuBA,SAAAK,IACA,IAAA,IAAAC,EAAA1J,UAAA+B,OAAA4H,EAAA,IAAA1J,MAAAyJ,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,GAAA5J,UAAA4J,GAGA,IAAA7I,EAAAvB,KACAqK,EAAAC,KAAAC,MAAAT,EAOA,SAAAU,IACAV,EAAAQ,KAAAC,MACAvJ,EAAAJ,MAAAW,EAAA4I,GAPAN,IAmBAF,IAAAC,GAKAY,IAGAT,SAEAU,IAAAd,GAAAF,EAAAY,EAKAG,KACA,IAAAd,IAYAE,EAAAc,WAAAf,EAhCA,WACAC,OAAAa,GA+BAD,OAAAC,IAAAd,EAAAF,EAAAY,EAAAZ,KAMA,MAzEA,kBAAAC,IACAC,EAAA3I,EACAA,EAAA0I,EACAA,OAAAe,GAoEAR,EAAAU,OA7EA,WACAZ,IACAF,GAAA,GA6EAI,EAwBAlN,EAAA6N,SAJA,SAAAnB,EAAAoB,EAAA7J,GACA,YAAAyJ,IAAAzJ,EAAAwI,EAAAC,EAAAoB,GAAA,GAAArB,EAAAC,EAAAzI,GAAA,IAAA6J,IAIA9N,EAAAyM,SAAAA,EACA9L,OAAAC,eAAAZ,EAAA,aAAA,CACAkB,OAAA,KArJA,WAAAoB,EAAAtC,SAAA,IAAAC,EAAAuM,EAAAxM,IAAAsM,EAAA,CAAAtM,QAGA0N,KAFAnB,EAAA,mBADAF,EAAA,GAEAA,EAAAxI,MAAA7D,EAAAsM,GAAAD,KACApM,EAAAD,QAAAuM,KAwJA,SAAAtM,EAAAgC,EAAAnC,gBAGAA,EAAAiB,EAAAkB,GAkCAA,EAAA,QAjCA,SAAA6B,GAIA,SAAAiK,IACA,IAAA,IAAAZ,EAAA1J,UAAA+B,OAAAhC,EAAA,IAAAE,MAAAyJ,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACA7J,EAAA6J,GAAA5J,UAAA4J,GAGAW,EAAAxK,EAMAyK,EAJAA,GAIAnI,sBAAA,WACAmI,EAAA,KACAnK,EAAAD,WAAA,EAAAmK,KAhBA,IAAAA,EACAC,EAAA,KA4BA,OATAF,EAAAH,OAAA,WACAK,IAIAC,qBAAAD,GACAA,EAAA,OAGAF,IAOA,SAAA9N,EAAAD,EAAAF,IAEA,SAAAG,GAAA,SAAAqC,EAAAC,GAAA,OAAAD,EAAA,mBAAAtB,QAAA,iBAAAA,OAAAwB,SAAA,SAAAD,GAAA,cAAAA,GAAA,SAAAA,GAAA,OAAAA,GAAA,mBAAAvB,QAAAuB,EAAAE,cAAAzB,QAAAuB,IAAAvB,OAAAa,UAAA,gBAAAU,IAAAA;;;;;;;;GA8FA,SAAA4L,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAD,EAAA,GACAE,EAAAF,EAAA9I,QACA4I,GAAA,WAAAK,EAAAF,KAAAA,EAAA,IAEA,IAAA,IAAAG,EAAA,EAAAA,EAAAF,IAAAE,EAAA,CACA,IAMAC,EANA3I,EAAAsI,EAAAI,GAEA,GAAA,WADAD,EAAAzI,GAGA,IAAA,IAAAxE,KAAAwE,EAAA,CACA,cAAAxE,IACAmN,EAAAP,EAAAQ,EAAAR,MAAApI,EAAAxE,IAAAwE,EAAAxE,GAGA+M,EAAA/M,GADA6M,EApCA,SAAAQ,EAAAC,EAAAC,GACA,GAAA,WAAAN,EAAAK,GAAA,OAAAC,EAEA,IAAA,IAAAvN,KAAAuN,EACA,WAAAN,EAAAK,EAAAtN,KAAA,WAAAiN,EAAAM,EAAAvN,IACAsN,EAAAtN,GAAAqN,EAAAC,EAAAtN,GAAAuN,EAAAvN,IAEAsN,EAAAtN,GAAAuN,EAAAvN,GAIA,OAAAsN,EA0BAD,CAAAN,EAAA/M,GAAAmN,GAEAA,IAKA,OAAAJ,EAWA,SAAAE,EAAAO,GACA,MAAA,GAAAC,SAAA7O,KAAA4O,GAAAvI,MAAA,GAAA,GAAA+B,cApHA,IAAA0G,EAOAN,EAPAM,EA4HA,WAAA5M,EAAArC,IAAAA,GAAA,WAAAqC,EAAArC,EAAAD,UAAAC,EAAAD,SArHA4O,EAAA,SAAAR,GACA,OAAAD,GAAA,IAAAC,GAAA,EAAA3K,aAWA4K,UAAA,SAAAD,GACA,OAAAD,GAAA,IAAAC,GAAA,EAAA3K,YASAmL,EAAAR,MAAA,SAAAY,GACA,IAEAN,EACAF,EAHAW,EAAAH,EACAI,EAAAX,EAAAO,GAIA,GAAA,UAAAI,EAIA,IAHAD,EAAA,GACAX,EAAAQ,EAAAxJ,OAEAkJ,EAAA,EAAAA,EAAAF,IAAAE,EACAS,EAAAT,GAAAE,EAAAR,MAAAY,EAAAN,SAEA,GAAA,WAAAU,EAGA,IAAAV,KAFAS,EAAA,GAEAH,EACAG,EAAAT,GAAAE,EAAAR,MAAAY,EAAAN,IAIA,OAAAS,GAqEAD,EACAjP,EAAAD,QAAA4O,EAEArK,OAAA,MAAAqK,IAGAxO,KAAA6C,KAAAnD,EAAA,EAAAA,CAAAG,KAIA,SAAAA,EAAAD,GAEAC,EAAAD,QAAA,SAAAC,GAsBA,OArBAA,EAAAoP,kBACApP,EAAAqP,UAAA,aAEArP,EAAAsP,MAAA,GAEAtP,EAAAuP,WAAAvP,EAAAuP,SAAA,IACA7O,OAAAC,eAAAX,EAAA,SAAA,CACAY,YAAA,EACAC,IAAA,WACA,OAAAb,EAAAE,KAGAQ,OAAAC,eAAAX,EAAA,KAAA,CACAY,YAAA,EACAC,IAAA,WACA,OAAAb,EAAAC,KAGAD,EAAAoP,gBAAA,GAGApP,IAKA,SAAAA,EAAAD,EAAAF;;;;;GAUA,IAAAqO,EAAArO,EAAA,GACA2P,EAAA3P,EAAA,IAWA,SAAA4P,EAAAC,EAAAC,GACA,IAAAC,EAQA,OANA,IAAAF,EAAAG,8BACAF,EAAAG,MAAAvK,OAAA,GAAAmK,EAAAG,6BAAA,IACAD,GAAA,GAIA,IAAAJ,EAAA,CACAjE,IAAAoE,EAAAI,iBACArE,KAAAgE,EAAApE,iBAAAI,KACA9B,MAAA8F,EAAAtE,eAAAsE,EAAApE,iBAAAI,KAAAgE,EAAApE,iBAAAE,MACAwE,QAAAN,EAAA/D,WAAAsE,WACArE,gBAAA8D,EAAA9D,gBACAC,yBAAA6D,EAAA7D,yBACAqE,qBAAA,GAAAR,EAAA9D,gBACAuE,qBAAA,EAAAT,EAAA9D,gBACAwE,aAAA,EACAR,cAAAA,EACAS,iBAAAX,EAAAW,mBAeA,SAAAC,EAAAZ,EAAAC,EAAAY,GAMA,OALAZ,EAAAG,MAAA5G,KAAAqH,GAEAZ,EAAAa,aAAAb,EAAAa,aAAA1E,OAAAyE,EAAAE,YAEAd,EAAAI,kBAAAQ,EAAAxG,OAAA2F,EAAA/D,WAAA+E,SACAH,EAAArK,MAgHAlG,EAAAD,QAAA,SAAAgP,EAAA4B,GACA,IAnGAjB,EAAAC,EAAAiB,EAEAC,EACAC,EACAC,EAHAC,EAkGAtB,EAAA,GACAC,EAAA,GAEAxI,EAAA,CACAiE,eAAA,KACAE,iBAAA,GACAK,WAAA,GACAC,gBAAA,IACAC,yBAAA,IACAoF,WAAAC,OAAAC,kBACAC,kBAAA,EACAC,YAAA,EACAxB,6BAAA,EACAQ,iBAAA,QAEA/E,EAAA,GACAK,EAAA,GAGA+D,EAAAxB,EAAA/G,EAFAwJ,EAAAA,GAAA,IAuBA,OAnBArF,EAAAC,IAAA+F,MAAAzH,WAAA6F,EAAApE,iBAAAC,MAAAmE,EAAApE,iBAAAoE,EAAApE,iBAAAC,IACAD,EAAAE,MAAA8F,MAAAzH,WAAA6F,EAAApE,iBAAAE,QAAAkE,EAAApE,iBAAAoE,EAAApE,iBAAAE,MACAF,EAAAG,OAAA6F,MAAAzH,WAAA6F,EAAApE,iBAAAG,SAAAiE,EAAApE,iBAAAoE,EAAApE,iBAAAG,OACAH,EAAAI,KAAA4F,MAAAzH,WAAA6F,EAAApE,iBAAAI,OAAAgE,EAAApE,iBAAAoE,EAAApE,iBAAAI,KACAC,EAAAsE,WAAAqB,MAAAzH,WAAA6F,EAAA/D,WAAAsE,aAAAP,EAAA/D,WAAA+D,EAAA/D,WAAAsE,WACAtE,EAAA+E,SAAAY,MAAAzH,WAAA6F,EAAA/D,WAAA+E,WAAAhB,EAAA/D,WAAA+D,EAAA/D,WAAA+E,SACAhB,EAAApE,iBAAAA,EACAoE,EAAA/D,WAAAA,EAEAgE,EAAAa,aAAA,GACAb,EAAA4B,YAAA,GACA5B,EAAA6B,iBAAA,GACA7B,EAAA8B,gBAAA,GACA9B,EAAA+B,iBAAA,GACA/B,EAAAI,iBAAAL,EAAApE,iBAAAC,IACAoE,EAAAG,MAAA,GACAH,EAAAgC,SAAA,GACAjC,EAAAkC,YAAA,EAzIAlC,EA2IAA,EA3IAC,EA2IAA,EA3IAiB,EA2IA7B,EAAA8C,IAAA,SAAA9L,GACA,OAAAA,EAAA6D,OAAA7D,EAAAgE,OACA,CACA+H,YAAA/L,EAAA6D,MAAA7D,EAAAgE,QAGA,CACA+H,YAAA/L,KAjJAiL,EAAA,GAKAtB,EAAA0B,kBACAR,EAAA9K,QAAA,SAAAyE,GACAA,EAAAwH,mBAAA,EACAxH,EAAAuH,YAAApC,EAAA0B,mBAKAR,EAAAoB,KAAA,SAAAzH,EAAAtK,GACA,GAAAqR,MAAA/G,EAAAuH,aACA,MAAA,IAAAG,MAAA,QAAAhS,EAAA,gCAWA,GANA6Q,EADAA,GACArB,EAAAC,EAAAC,GAIAkB,EAAAC,EAAAoB,QAAA3H,GAEAuG,EAAAqB,mBAAA,CAIA,GAFAnB,EAAAA,EAAAlF,OAAAwE,EAAAZ,EAAAC,EAAAmB,IAEAnB,EAAAG,MAAAvK,QAAAmK,EAAAuB,WAEA,QADAH,EAAA,MAMA,GAFAA,EAAArB,EAAAC,EAAAC,IAEAkB,IACAA,EAAAC,EAAAoB,QAAA3H,GAEAuG,EAAAqB,oBAAA,CAIA,GAFAnB,EAAAA,EAAAlF,OAAAwE,EAAAZ,EAAAC,EAAAmB,IAEAnB,EAAAG,MAAAvK,QAAAmK,EAAAuB,WAEA,QADAH,EAAA,MAIAA,EAAArB,EAAAC,EAAAC,OAOAmB,GAAAA,EAAAL,WAAAlL,QAAAmK,EAAA2B,aAEA1B,EAAAG,MAAAvK,QAGAwL,EADApB,EAAAG,MAAAH,EAAAG,MAAAvK,OAAA,GAAAqK,cACAD,EAAAG,MAAAH,EAAAG,MAAAvK,OAAA,GAAAqG,gBAEA+D,EAAAG,MAAAH,EAAAG,MAAAvK,OAAA,GAAAwE,OAGA+G,EAAAsB,eAAA,EAAArB,IAGAD,EAAAsB,eAAA,GAGApB,EAAAA,EAAAlF,OAAAwE,EAAAZ,EAAAC,EAAAmB,IACApB,EAAAkC,YAAAd,EAAAL,WAAAlL,QAKAoK,EAAAI,iBAAAJ,EAAAI,iBAAAL,EAAA/D,WAAA+E,SAEAf,EAAAI,iBAAAJ,EAAAI,iBAAAL,EAAApE,iBAAAG,OACA,CACAM,gBAAA4D,EAAAI,iBACAsC,WAAA3C,EAAAkC,YACA3F,MAAA0D,EAAAa,gBAqEA,SAAAxQ,EAAAD,EAAAF;;;;;;AAOA,IAAAqO,EAAArO,EAAA,IAsBAG,EAAAD,QAAA,SAAAuS,GAEAtP,KAAAuI,IAAA+G,EAAA/G,IAEAvI,KAAA0I,KAAA4G,EAAA5G,KAEA1I,KAAA4G,MAAA0I,EAAA1I,MAEA5G,KAAAgN,QAAAsC,EAAAtC,QAEAhN,KAAA4I,gBAAA0G,EAAA1G,gBACA5I,KAAA6I,yBAAAyG,EAAAzG,yBACA7I,KAAAuP,eAAAvP,KAAA4G,MAAA0I,EAAA1G,iBAAA,EAAA0G,EAAAzG,0BACA7I,KAAAwP,eAAAxP,KAAA4G,MAAA0I,EAAA1G,iBAAA,EAAA0G,EAAAzG,0BAEA7I,KAAAkN,qBAAAoC,EAAApC,qBACAlN,KAAAmN,qBAAAmC,EAAAnC,qBAEAnN,KAAAqN,iBAAAiC,EAAAjC,iBAEArN,KAAA4M,cAAA0C,EAAA1C,cAEA5M,KAAAkD,MAAA,GAEAlD,KAAA+G,OAAA,IAGAnI,UAAA,CAqBAsQ,QAAA,SAAA3H,GACA,IAOAkI,EACAC,EACAC,EATAC,EAAA5P,KAAAkD,MAAA4F,OAAAvB,GAEAsI,EAAA7P,KAAA4G,OAAAgJ,EAAArN,OAAA,GAAAvC,KAAAgN,QACA8C,EAAAF,EAAAG,OAAA,SAAAC,EAAAjN,GACA,OAAAiN,EAAAjN,EAAA+L,aACA,GACAmB,EAAAJ,EAAA7P,KAAA4I,gBAKA,OAAA5I,KAAA4M,eAEA,IAAA5M,KAAAkD,MAAAX,QAEA,GAAAgF,EAAAuH,aAEA9O,KAAAkD,MAAAgD,KAAAqB,GACAvH,KAAAkQ,eAAAL,EAAAtI,EAAAuH,YAAA,YACA,GAKAgB,EAAA9P,KAAAuP,gBAGAvP,KAAAkD,MAAAgD,KAAAgF,EAAA3D,KACA,KACAuI,EAAA9P,KAAAwP,iBAIA,IAAAxP,KAAAkD,MAAAX,QA6BAvC,KAAAkD,MAAAgD,KAAAgF,EAAA3D,IACAvH,KAAAkQ,eAAAL,EAAAC,EAAA,YACA,IAtBAL,EAAAzP,KAAA4G,OAAA5G,KAAAkD,MAAAX,OAAA,GAAAvC,KAAAgN,QACA0C,EAAA1P,KAAAkD,MAAA6M,OAAA,SAAAC,EAAAjN,GACA,OAAAiN,EAAAjN,EAAA+L,aACA,GACAa,EAAAF,EAAAzP,KAAA4I,gBAEAuH,KAAAC,IAAAN,EAAAG,GAAAE,KAAAC,IAAAV,EAAAC,IAEA3P,KAAAkQ,eAAAT,EAAAC,EAAA,YACA,IAIA1P,KAAAkD,MAAAgD,KAAAgF,EAAA3D,IACAvH,KAAAkQ,eAAAL,EAAAC,EAAA,YACA,KAiBAX,iBAAA,WACA,OAAA,EAAAnP,KAAA+G,QAWAmJ,eAAA,SAAAG,EAAAhD,GACA,IAEAiD,EACAC,EACAC,EACAC,EAEAC,EAPAC,EAAA3Q,KAAA0I,KACAmH,EAAA7P,KAAA4G,OAAA5G,KAAAkD,MAAAX,OAAA,GAAAvC,KAAAgN,cAQA,IAAAK,GAAA,CAAA,UAAA,SAAA,QAAAuD,QAAAvD,GAAA,KACAA,EAAA,QAIAkD,EAAAJ,KAAAU,IAAA7Q,KAAAkN,qBAAAiD,KAAAW,IAAAT,EAAArQ,KAAAmN,uBAOAmD,EALAD,IAAAE,EAKAV,GADA7P,KAAA+G,OAAAwJ,IACAV,EAAAQ,IAGArQ,KAAA+G,OAAAsJ,EACA,GAIArQ,KAAAkD,MAAAJ,QAAA,SAAAC,GACAA,EAAAwF,IAAAvI,KAAAuI,IACAxF,EAAA6D,MAAA7D,EAAA+L,YAAA9O,KAAA+G,OAAAuJ,EACAvN,EAAAgE,OAAA/G,KAAA+G,OAIAhE,EAAA2F,KAAAiI,EAEAA,GAAA5N,EAAA6D,MAAA5G,KAAAgN,SACAhN,MAGA,YAAAqN,GACAsD,GAAA3Q,KAAAgN,QAAAhN,KAAA0I,KACA8H,GAAAG,EAAA3Q,KAAA4G,OAAA5G,KAAAkD,MAAAX,OACAkO,EAAAzQ,KAAAkD,MAAA2L,IAAA,SAAA9L,EAAA9F,GACA,OAAAkT,KAAAY,OAAA9T,EAAA,GAAAuT,KAGA,IAAAxQ,KAAAkD,MAAAX,OAEAvC,KAAAkD,MAAA,GACA0D,OAAAuJ,KAAAY,MAAAP,GAIAxQ,KAAAkD,MAAAJ,QAAA,SAAAC,EAAA9F,GACA,EAAAA,GACA8F,EAAA2F,MAAA+H,EAAAxT,EAAA,GACA8F,EAAA6D,OAAA6J,EAAAxT,GAAAwT,EAAAxT,EAAA,IAEA8F,EAAA6D,OAAA6J,EAAAxT,MAIA,WAAAoQ,IAEAqD,GAAA1Q,KAAA4G,MAAA+J,GAAA,EACA3Q,KAAAkD,MAAAJ,QAAA,SAAAC,GACAA,EAAA2F,MAAAgI,EAAA1Q,KAAAgN,SACAhN,QAYAoP,cAAA,SAAA4B,EAAAzM,GAMA,iBAAAA,EACAvE,KAAAkQ,eAAA3L,EAAAvE,KAAAqN,kBAGArN,KAAAkQ,eAAAlQ,KAAA4I,gBAAA5I,KAAAqN,mBAWAI,SAAA,WACA,OAAAzN,KAAAkD","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.5\n * Author : nK <https://nkdev.info>\n * GitHub : https://github.com/nk-o/flickr-justified-gallery\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n // no conflict\n\nvar oldPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery;\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = oldPlugin;\n return this;\n}; // jQuery support\n\n\nif (typeof global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"] !== 'undefined') {\n // add data to jQuery .data('fjGallery')\n var oldInit = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init = function () {\n this.jQcontainer = Object(global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"])(this.$container);\n this.jQcontainer.data('fjGallery', this);\n\n if (oldInit) {\n oldInit.call(this);\n }\n }; // remove data from jQuery .data('fjGallery')\n\n\n var oldDestroy = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy = function () {\n if (this.jQcontainer) {\n this.jQcontainer.removeData('fjGallery');\n }\n\n if (oldDestroy) {\n oldDestroy.call(this);\n }\n };\n\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].apply(global__WEBPACK_IMPORTED_MODULE_1__[\"window\"], args);\n return _typeof(res) !== 'object' ? res : this;\n };\n\n jQueryPlugin.constructor = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].constructor; // no conflict\n\n var oldJqPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery;\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = jQueryPlugin;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = oldJqPlugin;\n return this;\n };\n} // .fj-gallery initialization\n\n\nlite_ready__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n Object(_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (callback) {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // Already ready or interactive, execute callback\n callback.call();\n } else if (document.attachEvent) {\n // Old browsers\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'interactive') callback.call();\n });\n } else if (document.addEventListener) {\n // Modern browsers\n document.addEventListener('DOMContentLoaded', callback);\n }\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var raf_schd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(justified_layout__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_5__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n // list with all fjGallery instances\n// need to render all in one scroll/resize event\n\nvar fjGalleryList = [];\n\nfunction updateFjGallery() {\n global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].requestAnimationFrame(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n });\n}\n\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('resize', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('orientationchange', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('load', updateFjGallery);\nlite_ready__WEBPACK_IMPORTED_MODULE_3___default()(function () {\n updateFjGallery();\n}); // get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\n\nfunction getImgDimensions(img, cb) {\n var interval;\n var hasSize = false;\n var addedListeners = false;\n\n var onHasSize = function onHasSize() {\n if (hasSize) {\n cb(hasSize);\n return;\n }\n\n hasSize = {\n width: img.naturalWidth,\n height: img.naturalHeight\n };\n cb(hasSize);\n clearInterval(interval);\n\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n\n var onError = function onError() {\n onHasSize();\n };\n\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\n };\n\n var removeListeners = function removeListeners() {\n addedListeners = false;\n img.removeEventListener('load', onLoaded);\n img.removeEventListener('error', onError);\n };\n\n checkSize();\n\n if (!hasSize) {\n addListeners();\n interval = setInterval(checkSize, 100);\n }\n}\n\nvar instanceID = 0; // fjGallery class\n\nvar fjGallery = /*#__PURE__*/function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n self.instanceID = instanceID++;\n self.$container = container;\n self.images = [];\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10,\n // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25,\n // [0, 1]\n resizeThrottle: 200,\n isRtl: self.css(self.$container, 'direction') === 'rtl',\n // events\n onInit: null,\n // function() {}\n onDestroy: null,\n // function() {}\n onAppendImages: null,\n // function() {}\n onBeforeJustify: null,\n // function() {}\n onJustify: null // function() {}\n\n }; // prepare data-options\n\n var dataOptions = self.$container.dataset || {};\n var pureDataOptions = {};\n Object.keys(dataOptions).forEach(function (key) {\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options); // throttle for resize\n\n self.resize = Object(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__[\"throttle\"])(self.options.resizeThrottle, self.resize);\n self.justify = Object(raf_schd__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(self.justify.bind(self));\n self.init();\n } // add styles to element\n\n\n _createClass(fjGallery, [{\n key: \"css\",\n value: function css(el, styles) {\n if (typeof styles === 'string') {\n return global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].getComputedStyle(el).getPropertyValue(styles);\n } // add transform property with vendor prefix\n\n\n if (styles.transform) {\n styles['-webkit-transform'] = styles.transform;\n }\n\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n return el;\n } // add to fjGallery instances list\n\n }, {\n key: \"addToFjGalleryList\",\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n } // remove from fjGallery instances list\n\n }, {\n key: \"removeFromFjGalleryList\",\n value: function removeFromFjGalleryList() {\n var self = this;\n fjGalleryList.forEach(function (item, key) {\n if (item.instanceID === self.instanceID) {\n fjGalleryList.splice(key, 1);\n }\n });\n }\n }, {\n key: \"init\",\n value: function init() {\n var self = this;\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n self.addToFjGalleryList(); // call onInit event\n\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n } // append images\n\n }, {\n key: \"appendImages\",\n value: function appendImages($images) {\n var self = this; // check if jQuery\n\n if (global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery && $images instanceof global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery) {\n $images = $images.get();\n }\n\n if (!$images || !$images.length) {\n return;\n }\n\n $images.forEach(function ($item) {\n // if $images is jQuery, for some reason in this array there is undefined item, that not a DOM,\n // so we need to check for $item.querySelector.\n if ($item && !$item.fjGalleryImage && $item.querySelector) {\n var $image = $item.querySelector(self.options.imageSelector);\n\n if ($image) {\n $item.fjGalleryImage = self;\n var data = {\n $item: $item,\n $image: $image,\n width: parseFloat($image.getAttribute('width')) || false,\n height: parseFloat($image.getAttribute('height')) || false,\n loadSizes: function loadSizes() {\n var itemData = this;\n getImgDimensions($image, function (dimensions) {\n if (itemData.width !== dimensions.width || itemData.height !== dimensions.height) {\n itemData.width = dimensions.width;\n itemData.height = dimensions.height;\n self.resize();\n }\n });\n }\n };\n data.loadSizes();\n self.images.push(data);\n }\n }\n }); // call onAppendImages event\n\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n } // justify images\n\n }, {\n key: \"justify\",\n value: function justify() {\n var self = this;\n var justifyArray = []; // call onBeforeJustify event\n\n if (self.options.onBeforeJustify) {\n self.options.onBeforeJustify.call(self);\n }\n\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n justifyArray.push(data.width / data.height);\n }\n });\n var justifiedData = justified_layout__WEBPACK_IMPORTED_MODULE_4___default()(justifyArray, {\n containerWidth: self.$container.getBoundingClientRect().width,\n containerPadding: {\n top: parseFloat(self.css(self.$container, 'padding-top')) || 0,\n right: parseFloat(self.css(self.$container, 'padding-right')) || 0,\n bottom: parseFloat(self.css(self.$container, 'padding-bottom')) || 0,\n left: parseFloat(self.css(self.$container, 'padding-left')) || 0\n },\n boxSpacing: self.options.gutter,\n targetRowHeight: self.options.rowHeight,\n targetRowHeightTolerance: self.options.rowHeightTolerance\n });\n self.css(self.$container, {\n height: \"\".concat(justifiedData.containerHeight, \"px\")\n });\n var i = 0;\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n self.css(data.$item, {\n position: 'absolute',\n transform: \"translateX(\".concat((self.options.isRtl ? -1 : 1) * justifiedData.boxes[i].left, \"px) translateY(\").concat(justifiedData.boxes[i].top, \"px) translateZ(0)\"),\n width: \"\".concat(justifiedData.boxes[i].width, \"px\"),\n height: \"\".concat(justifiedData.boxes[i].height, \"px\")\n });\n i++;\n }\n }); // call onJustify event\n\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n } // update options and resize gallery items\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(options) {\n var self = this;\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options, options);\n self.justify();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var self = this;\n self.removeFromFjGalleryList(); // call onDestroy event\n\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n } // remove styles.\n\n\n self.css(self.$container, {\n height: ''\n });\n self.images.forEach(function (data) {\n self.css(data.$item, {\n position: '',\n transform: '',\n width: '',\n height: ''\n });\n }); // delete fjGalleryImage instance from images\n\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n }); // delete fjGallery instance from container\n\n delete self.$container.fjGallery;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n var self = this;\n self.justify();\n }\n }]);\n\n return fjGallery;\n}(); // global definition\n\n\nvar plugin = function plugin(items) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if ((typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && _typeof(items) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n items = [items];\n }\n\n var options = arguments[1];\n var args = Array.prototype.slice.call(arguments, 2);\n var len = items.length;\n var k = 0;\n var ret;\n\n for (k; k < len; k++) {\n if (_typeof(options) === 'object' || typeof options === 'undefined') {\n if (!items[k].fjGallery) {\n // eslint-disable-next-line new-cap\n items[k].fjGallery = new fjGallery(items[k], options);\n }\n } else if (items[k].fjGallery) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].fjGallery[options].apply(items[k].fjGallery, args);\n }\n\n if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\n\nplugin.constructor = fjGallery;\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);\n})(this, function (exports) {\n 'use strict';\n /* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n /**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\n\n function throttle(delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n }\n /* eslint-disable no-undefined */\n\n /**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\n\n function debounce(delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n }\n\n exports.debounce = debounce;\n exports.throttle = throttle;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (rafSchd);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.1\r\n * @author yeikos\r\n * @repository https://github.com/yeikos/js.merge\r\n\r\n * Copyright 2014 yeikos - MIT license\r\n * https://raw.github.com/yeikos/js.merge/master/LICENSE\r\n */\n;\n\n(function (isNode) {\n /**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n var Public = function Public(clone) {\n return merge(clone === true, false, arguments);\n },\n publicName = 'merge';\n /**\r\n * Merge two or more objects recursively \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\n Public.recursive = function (clone) {\n return merge(clone === true, true, arguments);\n };\n /**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\n Public.clone = function (input) {\n var output = input,\n type = typeOf(input),\n index,\n size;\n\n if (type === 'array') {\n output = [];\n size = input.length;\n\n for (index = 0; index < size; ++index) {\n output[index] = Public.clone(input[index]);\n }\n } else if (type === 'object') {\n output = {};\n\n for (index in input) {\n output[index] = Public.clone(input[index]);\n }\n }\n\n return output;\n };\n /**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\n function merge_recursive(base, extend) {\n if (typeOf(base) !== 'object') return extend;\n\n for (var key in extend) {\n if (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n base[key] = merge_recursive(base[key], extend[key]);\n } else {\n base[key] = extend[key];\n }\n }\n\n return base;\n }\n /**\r\n * Merge two or more objects\r\n * @param bool clone\r\n * @param bool recursive\r\n * @param array argv\r\n * @return object\r\n */\n\n\n function merge(clone, recursive, argv) {\n var result = argv[0],\n size = argv.length;\n if (clone || typeOf(result) !== 'object') result = {};\n\n for (var index = 0; index < size; ++index) {\n var item = argv[index],\n type = typeOf(item);\n if (type !== 'object') continue;\n\n for (var key in item) {\n if (key === '__proto__') continue;\n var sitem = clone ? Public.clone(item[key]) : item[key];\n\n if (recursive) {\n result[key] = merge_recursive(result[key], sitem);\n } else {\n result[key] = sitem;\n }\n }\n }\n\n return result;\n }\n /**\r\n * Get type of variable\r\n * @param mixed input\r\n * @return string\r\n *\r\n * @see http://jsperf.com/typeofvar\r\n */\n\n\n function typeOf(input) {\n return {}.toString.call(input).slice(8, -1).toLowerCase();\n }\n\n if (isNode) {\n module.exports = Public;\n } else {\n window[publicName] = Public;\n }\n})(( false ? undefined : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)(module)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\n\nvar merge = __webpack_require__(8),\n Row = __webpack_require__(11);\n/**\n * Create a new, empty row.\n *\n * @method createNewRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @return A new, empty row of the type specified by this layout.\n */\n\n\nfunction createNewRow(layoutConfig, layoutData) {\n var isBreakoutRow; // Work out if this is a full width breakout row\n\n if (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n if ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n isBreakoutRow = true;\n }\n }\n\n return new Row({\n top: layoutData._containerHeight,\n left: layoutConfig.containerPadding.left,\n width: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n spacing: layoutConfig.boxSpacing.horizontal,\n targetRowHeight: layoutConfig.targetRowHeight,\n targetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n edgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n edgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n rightToLeft: false,\n isBreakoutRow: isBreakoutRow,\n widowLayoutStyle: layoutConfig.widowLayoutStyle\n });\n}\n/**\n * Add a completed row to the layout.\n * Note: the row must have already been completed.\n *\n * @method addRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param row {Row} The row to add.\n * @return {Array} Each item added to the row.\n */\n\n\nfunction addRow(layoutConfig, layoutData, row) {\n layoutData._rows.push(row);\n\n layoutData._layoutItems = layoutData._layoutItems.concat(row.getItems()); // Increment the container height\n\n layoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n return row.items;\n}\n/**\n * Calculate the current layout for all items in the list that require layout.\n * \"Layout\" means geometry: position within container and size\n *\n * @method computeLayout\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param itemLayoutData {Array} Array of items to lay out, with data required to lay out each item\n * @return {Object} The newly-calculated layout, containing the new container height, and lists of layout items\n */\n\n\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n var laidOutItems = [],\n itemAdded,\n currentRow,\n nextToLastRowHeight; // Apply forced aspect ratio if specified, and set a flag.\n\n if (layoutConfig.forceAspectRatio) {\n itemLayoutData.forEach(function (itemData) {\n itemData.forcedAspectRatio = true;\n itemData.aspectRatio = layoutConfig.forceAspectRatio;\n });\n } // Loop through the items\n\n\n itemLayoutData.some(function (itemData, i) {\n if (isNaN(itemData.aspectRatio)) {\n throw new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n } // If not currently building up a row, make a new one.\n\n\n if (!currentRow) {\n currentRow = createNewRow(layoutConfig, layoutData);\n } // Attempt to add item to the current row.\n\n\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // Row is filled; add it and start a new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData); // Item was rejected; add it to its own row\n\n if (!itemAdded) {\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // If the rejected item fills a row on its own, add the row and start another new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData);\n }\n }\n }\n }); // Handle any leftover content (orphans) depending on where they lie\n // in this layout update, and in the total content set.\n\n if (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n // Last page of all content or orphan suppression is suppressed; lay out orphans.\n if (layoutData._rows.length) {\n // Only Match previous row's height if it exists and it isn't a breakout row\n if (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n } else {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n }\n\n currentRow.forceComplete(false, nextToLastRowHeight);\n } else {\n // ...else use target height if there is no other row height to reference.\n currentRow.forceComplete(false);\n }\n\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n layoutConfig._widowCount = currentRow.getItems().length;\n } // We need to clean up the bottom container padding\n // First remove the height added for box spacing\n\n\n layoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical; // Then add our bottom container padding\n\n layoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n return {\n containerHeight: layoutData._containerHeight,\n widowCount: layoutConfig._widowCount,\n boxes: layoutData._layoutItems\n };\n}\n/**\n * Takes in a bunch of box data and config. Returns\n * geometry to lay them out in a justified view.\n *\n * @method covertSizesToAspectRatios\n * @param sizes {Array} Array of objects with widths and heights\n * @return {Array} A list of aspect ratios\n */\n\n\nmodule.exports = function (input, config) {\n var layoutConfig = {};\n var layoutData = {}; // Defaults\n\n var defaults = {\n containerWidth: 1060,\n containerPadding: 10,\n boxSpacing: 10,\n targetRowHeight: 320,\n targetRowHeightTolerance: 0.25,\n maxNumRows: Number.POSITIVE_INFINITY,\n forceAspectRatio: false,\n showWidows: true,\n fullWidthBreakoutRowCadence: false,\n widowLayoutStyle: 'left'\n };\n var containerPadding = {};\n var boxSpacing = {};\n config = config || {}; // Merge defaults and config passed in\n\n layoutConfig = merge(defaults, config); // Sort out padding and spacing values\n\n containerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n containerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n containerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n containerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n boxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n boxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n layoutConfig.containerPadding = containerPadding;\n layoutConfig.boxSpacing = boxSpacing; // Local\n\n layoutData._layoutItems = [];\n layoutData._awakeItems = [];\n layoutData._inViewportItems = [];\n layoutData._leadingOrphans = [];\n layoutData._trailingOrphans = [];\n layoutData._containerHeight = layoutConfig.containerPadding.top;\n layoutData._rows = [];\n layoutData._orphans = [];\n layoutConfig._widowCount = 0; // Convert widths and heights to aspect ratios if we need to\n\n return computeLayout(layoutConfig, layoutData, input.map(function (item) {\n if (item.width && item.height) {\n return {\n aspectRatio: item.width / item.height\n };\n } else {\n return {\n aspectRatio: item\n };\n }\n }));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\nvar merge = __webpack_require__(8);\n/**\n * Row\n * Wrapper for each row in a justified layout.\n * Stores relevant values and provides methods for calculating layout of individual rows.\n *\n * @param {Object} layoutConfig - The same as that passed\n * @param {Object} Initialization parameters. The following are all required:\n * @param params.top {Number} Top of row, relative to container\n * @param params.left {Number} Left side of row relative to container (equal to container left padding)\n * @param params.width {Number} Width of row, not including container padding\n * @param params.spacing {Number} Horizontal spacing between items\n * @param params.targetRowHeight {Number} Layout algorithm will aim for this row height\n * @param params.targetRowHeightTolerance {Number} Row heights may vary +/- (`targetRowHeight` x `targetRowHeightTolerance`)\n * @param params.edgeCaseMinRowHeight {Number} Absolute minimum row height for edge cases that cannot be resolved within tolerance.\n * @param params.edgeCaseMaxRowHeight {Number} Absolute maximum row height for edge cases that cannot be resolved within tolerance.\n * @param params.isBreakoutRow {Boolean} Is this row in particular one of those breakout rows? Always false if it's not that kind of photo list\n * @param params.widowLayoutStyle {String} If widows are visible, how should they be laid out?\n * @constructor\n */\n\n\nvar Row = module.exports = function (params) {\n // Top of row, relative to container\n this.top = params.top; // Left side of row relative to container (equal to container left padding)\n\n this.left = params.left; // Width of row, not including container padding\n\n this.width = params.width; // Horizontal spacing between items\n\n this.spacing = params.spacing; // Row height calculation values\n\n this.targetRowHeight = params.targetRowHeight;\n this.targetRowHeightTolerance = params.targetRowHeightTolerance;\n this.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n this.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance); // Edge case row height minimum/maximum\n\n this.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n this.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight; // Widow layout direction\n\n this.widowLayoutStyle = params.widowLayoutStyle; // Full width breakout rows\n\n this.isBreakoutRow = params.isBreakoutRow; // Store layout data for each item in row\n\n this.items = []; // Height remains at 0 until it's been calculated\n\n this.height = 0;\n};\n\nRow.prototype = {\n /**\n * Attempt to add a single item to the row.\n * This is the heart of the justified algorithm.\n * This method is direction-agnostic; it deals only with sizes, not positions.\n *\n * If the item fits in the row, without pushing row height beyond min/max tolerance,\n * the item is added and the method returns true.\n *\n * If the item leaves row height too high, there may be room to scale it down and add another item.\n * In this case, the item is added and the method returns true, but the row is incomplete.\n *\n * If the item leaves row height too short, there are too many items to fit within tolerance.\n * The method will either accept or reject the new item, favoring the resulting row height closest to within tolerance.\n * If the item is rejected, left/right padding will be required to fit the row height within tolerance;\n * if the item is accepted, top/bottom cropping will be required to fit the row height within tolerance.\n *\n * @method addItem\n * @param itemData {Object} Item layout data, containing item aspect ratio.\n * @return {Boolean} True if successfully added; false if rejected.\n */\n addItem: function addItem(itemData) {\n var newItems = this.items.concat(itemData),\n // Calculate aspect ratios for items only; exclude spacing\n rowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n newAspectRatio = newItems.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0),\n targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n previousRowWidthWithoutSpacing,\n previousAspectRatio,\n previousTargetAspectRatio; // Handle big full-width breakout photos if we're doing them\n\n if (this.isBreakoutRow) {\n // Only do it if there's no other items in this row\n if (this.items.length === 0) {\n // Only go full width if this photo is a square or landscape\n if (itemData.aspectRatio >= 1) {\n // Close out the row with a full width photo\n this.items.push(itemData);\n this.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n return true;\n }\n }\n }\n\n if (newAspectRatio < this.minAspectRatio) {\n // New aspect ratio is too narrow / scaled row height is too tall.\n // Accept this item and leave row open for more items.\n this.items.push(merge(itemData));\n return true;\n } else if (newAspectRatio > this.maxAspectRatio) {\n // New aspect ratio is too wide / scaled row height will be too short.\n // Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n // NOTE: Any row that falls into this block will require cropping/padding on individual items.\n if (this.items.length === 0) {\n // When there are no existing items, force acceptance of the new item and complete the layout.\n // This is the pano special case.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n } // Calculate width/aspect ratio for row before adding new item\n\n\n previousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n previousAspectRatio = this.items.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0);\n previousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n if (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n // Row with new item is us farther away from target than row without; complete layout and reject item.\n this.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n return false;\n } else {\n // Row with new item is us closer to target than row without;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n } else {\n // New aspect ratio / scaled row height is within tolerance;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n },\n\n /**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n isLayoutComplete: function isLayoutComplete() {\n return this.height > 0;\n },\n\n /**\n * Set row height and compute item geometry from that height.\n * Will justify items within the row unless instructed not to.\n *\n * @method completeLayout\n * @param newHeight {Number} Set row height to this value.\n * @param widowLayoutStyle {String} How should widows display? Supported: left | justify | center\n */\n completeLayout: function completeLayout(newHeight, widowLayoutStyle) {\n var itemWidthSum = this.left,\n rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n clampedToNativeRatio,\n clampedHeight,\n errorWidthPerItem,\n roundedCumulativeErrors,\n singleItemGeometry,\n centerOffset; // Justify unless explicitly specified otherwise.\n\n if (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n widowLayoutStyle = 'left';\n } // Clamp row height to edge case minimum/maximum.\n\n\n clampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n if (newHeight !== clampedHeight) {\n // If row height was clamped, the resulting row/item aspect ratio will be off,\n // so force it to fit the width (recalculate aspectRatio to match clamped height).\n // NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n this.height = clampedHeight;\n clampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n } else {\n // If not clamped, leave ratio at 1.0.\n this.height = newHeight;\n clampedToNativeRatio = 1.0;\n } // Compute item geometry based on newHeight.\n\n\n this.items.forEach(function (item) {\n item.top = this.top;\n item.width = item.aspectRatio * this.height * clampedToNativeRatio;\n item.height = this.height; // Left-to-right.\n // TODO right to left\n // item.left = this.width - itemWidthSum - item.width;\n\n item.left = itemWidthSum; // Increment width.\n\n itemWidthSum += item.width + this.spacing;\n }, this); // If specified, ensure items fill row and distribute error\n // caused by rounding width and height across all items.\n\n if (widowLayoutStyle === 'justify') {\n itemWidthSum -= this.spacing + this.left;\n errorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n roundedCumulativeErrors = this.items.map(function (item, i) {\n return Math.round((i + 1) * errorWidthPerItem);\n });\n\n if (this.items.length === 1) {\n // For rows with only one item, adjust item width to fill row.\n singleItemGeometry = this.items[0];\n singleItemGeometry.width -= Math.round(errorWidthPerItem);\n } else {\n // For rows with multiple items, adjust item width and shift items to fill the row,\n // while maintaining equal spacing between items in the row.\n this.items.forEach(function (item, i) {\n if (i > 0) {\n item.left -= roundedCumulativeErrors[i - 1];\n item.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n } else {\n item.width -= roundedCumulativeErrors[i];\n }\n });\n }\n } else if (widowLayoutStyle === 'center') {\n // Center widows\n centerOffset = (this.width - itemWidthSum) / 2;\n this.items.forEach(function (item) {\n item.left += centerOffset + this.spacing;\n }, this);\n }\n },\n\n /**\n * Force completion of row layout with current items.\n *\n * @method forceComplete\n * @param fitToWidth {Boolean} Stretch current items to fill the row width.\n * This will likely result in padding.\n * @param fitToWidth {Number}\n */\n forceComplete: function forceComplete(fitToWidth, rowHeight) {\n // TODO Handle fitting to width\n // var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n // \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n // \t\treturn sum + item.aspectRatio;\n // \t}, 0);\n if (typeof rowHeight === 'number') {\n this.completeLayout(rowHeight, this.widowLayoutStyle);\n } else {\n // Complete using target row height.\n this.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n }\n },\n\n /**\n * Return layout data for items within row.\n * Note: returns actual list, not a copy.\n *\n * @method getItems\n * @return Layout data for items within row.\n */\n getItems: function getItems() {\n return this.items;\n }\n};\n\n/***/ })\n/******/ ]);"]}
1
+ {"version":3,"sources":["fjGallery.js"],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","lite_ready__WEBPACK_IMPORTED_MODULE_0__","lite_ready__WEBPACK_IMPORTED_MODULE_0___default","global__WEBPACK_IMPORTED_MODULE_1__","_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__","_typeof","obj","iterator","constructor","oldInit","oldDestroy","jQueryPlugin","oldJqPlugin","oldPlugin","fjGallery","noConflict","this","init","jQcontainer","$container","data","destroy","removeData","args","arguments","Array","unshift","res","apply","fn","document","querySelectorAll","callback","readyState","attachEvent","addEventListener","global","win","window","self","g","Function","e","throttle_debounce__WEBPACK_IMPORTED_MODULE_0__","raf_schd__WEBPACK_IMPORTED_MODULE_1__","merge__WEBPACK_IMPORTED_MODULE_2__","merge__WEBPACK_IMPORTED_MODULE_2___default","lite_ready__WEBPACK_IMPORTED_MODULE_3__","lite_ready__WEBPACK_IMPORTED_MODULE_3___default","justified_layout__WEBPACK_IMPORTED_MODULE_4__","justified_layout__WEBPACK_IMPORTED_MODULE_4___default","global__WEBPACK_IMPORTED_MODULE_5__","_defineProperties","target","props","length","descriptor","configurable","writable","fjGalleryList","updateFjGallery","forEach","item","resize","plugin","items","HTMLElement","nodeType","nodeName","ret","options","slice","len","k","instanceID","container","userOptions","instance","Constructor","TypeError","_classCallCheck","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","calculateItemsHeight","resizeDebounce","isRtl","css","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","toLowerCase","resizeThrottle","console","warning","pureOptions","justify","protoProps","staticProps","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","jQuery","$item","$image","fjGalleryImage","querySelector","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","removeListeners","itemData","onHasSize","naturalWidth","naturalHeight","clearInterval","onLoaded","onError","checkSize","dimensions","removeEventListener","setInterval","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","additionalTopOffset","rowsMaxHeight","imgI","rect","boxes","pop","position","concat","containerHeight","removeFromFjGalleryList","val","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","throttle","delay","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","Date","now","exec","undefined","setTimeout","cancel","debounce","atBegin","wrapperFn","lastArgs","frameId","requestAnimationFrame","cancelAnimationFrame","merge","clone","recursive","argv","result","size","typeOf","index","sitem","Public","merge_recursive","base","extend","input","toString","isNode","output","type","webpackPolyfill","deprecate","paths","children","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","Number","POSITIVE_INFINITY","forceAspectRatio","showWidows","isNaN","_awakeItems","_inViewportItems","_leadingOrphans","_trailingOrphans","_orphans","_widowCount","map","aspectRatio","forcedAspectRatio","some","Error","addItem","isLayoutComplete","forceComplete","widowCount","params","minAspectRatio","maxAspectRatio","previousRowWidthWithoutSpacing","previousAspectRatio","previousTargetAspectRatio","newItems","rowWidthWithoutSpacing","newAspectRatio","reduce","sum","targetAspectRatio","completeLayout","Math","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","max","min","round","fitToWidth"],"mappings":"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","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.7\n * Author : nK <https://nkdev.info>\n * GitHub : https://github.com/nk-o/flickr-justified-gallery\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n // no conflict\n\nvar oldPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery;\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = oldPlugin;\n return this;\n}; // jQuery support\n\n\nif (typeof global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"] !== 'undefined') {\n // add data to jQuery .data('fjGallery')\n var oldInit = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init = function () {\n this.jQcontainer = Object(global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"])(this.$container);\n this.jQcontainer.data('fjGallery', this);\n\n if (oldInit) {\n oldInit.call(this);\n }\n }; // remove data from jQuery .data('fjGallery')\n\n\n var oldDestroy = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy = function () {\n if (this.jQcontainer) {\n this.jQcontainer.removeData('fjGallery');\n }\n\n if (oldDestroy) {\n oldDestroy.call(this);\n }\n };\n\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].apply(global__WEBPACK_IMPORTED_MODULE_1__[\"window\"], args);\n return _typeof(res) !== 'object' ? res : this;\n };\n\n jQueryPlugin.constructor = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].constructor; // no conflict\n\n var oldJqPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery;\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = jQueryPlugin;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = oldJqPlugin;\n return this;\n };\n} // .fj-gallery initialization\n\n\nlite_ready__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n Object(_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (callback) {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // Already ready or interactive, execute callback\n callback.call();\n } else if (document.attachEvent) {\n // Old browsers\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'interactive') callback.call();\n });\n } else if (document.addEventListener) {\n // Modern browsers\n document.addEventListener('DOMContentLoaded', callback);\n }\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var raf_schd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(justified_layout__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_5__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n // list with all fjGallery instances\n// need to render all in one scroll/resize event\n\nvar fjGalleryList = [];\nvar updateFjGallery = Object(raf_schd__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n});\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('resize', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('orientationchange', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('load', updateFjGallery);\nlite_ready__WEBPACK_IMPORTED_MODULE_3___default()(function () {\n updateFjGallery();\n}); // get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\n\nfunction getImgDimensions(img, cb) {\n var interval;\n var hasSize = false;\n var addedListeners = false;\n\n var onHasSize = function onHasSize() {\n if (hasSize) {\n cb(hasSize);\n return;\n }\n\n hasSize = {\n width: img.naturalWidth,\n height: img.naturalHeight\n };\n cb(hasSize);\n clearInterval(interval);\n\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n\n var onError = function onError() {\n onHasSize();\n };\n\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\n };\n\n var removeListeners = function removeListeners() {\n addedListeners = false;\n img.removeEventListener('load', onLoaded);\n img.removeEventListener('error', onError);\n };\n\n checkSize();\n\n if (!hasSize) {\n addListeners();\n interval = setInterval(checkSize, 100);\n }\n}\n\nvar instanceID = 0; // fjGallery class\n\nvar fjGallery = /*#__PURE__*/function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n self.instanceID = instanceID++;\n self.$container = container;\n self.images = [];\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10,\n // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25,\n // [0, 1]\n calculateItemsHeight: false,\n resizeDebounce: 100,\n isRtl: self.css(self.$container, 'direction') === 'rtl',\n // events\n onInit: null,\n // function() {}\n onDestroy: null,\n // function() {}\n onAppendImages: null,\n // function() {}\n onBeforeJustify: null,\n // function() {}\n onJustify: null // function() {}\n\n }; // prepare data-options\n\n var dataOptions = self.$container.dataset || {};\n var pureDataOptions = {};\n Object.keys(dataOptions).forEach(function (key) {\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.defaults, pureDataOptions, userOptions); // deprecated resizeThrottle option.\n\n if (typeof self.options.resizeThrottle !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warning('`resizeThrottle` option is deprecated, use `resizeDebounce` instead');\n self.options.resizeDebounce = self.options.resizeThrottle;\n }\n\n self.pureOptions = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options); // debounce for resize\n\n self.resize = Object(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(self.options.resizeDebounce, self.resize);\n self.justify = Object(raf_schd__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(self.justify.bind(self));\n self.init();\n } // add styles to element\n\n\n _createClass(fjGallery, [{\n key: \"css\",\n value: function css(el, styles) {\n if (typeof styles === 'string') {\n return global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].getComputedStyle(el).getPropertyValue(styles);\n } // add transform property with vendor prefix\n\n\n if (styles.transform) {\n styles['-webkit-transform'] = styles.transform;\n }\n\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n return el;\n } // add to fjGallery instances list\n\n }, {\n key: \"addToFjGalleryList\",\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n } // remove from fjGallery instances list\n\n }, {\n key: \"removeFromFjGalleryList\",\n value: function removeFromFjGalleryList() {\n var self = this;\n fjGalleryList.forEach(function (item, key) {\n if (item.instanceID === self.instanceID) {\n fjGalleryList.splice(key, 1);\n }\n });\n }\n }, {\n key: \"init\",\n value: function init() {\n var self = this;\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n self.addToFjGalleryList(); // call onInit event\n\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n } // append images\n\n }, {\n key: \"appendImages\",\n value: function appendImages($images) {\n var self = this; // check if jQuery\n\n if (global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery && $images instanceof global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery) {\n $images = $images.get();\n }\n\n if (!$images || !$images.length) {\n return;\n }\n\n $images.forEach(function ($item) {\n // if $images is jQuery, for some reason in this array there is undefined item, that not a DOM,\n // so we need to check for $item.querySelector.\n if ($item && !$item.fjGalleryImage && $item.querySelector) {\n var $image = $item.querySelector(self.options.imageSelector);\n\n if ($image) {\n $item.fjGalleryImage = self;\n var data = {\n $item: $item,\n $image: $image,\n width: parseFloat($image.getAttribute('width')) || false,\n height: parseFloat($image.getAttribute('height')) || false,\n loadSizes: function loadSizes() {\n var itemData = this;\n getImgDimensions($image, function (dimensions) {\n if (itemData.width !== dimensions.width || itemData.height !== dimensions.height) {\n itemData.width = dimensions.width;\n itemData.height = dimensions.height;\n self.resize();\n }\n });\n }\n };\n data.loadSizes();\n self.images.push(data);\n }\n }\n }); // call onAppendImages event\n\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n } // justify images\n\n }, {\n key: \"justify\",\n value: function justify() {\n var self = this;\n var justifyArray = []; // call onBeforeJustify event\n\n if (self.options.onBeforeJustify) {\n self.options.onBeforeJustify.call(self);\n }\n\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n justifyArray.push(data.width / data.height);\n }\n });\n var justifiedData = justified_layout__WEBPACK_IMPORTED_MODULE_4___default()(justifyArray, {\n containerWidth: self.$container.getBoundingClientRect().width,\n containerPadding: {\n top: parseFloat(self.css(self.$container, 'padding-top')) || 0,\n right: parseFloat(self.css(self.$container, 'padding-right')) || 0,\n bottom: parseFloat(self.css(self.$container, 'padding-bottom')) || 0,\n left: parseFloat(self.css(self.$container, 'padding-left')) || 0\n },\n boxSpacing: self.options.gutter,\n targetRowHeight: self.options.rowHeight,\n targetRowHeightTolerance: self.options.rowHeightTolerance\n });\n var i = 0;\n var additionalTopOffset = 0;\n var rowsMaxHeight = {}; // Set image sizes.\n\n self.images.forEach(function (data, imgI) {\n if (data.width && data.height) {\n // calculate additional offset based on actual items height.\n if (self.options.calculateItemsHeight && typeof rowsMaxHeight[justifiedData.boxes[i].top] === 'undefined' && Object.keys(rowsMaxHeight).length) {\n additionalTopOffset += rowsMaxHeight[Object.keys(rowsMaxHeight).pop()] - justifiedData.boxes[imgI - 1].height;\n }\n\n self.css(data.$item, {\n position: 'absolute',\n transform: \"translateX(\".concat((self.options.isRtl ? -1 : 1) * justifiedData.boxes[i].left, \"px) translateY(\").concat(justifiedData.boxes[i].top + additionalTopOffset, \"px) translateZ(0)\"),\n width: \"\".concat(justifiedData.boxes[i].width, \"px\")\n }); // calculate actual items height.\n\n if (self.options.calculateItemsHeight) {\n var rect = data.$item.getBoundingClientRect();\n\n if (typeof rowsMaxHeight[justifiedData.boxes[i].top] === 'undefined' || rowsMaxHeight[justifiedData.boxes[i].top] < rect.height) {\n rowsMaxHeight[justifiedData.boxes[i].top] = rect.height;\n }\n }\n\n i++;\n }\n }); // increase additional offset based on the latest row items height.\n\n if (self.options.calculateItemsHeight && Object.keys(rowsMaxHeight).length) {\n additionalTopOffset += rowsMaxHeight[Object.keys(rowsMaxHeight).pop()] - justifiedData.boxes[justifiedData.boxes.length - 1].height;\n } // Set container height.\n\n\n self.css(self.$container, {\n height: \"\".concat(justifiedData.containerHeight + additionalTopOffset, \"px\")\n }); // call onJustify event\n\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n } // update options and resize gallery items\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(options) {\n var self = this;\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options, options);\n self.justify();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var self = this;\n self.removeFromFjGalleryList(); // call onDestroy event\n\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n } // remove styles.\n\n\n self.css(self.$container, {\n height: ''\n });\n self.images.forEach(function (data) {\n self.css(data.$item, {\n position: '',\n transform: '',\n width: '',\n height: ''\n });\n }); // delete fjGalleryImage instance from images\n\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n }); // delete fjGallery instance from container\n\n delete self.$container.fjGallery;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n var self = this;\n self.justify();\n }\n }]);\n\n return fjGallery;\n}(); // global definition\n\n\nvar plugin = function plugin(items) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if ((typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && _typeof(items) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n items = [items];\n }\n\n var options = arguments[1];\n var args = Array.prototype.slice.call(arguments, 2);\n var len = items.length;\n var k = 0;\n var ret;\n\n for (k; k < len; k++) {\n if (_typeof(options) === 'object' || typeof options === 'undefined') {\n if (!items[k].fjGallery) {\n // eslint-disable-next-line new-cap\n items[k].fjGallery = new fjGallery(items[k], options);\n }\n } else if (items[k].fjGallery) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].fjGallery[options].apply(items[k].fjGallery, args);\n }\n\n if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\n\nplugin.constructor = fjGallery;\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);\n})(this, function (exports) {\n 'use strict';\n /* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n /**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\n\n function throttle(delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n }\n /* eslint-disable no-undefined */\n\n /**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\n\n function debounce(delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n }\n\n exports.debounce = debounce;\n exports.throttle = throttle;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (rafSchd);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.1\r\n * @author yeikos\r\n * @repository https://github.com/yeikos/js.merge\r\n\r\n * Copyright 2014 yeikos - MIT license\r\n * https://raw.github.com/yeikos/js.merge/master/LICENSE\r\n */\n;\n\n(function (isNode) {\n /**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n var Public = function Public(clone) {\n return merge(clone === true, false, arguments);\n },\n publicName = 'merge';\n /**\r\n * Merge two or more objects recursively \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\n Public.recursive = function (clone) {\n return merge(clone === true, true, arguments);\n };\n /**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\n Public.clone = function (input) {\n var output = input,\n type = typeOf(input),\n index,\n size;\n\n if (type === 'array') {\n output = [];\n size = input.length;\n\n for (index = 0; index < size; ++index) {\n output[index] = Public.clone(input[index]);\n }\n } else if (type === 'object') {\n output = {};\n\n for (index in input) {\n output[index] = Public.clone(input[index]);\n }\n }\n\n return output;\n };\n /**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\n function merge_recursive(base, extend) {\n if (typeOf(base) !== 'object') return extend;\n\n for (var key in extend) {\n if (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n base[key] = merge_recursive(base[key], extend[key]);\n } else {\n base[key] = extend[key];\n }\n }\n\n return base;\n }\n /**\r\n * Merge two or more objects\r\n * @param bool clone\r\n * @param bool recursive\r\n * @param array argv\r\n * @return object\r\n */\n\n\n function merge(clone, recursive, argv) {\n var result = argv[0],\n size = argv.length;\n if (clone || typeOf(result) !== 'object') result = {};\n\n for (var index = 0; index < size; ++index) {\n var item = argv[index],\n type = typeOf(item);\n if (type !== 'object') continue;\n\n for (var key in item) {\n if (key === '__proto__') continue;\n var sitem = clone ? Public.clone(item[key]) : item[key];\n\n if (recursive) {\n result[key] = merge_recursive(result[key], sitem);\n } else {\n result[key] = sitem;\n }\n }\n }\n\n return result;\n }\n /**\r\n * Get type of variable\r\n * @param mixed input\r\n * @return string\r\n *\r\n * @see http://jsperf.com/typeofvar\r\n */\n\n\n function typeOf(input) {\n return {}.toString.call(input).slice(8, -1).toLowerCase();\n }\n\n if (isNode) {\n module.exports = Public;\n } else {\n window[publicName] = Public;\n }\n})(( false ? undefined : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)(module)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\n\nvar merge = __webpack_require__(8),\n Row = __webpack_require__(11);\n/**\n * Create a new, empty row.\n *\n * @method createNewRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @return A new, empty row of the type specified by this layout.\n */\n\n\nfunction createNewRow(layoutConfig, layoutData) {\n var isBreakoutRow; // Work out if this is a full width breakout row\n\n if (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n if ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n isBreakoutRow = true;\n }\n }\n\n return new Row({\n top: layoutData._containerHeight,\n left: layoutConfig.containerPadding.left,\n width: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n spacing: layoutConfig.boxSpacing.horizontal,\n targetRowHeight: layoutConfig.targetRowHeight,\n targetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n edgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n edgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n rightToLeft: false,\n isBreakoutRow: isBreakoutRow,\n widowLayoutStyle: layoutConfig.widowLayoutStyle\n });\n}\n/**\n * Add a completed row to the layout.\n * Note: the row must have already been completed.\n *\n * @method addRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param row {Row} The row to add.\n * @return {Array} Each item added to the row.\n */\n\n\nfunction addRow(layoutConfig, layoutData, row) {\n layoutData._rows.push(row);\n\n layoutData._layoutItems = layoutData._layoutItems.concat(row.getItems()); // Increment the container height\n\n layoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n return row.items;\n}\n/**\n * Calculate the current layout for all items in the list that require layout.\n * \"Layout\" means geometry: position within container and size\n *\n * @method computeLayout\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param itemLayoutData {Array} Array of items to lay out, with data required to lay out each item\n * @return {Object} The newly-calculated layout, containing the new container height, and lists of layout items\n */\n\n\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n var laidOutItems = [],\n itemAdded,\n currentRow,\n nextToLastRowHeight; // Apply forced aspect ratio if specified, and set a flag.\n\n if (layoutConfig.forceAspectRatio) {\n itemLayoutData.forEach(function (itemData) {\n itemData.forcedAspectRatio = true;\n itemData.aspectRatio = layoutConfig.forceAspectRatio;\n });\n } // Loop through the items\n\n\n itemLayoutData.some(function (itemData, i) {\n if (isNaN(itemData.aspectRatio)) {\n throw new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n } // If not currently building up a row, make a new one.\n\n\n if (!currentRow) {\n currentRow = createNewRow(layoutConfig, layoutData);\n } // Attempt to add item to the current row.\n\n\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // Row is filled; add it and start a new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData); // Item was rejected; add it to its own row\n\n if (!itemAdded) {\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // If the rejected item fills a row on its own, add the row and start another new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData);\n }\n }\n }\n }); // Handle any leftover content (orphans) depending on where they lie\n // in this layout update, and in the total content set.\n\n if (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n // Last page of all content or orphan suppression is suppressed; lay out orphans.\n if (layoutData._rows.length) {\n // Only Match previous row's height if it exists and it isn't a breakout row\n if (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n } else {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n }\n\n currentRow.forceComplete(false, nextToLastRowHeight);\n } else {\n // ...else use target height if there is no other row height to reference.\n currentRow.forceComplete(false);\n }\n\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n layoutConfig._widowCount = currentRow.getItems().length;\n } // We need to clean up the bottom container padding\n // First remove the height added for box spacing\n\n\n layoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical; // Then add our bottom container padding\n\n layoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n return {\n containerHeight: layoutData._containerHeight,\n widowCount: layoutConfig._widowCount,\n boxes: layoutData._layoutItems\n };\n}\n/**\n * Takes in a bunch of box data and config. Returns\n * geometry to lay them out in a justified view.\n *\n * @method covertSizesToAspectRatios\n * @param sizes {Array} Array of objects with widths and heights\n * @return {Array} A list of aspect ratios\n */\n\n\nmodule.exports = function (input, config) {\n var layoutConfig = {};\n var layoutData = {}; // Defaults\n\n var defaults = {\n containerWidth: 1060,\n containerPadding: 10,\n boxSpacing: 10,\n targetRowHeight: 320,\n targetRowHeightTolerance: 0.25,\n maxNumRows: Number.POSITIVE_INFINITY,\n forceAspectRatio: false,\n showWidows: true,\n fullWidthBreakoutRowCadence: false,\n widowLayoutStyle: 'left'\n };\n var containerPadding = {};\n var boxSpacing = {};\n config = config || {}; // Merge defaults and config passed in\n\n layoutConfig = merge(defaults, config); // Sort out padding and spacing values\n\n containerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n containerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n containerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n containerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n boxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n boxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n layoutConfig.containerPadding = containerPadding;\n layoutConfig.boxSpacing = boxSpacing; // Local\n\n layoutData._layoutItems = [];\n layoutData._awakeItems = [];\n layoutData._inViewportItems = [];\n layoutData._leadingOrphans = [];\n layoutData._trailingOrphans = [];\n layoutData._containerHeight = layoutConfig.containerPadding.top;\n layoutData._rows = [];\n layoutData._orphans = [];\n layoutConfig._widowCount = 0; // Convert widths and heights to aspect ratios if we need to\n\n return computeLayout(layoutConfig, layoutData, input.map(function (item) {\n if (item.width && item.height) {\n return {\n aspectRatio: item.width / item.height\n };\n } else {\n return {\n aspectRatio: item\n };\n }\n }));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\nvar merge = __webpack_require__(8);\n/**\n * Row\n * Wrapper for each row in a justified layout.\n * Stores relevant values and provides methods for calculating layout of individual rows.\n *\n * @param {Object} layoutConfig - The same as that passed\n * @param {Object} Initialization parameters. The following are all required:\n * @param params.top {Number} Top of row, relative to container\n * @param params.left {Number} Left side of row relative to container (equal to container left padding)\n * @param params.width {Number} Width of row, not including container padding\n * @param params.spacing {Number} Horizontal spacing between items\n * @param params.targetRowHeight {Number} Layout algorithm will aim for this row height\n * @param params.targetRowHeightTolerance {Number} Row heights may vary +/- (`targetRowHeight` x `targetRowHeightTolerance`)\n * @param params.edgeCaseMinRowHeight {Number} Absolute minimum row height for edge cases that cannot be resolved within tolerance.\n * @param params.edgeCaseMaxRowHeight {Number} Absolute maximum row height for edge cases that cannot be resolved within tolerance.\n * @param params.isBreakoutRow {Boolean} Is this row in particular one of those breakout rows? Always false if it's not that kind of photo list\n * @param params.widowLayoutStyle {String} If widows are visible, how should they be laid out?\n * @constructor\n */\n\n\nvar Row = module.exports = function (params) {\n // Top of row, relative to container\n this.top = params.top; // Left side of row relative to container (equal to container left padding)\n\n this.left = params.left; // Width of row, not including container padding\n\n this.width = params.width; // Horizontal spacing between items\n\n this.spacing = params.spacing; // Row height calculation values\n\n this.targetRowHeight = params.targetRowHeight;\n this.targetRowHeightTolerance = params.targetRowHeightTolerance;\n this.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n this.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance); // Edge case row height minimum/maximum\n\n this.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n this.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight; // Widow layout direction\n\n this.widowLayoutStyle = params.widowLayoutStyle; // Full width breakout rows\n\n this.isBreakoutRow = params.isBreakoutRow; // Store layout data for each item in row\n\n this.items = []; // Height remains at 0 until it's been calculated\n\n this.height = 0;\n};\n\nRow.prototype = {\n /**\n * Attempt to add a single item to the row.\n * This is the heart of the justified algorithm.\n * This method is direction-agnostic; it deals only with sizes, not positions.\n *\n * If the item fits in the row, without pushing row height beyond min/max tolerance,\n * the item is added and the method returns true.\n *\n * If the item leaves row height too high, there may be room to scale it down and add another item.\n * In this case, the item is added and the method returns true, but the row is incomplete.\n *\n * If the item leaves row height too short, there are too many items to fit within tolerance.\n * The method will either accept or reject the new item, favoring the resulting row height closest to within tolerance.\n * If the item is rejected, left/right padding will be required to fit the row height within tolerance;\n * if the item is accepted, top/bottom cropping will be required to fit the row height within tolerance.\n *\n * @method addItem\n * @param itemData {Object} Item layout data, containing item aspect ratio.\n * @return {Boolean} True if successfully added; false if rejected.\n */\n addItem: function addItem(itemData) {\n var newItems = this.items.concat(itemData),\n // Calculate aspect ratios for items only; exclude spacing\n rowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n newAspectRatio = newItems.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0),\n targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n previousRowWidthWithoutSpacing,\n previousAspectRatio,\n previousTargetAspectRatio; // Handle big full-width breakout photos if we're doing them\n\n if (this.isBreakoutRow) {\n // Only do it if there's no other items in this row\n if (this.items.length === 0) {\n // Only go full width if this photo is a square or landscape\n if (itemData.aspectRatio >= 1) {\n // Close out the row with a full width photo\n this.items.push(itemData);\n this.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n return true;\n }\n }\n }\n\n if (newAspectRatio < this.minAspectRatio) {\n // New aspect ratio is too narrow / scaled row height is too tall.\n // Accept this item and leave row open for more items.\n this.items.push(merge(itemData));\n return true;\n } else if (newAspectRatio > this.maxAspectRatio) {\n // New aspect ratio is too wide / scaled row height will be too short.\n // Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n // NOTE: Any row that falls into this block will require cropping/padding on individual items.\n if (this.items.length === 0) {\n // When there are no existing items, force acceptance of the new item and complete the layout.\n // This is the pano special case.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n } // Calculate width/aspect ratio for row before adding new item\n\n\n previousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n previousAspectRatio = this.items.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0);\n previousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n if (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n // Row with new item is us farther away from target than row without; complete layout and reject item.\n this.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n return false;\n } else {\n // Row with new item is us closer to target than row without;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n } else {\n // New aspect ratio / scaled row height is within tolerance;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n },\n\n /**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n isLayoutComplete: function isLayoutComplete() {\n return this.height > 0;\n },\n\n /**\n * Set row height and compute item geometry from that height.\n * Will justify items within the row unless instructed not to.\n *\n * @method completeLayout\n * @param newHeight {Number} Set row height to this value.\n * @param widowLayoutStyle {String} How should widows display? Supported: left | justify | center\n */\n completeLayout: function completeLayout(newHeight, widowLayoutStyle) {\n var itemWidthSum = this.left,\n rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n clampedToNativeRatio,\n clampedHeight,\n errorWidthPerItem,\n roundedCumulativeErrors,\n singleItemGeometry,\n centerOffset; // Justify unless explicitly specified otherwise.\n\n if (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n widowLayoutStyle = 'left';\n } // Clamp row height to edge case minimum/maximum.\n\n\n clampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n if (newHeight !== clampedHeight) {\n // If row height was clamped, the resulting row/item aspect ratio will be off,\n // so force it to fit the width (recalculate aspectRatio to match clamped height).\n // NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n this.height = clampedHeight;\n clampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n } else {\n // If not clamped, leave ratio at 1.0.\n this.height = newHeight;\n clampedToNativeRatio = 1.0;\n } // Compute item geometry based on newHeight.\n\n\n this.items.forEach(function (item) {\n item.top = this.top;\n item.width = item.aspectRatio * this.height * clampedToNativeRatio;\n item.height = this.height; // Left-to-right.\n // TODO right to left\n // item.left = this.width - itemWidthSum - item.width;\n\n item.left = itemWidthSum; // Increment width.\n\n itemWidthSum += item.width + this.spacing;\n }, this); // If specified, ensure items fill row and distribute error\n // caused by rounding width and height across all items.\n\n if (widowLayoutStyle === 'justify') {\n itemWidthSum -= this.spacing + this.left;\n errorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n roundedCumulativeErrors = this.items.map(function (item, i) {\n return Math.round((i + 1) * errorWidthPerItem);\n });\n\n if (this.items.length === 1) {\n // For rows with only one item, adjust item width to fill row.\n singleItemGeometry = this.items[0];\n singleItemGeometry.width -= Math.round(errorWidthPerItem);\n } else {\n // For rows with multiple items, adjust item width and shift items to fill the row,\n // while maintaining equal spacing between items in the row.\n this.items.forEach(function (item, i) {\n if (i > 0) {\n item.left -= roundedCumulativeErrors[i - 1];\n item.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n } else {\n item.width -= roundedCumulativeErrors[i];\n }\n });\n }\n } else if (widowLayoutStyle === 'center') {\n // Center widows\n centerOffset = (this.width - itemWidthSum) / 2;\n this.items.forEach(function (item) {\n item.left += centerOffset + this.spacing;\n }, this);\n }\n },\n\n /**\n * Force completion of row layout with current items.\n *\n * @method forceComplete\n * @param fitToWidth {Boolean} Stretch current items to fill the row width.\n * This will likely result in padding.\n * @param fitToWidth {Number}\n */\n forceComplete: function forceComplete(fitToWidth, rowHeight) {\n // TODO Handle fitting to width\n // var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n // \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n // \t\treturn sum + item.aspectRatio;\n // \t}, 0);\n if (typeof rowHeight === 'number') {\n this.completeLayout(rowHeight, this.widowLayoutStyle);\n } else {\n // Complete using target row height.\n this.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n }\n },\n\n /**\n * Return layout data for items within row.\n * Note: returns actual list, not a copy.\n *\n * @method getItems\n * @return Layout data for items within row.\n */\n getItems: function getItems() {\n return this.items;\n }\n};\n\n/***/ })\n/******/ ]);"]}
class-visual-portfolio.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Visual Portfolio, Posts & Image Gallery
4
  * Description: Modern gallery and portfolio plugin with advanced layouts editor. Clean and powerful gallery styles with enormous settings in the Gutenberg block.
5
- * Version: 2.8.1
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
2
  /**
3
  * Plugin Name: Visual Portfolio, Posts & Image Gallery
4
  * Description: Modern gallery and portfolio plugin with advanced layouts editor. Clean and powerful gallery styles with enormous settings in the Gutenberg block.
5
+ * Version: 2.8.2
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
classes/class-admin.php CHANGED
@@ -42,9 +42,9 @@ class Visual_Portfolio_Admin {
42
  'nonce' => wp_create_nonce( 'vp-ajax-nonce' ),
43
  );
44
 
45
- wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery', 'wp-data' ), '2.8.1', true );
46
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
47
- wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', array(), '2.8.1' );
48
  wp_style_add_data( 'visual-portfolio-admin', 'rtl', 'replace' );
49
  wp_style_add_data( 'visual-portfolio-admin', 'suffix', '.min' );
50
  }
@@ -58,8 +58,8 @@ class Visual_Portfolio_Admin {
58
  );
59
 
60
  if ( 'vp_lists' === get_post_type() ) {
61
- wp_enqueue_script( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.js', array( 'jquery' ), '2.8.1', true );
62
- wp_enqueue_style( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.css', array(), '2.8.1' );
63
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'rtl', 'replace' );
64
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'suffix', '.min' );
65
 
@@ -1299,7 +1299,7 @@ class Visual_Portfolio_Admin {
1299
  'category' => 'content-source-post-based',
1300
  'type' => 'checkbox',
1301
  'alongside' => esc_html__( 'Avoid Duplicates', 'visual-portfolio' ),
1302
- 'description' => esc_html__( 'Enable to avoid duplicate posts from showing up. This only effects the frontend', 'visual-portfolio' ),
1303
  'name' => 'posts_avoid_duplicate_posts',
1304
  'default' => false,
1305
  )
@@ -1522,6 +1522,16 @@ class Visual_Portfolio_Admin {
1522
  )
1523
  );
1524
 
 
 
 
 
 
 
 
 
 
 
1525
  Visual_Portfolio_Controls::register(
1526
  array(
1527
  'category' => 'content-source-additional',
42
  'nonce' => wp_create_nonce( 'vp-ajax-nonce' ),
43
  );
44
 
45
+ wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery', 'wp-data' ), '2.8.2', true );
46
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
47
+ wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', array(), '2.8.2' );
48
  wp_style_add_data( 'visual-portfolio-admin', 'rtl', 'replace' );
49
  wp_style_add_data( 'visual-portfolio-admin', 'suffix', '.min' );
50
  }
58
  );
59
 
60
  if ( 'vp_lists' === get_post_type() ) {
61
+ wp_enqueue_script( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.js', array( 'jquery' ), '2.8.2', true );
62
+ wp_enqueue_style( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.css', array(), '2.8.2' );
63
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'rtl', 'replace' );
64
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'suffix', '.min' );
65
 
1299
  'category' => 'content-source-post-based',
1300
  'type' => 'checkbox',
1301
  'alongside' => esc_html__( 'Avoid Duplicates', 'visual-portfolio' ),
1302
+ 'description' => esc_html__( 'Enable to avoid duplicate posts from showing up. This only affects the frontend', 'visual-portfolio' ),
1303
  'name' => 'posts_avoid_duplicate_posts',
1304
  'default' => false,
1305
  )
1522
  )
1523
  );
1524
 
1525
+ Visual_Portfolio_Controls::register(
1526
+ array(
1527
+ 'category' => 'content-source-additional',
1528
+ 'type' => 'text',
1529
+ 'label' => esc_html__( 'No Items Notice', 'visual-portfolio' ),
1530
+ 'name' => 'no_items_notice',
1531
+ 'default' => esc_html__( 'No items were found matching your selection.', 'visual-portfolio' ),
1532
+ )
1533
+ );
1534
+
1535
  Visual_Portfolio_Controls::register(
1536
  array(
1537
  'category' => 'content-source-additional',
classes/class-assets.php CHANGED
@@ -98,11 +98,11 @@ class Visual_Portfolio_Assets {
98
  foreach ( self::$stored_assets[ $type ] as $name => $data ) {
99
  if ( isset( $data['value'] ) && $data['value'] ) {
100
  if ( 'script' === $type ) {
101
- wp_enqueue_script( $name, '', array(), '2.8.1', true );
102
  } elseif ( is_string( $data['value'] ) ) {
103
- visual_portfolio()->include_template_style( $name, $data['value'], array(), '2.8.1' );
104
  } else {
105
- wp_enqueue_style( $name, '', array(), '2.8.1' );
106
  }
107
 
108
  self::$stored_assets[ $type ]['value'] = false;
@@ -259,7 +259,7 @@ class Visual_Portfolio_Assets {
259
  $dynamic_styles = Visual_Portfolio_Controls_Dynamic_CSS::get( $options );
260
  $controls_css_handle = 'vp-dynamic-styles-' . $options['id'];
261
 
262
- wp_register_style( $controls_css_handle, false, array(), '2.8.1' );
263
  wp_enqueue_style( $controls_css_handle );
264
  wp_add_inline_style( $controls_css_handle, $dynamic_styles ? $dynamic_styles : ' ' );
265
 
@@ -395,7 +395,7 @@ class Visual_Portfolio_Assets {
395
  );
396
 
397
  foreach ( $vp_styles as $name => $data ) {
398
- wp_register_style( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.8.1' );
399
  wp_style_add_data( $name, 'rtl', 'replace' );
400
  wp_style_add_data( $name, 'suffix', '.min' );
401
  }
@@ -514,7 +514,7 @@ class Visual_Portfolio_Assets {
514
  );
515
 
516
  foreach ( $vp_scripts as $name => $data ) {
517
- wp_register_script( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.8.1', true );
518
  }
519
 
520
  do_action( 'vpf_after_assets_register' );
98
  foreach ( self::$stored_assets[ $type ] as $name => $data ) {
99
  if ( isset( $data['value'] ) && $data['value'] ) {
100
  if ( 'script' === $type ) {
101
+ wp_enqueue_script( $name, '', array(), '2.8.2', true );
102
  } elseif ( is_string( $data['value'] ) ) {
103
+ visual_portfolio()->include_template_style( $name, $data['value'], array(), '2.8.2' );
104
  } else {
105
+ wp_enqueue_style( $name, '', array(), '2.8.2' );
106
  }
107
 
108
  self::$stored_assets[ $type ]['value'] = false;
259
  $dynamic_styles = Visual_Portfolio_Controls_Dynamic_CSS::get( $options );
260
  $controls_css_handle = 'vp-dynamic-styles-' . $options['id'];
261
 
262
+ wp_register_style( $controls_css_handle, false, array(), '2.8.2' );
263
  wp_enqueue_style( $controls_css_handle );
264
  wp_add_inline_style( $controls_css_handle, $dynamic_styles ? $dynamic_styles : ' ' );
265
 
395
  );
396
 
397
  foreach ( $vp_styles as $name => $data ) {
398
+ wp_register_style( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.8.2' );
399
  wp_style_add_data( $name, 'rtl', 'replace' );
400
  wp_style_add_data( $name, 'suffix', '.min' );
401
  }
514
  );
515
 
516
  foreach ( $vp_scripts as $name => $data ) {
517
+ wp_register_script( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.8.2', true );
518
  }
519
 
520
  do_action( 'vpf_after_assets_register' );
classes/class-custom-post-type.php CHANGED
@@ -248,7 +248,7 @@ class Visual_Portfolio_Custom_Post_Type {
248
  if ( ! is_blog_installed() ) {
249
  return;
250
  }
251
- if ( get_option( 'visual_portfolio_updated_caps' ) === '2.8.1' ) {
252
  return;
253
  }
254
 
@@ -325,7 +325,7 @@ class Visual_Portfolio_Custom_Post_Type {
325
  $wp_roles->add_cap( 'administrator', $cap );
326
  }
327
 
328
- update_option( 'visual_portfolio_updated_caps', '2.8.1' );
329
  }
330
 
331
  /**
248
  if ( ! is_blog_installed() ) {
249
  return;
250
  }
251
+ if ( get_option( 'visual_portfolio_updated_caps' ) === '2.8.2' ) {
252
  return;
253
  }
254
 
325
  $wp_roles->add_cap( 'administrator', $cap );
326
  }
327
 
328
+ update_option( 'visual_portfolio_updated_caps', '2.8.2' );
329
  }
330
 
331
  /**
classes/class-elementor-widget.php CHANGED
@@ -33,9 +33,9 @@ class Visual_Portfolio_Elementor_Widget extends \Elementor\Widget_Base {
33
 
34
  if ( $this->is_preview_mode() ) {
35
  wp_register_script( 'iframe-resizer', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.min.js', '', '4.2.11', true );
36
- wp_register_script( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/js/elementor.min.js', array( 'elementor-frontend', 'iframe-resizer', 'jquery' ), '2.8.1', true );
37
 
38
- wp_register_style( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/css/elementor.min.css', array(), '2.8.1' );
39
  wp_style_add_data( 'visual-portfolio-elementor', 'rtl', 'replace' );
40
  wp_style_add_data( 'visual-portfolio-elementor', 'suffix', '.min' );
41
  }
33
 
34
  if ( $this->is_preview_mode() ) {
35
  wp_register_script( 'iframe-resizer', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.min.js', '', '4.2.11', true );
36
+ wp_register_script( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/js/elementor.min.js', array( 'elementor-frontend', 'iframe-resizer', 'jquery' ), '2.8.2', true );
37
 
38
+ wp_register_style( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/css/elementor.min.css', array(), '2.8.2' );
39
  wp_style_add_data( 'visual-portfolio-elementor', 'rtl', 'replace' );
40
  wp_style_add_data( 'visual-portfolio-elementor', 'suffix', '.min' );
41
  }
classes/class-get-portfolio.php CHANGED
@@ -343,7 +343,7 @@ class Visual_Portfolio_Get {
343
  ?>
344
  <div class="<?php echo esc_attr( $class ); ?>">
345
  <?php
346
- self::notice( esc_html__( 'No items were found matching your selection.', 'visual-portfolio' ) );
347
  ?>
348
  </div>
349
  <?php
@@ -1870,7 +1870,7 @@ class Visual_Portfolio_Get {
1870
  );
1871
 
1872
  if ( $args['focal_point'] && ! empty( $args['focal_point'] ) ) {
1873
- $attrs['style'] = '--vp-images__object-position: ' . esc_attr( 100 * $args['focal_point']['x'] ) . '% ' . esc_attr( 100 * $args['focal_point']['y'] ) . '%;';
1874
  }
1875
 
1876
  $attrs = apply_filters( 'vpf_each_item_tag_attrs', $attrs, $args );
343
  ?>
344
  <div class="<?php echo esc_attr( $class ); ?>">
345
  <?php
346
+ self::notice( $options['no_items_notice'] );
347
  ?>
348
  </div>
349
  <?php
1870
  );
1871
 
1872
  if ( $args['focal_point'] && ! empty( $args['focal_point'] ) ) {
1873
+ $attrs['style'] = '--vp-images__object-position: ' . esc_attr( 100 * floatval( $args['focal_point']['x'] ) ) . '% ' . esc_attr( 100 * floatval( $args['focal_point']['y'] ) ) . '%;';
1874
  }
1875
 
1876
  $attrs = apply_filters( 'vpf_each_item_tag_attrs', $attrs, $args );
classes/class-gutenberg-saved.php CHANGED
@@ -102,8 +102,15 @@ class Visual_Portfolio_Gutenberg_Saved_Block {
102
  $class_name .= ' ' . $attributes['className'];
103
  }
104
 
 
 
 
 
 
 
 
105
  ?>
106
- <div class="<?php echo esc_attr( $class_name ); ?>">
107
  <?php
108
  // phpcs:ignore
109
  echo Visual_Portfolio_Get::get( array( 'id' => $attributes['id'] ) );
102
  $class_name .= ' ' . $attributes['className'];
103
  }
104
 
105
+ $html_atts = 'class="' . esc_attr( $class_name ) . '"';
106
+
107
+ // Ghost Kit animate on scroll support.
108
+ if ( isset( $attributes['ghostkitSR'] ) && $attributes['ghostkitSR'] ) {
109
+ $html_atts .= ' data-ghostkit-sr="' . esc_attr( $attributes['ghostkitSR'] ) . '"';
110
+ }
111
+
112
  ?>
113
+ <div <?php echo $html_atts; // phpcs:ignore ?>>
114
  <?php
115
  // phpcs:ignore
116
  echo Visual_Portfolio_Get::get( array( 'id' => $attributes['id'] ) );
classes/class-gutenberg.php CHANGED
@@ -145,8 +145,15 @@ class Visual_Portfolio_Gutenberg_Block {
145
  $class_name .= ' ' . $attributes['className'];
146
  }
147
 
 
 
 
 
 
 
 
148
  ?>
149
- <div class="<?php echo esc_attr( $class_name ); ?>">
150
  <?php
151
  // phpcs:ignore
152
  echo Visual_Portfolio_Get::get( $attributes );
@@ -166,14 +173,14 @@ class Visual_Portfolio_Gutenberg_Block {
166
  'visual-portfolio-gutenberg',
167
  plugins_url( '../gutenberg/index.min.js', __FILE__ ),
168
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'jquery' ),
169
- '2.8.1',
170
  true
171
  );
172
  wp_enqueue_style(
173
  'visual-portfolio-gutenberg',
174
  plugins_url( '../gutenberg/style.min.css', __FILE__ ),
175
  array(),
176
- '2.8.1'
177
  );
178
  wp_style_add_data( 'visual-portfolio-gutenberg', 'rtl', 'replace' );
179
  wp_style_add_data( 'visual-portfolio-gutenberg', 'suffix', '.min' );
@@ -193,7 +200,7 @@ class Visual_Portfolio_Gutenberg_Block {
193
  'visual-portfolio-gutenberg-custom-post-meta',
194
  plugins_url( '../gutenberg/custom-post-meta.min.js', __FILE__ ),
195
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'wp-plugins', 'jquery' ),
196
- '2.8.1',
197
  true
198
  );
199
 
145
  $class_name .= ' ' . $attributes['className'];
146
  }
147
 
148
+ $html_atts = 'class="' . esc_attr( $class_name ) . '"';
149
+
150
+ // Ghost Kit animate on scroll support.
151
+ if ( isset( $attributes['ghostkitSR'] ) && $attributes['ghostkitSR'] ) {
152
+ $html_atts .= ' data-ghostkit-sr="' . esc_attr( $attributes['ghostkitSR'] ) . '"';
153
+ }
154
+
155
  ?>
156
+ <div <?php echo $html_atts; // phpcs:ignore ?>>
157
  <?php
158
  // phpcs:ignore
159
  echo Visual_Portfolio_Get::get( $attributes );
173
  'visual-portfolio-gutenberg',
174
  plugins_url( '../gutenberg/index.min.js', __FILE__ ),
175
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'jquery' ),
176
+ '2.8.2',
177
  true
178
  );
179
  wp_enqueue_style(
180
  'visual-portfolio-gutenberg',
181
  plugins_url( '../gutenberg/style.min.css', __FILE__ ),
182
  array(),
183
+ '2.8.2'
184
  );
185
  wp_style_add_data( 'visual-portfolio-gutenberg', 'rtl', 'replace' );
186
  wp_style_add_data( 'visual-portfolio-gutenberg', 'suffix', '.min' );
200
  'visual-portfolio-gutenberg-custom-post-meta',
201
  plugins_url( '../gutenberg/custom-post-meta.min.js', __FILE__ ),
202
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'wp-plugins', 'jquery' ),
203
+ '2.8.2',
204
  true
205
  );
206
 
classes/class-migration.php CHANGED
@@ -18,7 +18,7 @@ class Visual_Portfolio_Migrations {
18
  *
19
  * @var string
20
  */
21
- protected $version = '2.8.1';
22
 
23
  /**
24
  * Initial version.
18
  *
19
  * @var string
20
  */
21
+ protected $version = '2.8.2';
22
 
23
  /**
24
  * Initial version.
classes/class-preview.php CHANGED
@@ -69,7 +69,7 @@ class Visual_Portfolio_Preview {
69
  // * Error: https://mysite.com/wp
70
  // * Success: https://mysite.com/wp/
71
  // .
72
- trailingslashit( get_home_url( '/' ) )
73
  )
74
  );
75
 
@@ -233,7 +233,7 @@ class Visual_Portfolio_Preview {
233
 
234
  // Enqueue assets.
235
  wp_enqueue_script( 'iframe-resizer-content', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.contentWindow.min.js', array(), '4.2.11', true );
236
- wp_enqueue_script( 'visual-portfolio-preview', visual_portfolio()->plugin_url . 'assets/js/preview.min.js', array( 'jquery', 'iframe-resizer-content' ), '2.8.1', true );
237
 
238
  // Post data for script.
239
  wp_localize_script(
@@ -276,7 +276,7 @@ class Visual_Portfolio_Preview {
276
  Visual_Portfolio_Assets::enqueue( $options );
277
 
278
  // Custom styles.
279
- visual_portfolio()->include_template_style( 'visual-portfolio-preview', 'preview/style', array(), '2.8.1' );
280
 
281
  // Output template.
282
  visual_portfolio()->include_template(
69
  // * Error: https://mysite.com/wp
70
  // * Success: https://mysite.com/wp/
71
  // .
72
+ trailingslashit( home_url( '/' ) )
73
  )
74
  );
75
 
233
 
234
  // Enqueue assets.
235
  wp_enqueue_script( 'iframe-resizer-content', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.contentWindow.min.js', array(), '4.2.11', true );
236
+ wp_enqueue_script( 'visual-portfolio-preview', visual_portfolio()->plugin_url . 'assets/js/preview.min.js', array( 'jquery', 'iframe-resizer-content' ), '2.8.2', true );
237
 
238
  // Post data for script.
239
  wp_localize_script(
276
  Visual_Portfolio_Assets::enqueue( $options );
277
 
278
  // Custom styles.
279
+ visual_portfolio()->include_template_style( 'visual-portfolio-preview', 'preview/style', array(), '2.8.2' );
280
 
281
  // Output template.
282
  visual_portfolio()->include_template(
classes/class-supported-themes.php CHANGED
@@ -68,7 +68,7 @@ class Visual_Portfolio_Supported_Themes {
68
  public function wp_enqueue_scripts() {
69
  $theme_compat = $this->get_theme_compatibility_style();
70
  if ( $theme_compat ) {
71
- wp_enqueue_style( $theme_compat['name'], $theme_compat['url'], array(), '2.8.1' );
72
  wp_style_add_data( $theme_compat['name'], 'rtl', 'replace' );
73
  wp_style_add_data( $theme_compat['name'], 'suffix', '.min' );
74
  }
68
  public function wp_enqueue_scripts() {
69
  $theme_compat = $this->get_theme_compatibility_style();
70
  if ( $theme_compat ) {
71
+ wp_enqueue_style( $theme_compat['name'], $theme_compat['url'], array(), '2.8.2' );
72
  wp_style_add_data( $theme_compat['name'], 'rtl', 'replace' );
73
  wp_style_add_data( $theme_compat['name'], 'suffix', '.min' );
74
  }
classes/class-tinymce.php CHANGED
@@ -70,7 +70,7 @@ class Visual_Portfolio_TinyMCE {
70
  return;
71
  }
72
 
73
- wp_enqueue_script( 'visual-portfolio-tinymce-localize', visual_portfolio()->plugin_url . 'assets/admin/js/mce-localize.min.js', array(), '2.8.1', true );
74
  wp_localize_script( 'visual-portfolio-tinymce-localize', 'VPTinyMCEOptions', $data_tiny_mce );
75
  }
76
  }
70
  return;
71
  }
72
 
73
+ wp_enqueue_script( 'visual-portfolio-tinymce-localize', visual_portfolio()->plugin_url . 'assets/admin/js/mce-localize.min.js', array(), '2.8.2', true );
74
  wp_localize_script( 'visual-portfolio-tinymce-localize', 'VPTinyMCEOptions', $data_tiny_mce );
75
  }
76
  }
classes/class-vc.php CHANGED
@@ -35,7 +35,7 @@ class Visual_Portfolio_VC {
35
  */
36
  public function admin_enqueue_scripts( $page ) {
37
  if ( 'post.php' === $page || 'post-new.php' === $page ) {
38
- wp_enqueue_script( 'visual-portfolio-vc-frontend', visual_portfolio()->plugin_url . 'assets/admin/js/vc-frontend.min.js', array( 'jquery' ), '2.8.1', true );
39
  }
40
  }
41
 
35
  */
36
  public function admin_enqueue_scripts( $page ) {
37
  if ( 'post.php' === $page || 'post-new.php' === $page ) {
38
+ wp_enqueue_script( 'visual-portfolio-vc-frontend', visual_portfolio()->plugin_url . 'assets/admin/js/vc-frontend.min.js', array( 'jquery' ), '2.8.2', true );
39
  }
40
  }
41
 
languages/visual-portfolio.pot CHANGED
@@ -155,7 +155,7 @@ msgstr ""
155
  msgid "Free Scroll Sticky"
156
  msgstr ""
157
 
158
- #: dist/visual-portfolio/classes/class-admin.php:506, dist/visual-portfolio/classes/class-admin.php:2651, dist/visual-portfolio/classes/class-settings.php:309
159
  msgid "Display Arrows"
160
  msgstr ""
161
 
@@ -187,7 +187,7 @@ msgstr ""
187
  msgid "Thumbnails Per View"
188
  msgstr ""
189
 
190
- #: dist/visual-portfolio/classes/class-admin.php:653, dist/visual-portfolio/classes/class-admin.php:2134, dist/visual-portfolio/classes/class-admin.php:2262, dist/visual-portfolio/classes/class-admin.php:2384
191
  msgid "Classic"
192
  msgstr ""
193
 
@@ -195,7 +195,7 @@ msgstr ""
195
  msgid "Display Read More Button"
196
  msgstr ""
197
 
198
- #: dist/visual-portfolio/classes/class-admin.php:675, dist/visual-portfolio/classes/class-admin.php:1768
199
  msgid "Hide"
200
  msgstr ""
201
 
@@ -247,7 +247,7 @@ msgstr ""
247
  msgid "Caption Links Hover Color"
248
  msgstr ""
249
 
250
- #: dist/visual-portfolio/classes/class-admin.php:769, dist/visual-portfolio/classes/class-admin.php:831, dist/visual-portfolio/classes/class-admin.php:882, dist/visual-portfolio/classes/class-admin.php:991, dist/visual-portfolio/classes/class-admin.php:1340, dist/visual-portfolio/classes/class-admin.php:1506, dist/visual-portfolio/classes/class-admin.php:2033, dist/visual-portfolio/classes/class-admin.php:2365, dist/visual-portfolio/classes/class-settings.php:402
251
  msgid "PRO Feature"
252
  msgstr ""
253
 
@@ -323,7 +323,7 @@ msgstr ""
323
  msgid "Social"
324
  msgstr ""
325
 
326
- #: dist/visual-portfolio/classes/class-admin.php:1121, dist/visual-portfolio/classes/class-admin.php:2796
327
  msgid "Custom Query"
328
  msgstr ""
329
 
@@ -364,7 +364,7 @@ msgstr ""
364
  msgid "Date"
365
  msgstr ""
366
 
367
- #: dist/visual-portfolio/classes/class-admin.php:1251, dist/visual-portfolio/classes/class-admin.php:1358, dist/visual-portfolio/classes/class-admin.php:1479, dist/visual-portfolio/classes/class-admin.php:1988
368
  msgid "Title"
369
  msgstr ""
370
 
@@ -405,7 +405,7 @@ msgid "Avoid Duplicates"
405
  msgstr ""
406
 
407
  #: dist/visual-portfolio/classes/class-admin.php:1302
408
- msgid "Enable to avoid duplicate posts from showing up. This only effects the frontend"
409
  msgstr ""
410
 
411
  #: dist/visual-portfolio/classes/class-admin.php:1311
@@ -420,7 +420,7 @@ msgstr ""
420
  msgid "Additional query settings."
421
  msgstr ""
422
 
423
- #: dist/visual-portfolio/classes/class-admin.php:1369, dist/visual-portfolio/classes/class-admin.php:2010
424
  msgid "Description"
425
  msgstr ""
426
 
@@ -456,7 +456,7 @@ msgstr ""
456
  msgid "see here"
457
  msgstr ""
458
 
459
- #: dist/visual-portfolio/classes/class-admin.php:1407, dist/visual-portfolio/classes/class-admin.php:1934
460
  msgid "URL"
461
  msgstr ""
462
 
@@ -476,23 +476,23 @@ msgstr ""
476
  msgid "Titles"
477
  msgstr ""
478
 
479
- #: dist/visual-portfolio/classes/class-admin.php:1443, dist/visual-portfolio/classes/class-admin.php:1460, dist/visual-portfolio/classes/class-admin.php:1992, dist/visual-portfolio/classes/class-admin.php:2014
480
  msgid "None"
481
  msgstr ""
482
 
483
- #: dist/visual-portfolio/classes/class-admin.php:1445, dist/visual-portfolio/classes/class-admin.php:1462, dist/visual-portfolio/classes/class-admin.php:1993, dist/visual-portfolio/classes/class-admin.php:2015
484
  msgid "Image Title"
485
  msgstr ""
486
 
487
- #: dist/visual-portfolio/classes/class-admin.php:1446, dist/visual-portfolio/classes/class-admin.php:1463, dist/visual-portfolio/classes/class-admin.php:1994, dist/visual-portfolio/classes/class-admin.php:2016
488
  msgid "Image Caption"
489
  msgstr ""
490
 
491
- #: dist/visual-portfolio/classes/class-admin.php:1447, dist/visual-portfolio/classes/class-admin.php:1464, dist/visual-portfolio/classes/class-admin.php:1995, dist/visual-portfolio/classes/class-admin.php:2017
492
  msgid "Image Alt"
493
  msgstr ""
494
 
495
- #: dist/visual-portfolio/classes/class-admin.php:1448, dist/visual-portfolio/classes/class-admin.php:1465, dist/visual-portfolio/classes/class-admin.php:1996, dist/visual-portfolio/classes/class-admin.php:2018
496
  msgid "Image Description"
497
  msgstr ""
498
 
@@ -500,7 +500,7 @@ msgstr ""
500
  msgid "Descriptions"
501
  msgstr ""
502
 
503
- #: dist/visual-portfolio/classes/class-admin.php:1477, dist/visual-portfolio/classes/class-admin.php:1769, dist/visual-portfolio/classes/class-admin.php:1955
504
  msgid "Default"
505
  msgstr ""
506
 
@@ -517,240 +517,248 @@ msgid "Items Per Page"
517
  msgstr ""
518
 
519
  #: dist/visual-portfolio/classes/class-admin.php:1529
 
 
 
 
 
 
 
 
520
  msgid "Stretch"
521
  msgstr ""
522
 
523
- #: dist/visual-portfolio/classes/class-admin.php:1532
524
  msgid "Break container and display it wide"
525
  msgstr ""
526
 
527
- #: dist/visual-portfolio/classes/class-admin.php:1601
528
  msgid "Gap"
529
  msgstr ""
530
 
531
- #: dist/visual-portfolio/classes/class-admin.php:1619
532
  msgid "Vertical Gap"
533
  msgstr ""
534
 
535
- #: dist/visual-portfolio/classes/class-admin.php:1620
536
  msgid "When empty, used Gap option"
537
  msgstr ""
538
 
539
- #: dist/visual-portfolio/classes/class-admin.php:1718
540
  msgid "Images Rounded Corners"
541
  msgstr ""
542
 
543
- #: dist/visual-portfolio/classes/class-admin.php:1735
544
  msgid "Display Title"
545
  msgstr ""
546
 
547
- #: dist/visual-portfolio/classes/class-admin.php:1743
548
  msgid "Display Categories"
549
  msgstr ""
550
 
551
- #: dist/visual-portfolio/classes/class-admin.php:1749
552
  msgid "Categories Count"
553
  msgstr ""
554
 
555
- #: dist/visual-portfolio/classes/class-admin.php:1764
556
  msgid "Display Date"
557
  msgstr ""
558
 
559
- #: dist/visual-portfolio/classes/class-admin.php:1770
560
  msgid "Human Format"
561
  msgstr ""
562
 
563
- #: dist/visual-portfolio/classes/class-admin.php:1778
564
  msgid ""
565
  "Date format
566
  " Example: F j, Y"
567
  msgstr ""
568
 
569
- #: dist/visual-portfolio/classes/class-admin.php:1790
570
  msgid "Display Author"
571
  msgstr ""
572
 
573
- #: dist/visual-portfolio/classes/class-admin.php:1798
574
  msgid "Display Comments Count"
575
  msgstr ""
576
 
577
- #: dist/visual-portfolio/classes/class-admin.php:1812
578
  msgid "Display Views Count"
579
  msgstr ""
580
 
581
- #: dist/visual-portfolio/classes/class-admin.php:1826
582
  msgid "Display Reading Time"
583
  msgstr ""
584
 
585
- #: dist/visual-portfolio/classes/class-admin.php:1840
586
  msgid "Display Excerpt"
587
  msgstr ""
588
 
589
- #: dist/visual-portfolio/classes/class-admin.php:1846
590
  msgid "Excerpt Words Count"
591
  msgstr ""
592
 
593
- #: dist/visual-portfolio/classes/class-admin.php:1861
594
  msgid "Display Icon"
595
  msgstr ""
596
 
597
- #: dist/visual-portfolio/classes/class-admin.php:1869
598
  msgid "Caption Align"
599
  msgstr ""
600
 
601
- #: dist/visual-portfolio/classes/class-admin.php:1929
602
  msgid "Disabled"
603
  msgstr ""
604
 
605
- #: dist/visual-portfolio/classes/class-admin.php:1939
606
  msgid "Popup"
607
  msgstr ""
608
 
609
- #: dist/visual-portfolio/classes/class-admin.php:1951
610
  msgid "Target"
611
  msgstr ""
612
 
613
- #: dist/visual-portfolio/classes/class-admin.php:1956
614
  msgid "New Tab (_blank)"
615
  msgstr ""
616
 
617
- #: dist/visual-portfolio/classes/class-admin.php:1957
618
  msgid "Top Frame (_top)"
619
  msgstr ""
620
 
621
- #: dist/visual-portfolio/classes/class-admin.php:1971
622
  msgid "Rel"
623
  msgstr ""
624
 
625
- #: dist/visual-portfolio/classes/class-admin.php:2034
626
  msgid "Display pages in popup iframe, not just images."
627
  msgstr ""
628
 
629
- #: dist/visual-portfolio/classes/class-admin.php:2054
630
  msgid "Top"
631
  msgstr ""
632
 
633
- #: dist/visual-portfolio/classes/class-admin.php:2064
634
  msgid "Bottom"
635
  msgstr ""
636
 
637
- #: dist/visual-portfolio/classes/class-admin.php:2088
638
  msgid "Filter"
639
  msgstr ""
640
 
641
- #: dist/visual-portfolio/classes/class-admin.php:2094
642
  msgid "Sort"
643
  msgstr ""
644
 
645
- #: dist/visual-portfolio/classes/class-admin.php:2100
646
  msgid "Search"
647
  msgstr ""
648
 
649
- #: dist/visual-portfolio/classes/class-admin.php:2106
650
  msgid "Items"
651
  msgstr ""
652
 
653
- #: dist/visual-portfolio/classes/class-admin.php:2111
654
  msgid "Pagination"
655
  msgstr ""
656
 
657
- #: dist/visual-portfolio/classes/class-admin.php:2127, dist/visual-portfolio/classes/class-admin.php:2255, dist/visual-portfolio/classes/class-admin.php:2377
658
  msgid "Minimal"
659
  msgstr ""
660
 
661
- #: dist/visual-portfolio/classes/class-admin.php:2141, dist/visual-portfolio/classes/class-admin.php:2269
662
  msgid "Dropdown"
663
  msgstr ""
664
 
665
- #: dist/visual-portfolio/classes/class-admin.php:2233
666
  msgid "Display Count"
667
  msgstr ""
668
 
669
- #: dist/visual-portfolio/classes/class-admin.php:2242
670
  msgid "All Button Text"
671
  msgstr ""
672
 
673
- #: dist/visual-portfolio/classes/class-admin.php:2244
674
  msgid "All"
675
  msgstr ""
676
 
677
- #: dist/visual-portfolio/classes/class-admin.php:2366
678
  msgid "The search module is only available for PRO users."
679
  msgstr ""
680
 
681
- #: dist/visual-portfolio/classes/class-admin.php:2471
682
  msgid "Type"
683
  msgstr ""
684
 
685
- #: dist/visual-portfolio/classes/class-admin.php:2478
686
  msgid "Paged"
687
  msgstr ""
688
 
689
- #: dist/visual-portfolio/classes/class-admin.php:2483, dist/visual-portfolio/classes/class-admin.php:2544, dist/visual-portfolio/classes/class-admin.php:2598
690
  msgid "Load More"
691
  msgstr ""
692
 
693
- #: dist/visual-portfolio/classes/class-admin.php:2488
694
  msgid "Infinite"
695
  msgstr ""
696
 
697
- #: dist/visual-portfolio/classes/class-admin.php:2498
698
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
699
  msgstr ""
700
 
701
- #: dist/visual-portfolio/classes/class-admin.php:2513, dist/visual-portfolio/classes/class-admin.php:2528
702
  msgid "Texts"
703
  msgstr ""
704
 
705
- #: dist/visual-portfolio/classes/class-admin.php:2545, dist/visual-portfolio/classes/class-admin.php:2546, dist/visual-portfolio/classes/class-admin.php:2599, dist/visual-portfolio/classes/class-admin.php:2600
706
  msgid "Load more button label"
707
  msgstr ""
708
 
709
- #: dist/visual-portfolio/classes/class-admin.php:2562, dist/visual-portfolio/classes/class-admin.php:2616
710
  msgid "Loading More..."
711
  msgstr ""
712
 
713
- #: dist/visual-portfolio/classes/class-admin.php:2563, dist/visual-portfolio/classes/class-admin.php:2564, dist/visual-portfolio/classes/class-admin.php:2617, dist/visual-portfolio/classes/class-admin.php:2618
714
  msgid "Loading more button label"
715
  msgstr ""
716
 
717
- #: dist/visual-portfolio/classes/class-admin.php:2580, dist/visual-portfolio/classes/class-admin.php:2634
718
  msgid "You’ve reached the end of the list"
719
  msgstr ""
720
 
721
- #: dist/visual-portfolio/classes/class-admin.php:2581, dist/visual-portfolio/classes/class-admin.php:2582, dist/visual-portfolio/classes/class-admin.php:2635, dist/visual-portfolio/classes/class-admin.php:2636
722
  msgid "End of the list text"
723
  msgstr ""
724
 
725
- #: dist/visual-portfolio/classes/class-admin.php:2666
726
  msgid "Display Numbers"
727
  msgstr ""
728
 
729
- #: dist/visual-portfolio/classes/class-admin.php:2681
730
  msgid "Scroll to Top"
731
  msgstr ""
732
 
733
- #: dist/visual-portfolio/classes/class-admin.php:2696
734
  msgid "Scroll to Top Offset"
735
  msgstr ""
736
 
737
- #: dist/visual-portfolio/classes/class-admin.php:2714
738
  msgid "Hide on Reached End"
739
  msgstr ""
740
 
741
- #: dist/visual-portfolio/classes/class-admin.php:2744
742
  msgid "Use <code>selector</code> rule to change block styles."
743
  msgstr ""
744
 
745
- #: dist/visual-portfolio/classes/class-admin.php:2745
746
  msgid "Example:"
747
  msgstr ""
748
 
749
- #: dist/visual-portfolio/classes/class-admin.php:2791
750
  msgid "Manual Selection"
751
  msgstr ""
752
 
753
- #: dist/visual-portfolio/classes/class-admin.php:2801
754
  msgid "Current Query"
755
  msgstr ""
756
 
@@ -1001,10 +1009,6 @@ msgstr ""
1001
  msgid "Select Layout"
1002
  msgstr ""
1003
 
1004
- #: dist/visual-portfolio/classes/class-get-portfolio.php:346
1005
- msgid "No items were found matching your selection."
1006
- msgstr ""
1007
-
1008
  #: dist/visual-portfolio/classes/class-get-portfolio.php:1692
1009
  msgid "Default sorting"
1010
  msgstr ""
155
  msgid "Free Scroll Sticky"
156
  msgstr ""
157
 
158
+ #: dist/visual-portfolio/classes/class-admin.php:506, dist/visual-portfolio/classes/class-admin.php:2661, dist/visual-portfolio/classes/class-settings.php:309
159
  msgid "Display Arrows"
160
  msgstr ""
161
 
187
  msgid "Thumbnails Per View"
188
  msgstr ""
189
 
190
+ #: dist/visual-portfolio/classes/class-admin.php:653, dist/visual-portfolio/classes/class-admin.php:2144, dist/visual-portfolio/classes/class-admin.php:2272, dist/visual-portfolio/classes/class-admin.php:2394
191
  msgid "Classic"
192
  msgstr ""
193
 
195
  msgid "Display Read More Button"
196
  msgstr ""
197
 
198
+ #: dist/visual-portfolio/classes/class-admin.php:675, dist/visual-portfolio/classes/class-admin.php:1778
199
  msgid "Hide"
200
  msgstr ""
201
 
247
  msgid "Caption Links Hover Color"
248
  msgstr ""
249
 
250
+ #: dist/visual-portfolio/classes/class-admin.php:769, dist/visual-portfolio/classes/class-admin.php:831, dist/visual-portfolio/classes/class-admin.php:882, dist/visual-portfolio/classes/class-admin.php:991, dist/visual-portfolio/classes/class-admin.php:1340, dist/visual-portfolio/classes/class-admin.php:1506, dist/visual-portfolio/classes/class-admin.php:2043, dist/visual-portfolio/classes/class-admin.php:2375, dist/visual-portfolio/classes/class-settings.php:402
251
  msgid "PRO Feature"
252
  msgstr ""
253
 
323
  msgid "Social"
324
  msgstr ""
325
 
326
+ #: dist/visual-portfolio/classes/class-admin.php:1121, dist/visual-portfolio/classes/class-admin.php:2806
327
  msgid "Custom Query"
328
  msgstr ""
329
 
364
  msgid "Date"
365
  msgstr ""
366
 
367
+ #: dist/visual-portfolio/classes/class-admin.php:1251, dist/visual-portfolio/classes/class-admin.php:1358, dist/visual-portfolio/classes/class-admin.php:1479, dist/visual-portfolio/classes/class-admin.php:1998
368
  msgid "Title"
369
  msgstr ""
370
 
405
  msgstr ""
406
 
407
  #: dist/visual-portfolio/classes/class-admin.php:1302
408
+ msgid "Enable to avoid duplicate posts from showing up. This only affects the frontend"
409
  msgstr ""
410
 
411
  #: dist/visual-portfolio/classes/class-admin.php:1311
420
  msgid "Additional query settings."
421
  msgstr ""
422
 
423
+ #: dist/visual-portfolio/classes/class-admin.php:1369, dist/visual-portfolio/classes/class-admin.php:2020
424
  msgid "Description"
425
  msgstr ""
426
 
456
  msgid "see here"
457
  msgstr ""
458
 
459
+ #: dist/visual-portfolio/classes/class-admin.php:1407, dist/visual-portfolio/classes/class-admin.php:1944
460
  msgid "URL"
461
  msgstr ""
462
 
476
  msgid "Titles"
477
  msgstr ""
478
 
479
+ #: dist/visual-portfolio/classes/class-admin.php:1443, dist/visual-portfolio/classes/class-admin.php:1460, dist/visual-portfolio/classes/class-admin.php:2002, dist/visual-portfolio/classes/class-admin.php:2024
480
  msgid "None"
481
  msgstr ""
482
 
483
+ #: dist/visual-portfolio/classes/class-admin.php:1445, dist/visual-portfolio/classes/class-admin.php:1462, dist/visual-portfolio/classes/class-admin.php:2003, dist/visual-portfolio/classes/class-admin.php:2025
484
  msgid "Image Title"
485
  msgstr ""
486
 
487
+ #: dist/visual-portfolio/classes/class-admin.php:1446, dist/visual-portfolio/classes/class-admin.php:1463, dist/visual-portfolio/classes/class-admin.php:2004, dist/visual-portfolio/classes/class-admin.php:2026
488
  msgid "Image Caption"
489
  msgstr ""
490
 
491
+ #: dist/visual-portfolio/classes/class-admin.php:1447, dist/visual-portfolio/classes/class-admin.php:1464, dist/visual-portfolio/classes/class-admin.php:2005, dist/visual-portfolio/classes/class-admin.php:2027
492
  msgid "Image Alt"
493
  msgstr ""
494
 
495
+ #: dist/visual-portfolio/classes/class-admin.php:1448, dist/visual-portfolio/classes/class-admin.php:1465, dist/visual-portfolio/classes/class-admin.php:2006, dist/visual-portfolio/classes/class-admin.php:2028
496
  msgid "Image Description"
497
  msgstr ""
498
 
500
  msgid "Descriptions"
501
  msgstr ""
502
 
503
+ #: dist/visual-portfolio/classes/class-admin.php:1477, dist/visual-portfolio/classes/class-admin.php:1779, dist/visual-portfolio/classes/class-admin.php:1965
504
  msgid "Default"
505
  msgstr ""
506
 
517
  msgstr ""
518
 
519
  #: dist/visual-portfolio/classes/class-admin.php:1529
520
+ msgid "No Items Notice"
521
+ msgstr ""
522
+
523
+ #: dist/visual-portfolio/classes/class-admin.php:1531
524
+ msgid "No items were found matching your selection."
525
+ msgstr ""
526
+
527
+ #: dist/visual-portfolio/classes/class-admin.php:1539
528
  msgid "Stretch"
529
  msgstr ""
530
 
531
+ #: dist/visual-portfolio/classes/class-admin.php:1542
532
  msgid "Break container and display it wide"
533
  msgstr ""
534
 
535
+ #: dist/visual-portfolio/classes/class-admin.php:1611
536
  msgid "Gap"
537
  msgstr ""
538
 
539
+ #: dist/visual-portfolio/classes/class-admin.php:1629
540
  msgid "Vertical Gap"
541
  msgstr ""
542
 
543
+ #: dist/visual-portfolio/classes/class-admin.php:1630
544
  msgid "When empty, used Gap option"
545
  msgstr ""
546
 
547
+ #: dist/visual-portfolio/classes/class-admin.php:1728
548
  msgid "Images Rounded Corners"
549
  msgstr ""
550
 
551
+ #: dist/visual-portfolio/classes/class-admin.php:1745
552
  msgid "Display Title"
553
  msgstr ""
554
 
555
+ #: dist/visual-portfolio/classes/class-admin.php:1753
556
  msgid "Display Categories"
557
  msgstr ""
558
 
559
+ #: dist/visual-portfolio/classes/class-admin.php:1759
560
  msgid "Categories Count"
561
  msgstr ""
562
 
563
+ #: dist/visual-portfolio/classes/class-admin.php:1774
564
  msgid "Display Date"
565
  msgstr ""
566
 
567
+ #: dist/visual-portfolio/classes/class-admin.php:1780
568
  msgid "Human Format"
569
  msgstr ""
570
 
571
+ #: dist/visual-portfolio/classes/class-admin.php:1788
572
  msgid ""
573
  "Date format
574
  " Example: F j, Y"
575
  msgstr ""
576
 
577
+ #: dist/visual-portfolio/classes/class-admin.php:1800
578
  msgid "Display Author"
579
  msgstr ""
580
 
581
+ #: dist/visual-portfolio/classes/class-admin.php:1808
582
  msgid "Display Comments Count"
583
  msgstr ""
584
 
585
+ #: dist/visual-portfolio/classes/class-admin.php:1822
586
  msgid "Display Views Count"
587
  msgstr ""
588
 
589
+ #: dist/visual-portfolio/classes/class-admin.php:1836
590
  msgid "Display Reading Time"
591
  msgstr ""
592
 
593
+ #: dist/visual-portfolio/classes/class-admin.php:1850
594
  msgid "Display Excerpt"
595
  msgstr ""
596
 
597
+ #: dist/visual-portfolio/classes/class-admin.php:1856
598
  msgid "Excerpt Words Count"
599
  msgstr ""
600
 
601
+ #: dist/visual-portfolio/classes/class-admin.php:1871
602
  msgid "Display Icon"
603
  msgstr ""
604
 
605
+ #: dist/visual-portfolio/classes/class-admin.php:1879
606
  msgid "Caption Align"
607
  msgstr ""
608
 
609
+ #: dist/visual-portfolio/classes/class-admin.php:1939
610
  msgid "Disabled"
611
  msgstr ""
612
 
613
+ #: dist/visual-portfolio/classes/class-admin.php:1949
614
  msgid "Popup"
615
  msgstr ""
616
 
617
+ #: dist/visual-portfolio/classes/class-admin.php:1961
618
  msgid "Target"
619
  msgstr ""
620
 
621
+ #: dist/visual-portfolio/classes/class-admin.php:1966
622
  msgid "New Tab (_blank)"
623
  msgstr ""
624
 
625
+ #: dist/visual-portfolio/classes/class-admin.php:1967
626
  msgid "Top Frame (_top)"
627
  msgstr ""
628
 
629
+ #: dist/visual-portfolio/classes/class-admin.php:1981
630
  msgid "Rel"
631
  msgstr ""
632
 
633
+ #: dist/visual-portfolio/classes/class-admin.php:2044
634
  msgid "Display pages in popup iframe, not just images."
635
  msgstr ""
636
 
637
+ #: dist/visual-portfolio/classes/class-admin.php:2064
638
  msgid "Top"
639
  msgstr ""
640
 
641
+ #: dist/visual-portfolio/classes/class-admin.php:2074
642
  msgid "Bottom"
643
  msgstr ""
644
 
645
+ #: dist/visual-portfolio/classes/class-admin.php:2098
646
  msgid "Filter"
647
  msgstr ""
648
 
649
+ #: dist/visual-portfolio/classes/class-admin.php:2104
650
  msgid "Sort"
651
  msgstr ""
652
 
653
+ #: dist/visual-portfolio/classes/class-admin.php:2110
654
  msgid "Search"
655
  msgstr ""
656
 
657
+ #: dist/visual-portfolio/classes/class-admin.php:2116
658
  msgid "Items"
659
  msgstr ""
660
 
661
+ #: dist/visual-portfolio/classes/class-admin.php:2121
662
  msgid "Pagination"
663
  msgstr ""
664
 
665
+ #: dist/visual-portfolio/classes/class-admin.php:2137, dist/visual-portfolio/classes/class-admin.php:2265, dist/visual-portfolio/classes/class-admin.php:2387
666
  msgid "Minimal"
667
  msgstr ""
668
 
669
+ #: dist/visual-portfolio/classes/class-admin.php:2151, dist/visual-portfolio/classes/class-admin.php:2279
670
  msgid "Dropdown"
671
  msgstr ""
672
 
673
+ #: dist/visual-portfolio/classes/class-admin.php:2243
674
  msgid "Display Count"
675
  msgstr ""
676
 
677
+ #: dist/visual-portfolio/classes/class-admin.php:2252
678
  msgid "All Button Text"
679
  msgstr ""
680
 
681
+ #: dist/visual-portfolio/classes/class-admin.php:2254
682
  msgid "All"
683
  msgstr ""
684
 
685
+ #: dist/visual-portfolio/classes/class-admin.php:2376
686
  msgid "The search module is only available for PRO users."
687
  msgstr ""
688
 
689
+ #: dist/visual-portfolio/classes/class-admin.php:2481
690
  msgid "Type"
691
  msgstr ""
692
 
693
+ #: dist/visual-portfolio/classes/class-admin.php:2488
694
  msgid "Paged"
695
  msgstr ""
696
 
697
+ #: dist/visual-portfolio/classes/class-admin.php:2493, dist/visual-portfolio/classes/class-admin.php:2554, dist/visual-portfolio/classes/class-admin.php:2608
698
  msgid "Load More"
699
  msgstr ""
700
 
701
+ #: dist/visual-portfolio/classes/class-admin.php:2498
702
  msgid "Infinite"
703
  msgstr ""
704
 
705
+ #: dist/visual-portfolio/classes/class-admin.php:2508
706
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
707
  msgstr ""
708
 
709
+ #: dist/visual-portfolio/classes/class-admin.php:2523, dist/visual-portfolio/classes/class-admin.php:2538
710
  msgid "Texts"
711
  msgstr ""
712
 
713
+ #: dist/visual-portfolio/classes/class-admin.php:2555, dist/visual-portfolio/classes/class-admin.php:2556, dist/visual-portfolio/classes/class-admin.php:2609, dist/visual-portfolio/classes/class-admin.php:2610
714
  msgid "Load more button label"
715
  msgstr ""
716
 
717
+ #: dist/visual-portfolio/classes/class-admin.php:2572, dist/visual-portfolio/classes/class-admin.php:2626
718
  msgid "Loading More..."
719
  msgstr ""
720
 
721
+ #: dist/visual-portfolio/classes/class-admin.php:2573, dist/visual-portfolio/classes/class-admin.php:2574, dist/visual-portfolio/classes/class-admin.php:2627, dist/visual-portfolio/classes/class-admin.php:2628
722
  msgid "Loading more button label"
723
  msgstr ""
724
 
725
+ #: dist/visual-portfolio/classes/class-admin.php:2590, dist/visual-portfolio/classes/class-admin.php:2644
726
  msgid "You’ve reached the end of the list"
727
  msgstr ""
728
 
729
+ #: dist/visual-portfolio/classes/class-admin.php:2591, dist/visual-portfolio/classes/class-admin.php:2592, dist/visual-portfolio/classes/class-admin.php:2645, dist/visual-portfolio/classes/class-admin.php:2646
730
  msgid "End of the list text"
731
  msgstr ""
732
 
733
+ #: dist/visual-portfolio/classes/class-admin.php:2676
734
  msgid "Display Numbers"
735
  msgstr ""
736
 
737
+ #: dist/visual-portfolio/classes/class-admin.php:2691
738
  msgid "Scroll to Top"
739
  msgstr ""
740
 
741
+ #: dist/visual-portfolio/classes/class-admin.php:2706
742
  msgid "Scroll to Top Offset"
743
  msgstr ""
744
 
745
+ #: dist/visual-portfolio/classes/class-admin.php:2724
746
  msgid "Hide on Reached End"
747
  msgstr ""
748
 
749
+ #: dist/visual-portfolio/classes/class-admin.php:2754
750
  msgid "Use <code>selector</code> rule to change block styles."
751
  msgstr ""
752
 
753
+ #: dist/visual-portfolio/classes/class-admin.php:2755
754
  msgid "Example:"
755
  msgstr ""
756
 
757
+ #: dist/visual-portfolio/classes/class-admin.php:2801
758
  msgid "Manual Selection"
759
  msgstr ""
760
 
761
+ #: dist/visual-portfolio/classes/class-admin.php:2811
762
  msgid "Current Query"
763
  msgstr ""
764
 
1009
  msgid "Select Layout"
1010
  msgstr ""
1011
 
 
 
 
 
1012
  #: dist/visual-portfolio/classes/class-get-portfolio.php:1692
1013
  msgid "Default sorting"
1014
  msgstr ""
readme.md CHANGED
@@ -5,7 +5,7 @@
5
  * Requires at least: 5.4
6
  * Tested up to: 5.5
7
  * Requires PHP: 5.5.9
8
- * Stable tag: 2.8.1
9
  * License: GPLv2 or later
10
  * License URI: <http://www.gnu.org/licenses/gpl-2.0.html>
11
 
@@ -122,10 +122,14 @@ The Visual Portfolio plugin is also available in a professional version which in
122
  * Instagram
123
  * Youtube
124
  * Vimeo
 
125
  * Flickr
126
  * Twitter
127
  * Dribbble
128
  * Stylish interaction effects
 
 
 
129
  * Instagram-like image filters for normal and hover states
130
  * AJAX Improvements
131
  * Advanced query builder settings
@@ -163,36 +167,66 @@ The manual installation method involves downloading our Visual Portfolio plugin
163
 
164
  ## Frequently Asked Questions ##
165
 
166
- ### How to disable enqueued plugins (JS, CSS) on frontend ####
167
 
168
- [https://visualportfolio.co/documentation/developers/disable-enqueued-plugins-js-css/](https://visualportfolio.co/documentation/developers/disable-enqueued-plugins-js-css/)
169
 
170
- ### How to use my custom taxonomy as filter ####
171
 
172
- [https://visualportfolio.co/documentation/developers/custom-taxonomy-for-filter/](https://visualportfolio.co/documentation/developers/custom-taxonomy-for-filter/)
173
 
174
- ### How to change default templates and styles ####
175
 
176
- [https://visualportfolio.co/documentation/developers/changing-default-templates-and-styles/](https://visualportfolio.co/documentation/developers/changing-default-templates-and-styles/)
177
 
178
- ### DEV: WP filters ####
179
 
180
- [https://visualportfolio.co/documentation/developers/wordpress-filters/](https://visualportfolio.co/documentation/developers/wordpress-filters/)
181
 
182
- ### DEV: Controls ####
183
 
184
- [https://visualportfolio.co/documentation/developers/wordpress-filters/controls/](https://visualportfolio.co/documentation/developers/wordpress-filters/controls/)
185
 
186
- ### DEV: jQuery events ####
187
 
188
- [https://visualportfolio.co/documentation/developers/jquery-events/](https://visualportfolio.co/documentation/developers/jquery-events/)
189
 
190
- ### DEV: jQuery methods ####
191
 
192
- [https://visualportfolio.co/documentation/developers/jquery-methods/](https://visualportfolio.co/documentation/developers/jquery-methods/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
 
194
  ## Changelog ##
195
 
 
 
 
 
 
 
 
 
 
 
 
196
  = 2.8.1 =
197
 
198
  * fixed preloader SVG position
@@ -566,7 +600,7 @@ Log:
566
  * added Pause on Mouse Over option in Slider with Autoplay
567
  * added Free Scroll Sticky option in Slider
568
  * added figure and figcaption tags in portfolio items in layouts
569
- * added 'author' supports to portfolio posts
570
  * added new jQuery events 'beforeInitIsotope', 'beforeInitFjGallery', 'beforeInitSwiper', so the options could be changed before plugins init
571
  * changed meta blocks top margin
572
  * fixed post-based custom taxonomy and specific posts selector saving in WordPress 5.1
@@ -679,7 +713,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
679
 
680
  = 1.6.3 =
681
 
682
- * added portfolio preview iframe in Gutenberg block
683
  * changed portfolio default image sizes (since we use Lazyload, we can use larger image sizes)
684
  * updated FontAwesome to 5.2.0
685
  * fixed Slider styles when used 2 sliders on the page
@@ -688,7 +722,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
688
 
689
  = 1.6.2 =
690
 
691
- * additional check for isotope and fjGallery existence
692
  * added init outside of 'ready' event (possible faster initialization)
693
  * fixed lazyload possible conflict with the 3rd-party themes/plugins
694
 
@@ -699,7 +733,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
699
  = 1.6.0 =
700
 
701
  * NOTE: strongly recommend to regenerate thumbnails on your site using [this plugin](https://wordpress.org/plugins/regenerate-thumbnails/)
702
- * added lazy loading for images
703
  * added will-change styles in templates (animations should work smoother)
704
  * added new Tiles
705
  * added pagination paged arrows options
@@ -712,7 +746,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
712
  * always enqueued main style on all pages
713
  * changed carousel arrows shadow
714
  * fixed validation errors (added space between data attributes)
715
- * fixed video popup position
716
  * fixed portfolio bugged reload in preview
717
  * renamed nk-spinner to vp-spinner
718
  * removed double slash in custom theme template styles urls
@@ -720,11 +754,11 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
720
 
721
  = 1.5.0 =
722
 
723
- * added Slider (+ Carousel, Coverflow) layout
724
  * added capabilities check when generated preview page
725
  * improved responsive calculation algorithm
726
  * disabled preview page caching by some popular caching plugins
727
- * fixed isotope newly loaded items jumping
728
  * fixed conditions usage on controls in 3rd-party extensions
729
  * fixed PHP notices when trying to extend portfolio options
730
  * fixed Data source selected item (was always Post selected)
@@ -734,7 +768,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
734
 
735
  = 1.4.3 =
736
 
737
- * added check for template existance before include it (to prevent errors when 3rd-party devs don't added templates)
738
  * fixed random order duplicates when used pagination
739
  * fixed errors in PHP < 5.5
740
  * disabled Infinite Load pagination in the Portfolio preview
@@ -757,13 +791,13 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
757
 
758
  = 1.4.0 =
759
 
760
- * added Justified layout
761
  * added custom user images support in Content Source settings
762
  * added Gutenberg block to easily insert layouts
763
  * added Random order in Post-Based content source
764
  * added spinner to load more button
765
  * added setting to change portfolio slug
766
- * fixed video playing when popup were closed
767
  * fixed filter in post-based with taxonomies selected
768
  * fixed w3c validation error when enqueuing template styles
769
  * fixed specific posts selector ajax result
@@ -781,7 +815,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
781
  * added possibility to change date format
782
  * added frontend WPBakery Page Builder support
783
  * added support for post ordering plugins (Intuitive Custom Post Order)
784
- * fixed popup video jumping
785
  * fixed some php errors in preview
786
  * fixed photoswipe duplicates if on the page > 1 visual portfolio with popup gallery
787
  * fixed permalinks flush on activation and deactivation
@@ -799,7 +833,7 @@ Note: Don't forget to clear cache after plugin update. Changed portfolios with p
799
  * added share button in popup gallery
800
  * added "Edit Portfolio Item" button in admin menu on frontend
801
  * added option to show filter items count
802
- * added option to show publised date in human format
803
  * added notice if no items found
804
  * added support for jetpack portfolio type filter
805
  * added portfolio tags support
5
  * Requires at least: 5.4
6
  * Tested up to: 5.5
7
  * Requires PHP: 5.5.9
8
+ * Stable tag: 2.8.2
9
  * License: GPLv2 or later
10
  * License URI: <http://www.gnu.org/licenses/gpl-2.0.html>
11
 
122
  * Instagram
123
  * Youtube
124
  * Vimeo
125
+ * Google Photos
126
  * Flickr
127
  * Twitter
128
  * Dribbble
129
  * Stylish interaction effects
130
+ * Hover Tilt Effect
131
+ * Custom Hover Image (useful for animated GIFs)
132
+ * Caption Move Style
133
  * Instagram-like image filters for normal and hover states
134
  * AJAX Improvements
135
  * Advanced query builder settings
167
 
168
  ## Frequently Asked Questions ##
169
 
170
+ ### Does Visual Portfolio has documentation? ####
171
 
172
+ Yes, our plugin has documentation to easily get started with galleries. Read it here - [Visual Portfolio Documentation](https://visualportfolio.co/documentation/getting-started/)
173
 
174
+ ### What themes does Visual Portfolio support? ####
175
 
176
+ Visual Portfolio has been tested with many WordPress themes and supports all major WordPress themes. Since we follow WordPress’ plugin development guidelines, you can rest assured that Visual Portfolio galleries will work perfectly, no matter what theme you use. If you’ve installed Visual Portfolio and are facing issues, it might not be because of a theme incompatibility. Please get in touch with the support team by opening a support ticket in our support forum, and we will fix it for you.
177
 
178
+ ### Do I have to remove other Gallery and Portfolio plugins if I install Visual Portfolio? ####
179
 
180
+ That is recommended. Visual Portfolio is designed to be an all in one Gallery and Portfolio plugin. If you use other Gallery plugins with Visual Portfolio on your website, not only will the performance of your website be negatively affected, but both plugins working together can produce unexpected conflicts or errors.
181
 
182
+ ### Are the galleries mobile friendly? ####
183
 
184
+ Yes, Visual Portfolio built with mobile optimization in mind. It will automatically fit your screen size, so you don't need to worry about. Furthermore, we prepared lazy loading, which significantly increases page loading speed. Before making a decision, just check by yourself how [Visual Portfolio works on mobile devices](https://visualportfolio.co/masonry/).
185
 
186
+ ### Can I upload multiple images at once? ####
187
 
188
+ Yes, you can batch upload entire photo galleries at one time thanks to WordPress media library functionality.
189
 
190
+ ### Is there pagination for photo galleries? ####
191
 
192
+ Yes, you can use 3 type of pagination when displaying photo galleries or posts. Choose the number of photos to display and select Paged, Load More or Infinite Loading pagination. Examples with all gallery pagination types are [available on the Visual Portfolio website](https://visualportfolio.co/).
193
 
194
+ ### Can I filter images and portfolio items by categories? ####
195
 
196
+ Yes, our plugin has built in support for AJAX Filter by items categories. See a couple of examples:
197
+
198
+ * [Category filtering with links](https://visualportfolio.co/grid/)
199
+ * [Category filtering + Sort with Select](https://visualportfolio.co/filterable-and-sortable/)
200
+
201
+ ### Can I add an external links to galleries? ####
202
+
203
+ Yes, you can add external links to your gallery items.
204
+
205
+ ### Is Visual Portfolio developers friendly? ####
206
+
207
+ Yes, we prepared a lot of filters and actions for developers, so you can easily extend default functionality for your need. [Read here more info for developers](https://visualportfolio.co/documentation/developers/).
208
+
209
+ ### Is Visual Portfolio translation ready? ####
210
+
211
+ Yes, Visual Portfolio has full translation and localization support via the `visual-portfolio` textdomain. To submit a translation, see <https://translate.wordpress.org/projects/wp-plugins/visual-portfolio/>
212
+
213
+ ### More Information ####
214
+
215
+ For more information, feel free to visit [Visual Portfolio official website](https://visualportfolio.co/).
216
 
217
  ## Changelog ##
218
 
219
+ = 2.8.2 =
220
+
221
+ * added option to change No Items notice
222
+ * removed changing opacity of items while AJAX loading
223
+ * fixed (finally!) wrong items position when used Default Items Style + Justified Layout
224
+ * fixed wrong preview iframe URL on WP Multisite
225
+ * fixed Ghost Kit animate on scroll extension compatibility <https://ghostkit.io/extensions/animate-on-scroll/>
226
+ * fixed duplicates in popup gallery, when used carousel with loop
227
+ * fixed preloader animation styles conflict with some themes
228
+ * fixed PHP warning "non-numeric value encountered"
229
+
230
  = 2.8.1 =
231
 
232
  * fixed preloader SVG position
600
  * added Pause on Mouse Over option in Slider with Autoplay
601
  * added Free Scroll Sticky option in Slider
602
  * added figure and figcaption tags in portfolio items in layouts
603
+ * added 'author' supports to portfolio posts to display in your galleries
604
  * added new jQuery events 'beforeInitIsotope', 'beforeInitFjGallery', 'beforeInitSwiper', so the options could be changed before plugins init
605
  * changed meta blocks top margin
606
  * fixed post-based custom taxonomy and specific posts selector saving in WordPress 5.1
713
 
714
  = 1.6.3 =
715
 
716
+ * added portfolio gallery preview iframe in Gutenberg block
717
  * changed portfolio default image sizes (since we use Lazyload, we can use larger image sizes)
718
  * updated FontAwesome to 5.2.0
719
  * fixed Slider styles when used 2 sliders on the page
722
 
723
  = 1.6.2 =
724
 
725
+ * additional check for isotope and Flickr Justified Gallery existence
726
  * added init outside of 'ready' event (possible faster initialization)
727
  * fixed lazyload possible conflict with the 3rd-party themes/plugins
728
 
733
  = 1.6.0 =
734
 
735
  * NOTE: strongly recommend to regenerate thumbnails on your site using [this plugin](https://wordpress.org/plugins/regenerate-thumbnails/)
736
+ * added lazy loading for gallery images
737
  * added will-change styles in templates (animations should work smoother)
738
  * added new Tiles
739
  * added pagination paged arrows options
746
  * always enqueued main style on all pages
747
  * changed carousel arrows shadow
748
  * fixed validation errors (added space between data attributes)
749
+ * fixed video popup gallery position
750
  * fixed portfolio bugged reload in preview
751
  * renamed nk-spinner to vp-spinner
752
  * removed double slash in custom theme template styles urls
754
 
755
  = 1.5.0 =
756
 
757
+ * added Slider (+ Carousel, Coverflow) layout gallery
758
  * added capabilities check when generated preview page
759
  * improved responsive calculation algorithm
760
  * disabled preview page caching by some popular caching plugins
761
+ * fixed isotope newly loaded gallery items jumping
762
  * fixed conditions usage on controls in 3rd-party extensions
763
  * fixed PHP notices when trying to extend portfolio options
764
  * fixed Data source selected item (was always Post selected)
768
 
769
  = 1.4.3 =
770
 
771
+ * added check for template existence before include it (to prevent errors when 3rd-party devs don't added templates)
772
  * fixed random order duplicates when used pagination
773
  * fixed errors in PHP < 5.5
774
  * disabled Infinite Load pagination in the Portfolio preview
791
 
792
  = 1.4.0 =
793
 
794
+ * added Justified gallery layout
795
  * added custom user images support in Content Source settings
796
  * added Gutenberg block to easily insert layouts
797
  * added Random order in Post-Based content source
798
  * added spinner to load more button
799
  * added setting to change portfolio slug
800
+ * fixed video playing when popup gallery were closed
801
  * fixed filter in post-based with taxonomies selected
802
  * fixed w3c validation error when enqueuing template styles
803
  * fixed specific posts selector ajax result
815
  * added possibility to change date format
816
  * added frontend WPBakery Page Builder support
817
  * added support for post ordering plugins (Intuitive Custom Post Order)
818
+ * fixed popup video gallery jumping
819
  * fixed some php errors in preview
820
  * fixed photoswipe duplicates if on the page > 1 visual portfolio with popup gallery
821
  * fixed permalinks flush on activation and deactivation
833
  * added share button in popup gallery
834
  * added "Edit Portfolio Item" button in admin menu on frontend
835
  * added option to show filter items count
836
+ * added option to show published date in human format
837
  * added notice if no items found
838
  * added support for jetpack portfolio type filter
839
  * added portfolio tags support
wpml-config.xml CHANGED
@@ -9,6 +9,7 @@
9
  <key name="categories" />
10
  </key>
11
  </key>
 
12
  <key name="items_style_default__date_format" />
13
  <key name="items_style_fade__date_format" />
14
  <key name="items_style_fly__date_format" />
9
  <key name="categories" />
10
  </key>
11
  </key>
12
+ <key name="no_items_notice" />
13
  <key name="items_style_default__date_format" />
14
  <key name="items_style_fade__date_format" />
15
  <key name="items_style_fly__date_format" />