Version Description
Download this release
Release Info
Developer | nko |
Plugin | 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 +1 -1
- assets/admin/js/mce-dropdown.js +1 -1
- assets/admin/js/script.js +1 -1
- assets/admin/js/vc-frontend.js +1 -1
- assets/css/layout-justified-rtl.min.css +1 -1
- assets/css/layout-justified.min.css +1 -1
- assets/css/main-rtl.min.css +1 -1
- assets/css/main.min.css +1 -1
- assets/js/plugin-fj-gallery.js +1 -0
- assets/js/plugin-fj-gallery.min.js +1 -1
- assets/js/popup-gallery.js +6 -2
- assets/js/popup-gallery.min.js +1 -1
- assets/js/preview.js +1 -1
- assets/vendor/flickr-justified-gallery/dist/fjGallery.css +4 -2
- assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js +5 -5
- assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js.map +1 -1
- class-visual-portfolio.php +1 -1
- classes/class-admin.php +15 -5
- classes/class-assets.php +6 -6
- classes/class-custom-post-type.php +2 -2
- classes/class-elementor-widget.php +2 -2
- classes/class-get-portfolio.php +2 -2
- classes/class-gutenberg-saved.php +8 -1
- classes/class-gutenberg.php +11 -4
- classes/class-migration.php +1 -1
- classes/class-preview.php +3 -3
- classes/class-supported-themes.php +1 -1
- classes/class-tinymce.php +1 -1
- classes/class-vc.php +1 -1
- languages/visual-portfolio.pot +81 -77
- readme.md +61 -27
- wpml-config.xml +1 -0
assets/admin/js/elementor.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
* Additional js for Elementor
|
3 |
*
|
4 |
* Name : Visual Portfolio
|
5 |
-
* Version : 2.8.
|
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.
|
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.
|
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.
|
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)
|
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)
|
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
|
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
|
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 |
-
|
|
|
|
|
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 |
-
|
|
|
|
|
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
|
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.
|
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
|
16 |
-
transition: .2s transform 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.
|
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"===
|
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,
|
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
|
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":"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","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.
|
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.
|
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.
|
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.
|
62 |
-
wp_enqueue_style( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.css', array(), '2.8.
|
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
|
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.
|
102 |
} elseif ( is_string( $data['value'] ) ) {
|
103 |
-
visual_portfolio()->include_template_style( $name, $data['value'], array(), '2.8.
|
104 |
} else {
|
105 |
-
wp_enqueue_style( $name, '', array(), '2.8.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
37 |
|
38 |
-
wp_register_style( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/css/elementor.min.css', array(), '2.8.
|
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(
|
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
|
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
|
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.
|
170 |
true
|
171 |
);
|
172 |
wp_enqueue_style(
|
173 |
'visual-portfolio-gutenberg',
|
174 |
plugins_url( '../gutenberg/style.min.css', __FILE__ ),
|
175 |
array(),
|
176 |
-
'2.8.
|
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.
|
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.
|
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(
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
524 |
msgid "Break container and display it wide"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
528 |
msgid "Gap"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
532 |
msgid "Vertical Gap"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
536 |
msgid "When empty, used Gap option"
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
540 |
msgid "Images Rounded Corners"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
544 |
msgid "Display Title"
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
548 |
msgid "Display Categories"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
552 |
msgid "Categories Count"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
556 |
msgid "Display Date"
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
560 |
msgid "Human Format"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
564 |
msgid ""
|
565 |
"Date format
|
566 |
" Example: F j, Y"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
570 |
msgid "Display Author"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
574 |
msgid "Display Comments Count"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
578 |
msgid "Display Views Count"
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
582 |
msgid "Display Reading Time"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
586 |
msgid "Display Excerpt"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
590 |
msgid "Excerpt Words Count"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
594 |
msgid "Display Icon"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
598 |
msgid "Caption Align"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
602 |
msgid "Disabled"
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
606 |
msgid "Popup"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
610 |
msgid "Target"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
614 |
msgid "New Tab (_blank)"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
618 |
msgid "Top Frame (_top)"
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
622 |
msgid "Rel"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
626 |
msgid "Display pages in popup iframe, not just images."
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
630 |
msgid "Top"
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
634 |
msgid "Bottom"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
638 |
msgid "Filter"
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
642 |
msgid "Sort"
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
646 |
msgid "Search"
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
650 |
msgid "Items"
|
651 |
msgstr ""
|
652 |
|
653 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
654 |
msgid "Pagination"
|
655 |
msgstr ""
|
656 |
|
657 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
658 |
msgid "Minimal"
|
659 |
msgstr ""
|
660 |
|
661 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
662 |
msgid "Dropdown"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
666 |
msgid "Display Count"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
670 |
msgid "All Button Text"
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
674 |
msgid "All"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
678 |
msgid "The search module is only available for PRO users."
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
682 |
msgid "Type"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
686 |
msgid "Paged"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
690 |
msgid "Load More"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
694 |
msgid "Infinite"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
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:
|
702 |
msgid "Texts"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
706 |
msgid "Load more button label"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
710 |
msgid "Loading More..."
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
714 |
msgid "Loading more button label"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
718 |
msgid "You’ve reached the end of the list"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
722 |
msgid "End of the list text"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
726 |
msgid "Display Numbers"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
730 |
msgid "Scroll to Top"
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
734 |
msgid "Scroll to Top Offset"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
738 |
msgid "Hide on Reached End"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
742 |
msgid "Use <code>selector</code> rule to change block styles."
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
746 |
msgid "Example:"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
750 |
msgid "Manual Selection"
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: dist/visual-portfolio/classes/class-admin.php:
|
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.
|
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 |
-
###
|
167 |
|
168 |
-
|
169 |
|
170 |
-
###
|
171 |
|
172 |
-
|
173 |
|
174 |
-
###
|
175 |
|
176 |
-
|
177 |
|
178 |
-
###
|
179 |
|
180 |
-
[
|
181 |
|
182 |
-
###
|
183 |
|
184 |
-
|
185 |
|
186 |
-
###
|
187 |
|
188 |
-
[
|
189 |
|
190 |
-
###
|
191 |
|
192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
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
|
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
|
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" />
|