Visual Portfolio, Photo Gallery & Post Grid - Version 1.6.0

Version Description

Download this release

Release Info

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

Code changes from version 1.5.0 to 1.6.0

Files changed (55) hide show
  1. assets/admin/css/gutenberg-block.min.css +1 -1
  2. assets/admin/css/style.min.css +1 -1
  3. assets/admin/images/layouts/tiles-2-3.svg +0 -2
  4. assets/admin/images/layouts/tiles-2-4.svg +2 -2
  5. assets/admin/images/layouts/tiles-2-5.svg +4 -5
  6. assets/admin/images/layouts/tiles-2-6.svg +15 -0
  7. assets/admin/images/layouts/tiles-3-10.svg +11 -6
  8. assets/admin/images/layouts/tiles-3-11.svg +12 -6
  9. assets/admin/images/layouts/tiles-3-12.svg +22 -0
  10. assets/admin/images/layouts/tiles-3-13.svg +17 -0
  11. assets/admin/images/layouts/tiles-3-14.svg +18 -0
  12. assets/admin/images/layouts/tiles-3-15.svg +17 -0
  13. assets/admin/images/layouts/tiles-3-3.svg +6 -10
  14. assets/admin/images/layouts/tiles-3-4.svg +9 -8
  15. assets/admin/images/layouts/tiles-3-5.svg +3 -3
  16. assets/admin/images/layouts/tiles-3-6.svg +3 -3
  17. assets/admin/images/layouts/tiles-3-7.svg +2 -1
  18. assets/admin/images/layouts/tiles-3-8.svg +7 -11
  19. assets/admin/images/layouts/tiles-3-9.svg +6 -5
  20. assets/admin/images/layouts/tiles-4-3.svg +15 -9
  21. assets/admin/images/layouts/tiles-4-4.svg +12 -6
  22. assets/admin/images/layouts/tiles-4-5.svg +17 -0
  23. assets/admin/js/gutenberg-block.min.js +1 -1
  24. assets/admin/js/mce-dropdown.min.js +1 -1
  25. assets/admin/js/script.min.js +1 -1
  26. assets/admin/js/vc-frontend.min.js +1 -1
  27. assets/css/style.min.css +2 -2
  28. assets/js/script-preview.min.js +1 -1
  29. assets/js/script.min.js +1 -1
  30. assets/vendor/flickr-justified-gallery/fjGallery.js +22 -1
  31. assets/vendor/flickr-justified-gallery/fjGallery.min.js +5 -5
  32. assets/vendor/flickr-justified-gallery/fjGallery.min.js.map +1 -1
  33. assets/vendor/lazysizes/lazysizes.min.js +2 -0
  34. class-visual-portfolio.php +21 -5
  35. classes/class-admin.php +237 -22
  36. classes/class-controls.php +39 -0
  37. classes/class-extend.php +20 -0
  38. classes/class-get-portfolio.php +142 -76
  39. classes/class-images.php +215 -0
  40. languages/visual-portfolio.pot +124 -124
  41. readme.md +71 -5
  42. templates/items-list/filter/style.css +1 -1
  43. templates/items-list/filter/style.scss +1 -0
  44. templates/items-list/items-style/emerge/meta.php +1 -1
  45. templates/items-list/items-style/emerge/style.css +1 -1
  46. templates/items-list/items-style/emerge/style.scss +3 -0
  47. templates/items-list/items-style/fade/meta.php +1 -3
  48. templates/items-list/items-style/fade/style.css +1 -1
  49. templates/items-list/items-style/fade/style.scss +3 -0
  50. templates/items-list/items-style/fly/meta.php +1 -3
  51. templates/items-list/items-style/style.css +1 -1
  52. templates/items-list/items-style/style.scss +92 -90
  53. templates/items-list/pagination/paged.php +2 -2
  54. templates/items-list/pagination/style.css +1 -1
  55. templates/items-list/pagination/style.scss +3 -2
assets/admin/css/gutenberg-block.min.css CHANGED
@@ -1 +1 @@
1
- .wp-block-nk-visual-portfolio{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-height:0;padding:14px;background-color:#f8f9f9}.wp-block-nk-visual-portfolio .components-placeholder__label{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin-right:14px;margin-bottom:0}.wp-block-nk-visual-portfolio .components-placeholder__label ~ *{width:auto}.wp-block-nk-visual-portfolio .visual-portfolio-gutenberg-icon{width:23px;height:23px;margin-right:10px;margin-bottom:0}.wp-block-nk-visual-portfolio .components-placeholder__fieldset{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wp-block-nk-visual-portfolio .components-placeholder__fieldset>a{margin-right:10px}.wp-block-nk-visual-portfolio .spinner,.wp-block-nk-visual-portfolio .components-base-control{margin:0}img.visual-portfolio-gutenberg-icon{pointer-events:none}.editor-default-block-appender .editor-inserter-with-shortcuts .components-icon-button img.visual-portfolio-gutenberg-icon{opacity:.4;-webkit-transition:.2s opacity;transition:.2s opacity}.editor-default-block-appender:hover .editor-inserter-with-shortcuts .components-icon-button img.visual-portfolio-gutenberg-icon{opacity:1}.editor-inserter__block img.visual-portfolio-gutenberg-icon{opacity:.6}.editor-block-inspector__card-icon img.visual-portfolio-gutenberg-icon{width:100%;opacity:.6}.editor-inserter__block:not(:disabled):hover img.visual-portfolio-gutenberg-icon,.editor-inserter__block:not(:disabled).is-active img.visual-portfolio-gutenberg-icon,.editor-inserter__block:not(:disabled):active img.visual-portfolio-gutenberg-icon,.editor-inserter__block:not(:disabled):focus img.visual-portfolio-gutenberg-icon{opacity:1}
1
+ .wp-block-nk-visual-portfolio{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-height:0;padding:14px;background-color:#f8f9f9}.wp-block-nk-visual-portfolio .components-placeholder__label{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin-right:14px;margin-bottom:0}.wp-block-nk-visual-portfolio .components-placeholder__label ~ *{width:auto}.wp-block-nk-visual-portfolio .visual-portfolio-gutenberg-icon{width:23px;min-width:23px;height:23px;min-height:23px;margin-right:10px;margin-bottom:0}.wp-block-nk-visual-portfolio .components-placeholder__fieldset{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wp-block-nk-visual-portfolio .components-placeholder__fieldset>a{margin-right:10px}.wp-block-nk-visual-portfolio .spinner,.wp-block-nk-visual-portfolio .components-base-control{margin:0}img.visual-portfolio-gutenberg-icon{pointer-events:none}
assets/admin/css/style.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 1.5.0
4
  * Author : nK https://nkdev.info
5
  */.dashicons-visual-portfolio,.dashicons-visual-portfolio-gray,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:15px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.dashicons-visual-portfolio-gray,.mce-i-visual-portfolio-gray{background-image:url("../images/icon-gray.svg")}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-vc.png");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:right;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:-15px;margin-left:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:15px;padding-left:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.post-type-vp_lists.post-php,.post-type-vp_lists.post-new-php{background-color:#edeff0}.post-type-vp_lists.post-php #wpcontent,.post-type-vp_lists.post-new-php #wpcontent{padding-left:0}.post-type-vp_lists.post-php .wrap,.post-type-vp_lists.post-new-php .wrap{margin:0}.post-type-vp_lists.post-php #poststuff,.post-type-vp_lists.post-new-php #poststuff{padding-top:0}.post-type-vp_lists.post-php #wpfooter,.post-type-vp_lists.post-new-php #wpfooter{display:none}.post-type-vp_lists.post-php #wpbody-content,.post-type-vp_lists.post-new-php #wpbody-content{padding-bottom:0}.post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,.post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{position:fixed;top:0;right:300px;bottom:0;width:300px;overflow:auto;-webkit-overflow-scrolling:touch}html.wp-toolbar .post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,html.wp-toolbar .post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{top:32px}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,.post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{position:relative;top:auto;right:auto;bottom:auto;width:100%;margin-right:0}}.post-type-vp_lists.post-php #postbox-container-2,.post-type-vp_lists.post-new-php #postbox-container-2{position:absolute;top:0;right:0;bottom:0;left:0;width:calc(100% - 300px);min-height:calc(100vh - 32px);overflow:auto;-webkit-overflow-scrolling:touch}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php #postbox-container-2,.post-type-vp_lists.post-new-php #postbox-container-2{right:0;bottom:auto;width:100%}}.post-type-vp_lists.post-php .columns-2 #side-sortables,.post-type-vp_lists.post-new-php .columns-2 #side-sortables{width:auto}.post-type-vp_lists.post-php .notice,.post-type-vp_lists.post-new-php .notice{margin:0;margin-right:300px;margin-bottom:1px}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php .notice,.post-type-vp_lists.post-new-php .notice{margin-right:0}}.post-type-vp_lists.post-php #poststuff .postbox,.post-type-vp_lists.post-new-php #poststuff .postbox{margin-bottom:0;border-color:#e2e4e7;border-top:0;border-right:0}.post-type-vp_lists.post-php #poststuff .postbox>h2,.post-type-vp_lists.post-new-php #poststuff .postbox>h2{padding:15px;border-bottom:none}.post-type-vp_lists.post-php #poststuff .postbox>.handlediv,.post-type-vp_lists.post-new-php #poststuff .postbox>.handlediv{height:50px}.post-type-vp_lists.post-php #poststuff .postbox>.inside,.post-type-vp_lists.post-new-php #poststuff .postbox>.inside{padding:15px;padding-top:0}.vp-control{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:19px}.vp-control>label{width:100%;margin-bottom:5px}.vp-control>.vp-control-description{width:100%;margin:2px 0 5px;font-size:13px;font-style:italic;color:#666}.vp-control.vp-control-checkbox,.vp-control.vp-control-toggle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.vp-control.vp-control-checkbox>label,.vp-control.vp-control-toggle>label{margin-bottom:0}.vp-control.vp-control-textarea textarea{width:100%}.vp-image-picker{display:none}.vp-image-picker,.vp-image-picker *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-image-picker+ul.thumbnails.image_picker_selector li{margin:0 10px 10px 0}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail{padding:0;cursor:pointer;border:none}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail img{display:block;border:2px solid transparent}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail.selected{background-color:transparent}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail.selected img{border-color:#0073aa}.vp-image-picker+ul.thumbnails.image_picker_selector .group_title{padding-top:5px;padding-left:5px;font-weight:500}.vp-control-range [type="number"]{width:50px;margin-left:10px}.vp-control-range [type="range"]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;padding:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vp-control-range [type="range"]::-webkit-slider-thumb{-webkit-box-sizing:border-box;box-sizing:border-box;width:18px;height:18px;margin-top:-7px;cursor:pointer;background:#555d66;background-clip:padding-box;border:4px solid transparent;border-radius:50%;-webkit-appearance:none;appearance:none}.vp-control-range [type="range"]::-moz-range-thumb{box-sizing:border-box;width:18px;height:18px;cursor:pointer;background:#555d66;background-clip:padding-box;border:4px solid transparent;border-radius:50%}.vp-control-range [type="range"]::-ms-thumb{box-sizing:border-box;width:14px;height:14px;margin-top:0;cursor:pointer;background:#555d66;background-clip:padding-box;border:2px solid transparent;border-radius:50%}.vp-control-range [type="range"]:focus{outline:none}.vp-control-range [type="range"]:focus::-webkit-slider-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;-webkit-box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]:focus::-moz-range-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]:focus::-ms-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]::-webkit-slider-runnable-track{height:3px;margin-top:-4px;cursor:pointer;background:#e2e4e7;border-radius:1.5px}.vp-control-range [type="range"]::-moz-range-track{height:3px;cursor:pointer;background:#e2e4e7;border-radius:1.5px}.vp-control-range [type="range"]::-ms-track{height:3px;margin-top:-4px;color:transparent;cursor:pointer;background:#e2e4e7;border-color:transparent;border-radius:1.5px}.vp-control-toggle,.vp-control-toggle *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-control-toggle .vp-toggle{position:relative}.vp-control-toggle .vp-toggle .vp-toggle__track{content:"";display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:36px;height:18px;vertical-align:top;background-color:#fff;border:2px solid #6c7781;border-radius:9px;-webkit-transition:background .2s ease;transition:background .2s ease}.vp-control-toggle .vp-toggle .vp-toggle__track::after{content:"";position:absolute;display:block;top:50%;right:5px;width:3px;height:3px;margin-top:-3px;border:1.5px solid #6c7781;border-radius:3px}.vp-control-toggle .vp-toggle:hover .vp-toggle__track{background-color:#e2e4e7}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__track{background-color:#33b3db;border:2px solid #33b3db}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__track::after{top:50%;right:auto;left:8px;width:0;height:5px;margin-top:-3px;border:0;border-right:2px solid #fff;border-radius:0}.vp-control-toggle .vp-toggle .vp-toggle__thumb{position:absolute;display:block;top:4px;left:4px;width:10px;height:10px;background-color:#6c7781;border:5px solid #6c7781;border-radius:50%;-webkit-transition:-webkit-transform .1s ease;transition:-webkit-transform .1s ease;transition:transform .1s ease;transition:transform .1s ease, -webkit-transform .1s ease}.vp-control-toggle .vp-toggle [type="checkbox"]:focus ~ .vp-toggle__track{-webkit-box-shadow:0 0 0 2px #fff, 0 0 0 3px #6c7781;box-shadow:0 0 0 2px #fff, 0 0 0 3px #6c7781}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__thumb{background-color:#fff;border-width:0;-webkit-transform:translateX(18px);transform:translateX(18px)}.vp-control-toggle .vp-toggle [type="checkbox"]{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;margin:0;opacity:0;z-index:1}.vp-control-image-dropdown{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:5px 7px;cursor:pointer;background-color:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);box-shadow:inset 0 1px 2px rgba(0,0,0,0.07)}.vp-control-image-dropdown,.vp-control-image-dropdown *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-control-image-dropdown::before{content:"";position:absolute;display:block;top:50%;right:6px;width:0;height:0;margin-top:-2px;border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px}.vp-control-image-dropdown.active::before{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.vp-control-image-dropdown .vp-control-image-dropdown__preview{display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:32px}.vp-control-image-dropdown .vp-control-image-dropdown__preview img{display:block;width:100%;height:auto}.vp-control-image-dropdown .vp-control-image-dropdown__title{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-left:10px}.vp-control-image-dropdown .vp-control-image-dropdown__content{position:absolute;display:none;top:100%;left:0;width:100%;max-width:285px;margin-top:7px;margin-left:-1px;cursor:default;background-color:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04);z-index:1}.vp-control-image-dropdown .vp-control-image-dropdown__content>div{width:100%;max-height:250px;padding:4px;overflow:auto}.vp-control-image-dropdown .vp-control-image-dropdown__content::before{content:"";position:absolute;display:block;top:-5px;left:10px;width:0;height:0;border-right:5px solid transparent;border-bottom:5px solid #e5e5e5;border-left:5px solid transparent}.vp-control-image-dropdown .vp-control-image-dropdown__content::after{content:"";position:absolute;display:block;top:-7px;right:0;left:0;height:7px}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector,.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector .group>ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li{display:block;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;float:none;max-width:25%;margin:0}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li.group,.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li.group_title{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail{padding:3px}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li img{width:100%;height:auto}.vp-control-image-dropdown.active .vp-control-image-dropdown__content{display:block}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;vertical-align:top;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs{float:left;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:right}}.vp-portfolio-list .vp-portfolio-list__icon span{display:block;width:120px;height:120px;margin:0 auto;margin-top:60px;background-size:105px}.vp-portfolio-list .vp-portfolio-list__text{text-align:center}.vp-portfolio-list .vp-portfolio-list__text p{margin-top:30px;margin-bottom:30px;font-size:15px;font-weight:500;color:#8e8e8e}.vp-portfolio-list .vp-portfolio-list__text .button-hero{display:inline-block}.vp_list_preview{padding:0 12px;margin-right:-12px;margin-left:-12px}.vp_list_preview iframe{width:100%;min-height:120px;-webkit-transition:height .3s;transition:height .3s}.vp-content-source{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-right:9px;padding-left:9px;margin-right:-15px;margin-left:-15px}.vp-content-source .vp-content-source__item{position:relative;width:70px;height:50px;padding:12px;margin:0 5px;color:#6c7781;text-align:center;cursor:pointer;border:1px solid transparent;border-radius:3px}.vp-content-source .vp-content-source__item.active,.vp-content-source .vp-content-source__item:hover{color:#555;background-color:#ecf0f4}.vp-content-source .vp-content-source__item.active{color:#fff;background-color:#6c7781;border-color:#6c7781}.vp-content-source .vp-content-source__item .vp-content-source__item-icon>span{width:24px;height:24px;margin-top:2px;font-size:24px}.vp-content-source .vp-content-source__item .vp-content-source__item-title{position:absolute;top:58%;right:8px;left:8px;font-weight:500}.vp-content-source .vp-content-source__item-content{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100%}.vp-content-source .vp-content-source__item-content>div{position:relative;display:none;padding:0 15px;padding-bottom:1px;margin-top:12px;margin-right:-9px;margin-bottom:-14px;margin-left:-9px;overflow:hidden;background-color:#f9f9fa;border-top:1px solid #eee}.vp-content-source .vp-content-source__item-content>div:empty{display:none !important}.vp-content-source .vp-content-source__item-content>div.active{display:block}.vp-select2{width:100%}.vp-select2+.select2{width:100%}.post-attributes-label+.vp-select2+.select2{margin-top:5px}.vp-select2+.select2 ul,.vp-select2+.select2 li{margin-bottom:0}.vp-select2+.select2 .select2-selection{border:1px solid #ddd;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);box-shadow:inset 0 1px 2px rgba(0,0,0,0.07)}.vp-select2+.select2.select2-container--open .select2-selection{outline:none}.vp-select2+.select2 .select2-selection--multiple{min-height:27px}.vp-select2+.select2 .select2-selection--multiple .select2-selection__choice{padding:3px 8px;margin-top:3px;color:#fff;background-color:#6c7781;border-color:#6c7781}.vp-select2+.select2 .select2-selection--multiple .select2-selection__choice__remove{float:right;margin-right:0;margin-left:3px;color:inherit;opacity:.5}.select2-vp-container ul,.select2-vp-container li{margin-bottom:0}.select2-vp-container .select2-dropdown{border-color:#ddd}.select2-vp-container .select2-search--dropdown .select2-search__field{padding:3px 4px;border:1px solid #ddd;outline:none;-webkit-box-shadow:none;box-shadow:none}.select2-vp-container .select2-results__option[aria-selected="true"]{background-color:#efeeee}.select2-vp-container .select2-results__option--highlighted[aria-selected]{background-color:#33b3db}.vp-select2-ajax__result{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.vp-select2-ajax__result .vp-select2-ajax__result-img{position:relative;-webkit-box-flex:0;-ms-flex:0 0 35px;flex:0 0 35px;background-color:rgba(0,0,0,0.1);background-position:center center;background-size:cover;border-radius:3px}.vp-select2-ajax__result .vp-select2-ajax__result-img::after{content:"";display:block;width:100%;padding-top:100%}.vp-select2-ajax__result .vp-select2-ajax__result-data{padding-left:10px}.vp-select2-ajax__result .vp-select2-ajax__result-title{font-size:16px;font-weight:500;line-height:1}.vp-select2-ajax__result .vp-select2-ajax__result-post-type{font-size:12px;opacity:.5}.vp-control-gallery .vp-control-gallery-additional-data{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;top:0;right:-350px;bottom:0;width:350px;padding:15px 13px;overflow:auto;background-color:#fff;border-left:1px solid #eaeaea;-webkit-transition:.15s right;transition:.15s right}.vp-control-gallery .vp-control-gallery-additional-data.active{right:0}.vp-control-gallery .vp-control-gallery-additional-data.active+.vp-control-gallery-items{margin-right:335px}@media (max-width: 910px){.vp-control-gallery .vp-control-gallery-additional-data{position:relative;display:none;right:0;width:120%;height:auto;margin-bottom:30px;border:1px solid #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data.active{display:block}.vp-control-gallery .vp-control-gallery-additional-data.active+.vp-control-gallery-items{margin-right:-15px}}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 13px;margin:-15px -13px;margin-bottom:15px;border-bottom:1px solid #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-image{margin-right:15px}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-image img{display:block;width:70px;border-radius:3px;-webkit-box-shadow:0 0 0 1px #fff, 0 0 0 2px #eaeaea;box-shadow:0 0 0 1px #fff, 0 0 0 2px #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-size{color:#8f9498}.vp-control-gallery .vp-control-gallery-items{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;width:120%;height:325px;padding:7px;margin:-12px;margin-bottom:-25px;overflow:auto;-webkit-transition:.15s margin-right;transition:.15s margin-right}.vp-control-gallery .vp-control-gallery-items::after{content:"";display:block;width:100%}.vp-control-gallery .vp-control-gallery-items>div{position:relative;display:block;width:calc(12.5% - 10px);margin:5px;cursor:move;cursor:-webkit-grab;cursor:grab;border-radius:3px}@media (max-width: 1350px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(14.22% - 10px)}}@media (max-width: 1250px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(16.66% - 10px)}}@media (max-width: 1100px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(25% - 10px)}}.vp-control-gallery .vp-control-gallery-items>div::after{content:"";display:block;padding-top:100%}.vp-control-gallery .vp-control-gallery-items>div.sortable-ghost{opacity:.4}.vp-control-gallery .vp-control-gallery-items>div img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;border-radius:3px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img .vp-control-gallery-items-remove{position:absolute;top:-5px;right:-5px;width:20px;height:20px;color:#fff;cursor:pointer;visibility:hidden;background-color:#dc3232;border-radius:50%;opacity:0;-webkit-transition:.15s visibility, .15s opacity;transition:.15s visibility, .15s opacity}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img .vp-control-gallery-items-remove span{width:20px;height:20px;font-size:10px;line-height:20px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img:hover .vp-control-gallery-items-remove{visibility:visible;opacity:1}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img.active{-webkit-box-shadow:0 0 0 1px #fff, 0 0 0 4px #33b3db;box-shadow:0 0 0 1px #fff, 0 0 0 4px #33b3db}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;color:#6c7781;text-align:center;cursor:pointer;background-color:#fff;border:1px solid #ccd3da;border-radius:3px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add>span{position:absolute;top:50%;left:50%;width:24px;height:24px;margin-top:-12px;margin-left:-12px;line-height:24px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add:hover{color:#555;background-color:#f7f7f7}.vp-input{width:100%}.post-type-vp_lists .CodeMirror{width:100%;text-align:left;border:1px solid #ddd}.post-type-vp_lists .CodeMirror .CodeMirror-matchingbracket{color:inherit;background:rgba(255,150,0,0.3)}.post-type-vp_lists [class*="CodeMirror-lint-message"],.post-type-vp_lists .CodeMirror-lint-marker-multiple,.post-type-vp_lists [class*="CodeMirror-lint-marker"]{background-image:none}.post-type-vp_lists .CodeMirror-lint-marker-error,.post-type-vp_lists .CodeMirror-lint-marker-warning{cursor:help}.post-type-vp_lists .CodeMirror-lint-marker-multiple{position:absolute;top:0}.post-type-vp_lists [class*="CodeMirror-lint-marker"]::before{position:relative;top:-2px;font:400 18px/1 dashicons}.post-type-vp_lists [class*="CodeMirror-lint-message"]::before{position:absolute;left:16px;font:400 16px/1 dashicons}.post-type-vp_lists .CodeMirror-lint-message-error,.post-type-vp_lists .CodeMirror-lint-message-warning{padding:3px 12px 3px 28px;margin:5px 0 2px;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}.post-type-vp_lists .CodeMirror-lint-message-warning{background-color:#fff8e5;border-left:4px solid #ffb900}.post-type-vp_lists .CodeMirror-lint-message-warning::before,.post-type-vp_lists .CodeMirror-lint-marker-warning::before{content:"\f534";color:#f6a306}.post-type-vp_lists .CodeMirror-lint-message-error{background-color:#fbeaea;border-left:4px solid #dc3232}.post-type-vp_lists .CodeMirror-lint-message-error::before,.post-type-vp_lists .CodeMirror-lint-marker-error::before{content:"\f153";color:#dc3232}.post-type-vp_lists .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}@media (max-width: 850px){.vp-steps__right,.vp-steps__step{float:none;width:100%}}
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 1.6.0
4
  * Author : nK https://nkdev.info
5
  */.dashicons-visual-portfolio,.dashicons-visual-portfolio-gray,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:15px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.dashicons-visual-portfolio-gray,.mce-i-visual-portfolio-gray{background-image:url("../images/icon-gray.svg")}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-vc.png");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:right;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:-15px;margin-left:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:15px;padding-left:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.post-type-vp_lists.post-php,.post-type-vp_lists.post-new-php{background-color:#edeff0}.post-type-vp_lists.post-php #wpcontent,.post-type-vp_lists.post-new-php #wpcontent{padding-left:0}.post-type-vp_lists.post-php .wrap,.post-type-vp_lists.post-new-php .wrap{margin:0}.post-type-vp_lists.post-php #poststuff,.post-type-vp_lists.post-new-php #poststuff{padding-top:0}.post-type-vp_lists.post-php #wpfooter,.post-type-vp_lists.post-new-php #wpfooter{display:none}.post-type-vp_lists.post-php #wpbody-content,.post-type-vp_lists.post-new-php #wpbody-content{padding-bottom:0}.post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,.post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{position:fixed;top:0;right:300px;bottom:0;width:300px;overflow:auto;-webkit-overflow-scrolling:touch}html.wp-toolbar .post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,html.wp-toolbar .post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{top:32px}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php #post-body.columns-2 #postbox-container-1,.post-type-vp_lists.post-new-php #post-body.columns-2 #postbox-container-1{position:relative;top:auto;right:auto;bottom:auto;width:100%;margin-right:0}}.post-type-vp_lists.post-php #postbox-container-2,.post-type-vp_lists.post-new-php #postbox-container-2{position:absolute;top:0;right:0;bottom:0;left:0;width:calc(100% - 300px);min-height:calc(100vh - 32px);overflow:auto;-webkit-overflow-scrolling:touch}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php #postbox-container-2,.post-type-vp_lists.post-new-php #postbox-container-2{right:0;bottom:auto;width:100%}}.post-type-vp_lists.post-php .columns-2 #side-sortables,.post-type-vp_lists.post-new-php .columns-2 #side-sortables{width:auto}.post-type-vp_lists.post-php .notice,.post-type-vp_lists.post-new-php .notice{margin:0;margin-right:300px;margin-bottom:1px}@media only screen and (max-width: 850px){.post-type-vp_lists.post-php .notice,.post-type-vp_lists.post-new-php .notice{margin-right:0}}.post-type-vp_lists.post-php #poststuff .postbox,.post-type-vp_lists.post-new-php #poststuff .postbox{margin-bottom:0;border-color:#e2e4e7;border-top:0;border-right:0}.post-type-vp_lists.post-php #poststuff .postbox>h2,.post-type-vp_lists.post-new-php #poststuff .postbox>h2{padding:15px;border-bottom:none}.post-type-vp_lists.post-php #poststuff .postbox>.handlediv,.post-type-vp_lists.post-new-php #poststuff .postbox>.handlediv{height:50px}.post-type-vp_lists.post-php #poststuff .postbox>.inside,.post-type-vp_lists.post-new-php #poststuff .postbox>.inside{padding:15px;padding-top:0}.vp-control{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:19px}.vp-control>label{width:100%;margin-bottom:5px}.vp-control>.vp-control-description{width:100%;margin:2px 0 5px;font-size:13px;font-style:italic;color:#666}.vp-control.vp-control-checkbox,.vp-control.vp-control-toggle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.vp-control.vp-control-checkbox>label,.vp-control.vp-control-toggle>label{margin-bottom:0}.vp-control.vp-control-textarea textarea{width:100%}.vp-image-picker{display:none}.vp-image-picker,.vp-image-picker *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-image-picker+ul.thumbnails.image_picker_selector li{margin:0 10px 10px 0}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail{padding:0;cursor:pointer;border:none}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail img{display:block;border:2px solid transparent}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail.selected{background-color:transparent}.vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail.selected img{border-color:#0073aa}.vp-image-picker+ul.thumbnails.image_picker_selector .group_title{padding-top:5px;padding-left:5px;font-weight:500}.vp-control-range [type="number"]{width:50px;margin-left:10px}.vp-control-range [type="range"]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;padding:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vp-control-range [type="range"]::-webkit-slider-thumb{-webkit-box-sizing:border-box;box-sizing:border-box;width:18px;height:18px;margin-top:-7px;cursor:pointer;background:#555d66;background-clip:padding-box;border:4px solid transparent;border-radius:50%;-webkit-appearance:none;appearance:none}.vp-control-range [type="range"]::-moz-range-thumb{box-sizing:border-box;width:18px;height:18px;cursor:pointer;background:#555d66;background-clip:padding-box;border:4px solid transparent;border-radius:50%}.vp-control-range [type="range"]::-ms-thumb{box-sizing:border-box;width:14px;height:14px;margin-top:0;cursor:pointer;background:#555d66;background-clip:padding-box;border:2px solid transparent;border-radius:50%}.vp-control-range [type="range"]:focus{outline:none}.vp-control-range [type="range"]:focus::-webkit-slider-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;-webkit-box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]:focus::-moz-range-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]:focus::-ms-thumb{color:#191e23;background-color:#fff;outline:2px solid transparent;outline-offset:-2px;box-shadow:inset 0 0 0 1px #6c7781, inset 0 0 0 2px #fff}.vp-control-range [type="range"]::-webkit-slider-runnable-track{height:3px;margin-top:-4px;cursor:pointer;background:#e2e4e7;border-radius:1.5px}.vp-control-range [type="range"]::-moz-range-track{height:3px;cursor:pointer;background:#e2e4e7;border-radius:1.5px}.vp-control-range [type="range"]::-ms-track{height:3px;margin-top:-4px;color:transparent;cursor:pointer;background:#e2e4e7;border-color:transparent;border-radius:1.5px}.vp-control-toggle,.vp-control-toggle *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-control-toggle .vp-toggle{position:relative}.vp-control-toggle .vp-toggle .vp-toggle__track{content:"";display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:36px;height:18px;vertical-align:top;background-color:#fff;border:2px solid #6c7781;border-radius:9px;-webkit-transition:background .2s ease;transition:background .2s ease}.vp-control-toggle .vp-toggle .vp-toggle__track::after{content:"";position:absolute;display:block;top:50%;right:5px;width:3px;height:3px;margin-top:-3px;border:1.5px solid #6c7781;border-radius:3px}.vp-control-toggle .vp-toggle:hover .vp-toggle__track{background-color:#e2e4e7}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__track{background-color:#33b3db;border:2px solid #33b3db}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__track::after{top:50%;right:auto;left:8px;width:0;height:5px;margin-top:-3px;border:0;border-right:2px solid #fff;border-radius:0}.vp-control-toggle .vp-toggle .vp-toggle__thumb{position:absolute;display:block;top:4px;left:4px;width:10px;height:10px;background-color:#6c7781;border:5px solid #6c7781;border-radius:50%;-webkit-transition:-webkit-transform .1s ease;transition:-webkit-transform .1s ease;transition:transform .1s ease;transition:transform .1s ease, -webkit-transform .1s ease}.vp-control-toggle .vp-toggle [type="checkbox"]:focus ~ .vp-toggle__track{-webkit-box-shadow:0 0 0 2px #fff, 0 0 0 3px #6c7781;box-shadow:0 0 0 2px #fff, 0 0 0 3px #6c7781}.vp-control-toggle .vp-toggle [type="checkbox"]:checked ~ .vp-toggle__thumb{background-color:#fff;border-width:0;-webkit-transform:translateX(18px);transform:translateX(18px)}.vp-control-toggle .vp-toggle [type="checkbox"]{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;margin:0;opacity:0;z-index:1}.vp-control-image-dropdown{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:5px 7px;cursor:pointer;background-color:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);box-shadow:inset 0 1px 2px rgba(0,0,0,0.07)}.vp-control-image-dropdown,.vp-control-image-dropdown *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-control-image-dropdown::before{content:"";position:absolute;display:block;top:50%;right:6px;width:0;height:0;margin-top:-2px;border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px}.vp-control-image-dropdown.active::before{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.vp-control-image-dropdown .vp-control-image-dropdown__preview{display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:32px}.vp-control-image-dropdown .vp-control-image-dropdown__preview img{display:block;width:100%;height:auto}.vp-control-image-dropdown .vp-control-image-dropdown__title{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-left:10px}.vp-control-image-dropdown .vp-control-image-dropdown__content{position:absolute;display:none;top:100%;left:0;width:100%;max-width:285px;margin-top:7px;margin-left:-1px;cursor:default;background-color:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04);z-index:1}.vp-control-image-dropdown .vp-control-image-dropdown__content>div{width:100%;max-height:250px;padding:4px;overflow:auto}.vp-control-image-dropdown .vp-control-image-dropdown__content::before{content:"";position:absolute;display:block;top:-5px;left:10px;width:0;height:0;border-right:5px solid transparent;border-bottom:5px solid #e5e5e5;border-left:5px solid transparent}.vp-control-image-dropdown .vp-control-image-dropdown__content::after{content:"";position:absolute;display:block;top:-7px;right:0;left:0;height:7px}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector,.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector .group>ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li{display:block;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;float:none;max-width:25%;margin:0}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li.group,.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li.group_title{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li .thumbnail{padding:3px}.vp-control-image-dropdown .vp-control-image-dropdown__content .vp-image-picker+ul.thumbnails.image_picker_selector li img{width:100%;height:auto}.vp-control-image-dropdown.active .vp-control-image-dropdown__content{display:block}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;vertical-align:top;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs{float:left;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:right}}.vp-portfolio-list .vp-portfolio-list__icon span{display:block;width:120px;height:120px;margin:0 auto;margin-top:60px;background-size:105px}.vp-portfolio-list .vp-portfolio-list__text{text-align:center}.vp-portfolio-list .vp-portfolio-list__text p{margin-top:30px;margin-bottom:30px;font-size:15px;font-weight:500;color:#8e8e8e}.vp-portfolio-list .vp-portfolio-list__text .button-hero{display:inline-block}.vp_list_preview{padding:0 12px;margin-right:-12px;margin-left:-12px}.vp_list_preview iframe{width:100%;min-height:120px;-webkit-transition:height .3s;transition:height .3s}.vp-content-source{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-right:9px;padding-left:9px;margin-right:-15px;margin-left:-15px}.vp-content-source .vp-content-source__item{position:relative;width:70px;height:50px;padding:12px;margin:0 5px;color:#6c7781;text-align:center;cursor:pointer;border:1px solid transparent;border-radius:3px}.vp-content-source .vp-content-source__item.active,.vp-content-source .vp-content-source__item:hover{color:#555;background-color:#ecf0f4}.vp-content-source .vp-content-source__item.active{color:#fff;background-color:#6c7781;border-color:#6c7781}.vp-content-source .vp-content-source__item .vp-content-source__item-icon>span{width:24px;height:24px;margin-top:2px;font-size:24px}.vp-content-source .vp-content-source__item .vp-content-source__item-title{position:absolute;top:58%;right:8px;left:8px;font-weight:500}.vp-content-source .vp-content-source__item-content{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100%}.vp-content-source .vp-content-source__item-content>div{position:relative;display:none;padding:0 15px;padding-bottom:1px;margin-top:12px;margin-right:-9px;margin-bottom:-14px;margin-left:-9px;overflow:hidden;background-color:#f9f9fa;border-top:1px solid #eee}.vp-content-source .vp-content-source__item-content>div:empty{display:none !important}.vp-content-source .vp-content-source__item-content>div.active{display:block}.vp-select2{width:100%}.vp-select2+.select2{width:100%}.post-attributes-label+.vp-select2+.select2{margin-top:5px}.vp-select2+.select2 ul,.vp-select2+.select2 li{margin-bottom:0}.vp-select2+.select2 .select2-selection{border:1px solid #ddd;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);box-shadow:inset 0 1px 2px rgba(0,0,0,0.07)}.vp-select2+.select2.select2-container--open .select2-selection{outline:none}.vp-select2+.select2 .select2-selection--multiple{min-height:27px}.vp-select2+.select2 .select2-selection--multiple .select2-selection__choice{padding:3px 8px;margin-top:3px;color:#fff;background-color:#6c7781;border-color:#6c7781}.vp-select2+.select2 .select2-selection--multiple .select2-selection__choice__remove{float:right;margin-right:0;margin-left:3px;color:inherit;opacity:.5}.select2-vp-container ul,.select2-vp-container li{margin-bottom:0}.select2-vp-container .select2-dropdown{border-color:#ddd}.select2-vp-container .select2-search--dropdown .select2-search__field{padding:3px 4px;border:1px solid #ddd;outline:none;-webkit-box-shadow:none;box-shadow:none}.select2-vp-container .select2-results__option[aria-selected="true"]{background-color:#efeeee}.select2-vp-container .select2-results__option--highlighted[aria-selected]{background-color:#33b3db}.vp-select2-ajax__result{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.vp-select2-ajax__result .vp-select2-ajax__result-img{position:relative;-webkit-box-flex:0;-ms-flex:0 0 35px;flex:0 0 35px;background-color:rgba(0,0,0,0.1);background-position:center center;background-size:cover;border-radius:3px}.vp-select2-ajax__result .vp-select2-ajax__result-img::after{content:"";display:block;width:100%;padding-top:100%}.vp-select2-ajax__result .vp-select2-ajax__result-data{padding-left:10px}.vp-select2-ajax__result .vp-select2-ajax__result-title{font-size:16px;font-weight:500;line-height:1}.vp-select2-ajax__result .vp-select2-ajax__result-post-type{font-size:12px;opacity:.5}.vp-control-gallery .vp-control-gallery-additional-data{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;top:0;right:-350px;bottom:0;width:350px;padding:15px 13px;overflow:auto;background-color:#fff;border-left:1px solid #eaeaea;-webkit-transition:.15s right;transition:.15s right}.vp-control-gallery .vp-control-gallery-additional-data.active{right:0}.vp-control-gallery .vp-control-gallery-additional-data.active+.vp-control-gallery-items{margin-right:335px}@media (max-width: 910px){.vp-control-gallery .vp-control-gallery-additional-data{position:relative;display:none;right:0;width:120%;height:auto;margin-bottom:30px;border:1px solid #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data.active{display:block}.vp-control-gallery .vp-control-gallery-additional-data.active+.vp-control-gallery-items{margin-right:-15px}}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 13px;margin:-15px -13px;margin-bottom:15px;border-bottom:1px solid #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-image{margin-right:15px}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-image img{display:block;width:70px;border-radius:3px;-webkit-box-shadow:0 0 0 1px #fff, 0 0 0 2px #eaeaea;box-shadow:0 0 0 1px #fff, 0 0 0 2px #eaeaea}.vp-control-gallery .vp-control-gallery-additional-data .vp-control-gallery-additional-data-preview .vp-control-gallery-additional-data-preview-size{color:#8f9498}.vp-control-gallery .vp-control-gallery-items{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;width:120%;height:325px;padding:7px;margin:-12px;margin-bottom:-25px;overflow:auto;-webkit-transition:.15s margin-right;transition:.15s margin-right}.vp-control-gallery .vp-control-gallery-items::after{content:"";display:block;width:100%}.vp-control-gallery .vp-control-gallery-items>div{position:relative;display:block;width:calc(12.5% - 10px);margin:5px;cursor:move;cursor:-webkit-grab;cursor:grab;border-radius:3px}@media (max-width: 1350px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(14.22% - 10px)}}@media (max-width: 1250px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(16.66% - 10px)}}@media (max-width: 1100px){.vp-control-gallery .vp-control-gallery-items>div{width:calc(25% - 10px)}}.vp-control-gallery .vp-control-gallery-items>div::after{content:"";display:block;padding-top:100%}.vp-control-gallery .vp-control-gallery-items>div.sortable-ghost{opacity:.4}.vp-control-gallery .vp-control-gallery-items>div img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;border-radius:3px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img .vp-control-gallery-items-remove{position:absolute;top:-5px;right:-5px;width:20px;height:20px;color:#fff;cursor:pointer;visibility:hidden;background-color:#dc3232;border-radius:50%;opacity:0;-webkit-transition:.15s visibility, .15s opacity;transition:.15s visibility, .15s opacity}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img .vp-control-gallery-items-remove span{width:20px;height:20px;font-size:10px;line-height:20px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img:hover .vp-control-gallery-items-remove{visibility:visible;opacity:1}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-img.active{-webkit-box-shadow:0 0 0 1px #fff, 0 0 0 4px #33b3db;box-shadow:0 0 0 1px #fff, 0 0 0 4px #33b3db}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;color:#6c7781;text-align:center;cursor:pointer;background-color:#fff;border:1px solid #ccd3da;border-radius:3px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add>span{position:absolute;top:50%;left:50%;width:24px;height:24px;margin-top:-12px;margin-left:-12px;line-height:24px}.vp-control-gallery .vp-control-gallery-items>.vp-control-gallery-items-add:hover{color:#555;background-color:#f7f7f7}.vp-input{width:100%}.post-type-vp_lists .CodeMirror{width:100%;text-align:left;border:1px solid #ddd}.post-type-vp_lists .CodeMirror .CodeMirror-matchingbracket{color:inherit;background:rgba(255,150,0,0.3)}.post-type-vp_lists [class*="CodeMirror-lint-message"],.post-type-vp_lists .CodeMirror-lint-marker-multiple,.post-type-vp_lists [class*="CodeMirror-lint-marker"]{background-image:none}.post-type-vp_lists .CodeMirror-lint-marker-error,.post-type-vp_lists .CodeMirror-lint-marker-warning{cursor:help}.post-type-vp_lists .CodeMirror-lint-marker-multiple{position:absolute;top:0}.post-type-vp_lists [class*="CodeMirror-lint-marker"]::before{position:relative;top:-2px;font:400 18px/1 dashicons}.post-type-vp_lists [class*="CodeMirror-lint-message"]::before{position:absolute;left:16px;font:400 16px/1 dashicons}.post-type-vp_lists .CodeMirror-lint-message-error,.post-type-vp_lists .CodeMirror-lint-message-warning{padding:3px 12px 3px 28px;margin:5px 0 2px;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}.post-type-vp_lists .CodeMirror-lint-message-warning{background-color:#fff8e5;border-left:4px solid #ffb900}.post-type-vp_lists .CodeMirror-lint-message-warning::before,.post-type-vp_lists .CodeMirror-lint-marker-warning::before{content:"\f534";color:#f6a306}.post-type-vp_lists .CodeMirror-lint-message-error{background-color:#fbeaea;border-left:4px solid #dc3232}.post-type-vp_lists .CodeMirror-lint-message-error::before,.post-type-vp_lists .CodeMirror-lint-marker-error::before{content:"\f153";color:#dc3232}.post-type-vp_lists .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}@media (max-width: 850px){.vp-steps__right,.vp-steps__step{float:none;width:100%}}
assets/admin/images/layouts/tiles-2-3.svg CHANGED
@@ -9,6 +9,4 @@
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="30" height="40" />
11
  <rect class="cls-1" x="34" y="0" width="31" height="40" />
12
- <rect class="cls-1" x="0" y="44" width="30" height="21" />
13
- <rect class="cls-1" x="34" y="44" width="31" height="21" />
14
  </svg>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="30" height="40" />
11
  <rect class="cls-1" x="34" y="0" width="31" height="40" />
 
 
12
  </svg>
assets/admin/images/layouts/tiles-2-4.svg CHANGED
@@ -8,7 +8,7 @@
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="30" height="40" />
11
- <rect class="cls-1" x="34" y="0" width="31" height="21" />
12
  <rect class="cls-1" x="0" y="44" width="30" height="21" />
13
- <rect class="cls-1" x="34" y="25" width="31" height="40" />
14
  </svg>
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="30" height="40" />
11
+ <rect class="cls-1" x="34" y="0" width="31" height="40" />
12
  <rect class="cls-1" x="0" y="44" width="30" height="21" />
13
+ <rect class="cls-1" x="34" y="44" width="31" height="21" />
14
  </svg>
assets/admin/images/layouts/tiles-2-5.svg CHANGED
@@ -7,9 +7,8 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="31" height="21" />
11
- <rect class="cls-1" x="34" y="0" width="30" height="33" />
12
- <rect class="cls-1" x="0" y="25" width="30" height="33" />
13
- <rect class="cls-1" x="34" y="37" width="30" height="28" />
14
- <rect class="cls-1" x="0" y="62" width="30" height="3" />
15
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="30" height="40" />
11
+ <rect class="cls-1" x="34" y="0" width="31" height="21" />
12
+ <rect class="cls-1" x="0" y="44" width="30" height="21" />
13
+ <rect class="cls-1" x="34" y="25" width="31" height="40" />
 
14
  </svg>
assets/admin/images/layouts/tiles-2-6.svg ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="31" height="21" />
11
+ <rect class="cls-1" x="34" y="0" width="30" height="33" />
12
+ <rect class="cls-1" x="0" y="25" width="30" height="33" />
13
+ <rect class="cls-1" x="34" y="37" width="30" height="28" />
14
+ <rect class="cls-1" x="0" y="62" width="30" height="3" />
15
+ </svg>
assets/admin/images/layouts/tiles-3-10.svg CHANGED
@@ -7,11 +7,16 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
- <rect class="cls-1" x="23" y="0" width="42" height="42" />
 
12
 
13
- <rect class="cls-1" x="0" y="23" width="19" height="19" />
14
-
15
- <rect class="cls-1" x="0" y="46" width="42" height="19" />
16
- <rect class="cls-1" x="46" y="46" width="19" height="19" />
 
 
 
 
17
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="36" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="16" />
13
 
14
+ <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
+ <rect class="cls-1" x="46" y="20" width="19" height="36" />
16
+
17
+ <rect class="cls-1" x="0" y="40" width="19" height="36" />
18
+ <rect class="cls-1" x="23" y="40" width="19" height="16" />
19
+
20
+ <rect class="cls-1" x="23" y="59" width="19" height="16" />
21
+ <rect class="cls-1" x="46" y="59" width="19" height="16" />
22
  </svg>
assets/admin/images/layouts/tiles-3-11.svg CHANGED
@@ -7,11 +7,17 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="42" />
11
- <rect class="cls-1" x="23" y="0" width="42" height="19" />
 
12
 
13
- <rect class="cls-1" x="23" y="23" width="19" height="19" />
14
- <rect class="cls-1" x="46" y="23" width="19" height="42" />
15
-
16
- <rect class="cls-1" x="0" y="46" width="42" height="19" />
 
 
 
 
 
17
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="16" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="36" />
13
 
14
+ <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
+ <rect class="cls-1" x="23" y="20" width="19" height="16" />
16
+ <rect class="cls-1" x="46" y="20" width="19" height="16" />
17
+
18
+ <rect class="cls-1" x="0" y="40" width="19" height="36" />
19
+ <rect class="cls-1" x="23" y="40" width="19" height="36" />
20
+ <rect class="cls-1" x="46" y="40" width="19" height="16" />
21
+
22
+ <rect class="cls-1" x="46" y="59" width="19" height="16" />
23
  </svg>
assets/admin/images/layouts/tiles-3-12.svg ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="16" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="36" />
13
+
14
+ <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
+ <rect class="cls-1" x="23" y="20" width="19" height="16" />
16
+
17
+ <rect class="cls-1" x="0" y="40" width="19" height="16" />
18
+ <rect class="cls-1" x="23" y="40" width="19" height="36" />
19
+ <rect class="cls-1" x="46" y="40" width="19" height="36" />
20
+
21
+ <rect class="cls-1" x="0" y="59" width="19" height="16" />
22
+ </svg>
assets/admin/images/layouts/tiles-3-13.svg ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
+ <rect class="cls-1" x="23" y="0" width="42" height="42" />
12
+
13
+ <rect class="cls-1" x="0" y="23" width="19" height="19" />
14
+
15
+ <rect class="cls-1" x="0" y="46" width="42" height="19" />
16
+ <rect class="cls-1" x="46" y="46" width="19" height="19" />
17
+ </svg>
assets/admin/images/layouts/tiles-3-14.svg ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
+ <rect class="cls-1" x="23" y="0" width="42" height="42" />
12
+
13
+ <rect class="cls-1" x="0" y="23" width="19" height="19" />
14
+
15
+ <rect class="cls-1" x="0" y="46" width="19" height="19" />
16
+ <rect class="cls-1" x="23" y="46" width="19" height="19" />
17
+ <rect class="cls-1" x="46" y="46" width="19" height="19" />
18
+ </svg>
assets/admin/images/layouts/tiles-3-15.svg ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="42" />
11
+ <rect class="cls-1" x="23" y="0" width="42" height="19" />
12
+
13
+ <rect class="cls-1" x="23" y="23" width="19" height="19" />
14
+ <rect class="cls-1" x="46" y="23" width="19" height="42" />
15
+
16
+ <rect class="cls-1" x="0" y="46" width="42" height="19" />
17
+ </svg>
assets/admin/images/layouts/tiles-3-3.svg CHANGED
@@ -7,15 +7,11 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="15" />
11
- <rect class="cls-1" x="23" y="0" width="19" height="15" />
12
- <rect class="cls-1" x="46" y="0" width="19" height="15" />
13
 
14
- <rect class="cls-1" x="0" y="19" width="19" height="27" />
15
- <rect class="cls-1" x="23" y="19" width="19" height="27" />
16
- <rect class="cls-1" x="46" y="19" width="19" height="27" />
17
-
18
- <rect class="cls-1" x="0" y="50" width="19" height="15" />
19
- <rect class="cls-1" x="23" y="50" width="19" height="15" />
20
- <rect class="cls-1" x="46" y="50" width="19" height="15" />
21
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="26" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="26" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="26" />
13
 
14
+ <rect class="cls-1" x="0" y="30" width="19" height="26" />
15
+ <rect class="cls-1" x="23" y="30" width="19" height="26" />
16
+ <rect class="cls-1" x="46" y="30" width="19" height="26" />
 
 
 
 
17
  </svg>
assets/admin/images/layouts/tiles-3-4.svg CHANGED
@@ -7,14 +7,15 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
- <rect class="cls-1" x="23" y="0" width="19" height="19" />
12
- <rect class="cls-1" x="46" y="0" width="19" height="42" />
13
 
14
- <rect class="cls-1" x="0" y="23" width="19" height="19" />
15
- <rect class="cls-1" x="23" y="23" width="19" height="19" />
 
16
 
17
- <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
- <rect class="cls-1" x="23" y="46" width="19" height="19" />
19
- <rect class="cls-1" x="46" y="46" width="19" height="19" />
20
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="15" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="15" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="15" />
13
 
14
+ <rect class="cls-1" x="0" y="19" width="19" height="27" />
15
+ <rect class="cls-1" x="23" y="19" width="19" height="27" />
16
+ <rect class="cls-1" x="46" y="19" width="19" height="27" />
17
 
18
+ <rect class="cls-1" x="0" y="50" width="19" height="15" />
19
+ <rect class="cls-1" x="23" y="50" width="19" height="15" />
20
+ <rect class="cls-1" x="46" y="50" width="19" height="15" />
21
  </svg>
assets/admin/images/layouts/tiles-3-5.svg CHANGED
@@ -7,12 +7,12 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="42" />
11
  <rect class="cls-1" x="23" y="0" width="19" height="19" />
12
- <rect class="cls-1" x="46" y="0" width="19" height="19" />
13
 
 
14
  <rect class="cls-1" x="23" y="23" width="19" height="19" />
15
- <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
  <rect class="cls-1" x="23" y="46" width="19" height="19" />
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
  <rect class="cls-1" x="23" y="0" width="19" height="19" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="42" />
13
 
14
+ <rect class="cls-1" x="0" y="23" width="19" height="19" />
15
  <rect class="cls-1" x="23" y="23" width="19" height="19" />
 
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
  <rect class="cls-1" x="23" y="46" width="19" height="19" />
assets/admin/images/layouts/tiles-3-6.svg CHANGED
@@ -7,11 +7,11 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
- <rect class="cls-1" x="23" y="0" width="19" height="42" />
12
  <rect class="cls-1" x="46" y="0" width="19" height="19" />
13
 
14
- <rect class="cls-1" x="0" y="23" width="19" height="19" />
15
  <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="42" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="19" />
12
  <rect class="cls-1" x="46" y="0" width="19" height="19" />
13
 
14
+ <rect class="cls-1" x="23" y="23" width="19" height="19" />
15
  <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
assets/admin/images/layouts/tiles-3-7.svg CHANGED
@@ -15,5 +15,6 @@
15
  <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
- <rect class="cls-1" x="23" y="46" width="42" height="19" />
 
19
  </svg>
15
  <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
  <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
+ <rect class="cls-1" x="23" y="46" width="19" height="19" />
19
+ <rect class="cls-1" x="46" y="46" width="19" height="19" />
20
  </svg>
assets/admin/images/layouts/tiles-3-8.svg CHANGED
@@ -7,17 +7,13 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
- <rect class="cls-1" x="23" y="0" width="19" height="36" />
12
- <rect class="cls-1" x="46" y="0" width="19" height="16" />
13
 
14
- <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
- <rect class="cls-1" x="46" y="20" width="19" height="36" />
16
 
17
- <rect class="cls-1" x="0" y="40" width="19" height="16" />
18
- <rect class="cls-1" x="23" y="40" width="19" height="16" />
19
-
20
- <rect class="cls-1" x="0" y="59" width="19" height="16" />
21
- <rect class="cls-1" x="23" y="59" width="19" height="16" />
22
- <rect class="cls-1" x="46" y="59" width="19" height="16" />
23
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="19" height="19" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="42" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="19" />
13
 
14
+ <rect class="cls-1" x="0" y="23" width="19" height="19" />
15
+ <rect class="cls-1" x="46" y="23" width="19" height="19" />
16
 
17
+ <rect class="cls-1" x="0" y="46" width="19" height="19" />
18
+ <rect class="cls-1" x="23" y="46" width="42" height="19" />
 
 
 
 
19
  </svg>
assets/admin/images/layouts/tiles-3-9.svg CHANGED
@@ -8,15 +8,16 @@
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
- <rect class="cls-1" x="23" y="0" width="19" height="16" />
12
- <rect class="cls-1" x="46" y="0" width="19" height="36" />
13
 
14
  <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
- <rect class="cls-1" x="23" y="20" width="19" height="16" />
16
 
17
  <rect class="cls-1" x="0" y="40" width="19" height="16" />
18
- <rect class="cls-1" x="23" y="40" width="19" height="36" />
19
- <rect class="cls-1" x="46" y="40" width="19" height="36" />
20
 
21
  <rect class="cls-1" x="0" y="59" width="19" height="16" />
 
 
22
  </svg>
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="19" height="16" />
11
+ <rect class="cls-1" x="23" y="0" width="19" height="36" />
12
+ <rect class="cls-1" x="46" y="0" width="19" height="16" />
13
 
14
  <rect class="cls-1" x="0" y="20" width="19" height="16" />
15
+ <rect class="cls-1" x="46" y="20" width="19" height="36" />
16
 
17
  <rect class="cls-1" x="0" y="40" width="19" height="16" />
18
+ <rect class="cls-1" x="23" y="40" width="19" height="16" />
 
19
 
20
  <rect class="cls-1" x="0" y="59" width="19" height="16" />
21
+ <rect class="cls-1" x="23" y="59" width="19" height="16" />
22
+ <rect class="cls-1" x="46" y="59" width="19" height="16" />
23
  </svg>
assets/admin/images/layouts/tiles-4-3.svg CHANGED
@@ -8,16 +8,22 @@
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="13" height="13" />
11
- <rect class="cls-1" x="17" y="0" width="13" height="13" />
12
- <rect class="cls-1" x="34" y="0" width="30" height="30" />
 
13
 
14
- <rect class="cls-1" x="0" y="17" width="13" height="13" />
15
- <rect class="cls-1" x="17" y="17" width="13" height="13" />
 
 
16
 
17
- <rect class="cls-1" x="0" y="34" width="30" height="30" />
18
- <rect class="cls-1" x="34" y="34" width="13" height="13" />
19
- <rect class="cls-1" x="51" y="34" width="13" height="13" />
 
20
 
21
- <rect class="cls-1" x="34" y="51" width="13" height="13" />
22
- <rect class="cls-1" x="51" y="51" width="13" height="13" />
 
 
23
  </svg>
8
  </style>
9
  </defs>
10
  <rect class="cls-1" x="0" y="0" width="13" height="13" />
11
+ <rect class="cls-1" x="17" y="0" width="13" height="20" />
12
+ <rect class="cls-1" x="34" y="0" width="13" height="13" />
13
+ <rect class="cls-1" x="51" y="0" width="13" height="20" />
14
 
15
+ <rect class="cls-1" x="0" y="17" width="13" height="20" />
16
+ <rect class="cls-1" x="17" y="24" width="13" height="13" />
17
+ <rect class="cls-1" x="34" y="17" width="13" height="20" />
18
+ <rect class="cls-1" x="51" y="24" width="13" height="13" />
19
 
20
+ <rect class="cls-1" x="0" y="41" width="13" height="13" />
21
+ <rect class="cls-1" x="17" y="41" width="13" height="20" />
22
+ <rect class="cls-1" x="34" y="41" width="13" height="13" />
23
+ <rect class="cls-1" x="51" y="41" width="13" height="20" />
24
 
25
+ <rect class="cls-1" x="0" y="58" width="13" height="20" />
26
+ <rect class="cls-1" x="17" y="65" width="13" height="13" />
27
+ <rect class="cls-1" x="34" y="58" width="13" height="20" />
28
+ <rect class="cls-1" x="51" y="65" width="13" height="13" />
29
  </svg>
assets/admin/images/layouts/tiles-4-4.svg CHANGED
@@ -7,11 +7,17 @@
7
  }
8
  </style>
9
  </defs>
10
- <rect class="cls-1" x="0" y="0" width="30" height="30" />
11
- <rect class="cls-1" x="34" y="0" width="30" height="13" />
12
- <rect class="cls-1" x="34" y="17" width="30" height="13" />
13
 
14
- <rect class="cls-1" x="34" y="34" width="30" height="30" />
15
- <rect class="cls-1" x="0" y="34" width="30" height="13" />
16
- <rect class="cls-1" x="0" y="51" width="30" height="13" />
 
 
 
 
 
 
17
  </svg>
7
  }
8
  </style>
9
  </defs>
10
+ <rect class="cls-1" x="0" y="0" width="13" height="13" />
11
+ <rect class="cls-1" x="17" y="0" width="13" height="13" />
12
+ <rect class="cls-1" x="34" y="0" width="30" height="30" />
13
 
14
+ <rect class="cls-1" x="0" y="17" width="13" height="13" />
15
+ <rect class="cls-1" x="17" y="17" width="13" height="13" />
16
+
17
+ <rect class="cls-1" x="0" y="34" width="30" height="30" />
18
+ <rect class="cls-1" x="34" y="34" width="13" height="13" />
19
+ <rect class="cls-1" x="51" y="34" width="13" height="13" />
20
+
21
+ <rect class="cls-1" x="34" y="51" width="13" height="13" />
22
+ <rect class="cls-1" x="51" y="51" width="13" height="13" />
23
  </svg>
assets/admin/images/layouts/tiles-4-5.svg ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="65" height="65" viewBox="0 0 65 65">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #cfcfcf;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <rect class="cls-1" x="0" y="0" width="30" height="30" />
11
+ <rect class="cls-1" x="34" y="0" width="30" height="13" />
12
+ <rect class="cls-1" x="34" y="17" width="30" height="13" />
13
+
14
+ <rect class="cls-1" x="34" y="34" width="30" height="30" />
15
+ <rect class="cls-1" x="0" y="34" width="30" height="13" />
16
+ <rect class="cls-1" x="0" y="51" width="30" height="13" />
17
+ </svg>
assets/admin/js/gutenberg-block.min.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(t){function e(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var o={};e.m=t,e.c=o,e.d=function(t,o,n){e.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(o,"a",o),o},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=13)}([function(t,e){(function(e){t.exports=e}).call(e,{})},,,,,,,,,,,,,function(t,e,o){t.exports=o(14)},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=o(15),r=o.n(n),l=o(16),a=o.n(l),s=o(17),i=o.n(s),c=wp.i18n.__,u=wp.element,p=u.Fragment,f=u.RawHTML,d=wp.blocks.registerBlockType,v=wp.components,m=v.Placeholder,y=v.Spinner,h=v.SelectControl,g=v.withAPIData;d("nk/visual-portfolio",{title:"Visual Portfolio",icon:wp.element.createElement("img",{className:"visual-portfolio-gutenberg-icon",src:a.a,alt:"visual-portfolio-icon"}),category:"common",keywords:["visual portfolio","vp","portfolio"],supports:{anchor:!0,className:!0,html:!1,ghostkitIndents:!0,ghostkitDisplay:!0},attributes:{id:{type:"string"}},edit:g(function(){return{portfolioLayouts:"/visual-portfolio/v1/get_layouts/"}})(function(t){var e=t.portfolioLayouts,o=t.attributes,n=t.className,l=t.setAttributes,a=o.id,s=o.ghostkitClassname,u=!1,f=!1;return s&&(n=r()(n,s)),e&&e.data&&e.data.success?(u=[{label:c("--- Select layout ---"),value:""}],Object.keys(e.data.response).map(function(t){var o=e.data.response[t];u.push({label:"#"+o.id+" - "+o.title,value:o.id}),a&&parseInt(a,10)===o.id&&(f=o.edit_url)})):a&&(u=[{label:"#"+a,value:a}]),wp.element.createElement(m,{icon:wp.element.createElement("img",{className:"visual-portfolio-gutenberg-icon",src:i.a,alt:"visual-portfolio-icon"}),label:c("Visual Portfolio"),className:n},!Array.isArray(u)&&wp.element.createElement(y,null),Array.isArray(u)&&u.length&&wp.element.createElement(p,null,f&&wp.element.createElement("a",{href:f,target:"_blank"},c("Edit Layout")),wp.element.createElement(h,{value:a,onChange:function(t){return l({id:t})},options:u})),Array.isArray(u)&&!u.length&&c("No portfolio layouts found."))}),save:function(t){var e=t.attributes,o=t.className,n=e.id,r="[visual_portfolio";return n&&(r+=' id="'+n+'"'),o&&(r+=' class="'+o+'"'),r+="]",wp.element.createElement(f,null,r)}})},function(t,e,o){var n,r,l="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};/*!
2
  Copyright (c) 2016 Jed Watson.
3
  Licensed under the MIT License (MIT), see
4
  http://jedwatson.github.io/classnames
1
+ !function(t){function e(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var o={};e.m=t,e.c=o,e.d=function(t,o,n){e.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(o,"a",o),o},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=13)}([function(t,e){(function(e){t.exports=e}).call(e,{})},,,,,,,,,,,,,function(t,e,o){t.exports=o(14)},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=o(15),r=o.n(n),l=o(16),a=o.n(l),s=o(17),i=o.n(s),c=wp.i18n.__,u=wp.element,p=u.Fragment,f=u.RawHTML,d=wp.blocks.registerBlockType,v=wp.components,m=v.Placeholder,y=v.Spinner,h=v.SelectControl,g=v.withAPIData;d("nk/visual-portfolio",{title:"Visual Portfolio",icon:wp.element.createElement("img",{className:"dashicon visual-portfolio-gutenberg-icon",src:a.a,alt:"visual-portfolio-icon"}),category:"common",keywords:["visual portfolio","vp","portfolio"],supports:{anchor:!0,className:!0,html:!1,align:["wide","full"],ghostkitIndents:!0,ghostkitDisplay:!0},attributes:{id:{type:"string"}},edit:g(function(){return{portfolioLayouts:"/visual-portfolio/v1/get_layouts/"}})(function(t){var e=t.portfolioLayouts,o=t.attributes,n=t.className,l=t.setAttributes,a=o.id,s=o.ghostkitClassname,u=!1,f=!1;return s&&(n=r()(n,s)),e&&e.data&&e.data.success?(u=[{label:c("--- Select layout ---"),value:""}],Object.keys(e.data.response).map(function(t){var o=e.data.response[t];u.push({label:"#"+o.id+" - "+o.title,value:o.id}),a&&parseInt(a,10)===o.id&&(f=o.edit_url)})):a&&(u=[{label:"#"+a,value:a}]),wp.element.createElement(m,{icon:wp.element.createElement("img",{className:"visual-portfolio-gutenberg-icon",src:i.a,alt:"visual-portfolio-icon"}),label:c("Visual Portfolio"),className:n},!Array.isArray(u)&&wp.element.createElement(y,null),Array.isArray(u)&&u.length&&wp.element.createElement(p,null,f&&wp.element.createElement("a",{href:f,target:"_blank"},c("Edit Layout")),wp.element.createElement(h,{value:a,onChange:function(t){return l({id:t})},options:u})),Array.isArray(u)&&!u.length&&c("No portfolio layouts found."))}),save:function(t){var e=t.attributes,o=t.className,n=e.id,r="[visual_portfolio";return n&&(r+=' id="'+n+'"'),o&&(r+=' class="'+o+'"'),r+="]",wp.element.createElement(f,null,r)}})},function(t,e,o){var n,r,l="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};/*!
2
  Copyright (c) 2016 Jed Watson.
3
  Licensed under the MIT License (MIT), see
4
  http://jedwatson.github.io/classnames
assets/admin/js/mce-dropdown.min.js CHANGED
@@ -1,6 +1,6 @@
1
  !function(t){function i(n){if(o[n])return o[n].exports;var e=o[n]={i:n,l:!1,exports:{}};return t[n].call(e.exports,e,e.exports,i),e.l=!0,e.exports}var o={};i.m=t,i.c=o,i.d=function(t,o,n){i.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(o,"a",o),o},i.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},i.p="",i(i.s=5)}({5:function(t,i,o){t.exports=o(6)},6:function(t,i){/*!
2
  * Name : Visual Portfolio
3
- * Version : 1.5.0
4
  * Author : nK https://nkdev.info
5
  */
6
  var o=window,n=o.tinymce,e=o.VPTinyMCEOptions;if(void 0!==e&&e.length){var u=[{text:"",value:""}];Object.keys(e).forEach(function(t){u.push({text:e[t].title,value:e[t].id})}),n.create("tinymce.plugins.visual_portfolio",{init:function(t){t.addButton("visual_portfolio",{type:"listbox",title:"Visual Portfolio",icon:"visual-portfolio",classes:"visual-portfolio-btn",onclick:function(){this.menu&&this.menu.$el.find(".mce-first").hide()},onselect:function(){this.value()&&t.insertContent('[visual_portfolio id="'+this.value()+'"]'),this.value("")},values:u,value:""})}}),n.PluginManager.add("visual_portfolio",n.plugins.visual_portfolio)}}});
1
  !function(t){function i(n){if(o[n])return o[n].exports;var e=o[n]={i:n,l:!1,exports:{}};return t[n].call(e.exports,e,e.exports,i),e.l=!0,e.exports}var o={};i.m=t,i.c=o,i.d=function(t,o,n){i.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(o,"a",o),o},i.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},i.p="",i(i.s=5)}({5:function(t,i,o){t.exports=o(6)},6:function(t,i){/*!
2
  * Name : Visual Portfolio
3
+ * Version : 1.6.0
4
  * Author : nK https://nkdev.info
5
  */
6
  var o=window,n=o.tinymce,e=o.VPTinyMCEOptions;if(void 0!==e&&e.length){var u=[{text:"",value:""}];Object.keys(e).forEach(function(t){u.push({text:e[t].title,value:e[t].id})}),n.create("tinymce.plugins.visual_portfolio",{init:function(t){t.addButton("visual_portfolio",{type:"listbox",title:"Visual Portfolio",icon:"visual-portfolio",classes:"visual-portfolio-btn",onclick:function(){this.menu&&this.menu.$el.find(".mce-first").hide()},onselect:function(){this.value()&&t.insertContent('[visual_portfolio id="'+this.value()+'"]'),this.value("")},values:u,value:""})}}),n.PluginManager.add("visual_portfolio",n.plugins.visual_portfolio)}}});
assets/admin/js/script.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){function t(n){if(a[n])return a[n].exports;var i=a[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var a={};t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=9)}({10:function(e,t){function a(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}function n(){h[_.is(":checked")?"show":"hide"]()}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=jQuery,r=window,l=r.ajaxurl,c=r.VPAdminVariables,s=r.Tooltip,d=r.CodeMirror,p=r.emmetCodeMirror,v=o("body"),m=o(window),u=o('form[name="post"]'),f=o('[name="post_type"]'),g=o("#postID").val();v.on("focus",'[name="vp_list_shortcode"], [name="vp_filter_shortcode"]',function(){this.select()}),v.on("click",".vp-onclick-selection",function(){window.getSelection().selectAllChildren(this)});var h=o("#vp_format_video"),_=o("#post-format-video");h.length&&_.length&&(n(),v.on("change","[name=post_format]",function(){n()}));var y=null,b=void 0;v.on("change input",'.vp-input[name="video_url"]',function(){null!==y&&y.abort();var e=o(this);e.next(".vp-oembed-preview").html(""),clearTimeout(b),b=setTimeout(function(){y=o.ajax({url:l,method:"GET",dataType:"json",data:{action:"vp_find_oembed",q:e.val(),nonce:c.nonce},complete:function(t){var a=t.responseJSON;a&&void 0!==a.html&&e.next(".vp-oembed-preview").html(a.html)}})},250)}),void 0!==s&&o('[data-hint]:not([data-hint=""]):not([data-hint="false"])').each(function(){var e=o(this);new s(this,{placement:e.attr("data-hint-place")||"top",title:e.attr("data-hint"),container:o("body")[0],boundariesElement:"viewport"})}),function(){function e(e,t){var a=e.find('[data-image-id="'+t+'"]'),n={id:t};return a.find("[data-additional]").each(function(){var e=o(this),t=e.attr("data-additional");if(n[t]=e.html(),"true"===e.attr("data-to-json"))try{n[t]=JSON.parse(n[t])}catch(e){n[t]=""}}),n}function t(e,t){var a=e.find('[data-image-id="'+t+'"]'),n={};return a.find("[data-meta]").each(function(){n[o(this).attr("data-meta")]=o(this).html()}),n}function n(t){var a=[];t.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img").each(function(){a.push(e(t,o(this).attr("data-image-id")))});var n=JSON.stringify(a),i=t.children("textarea");n!==i.val()&&i.val(n).change()}function r(n,i){var r=n.children("textarea").attr("name"),l=n.children(".vp-control-gallery-additional-data"),c=l.children(".vp-control-gallery-additional-data-preview"),s=n.children(".vp-control-gallery-items").find('.vp-control-gallery-items-img[data-image-id="'+i+'"]'),d=e(n,i),p=t(n,i);d&&Object.keys(d).forEach(function(t){var i=l.find('[name="'+r+"_additional_"+t+'"], [name="'+r+"_additional_"+t+'[]"]').val(d[t]||"");if(i.hasClass("vp-select2")){if(i.hasClass("vp-select2-tags")){var c=[],s=[];n.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img").each(function(){var i=e(n,o(this).attr("data-image-id"));i&&void 0!==i[t]&&i[t]&&(c=[].concat(a(new Set([].concat(a(c),a(i[t]))))))}),c.forEach(function(e){s.push(new window.Option(e,e,!1,!1))}),i.html(s.length?s:""),i.val(void 0!==d[t]&&d[t]?d[t]:"")}i.trigger("change")}}),c.find(".vp-control-gallery-additional-data-preview-image img").attr("src",s.children("img").attr("src")||""),c.find(".vp-control-gallery-additional-data-preview-name").html(p.filename),c.find(".vp-control-gallery-additional-data-preview-size").html(p.width+"x"+p.height+" ("+p.filesizeHumanReadable+")"),c.find(".vp-control-gallery-additional-data-preview-edit a").attr("href",p.editLink.replace("&amp;","&")),s.siblings().removeClass("active"),s.addClass("active"),l.addClass("active"),S=T.find(".vp-control-gallery-additional-data.active").length}function s(e,t){if(L&&(t=!1,L=!1),c&&c.css_editor_error_notice){var a=!1;if(1===e.length?a=c.css_editor_error_notice.singular.replace("%d","1"):e.length>1&&(a=c.css_editor_error_notice.plural.replace("%d",String(e.length))),a){var n=z.prev("#vp_custom_css_notice");if(n.length||t||(n=o('<div class="notice notice-error inline" id="vp_custom_css_notice"></div>'),z.before(n)),!n.length)return;var i='<p class="notification-message">'+a+'</p><p><input id="vp_custom_css_notice_prevent" type="checkbox"><label for="vp_custom_css_notice_prevent">'+c.css_editor_error_checkbox+"</label></p>";n.html(i)}else z.prev("#vp_custom_css_notice").remove()}}if("vp_lists"===f.val()&&u.length){var h=o(".vp-content-source"),_=h.find('[name="vp_content_source"]');h.on("click",".vp-content-source__item",function(){var e=o(this).attr("data-content");h.find('[data-content="'+e+'"]').addClass("active").siblings().removeClass("active"),_.val(e).change()}),h.children('[data-content="'+_.val()+'"]').click(),o.fn.conditionize&&u.conditionize(),o(".vp-control-range").each(function(){var e=o(this).find("input"),t=e.filter('[type="hidden"]');e.on("change input",function(a){e.val(o(this).val()),t.trigger("vp-fake-"+a.type)})}),o.fn.wpColorPicker&&o(".vp-color-picker").each(function(){function e(e){if(a)return void(a=!1);clearTimeout(t),t=setTimeout(function(){o(e.target).change()},300)}var t=void 0,a=!0;o(this).data("change",e).wpColorPicker()}),o.fn.imagepicker&&o(".vp-image-picker").imagepicker();var y=o(".vp_list_preview iframe"),b=!1,w=!1,k=o('<form target="vp_list_preview_iframe" method="post" style="display: none">').attr("action",y.attr("src")).insertAfter(u);o.fn.iFrameResize&&y.iFrameResize({interval:10});var C=void 0;u.on("change input vp-fake-change vp-fake-input",'[name*="vp_"]',function(e){var t=o(this);if(!t.closest(".vp-no-reload").length){var a={name:t.attr("name"),value:t.is("[type=checkbox], [type=radio]")?t.is(":checked"):t.val(),reload:"change"===e.type||"vp-fake-change"===e.type,jQuery:w,$portfolio:b},n=k.find('[name="'+a.name+'"]');n.length||(n=o('<input type="hidden" name="'+a.name+'" />').appendTo(k)),n.attr("value",a.value),m.trigger("vp-preview-change",a),!a.reload&&b||(clearTimeout(C),C=setTimeout(function(){w=!1,b=!1,k.submit()},400))}}),y.on("load",function(){w=this.contentWindow.jQuery,b=w(".vp-portfolio")}),m.on("vp-preview-change",function(e,t){if(t.$portfolio)switch(t.name){case"vp_layout":case"vp_tiles_type":case"vp_masonry_columns":case"vp_items_gap":var a=t.name;a=a.substring(3),a=a.replace("_","-"),t.$portfolio.attr("data-vp-"+a,t.value),t.$portfolio.vpf("init"),t.reload=!1;break;case"vp_filter_align":t.$portfolio.find(".vp-filter").removeClass("vp-filter__align-center vp-filter__align-left vp-filter__align-right").addClass("vp-filter__align-"+t.value),t.reload=!1;break;case"vp_pagination_align":t.$portfolio.find(".vp-pagination").removeClass("vp-pagination__align-center vp-pagination__align-left vp-pagination__align-right").addClass("vp-pagination__align-"+t.value),t.reload=!1;break;case"vp_custom_css":var n=t.$portfolio.closest("html"),i="vp-custom-css-"+g+"-inline-css",o=n.find("#"+i);o.length||(o=t.jQuery('<style id="'+i+'">'),n.find("body").prepend(o)),o.html(t.value),t.reload=!1;break;case"vp_list_name":case"vp_stretch":t.reload=!1}}),v.on("click",".vp-control-image-dropdown",function(e){o(e.target).closest(".vp-control-image-dropdown__content").length||o(this).toggleClass("active")}),v.on("mousedown",function(e){var t=o(e.target).closest(".vp-control-image-dropdown");o(".vp-control-image-dropdown.active").each(function(){this!==t[0]&&o(this).removeClass("active")})}),v.on("change",".vp-control-image-dropdown .vp-image-picker",function(){var e=o(this),t=e.data("picker");if(t){var a=t.select.find('option[value="'+t.select.val()+'"]'),n=a.parent("optgroup"),i=e.closest(".vp-control-image-dropdown"),r=a.attr("data-img-src");i.length&&(i.children(".vp-control-image-dropdown__preview").html('<img src="'+r+'" alt="">'),n.length&&i.children(".vp-control-image-dropdown__title").html(n.attr("label")))}});var x=o('[name="vp_list_name"]'),j=o('[name="post_title"]');x.length&&j.length&&(x.on("input",function(){j.val()!==x.val()&&j.val(x.val()).change()}),j.on("input",function(){x.val(j.val())})),o.fn.select2&&o(".vp-select2").each(function(){var e=o(this),t={width:"100%",minimumResultsForSearch:e.hasClass("vp-select2-nosearch")?-1:1,tags:e.hasClass("vp-select2-tags")},a=!!e.attr("data-post-type")&&o(e.attr("data-post-type"));e.closest(".vp-select2-posts-ajax").length&&(t=o.extend({minimumInputLength:1,ajax:{url:l,dataType:"json",delay:250,data:function(e){return{action:"vp_find_posts",q:e.term,post_type:!!a&&a.val(),nonce:c.nonce}},processResults:function(e){return{results:!(!e||!e.length)&&e}},cache:!0},escapeMarkup:function(e){return e},templateResult:function(e){if(e.loading)return e.text;var t="";e.title&&(t=e.title);var a="";e.post_type&&(a=e.post_type);var n="";return e.img&&(n="style=\"background-image: url('"+e.img+"');\""),'<div class="vp-select2-ajax__result"><div class="vp-select2-ajax__result-img" '+n+'></div><div class="vp-select2-ajax__result-data"><div class="vp-select2-ajax__result-title">'+t+'</div><div class="vp-select2-ajax__result-post-type">'+a+"</div></div></div>"},templateSelection:function(e){return e.title||e.text}},t)),e.closest(".vp-select2-taxonomies-ajax").length&&(t=o.extend({minimumInputLength:1,ajax:{url:l,dataType:"json",delay:250,data:function(e){return{action:"vp_find_taxonomies",q:e.term,post_type:!!a&&a.val(),nonce:c.nonce}},processResults:function(e){var t=[];return e&&Object.keys(e).forEach(function(a){t.push({text:a,children:e[a]})}),{results:t}},cache:!0}},t)),e.select2(t).data("select2").$dropdown.addClass("select2-vp-container")});var T=o(".vp-control-gallery"),S=0;if(o.fn.sortable&&(T.each(function(){var e=o(this),t=e.children(".vp-control-gallery-items-default");e.children(".vp-control-gallery-items").sortable({animation:150,draggable:".vp-control-gallery-items-img",onUpdate:function(){n(e)}}),e.on("click",".vp-control-gallery-items-remove",function(t){t.preventDefault(),o(this).parent().remove(),n(e)}),e.on("click",".vp-control-gallery-items-add",function(a){a.preventDefault();var i=e.data("wp-frame");return i?void i.open():wp.media?(i=wp.media({title:"Select or Upload Images",button:{text:"Use this images"},multiple:!0,library:{type:"image"}}),e.data("wp-frame",i),i.on("select",function(){var a=i.state().get("selection").models;a&&a.length&&(a.forEach(function(a){var n=a.changed.url;a.changed.sizes&&a.changed.sizes.thumbnail&&(n=a.changed.sizes.thumbnail.url);var i=t.children().clone();i.attr("data-image-id",a.id),i.children("img").attr("src",n),i.find('[data-meta="width"]').html(a.changed.width),i.find('[data-meta="height"]').html(a.changed.height),i.find('[data-meta="filename"]').html(a.changed.filename),i.find('[data-meta="editLink"]').html(a.changed.editLink),i.find('[data-meta="filesizeHumanReadable"]').html(a.changed.filesizeHumanReadable),e.find(".vp-control-gallery-items-add").before(i)}),n(e))}),void i.open()):void console.error("Can't access wp.media object.")}),e.on("click",".vp-control-gallery-items-img",function(t){t.preventDefault(),r(e,o(this).attr("data-image-id"))});var a=void 0;e.on("change input",".vp-control-gallery-additional-data [name]",function(){clearTimeout(a),a=setTimeout(function(){var t=e.children(".vp-control-gallery-additional-data"),a=e.children("textarea").attr("name"),r=e.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img.active").attr("data-image-id");if(r){var l=e.children(".vp-control-gallery-items").find('[data-image-id="'+r+'"]');t.find('[name*="'+a+'_additional_"]').each(function(){var e=o(this).attr("name").replace(a+"_additional_","").replace("[]",""),t=o(this).val()||"";"object"===(void 0===t?"undefined":i(t))&&(t=JSON.stringify(t)),l.find('[data-additional="'+e+'"]').html(t||"")}),n(e)}},200)})}),T.length)){var E=T.children(".vp-control-gallery-additional-data");o(document).on("mousedown",function(e){if(S){var t=e.target;o(t).closest(".vp-control-gallery-additional-data, .vp-control-gallery-items-img, .select2-vp-container").length||(E.removeClass("active"),T.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img.active").removeClass("active"),S=T.find(".vp-control-gallery-additional-data.active").length)}})}var z=o('[name="vp_custom_css"]'),A=!1,L=!0;if(void 0!==d&&z.length){if(c&&c.classnames){var O=d.hint.css;d.hint.css=function(e){var t=e.getCursor(),a=O(e)||{from:t,to:e.getCursor(),list:[]},n=e.getTokenAt(t);return"top"===n.state.state&&0===n.string.indexOf(".")&&(a={from:d.Pos(t.line,n.start),to:d.Pos(t.line,n.end),list:[]},c.classnames.forEach(function(e){-1!==e.indexOf(n.string)&&a.list.push(e)})),a}}var $=d.fromTextArea(z[0],{mode:"css",theme:"eclipse",indentUnit:4,autoCloseTags:!0,autoCloseBrackets:!0,matchBrackets:!0,foldGutter:!0,lint:{options:{errors:!0,"box-model":!0,"display-property-grouping":!0,"duplicate-properties":!0,"known-properties":!0,"outline-none":!0},onUpdateLinting:function(e,t,a){var n=[];e.forEach(function(e){"error"===e.severity&&n.push(e)}),a.vcLintErrors=n,A||s(a.vcLintErrors,!0)}},lineNumbers:!0,lineWrapping:!0,scrollPastEnd:!0,emmet_active:!0,emmet:!0,styleActiveLine:!0,continueComments:!0,scrollbarStyle:"simple",extraKeys:{"Ctrl-Space":"autocomplete","Ctrl-/":"toggleComment","Cmd-/":"toggleComment","Alt-F":"findPersistent"},gutters:["CodeMirror-lint-markers","CodeMirror-linenumbers","CodeMirror-foldgutter"]});p($),z.data("CodeMirrorInstance",$),$.on("change",function(){$.save(),z.change()}),$.on("keyup",function(e,t){var a=/^[a-zA-Z]$/.test(t.key);if(!e.state.completionActive||!a){var n=e.getTokenAt(e.getCursor());if("string"!==n.type&&"comment"!==n.type){var i=e.doc.getLine(e.doc.getCursor().line).substr(0,e.doc.getCursor().ch);(a||":"===t.key||" "===t.key&&/:\s+$/.test(i))&&e.showHint({completeSingle:!1})}}})}var M=!1;v.on("click","#publish:not(.disabled)",function(e){if(M=!0,!A){var t=o(this),a=z.length&&z.data("CodeMirrorInstance");a&&a.vcLintErrors&&a.vcLintErrors.length&&(e.preventDefault(),t.addClass("disabled button-disabled button-primary-disabled"),setTimeout(function(){t.removeClass("disabled button-disabled button-primary-disabled")},1500),s(a.vcLintErrors,!1),o("html,body").animate({scrollTop:o("#vp_custom_css").offset().top-100},300),a.focus(),a.setCursor(a.vcLintErrors[0].from.line))}});var P=u.serialize();o(window).on("beforeunload",function(){return M?void(M=!1):P!==u.serialize()||void 0}),v.on("change","#vp_custom_css_notice_prevent",function(){A=!0,o(this).closest(".notice").slideUp()})}}()},9:function(e,t,a){e.exports=a(10)}});
1
+ !function(e){function t(n){if(a[n])return a[n].exports;var i=a[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var a={};t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=9)}({10:function(e,t){function a(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}function n(){h[_.is(":checked")?"show":"hide"]()}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=jQuery,r=window,l=r.ajaxurl,s=r.VPAdminVariables,c=r.Tooltip,d=r.CodeMirror,p=r.emmetCodeMirror,v=o("body"),m=o(window),u=o('form[name="post"]'),f=o('[name="post_type"]'),g=o("#postID, #post_ID").eq(0).val();v.on("focus",'[name="vp_list_shortcode"], [name="vp_filter_shortcode"]',function(){this.select()}),v.on("click",".vp-onclick-selection",function(){window.getSelection().selectAllChildren(this)});var h=o("#vp_format_video"),_=o("#post-format-video");h.length&&_.length&&(n(),v.on("change","[name=post_format]",function(){n()}));var y=null,b=void 0;v.on("change input",'.vp-input[name="video_url"]',function(){null!==y&&y.abort();var e=o(this);e.next(".vp-oembed-preview").html(""),clearTimeout(b),b=setTimeout(function(){y=o.ajax({url:l,method:"GET",dataType:"json",data:{action:"vp_find_oembed",q:e.val(),nonce:s.nonce},complete:function(t){var a=t.responseJSON;a&&void 0!==a.html&&e.next(".vp-oembed-preview").html(a.html)}})},250)}),void 0!==c&&o('[data-hint]:not([data-hint=""]):not([data-hint="false"])').each(function(){var e=o(this);new c(this,{placement:e.attr("data-hint-place")||"top",title:e.attr("data-hint"),container:o("body")[0],boundariesElement:"viewport"})}),function(){function e(){var e="",t=o('[name="vp_controls_styles"]'),a=".vp-id-"+g,n=t.val();o('.vp-control-style [type="hidden"]').each(function(){var t=o(this),n=t.closest(".vp-control");if("none"!==n.css("display")){var i=n.find(t.attr("data-style-from")).val();e&&(e+=" "),e+=a+" "+t.attr("data-style-element")+" { "+t.attr("data-style-property")+": "+i+"; }"}}),n!==e&&t.val(e).trigger("vp-fake-change")}function t(e,t){var a=e.find('[data-image-id="'+t+'"]'),n={id:t};return a.find("[data-additional]").each(function(){var e=o(this),t=e.attr("data-additional");if(n[t]=e.html(),"true"===e.attr("data-to-json"))try{n[t]=JSON.parse(n[t])}catch(e){n[t]=""}}),n}function n(e,t){var a=e.find('[data-image-id="'+t+'"]'),n={};return a.find("[data-meta]").each(function(){n[o(this).attr("data-meta")]=o(this).html()}),n}function r(e){var a=[];e.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img").each(function(){a.push(t(e,o(this).attr("data-image-id")))});var n=JSON.stringify(a),i=e.children("textarea");n!==i.val()&&i.val(n).change()}function c(e,i){var r=e.children("textarea").attr("name"),l=e.children(".vp-control-gallery-additional-data"),s=l.children(".vp-control-gallery-additional-data-preview"),c=e.children(".vp-control-gallery-items").find('.vp-control-gallery-items-img[data-image-id="'+i+'"]'),d=t(e,i),p=n(e,i);d&&Object.keys(d).forEach(function(n){var i=l.find('[name="'+r+"_additional_"+n+'"], [name="'+r+"_additional_"+n+'[]"]').val(d[n]||"");if(i.hasClass("vp-select2")){if(i.hasClass("vp-select2-tags")){var s=[],c=[];e.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img").each(function(){var i=t(e,o(this).attr("data-image-id"));i&&void 0!==i[n]&&i[n]&&(s=[].concat(a(new Set([].concat(a(s),a(i[n]))))))}),s.forEach(function(e){c.push(new window.Option(e,e,!1,!1))}),i.html(c.length?c:""),i.val(void 0!==d[n]&&d[n]?d[n]:"")}i.trigger("change")}}),s.find(".vp-control-gallery-additional-data-preview-image img").attr("src",c.children("img").attr("src")||""),s.find(".vp-control-gallery-additional-data-preview-name").html(p.filename),s.find(".vp-control-gallery-additional-data-preview-size").html(p.width+"x"+p.height+" ("+p.filesizeHumanReadable+")"),s.find(".vp-control-gallery-additional-data-preview-edit a").attr("href",p.editLink.replace("&amp;","&")),c.siblings().removeClass("active"),c.addClass("active"),l.addClass("active"),E=S.find(".vp-control-gallery-additional-data.active").length}function h(e,t){if(O&&(t=!1,O=!1),s&&s.css_editor_error_notice){var a=!1;if(1===e.length?a=s.css_editor_error_notice.singular.replace("%d","1"):e.length>1&&(a=s.css_editor_error_notice.plural.replace("%d",String(e.length))),a){var n=A.prev("#vp_custom_css_notice");if(n.length||t||(n=o('<div class="notice notice-error inline" id="vp_custom_css_notice"></div>'),A.before(n)),!n.length)return;var i='<p class="notification-message">'+a+'</p><p><input id="vp_custom_css_notice_prevent" type="checkbox"><label for="vp_custom_css_notice_prevent">'+s.css_editor_error_checkbox+"</label></p>";n.html(i)}else A.prev("#vp_custom_css_notice").remove()}}if("vp_lists"===f.val()&&u.length){var _=o(".vp-content-source"),y=_.find('[name="vp_content_source"]');_.on("click",".vp-content-source__item",function(){var e=o(this).attr("data-content");_.find('[data-content="'+e+'"]').addClass("active").siblings().removeClass("active"),y.val(e).change()}),_.children('[data-content="'+y.val()+'"]').click(),o.fn.conditionize&&u.conditionize(),o(".vp-control-range").each(function(){var e=o(this).find("input"),t=e.filter('[type="hidden"]');e.on("change input",function(a){e.val(o(this).val()),t.trigger("vp-fake-"+a.type)})}),o.fn.wpColorPicker&&o(".vp-color-picker").each(function(){function e(e){if(a)return void(a=!1);clearTimeout(t),t=setTimeout(function(){o(e.target).change()},300)}var t=void 0,a=!0;o(this).data("change",e).wpColorPicker()}),o.fn.imagepicker&&o(".vp-image-picker").imagepicker();var b=o(".vp_list_preview iframe"),w=!1,k=!1,C=o('<form target="vp_list_preview_iframe" method="post" style="display: none">').attr("action",b.attr("src")).insertAfter(u);o.fn.iFrameResize&&b.iFrameResize({interval:10});var x=void 0;u.on("change input vp-fake-change vp-fake-input",'[name*="vp_"]',function(t){var a=o(this);if(!a.closest(".vp-no-reload").length){if(o('[name="'+a.attr("name")+'__style[]"]').length)return void e();var n={name:a.attr("name"),value:a.is("[type=checkbox], [type=radio]")?a.is(":checked"):a.val(),reload:"change"===t.type||"vp-fake-change"===t.type,jQuery:k,$portfolio:w},i=C.find('[name="'+n.name+'"]');i.length||(i=o('<input type="hidden" name="'+n.name+'" />').appendTo(C)),i.attr("value",n.value),m.trigger("vp-preview-change",n),n.reload||e(),!n.reload&&w||(clearTimeout(x),x=setTimeout(function(){k=!1,w=!1,C.submit()},400))}}),b.on("load",function(){k=this.contentWindow.jQuery,w=k(".vp-portfolio"),e()}),m.on("vp-preview-change",function(e,t){if(t.$portfolio)switch(t.name){case"vp_layout":case"vp_tiles_type":case"vp_masonry_columns":case"vp_justified_row_height":case"vp_justified_row_height_tolerance":case"vp_slider_effect":case"vp_slider_speed":case"vp_slider_autoplay":case"vp_slider_centered_slides":case"vp_slider_loop":case"vp_slider_free_mode":case"vp_slider_arrows":case"vp_slider_arrows_icon_prev":case"vp_slider_arrows_icon_next":case"vp_slider_bullets":case"vp_slider_bullets_dynamic":case"vp_items_gap":var a=t.name;a=a.substring(3),a=a.replace(/_/g,"-"),t.$portfolio.attr("data-vp-"+a,t.value),t.$portfolio.vpf("init"),t.reload=!1;break;case"vp_filter_align":t.$portfolio.find(".vp-filter").removeClass("vp-filter__align-center vp-filter__align-left vp-filter__align-right").addClass("vp-filter__align-"+t.value),t.reload=!1;break;case"vp_pagination_align":t.$portfolio.find(".vp-pagination").removeClass("vp-pagination__align-center vp-pagination__align-left vp-pagination__align-right").addClass("vp-pagination__align-"+t.value),t.reload=!1;break;case"vp_controls_styles":var n=t.$portfolio.closest("html"),i="vp-controls-styles-"+g+"-inline-css",o=n.find("#"+i);o.length||(o=t.jQuery('<style id="'+i+'">'),n.find("body").prepend(o)),o.html(t.value),t.reload=!1;break;case"vp_custom_css":var r=t.$portfolio.closest("html"),l="vp-custom-css-"+g+"-inline-css",s=r.find("#"+l);s.length||(s=t.jQuery('<style id="'+l+'">'),r.find("body").prepend(s)),s.html(t.value),t.reload=!1;break;case"vp_list_name":case"vp_stretch":t.reload=!1}}),v.on("click",".vp-control-image-dropdown",function(e){o(e.target).closest(".vp-control-image-dropdown__content").length||o(this).toggleClass("active")}),v.on("mousedown",function(e){var t=o(e.target).closest(".vp-control-image-dropdown");o(".vp-control-image-dropdown.active").each(function(){this!==t[0]&&o(this).removeClass("active")})}),v.on("change",".vp-control-image-dropdown .vp-image-picker",function(){var e=o(this),t=e.data("picker");if(t){var a=t.select.find('option[value="'+t.select.val()+'"]'),n=a.parent("optgroup"),i=e.closest(".vp-control-image-dropdown"),r=a.attr("data-img-src");i.length&&(i.children(".vp-control-image-dropdown__preview").html('<img src="'+r+'" alt="">'),n.length&&i.children(".vp-control-image-dropdown__title").html(n.attr("label")))}});var j=o('[name="vp_list_name"]'),T=o('[name="post_title"]');j.length&&T.length&&(j.on("input",function(){T.val()!==j.val()&&T.val(j.val()).change()}),T.on("input",function(){j.val(T.val())})),o.fn.select2&&o(".vp-select2").each(function(){var e=o(this),t={width:"100%",minimumResultsForSearch:e.hasClass("vp-select2-nosearch")?-1:1,tags:e.hasClass("vp-select2-tags")},a=!!e.attr("data-post-type")&&o(e.attr("data-post-type"));e.closest(".vp-select2-posts-ajax").length&&(t=o.extend({minimumInputLength:1,ajax:{url:l,dataType:"json",delay:250,data:function(e){return{action:"vp_find_posts",q:e.term,post_type:!!a&&a.val(),nonce:s.nonce}},processResults:function(e){return{results:!(!e||!e.length)&&e}},cache:!0},escapeMarkup:function(e){return e},templateResult:function(e){if(e.loading)return e.text;var t="";e.title&&(t=e.title);var a="";e.post_type&&(a=e.post_type);var n="";return e.img&&(n="style=\"background-image: url('"+e.img+"');\""),'<div class="vp-select2-ajax__result"><div class="vp-select2-ajax__result-img" '+n+'></div><div class="vp-select2-ajax__result-data"><div class="vp-select2-ajax__result-title">'+t+'</div><div class="vp-select2-ajax__result-post-type">'+a+"</div></div></div>"},templateSelection:function(e){return e.title||e.text}},t)),e.closest(".vp-select2-taxonomies-ajax").length&&(t=o.extend({minimumInputLength:1,ajax:{url:l,dataType:"json",delay:250,data:function(e){return{action:"vp_find_taxonomies",q:e.term,post_type:!!a&&a.val(),nonce:s.nonce}},processResults:function(e){var t=[];return e&&Object.keys(e).forEach(function(a){t.push({text:a,children:e[a]})}),{results:t}},cache:!0}},t)),e.select2(t).data("select2").$dropdown.addClass("select2-vp-container")});var S=o(".vp-control-gallery"),E=0;if(o.fn.sortable&&(S.each(function(){var e=o(this),t=e.children(".vp-control-gallery-items-default");e.children(".vp-control-gallery-items").sortable({animation:150,draggable:".vp-control-gallery-items-img",onUpdate:function(){r(e)}}),e.on("click",".vp-control-gallery-items-remove",function(t){t.preventDefault(),o(this).parent().remove(),r(e)}),e.on("click",".vp-control-gallery-items-add",function(a){a.preventDefault();var n=e.data("wp-frame");return n?void n.open():wp.media?(n=wp.media({title:"Select or Upload Images",button:{text:"Use this images"},multiple:!0,library:{type:"image"}}),e.data("wp-frame",n),n.on("select",function(){var a=n.state().get("selection").models;a&&a.length&&(a.forEach(function(a){var n=a.changed.url;a.changed.sizes&&a.changed.sizes.thumbnail&&(n=a.changed.sizes.thumbnail.url);var i=t.children().clone();i.attr("data-image-id",a.id),i.children("img").attr("src",n),i.find('[data-meta="width"]').html(a.changed.width),i.find('[data-meta="height"]').html(a.changed.height),i.find('[data-meta="filename"]').html(a.changed.filename),i.find('[data-meta="editLink"]').html(a.changed.editLink),i.find('[data-meta="filesizeHumanReadable"]').html(a.changed.filesizeHumanReadable),e.find(".vp-control-gallery-items-add").before(i)}),r(e))}),void n.open()):void console.error("Can't access wp.media object.")}),e.on("click",".vp-control-gallery-items-img",function(t){t.preventDefault(),c(e,o(this).attr("data-image-id"))});var a=void 0;e.on("change input",".vp-control-gallery-additional-data [name]",function(){clearTimeout(a),a=setTimeout(function(){var t=e.children(".vp-control-gallery-additional-data"),a=e.children("textarea").attr("name"),n=e.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img.active").attr("data-image-id");if(n){var l=e.children(".vp-control-gallery-items").find('[data-image-id="'+n+'"]');t.find('[name*="'+a+'_additional_"]').each(function(){var e=o(this).attr("name").replace(a+"_additional_","").replace("[]",""),t=o(this).val()||"";"object"===(void 0===t?"undefined":i(t))&&(t=JSON.stringify(t)),l.find('[data-additional="'+e+'"]').html(t||"")}),r(e)}},200)})}),S.length)){var z=S.children(".vp-control-gallery-additional-data");o(document).on("mousedown",function(e){if(E){var t=e.target;o(t).closest(".vp-control-gallery-additional-data, .vp-control-gallery-items-img, .select2-vp-container").length||(z.removeClass("active"),S.children(".vp-control-gallery-items").find(".vp-control-gallery-items-img.active").removeClass("active"),E=S.find(".vp-control-gallery-additional-data.active").length)}})}var A=o('[name="vp_custom_css"]'),L=!1,O=!0;if(void 0!==d&&A.length){if(s&&s.classnames){var $=d.hint.css;d.hint.css=function(e){var t=e.getCursor(),a=$(e)||{from:t,to:e.getCursor(),list:[]},n=e.getTokenAt(t);return"top"===n.state.state&&0===n.string.indexOf(".")&&(a={from:d.Pos(t.line,n.start),to:d.Pos(t.line,n.end),list:[]},s.classnames.forEach(function(e){-1!==e.indexOf(n.string)&&a.list.push(e)})),a}}var M=d.fromTextArea(A[0],{mode:"css",theme:"eclipse",indentUnit:4,autoCloseTags:!0,autoCloseBrackets:!0,matchBrackets:!0,foldGutter:!0,lint:{options:{errors:!0,"box-model":!0,"display-property-grouping":!0,"duplicate-properties":!0,"known-properties":!0,"outline-none":!0},onUpdateLinting:function(e,t,a){var n=[];e.forEach(function(e){"error"===e.severity&&n.push(e)}),a.vcLintErrors=n,L||h(a.vcLintErrors,!0)}},lineNumbers:!0,lineWrapping:!0,scrollPastEnd:!0,emmet_active:!0,emmet:!0,styleActiveLine:!0,continueComments:!0,scrollbarStyle:"simple",extraKeys:{"Ctrl-Space":"autocomplete","Ctrl-/":"toggleComment","Cmd-/":"toggleComment","Alt-F":"findPersistent"},gutters:["CodeMirror-lint-markers","CodeMirror-linenumbers","CodeMirror-foldgutter"]});p(M),A.data("CodeMirrorInstance",M),M.on("change",function(){M.save(),A.change()}),M.on("keyup",function(e,t){var a=/^[a-zA-Z]$/.test(t.key);if(!e.state.completionActive||!a){var n=e.getTokenAt(e.getCursor());if("string"!==n.type&&"comment"!==n.type){var i=e.doc.getLine(e.doc.getCursor().line).substr(0,e.doc.getCursor().ch);(a||":"===t.key||" "===t.key&&/:\s+$/.test(i))&&e.showHint({completeSingle:!1})}}})}var P=!1;v.on("click","#publish:not(.disabled)",function(e){if(P=!0,!L){var t=o(this),a=A.length&&A.data("CodeMirrorInstance");a&&a.vcLintErrors&&a.vcLintErrors.length&&(e.preventDefault(),t.addClass("disabled button-disabled button-primary-disabled"),setTimeout(function(){t.removeClass("disabled button-disabled button-primary-disabled")},1500),h(a.vcLintErrors,!1),o("html,body").animate({scrollTop:o("#vp_custom_css").offset().top-100},300),a.focus(),a.setCursor(a.vcLintErrors[0].from.line))}});var R=u.serialize();o(window).on("beforeunload",function(){return P?void(P=!1):R!==u.serialize()||void 0}),v.on("change","#vp_custom_css_notice_prevent",function(){L=!0,o(this).closest(".notice").slideUp()})}}()},9:function(e,t,a){e.exports=a(10)}});
assets/admin/js/vc-frontend.min.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 1.5.0
6
  * Author : nK https://nkdev.info
7
  */
8
  var t=window,o=t.vc;jQuery(function(){void 0!==o&&o.events.on("shortcodes:add shortcodeView:updated",function(e){if("visual_portfolio"===e.settings.base){var n=o.$frame[0].contentWindow,t=!!n&&n.jQuery;if(t){var r=t(e.view.el).children(".vp-portfolio");r.length&&void 0!==r.vpf&&r.vpf()}}})})}});
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 1.6.0
6
  * Author : nK https://nkdev.info
7
  */
8
  var t=window,o=t.vc;jQuery(function(){void 0!==o&&o.events.on("shortcodes:add shortcodeView:updated",function(e){if("visual_portfolio"===e.settings.base){var n=o.$frame[0].contentWindow,t=!!n&&n.jQuery;if(t){var r=t(e.view.el).children(".vp-portfolio");r.length&&void 0!==r.vpf&&r.vpf()}}})})}});
assets/css/style.min.css CHANGED
@@ -1,5 +1,5 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 1.5.0
4
  * Author : nK https://nkdev.info
5
- */.vp-portfolio{position:relative;min-height:114px}.vp-portfolio,.vp-portfolio *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-portfolio__items{-webkit-transition:.3s height ease-in-out, .3s transform ease-in-out;transition:.3s height ease-in-out, .3s transform ease-in-out}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__pagination-wrap{visibility:hidden;opacity:0;-webkit-transition:.7s opacity, .7s visibility;transition:.7s opacity, .7s visibility}.vp-portfolio__item-wrap{position:relative;float:left;width:33.333%}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a{display:block;width:100%;height:auto}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:.7s opacity, .7s visibility;transition:.7s opacity, .7s visibility}.vp-portfolio__preloader{position:absolute;left:50%;width:23px;height:24px;margin-top:45px;margin-left:-11px;-webkit-animation:vp-preloader 2s linear infinite;animation:vp-preloader 2s linear infinite}.vp-portfolio__preloader span{position:absolute;display:block;top:0;left:0;width:10px;height:7px;background-color:#8a8a8a}.vp-portfolio__preloader span:nth-of-type(1){height:14px}.vp-portfolio__preloader span:nth-of-type(2){left:12px}.vp-portfolio__preloader span:nth-of-type(3){top:16px}.vp-portfolio__preloader span:nth-of-type(4){top:9px;left:12px;height:14px}@-webkit-keyframes vp-preloader{0%,100%{opacity:.5}40%,60%{opacity:1}}@keyframes vp-preloader{0%,100%{opacity:.5}40%,60%{opacity:1}}[data-vp-layout="tiles"] .vp-portfolio__item-img img,[data-vp-layout="tiles"] .vp-portfolio__item-img{position:absolute;top:0;right:0;bottom:0;left:0}[data-vp-layout="tiles"] .vp-portfolio__item-img-wrap{position:relative;display:block;overflow:hidden}[data-vp-layout="tiles"] .vp-portfolio__item-img-wrap::before{content:"";display:block;margin-top:56%}[data-vp-layout="tiles"] .vp-portfolio__item-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: 50% 50%;"}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:.2s height ease-in-out;transition:.2s height ease-in-out}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:left;top:0;left:0;-webkit-transition:.2s transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out;transition:.2s transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;width:auto}[data-vp-layout="slider"] .vp-portfolio__item-img-wrap{position:relative;display:block;overflow:hidden}[data-vp-layout="slider"] .vp-portfolio__item-img-wrap::before{content:"";display:block}[data-vp-layout="slider"] .vp-portfolio__item-img img{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: 50% 50%;"}[data-vp-layout="slider"] .vp-portfolio__items-arrow{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;top:50%;width:40px;height:40px;margin-top:-20px;color:#6c7781;cursor:pointer;background-color:#fff;border-radius:50%;-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,0.05);box-shadow:0 2px 15px 2px rgba(0,0,0,0.05);opacity:.5;-webkit-transition:.2s opacity ease-in-out;transition:.2s opacity ease-in-out;z-index:1}[data-vp-layout="slider"] .vp-portfolio__items-arrow::after{content:"";position:absolute;display:block;top:-10px;right:-10px;bottom:-10px;left:-10px}[data-vp-layout="slider"] .vp-portfolio__items-arrow:hover{opacity:1}[data-vp-layout="slider"] .vp-portfolio__items-arrow-prev{left:10px}[data-vp-layout="slider"] .vp-portfolio__items-arrow-next{right:10px}[data-vp-layout="slider"][data-vp-slider-bullets="true"] .vp-portfolio__items-wrap{padding-bottom:25px}[data-vp-layout="slider"][data-vp-slider-bullets="true"] .vp-portfolio__items-wrap .vp-portfolio__items-arrow{margin-top:-32.5px}[data-vp-layout="slider"] .vp-portfolio__items-bullets{position:absolute;margin-bottom:-15px;text-align:center;z-index:1}[data-vp-layout="slider"] .vp-portfolio__items-bullets.swiper-pagination-bullets-dynamic{margin-bottom:-7px}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span{position:relative;cursor:pointer;background-color:#6c7781;opacity:.2;-webkit-transition:.15s opacity ease-in-out;transition:.15s opacity ease-in-out}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span:hover{opacity:.5}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span.swiper-pagination-bullet-active{opacity:1}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span::after{content:"";position:absolute;display:block;top:-4px;right:-4px;bottom:-4px;left:-4px}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__filter-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__pagination-wrap{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-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;right:0;bottom:0;left:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__filter-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__pagination-wrap{opacity:.5}.vp-portfolio__item-popup{display:none}.vp-pswp{z-index:100000}.vp-pswp .pswp__caption{background-color:rgba(0,0,0,0.75)}.vp-pswp .pswp__caption>div{max-width:600px;font-size:12px;color:#fff}.vp-pswp .pswp__caption a{color:inherit}.vp-pswp .pswp__caption a:hover{opacity:.8}.vp-pswp .pswp__caption .vp-portfolio__item-meta-title{margin-top:0;margin-bottom:3px;font-size:14px;color:inherit}.vp-pswp .pswp__caption .vp-portfolio__item-meta-title a{text-decoration:none}.vp-pswp .pswp__preloader{position:absolute;right:0;bottom:0;z-index:1}.vp-pswp .vp-pswp-video{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;max-width:1920px;height:100%;margin:0 auto;line-height:0;text-align:left;vertical-align:middle;z-index:1045}.vp-pswp .vp-pswp-video>div{position:relative;width:100%;height:0;padding-bottom:56.25%}.vp-pswp .vp-pswp-video>div iframe{position:absolute;top:0;left:0;width:100%;height:100%;margin:0}.vp-pswp .vp-pswp-video>div video{width:100% !important;height:auto !important;margin:0}
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 1.6.0
4
  * Author : nK https://nkdev.info
5
+ */.vp-portfolio{position:relative;min-height:114px}.vp-portfolio,.vp-portfolio *{-webkit-box-sizing:border-box;box-sizing:border-box}.vp-portfolio__items{-webkit-transition:.3s height ease-in-out, .3s transform ease-in-out;transition:.3s height ease-in-out, .3s transform ease-in-out;will-change:height, transform}.vp-portfolio::after,.vp-portfolio__items::after{content:"";display:block;clear:both}.vp-portfolio__items-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__pagination-wrap,.vp-portfolio__item{position:relative;overflow:hidden}.vp-portfolio__items-wrap,.vp-portfolio__filter-wrap,.vp-portfolio__pagination-wrap{visibility:hidden;opacity:0;-webkit-transition:.3s opacity, .3s visibility;transition:.3s opacity, .3s visibility;will-change:opacity, visibility}.vp-portfolio__item-wrap{position:relative;float:left;width:33.333%}.vp-portfolio__item .vp-portfolio__item-img img,.vp-portfolio__item .vp-portfolio__item-img a{display:block;width:100%;height:auto}.vp-portfolio__preloader-wrap{visibility:visible;opacity:1;-webkit-transition:.3s opacity, .3s visibility;transition:.3s opacity, .3s visibility;will-change:opacity, visibility}.vp-portfolio__preloader{position:absolute;left:50%;width:23px;height:24px;margin-top:45px;margin-left:-11px;-webkit-animation:vp-preloader 2s linear infinite;animation:vp-preloader 2s linear infinite}.vp-portfolio__preloader span{position:absolute;display:block;top:0;left:0;width:10px;height:7px;background-color:#8a8a8a}.vp-portfolio__preloader span:nth-of-type(1){height:14px}.vp-portfolio__preloader span:nth-of-type(2){left:12px}.vp-portfolio__preloader span:nth-of-type(3){top:16px}.vp-portfolio__preloader span:nth-of-type(4){top:9px;left:12px;height:14px}@-webkit-keyframes vp-preloader{0%,100%{opacity:.5}40%,60%{opacity:1}}@keyframes vp-preloader{0%,100%{opacity:.5}40%,60%{opacity:1}}[data-vp-layout="tiles"] .vp-portfolio__item-img img,[data-vp-layout="tiles"] .vp-portfolio__item-img{position:absolute;top:0;right:0;bottom:0;left:0}[data-vp-layout="tiles"] .vp-portfolio__item-img-wrap{position:relative;display:block;overflow:hidden}[data-vp-layout="tiles"] .vp-portfolio__item-img-wrap::before{content:"";display:block;margin-top:56%}[data-vp-layout="tiles"] .vp-portfolio__item-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: 50% 50%;"}[data-vp-layout="justified"] .vp-portfolio__items{-webkit-transition:.2s height ease-in-out;transition:.2s height ease-in-out;will-change:height}[data-vp-layout="justified"] .vp-portfolio__item-wrap{float:left;top:0;left:0;-webkit-transition:.2s transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out;transition:.2s transform ease-in-out, .2s width ease-in-out, .2s height ease-in-out;will-change:transform, width, height}[data-vp-layout="slider"] .vp-portfolio__item-wrap{float:none;width:auto}[data-vp-layout="slider"] .vp-portfolio__item-img-wrap{position:relative;display:block;overflow:hidden}[data-vp-layout="slider"] .vp-portfolio__item-img-wrap::before{content:"";display:block}[data-vp-layout="slider"] .vp-portfolio__item-img img{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%;font-family:"object-fit: cover; object-position: 50% 50%;"}[data-vp-layout="slider"] .vp-portfolio__items-arrow{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;top:50%;width:40px;height:40px;margin-top:-20px;color:#6c7781;cursor:pointer;background-color:#fff;border-radius:50%;-webkit-box-shadow:0 0 7px 2px rgba(0,0,0,0.04);box-shadow:0 0 7px 2px rgba(0,0,0,0.04);opacity:.5;-webkit-transition:.2s opacity ease-in-out, .2s box-shadow ease-in-out;transition:.2s opacity ease-in-out, .2s box-shadow ease-in-out;will-change:opacity, box-shadow;z-index:1}[data-vp-layout="slider"] .vp-portfolio__items-arrow::after{content:"";position:absolute;display:block;top:-10px;right:-10px;bottom:-10px;left:-10px}[data-vp-layout="slider"] .vp-portfolio__items-arrow:hover{-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,0.04);box-shadow:0 2px 15px 2px rgba(0,0,0,0.04);opacity:1}[data-vp-layout="slider"] .vp-portfolio__items-arrow-prev{left:10px}[data-vp-layout="slider"] .vp-portfolio__items-arrow-next{right:10px}[data-vp-layout="slider"][data-vp-slider-bullets="true"] .vp-portfolio__items-wrap{padding-bottom:25px}[data-vp-layout="slider"][data-vp-slider-bullets="true"] .vp-portfolio__items-wrap .vp-portfolio__items-arrow{margin-top:-32.5px}[data-vp-layout="slider"] .vp-portfolio__items-bullets{position:absolute;margin-bottom:-15px;text-align:center;z-index:1}[data-vp-layout="slider"] .vp-portfolio__items-bullets.swiper-pagination-bullets-dynamic{margin-bottom:-7px}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span{position:relative;cursor:pointer;background-color:#6c7781;opacity:.2;-webkit-transition:.15s opacity ease-in-out;transition:.15s opacity ease-in-out;will-change:opacity}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span:hover{opacity:.5}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span.swiper-pagination-bullet-active{opacity:1}[data-vp-layout="slider"] .vp-portfolio__items-bullets>span::after{content:"";position:absolute;display:block;top:-4px;right:-4px;bottom:-4px;left:-4px}.vp-portfolio.vp-portfolio__ready{min-height:initial}.vp-portfolio.vp-portfolio__ready .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__filter-wrap,.vp-portfolio.vp-portfolio__ready .vp-portfolio__pagination-wrap{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-portfolio.vp-portfolio__loading::before{content:"";position:absolute;display:block;top:0;right:0;bottom:0;left:0;z-index:1}.vp-portfolio.vp-portfolio__loading .vp-portfolio__items-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__filter-wrap,.vp-portfolio.vp-portfolio__loading .vp-portfolio__pagination-wrap{opacity:.5}.vp-portfolio__item-popup{display:none}.vp-pswp{z-index:100000}.vp-pswp .pswp__caption{background-color:rgba(0,0,0,0.75)}.vp-pswp .pswp__caption>div{max-width:600px;font-size:12px;color:#fff}.vp-pswp .pswp__caption a{color:inherit}.vp-pswp .pswp__caption a:hover{opacity:.8}.vp-pswp .pswp__caption .vp-portfolio__item-meta-title{margin-top:0;margin-bottom:3px;font-size:14px;color:inherit}.vp-pswp .pswp__caption .vp-portfolio__item-meta-title a{text-decoration:none}.vp-pswp .pswp__preloader{position:absolute;right:0;bottom:0;z-index:1}.vp-pswp .vp-pswp-video{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;max-width:1920px;height:100%;margin:0 auto;line-height:0;text-align:left;vertical-align:middle;z-index:1045}.vp-pswp .vp-pswp-video>div{position:relative;width:100%;height:0;padding-bottom:56.25%}.vp-pswp .vp-pswp-video>div iframe{position:absolute;top:0;left:0;width:100%;height:100%;margin:0}.vp-pswp .vp-pswp-video>div video{width:100% !important;height:auto !important;margin:0}img.visual-portfolio-lazyload:not(.lazyloaded){background-color:rgba(171,173,191,0.1)}
assets/js/script-preview.min.js CHANGED
@@ -1,6 +1,6 @@
1
  !function(t){function e(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var o={};e.m=t,e.c=o,e.d=function(t,o,n){e.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(o,"a",o),o},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=1)}([,function(t,e,o){t.exports=o(2)},function(t,e){/*!
2
  * Name : Visual Portfolio
3
- * Version : 1.5.0
4
  * Author : nK https://nkdev.info
5
  */
6
  !function(t){var e=t("#vp_preview > .vp-portfolio");e.on("click",".vp-portfolio__item, .vp-portfolio__item a",function(t){t.preventDefault(),t.stopPropagation()}),window.iFrameResizer={heightCalculationMethod:function(){return e.outerHeight(!0)}}}(jQuery)}]);
1
  !function(t){function e(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var o={};e.m=t,e.c=o,e.d=function(t,o,n){e.o(t,o)||Object.defineProperty(t,o,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(o,"a",o),o},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=1)}([,function(t,e,o){t.exports=o(2)},function(t,e){/*!
2
  * Name : Visual Portfolio
3
+ * Version : 1.6.0
4
  * Author : nK https://nkdev.info
5
  */
6
  !function(t){var e=t("#vp_preview > .vp-portfolio");e.on("click",".vp-portfolio__item, .vp-portfolio__item a",function(t){t.preventDefault(),t.stopPropagation()}),window.iFrameResizer={heightCalculationMethod:function(){return e.outerHeight(!0)}}}(jQuery)}]);
assets/js/script.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){function e(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return t[o].call(s.exports,s,s.exports,e),s.l=!0,s.exports}var i={};e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([,,,function(t,e,i){t.exports=i(4)},function(t,e){function i(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(){c=_.width(),h=_.height()}var r="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},n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=jQuery,p=window,l=p.VPData,d=p.objectFitImages,v=p.PhotoSwipe,f=p.PhotoSwipeUI_Default,m=l.__,u=l.settingsPopupGallery,_=a(window),c=0,h=0;s(),_.on("resize load orientationchange",s);var w=[320,576,768,992,1200];void 0!==d&&d();var y=function(){function t(e,i){o(this,t);var s=this;s.$item=e;for(var r=e[0].className.split(/\s+/),n=0;n<r.length;n++)r[n]&&/^vp-uid-/.test(r[n])&&(s.uid=r[n].replace(/^vp-uid-/,"")),r[n]&&/^vp-id-/.test(r[n])&&(s.id=r[n].replace(/^vp-id-/,""));if(!s.uid)return void console.error(m.couldnt_retrieve_vp);s.$items_wrap=e.find(".vp-portfolio__items"),s.$pagination=e.find(".vp-portfolio__pagination-wrap"),s.$filter=e.find(".vp-portfolio__filter-wrap"),s.id&&(s.$filter=s.$filter.add(".vp-single-filter.vp-id-"+s.id+" .vp-portfolio__filter-wrap")),s.userOptions=i,s.firstRun=!0,s.init()}return n(t,[{key:"emitEvent",value:function(t,e){e=e?[this].concat(e):[this],this.$item.trigger(t+".vpf.vpf-uid-"+this.uid,e)}},{key:"init",value:function(){var t=this;t.firstRun||t.destroy(),t.destroyed=!1,t.initOptions(),t.initEvents(),t.initLayout(),t.initCustomColors(),t.initPhotoswipe(),t.$items_wrap.imagesLoaded(function(){t.$item.addClass("vp-portfolio__ready"),t.id&&a(".vp-single-filter.vp-id-"+t.id).addClass("vp-single-filter__ready"),t.initIsotope(),t.initFjGallery(),t.initSwiper(),t.emitEvent("imagesLoaded")}),t.emitEvent("init"),t.firstRun=!1}},{key:"destroy",value:function(){var t=this;t.$item.removeClass("vp-portfolio__ready"),t.id&&a(".vp-single-filter.vp-id-"+t.id).removeClass("vp-single-filter__ready"),t.destroyEvents(),t.removeStyle(),t.renderStyle(),t.destroyPhotoswipe(),t.destroyIsotope(),t.destroyFjGallery(),t.destroySwiper(),t.emitEvent("destroy"),t.destroyed=!0}},{key:"addStyle",value:function(t,e,i){i=i||"";var o=this,s=o.uid;o.stylesList||(o.stylesList={}),void 0===o.stylesList[s]&&(o.stylesList[s]={}),void 0===o.stylesList[s][i]&&(o.stylesList[s][i]={}),void 0===o.stylesList[s][i][t]&&(o.stylesList[s][i][t]={}),o.stylesList[s][i][t]=a.extend(o.stylesList[s][i][t],e),o.emitEvent("addStyle",[t,e,i,o.stylesList])}},{key:"removeStyle",value:function(t,e,i){i=i||"";var o=this,s=o.uid;o.stylesList||(o.stylesList={}),void 0===o.stylesList[s]||t||(o.stylesList[s]={}),void 0!==o.stylesList[s]&&void 0!==o.stylesList[s][i]&&void 0!==o.stylesList[s][i][t]&&t&&delete o.stylesList[s][i][t],o.emitEvent("removeStyle",[t,e,o.stylesList])}},{key:"renderStyle",value:function(){var t=this,e=t.uid,i="";t.stylesList||(t.stylesList={}),void 0!==t.stylesList[e]&&Object.keys(t.stylesList[e]).forEach(function(o){o&&(i+="@media "+o+" {"),Object.keys(t.stylesList[e][o]).forEach(function(s){i+=".vp-uid-"+e+" "+s+" {",Object.keys(t.stylesList[e][o][s]).forEach(function(r){i+=r+":"+t.stylesList[e][o][s][r]+";"}),i+="}"}),o&&(i+="}")});var o=a("#vp-style-"+e);o.length||(o=a("<style>").attr("id","vp-style-"+e).appendTo("head")),o.html(i),t.emitEvent("renderStyle",[i,t.stylesList,o])}},{key:"firstToLowerCase",value:function(t){return t.substr(0,1).toLowerCase()+t.substr(1)}},{key:"initOptions",value:function(t){var e=this;e.defaults={layout:"tile",itemsGap:0,tilesType:"3|1,1|",masonryColumns:3,justifiedRowHeight:250,justifiedRowHeightTolerance:.25,pagination:"load-more"},t&&(e.userOptions=t);var i=e.$item[0].dataset,o={};Object.keys(i).forEach(function(t){t&&"vp"===t.substring(0,2)&&(o[e.firstToLowerCase(t.substring(2))]=i[t])}),e.options=a.extend({},e.defaults,o,e.userOptions),e.emitEvent("initOptions")}},{key:"isCrossLine",value:function(t,e,i,o){var s=(o.x-i.x)*(t.y-i.y)-(o.y-i.y)*(t.x-i.x),r=(o.x-i.x)*(e.y-i.y)-(o.y-i.y)*(e.x-i.x),n=(e.x-t.x)*(i.y-t.y)-(e.y-t.y)*(i.x-t.x),a=(e.x-t.x)*(o.y-t.y)-(e.y-t.y)*(o.x-t.x);return s*r<=0&&n*a<=0}},{key:"initEvents",value:function(){function t(){var t=i.$item[0].getBoundingClientRect(),e=t.left,o=c-t.right,s=parseFloat(i.$item.css("margin-left")||0),r=parseFloat(i.$item.css("margin-right")||0);i.$item.css({"margin-left":s-e,"margin-right":r-o})}function e(){var t=i.$item[0].getBoundingClientRect();t.bottom>0&&t.bottom-n<=h&&i.loadNewItems(i.options.nextPageUrl,!1,function(){e()})}var i=this,o=".vpf.vpf-uid-"+i.uid;if(i.$item.hasClass("vp-portfolio__stretch")&&(_.on("load"+o+" resize"+o+" orientationchange"+o,function(){t()}),t()),"fly"===i.options.itemsStyle){var s={};_.on("mousemove"+o,function(t){s={x:t.clientX,y:t.clientY}}),i.$item.on("mouseenter"+o+" mouseleave"+o,".vp-portfolio__item",function(t){var e=a(this),o=e[0].getBoundingClientRect(),r=e.find(".vp-portfolio__item-overlay"),n="mouseenter"===t.type,p="0%",l="0%",d={x:t.clientX,y:t.clientY},v=i.isCrossLine({x:o.left,y:o.top},{x:o.left+o.width,y:o.top},d,s),f=i.isCrossLine({x:o.left,y:o.top+o.height},{x:o.left+o.width,y:o.top+o.height},d,s),m=i.isCrossLine({x:o.left,y:o.top},{x:o.left,y:o.top+o.height},d,s),u=i.isCrossLine({x:o.left+o.width,y:o.top},{x:o.left+o.width,y:o.top+o.height},d,s);if(!(v||f||m||u)){var _=(o.width/2-d.x+o.left)/(o.width/2),c=(o.height/2-d.y+o.top)/(o.height/2);Math.abs(_)>Math.abs(c)?_>0?m=!0:u=!0:c>0?v=!0:f=!0}v?l="-10"+l:f?l="10"+l:m?p="-10"+p:u&&(p="10"+p),n&&(r.css({transition:"none",transform:"translateX("+p+") translateY("+l+") translateZ(0)"}),r[0].offsetHeight),r.css({transition:".2s transform ease-in-out",transform:"translateX("+(n?"0%":p)+") translateY("+(n?"0%":l)+") translateZ(0)"})})}i.$filter.on("click"+o,".vp-filter .vp-filter__item a",function(t){t.preventDefault();var e=a(this);i.loading||e.closest(".vp-filter__item").addClass("vp-filter__item-active").siblings().removeClass("vp-filter__item-active"),i.loadNewItems(e.attr("href"),!0)}),i.$item.on("click"+o,".vp-pagination .vp-pagination__item a",function(t){t.preventDefault();var e=a(this);e.hasClass("vp-pagination__no-more")&&"paged"!==i.options.pagination||i.loadNewItems(e.attr("href"),"paged"===i.options.pagination)}),i.$item.on("click"+o,".vp-portfolio__items .vp-portfolio__item-meta-category a",function(t){t.preventDefault(),t.stopPropagation(),i.loadNewItems(a(this).attr("href"),!0)});var r=void 0,n=250;"infinite"===i.options.pagination&&(_.on("load"+o+" scroll"+o+" resize"+o+" orientationchange"+o,function(){clearTimeout(r),r=setTimeout(function(){e()},60)}),e()),i.emitEvent("initEvents")}},{key:"destroyEvents",value:function(){var t=this,e=".vpf.vpf-uid-"+t.uid;t.$item.off(e),t.$filter.off(e),_.off(e),t.emitEvent("destroyEvents")}},{key:"getTilesSettings",value:function(){var t=this,e=t.options.tilesType.split(/[:|]/);return void 0===e[e.length-1]||e[e.length-1]||e.pop(),e}},{key:"initLayout",value:function(){var t=this;if(t.options.layout)switch(t.options.layout){case"tiles":var e=t.getTilesSettings(),i=parseInt(e[0],10)||1;if(e.shift(),t.addStyle(".vp-portfolio__item-wrap",{width:100/i+"%"}),e&&e.length)for(var o=0;o<e.length;o++){var s=e[o].split(","),r=parseFloat(s[0])||1,n=parseFloat(s[1])||1,a=".vp-portfolio__item-wrap";e.length>1&&(a+=":nth-of-type("+e.length+"n+"+(o+1)+")"),r&&1!==r&&t.addStyle(a,{width:100*r/i+"%"}),t.addStyle(a+" .vp-portfolio__item-img-wrap::before",{"margin-top":100*n+"%"})}for(var p=i-1,l=Math.min(w.length-1,p);l>=0;l--)p>0&&void 0!==w[l]&&(t.addStyle(".vp-portfolio__item-wrap",{width:100/p+"%"},"screen and (max-width: "+w[l]+"px)"),t.addStyle(".vp-portfolio__item-wrap:nth-of-type(n)",{width:100/p+"%"},"screen and (max-width: "+w[l]+"px)")),p-=1;break;case"masonry":t.addStyle(".vp-portfolio__item-wrap",{width:100/t.options.masonryColumns+"%"});for(var d=t.options.masonryColumns,v=d-1,f=Math.min(w.length-1,v);f>=0;f--)v>0&&void 0!==w[f]&&t.addStyle(".vp-portfolio__item-wrap",{width:100/v+"%"},"screen and (max-width: "+w[f]+"px)"),v-=1;case"justified":break;case"slider":"auto"!==t.options.sliderItemsHeight&&("auto"===t.options.sliderSlidesPerView?t.options.sliderItemsHeight.indexOf("%")===t.options.sliderItemsHeight.length-1?(t.addStyle(".vp-portfolio__items-wrap::before",{content:'""',display:"block",width:"100%","margin-top":isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}),t.addStyle(".vp-portfolio__items",{position:"absolute",top:0,left:0,right:0,bottom:0}),t.addStyle(".vp-portfolio__item-wrap",{height:"true"===t.options.sliderBullets?"calc( 100% - 25px )":"100%"}),t.addStyle(".vp-portfolio__item, .vp-portfolio__item-img-wrap, .vp-portfolio__item-img, .vp-portfolio__item-wrap .vp-portfolio__item .vp-portfolio__item-img a, .vp-portfolio__item-wrap .vp-portfolio__item .vp-portfolio__item-img img",{width:"auto",height:"100%"})):t.addStyle(".vp-portfolio__item .vp-portfolio__item-img img",{width:"auto",height:isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}):(t.addStyle(".vp-portfolio__item-img-wrap::before",{"margin-top":isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}),t.addStyle(".vp-portfolio__item-img img, .vp-portfolio__item-img",{position:"absolute",top:0,right:0,bottom:0,left:0}),t.addStyle(".vp-portfolio__item .vp-portfolio__item-img img",{width:"100%",height:"100%"})))}var m=parseInt(t.options.itemsGap,10);if(m&&("tiles"===t.options.layout||"masonry"===t.options.layout)){t.addStyle(".vp-portfolio__items",{"margin-left":"-"+m+"px","margin-top":"-"+m+"px"});var u=m+"px";t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item",{"margin-left":u,"margin-top":u}),"tiles"===t.options.layout&&(t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item-img-wrap",{"margin-left":"-"+u,"margin-top":"-"+u}),t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item-img",{left:u,top:u}))}t.renderStyle(),t.emitEvent("initLayout")}},{key:"initCustomColors",value:function(){var t=this;t.$item.find("[data-vp-bg-color]").each(function(){var e=a(this).attr("data-vp-bg-color");t.addStyle('[data-vp-bg-color="'+e+'"]',{"background-color":e+" !important"})}),t.$item.find("[data-vp-text-color]").each(function(){var e=a(this).attr("data-vp-text-color");t.addStyle('[data-vp-text-color="'+e+'"]',{color:e+" !important"})}),t.renderStyle(),t.emitEvent("initCustomColors")}},{key:"initIsotope",value:function(t){var e=this;"tiles"!==e.options.layout&&"masonry"!==e.options.layout||(e.$items_wrap.isotope(t||{itemSelector:".vp-portfolio__item-wrap",layoutMode:"masonry",transitionDuration:"0.3s",percentPosition:!0}),e.emitEvent("initIsotope",[t]))}},{key:"destroyIsotope",value:function(){var t=this;t.$items_wrap.data("isotope")&&(t.$items_wrap.isotope("destroy"),t.emitEvent("destroyIsotope"))}},{key:"initFjGallery",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this;"justified"===i.options.layout&&(i.$items_wrap.fjGallery(!1!==t?t:{gutter:parseFloat(i.options.itemsGap)||0,rowHeight:parseFloat(i.options.justifiedRowHeight)||200,rowHeightTolerance:parseFloat(i.options.justifiedRowHeightTolerance)||0,itemSelector:".vp-portfolio__item-wrap",imageSelector:".vp-portfolio__item-img img"},e),i.emitEvent("initFjGallery",[t]))}},{key:"destroyFjGallery",value:function(){var t=this;t.$items_wrap[0].fjGallery&&(t.$items_wrap.fjGallery("destroy"),t.emitEvent("destroyFjGallery"))}},{key:"initSwiper",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this;if("slider"===e.options.layout&&void 0!==window.Swiper){var i=e.$items_wrap.parent();i.addClass("swiper-container"),e.$items_wrap.addClass("swiper-wrapper"),e.$items_wrap.children().addClass("swiper-slide"),"true"!==e.options.sliderArrows||i.find(".vp-portfolio__items-arrow").length||i.append('\n <div class="vp-portfolio__items-arrow vp-portfolio__items-arrow-prev"><span class="'+e.options.sliderArrowsIconPrev+'"></span></div>\n <div class="vp-portfolio__items-arrow vp-portfolio__items-arrow-next"><span class="'+e.options.sliderArrowsIconNext+'"></span></div>\n '),"true"!==e.options.sliderBullets||i.find(".vp-portfolio__items-bullets").length||i.append('<div class="vp-portfolio__items-bullets"></div>');var o=e.options.sliderSlidesPerView||3,s={};if(!isNaN(o))for(var r=o-1,n=Math.min(w.length-1,r);n>=0;n--)r>0&&void 0!==w[n]&&(s[w[n]]={slidesPerView:r}),r-=1;new window.Swiper(i[0],t||{speed:1e3*(parseFloat(e.options.sliderSpeed,10)||0),autoHeight:"auto"===e.options.sliderItemsHeight,effect:e.options.sliderEffect||"slide",spaceBetween:parseFloat(e.options.itemsGap)||0,centeredSlides:"true"===e.options.sliderCenteredSlides,freeMode:"true"===e.options.sliderFreeMode,loop:"true"===e.options.sliderLoop,autoplay:parseFloat(e.options.sliderAutoplay)>0&&{delay:1e3*parseFloat(e.options.sliderAutoplay),disableOnInteraction:!1},navigation:"true"===e.options.sliderArrows&&{nextEl:".vp-portfolio__items-arrow-next",prevEl:".vp-portfolio__items-arrow-prev"},pagination:"true"===e.options.sliderBullets&&{el:".vp-portfolio__items-bullets",clickable:!0,dynamicBullets:"true"===e.options.sliderBulletsDynamic},slidesPerView:o,breakpoints:s,keyboard:!0,grabCursor:!0}),e.emitEvent("initSwiper",[t])}}},{key:"destroySwiper",value:function(){var t=this,e=t.$items_wrap.parent()[0].swiper;if(e){e.destroy();var i=t.$items_wrap.parent();i.removeClass("swiper-container"),t.$items_wrap.removeClass("swiper-wrapper"),t.$items_wrap.children().removeClass("swiper-slide"),i.find(".vp-portfolio__items-arrow, .vp-portfolio__items-bullets").remove(),t.emitEvent("destroySwiper")}}},{key:"initPhotoswipe",value:function(){function t(e,i){if(void 0===i)return void(e&&e.itemHolders.length&&e.itemHolders.forEach(function(i){i.item&&i.item.html&&t(e,i.item)}));var o=e.viewportSize.x*window.devicePixelRatio,s=e.viewportSize.y*window.devicePixelRatio,r=i.vw/i.vh,n=void 0,p=a(i.container),l=e.options.barsSize,d=0,v=0;l&&(d=l.top&&"auto"!==l.top?l.top:0,v=l.bottom&&"auto"!==l.bottom?l.bottom:0),s-=d+v,n=r>o/s?o:s*r,p.find(".vp-pswp-video").css("max-width",n),p.css({top:d,bottom:v})}var e=this;if(void 0!==v&&e.options.itemsClickAction&&"popup_gallery"===e.options.itemsClickAction&&!e.$item.closest("#vp_preview").length){if(!a(".vp-pswp").length){var i="\n <div class=\"pswp vp-pswp vp-pswp-uid-'}"+e.uid+'" tabindex="-1" role="dialog" aria-hidden="true">\n <div class="pswp__bg"></div>\n <div class="pswp__scroll-wrap">\n <div class="pswp__container">\n <div class="pswp__item"></div>\n <div class="pswp__item"></div>\n <div class="pswp__item"></div>\n </div>\n <div class="pswp__ui pswp__ui--hidden">\n <div class="pswp__top-bar">\n <div class="pswp__counter"></div>\n <a class="pswp__button pswp__button--close" title="'+m.pswp_close+'"></a>\n <a class="pswp__button pswp__button--share" title="'+m.pswp_share+'"></a>\n <a class="pswp__button pswp__button--fs" title="'+m.pswp_fs+'"></a>\n <a class="pswp__button pswp__button--zoom" title="'+m.pswp_zoom+'"></a>\n </div>\n <div class="pswp__preloader">\n <div class="pswp__preloader__icn">\n <div class="pswp__preloader__cut">\n <div class="pswp__preloader__donut"></div>\n </div>\n </div>\n </div>\n <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">\n <div class="pswp__share-tooltip"></div>\n </div>\n <a class="pswp__button pswp__button--arrow--left" title="'+m.pswp_prev+'"></a>\n <a class="pswp__button pswp__button--arrow--right" title="'+m.pswp_next+'"></a>\n <div class="pswp__caption">\n <div class="pswp__caption__center"></div>\n </div>\n </div>\n </div>\n </div>\n ';a("body").append(i)}var o=function(t){var e=a(t).find(".vp-portfolio__item-wrap"),i=[],o=void 0,s=void 0,r=void 0,n=void 0,p=void 0;return e.each(function(){if(o=a(this).find(".vp-portfolio__item-popup"),s=(o.attr("data-vp-popup-img-size")||"1920x1080").split("x"),r=(o.attr("data-vp-popup-video-size")||"1920x1080").split("x"),p=o.attr("data-vp-popup-video"))n={html:p,vw:parseInt(r[0],10),vh:parseInt(r[1],10)};else{n={src:o.attr("data-vp-popup-img"),w:parseInt(s[0],10),h:parseInt(s[1],10)};var t=o.html();t&&(n.title=t),n.el=this;var e=o.attr("data-vp-popup-md-img")||n.src;e&&(s=(o.attr("data-vp-popup-md-img-size")||o.attr("data-vp-popup-img-size")||"1920x1080").split("x"),n.m={src:e,w:parseInt(s[0],10),h:parseInt(s[1],10)}),n.o={src:n.src,w:n.w,h:n.h}}i.push(n)}),i},s=function(i,s,r,n){var p=a(".vp-pswp")[0],l=o(s),d={captionAndToolbarShowEmptyCaptions:!1,closeEl:u.show_close_button,captionEl:u.show_caption,fullscreenEl:u.show_fullscreen_button,zoomEl:u.show_zoom_button,shareEl:u.show_share_button,counterEl:u.show_counter,arrowEl:u.show_arrows,shareButtons:[{id:"facebook",label:m.pswp_share_fb,url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:m.pswp_share_tw,url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:m.pswp_share_pin,url:"https://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"}],bgOpacity:1,tapToClose:!0,tapToToggleControls:!1,showHideOpacity:!0,galleryUID:e.uid};if(n)if(d.galleryPIDs){for(var _=0;_<l.length;_++)if(l[_].pid===i){d.index=_;break}}else d.index=parseInt(i,10)-1;else d.index=parseInt(i,10);if(!Number.isNaN(d.index)){r&&(d.showAnimationDuration=0);var c=new v(p,f,l,d),h=void 0,w=!1,y=!0,g=void 0;c.listen("beforeResize",function(){h=c.viewportSize.x*window.devicePixelRatio,w&&h<1e3?(w=!1,g=!0):!w&&h>=1e3&&(w=!0,g=!0),g&&!y&&c.invalidateCurrItems(),y&&(y=!1),g=!1}),c.listen("gettingData",function(t,e){e.html||(w?(e.src=e.o.src,e.w=e.o.w,e.h=e.o.h):(e.src=e.m.src,e.w=e.m.w,e.h=e.m.h))}),c.listen("resize",function(){t(this)}),c.listen("afterChange",function(){t(this)}),c.listen("destroy",function(){var t=this;t&&t.itemHolders.length&&t.itemHolders.forEach(function(t){t.el&&a(t.el).find(".vp-pswp-video").remove()})}),c.init()}};e.$item.on("click.vpf.vpf-uid-"+e.uid,".vp-portfolio__item",function(t){t.preventDefault();var i=0,o=this;e.$item.find(".vp-portfolio__item").each(function(t){return this!==o||(i=t,!1)}),s(i,e.$item[0])});var r=function(){var t=window.location.hash.substring(1),e={};if(t.length<5)return e;for(var i=t.split("&"),o=0;o<i.length;o++)if(i[o]){var s=i[o].split("=");s.length<2||(e[s[0]]=s[1])}return e}();r.pid&&r.gid===e.uid&&s(r.pid,e.$item[0],!0,!0)}}},{key:"destroyPhotoswipe",value:function(){var t=this;t.$item.off("click.vpf.vpf-uid-"+t.uid),a(".vp-pswp-uid-"+t.uid).remove()}},{key:"addItems",value:function(t,e){var i=this,o=i.$items_wrap.data("isotope"),s=i.$items_wrap[0].fjGallery,r=i.$items_wrap.parent()[0].swiper;if(o){if(e){var n=i.$items_wrap.find(".vp-portfolio__item-wrap");i.$items_wrap.isotope("remove",n),i.$items_wrap.prepend(t).isotope("prepended",t)}else i.$items_wrap.append(t).isotope("appended",t);i.initIsotope("layout"),i.$items_wrap.imagesLoaded().progress(function(){i.initIsotope("layout")})}else if(s)e?(i.destroyFjGallery(),i.$items_wrap.find(".vp-portfolio__item-wrap").remove(),i.$items_wrap.prepend(t),i.initFjGallery()):(i.$items_wrap.append(t),i.initFjGallery("appendImages",t));else if(r){e&&r.removeAllSlides();var a=[];t.addClass("swiper-slide").each(function(){a.push(this)}),r.appendSlide(a)}i.emitEvent("addItems",[t,e])}},{key:"removeItems",value:function(t){var e=this;e.$items_wrap.data("isotope")&&e.$items_wrap.isotope("remove",t),e.emitEvent("removeItems",[t])}},{key:"loadNewItems",value:function(t,e,i){var o=this;!o.loading&&t&&(o.loading=!0,o.$item.addClass("vp-portfolio__loading"),o.emitEvent("startLoadingNewItems",[t]),a.get(t,{},function(t){t=t.replace("<body",'<body><div id="vp-infinite-load-body"').replace("</body>","</div></body>");var s=a(t).filter("#vp-infinite-load-body"),r=s.find(".vp-portfolio.vp-uid-"+o.uid);if(r.length){var n=r.find(".vp-portfolio__items").html();o.$filter.length&&o.$filter.each(function(){var t=a(this),e="";e=t.parent().hasClass("vp-single-filter")?s.find('[class="'+t.parent().attr("class").replace(" vp-single-filter__ready","")+'"] .vp-portfolio__filter-wrap').html():r.find(".vp-portfolio__filter-wrap").html(),t.html(e)}),o.$pagination.length&&o.$pagination.html(r.find(".vp-portfolio__pagination-wrap").html()),o.addItems(a(n),e),o.emitEvent("loadedNewItems",[r,r,t])}var p=r.attr("data-vp-next-page-url");o.options.nextPageUrl=p,o.$item.attr("data-vp-next-page-url",p),o.$item.removeClass("vp-portfolio__loading"),o.loading=!1,o.emitEvent("endLoadingNewItems"),o.initCustomColors(),i&&i()}))}}]),t}(),g=function(t){var e=Array.prototype.slice.call(arguments,1),o=void 0;return this.each(function(){if(void 0===o)if("object"===(void 0===t?"undefined":r(t))||void 0===t)this.vpf||(this.vpf=new y(a(this),t));else if(this.vpf){var s;o=(s=this.vpf)[t].apply(s,i(e))}}),void 0!==o?o:this};g.constructor=y;var b=jQuery.fn.vpf;jQuery.fn.vpf=g,jQuery.fn.vpf.noConflict=function(){return jQuery.fn.vpf=b,this},a(function(){a(".vp-portfolio").vpf()})}]);
1
+ !function(t){function e(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return t[o].call(s.exports,s,s.exports,e),s.l=!0,s.exports}var i={};e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([,,,function(t,e,i){t.exports=i(4)},function(t,e){function i(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(){_=c.width(),h=c.height()}var r="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},n=function(){function t(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,i,o){return i&&t(e.prototype,i),o&&t(e,o),e}}(),a=jQuery,p=window,l=p.VPData,d=p.objectFitImages,v=p.PhotoSwipe,f=p.PhotoSwipeUI_Default,m=l.__,u=l.settingsPopupGallery,c=a(window),_=0,h=0;s(),c.on("resize load orientationchange",s);var w=[320,576,768,992,1200];void 0!==d&&d();var y=function(){function t(e,i){o(this,t);var s=this;s.$item=e;for(var r=e[0].className.split(/\s+/),n=0;n<r.length;n++)r[n]&&/^vp-uid-/.test(r[n])&&(s.uid=r[n].replace(/^vp-uid-/,"")),r[n]&&/^vp-id-/.test(r[n])&&(s.id=r[n].replace(/^vp-id-/,""));if(!s.uid)return void console.error(m.couldnt_retrieve_vp);s.$items_wrap=e.find(".vp-portfolio__items"),s.$pagination=e.find(".vp-portfolio__pagination-wrap"),s.$filter=e.find(".vp-portfolio__filter-wrap"),s.id&&(s.$filter=s.$filter.add(".vp-single-filter.vp-id-"+s.id+" .vp-portfolio__filter-wrap")),s.userOptions=i,s.firstRun=!0,s.init()}return n(t,[{key:"emitEvent",value:function(t,e){e=e?[this].concat(e):[this],this.$item.trigger(t+".vpf.vpf-uid-"+this.uid,e)}},{key:"init",value:function(){var t=this;t.firstRun||t.destroy(),t.destroyed=!1,t.initOptions(),t.initEvents(),t.initLayout(),t.initCustomColors(),t.initPhotoswipe(),t.emitEvent("init"),t.$item.addClass("vp-portfolio__ready"),t.id&&a(".vp-single-filter.vp-id-"+t.id).addClass("vp-single-filter__ready"),t.initIsotope(),t.initFjGallery(),t.initSwiper(),t.resized(),t.firstRun=!1}},{key:"resized",value:function(){if("function"==typeof window.Event)window.dispatchEvent(new window.Event("resize"));else{var t=window.document.createEvent("UIEvents");t.initUIEvent("resize",!0,!1,window,0),window.dispatchEvent(t)}this.emitEvent("resized")}},{key:"destroy",value:function(){var t=this;t.$item.removeClass("vp-portfolio__ready"),t.id&&a(".vp-single-filter.vp-id-"+t.id).removeClass("vp-single-filter__ready"),t.destroyEvents(),t.removeStyle(),t.renderStyle(),t.destroyPhotoswipe(),t.destroyIsotope(),t.destroyFjGallery(),t.destroySwiper(),t.emitEvent("destroy"),t.destroyed=!0}},{key:"addStyle",value:function(t,e,i){i=i||"";var o=this,s=o.uid;o.stylesList||(o.stylesList={}),void 0===o.stylesList[s]&&(o.stylesList[s]={}),void 0===o.stylesList[s][i]&&(o.stylesList[s][i]={}),void 0===o.stylesList[s][i][t]&&(o.stylesList[s][i][t]={}),o.stylesList[s][i][t]=a.extend(o.stylesList[s][i][t],e),o.emitEvent("addStyle",[t,e,i,o.stylesList])}},{key:"removeStyle",value:function(t,e,i){i=i||"";var o=this,s=o.uid;o.stylesList||(o.stylesList={}),void 0===o.stylesList[s]||t||(o.stylesList[s]={}),void 0!==o.stylesList[s]&&void 0!==o.stylesList[s][i]&&void 0!==o.stylesList[s][i][t]&&t&&delete o.stylesList[s][i][t],o.emitEvent("removeStyle",[t,e,o.stylesList])}},{key:"renderStyle",value:function(){var t=this,e=t.uid,i="";t.stylesList||(t.stylesList={}),void 0!==t.stylesList[e]&&Object.keys(t.stylesList[e]).forEach(function(o){o&&(i+="@media "+o+" {"),Object.keys(t.stylesList[e][o]).forEach(function(s){i+=".vp-uid-"+e+" "+s+" {",Object.keys(t.stylesList[e][o][s]).forEach(function(r){i+=r+":"+t.stylesList[e][o][s][r]+";"}),i+="}"}),o&&(i+="}")});var o=a("#vp-style-"+e);o.length||(o=a("<style>").attr("id","vp-style-"+e).appendTo("head")),o.html(i),t.emitEvent("renderStyle",[i,t.stylesList,o])}},{key:"firstToLowerCase",value:function(t){return t.substr(0,1).toLowerCase()+t.substr(1)}},{key:"initOptions",value:function(t){var e=this;e.defaults={layout:"tile",itemsGap:0,tilesType:"3|1,1|",masonryColumns:3,justifiedRowHeight:250,justifiedRowHeightTolerance:.25,pagination:"load-more"},t&&(e.userOptions=t);var i=e.$item[0].dataset,o={};Object.keys(i).forEach(function(t){t&&"vp"===t.substring(0,2)&&(o[e.firstToLowerCase(t.substring(2))]=i[t])}),e.options=a.extend({},e.defaults,o,e.userOptions),e.emitEvent("initOptions")}},{key:"isCrossLine",value:function(t,e,i,o){var s=(o.x-i.x)*(t.y-i.y)-(o.y-i.y)*(t.x-i.x),r=(o.x-i.x)*(e.y-i.y)-(o.y-i.y)*(e.x-i.x),n=(e.x-t.x)*(i.y-t.y)-(e.y-t.y)*(i.x-t.x),a=(e.x-t.x)*(o.y-t.y)-(e.y-t.y)*(o.x-t.x);return s*r<=0&&n*a<=0}},{key:"initEvents",value:function(){function t(){var t=i.$item[0].getBoundingClientRect(),e=t.left,o=_-t.right,s=parseFloat(i.$item.css("margin-left")||0),r=parseFloat(i.$item.css("margin-right")||0);i.$item.css({"margin-left":s-e,"margin-right":r-o})}function e(){var t=i.$item[0].getBoundingClientRect();t.bottom>0&&t.bottom-n<=h&&i.loadNewItems(i.options.nextPageUrl,!1,function(){e()})}var i=this,o=".vpf.vpf-uid-"+i.uid;if(i.$item.hasClass("vp-portfolio__stretch")&&(c.on("load"+o+" resize"+o+" orientationchange"+o,function(){t()}),t()),"fly"===i.options.itemsStyle){var s={};c.on("mousemove"+o,function(t){s={x:t.clientX,y:t.clientY}}),i.$item.on("mouseenter"+o+" mouseleave"+o,".vp-portfolio__item",function(t){var e=a(this),o=e[0].getBoundingClientRect(),r=e.find(".vp-portfolio__item-overlay"),n="mouseenter"===t.type,p="0%",l="0%",d={x:t.clientX,y:t.clientY},v=i.isCrossLine({x:o.left,y:o.top},{x:o.left+o.width,y:o.top},d,s),f=i.isCrossLine({x:o.left,y:o.top+o.height},{x:o.left+o.width,y:o.top+o.height},d,s),m=i.isCrossLine({x:o.left,y:o.top},{x:o.left,y:o.top+o.height},d,s),u=i.isCrossLine({x:o.left+o.width,y:o.top},{x:o.left+o.width,y:o.top+o.height},d,s);if(!(v||f||m||u)){var c=(o.width/2-d.x+o.left)/(o.width/2),_=(o.height/2-d.y+o.top)/(o.height/2);Math.abs(c)>Math.abs(_)?c>0?m=!0:u=!0:_>0?v=!0:f=!0}v?l="-10"+l:f?l="10"+l:m?p="-10"+p:u&&(p="10"+p),n&&(r.css({transition:"none",transform:"translateX("+p+") translateY("+l+") translateZ(0)"}),r[0].offsetHeight),r.css({transition:".2s transform ease-in-out",transform:"translateX("+(n?"0%":p)+") translateY("+(n?"0%":l)+") translateZ(0)"})})}i.$filter.on("click"+o,".vp-filter .vp-filter__item a",function(t){t.preventDefault();var e=a(this);i.loading||e.closest(".vp-filter__item").addClass("vp-filter__item-active").siblings().removeClass("vp-filter__item-active"),i.loadNewItems(e.attr("href"),!0)}),i.$item.on("click"+o,".vp-pagination .vp-pagination__item a",function(t){t.preventDefault();var e=a(this);e.hasClass("vp-pagination__no-more")&&"paged"!==i.options.pagination||i.loadNewItems(e.attr("href"),"paged"===i.options.pagination)}),i.$item.on("click"+o,".vp-portfolio__items .vp-portfolio__item-meta-category a",function(t){t.preventDefault(),t.stopPropagation(),i.loadNewItems(a(this).attr("href"),!0)});var r=void 0,n=250;"infinite"===i.options.pagination&&(c.on("load"+o+" scroll"+o+" resize"+o+" orientationchange"+o,function(){clearTimeout(r),r=setTimeout(function(){e()},60)}),e()),i.$item.on("transitionend"+o,".vp-portfolio__items",function(t){t.currentTarget===t.target&&i.resized()}),i.emitEvent("initEvents")}},{key:"destroyEvents",value:function(){var t=this,e=".vpf.vpf-uid-"+t.uid;t.$item.off(e),t.$filter.off(e),c.off(e),t.emitEvent("destroyEvents")}},{key:"getTilesSettings",value:function(){var t=this,e=t.options.tilesType.split(/[:|]/);return void 0===e[e.length-1]||e[e.length-1]||e.pop(),e}},{key:"initLayout",value:function(){var t=this;if(t.options.layout)switch(t.options.layout){case"tiles":var e=t.getTilesSettings(),i=parseInt(e[0],10)||1;if(e.shift(),t.addStyle(".vp-portfolio__item-wrap",{width:100/i+"%"}),e&&e.length)for(var o=0;o<e.length;o++){var s=e[o].split(","),r=parseFloat(s[0])||1,n=parseFloat(s[1])||1,a=".vp-portfolio__item-wrap";e.length>1&&(a+=":nth-of-type("+e.length+"n+"+(o+1)+")"),r&&1!==r&&t.addStyle(a,{width:100*r/i+"%"}),t.addStyle(a+" .vp-portfolio__item-img-wrap::before",{"margin-top":100*n+"%"})}for(var p=i-1,l=Math.min(w.length-1,p);l>=0;l--)p>0&&void 0!==w[l]&&(t.addStyle(".vp-portfolio__item-wrap",{width:100/p+"%"},"screen and (max-width: "+w[l]+"px)"),t.addStyle(".vp-portfolio__item-wrap:nth-of-type(n)",{width:100/p+"%"},"screen and (max-width: "+w[l]+"px)")),p-=1;break;case"masonry":t.addStyle(".vp-portfolio__item-wrap",{width:100/t.options.masonryColumns+"%"});for(var d=t.options.masonryColumns,v=d-1,f=Math.min(w.length-1,v);f>=0;f--)v>0&&void 0!==w[f]&&t.addStyle(".vp-portfolio__item-wrap",{width:100/v+"%"},"screen and (max-width: "+w[f]+"px)"),v-=1;case"justified":break;case"slider":"auto"!==t.options.sliderItemsHeight&&("auto"===t.options.sliderSlidesPerView?t.options.sliderItemsHeight.indexOf("%")===t.options.sliderItemsHeight.length-1?(t.addStyle(".vp-portfolio__items-wrap::before",{content:'""',display:"block",width:"100%","margin-top":isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}),t.addStyle(".vp-portfolio__items",{position:"absolute",top:0,left:0,right:0,bottom:0}),t.addStyle(".vp-portfolio__item-wrap",{height:"true"===t.options.sliderBullets?"calc( 100% - 25px )":"100%"}),t.addStyle(".vp-portfolio__item, .vp-portfolio__item-img-wrap, .vp-portfolio__item-img, .vp-portfolio__item-wrap .vp-portfolio__item .vp-portfolio__item-img a, .vp-portfolio__item-wrap .vp-portfolio__item .vp-portfolio__item-img img",{width:"auto",height:"100%"})):t.addStyle(".vp-portfolio__item .vp-portfolio__item-img img",{width:"auto",height:isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}):(t.addStyle(".vp-portfolio__item-img-wrap::before",{"margin-top":isNaN(t.options.sliderItemsHeight)?t.options.sliderItemsHeight:t.options.sliderItemsHeight+"px"}),t.addStyle(".vp-portfolio__item-img img, .vp-portfolio__item-img",{position:"absolute",top:0,right:0,bottom:0,left:0}),t.addStyle(".vp-portfolio__item .vp-portfolio__item-img img",{width:"100%",height:"100%"})))}var m=parseInt(t.options.itemsGap,10);if(m&&("tiles"===t.options.layout||"masonry"===t.options.layout)){t.addStyle(".vp-portfolio__items",{"margin-left":"-"+m+"px","margin-top":"-"+m+"px"});var u=m+"px";t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item",{"margin-left":u,"margin-top":u}),"tiles"===t.options.layout&&(t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item-img-wrap",{"margin-left":"-"+u,"margin-top":"-"+u}),t.addStyle(".vp-portfolio__item-wrap .vp-portfolio__item-img",{left:u,top:u}))}t.renderStyle(),t.emitEvent("initLayout")}},{key:"initCustomColors",value:function(){var t=this;t.$item.find("[data-vp-bg-color]").each(function(){var e=a(this).attr("data-vp-bg-color");t.addStyle('[data-vp-bg-color="'+e+'"]',{"background-color":e+" !important"})}),t.$item.find("[data-vp-text-color]").each(function(){var e=a(this).attr("data-vp-text-color");t.addStyle('[data-vp-text-color="'+e+'"]',{color:e+" !important"})}),t.renderStyle(),t.emitEvent("initCustomColors")}},{key:"initIsotope",value:function(t){var e=this;"tiles"!==e.options.layout&&"masonry"!==e.options.layout||(e.$items_wrap.isotope(t||{itemSelector:".vp-portfolio__item-wrap",layoutMode:"masonry",transitionDuration:"0.3s",percentPosition:!0}),e.emitEvent("initIsotope",[t]))}},{key:"destroyIsotope",value:function(){var t=this;t.$items_wrap.data("isotope")&&(t.$items_wrap.isotope("destroy"),t.emitEvent("destroyIsotope"))}},{key:"initFjGallery",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this;"justified"===i.options.layout&&(i.$items_wrap.fjGallery(!1!==t?t:{gutter:parseFloat(i.options.itemsGap)||0,rowHeight:parseFloat(i.options.justifiedRowHeight)||200,rowHeightTolerance:parseFloat(i.options.justifiedRowHeightTolerance)||0,itemSelector:".vp-portfolio__item-wrap",imageSelector:".vp-portfolio__item-img img"},e),i.emitEvent("initFjGallery",[t]))}},{key:"destroyFjGallery",value:function(){var t=this;t.$items_wrap.data("fjGallery")&&(t.$items_wrap.fjGallery("destroy"),t.emitEvent("destroyFjGallery"))}},{key:"initSwiper",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this;if("slider"===e.options.layout&&void 0!==window.Swiper){var i=e.$items_wrap.parent();i.addClass("swiper-container"),e.$items_wrap.addClass("swiper-wrapper"),e.$items_wrap.children().addClass("swiper-slide"),"true"!==e.options.sliderArrows||i.find(".vp-portfolio__items-arrow").length||i.append('\n <div class="vp-portfolio__items-arrow vp-portfolio__items-arrow-prev"><span class="'+e.options.sliderArrowsIconPrev+'"></span></div>\n <div class="vp-portfolio__items-arrow vp-portfolio__items-arrow-next"><span class="'+e.options.sliderArrowsIconNext+'"></span></div>\n '),"true"!==e.options.sliderBullets||i.find(".vp-portfolio__items-bullets").length||i.append('<div class="vp-portfolio__items-bullets"></div>');var o=e.options.sliderSlidesPerView||3,s={};if(!isNaN(o))for(var r=o-1,n=Math.min(w.length-1,r);n>=0;n--)r>0&&void 0!==w[n]&&(s[w[n]]={slidesPerView:r}),r-=1;new window.Swiper(i[0],t||{speed:1e3*(parseFloat(e.options.sliderSpeed)||0),autoHeight:"auto"===e.options.sliderItemsHeight,effect:e.options.sliderEffect||"slide",spaceBetween:parseFloat(e.options.itemsGap)||0,centeredSlides:"true"===e.options.sliderCenteredSlides,freeMode:"true"===e.options.sliderFreeMode,loop:"true"===e.options.sliderLoop,autoplay:parseFloat(e.options.sliderAutoplay)>0&&{delay:1e3*parseFloat(e.options.sliderAutoplay),disableOnInteraction:!1},navigation:"true"===e.options.sliderArrows&&{nextEl:".vp-portfolio__items-arrow-next",prevEl:".vp-portfolio__items-arrow-prev"},pagination:"true"===e.options.sliderBullets&&{el:".vp-portfolio__items-bullets",clickable:!0,dynamicBullets:"true"===e.options.sliderBulletsDynamic},slidesPerView:o,breakpoints:s,keyboard:!0,grabCursor:!0}),e.emitEvent("initSwiper",[t])}}},{key:"destroySwiper",value:function(){var t=this,e=t.$items_wrap.parent(),i=e[0].swiper;i&&(i.destroy(),e.removeClass("swiper-container"),t.$items_wrap.removeClass("swiper-wrapper"),t.$items_wrap.children().removeClass("swiper-slide"),e.find(".vp-portfolio__items-arrow, .vp-portfolio__items-bullets").remove(),t.emitEvent("destroySwiper"))}},{key:"initPhotoswipe",value:function(){function t(e,i){if(void 0===i)return void(e&&e.itemHolders.length&&e.itemHolders.forEach(function(i){i.item&&i.item.html&&t(e,i.item)}));var o=e.viewportSize.x,s=e.viewportSize.y,r=i.vw/i.vh,n=void 0,p=a(i.container),l=e.options.barsSize,d=0,v=0;l&&(d=l.top&&"auto"!==l.top?l.top:0,v=l.bottom&&"auto"!==l.bottom?l.bottom:0),s-=d+v,n=r>o/s?o:s*r,p.find(".vp-pswp-video").css("max-width",n),p.css({top:d,bottom:v})}var e=this;if(void 0!==v&&e.options.itemsClickAction&&"popup_gallery"===e.options.itemsClickAction&&!e.$item.closest("#vp_preview").length){if(!a(".vp-pswp").length){var i="\n <div class=\"pswp vp-pswp vp-pswp-uid-'}"+e.uid+'" tabindex="-1" role="dialog" aria-hidden="true">\n <div class="pswp__bg"></div>\n <div class="pswp__scroll-wrap">\n <div class="pswp__container">\n <div class="pswp__item"></div>\n <div class="pswp__item"></div>\n <div class="pswp__item"></div>\n </div>\n <div class="pswp__ui pswp__ui--hidden">\n <div class="pswp__top-bar">\n <div class="pswp__counter"></div>\n <a class="pswp__button pswp__button--close" title="'+m.pswp_close+'"></a>\n <a class="pswp__button pswp__button--share" title="'+m.pswp_share+'"></a>\n <a class="pswp__button pswp__button--fs" title="'+m.pswp_fs+'"></a>\n <a class="pswp__button pswp__button--zoom" title="'+m.pswp_zoom+'"></a>\n </div>\n <div class="pswp__preloader">\n <div class="pswp__preloader__icn">\n <div class="pswp__preloader__cut">\n <div class="pswp__preloader__donut"></div>\n </div>\n </div>\n </div>\n <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">\n <div class="pswp__share-tooltip"></div>\n </div>\n <a class="pswp__button pswp__button--arrow--left" title="'+m.pswp_prev+'"></a>\n <a class="pswp__button pswp__button--arrow--right" title="'+m.pswp_next+'"></a>\n <div class="pswp__caption">\n <div class="pswp__caption__center"></div>\n </div>\n </div>\n </div>\n </div>\n ';a("body").append(i)}var o=function(t){var e=a(t).find(".vp-portfolio__item-wrap"),i=[],o=void 0,s=void 0,r=void 0,n=void 0,p=void 0;return e.each(function(){if(o=a(this).find(".vp-portfolio__item-popup"),s=(o.attr("data-vp-popup-img-size")||"1920x1080").split("x"),r=(o.attr("data-vp-popup-video-size")||"1920x1080").split("x"),p=o.attr("data-vp-popup-video"))n={html:p,vw:parseInt(r[0],10),vh:parseInt(r[1],10)};else{n={src:o.attr("data-vp-popup-img"),w:parseInt(s[0],10),h:parseInt(s[1],10)};var t=o.html();t&&(n.title=t),n.el=this;var e=o.attr("data-vp-popup-md-img")||n.src;e&&(s=(o.attr("data-vp-popup-md-img-size")||o.attr("data-vp-popup-img-size")||"1920x1080").split("x"),n.m={src:e,w:parseInt(s[0],10),h:parseInt(s[1],10)}),n.o={src:n.src,w:n.w,h:n.h}}i.push(n)}),i},s=function(i,s,r,n){var p=a(".vp-pswp")[0],l=o(s),d={captionAndToolbarShowEmptyCaptions:!1,closeEl:u.show_close_button,captionEl:u.show_caption,fullscreenEl:u.show_fullscreen_button,zoomEl:u.show_zoom_button,shareEl:u.show_share_button,counterEl:u.show_counter,arrowEl:u.show_arrows,shareButtons:[{id:"facebook",label:m.pswp_share_fb,url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:m.pswp_share_tw,url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:m.pswp_share_pin,url:"https://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"}],bgOpacity:1,tapToClose:!0,tapToToggleControls:!1,showHideOpacity:!0,galleryUID:e.uid};if(n)if(d.galleryPIDs){for(var c=0;c<l.length;c++)if(l[c].pid===i){d.index=c;break}}else d.index=parseInt(i,10)-1;else d.index=parseInt(i,10);if(!Number.isNaN(d.index)){r&&(d.showAnimationDuration=0);var _=new v(p,f,l,d),h=void 0,w=!1,y=!0,g=void 0;_.listen("beforeResize",function(){h=_.viewportSize.x*window.devicePixelRatio,w&&h<1e3?(w=!1,g=!0):!w&&h>=1e3&&(w=!0,g=!0),g&&!y&&_.invalidateCurrItems(),y&&(y=!1),g=!1}),_.listen("gettingData",function(t,e){e.html||(w?(e.src=e.o.src,e.w=e.o.w,e.h=e.o.h):(e.src=e.m.src,e.w=e.m.w,e.h=e.m.h))}),_.listen("resize",function(){t(this)}),_.listen("afterChange",function(){t(this)}),_.listen("destroy",function(){var t=this;t&&t.itemHolders.length&&t.itemHolders.forEach(function(t){t.el&&a(t.el).find(".vp-pswp-video").remove()})}),_.init()}};e.$item.on("click.vpf.vpf-uid-"+e.uid,".vp-portfolio__item",function(t){t.preventDefault();var i=0,o=this;e.$item.find(".vp-portfolio__item").each(function(t){return this!==o||(i=t,!1)}),s(i,e.$item[0])});var r=function(){var t=window.location.hash.substring(1),e={};if(t.length<5)return e;for(var i=t.split("&"),o=0;o<i.length;o++)if(i[o]){var s=i[o].split("=");s.length<2||(e[s[0]]=s[1])}return e}();r.pid&&r.gid===e.uid&&s(r.pid,e.$item[0],!0,!0)}}},{key:"destroyPhotoswipe",value:function(){var t=this;t.$item.off("click.vpf.vpf-uid-"+t.uid),a(".vp-pswp-uid-"+t.uid).remove()}},{key:"addItems",value:function(t,e){var i=this,o=i.$items_wrap.data("isotope"),s=i.$items_wrap.data("fjGallery"),r=i.$items_wrap.parent()[0].swiper;if(o){if(e){var n=i.$items_wrap.find(".vp-portfolio__item-wrap");i.$items_wrap.isotope("remove",n),i.$items_wrap.prepend(t).isotope("prepended",t)}else i.$items_wrap.append(t).isotope("appended",t);setTimeout(function(){i.initIsotope("layout")},0)}else if(s)e?(i.destroyFjGallery(),i.$items_wrap.find(".vp-portfolio__item-wrap").remove(),i.$items_wrap.prepend(t),i.initFjGallery()):(i.$items_wrap.append(t),i.initFjGallery("appendImages",t));else if(r){e&&r.removeAllSlides();var a=[];t.addClass("swiper-slide").each(function(){a.push(this)}),r.appendSlide(a)}i.emitEvent("addItems",[t,e])}},{key:"removeItems",value:function(t){var e=this;e.$items_wrap.data("isotope")&&e.$items_wrap.isotope("remove",t),e.emitEvent("removeItems",[t])}},{key:"loadNewItems",value:function(t,e,i){var o=this;!o.loading&&t&&(o.loading=!0,o.$item.addClass("vp-portfolio__loading"),o.emitEvent("startLoadingNewItems",[t]),a.get(t,{},function(t){t=t.replace("<body",'<body><div id="vp-infinite-load-body"').replace("</body>","</div></body>");var s=a(t).filter("#vp-infinite-load-body"),r=s.find(".vp-portfolio.vp-uid-"+o.uid);if(r.length){var n=r.find(".vp-portfolio__items").html();o.$filter.length&&o.$filter.each(function(){var t=a(this),e="";e=t.parent().hasClass("vp-single-filter")?s.find('[class="'+t.parent().attr("class").replace(" vp-single-filter__ready","")+'"] .vp-portfolio__filter-wrap').html():r.find(".vp-portfolio__filter-wrap").html(),t.html(e)}),o.$pagination.length&&o.$pagination.html(r.find(".vp-portfolio__pagination-wrap").html()),o.addItems(a(n),e),o.emitEvent("loadedNewItems",[r,r,t])}var p=r.attr("data-vp-next-page-url");o.options.nextPageUrl=p,o.$item.attr("data-vp-next-page-url",p),o.$item.removeClass("vp-portfolio__loading"),o.loading=!1,o.emitEvent("endLoadingNewItems"),o.initCustomColors(),i&&i()}))}}]),t}(),g=function(t){var e=Array.prototype.slice.call(arguments,1),o=void 0;return this.each(function(){if(void 0===o)if("object"===(void 0===t?"undefined":r(t))||void 0===t)this.vpf||(this.vpf=new y(a(this),t));else if(this.vpf){var s;o=(s=this.vpf)[t].apply(s,i(e))}}),void 0!==o?o:this};g.constructor=y;var b=jQuery.fn.vpf;jQuery.fn.vpf=g,jQuery.fn.vpf.noConflict=function(){return jQuery.fn.vpf=b,this},a(function(){a(".vp-portfolio").vpf()})}]);
assets/vendor/flickr-justified-gallery/fjGallery.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
- * Version : 1.0.1
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
  */
@@ -319,6 +319,27 @@ _global.window.fjGallery.noConflict = function () {
319
 
320
  // jQuery support
321
  if (typeof _global.jQuery !== 'undefined') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
322
  var jQueryPlugin = function jQueryPlugin() {
323
  var args = arguments || [];
324
  Array.prototype.unshift.call(args, this);
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
+ * Version : 1.0.2
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
  */
319
 
320
  // jQuery support
321
  if (typeof _global.jQuery !== 'undefined') {
322
+ // add data to jQuery .data('fjGallery')
323
+ var oldInit = _global.window.fjGallery.constructor.prototype.init;
324
+ _global.window.fjGallery.constructor.prototype.init = function () {
325
+ this.jQcontainer = (0, _global.jQuery)(this.$container);
326
+ this.jQcontainer.data('fjGallery', this);
327
+ if (oldInit) {
328
+ oldInit.call(this);
329
+ }
330
+ };
331
+
332
+ // remove data from jQuery .data('fjGallery')
333
+ var oldDestroy = _global.window.fjGallery.constructor.prototype.destroy;
334
+ _global.window.fjGallery.constructor.prototype.destroy = function () {
335
+ if (this.jQcontainer) {
336
+ this.jQcontainer.removeData('fjGallery');
337
+ }
338
+ if (oldDestroy) {
339
+ oldDestroy.call(this);
340
+ }
341
+ };
342
+
343
  var jQueryPlugin = function jQueryPlugin() {
344
  var args = arguments || [];
345
  Array.prototype.unshift.call(args, this);
assets/vendor/flickr-justified-gallery/fjGallery.min.js CHANGED
@@ -1,9 +1,9 @@
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
- * Version : 1.0.1
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
- */!function(i){var o={};function n(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,n),e.l=!0,e.exports}n.m=i,n.c=o,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(i,t,e){"use strict";(function(t){var e;e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},i.exports=e}).call(t,e(5))},function(t,e,i){"use strict";(function(i){var t="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};
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.0
9
  * @author yeikos
@@ -11,15 +11,15 @@
11
 
12
  * Copyright 2014 yeikos - MIT license
13
  * https://raw.github.com/yeikos/js.merge/master/LICENSE
14
- */!function(t){var u=function(t){return e(!0===t,!1,arguments)};function l(t,e){if("object"!==h(t))return e;for(var i in e)"object"===h(t[i])&&"object"===h(e[i])?t[i]=l(t[i],e[i]):t[i]=e[i];return t}function e(t,e,i){var o=i[0],n=i.length;(t||"object"!==h(o))&&(o={});for(var r=0;r<n;++r){var a=i[r];if("object"===h(a))for(var s in a){var c=t?u.clone(a[s]):a[s];o[s]=e?l(o[s],c):c}}return o}function h(t){return{}.toString.call(t).slice(8,-1).toLowerCase()}u.recursive=function(t){return e(!0===t,!0,arguments)},u.clone=function(t){var e,i,o=t,n=h(t);if("array"===n)for(o=[],i=t.length,e=0;e<i;++e)o[e]=u.clone(t[e]);else if("object"===n)for(e in o={},t)o[e]=u.clone(t[e]);return o},t?i.exports=u:window.merge=u}("object"===t(i)&&i&&"object"===t(i.exports)&&i.exports)}).call(e,i(8)(t))},function(t,e,i){"use strict";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(t,e,i){t.exports=i(4)},function(t,e,i){"use strict";var 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},n=s(i(2)),r=i(0),a=s(i(6));function s(t){return t&&t.__esModule?t:{default:t}}var c=r.window.fjGallery;if(r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=c,this},void 0!==r.jQuery){var u=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==(void 0===e?"undefined":o(e))?e:this};u.constructor=a.default.constructor;var l=r.jQuery.fn.fjGallery;r.jQuery.fn.fjGallery=u,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=l,this}}(0,n.default)(function(){(0,a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e,i){"use strict";var o,n="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};o=function(){return this}();try{o=o||Function("return this")()||(0,eval)("this")}catch(t){"object"===("undefined"==typeof window?"undefined":n(window))&&(o=window)}t.exports=o},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a="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},o=function(){function o(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,i){return e&&o(t.prototype,e),i&&o(t,i),t}}(),s=h(i(7)),c=h(i(1)),n=h(i(2)),r=h(i(9)),u=h(i(10)),l=i(0);function h(t){return t&&t.__esModule?t:{default:t}}var f=[];function d(){(0,r.default)(function(){f.forEach(function(t){t.resize()})})}l.window.addEventListener("resize",d),l.window.addEventListener("orientationchange",d),l.window.addEventListener("load",d),(0,n.default)(function(){d()});var p=0,g=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 i=this;i.instanceID=p++,i.$container=t,i.images=[],i.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,resizeThrottle:200,onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var o=i.$container.dataset||{},n={};Object.keys(o).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==i.defaults[e]&&(n[e]=o[t])}),i.options=(0,c.default)({},i.defaults,n,e),i.pureOptions=(0,c.default)({},i.options),i.resize=(0,s.default)(i.options.resizeThrottle,i.resize),i.init()}return o(r,[{key:"css",value:function(e,i){return"string"==typeof i?l.window.getComputedStyle(e).getPropertyValue(i):(i.transform&&(i["-webkit-transform"]=i.transform),Object.keys(i).forEach(function(t){e.style[t]=i[t]}),e)}},{key:"addToFjGalleryList",value:function(){f.push(this),d()}},{key:"removeFromFjGalleryList",value:function(){var i=this;f.forEach(function(t,e){t.instanceID===i.instanceID&&f.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 f=this;l.window.jQuery&&t instanceof l.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){if(t&&!t.fjGalleryImage&&t.querySelector){var h=t.querySelector(f.options.imageSelector);if(h){t.fjGalleryImage=f;var e={$item:t,$image:h,width:parseFloat(h.getAttribute("width"))||!1,height:parseFloat(h.getAttribute("height"))||!1,loadSizes:function(){var t,e,i,o,n,r,a,s,c,u,l=this;t=h,i=void 0,n=o=!(e=function(t){l.width===t.width&&l.height===t.height||(l.width=t.width,l.height=t.height,f.resize())}),r=function(){o?e(o):(o={width:t.naturalWidth,height:t.naturalHeight},e(o),clearInterval(i),n&&u())},a=function(){r()},s=function(){r()},u=function(){n=!1,t.removeEventListener("load",a),t.removeEventListener("error",s)},(c=function(){0<t.naturalWidth&&r()})(),o||(n=!0,t.addEventListener("load",a),t.addEventListener("error",s),i=setInterval(c,100))}};e.loadSizes(),f.images.push(e)}}}),f.options.onAppendImages&&f.options.onAppendImages.call(f,[t]),f.justify())}},{key:"justify",value:function(){var e=this,i=[];e.options.onBeforeJustify&&e.options.onBeforeJustify.call(e),e.images.forEach(function(t){t.width&&t.height&&i.push(t.width/t.height)});var o=(0,u.default)(i,{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:o.containerHeight+"px"});var n=0;e.images.forEach(function(t){t.width&&t.height&&(e.css(t.$item,{position:"absolute",transform:"translateX("+o.boxes[n].left+"px) translateY("+o.boxes[n].top+"px) translateZ(0)",width:o.boxes[n].width+"px",height:o.boxes[n].height+"px"}),n++)}),e.options.onJustify&&e.options.onJustify.call(e)}},{key:"updateOptions",value:function(t){this.options=(0,c.default)({},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()}}]),r}(),y=function(t){("object"===("undefined"==typeof HTMLElement?"undefined":a(HTMLElement))?t instanceof HTMLElement:t&&"object"===(void 0===t?"undefined":a(t))&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var e=arguments[1],i=Array.prototype.slice.call(arguments,2),o=t.length,n=0,r=void 0;n<o;n++)if("object"===(void 0===e?"undefined":a(e))||void 0===e?t[n].fjGallery||(t[n].fjGallery=new g(t[n],e)):t[n].fjGallery&&(r=t[n].fjGallery[e].apply(t[n].fjGallery,i)),void 0!==r)return r;return t};y.constructor=g,e.default=y},function(t,e,i){"use strict";t.exports=function(n,r,a,s){var c,u=0;return"boolean"!=typeof r&&(s=a,a=r,r=void 0),function(){var t=this,e=Number(new Date)-u,i=arguments;function o(){u=Number(new Date),a.apply(t,i)}s&&!c&&o(),c&&clearTimeout(c),void 0===s&&n<e?o():!0!==r&&(c=setTimeout(s?function(){c=void 0}:o,void 0===s?n-e:n))}}},function(t,e,i){"use strict";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,i){"use strict";var o=i(0),n=o.requestAnimationFrame||o.webkitRequestAnimationFrame||o.mozRequestAnimationFrame||function(t){var e=+new Date,i=Math.max(0,16-(e-r)),o=setTimeout(t,i);return r=e,o},r=+new Date;var a=o.cancelAnimationFrame||o.webkitCancelAnimationFrame||o.mozCancelAnimationFrame||clearTimeout;Function.prototype.bind&&(n=n.bind(o),a=a.bind(o)),(t.exports=n).cancel=a},function(t,e,i){"use strict";
15
  /*!
16
  * Copyright 2016 Yahoo 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=i(1),o=i(11);function g(t,e){var i;return!1!==t.fullWidthBreakoutRowCadence&&(e._rows.length+1)%t.fullWidthBreakoutRowCadence==0&&(i=!0),new o({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:i,widowLayoutStyle:t.widowLayoutStyle})}function y(t,e,i){return e._rows.push(i),e._layoutItems=e._layoutItems.concat(i.getItems()),e._containerHeight+=i.height+t.boxSpacing.vertical,i.items}t.exports=function(t,e){var i,o,n,r,a,s,c,u={},l={},h={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:!1,showWidows:!0,fullWidthBreakoutRowCadence:!1,widowLayoutStyle:"left"},f={},d={};return u=p(h,e=e||{}),f.top=isNaN(parseFloat(u.containerPadding.top))?u.containerPadding:u.containerPadding.top,f.right=isNaN(parseFloat(u.containerPadding.right))?u.containerPadding:u.containerPadding.right,f.bottom=isNaN(parseFloat(u.containerPadding.bottom))?u.containerPadding:u.containerPadding.bottom,f.left=isNaN(parseFloat(u.containerPadding.left))?u.containerPadding:u.containerPadding.left,d.horizontal=isNaN(parseFloat(u.boxSpacing.horizontal))?u.boxSpacing:u.boxSpacing.horizontal,d.vertical=isNaN(parseFloat(u.boxSpacing.vertical))?u.boxSpacing:u.boxSpacing.vertical,u.containerPadding=f,u.boxSpacing=d,l._layoutItems=[],l._awakeItems=[],l._inViewportItems=[],l._leadingOrphans=[],l._trailingOrphans=[],l._containerHeight=u.containerPadding.top,l._rows=[],l._orphans=[],u._widowCount=0,i=u,o=l,n=t.map(function(t){return t.width&&t.height?{aspectRatio:t.width/t.height}:{aspectRatio:t}}),c=[],i.forceAspectRatio&&n.forEach(function(t){t.forcedAspectRatio=!0,t.aspectRatio=i.forceAspectRatio}),n.some(function(t,e){if(isNaN(t.aspectRatio))throw new Error("Item "+e+" has an invalid aspect ratio");if(a||(a=g(i,o)),r=a.addItem(t),a.isLayoutComplete()){if(c=c.concat(y(i,o,a)),o._rows.length>=i.maxNumRows)return!(a=null);if(a=g(i,o),!r&&(r=a.addItem(t),a.isLayoutComplete())){if(c=c.concat(y(i,o,a)),o._rows.length>=i.maxNumRows)return!(a=null);a=g(i,o)}}}),a&&a.getItems().length&&i.showWidows&&(o._rows.length?(s=o._rows[o._rows.length-1].isBreakoutRow?o._rows[o._rows.length-1].targetRowHeight:o._rows[o._rows.length-1].height,a.forceComplete(!1,s)):a.forceComplete(!1),c=c.concat(y(i,o,a)),i._widowCount=a.getItems().length),o._containerHeight=o._containerHeight-i.boxSpacing.vertical,o._containerHeight=o._containerHeight+i.containerPadding.bottom,{containerHeight:o._containerHeight,widowCount:i._widowCount,boxes:o._layoutItems}}},function(t,e,i){"use strict";
20
  /*!
21
  * Copyright 2016 Yahoo Inc.
22
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
23
  * @license
24
- */var c=i(1);(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,i,o,n=this.items.concat(t),r=this.width-(n.length-1)*this.spacing,a=n.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,i=this.items.reduce(function(t,e){return t+e.aspectRatio},0),o=e/this.targetRowHeight,Math.abs(a-s)>Math.abs(i-o)?(this.completeLayout(e/i,"justify"),!1):(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0)):(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0)},isLayoutComplete:function(){return 0<this.height},completeLayout:function(t,e){var i,o,n,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"),t!==(o=Math.max(this.edgeCaseMinRowHeight,Math.min(t,this.edgeCaseMaxRowHeight)))?(this.height=o,i=c/o/(c/t)):(this.height=t,i=1),this.items.forEach(function(t){t.top=this.top,t.width=t.aspectRatio*this.height*i,t.height=this.height,t.left=s,s+=t.width+this.spacing},this),"justify"===e?(s-=this.spacing+this.left,n=(s-this.width)/this.items.length,r=this.items.map(function(t,e){return Math.round((e+1)*n)}),1===this.items.length?this.items[0].width-=Math.round(n):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}}}]);
25
  //# sourceMappingURL=fjGallery.min.js.map
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
+ * Version : 1.0.2
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
+ */!function(o){var i={};function n(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,n),e.l=!0,e.exports}n.m=o,n.c=i,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:o})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(o,t,e){"use strict";(function(t){var e;e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},o.exports=e}).call(t,e(5))},function(t,e,o){"use strict";(function(o){var t="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};
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.0
9
  * @author yeikos
11
 
12
  * Copyright 2014 yeikos - MIT license
13
  * https://raw.github.com/yeikos/js.merge/master/LICENSE
14
+ */!function(t){var u=function(t){return e(!0===t,!1,arguments)};function l(t,e){if("object"!==h(t))return e;for(var o in e)"object"===h(t[o])&&"object"===h(e[o])?t[o]=l(t[o],e[o]):t[o]=e[o];return t}function e(t,e,o){var i=o[0],n=o.length;(t||"object"!==h(i))&&(i={});for(var r=0;r<n;++r){var a=o[r];if("object"===h(a))for(var s in a){var c=t?u.clone(a[s]):a[s];i[s]=e?l(i[s],c):c}}return i}function h(t){return{}.toString.call(t).slice(8,-1).toLowerCase()}u.recursive=function(t){return e(!0===t,!0,arguments)},u.clone=function(t){var e,o,i=t,n=h(t);if("array"===n)for(i=[],o=t.length,e=0;e<o;++e)i[e]=u.clone(t[e]);else if("object"===n)for(e in i={},t)i[e]=u.clone(t[e]);return i},t?o.exports=u:window.merge=u}("object"===t(o)&&o&&"object"===t(o.exports)&&o.exports)}).call(e,o(8)(t))},function(t,e,o){"use strict";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(t,e,o){t.exports=o(4)},function(t,e,o){"use strict";var i="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},n=s(o(2)),r=o(0),a=s(o(6));function s(t){return t&&t.__esModule?t:{default:t}}var c=r.window.fjGallery;if(r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=c,this},void 0!==r.jQuery){var u=r.window.fjGallery.constructor.prototype.init;r.window.fjGallery.constructor.prototype.init=function(){this.jQcontainer=(0,r.jQuery)(this.$container),this.jQcontainer.data("fjGallery",this),u&&u.call(this)};var l=r.window.fjGallery.constructor.prototype.destroy;r.window.fjGallery.constructor.prototype.destroy=function(){this.jQcontainer&&this.jQcontainer.removeData("fjGallery"),l&&l.call(this)};var h=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==(void 0===e?"undefined":i(e))?e:this};h.constructor=a.default.constructor;var f=r.jQuery.fn.fjGallery;r.jQuery.fn.fjGallery=h,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=f,this}}(0,n.default)(function(){(0,a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e,o){"use strict";var i,n="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};i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"===("undefined"==typeof window?"undefined":n(window))&&(i=window)}t.exports=i},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a="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},i=function(){function i(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,o){return e&&i(t.prototype,e),o&&i(t,o),t}}(),s=h(o(7)),c=h(o(1)),n=h(o(2)),r=h(o(9)),u=h(o(10)),l=o(0);function h(t){return t&&t.__esModule?t:{default:t}}var f=[];function d(){(0,r.default)(function(){f.forEach(function(t){t.resize()})})}l.window.addEventListener("resize",d),l.window.addEventListener("orientationchange",d),l.window.addEventListener("load",d),(0,n.default)(function(){d()});var p=0,g=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=p++,o.$container=t,o.images=[],o.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,resizeThrottle:200,onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var i=o.$container.dataset||{},n={};Object.keys(i).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==o.defaults[e]&&(n[e]=i[t])}),o.options=(0,c.default)({},o.defaults,n,e),o.pureOptions=(0,c.default)({},o.options),o.resize=(0,s.default)(o.options.resizeThrottle,o.resize),o.init()}return i(r,[{key:"css",value:function(e,o){return"string"==typeof o?l.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(){f.push(this),d()}},{key:"removeFromFjGalleryList",value:function(){var o=this;f.forEach(function(t,e){t.instanceID===o.instanceID&&f.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 f=this;l.window.jQuery&&t instanceof l.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){if(t&&!t.fjGalleryImage&&t.querySelector){var h=t.querySelector(f.options.imageSelector);if(h){t.fjGalleryImage=f;var e={$item:t,$image:h,width:parseFloat(h.getAttribute("width"))||!1,height:parseFloat(h.getAttribute("height"))||!1,loadSizes:function(){var t,e,o,i,n,r,a,s,c,u,l=this;t=h,o=void 0,n=i=!(e=function(t){l.width===t.width&&l.height===t.height||(l.width=t.width,l.height=t.height,f.resize())}),r=function(){i?e(i):(i={width:t.naturalWidth,height:t.naturalHeight},e(i),clearInterval(o),n&&u())},a=function(){r()},s=function(){r()},u=function(){n=!1,t.removeEventListener("load",a),t.removeEventListener("error",s)},(c=function(){0<t.naturalWidth&&r()})(),i||(n=!0,t.addEventListener("load",a),t.addEventListener("error",s),o=setInterval(c,100))}};e.loadSizes(),f.images.push(e)}}}),f.options.onAppendImages&&f.options.onAppendImages.call(f,[t]),f.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 i=(0,u.default)(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:i.containerHeight+"px"});var n=0;e.images.forEach(function(t){t.width&&t.height&&(e.css(t.$item,{position:"absolute",transform:"translateX("+i.boxes[n].left+"px) translateY("+i.boxes[n].top+"px) translateZ(0)",width:i.boxes[n].width+"px",height:i.boxes[n].height+"px"}),n++)}),e.options.onJustify&&e.options.onJustify.call(e)}},{key:"updateOptions",value:function(t){this.options=(0,c.default)({},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()}}]),r}(),y=function(t){("object"===("undefined"==typeof HTMLElement?"undefined":a(HTMLElement))?t instanceof HTMLElement:t&&"object"===(void 0===t?"undefined":a(t))&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var e=arguments[1],o=Array.prototype.slice.call(arguments,2),i=t.length,n=0,r=void 0;n<i;n++)if("object"===(void 0===e?"undefined":a(e))||void 0===e?t[n].fjGallery||(t[n].fjGallery=new g(t[n],e)):t[n].fjGallery&&(r=t[n].fjGallery[e].apply(t[n].fjGallery,o)),void 0!==r)return r;return t};y.constructor=g,e.default=y},function(t,e,o){"use strict";t.exports=function(n,r,a,s){var c,u=0;return"boolean"!=typeof r&&(s=a,a=r,r=void 0),function(){var t=this,e=Number(new Date)-u,o=arguments;function i(){u=Number(new Date),a.apply(t,o)}s&&!c&&i(),c&&clearTimeout(c),void 0===s&&n<e?i():!0!==r&&(c=setTimeout(s?function(){c=void 0}:i,void 0===s?n-e:n))}}},function(t,e,o){"use strict";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";var i=o(0),n=i.requestAnimationFrame||i.webkitRequestAnimationFrame||i.mozRequestAnimationFrame||function(t){var e=+new Date,o=Math.max(0,16-(e-r)),i=setTimeout(t,o);return r=e,i},r=+new Date;var a=i.cancelAnimationFrame||i.webkitCancelAnimationFrame||i.mozCancelAnimationFrame||clearTimeout;Function.prototype.bind&&(n=n.bind(i),a=a.bind(i)),(t.exports=n).cancel=a},function(t,e,o){"use strict";
15
  /*!
16
  * Copyright 2016 Yahoo 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(1),i=o(11);function g(t,e){var o;return!1!==t.fullWidthBreakoutRowCadence&&(e._rows.length+1)%t.fullWidthBreakoutRowCadence==0&&(o=!0),new i({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,i,n,r,a,s,c,u={},l={},h={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:!1,showWidows:!0,fullWidthBreakoutRowCadence:!1,widowLayoutStyle:"left"},f={},d={};return u=p(h,e=e||{}),f.top=isNaN(parseFloat(u.containerPadding.top))?u.containerPadding:u.containerPadding.top,f.right=isNaN(parseFloat(u.containerPadding.right))?u.containerPadding:u.containerPadding.right,f.bottom=isNaN(parseFloat(u.containerPadding.bottom))?u.containerPadding:u.containerPadding.bottom,f.left=isNaN(parseFloat(u.containerPadding.left))?u.containerPadding:u.containerPadding.left,d.horizontal=isNaN(parseFloat(u.boxSpacing.horizontal))?u.boxSpacing:u.boxSpacing.horizontal,d.vertical=isNaN(parseFloat(u.boxSpacing.vertical))?u.boxSpacing:u.boxSpacing.vertical,u.containerPadding=f,u.boxSpacing=d,l._layoutItems=[],l._awakeItems=[],l._inViewportItems=[],l._leadingOrphans=[],l._trailingOrphans=[],l._containerHeight=u.containerPadding.top,l._rows=[],l._orphans=[],u._widowCount=0,o=u,i=l,n=t.map(function(t){return t.width&&t.height?{aspectRatio:t.width/t.height}:{aspectRatio:t}}),c=[],o.forceAspectRatio&&n.forEach(function(t){t.forcedAspectRatio=!0,t.aspectRatio=o.forceAspectRatio}),n.some(function(t,e){if(isNaN(t.aspectRatio))throw new Error("Item "+e+" has an invalid aspect ratio");if(a||(a=g(o,i)),r=a.addItem(t),a.isLayoutComplete()){if(c=c.concat(y(o,i,a)),i._rows.length>=o.maxNumRows)return!(a=null);if(a=g(o,i),!r&&(r=a.addItem(t),a.isLayoutComplete())){if(c=c.concat(y(o,i,a)),i._rows.length>=o.maxNumRows)return!(a=null);a=g(o,i)}}}),a&&a.getItems().length&&o.showWidows&&(i._rows.length?(s=i._rows[i._rows.length-1].isBreakoutRow?i._rows[i._rows.length-1].targetRowHeight:i._rows[i._rows.length-1].height,a.forceComplete(!1,s)):a.forceComplete(!1),c=c.concat(y(o,i,a)),o._widowCount=a.getItems().length),i._containerHeight=i._containerHeight-o.boxSpacing.vertical,i._containerHeight=i._containerHeight+o.containerPadding.bottom,{containerHeight:i._containerHeight,widowCount:o._widowCount,boxes:i._layoutItems}}},function(t,e,o){"use strict";
20
  /*!
21
  * Copyright 2016 Yahoo Inc.
22
  * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.
23
  * @license
24
+ */var c=o(1);(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,i,n=this.items.concat(t),r=this.width-(n.length-1)*this.spacing,a=n.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),i=e/this.targetRowHeight,Math.abs(a-s)>Math.abs(o-i)?(this.completeLayout(e/o,"justify"),!1):(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0)):(this.items.push(c(t)),this.completeLayout(r/a,"justify"),!0)},isLayoutComplete:function(){return 0<this.height},completeLayout:function(t,e){var o,i,n,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"),t!==(i=Math.max(this.edgeCaseMinRowHeight,Math.min(t,this.edgeCaseMaxRowHeight)))?(this.height=i,o=c/i/(c/t)):(this.height=t,o=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,n=(s-this.width)/this.items.length,r=this.items.map(function(t,e){return Math.round((e+1)*n)}),1===this.items.length?this.items[0].width-=Math.round(n):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}}}]);
25
  //# sourceMappingURL=fjGallery.min.js.map
assets/vendor/flickr-justified-gallery/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","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","win","window","self","_typeof","Symbol","iterator","obj","constructor","isNode","Public","clone","merge","arguments","merge_recursive","base","extend","typeOf","key","recursive","argv","result","size","length","index","item","sitem","input","toString","slice","toLowerCase","output","type","callback","document","readyState","attachEvent","addEventListener","_liteReady2","_interopRequireDefault","_global","_fjGallery2","default","oldPlugin","fjGallery","noConflict","this","jQuery","jQueryPlugin","args","Array","unshift","res","apply","oldJqPlugin","fn","querySelectorAll","g","Function","eval","e","value","_createClass","defineProperties","target","props","descriptor","writable","Constructor","protoProps","staticProps","_throttle2","_merge2","_rafl2","_justifiedLayout2","fjGalleryList","updateFjGallery","forEach","resize","instanceID","container","userOptions","instance","TypeError","_classCallCheck","$container","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","resizeThrottle","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","options","pureOptions","init","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","$item","fjGalleryImage","querySelector","$image","data","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","onHasSize","onLoaded","onError","checkSize","removeListeners","itemData","dimensions","naturalWidth","naturalHeight","clearInterval","removeEventListener","setInterval","justify","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","css","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","containerHeight","position","boxes","removeFromFjGalleryList","val","plugin","items","HTMLElement","nodeType","nodeName","len","k","ret","delay","noTrailing","debounceMode","timeoutID","lastExec","undefined","elapsed","Number","Date","exec","clearTimeout","setTimeout","webpackPolyfill","deprecate","paths","children","request","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","curr","ms","Math","max","prev","req","cancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","bind","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","concat","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","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","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","min","round","fitToWidth"],"mappings":"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","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.1\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar 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(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.0\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;(function (isNode) {\n\n\t/**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\tvar Public = function Public(clone) {\n\n\t\treturn merge(clone === true, false, arguments);\n\t},\n\t publicName = 'merge';\n\n\t/**\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\tPublic.recursive = function (clone) {\n\n\t\treturn merge(clone === true, true, arguments);\n\t};\n\n\t/**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\tPublic.clone = function (input) {\n\n\t\tvar output = input,\n\t\t type = typeOf(input),\n\t\t index,\n\t\t size;\n\n\t\tif (type === 'array') {\n\n\t\t\toutput = [];\n\t\t\tsize = input.length;\n\n\t\t\tfor (index = 0; index < size; ++index) {\n\n\t\t\t\toutput[index] = Public.clone(input[index]);\n\t\t\t}\n\t\t} else if (type === 'object') {\n\n\t\t\toutput = {};\n\n\t\t\tfor (index in input) {\n\n\t\t\t\toutput[index] = Public.clone(input[index]);\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t/**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\tfunction merge_recursive(base, extend) {\n\n\t\tif (typeOf(base) !== 'object') return extend;\n\n\t\tfor (var key in extend) {\n\n\t\t\tif (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n\n\t\t\t\tbase[key] = merge_recursive(base[key], extend[key]);\n\t\t\t} else {\n\n\t\t\t\tbase[key] = extend[key];\n\t\t\t}\n\t\t}\n\n\t\treturn base;\n\t}\n\n\t/**\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\tfunction merge(clone, recursive, argv) {\n\n\t\tvar result = argv[0],\n\t\t size = argv.length;\n\n\t\tif (clone || typeOf(result) !== 'object') result = {};\n\n\t\tfor (var index = 0; index < size; ++index) {\n\n\t\t\tvar item = argv[index],\n\t\t\t type = typeOf(item);\n\n\t\t\tif (type !== 'object') continue;\n\n\t\t\tfor (var key in item) {\n\n\t\t\t\tvar sitem = clone ? Public.clone(item[key]) : item[key];\n\n\t\t\t\tif (recursive) {\n\n\t\t\t\t\tresult[key] = merge_recursive(result[key], sitem);\n\t\t\t\t} else {\n\n\t\t\t\t\tresult[key] = sitem;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\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\tfunction typeOf(input) {\n\n\t\treturn {}.toString.call(input).slice(8, -1).toLowerCase();\n\t}\n\n\tif (isNode) {\n\n\t\tmodule.exports = Public;\n\t} else {\n\n\t\twindow[publicName] = Public;\n\t}\n})(( false ? 'undefined' : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)(module)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(4);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _global = __webpack_require__(0);\n\nvar _fjGallery = __webpack_require__(6);\n\nvar _fjGallery2 = _interopRequireDefault(_fjGallery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// no conflict\nvar oldPlugin = _global.window.fjGallery;\n_global.window.fjGallery = _fjGallery2.default;\n_global.window.fjGallery.noConflict = function () {\n _global.window.fjGallery = oldPlugin;\n return this;\n};\n\n// jQuery support\nif (typeof _global.jQuery !== 'undefined') {\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _fjGallery2.default.apply(_global.window, args);\n return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\n };\n jQueryPlugin.constructor = _fjGallery2.default.constructor;\n\n // no conflict\n var oldJqPlugin = _global.jQuery.fn.fjGallery;\n _global.jQuery.fn.fjGallery = jQueryPlugin;\n _global.jQuery.fn.fjGallery.noConflict = function () {\n _global.jQuery.fn.fjGallery = oldJqPlugin;\n return this;\n };\n}\n\n// .fj-gallery initialization\n(0, _liteReady2.default)(function () {\n (0, _fjGallery2.default)(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\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\nmodule.exports = g;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _throttle = __webpack_require__(7);\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _merge = __webpack_require__(1);\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _rafl = __webpack_require__(9);\n\nvar _rafl2 = _interopRequireDefault(_rafl);\n\nvar _justifiedLayout = __webpack_require__(10);\n\nvar _justifiedLayout2 = _interopRequireDefault(_justifiedLayout);\n\nvar _global = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// list with all fjGallery instances\n// need to render all in one scroll/resize event\nvar fjGalleryList = [];\n\nfunction updateFjGallery() {\n (0, _rafl2.default)(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n });\n}\n\n_global.window.addEventListener('resize', updateFjGallery);\n_global.window.addEventListener('orientationchange', updateFjGallery);\n_global.window.addEventListener('load', updateFjGallery);\n(0, _liteReady2.default)(function () {\n updateFjGallery();\n});\n\n// get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\nfunction getImgDemensions(img, cb) {\n var interval = void 0;\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\n clearInterval(interval);\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n var onError = function onError() {\n onHasSize();\n };\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\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;\n\n// fjGallery class\n\nvar fjGallery = function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n\n self.instanceID = instanceID++;\n\n self.$container = container;\n\n self.images = [];\n\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10, // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25, // [0, 1]\n resizeThrottle: 200,\n\n // events\n onInit: null, // function() {}\n onDestroy: null, // function() {}\n onAppendImages: null, // function() {}\n onBeforeJustify: null, // function() {}\n onJustify: null // function() {}\n };\n\n // prepare data-options\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 if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n\n self.options = (0, _merge2.default)({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = (0, _merge2.default)({}, self.options);\n\n // throttle for resize\n self.resize = (0, _throttle2.default)(self.options.resizeThrottle, self.resize);\n\n self.init();\n }\n\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.window.getComputedStyle(el).getPropertyValue(styles);\n }\n\n // add transform property with vendor prefix\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 }\n\n // add to fjGallery instances list\n\n }, {\n key: 'addToFjGalleryList',\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n }\n\n // remove from fjGallery instances list\n\n }, {\n key: 'removeFromFjGalleryList',\n value: function removeFromFjGalleryList() {\n var self = this;\n\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\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n\n self.addToFjGalleryList();\n\n // call onInit event\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n }\n\n // append images\n\n }, {\n key: 'appendImages',\n value: function appendImages($images) {\n var self = this;\n\n // check if jQuery\n if (_global.window.jQuery && $images instanceof _global.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 getImgDemensions($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\n self.images.push(data);\n }\n }\n });\n\n // call onAppendImages event\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n }\n\n // justify images\n\n }, {\n key: 'justify',\n value: function justify() {\n var self = this;\n var justifyArray = [];\n\n // call onBeforeJustify event\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\n var justifiedData = (0, _justifiedLayout2.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\n self.css(self.$container, {\n height: justifiedData.containerHeight + 'px'\n });\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(' + justifiedData.boxes[i].left + 'px) translateY(' + justifiedData.boxes[i].top + 'px) translateZ(0)',\n width: justifiedData.boxes[i].width + 'px',\n height: justifiedData.boxes[i].height + 'px'\n });\n i++;\n }\n });\n\n // call onJustify event\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n }\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 = (0, _merge2.default)({}, self.options, options);\n self.justify();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var self = this;\n\n self.removeFromFjGalleryList();\n\n // call onDestroy event\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n }\n\n // remove styles.\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 });\n\n // delete fjGalleryImage instance from images\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n });\n\n // delete fjGallery instance from container\n delete self.$container.fjGallery;\n }\n }, {\n key: 'resize',\n value: function resize() {\n var self = this;\n\n self.justify();\n }\n }]);\n\n return fjGallery;\n}();\n\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 === 'undefined' ? 'undefined' : _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 = void 0;\n\n for (k; k < len; k++) {\n if ((typeof options === 'undefined' ? 'undefined' : _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 if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\nplugin.constructor = fjGallery;\n\nexports.default = plugin;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\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 * @return {Function} A new, throttled, function.\n */\nmodule.exports = function (delay, noTrailing, callback, debounceMode) {\n\n\t// After wrapper has stopped being called, this timeout ensures that\n\t// `callback` is executed at the proper times in `throttle` and `end`\n\t// debounce modes.\n\tvar timeoutID;\n\n\t// Keep track of the last time `callback` was executed.\n\tvar lastExec = 0;\n\n\t// `noTrailing` defaults to falsy.\n\tif (typeof noTrailing !== 'boolean') {\n\t\tdebounceMode = callback;\n\t\tcallback = noTrailing;\n\t\tnoTrailing = undefined;\n\t}\n\n\t// The `wrapper` function encapsulates all of the throttling / debouncing\n\t// functionality and when executed will limit the rate at which `callback`\n\t// is executed.\n\tfunction wrapper() {\n\n\t\tvar self = this;\n\t\tvar elapsed = Number(new Date()) - lastExec;\n\t\tvar args = arguments;\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Number(new Date());\n\t\t\tcallback.apply(self, args);\n\t\t}\n\n\t\t// If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t// to allow future `callback` executions.\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (debounceMode && !timeoutID) {\n\t\t\t// Since `wrapper` is being called for the first time and\n\t\t\t// `debounceMode` is true (at begin), execute `callback`.\n\t\t\texec();\n\t\t}\n\n\t\t// Clear any existing timeout.\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\t// In throttle mode, if `delay` time has been exceeded, execute\n\t\t\t// `callback`.\n\t\t\texec();\n\t\t} else if (noTrailing !== true) {\n\t\t\t// In trailing throttle mode, since `delay` time has not been\n\t\t\t// exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t// recent execution.\n\t\t\t//\n\t\t\t// If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t// after `delay` ms.\n\t\t\t//\n\t\t\t// If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t// execute after `delay` ms.\n\t\t\ttimeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n\t\t}\n\t}\n\n\t// Return the wrapper function.\n\treturn wrapper;\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function () {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar global = __webpack_require__(0);\n\n/**\n * `requestAnimationFrame()`\n */\n\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\n\nvar prev = +new Date();\nfunction fallback(fn) {\n var curr = +new Date();\n var ms = Math.max(0, 16 - (curr - prev));\n var req = setTimeout(fn, ms);\n return prev = curr, req;\n}\n\n/**\n * `cancelAnimationFrame()`\n */\n\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\n\nif (Function.prototype.bind) {\n request = request.bind(global);\n cancel = cancel.bind(global);\n}\n\nexports = module.exports = request;\nexports.cancel = cancel;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2016 Yahoo 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\n\nvar merge = __webpack_require__(1),\n Row = __webpack_require__(11);\n\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\nfunction createNewRow(layoutConfig, layoutData) {\n\n\tvar isBreakoutRow;\n\n\t// Work out if this is a full width breakout row\n\tif (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n\t\tif ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n\t\t\tisBreakoutRow = true;\n\t\t}\n\t}\n\n\treturn new Row({\n\t\ttop: layoutData._containerHeight,\n\t\tleft: layoutConfig.containerPadding.left,\n\t\twidth: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n\t\tspacing: layoutConfig.boxSpacing.horizontal,\n\t\ttargetRowHeight: layoutConfig.targetRowHeight,\n\t\ttargetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n\t\tedgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n\t\tedgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n\t\trightToLeft: false,\n\t\tisBreakoutRow: isBreakoutRow,\n\t\twidowLayoutStyle: layoutConfig.widowLayoutStyle\n\t});\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\nfunction addRow(layoutConfig, layoutData, row) {\n\n\tlayoutData._rows.push(row);\n\tlayoutData._layoutItems = layoutData._layoutItems.concat(row.getItems());\n\n\t// Increment the container height\n\tlayoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n\n\treturn row.items;\n}\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\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n\n\tvar laidOutItems = [],\n\t itemAdded,\n\t currentRow,\n\t nextToLastRowHeight;\n\n\t// Apply forced aspect ratio if specified, and set a flag.\n\tif (layoutConfig.forceAspectRatio) {\n\t\titemLayoutData.forEach(function (itemData) {\n\t\t\titemData.forcedAspectRatio = true;\n\t\t\titemData.aspectRatio = layoutConfig.forceAspectRatio;\n\t\t});\n\t}\n\n\t// Loop through the items\n\titemLayoutData.some(function (itemData, i) {\n\n\t\tif (isNaN(itemData.aspectRatio)) {\n\t\t\tthrow new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n\t\t}\n\n\t\t// If not currently building up a row, make a new one.\n\t\tif (!currentRow) {\n\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\t\t}\n\n\t\t// Attempt to add item to the current row.\n\t\titemAdded = currentRow.addItem(itemData);\n\n\t\tif (currentRow.isLayoutComplete()) {\n\n\t\t\t// Row is filled; add it and start a new one\n\t\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n\t\t\tif (layoutData._rows.length >= layoutConfig.maxNumRows) {\n\t\t\t\tcurrentRow = null;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\n\t\t\t// Item was rejected; add it to its own row\n\t\t\tif (!itemAdded) {\n\n\t\t\t\titemAdded = currentRow.addItem(itemData);\n\n\t\t\t\tif (currentRow.isLayoutComplete()) {\n\n\t\t\t\t\t// If the rejected item fills a row on its own, add the row and start another new one\n\t\t\t\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\t\t\t\t\tif (layoutData._rows.length >= layoutConfig.maxNumRows) {\n\t\t\t\t\t\tcurrentRow = null;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t// Handle any leftover content (orphans) depending on where they lie\n\t// in this layout update, and in the total content set.\n\tif (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n\n\t\t// Last page of all content or orphan suppression is suppressed; lay out orphans.\n\t\tif (layoutData._rows.length) {\n\n\t\t\t// Only Match previous row's height if it exists and it isn't a breakout row\n\t\t\tif (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n\t\t\t\tnextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n\t\t\t} else {\n\t\t\t\tnextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n\t\t\t}\n\n\t\t\tcurrentRow.forceComplete(false, nextToLastRowHeight);\n\t\t} else {\n\n\t\t\t// ...else use target height if there is no other row height to reference.\n\t\t\tcurrentRow.forceComplete(false);\n\t\t}\n\n\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\t\tlayoutConfig._widowCount = currentRow.getItems().length;\n\t}\n\n\t// We need to clean up the bottom container padding\n\t// First remove the height added for box spacing\n\tlayoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical;\n\t// Then add our bottom container padding\n\tlayoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n\n\treturn {\n\t\tcontainerHeight: layoutData._containerHeight,\n\t\twidowCount: layoutConfig._widowCount,\n\t\tboxes: layoutData._layoutItems\n\t};\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\nmodule.exports = function (input, config) {\n\tvar layoutConfig = {};\n\tvar layoutData = {};\n\n\t// Defaults\n\tvar defaults = {\n\t\tcontainerWidth: 1060,\n\t\tcontainerPadding: 10,\n\t\tboxSpacing: 10,\n\t\ttargetRowHeight: 320,\n\t\ttargetRowHeightTolerance: 0.25,\n\t\tmaxNumRows: Number.POSITIVE_INFINITY,\n\t\tforceAspectRatio: false,\n\t\tshowWidows: true,\n\t\tfullWidthBreakoutRowCadence: false,\n\t\twidowLayoutStyle: 'left'\n\t};\n\n\tvar containerPadding = {};\n\tvar boxSpacing = {};\n\n\tconfig = config || {};\n\n\t// Merge defaults and config passed in\n\tlayoutConfig = merge(defaults, config);\n\n\t// Sort out padding and spacing values\n\tcontainerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n\tcontainerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n\tcontainerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n\tcontainerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n\tboxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n\tboxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n\n\tlayoutConfig.containerPadding = containerPadding;\n\tlayoutConfig.boxSpacing = boxSpacing;\n\n\t// Local\n\tlayoutData._layoutItems = [];\n\tlayoutData._awakeItems = [];\n\tlayoutData._inViewportItems = [];\n\tlayoutData._leadingOrphans = [];\n\tlayoutData._trailingOrphans = [];\n\tlayoutData._containerHeight = layoutConfig.containerPadding.top;\n\tlayoutData._rows = [];\n\tlayoutData._orphans = [];\n\tlayoutConfig._widowCount = 0;\n\n\t// Convert widths and heights to aspect ratios if we need to\n\treturn computeLayout(layoutConfig, layoutData, input.map(function (item) {\n\t\tif (item.width && item.height) {\n\t\t\treturn { aspectRatio: item.width / item.height };\n\t\t} else {\n\t\t\treturn { aspectRatio: item };\n\t\t}\n\t}));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*!\n * Copyright 2016 Yahoo Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\nvar merge = __webpack_require__(1);\n\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\nvar Row = module.exports = function (params) {\n\n\t// Top of row, relative to container\n\tthis.top = params.top;\n\n\t// Left side of row relative to container (equal to container left padding)\n\tthis.left = params.left;\n\n\t// Width of row, not including container padding\n\tthis.width = params.width;\n\n\t// Horizontal spacing between items\n\tthis.spacing = params.spacing;\n\n\t// Row height calculation values\n\tthis.targetRowHeight = params.targetRowHeight;\n\tthis.targetRowHeightTolerance = params.targetRowHeightTolerance;\n\tthis.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n\tthis.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance);\n\n\t// Edge case row height minimum/maximum\n\tthis.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n\tthis.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight;\n\n\t// Widow layout direction\n\tthis.widowLayoutStyle = params.widowLayoutStyle;\n\n\t// Full width breakout rows\n\tthis.isBreakoutRow = params.isBreakoutRow;\n\n\t// Store layout data for each item in row\n\tthis.items = [];\n\n\t// Height remains at 0 until it's been calculated\n\tthis.height = 0;\n};\n\nRow.prototype = {\n\n\t/**\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\n\taddItem: function addItem(itemData) {\n\n\t\tvar newItems = this.items.concat(itemData),\n\n\t\t// Calculate aspect ratios for items only; exclude spacing\n\t\trowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n\t\t newAspectRatio = newItems.reduce(function (sum, item) {\n\t\t\treturn sum + item.aspectRatio;\n\t\t}, 0),\n\t\t targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n\t\t previousRowWidthWithoutSpacing,\n\t\t previousAspectRatio,\n\t\t previousTargetAspectRatio;\n\n\t\t// Handle big full-width breakout photos if we're doing them\n\t\tif (this.isBreakoutRow) {\n\t\t\t// Only do it if there's no other items in this row\n\t\t\tif (this.items.length === 0) {\n\t\t\t\t// Only go full width if this photo is a square or landscape\n\t\t\t\tif (itemData.aspectRatio >= 1) {\n\t\t\t\t\t// Close out the row with a full width photo\n\t\t\t\t\tthis.items.push(itemData);\n\t\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (newAspectRatio < this.minAspectRatio) {\n\n\t\t\t// New aspect ratio is too narrow / scaled row height is too tall.\n\t\t\t// Accept this item and leave row open for more items.\n\n\t\t\tthis.items.push(merge(itemData));\n\t\t\treturn true;\n\t\t} else if (newAspectRatio > this.maxAspectRatio) {\n\n\t\t\t// New aspect ratio is too wide / scaled row height will be too short.\n\t\t\t// Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n\t\t\t// NOTE: Any row that falls into this block will require cropping/padding on individual items.\n\n\t\t\tif (this.items.length === 0) {\n\n\t\t\t\t// When there are no existing items, force acceptance of the new item and complete the layout.\n\t\t\t\t// This is the pano special case.\n\t\t\t\tthis.items.push(merge(itemData));\n\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Calculate width/aspect ratio for row before adding new item\n\t\t\tpreviousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n\t\t\tpreviousAspectRatio = this.items.reduce(function (sum, item) {\n\t\t\t\treturn sum + item.aspectRatio;\n\t\t\t}, 0);\n\t\t\tpreviousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n\t\t\tif (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n\n\t\t\t\t// Row with new item is us farther away from target than row without; complete layout and reject item.\n\t\t\t\tthis.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n\t\t\t\treturn false;\n\t\t\t} else {\n\n\t\t\t\t// Row with new item is us closer to target than row without;\n\t\t\t\t// accept the new item and complete the row layout.\n\t\t\t\tthis.items.push(merge(itemData));\n\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// New aspect ratio / scaled row height is within tolerance;\n\t\t\t// accept the new item and complete the row layout.\n\t\t\tthis.items.push(merge(itemData));\n\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t/**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n\n\tisLayoutComplete: function isLayoutComplete() {\n\t\treturn this.height > 0;\n\t},\n\n\t/**\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\n\tcompleteLayout: function completeLayout(newHeight, widowLayoutStyle) {\n\n\t\tvar itemWidthSum = this.left,\n\t\t rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n\t\t clampedToNativeRatio,\n\t\t clampedHeight,\n\t\t errorWidthPerItem,\n\t\t roundedCumulativeErrors,\n\t\t singleItemGeometry,\n\t\t centerOffset;\n\n\t\t// Justify unless explicitly specified otherwise.\n\t\tif (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n\t\t\twidowLayoutStyle = 'left';\n\t\t}\n\n\t\t// Clamp row height to edge case minimum/maximum.\n\t\tclampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n\t\tif (newHeight !== clampedHeight) {\n\n\t\t\t// If row height was clamped, the resulting row/item aspect ratio will be off,\n\t\t\t// so force it to fit the width (recalculate aspectRatio to match clamped height).\n\t\t\t// NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n\t\t\tthis.height = clampedHeight;\n\t\t\tclampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n\t\t} else {\n\n\t\t\t// If not clamped, leave ratio at 1.0.\n\t\t\tthis.height = newHeight;\n\t\t\tclampedToNativeRatio = 1.0;\n\t\t}\n\n\t\t// Compute item geometry based on newHeight.\n\t\tthis.items.forEach(function (item) {\n\n\t\t\titem.top = this.top;\n\t\t\titem.width = item.aspectRatio * this.height * clampedToNativeRatio;\n\t\t\titem.height = this.height;\n\n\t\t\t// Left-to-right.\n\t\t\t// TODO right to left\n\t\t\t// item.left = this.width - itemWidthSum - item.width;\n\t\t\titem.left = itemWidthSum;\n\n\t\t\t// Increment width.\n\t\t\titemWidthSum += item.width + this.spacing;\n\t\t}, this);\n\n\t\t// If specified, ensure items fill row and distribute error\n\t\t// caused by rounding width and height across all items.\n\t\tif (widowLayoutStyle === 'justify') {\n\n\t\t\titemWidthSum -= this.spacing + this.left;\n\n\t\t\terrorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n\t\t\troundedCumulativeErrors = this.items.map(function (item, i) {\n\t\t\t\treturn Math.round((i + 1) * errorWidthPerItem);\n\t\t\t});\n\n\t\t\tif (this.items.length === 1) {\n\n\t\t\t\t// For rows with only one item, adjust item width to fill row.\n\t\t\t\tsingleItemGeometry = this.items[0];\n\t\t\t\tsingleItemGeometry.width -= Math.round(errorWidthPerItem);\n\t\t\t} else {\n\n\t\t\t\t// For rows with multiple items, adjust item width and shift items to fill the row,\n\t\t\t\t// while maintaining equal spacing between items in the row.\n\t\t\t\tthis.items.forEach(function (item, i) {\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\titem.left -= roundedCumulativeErrors[i - 1];\n\t\t\t\t\t\titem.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.width -= roundedCumulativeErrors[i];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (widowLayoutStyle === 'center') {\n\n\t\t\t// Center widows\n\t\t\tcenterOffset = (this.width - itemWidthSum) / 2;\n\n\t\t\tthis.items.forEach(function (item) {\n\t\t\t\titem.left += centerOffset + this.spacing;\n\t\t\t}, this);\n\t\t}\n\t},\n\n\t/**\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\n\tforceComplete: function forceComplete(fitToWidth, rowHeight) {\n\n\t\t// TODO Handle fitting to width\n\t\t// var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n\t\t// \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n\t\t// \t\treturn sum + item.aspectRatio;\n\t\t// \t}, 0);\n\n\t\tif (typeof rowHeight === 'number') {\n\n\t\t\tthis.completeLayout(rowHeight, this.widowLayoutStyle);\n\t\t} else {\n\n\t\t\t// Complete using target row height.\n\t\t\tthis.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n\t\t}\n\t},\n\n\t/**\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\n\tgetItems: function getItems() {\n\t\treturn this.items;\n\t}\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","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","win","window","self","_typeof","Symbol","iterator","obj","constructor","isNode","Public","clone","merge","arguments","merge_recursive","base","extend","typeOf","key","recursive","argv","result","size","length","index","item","sitem","input","toString","slice","toLowerCase","output","type","callback","document","readyState","attachEvent","addEventListener","_liteReady2","_interopRequireDefault","_global","_fjGallery2","default","oldPlugin","fjGallery","noConflict","this","jQuery","oldInit","init","jQcontainer","$container","data","oldDestroy","destroy","removeData","jQueryPlugin","args","Array","unshift","res","apply","oldJqPlugin","fn","querySelectorAll","g","Function","eval","e","value","_createClass","defineProperties","target","props","descriptor","writable","Constructor","protoProps","staticProps","_throttle2","_merge2","_rafl2","_justifiedLayout2","fjGalleryList","updateFjGallery","forEach","resize","instanceID","container","userOptions","instance","TypeError","_classCallCheck","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","resizeThrottle","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","options","pureOptions","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","$item","fjGalleryImage","querySelector","$image","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","onHasSize","onLoaded","onError","checkSize","removeListeners","itemData","dimensions","naturalWidth","naturalHeight","clearInterval","removeEventListener","setInterval","justify","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","css","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","containerHeight","position","boxes","removeFromFjGalleryList","val","plugin","items","HTMLElement","nodeType","nodeName","len","k","ret","delay","noTrailing","debounceMode","timeoutID","lastExec","undefined","elapsed","Number","Date","exec","clearTimeout","setTimeout","webpackPolyfill","deprecate","paths","children","request","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","curr","ms","Math","max","prev","req","cancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","bind","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","concat","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","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","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","min","round","fitToWidth"],"mappings":"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","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.2\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar 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(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.0\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;(function (isNode) {\n\n\t/**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\tvar Public = function Public(clone) {\n\n\t\treturn merge(clone === true, false, arguments);\n\t},\n\t publicName = 'merge';\n\n\t/**\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\tPublic.recursive = function (clone) {\n\n\t\treturn merge(clone === true, true, arguments);\n\t};\n\n\t/**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\tPublic.clone = function (input) {\n\n\t\tvar output = input,\n\t\t type = typeOf(input),\n\t\t index,\n\t\t size;\n\n\t\tif (type === 'array') {\n\n\t\t\toutput = [];\n\t\t\tsize = input.length;\n\n\t\t\tfor (index = 0; index < size; ++index) {\n\n\t\t\t\toutput[index] = Public.clone(input[index]);\n\t\t\t}\n\t\t} else if (type === 'object') {\n\n\t\t\toutput = {};\n\n\t\t\tfor (index in input) {\n\n\t\t\t\toutput[index] = Public.clone(input[index]);\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t};\n\n\t/**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\tfunction merge_recursive(base, extend) {\n\n\t\tif (typeOf(base) !== 'object') return extend;\n\n\t\tfor (var key in extend) {\n\n\t\t\tif (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n\n\t\t\t\tbase[key] = merge_recursive(base[key], extend[key]);\n\t\t\t} else {\n\n\t\t\t\tbase[key] = extend[key];\n\t\t\t}\n\t\t}\n\n\t\treturn base;\n\t}\n\n\t/**\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\tfunction merge(clone, recursive, argv) {\n\n\t\tvar result = argv[0],\n\t\t size = argv.length;\n\n\t\tif (clone || typeOf(result) !== 'object') result = {};\n\n\t\tfor (var index = 0; index < size; ++index) {\n\n\t\t\tvar item = argv[index],\n\t\t\t type = typeOf(item);\n\n\t\t\tif (type !== 'object') continue;\n\n\t\t\tfor (var key in item) {\n\n\t\t\t\tvar sitem = clone ? Public.clone(item[key]) : item[key];\n\n\t\t\t\tif (recursive) {\n\n\t\t\t\t\tresult[key] = merge_recursive(result[key], sitem);\n\t\t\t\t} else {\n\n\t\t\t\t\tresult[key] = sitem;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\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\tfunction typeOf(input) {\n\n\t\treturn {}.toString.call(input).slice(8, -1).toLowerCase();\n\t}\n\n\tif (isNode) {\n\n\t\tmodule.exports = Public;\n\t} else {\n\n\t\twindow[publicName] = Public;\n\t}\n})(( false ? 'undefined' : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)(module)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(4);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _global = __webpack_require__(0);\n\nvar _fjGallery = __webpack_require__(6);\n\nvar _fjGallery2 = _interopRequireDefault(_fjGallery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// no conflict\nvar oldPlugin = _global.window.fjGallery;\n_global.window.fjGallery = _fjGallery2.default;\n_global.window.fjGallery.noConflict = function () {\n _global.window.fjGallery = oldPlugin;\n return this;\n};\n\n// jQuery support\nif (typeof _global.jQuery !== 'undefined') {\n // add data to jQuery .data('fjGallery')\n var oldInit = _global.window.fjGallery.constructor.prototype.init;\n _global.window.fjGallery.constructor.prototype.init = function () {\n this.jQcontainer = (0, _global.jQuery)(this.$container);\n this.jQcontainer.data('fjGallery', this);\n if (oldInit) {\n oldInit.call(this);\n }\n };\n\n // remove data from jQuery .data('fjGallery')\n var oldDestroy = _global.window.fjGallery.constructor.prototype.destroy;\n _global.window.fjGallery.constructor.prototype.destroy = function () {\n if (this.jQcontainer) {\n this.jQcontainer.removeData('fjGallery');\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 = _fjGallery2.default.apply(_global.window, args);\n return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\n };\n jQueryPlugin.constructor = _fjGallery2.default.constructor;\n\n // no conflict\n var oldJqPlugin = _global.jQuery.fn.fjGallery;\n _global.jQuery.fn.fjGallery = jQueryPlugin;\n _global.jQuery.fn.fjGallery.noConflict = function () {\n _global.jQuery.fn.fjGallery = oldJqPlugin;\n return this;\n };\n}\n\n// .fj-gallery initialization\n(0, _liteReady2.default)(function () {\n (0, _fjGallery2.default)(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\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\nmodule.exports = g;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _throttle = __webpack_require__(7);\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _merge = __webpack_require__(1);\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _rafl = __webpack_require__(9);\n\nvar _rafl2 = _interopRequireDefault(_rafl);\n\nvar _justifiedLayout = __webpack_require__(10);\n\nvar _justifiedLayout2 = _interopRequireDefault(_justifiedLayout);\n\nvar _global = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// list with all fjGallery instances\n// need to render all in one scroll/resize event\nvar fjGalleryList = [];\n\nfunction updateFjGallery() {\n (0, _rafl2.default)(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n });\n}\n\n_global.window.addEventListener('resize', updateFjGallery);\n_global.window.addEventListener('orientationchange', updateFjGallery);\n_global.window.addEventListener('load', updateFjGallery);\n(0, _liteReady2.default)(function () {\n updateFjGallery();\n});\n\n// get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\nfunction getImgDemensions(img, cb) {\n var interval = void 0;\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\n clearInterval(interval);\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n var onError = function onError() {\n onHasSize();\n };\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\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;\n\n// fjGallery class\n\nvar fjGallery = function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n\n self.instanceID = instanceID++;\n\n self.$container = container;\n\n self.images = [];\n\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10, // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25, // [0, 1]\n resizeThrottle: 200,\n\n // events\n onInit: null, // function() {}\n onDestroy: null, // function() {}\n onAppendImages: null, // function() {}\n onBeforeJustify: null, // function() {}\n onJustify: null // function() {}\n };\n\n // prepare data-options\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 if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n\n self.options = (0, _merge2.default)({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = (0, _merge2.default)({}, self.options);\n\n // throttle for resize\n self.resize = (0, _throttle2.default)(self.options.resizeThrottle, self.resize);\n\n self.init();\n }\n\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.window.getComputedStyle(el).getPropertyValue(styles);\n }\n\n // add transform property with vendor prefix\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 }\n\n // add to fjGallery instances list\n\n }, {\n key: 'addToFjGalleryList',\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n }\n\n // remove from fjGallery instances list\n\n }, {\n key: 'removeFromFjGalleryList',\n value: function removeFromFjGalleryList() {\n var self = this;\n\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\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n\n self.addToFjGalleryList();\n\n // call onInit event\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n }\n\n // append images\n\n }, {\n key: 'appendImages',\n value: function appendImages($images) {\n var self = this;\n\n // check if jQuery\n if (_global.window.jQuery && $images instanceof _global.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 getImgDemensions($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\n self.images.push(data);\n }\n }\n });\n\n // call onAppendImages event\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n }\n\n // justify images\n\n }, {\n key: 'justify',\n value: function justify() {\n var self = this;\n var justifyArray = [];\n\n // call onBeforeJustify event\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\n var justifiedData = (0, _justifiedLayout2.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\n self.css(self.$container, {\n height: justifiedData.containerHeight + 'px'\n });\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(' + justifiedData.boxes[i].left + 'px) translateY(' + justifiedData.boxes[i].top + 'px) translateZ(0)',\n width: justifiedData.boxes[i].width + 'px',\n height: justifiedData.boxes[i].height + 'px'\n });\n i++;\n }\n });\n\n // call onJustify event\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n }\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 = (0, _merge2.default)({}, self.options, options);\n self.justify();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var self = this;\n\n self.removeFromFjGalleryList();\n\n // call onDestroy event\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n }\n\n // remove styles.\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 });\n\n // delete fjGalleryImage instance from images\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n });\n\n // delete fjGallery instance from container\n delete self.$container.fjGallery;\n }\n }, {\n key: 'resize',\n value: function resize() {\n var self = this;\n\n self.justify();\n }\n }]);\n\n return fjGallery;\n}();\n\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 === 'undefined' ? 'undefined' : _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 = void 0;\n\n for (k; k < len; k++) {\n if ((typeof options === 'undefined' ? 'undefined' : _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 if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\nplugin.constructor = fjGallery;\n\nexports.default = plugin;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\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 * @return {Function} A new, throttled, function.\n */\nmodule.exports = function (delay, noTrailing, callback, debounceMode) {\n\n\t// After wrapper has stopped being called, this timeout ensures that\n\t// `callback` is executed at the proper times in `throttle` and `end`\n\t// debounce modes.\n\tvar timeoutID;\n\n\t// Keep track of the last time `callback` was executed.\n\tvar lastExec = 0;\n\n\t// `noTrailing` defaults to falsy.\n\tif (typeof noTrailing !== 'boolean') {\n\t\tdebounceMode = callback;\n\t\tcallback = noTrailing;\n\t\tnoTrailing = undefined;\n\t}\n\n\t// The `wrapper` function encapsulates all of the throttling / debouncing\n\t// functionality and when executed will limit the rate at which `callback`\n\t// is executed.\n\tfunction wrapper() {\n\n\t\tvar self = this;\n\t\tvar elapsed = Number(new Date()) - lastExec;\n\t\tvar args = arguments;\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Number(new Date());\n\t\t\tcallback.apply(self, args);\n\t\t}\n\n\t\t// If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t// to allow future `callback` executions.\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (debounceMode && !timeoutID) {\n\t\t\t// Since `wrapper` is being called for the first time and\n\t\t\t// `debounceMode` is true (at begin), execute `callback`.\n\t\t\texec();\n\t\t}\n\n\t\t// Clear any existing timeout.\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\t// In throttle mode, if `delay` time has been exceeded, execute\n\t\t\t// `callback`.\n\t\t\texec();\n\t\t} else if (noTrailing !== true) {\n\t\t\t// In trailing throttle mode, since `delay` time has not been\n\t\t\t// exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t// recent execution.\n\t\t\t//\n\t\t\t// If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t// after `delay` ms.\n\t\t\t//\n\t\t\t// If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t// execute after `delay` ms.\n\t\t\ttimeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n\t\t}\n\t}\n\n\t// Return the wrapper function.\n\treturn wrapper;\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function () {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function get() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar global = __webpack_require__(0);\n\n/**\n * `requestAnimationFrame()`\n */\n\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\n\nvar prev = +new Date();\nfunction fallback(fn) {\n var curr = +new Date();\n var ms = Math.max(0, 16 - (curr - prev));\n var req = setTimeout(fn, ms);\n return prev = curr, req;\n}\n\n/**\n * `cancelAnimationFrame()`\n */\n\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\n\nif (Function.prototype.bind) {\n request = request.bind(global);\n cancel = cancel.bind(global);\n}\n\nexports = module.exports = request;\nexports.cancel = cancel;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2016 Yahoo 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\n\nvar merge = __webpack_require__(1),\n Row = __webpack_require__(11);\n\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\nfunction createNewRow(layoutConfig, layoutData) {\n\n\tvar isBreakoutRow;\n\n\t// Work out if this is a full width breakout row\n\tif (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n\t\tif ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n\t\t\tisBreakoutRow = true;\n\t\t}\n\t}\n\n\treturn new Row({\n\t\ttop: layoutData._containerHeight,\n\t\tleft: layoutConfig.containerPadding.left,\n\t\twidth: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n\t\tspacing: layoutConfig.boxSpacing.horizontal,\n\t\ttargetRowHeight: layoutConfig.targetRowHeight,\n\t\ttargetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n\t\tedgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n\t\tedgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n\t\trightToLeft: false,\n\t\tisBreakoutRow: isBreakoutRow,\n\t\twidowLayoutStyle: layoutConfig.widowLayoutStyle\n\t});\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\nfunction addRow(layoutConfig, layoutData, row) {\n\n\tlayoutData._rows.push(row);\n\tlayoutData._layoutItems = layoutData._layoutItems.concat(row.getItems());\n\n\t// Increment the container height\n\tlayoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n\n\treturn row.items;\n}\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\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n\n\tvar laidOutItems = [],\n\t itemAdded,\n\t currentRow,\n\t nextToLastRowHeight;\n\n\t// Apply forced aspect ratio if specified, and set a flag.\n\tif (layoutConfig.forceAspectRatio) {\n\t\titemLayoutData.forEach(function (itemData) {\n\t\t\titemData.forcedAspectRatio = true;\n\t\t\titemData.aspectRatio = layoutConfig.forceAspectRatio;\n\t\t});\n\t}\n\n\t// Loop through the items\n\titemLayoutData.some(function (itemData, i) {\n\n\t\tif (isNaN(itemData.aspectRatio)) {\n\t\t\tthrow new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n\t\t}\n\n\t\t// If not currently building up a row, make a new one.\n\t\tif (!currentRow) {\n\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\t\t}\n\n\t\t// Attempt to add item to the current row.\n\t\titemAdded = currentRow.addItem(itemData);\n\n\t\tif (currentRow.isLayoutComplete()) {\n\n\t\t\t// Row is filled; add it and start a new one\n\t\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n\t\t\tif (layoutData._rows.length >= layoutConfig.maxNumRows) {\n\t\t\t\tcurrentRow = null;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\n\t\t\t// Item was rejected; add it to its own row\n\t\t\tif (!itemAdded) {\n\n\t\t\t\titemAdded = currentRow.addItem(itemData);\n\n\t\t\t\tif (currentRow.isLayoutComplete()) {\n\n\t\t\t\t\t// If the rejected item fills a row on its own, add the row and start another new one\n\t\t\t\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\t\t\t\t\tif (layoutData._rows.length >= layoutConfig.maxNumRows) {\n\t\t\t\t\t\tcurrentRow = null;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentRow = createNewRow(layoutConfig, layoutData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t// Handle any leftover content (orphans) depending on where they lie\n\t// in this layout update, and in the total content set.\n\tif (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n\n\t\t// Last page of all content or orphan suppression is suppressed; lay out orphans.\n\t\tif (layoutData._rows.length) {\n\n\t\t\t// Only Match previous row's height if it exists and it isn't a breakout row\n\t\t\tif (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n\t\t\t\tnextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n\t\t\t} else {\n\t\t\t\tnextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n\t\t\t}\n\n\t\t\tcurrentRow.forceComplete(false, nextToLastRowHeight);\n\t\t} else {\n\n\t\t\t// ...else use target height if there is no other row height to reference.\n\t\t\tcurrentRow.forceComplete(false);\n\t\t}\n\n\t\tlaidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\t\tlayoutConfig._widowCount = currentRow.getItems().length;\n\t}\n\n\t// We need to clean up the bottom container padding\n\t// First remove the height added for box spacing\n\tlayoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical;\n\t// Then add our bottom container padding\n\tlayoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n\n\treturn {\n\t\tcontainerHeight: layoutData._containerHeight,\n\t\twidowCount: layoutConfig._widowCount,\n\t\tboxes: layoutData._layoutItems\n\t};\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\nmodule.exports = function (input, config) {\n\tvar layoutConfig = {};\n\tvar layoutData = {};\n\n\t// Defaults\n\tvar defaults = {\n\t\tcontainerWidth: 1060,\n\t\tcontainerPadding: 10,\n\t\tboxSpacing: 10,\n\t\ttargetRowHeight: 320,\n\t\ttargetRowHeightTolerance: 0.25,\n\t\tmaxNumRows: Number.POSITIVE_INFINITY,\n\t\tforceAspectRatio: false,\n\t\tshowWidows: true,\n\t\tfullWidthBreakoutRowCadence: false,\n\t\twidowLayoutStyle: 'left'\n\t};\n\n\tvar containerPadding = {};\n\tvar boxSpacing = {};\n\n\tconfig = config || {};\n\n\t// Merge defaults and config passed in\n\tlayoutConfig = merge(defaults, config);\n\n\t// Sort out padding and spacing values\n\tcontainerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n\tcontainerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n\tcontainerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n\tcontainerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n\tboxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n\tboxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n\n\tlayoutConfig.containerPadding = containerPadding;\n\tlayoutConfig.boxSpacing = boxSpacing;\n\n\t// Local\n\tlayoutData._layoutItems = [];\n\tlayoutData._awakeItems = [];\n\tlayoutData._inViewportItems = [];\n\tlayoutData._leadingOrphans = [];\n\tlayoutData._trailingOrphans = [];\n\tlayoutData._containerHeight = layoutConfig.containerPadding.top;\n\tlayoutData._rows = [];\n\tlayoutData._orphans = [];\n\tlayoutConfig._widowCount = 0;\n\n\t// Convert widths and heights to aspect ratios if we need to\n\treturn computeLayout(layoutConfig, layoutData, input.map(function (item) {\n\t\tif (item.width && item.height) {\n\t\t\treturn { aspectRatio: item.width / item.height };\n\t\t} else {\n\t\t\treturn { aspectRatio: item };\n\t\t}\n\t}));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*!\n * Copyright 2016 Yahoo Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\nvar merge = __webpack_require__(1);\n\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\nvar Row = module.exports = function (params) {\n\n\t// Top of row, relative to container\n\tthis.top = params.top;\n\n\t// Left side of row relative to container (equal to container left padding)\n\tthis.left = params.left;\n\n\t// Width of row, not including container padding\n\tthis.width = params.width;\n\n\t// Horizontal spacing between items\n\tthis.spacing = params.spacing;\n\n\t// Row height calculation values\n\tthis.targetRowHeight = params.targetRowHeight;\n\tthis.targetRowHeightTolerance = params.targetRowHeightTolerance;\n\tthis.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n\tthis.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance);\n\n\t// Edge case row height minimum/maximum\n\tthis.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n\tthis.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight;\n\n\t// Widow layout direction\n\tthis.widowLayoutStyle = params.widowLayoutStyle;\n\n\t// Full width breakout rows\n\tthis.isBreakoutRow = params.isBreakoutRow;\n\n\t// Store layout data for each item in row\n\tthis.items = [];\n\n\t// Height remains at 0 until it's been calculated\n\tthis.height = 0;\n};\n\nRow.prototype = {\n\n\t/**\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\n\taddItem: function addItem(itemData) {\n\n\t\tvar newItems = this.items.concat(itemData),\n\n\t\t// Calculate aspect ratios for items only; exclude spacing\n\t\trowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n\t\t newAspectRatio = newItems.reduce(function (sum, item) {\n\t\t\treturn sum + item.aspectRatio;\n\t\t}, 0),\n\t\t targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n\t\t previousRowWidthWithoutSpacing,\n\t\t previousAspectRatio,\n\t\t previousTargetAspectRatio;\n\n\t\t// Handle big full-width breakout photos if we're doing them\n\t\tif (this.isBreakoutRow) {\n\t\t\t// Only do it if there's no other items in this row\n\t\t\tif (this.items.length === 0) {\n\t\t\t\t// Only go full width if this photo is a square or landscape\n\t\t\t\tif (itemData.aspectRatio >= 1) {\n\t\t\t\t\t// Close out the row with a full width photo\n\t\t\t\t\tthis.items.push(itemData);\n\t\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (newAspectRatio < this.minAspectRatio) {\n\n\t\t\t// New aspect ratio is too narrow / scaled row height is too tall.\n\t\t\t// Accept this item and leave row open for more items.\n\n\t\t\tthis.items.push(merge(itemData));\n\t\t\treturn true;\n\t\t} else if (newAspectRatio > this.maxAspectRatio) {\n\n\t\t\t// New aspect ratio is too wide / scaled row height will be too short.\n\t\t\t// Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n\t\t\t// NOTE: Any row that falls into this block will require cropping/padding on individual items.\n\n\t\t\tif (this.items.length === 0) {\n\n\t\t\t\t// When there are no existing items, force acceptance of the new item and complete the layout.\n\t\t\t\t// This is the pano special case.\n\t\t\t\tthis.items.push(merge(itemData));\n\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Calculate width/aspect ratio for row before adding new item\n\t\t\tpreviousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n\t\t\tpreviousAspectRatio = this.items.reduce(function (sum, item) {\n\t\t\t\treturn sum + item.aspectRatio;\n\t\t\t}, 0);\n\t\t\tpreviousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n\t\t\tif (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n\n\t\t\t\t// Row with new item is us farther away from target than row without; complete layout and reject item.\n\t\t\t\tthis.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n\t\t\t\treturn false;\n\t\t\t} else {\n\n\t\t\t\t// Row with new item is us closer to target than row without;\n\t\t\t\t// accept the new item and complete the row layout.\n\t\t\t\tthis.items.push(merge(itemData));\n\t\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// New aspect ratio / scaled row height is within tolerance;\n\t\t\t// accept the new item and complete the row layout.\n\t\t\tthis.items.push(merge(itemData));\n\t\t\tthis.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t/**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n\n\tisLayoutComplete: function isLayoutComplete() {\n\t\treturn this.height > 0;\n\t},\n\n\t/**\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\n\tcompleteLayout: function completeLayout(newHeight, widowLayoutStyle) {\n\n\t\tvar itemWidthSum = this.left,\n\t\t rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n\t\t clampedToNativeRatio,\n\t\t clampedHeight,\n\t\t errorWidthPerItem,\n\t\t roundedCumulativeErrors,\n\t\t singleItemGeometry,\n\t\t centerOffset;\n\n\t\t// Justify unless explicitly specified otherwise.\n\t\tif (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n\t\t\twidowLayoutStyle = 'left';\n\t\t}\n\n\t\t// Clamp row height to edge case minimum/maximum.\n\t\tclampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n\t\tif (newHeight !== clampedHeight) {\n\n\t\t\t// If row height was clamped, the resulting row/item aspect ratio will be off,\n\t\t\t// so force it to fit the width (recalculate aspectRatio to match clamped height).\n\t\t\t// NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n\t\t\tthis.height = clampedHeight;\n\t\t\tclampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n\t\t} else {\n\n\t\t\t// If not clamped, leave ratio at 1.0.\n\t\t\tthis.height = newHeight;\n\t\t\tclampedToNativeRatio = 1.0;\n\t\t}\n\n\t\t// Compute item geometry based on newHeight.\n\t\tthis.items.forEach(function (item) {\n\n\t\t\titem.top = this.top;\n\t\t\titem.width = item.aspectRatio * this.height * clampedToNativeRatio;\n\t\t\titem.height = this.height;\n\n\t\t\t// Left-to-right.\n\t\t\t// TODO right to left\n\t\t\t// item.left = this.width - itemWidthSum - item.width;\n\t\t\titem.left = itemWidthSum;\n\n\t\t\t// Increment width.\n\t\t\titemWidthSum += item.width + this.spacing;\n\t\t}, this);\n\n\t\t// If specified, ensure items fill row and distribute error\n\t\t// caused by rounding width and height across all items.\n\t\tif (widowLayoutStyle === 'justify') {\n\n\t\t\titemWidthSum -= this.spacing + this.left;\n\n\t\t\terrorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n\t\t\troundedCumulativeErrors = this.items.map(function (item, i) {\n\t\t\t\treturn Math.round((i + 1) * errorWidthPerItem);\n\t\t\t});\n\n\t\t\tif (this.items.length === 1) {\n\n\t\t\t\t// For rows with only one item, adjust item width to fill row.\n\t\t\t\tsingleItemGeometry = this.items[0];\n\t\t\t\tsingleItemGeometry.width -= Math.round(errorWidthPerItem);\n\t\t\t} else {\n\n\t\t\t\t// For rows with multiple items, adjust item width and shift items to fill the row,\n\t\t\t\t// while maintaining equal spacing between items in the row.\n\t\t\t\tthis.items.forEach(function (item, i) {\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\titem.left -= roundedCumulativeErrors[i - 1];\n\t\t\t\t\t\titem.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.width -= roundedCumulativeErrors[i];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (widowLayoutStyle === 'center') {\n\n\t\t\t// Center widows\n\t\t\tcenterOffset = (this.width - itemWidthSum) / 2;\n\n\t\t\tthis.items.forEach(function (item) {\n\t\t\t\titem.left += centerOffset + this.spacing;\n\t\t\t}, this);\n\t\t}\n\t},\n\n\t/**\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\n\tforceComplete: function forceComplete(fitToWidth, rowHeight) {\n\n\t\t// TODO Handle fitting to width\n\t\t// var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n\t\t// \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n\t\t// \t\treturn sum + item.aspectRatio;\n\t\t// \t}, 0);\n\n\t\tif (typeof rowHeight === 'number') {\n\n\t\t\tthis.completeLayout(rowHeight, this.widowLayoutStyle);\n\t\t} else {\n\n\t\t\t// Complete using target row height.\n\t\t\tthis.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n\t\t}\n\t},\n\n\t/**\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\n\tgetItems: function getItems() {\n\t\treturn this.items;\n\t}\n\n};\n\n/***/ })\n/******/ ]);"]}
assets/vendor/lazysizes/lazysizes.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /*! lazysizes - v4.0.3 */
2
+ !function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}(window,function(a,b){"use strict";if(b.getElementsByClassName){var c,d,e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("CustomEvent");return e||(e={}),e.instance=c,h.initCustomEvent(d,!f,!g,e),a.dispatchEvent(h),h},w=function(b,c){var e;!g&&(e=a.picturefill||d.pf)?e({reevaluate:!0,elements:[b]}):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,e=d.throttleDelay,g=d.ricTimeout,h=function(){b=!1,c=f.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==d.ricTimeout&&(g=d.ricTimeout)}:A(function(){k(h)},!0);return function(a){var d;(a=a===!0)&&(g=33),b||(b=!0,d=e-(f.now()-c),0>d&&(d=0),a||9>d?i():k(i,d))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;d>a?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}};!function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b]);a.lazySizesConfig=d,k(function(){d.init&&F()})}();var D=function(){var g,l,m,o,p,y,D,F,G,H,I,J,K,L,M=/^img$/i,N=/^iframe$/i,O="onscroll"in a&&!/glebot/.test(navigator.userAgent),P=0,Q=0,R=0,S=-1,T=function(a){R--,a&&a.target&&u(a.target,T),(!a||0>R||!a.target)&&(R=0)},U=function(a,c){var d,f=a,g="hidden"==x(b.body,"visibility")||"hidden"!=x(a,"visibility");for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)g=(x(f,"opacity")||1)>0,g&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},V=function(){var a,f,h,j,k,m,n,p,q,r=c.elements;if((o=d.loadMode)&&8>R&&(a=r.length)){f=0,S++,null==K&&("expand"in d||(d.expand=e.clientHeight>500&&e.clientWidth>500?500:370),J=d.expand,K=J*d.expFactor),K>Q&&1>R&&S>2&&o>2&&!b.hidden?(Q=K,S=0):Q=o>1&&S>1&&6>R?J:P;for(;a>f;f++)if(r[f]&&!r[f]._lazyRace)if(O)if((p=r[f][i]("data-expand"))&&(m=1*p)||(m=Q),q!==m&&(y=innerWidth+m*L,D=innerHeight+m,n=-1*m,q=m),h=r[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*L&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||"hidden"!=x(r[f],"visibility"))&&(l&&3>R&&!p&&(3>o||4>S)||U(r[f],m))){if(ba(r[f]),k=!0,R>9)break}else!k&&l&&!j&&4>R&&4>S&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=r[f][i](d.sizesAttr)))&&(j=g[0]||r[f]);else ba(r[f]);j&&!k&&ba(j)}},W=B(V),X=function(a){s(a.target,d.loadedClass),t(a.target,d.loadingClass),u(a.target,Z),v(a.target,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,e,f){var g,h,j,l,o,p;(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},p&&(u(a,T,!0),clearTimeout(m),m=k(T,2500),s(a,d.loadingClass),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(N.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){(!p||a.complete&&a.naturalWidth>1)&&(p?T(o):R--,X(o))},!0)}),ba=function(a){var b,c=M.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass)||!r(a,d.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,R++,aa(a,b,f,e,c))},ca=function(){if(!l){if(f.now()-p<999)return void k(ca,999);var a=C(function(){d.loadMode=3,W()});l=!0,d.loadMode=3,W(),j("scroll",function(){3==d.loadMode&&(d.loadMode=2),a()},!0)}};return{_:function(){p=f.now(),c.elements=b.getElementsByClassName(d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),L=d.hFac,j("scroll",W,!0),j("resize",W,!0),a.MutationObserver?new MutationObserver(W).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",W,!0),e[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ca():(j("load",ca),b[h]("DOMContentLoaded",W),k(ca,2e4)),c.elements.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;g>f;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width,d&&d!==a._lazysizesWidth&&c(a,f,e,d)))},f=function(){var b,c=a.length;if(c)for(b=0;c>b;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){F.i||(F.i=!0,E._(),D._())};return c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}});
class-visual-portfolio.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Visual Portfolio
4
  * Description: Portfolio post type with visual editor
5
- * Version: 1.5.0
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
@@ -124,6 +124,7 @@ class Visual_Portfolio {
124
 
125
  // template_redirect is used instead of wp_enqueue_scripts just because some plugins use it and included an old isotope plugin. So, it was conflicted.
126
  add_action( 'template_redirect', array( $this, 'register_scripts' ), 9 );
 
127
  }
128
 
129
  /**
@@ -156,7 +157,7 @@ class Visual_Portfolio {
156
 
157
  // fjGallery.
158
  if ( apply_filters( 'vpf_enqueue_plugin_flickr_justified_gallery', true ) ) {
159
- wp_register_script( 'flickr-justified-gallery', visual_portfolio()->plugin_url . 'assets/vendor/flickr-justified-gallery/fjGallery.min.js', array( 'jquery' ), '1.0.1', true );
160
 
161
  $vp_deps[] = 'flickr-justified-gallery';
162
  }
@@ -197,9 +198,16 @@ class Visual_Portfolio {
197
  $vp_deps[] = 'font-awesome-v4-shims';
198
  }
199
 
 
 
 
 
 
 
 
200
  // Visual Portfolio.
201
- wp_register_script( 'visual-portfolio', visual_portfolio()->plugin_url . 'assets/js/script.min.js', $vp_deps, '1.5.0', true );
202
- wp_register_style( 'visual-portfolio', visual_portfolio()->plugin_url . 'assets/css/style.min.css', $vp_style_deps, '1.5.0' );
203
 
204
  // Visual Portfolio data.
205
  $data_init = array(
@@ -228,6 +236,13 @@ class Visual_Portfolio {
228
  wp_localize_script( 'visual-portfolio', 'VPData', $data_init );
229
  }
230
 
 
 
 
 
 
 
 
231
  /**
232
  * Init variables
233
  */
@@ -275,6 +290,7 @@ class Visual_Portfolio {
275
  */
276
  private function include_dependencies() {
277
  require_once( $this->plugin_path . 'classes/class-extend.php' );
 
278
  require_once( $this->plugin_path . 'classes/class-settings.php' );
279
  require_once( $this->plugin_path . 'classes/class-rest.php' );
280
  require_once( $this->plugin_path . 'classes/class-get-portfolio.php' );
@@ -328,7 +344,7 @@ class Visual_Portfolio {
328
 
329
  if ( file_exists( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
330
  // Child Theme (or just theme).
331
- $template = trailingslashit( get_stylesheet_directory_uri() ) . '/visual-portfolio/' . $template_name . '.css';
332
  } else if ( file_exists( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
333
  // Parent Theme (if parent exists).
334
  $template = trailingslashit( get_template_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
2
  /**
3
  * Plugin Name: Visual Portfolio
4
  * Description: Portfolio post type with visual editor
5
+ * Version: 1.6.0
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
124
 
125
  // template_redirect is used instead of wp_enqueue_scripts just because some plugins use it and included an old isotope plugin. So, it was conflicted.
126
  add_action( 'template_redirect', array( $this, 'register_scripts' ), 9 );
127
+ add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ), 9 );
128
  }
129
 
130
  /**
157
 
158
  // fjGallery.
159
  if ( apply_filters( 'vpf_enqueue_plugin_flickr_justified_gallery', true ) ) {
160
+ wp_register_script( 'flickr-justified-gallery', visual_portfolio()->plugin_url . 'assets/vendor/flickr-justified-gallery/fjGallery.min.js', array( 'jquery' ), '1.0.2', true );
161
 
162
  $vp_deps[] = 'flickr-justified-gallery';
163
  }
198
  $vp_deps[] = 'font-awesome-v4-shims';
199
  }
200
 
201
+ // LazySizes.
202
+ if ( apply_filters( 'vpf_enqueue_plugin_lazysizes', true ) ) {
203
+ wp_register_script( 'lazysizes', visual_portfolio()->plugin_url . 'assets/vendor/lazysizes/lazysizes.min.js', array( 'jquery' ), '4.0.4', true );
204
+
205
+ $vp_deps[] = 'lazysizes';
206
+ }
207
+
208
  // Visual Portfolio.
209
+ wp_register_script( 'visual-portfolio', visual_portfolio()->plugin_url . 'assets/js/script.min.js', $vp_deps, '1.6.0', true );
210
+ wp_register_style( 'visual-portfolio', visual_portfolio()->plugin_url . 'assets/css/style.min.css', $vp_style_deps, '1.6.0' );
211
 
212
  // Visual Portfolio data.
213
  $data_init = array(
236
  wp_localize_script( 'visual-portfolio', 'VPData', $data_init );
237
  }
238
 
239
+ /**
240
+ * Enqueue main style to prevent first-page load layout issues if the page contains portfolio.
241
+ */
242
+ public function wp_enqueue_scripts() {
243
+ wp_enqueue_style( 'visual-portfolio' );
244
+ }
245
+
246
  /**
247
  * Init variables
248
  */
290
  */
291
  private function include_dependencies() {
292
  require_once( $this->plugin_path . 'classes/class-extend.php' );
293
+ require_once( $this->plugin_path . 'classes/class-images.php' );
294
  require_once( $this->plugin_path . 'classes/class-settings.php' );
295
  require_once( $this->plugin_path . 'classes/class-rest.php' );
296
  require_once( $this->plugin_path . 'classes/class-get-portfolio.php' );
344
 
345
  if ( file_exists( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
346
  // Child Theme (or just theme).
347
+ $template = trailingslashit( get_stylesheet_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
348
  } else if ( file_exists( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
349
  // Parent Theme (if parent exists).
350
  $template = trailingslashit( get_template_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
classes/class-admin.php CHANGED
@@ -149,8 +149,8 @@ class Visual_Portfolio_Admin {
149
  wp_enqueue_script( 'tooltip.js', visual_portfolio()->plugin_url . 'assets/vendor/popper.js/tooltip.min.js', array( 'popper.js' ), '1.14.3', true );
150
  wp_enqueue_style( 'popper.js', visual_portfolio()->plugin_url . 'assets/vendor/popper.js/popper.css', '', '1.14.3' );
151
 
152
- wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery' ), '1.5.0', true );
153
- wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', '', '1.5.0' );
154
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
155
  }
156
 
@@ -646,14 +646,18 @@ class Visual_Portfolio_Admin {
646
  ),
647
  array(
648
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-3.svg',
649
- 'value' => '2|1,1.2|1,1.2|1,0.67|1,0.67|',
650
  ),
651
  array(
652
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-4.svg',
653
- 'value' => '2|1,1.2|1,0.67|1,1.2|1,0.67|',
654
  ),
655
  array(
656
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-5.svg',
 
 
 
 
657
  'value' => '2|1,0.67|1,1|1,1|1,1|1,1|1,0.67|',
658
  ),
659
  array(
@@ -666,38 +670,54 @@ class Visual_Portfolio_Admin {
666
  ),
667
  array(
668
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-3.svg',
669
- 'value' => '3|1,1|1,1|1,1|1,1.3|1,1.3|1,1.3|',
670
  ),
671
  array(
672
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-4.svg',
673
- 'value' => '3|1,1|1,1|1,2|1,1|1,1|1,1|1,1|1,1|',
674
  ),
675
  array(
676
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-5.svg',
677
- 'value' => '3|1,2|1,1|1,1|1,1|1,1|1,1|1,1|1,1|',
678
  ),
679
  array(
680
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-6.svg',
681
- 'value' => '3|1,1|1,2|1,1|1,1|1,1|1,1|1,1|1,1|',
682
  ),
683
  array(
684
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-7.svg',
685
- 'value' => '3|1,1|1,2|1,1|1,1|1,1|1,1|2,0.5|',
686
  ),
687
  array(
688
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-8.svg',
689
- 'value' => '3|1,0.8|1,1.6|1,0.8|1,0.8|1,1.6|1,1.6|1,0.8|1,0.8|1,0.8|',
690
  ),
691
  array(
692
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-9.svg',
693
- 'value' => '3|1,0.8|1,0.8|1,1.6|1,0.8|1,0.8|1,0.8|1,1.6|1,1.6|1,0.8|',
694
  ),
695
  array(
696
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-10.svg',
697
- 'value' => '3|1,1|2,1|1,1|2,0.5|1,1|',
698
  ),
699
  array(
700
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-11.svg',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
701
  'value' => '3|1,2|2,0.5|1,1|1,2|2,0.5|',
702
  ),
703
  array(
@@ -710,10 +730,14 @@ class Visual_Portfolio_Admin {
710
  ),
711
  array(
712
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-4-3.svg',
713
- 'value' => '4|1,1|1,1|2,1|1,1|1,1|2,1|1,1|1,1|1,1|1,1|',
714
  ),
715
  array(
716
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-4-4.svg',
 
 
 
 
717
  'value' => '4|2,1|2,0.5|2,0.5|2,0.5|2,1|2,0.5|',
718
  ),
719
  ),
@@ -1064,6 +1088,12 @@ class Visual_Portfolio_Admin {
1064
  'name' => 'bg_color',
1065
  'default' => '#212125',
1066
  'alpha' => true,
 
 
 
 
 
 
1067
  ),
1068
  array(
1069
  'type' => 'color',
@@ -1071,6 +1101,12 @@ class Visual_Portfolio_Admin {
1071
  'name' => 'text_color',
1072
  'default' => '#fff',
1073
  'alpha' => true,
 
 
 
 
 
 
1074
  ),
1075
  ),
1076
  ),
@@ -1093,6 +1129,12 @@ class Visual_Portfolio_Admin {
1093
  'name' => 'bg_color',
1094
  'default' => '#fff',
1095
  'alpha' => true,
 
 
 
 
 
 
1096
  ),
1097
  array(
1098
  'type' => 'color',
@@ -1100,6 +1142,12 @@ class Visual_Portfolio_Admin {
1100
  'name' => 'text_color',
1101
  'default' => '#000',
1102
  'alpha' => true,
 
 
 
 
 
 
1103
  ),
1104
  ),
1105
  ),
@@ -1122,6 +1170,12 @@ class Visual_Portfolio_Admin {
1122
  'name' => 'bg_color',
1123
  'default' => 'rgba(0, 0, 0, 0.85)',
1124
  'alpha' => true,
 
 
 
 
 
 
1125
  ),
1126
  array(
1127
  'type' => 'color',
@@ -1129,6 +1183,12 @@ class Visual_Portfolio_Admin {
1129
  'name' => 'text_color',
1130
  'default' => '#fff',
1131
  'alpha' => true,
 
 
 
 
 
 
1132
  ),
1133
  ),
1134
  ),
@@ -1347,7 +1407,7 @@ class Visual_Portfolio_Admin {
1347
  ),
1348
  ), Visual_Portfolio_Extend::filters() );
1349
 
1350
- // Layouts selector.
1351
  $filters_selector = array();
1352
  foreach ( $filters as $name => $filter ) {
1353
  $filters_selector[ $name ] = $filter['title'];
@@ -1369,7 +1429,7 @@ class Visual_Portfolio_Admin {
1369
  }
1370
  foreach ( $filter['controls'] as $field ) {
1371
  $field['category'] = 'filter';
1372
- $field['name'] = 'vp_' . $name . '_' . $field['name'];
1373
 
1374
  // condition names prefix fix.
1375
  if ( isset( $field['condition'] ) ) {
@@ -1434,18 +1494,85 @@ class Visual_Portfolio_Admin {
1434
  /**
1435
  * Pagination
1436
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1437
  Visual_Portfolio_Controls::register(
1438
  array(
1439
  'category' => 'pagination',
 
1440
  'type' => 'select2',
1441
  'name' => 'vp_pagination',
1442
  'default' => 'load-more',
1443
  'options' => array(
1444
- 'false' => esc_html__( 'Disabled', 'visual-portfolio' ),
1445
  'paged' => esc_html__( 'Paged', 'visual-portfolio' ),
1446
  'load-more' => esc_html__( 'Load More', 'visual-portfolio' ),
1447
  'infinite' => esc_html__( 'Infinite', 'visual-portfolio' ),
1448
  ),
 
 
 
 
 
 
 
1449
  )
1450
  );
1451
  Visual_Portfolio_Controls::register(
@@ -1455,6 +1582,11 @@ class Visual_Portfolio_Admin {
1455
  'description' => esc_html__( 'Note: you will see the "Load More" pagination in the preview. "Infinite" pagination will be visible on the site.', 'visual-portfolio' ),
1456
  'name' => 'vp_pagination_infinite_notice',
1457
  'condition' => array(
 
 
 
 
 
1458
  array(
1459
  'control' => 'vp_pagination',
1460
  'operator' => '==',
@@ -1476,6 +1608,11 @@ class Visual_Portfolio_Admin {
1476
  'right' => esc_html__( 'Right', 'visual-portfolio' ),
1477
  ),
1478
  'condition' => array(
 
 
 
 
 
1479
  array(
1480
  'control' => 'vp_pagination',
1481
  'operator' => '!=',
@@ -1492,6 +1629,11 @@ class Visual_Portfolio_Admin {
1492
  'name' => 'vp_pagination_paged__show_arrows',
1493
  'default' => true,
1494
  'condition' => array(
 
 
 
 
 
1495
  array(
1496
  'control' => 'vp_pagination',
1497
  'value' => 'paged',
@@ -1499,6 +1641,56 @@ class Visual_Portfolio_Admin {
1499
  ),
1500
  )
1501
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1502
  Visual_Portfolio_Controls::register(
1503
  array(
1504
  'category' => 'pagination',
@@ -1507,6 +1699,11 @@ class Visual_Portfolio_Admin {
1507
  'name' => 'vp_pagination_paged__show_numbers',
1508
  'default' => true,
1509
  'condition' => array(
 
 
 
 
 
1510
  array(
1511
  'control' => 'vp_pagination',
1512
  'value' => 'paged',
@@ -1529,6 +1726,20 @@ class Visual_Portfolio_Admin {
1529
  )
1530
  );
1531
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1532
  /**
1533
  * Content Source
1534
  */
@@ -1838,15 +2049,18 @@ class Visual_Portfolio_Admin {
1838
 
1839
  Visual_Portfolio_Controls::get(
1840
  array(
1841
- 'type' => 'text',
1842
- 'label' => esc_html__( 'Shortcode', 'visual-portfolio' ),
1843
  'description' => esc_html__( 'Place the shortcode where you want to show the portfolio list.', 'visual-portfolio' ),
1844
- 'name' => 'vp_list_shortcode',
1845
- 'value' => $post->ID ? '[visual_portfolio id="' . $post->ID . '" class=""]' : '',
1846
  'readonly' => true,
1847
  )
1848
  );
1849
 
 
 
 
1850
  ?>
1851
 
1852
  <style>
@@ -1854,6 +2068,7 @@ class Visual_Portfolio_Admin {
1854
  margin-top: -21px;
1855
  border-top: none;
1856
  }
 
1857
  #post-body-content,
1858
  #submitdiv .handlediv,
1859
  #submitdiv .hndle,
@@ -2067,7 +2282,7 @@ class Visual_Portfolio_Admin {
2067
 
2068
  foreach ( $meta as $item ) {
2069
  if ( isset( $_POST[ $item ] ) ) {
2070
- if ( 'vp_custom_css' === $item ) {
2071
  $result = wp_kses( wp_unslash( $_POST[ $item ] ), array( '\'', '\"' ) );
2072
  } else {
2073
  $result = sanitize_text_field( wp_unslash( $_POST[ $item ] ) );
@@ -2240,7 +2455,7 @@ class Visual_Portfolio_Admin {
2240
  'post_type' => get_post_type( get_the_ID() ),
2241
  );
2242
  }
2243
- wp_reset_postdata();
2244
  }
2245
 
2246
  echo json_encode( $result );
149
  wp_enqueue_script( 'tooltip.js', visual_portfolio()->plugin_url . 'assets/vendor/popper.js/tooltip.min.js', array( 'popper.js' ), '1.14.3', true );
150
  wp_enqueue_style( 'popper.js', visual_portfolio()->plugin_url . 'assets/vendor/popper.js/popper.css', '', '1.14.3' );
151
 
152
+ wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery' ), '1.6.0', true );
153
+ wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', '', '1.6.0' );
154
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
155
  }
156
 
646
  ),
647
  array(
648
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-3.svg',
649
+ 'value' => '2|1,1.34|',
650
  ),
651
  array(
652
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-4.svg',
653
+ 'value' => '2|1,1.2|1,1.2|1,0.67|1,0.67|',
654
  ),
655
  array(
656
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-5.svg',
657
+ 'value' => '2|1,1.2|1,0.67|1,1.2|1,0.67|',
658
+ ),
659
+ array(
660
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-2-6.svg',
661
  'value' => '2|1,0.67|1,1|1,1|1,1|1,1|1,0.67|',
662
  ),
663
  array(
670
  ),
671
  array(
672
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-3.svg',
673
+ 'value' => '3|1,1.3|',
674
  ),
675
  array(
676
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-4.svg',
677
+ 'value' => '3|1,1|1,1|1,1|1,1.3|1,1.3|1,1.3|',
678
  ),
679
  array(
680
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-5.svg',
681
+ 'value' => '3|1,1|1,1|1,2|1,1|1,1|1,1|1,1|1,1|',
682
  ),
683
  array(
684
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-6.svg',
685
+ 'value' => '3|1,2|1,1|1,1|1,1|1,1|1,1|1,1|1,1|',
686
  ),
687
  array(
688
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-7.svg',
689
+ 'value' => '3|1,1|1,2|1,1|1,1|1,1|1,1|1,1|1,1|',
690
  ),
691
  array(
692
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-8.svg',
693
+ 'value' => '3|1,1|1,2|1,1|1,1|1,1|1,1|2,0.5|',
694
  ),
695
  array(
696
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-9.svg',
697
+ 'value' => '3|1,0.8|1,1.6|1,0.8|1,0.8|1,1.6|1,0.8|1,0.8|1,0.8|1,0.8|1,0.8|',
698
  ),
699
  array(
700
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-10.svg',
701
+ 'value' => '3|1,0.8|1,1.6|1,0.8|1,0.8|1,1.6|1,1.6|1,0.8|1,0.8|1,0.8|',
702
  ),
703
  array(
704
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-11.svg',
705
+ 'value' => '3|1,0.8|1,0.8|1,1.6|1,0.8|1,0.8|1,1.6|1,1.6|1,0.8|1,0.8|',
706
+ ),
707
+ array(
708
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-12.svg',
709
+ 'value' => '3|1,0.8|1,0.8|1,1.6|1,0.8|1,0.8|1,0.8|1,1.6|1,1.6|1,0.8|',
710
+ ),
711
+ array(
712
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-13.svg',
713
+ 'value' => '3|1,1|2,1|1,1|2,0.5|1,1|',
714
+ ),
715
+ array(
716
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-14.svg',
717
+ 'value' => '3|1,1|2,1|1,1|1,1|1,1|1,1|2,0.5|1,1|',
718
+ ),
719
+ array(
720
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-3-15.svg',
721
  'value' => '3|1,2|2,0.5|1,1|1,2|2,0.5|',
722
  ),
723
  array(
730
  ),
731
  array(
732
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-4-3.svg',
733
+ 'value' => '4|1,0.8|1,1|1,0.8|1,1|1,1|1,1|1,0.8|1,0.8|',
734
  ),
735
  array(
736
  'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-4-4.svg',
737
+ 'value' => '4|1,1|1,1|2,1|1,1|1,1|2,1|1,1|1,1|1,1|1,1|',
738
+ ),
739
+ array(
740
+ 'url' => visual_portfolio()->plugin_url . 'assets/admin/images/layouts/tiles-4-5.svg',
741
  'value' => '4|2,1|2,0.5|2,0.5|2,0.5|2,1|2,0.5|',
742
  ),
743
  ),
1088
  'name' => 'bg_color',
1089
  'default' => '#212125',
1090
  'alpha' => true,
1091
+ 'style' => array(
1092
+ array(
1093
+ 'element' => '.vp-portfolio__items-style-fly .vp-portfolio__item-overlay',
1094
+ 'property' => 'background-color',
1095
+ ),
1096
+ ),
1097
  ),
1098
  array(
1099
  'type' => 'color',
1101
  'name' => 'text_color',
1102
  'default' => '#fff',
1103
  'alpha' => true,
1104
+ 'style' => array(
1105
+ array(
1106
+ 'element' => '.vp-portfolio__items-style-fly .vp-portfolio__item-overlay',
1107
+ 'property' => 'color',
1108
+ ),
1109
+ ),
1110
  ),
1111
  ),
1112
  ),
1129
  'name' => 'bg_color',
1130
  'default' => '#fff',
1131
  'alpha' => true,
1132
+ 'style' => array(
1133
+ array(
1134
+ 'element' => '.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay',
1135
+ 'property' => 'background-color',
1136
+ ),
1137
+ ),
1138
  ),
1139
  array(
1140
  'type' => 'color',
1142
  'name' => 'text_color',
1143
  'default' => '#000',
1144
  'alpha' => true,
1145
+ 'style' => array(
1146
+ array(
1147
+ 'element' => '.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay',
1148
+ 'property' => 'color',
1149
+ ),
1150
+ ),
1151
  ),
1152
  ),
1153
  ),
1170
  'name' => 'bg_color',
1171
  'default' => 'rgba(0, 0, 0, 0.85)',
1172
  'alpha' => true,
1173
+ 'style' => array(
1174
+ array(
1175
+ 'element' => '.vp-portfolio__items-style-fade .vp-portfolio__item-overlay',
1176
+ 'property' => 'background-color',
1177
+ ),
1178
+ ),
1179
  ),
1180
  array(
1181
  'type' => 'color',
1183
  'name' => 'text_color',
1184
  'default' => '#fff',
1185
  'alpha' => true,
1186
+ 'style' => array(
1187
+ array(
1188
+ 'element' => '.vp-portfolio__items-style-fade .vp-portfolio__item-overlay',
1189
+ 'property' => 'color',
1190
+ ),
1191
+ ),
1192
  ),
1193
  ),
1194
  ),
1407
  ),
1408
  ), Visual_Portfolio_Extend::filters() );
1409
 
1410
+ // Filters selector.
1411
  $filters_selector = array();
1412
  foreach ( $filters as $name => $filter ) {
1413
  $filters_selector[ $name ] = $filter['title'];
1429
  }
1430
  foreach ( $filter['controls'] as $field ) {
1431
  $field['category'] = 'filter';
1432
+ $field['name'] = 'vp_filter_' . $name . '__' . $field['name'];
1433
 
1434
  // condition names prefix fix.
1435
  if ( isset( $field['condition'] ) ) {
1494
  /**
1495
  * Pagination
1496
  */
1497
+ $pagination = array_merge( array(
1498
+ // False.
1499
+ 'false' => array(
1500
+ 'title' => esc_html__( 'Disabled', 'visual-portfolio' ),
1501
+ 'controls' => array(),
1502
+ ),
1503
+
1504
+ // Default.
1505
+ 'default' => array(
1506
+ 'title' => esc_html__( 'Default', 'visual-portfolio' ),
1507
+ 'controls' => array(),
1508
+ ),
1509
+ ), Visual_Portfolio_Extend::pagination() );
1510
+
1511
+ // Pagination selector.
1512
+ $pagination_selector = array();
1513
+ foreach ( $pagination as $name => $pagin ) {
1514
+ $pagination_selector[ $name ] = $pagin['title'];
1515
+ }
1516
+ Visual_Portfolio_Controls::register(
1517
+ array(
1518
+ 'category' => 'pagination',
1519
+ 'type' => 'select2',
1520
+ 'name' => 'vp_pagination_style',
1521
+ 'default' => 'default',
1522
+ 'options' => $pagination_selector,
1523
+ )
1524
+ );
1525
+
1526
+ // pagination options.
1527
+ foreach ( $pagination as $name => $pagin ) {
1528
+ if ( ! isset( $pagin['controls'] ) ) {
1529
+ continue;
1530
+ }
1531
+ foreach ( $pagin['controls'] as $field ) {
1532
+ $field['category'] = 'pagination';
1533
+ $field['name'] = 'vp_pagination_' . $name . '__' . $field['name'];
1534
+
1535
+ // condition names prefix fix.
1536
+ if ( isset( $field['condition'] ) ) {
1537
+ foreach ( $field['condition'] as $k => $cond ) {
1538
+ if ( isset( $cond['control'] ) ) {
1539
+ $field['condition'][ $k ]['control'] = 'vp_' . $name . '_' . $cond['control'];
1540
+ }
1541
+ }
1542
+ }
1543
+
1544
+ $field['condition'] = array_merge(
1545
+ isset( $field['condition'] ) ? $field['condition'] : array(),
1546
+ array(
1547
+ array(
1548
+ 'control' => 'vp_pagination_style',
1549
+ 'value' => $name,
1550
+ ),
1551
+ )
1552
+ );
1553
+ Visual_Portfolio_Controls::register( $field );
1554
+ }
1555
+ }
1556
+
1557
  Visual_Portfolio_Controls::register(
1558
  array(
1559
  'category' => 'pagination',
1560
+ 'label' => esc_html__( 'Type', 'visual-portfolio' ),
1561
  'type' => 'select2',
1562
  'name' => 'vp_pagination',
1563
  'default' => 'load-more',
1564
  'options' => array(
 
1565
  'paged' => esc_html__( 'Paged', 'visual-portfolio' ),
1566
  'load-more' => esc_html__( 'Load More', 'visual-portfolio' ),
1567
  'infinite' => esc_html__( 'Infinite', 'visual-portfolio' ),
1568
  ),
1569
+ 'condition' => array(
1570
+ array(
1571
+ 'control' => 'vp_pagination_style',
1572
+ 'operator' => '!=',
1573
+ 'value' => 'false',
1574
+ ),
1575
+ ),
1576
  )
1577
  );
1578
  Visual_Portfolio_Controls::register(
1582
  'description' => esc_html__( 'Note: you will see the "Load More" pagination in the preview. "Infinite" pagination will be visible on the site.', 'visual-portfolio' ),
1583
  'name' => 'vp_pagination_infinite_notice',
1584
  'condition' => array(
1585
+ array(
1586
+ 'control' => 'vp_pagination_style',
1587
+ 'operator' => '!=',
1588
+ 'value' => 'false',
1589
+ ),
1590
  array(
1591
  'control' => 'vp_pagination',
1592
  'operator' => '==',
1608
  'right' => esc_html__( 'Right', 'visual-portfolio' ),
1609
  ),
1610
  'condition' => array(
1611
+ array(
1612
+ 'control' => 'vp_pagination_style',
1613
+ 'operator' => '!=',
1614
+ 'value' => 'false',
1615
+ ),
1616
  array(
1617
  'control' => 'vp_pagination',
1618
  'operator' => '!=',
1629
  'name' => 'vp_pagination_paged__show_arrows',
1630
  'default' => true,
1631
  'condition' => array(
1632
+ array(
1633
+ 'control' => 'vp_pagination_style',
1634
+ 'operator' => '!=',
1635
+ 'value' => 'false',
1636
+ ),
1637
  array(
1638
  'control' => 'vp_pagination',
1639
  'value' => 'paged',
1641
  ),
1642
  )
1643
  );
1644
+ Visual_Portfolio_Controls::register(
1645
+ array(
1646
+ 'category' => 'pagination',
1647
+ 'type' => 'text',
1648
+ 'name' => 'vp_pagination_paged__arrows_icon_prev',
1649
+ 'default' => 'fas fa-angle-left',
1650
+ 'placeholder' => esc_attr__( 'Prev arrow icon', 'visual-portfolio' ),
1651
+ 'hint' => esc_attr__( 'Prev arrow icon', 'visual-portfolio' ),
1652
+ 'hint_place' => 'left',
1653
+ 'condition' => array(
1654
+ array(
1655
+ 'control' => 'vp_pagination_style',
1656
+ 'operator' => '!=',
1657
+ 'value' => 'false',
1658
+ ),
1659
+ array(
1660
+ 'control' => 'vp_pagination',
1661
+ 'value' => 'paged',
1662
+ ),
1663
+ array(
1664
+ 'control' => 'vp_pagination_paged__show_arrows',
1665
+ ),
1666
+ ),
1667
+ )
1668
+ );
1669
+ Visual_Portfolio_Controls::register(
1670
+ array(
1671
+ 'category' => 'pagination',
1672
+ 'type' => 'text',
1673
+ 'name' => 'vp_pagination_paged__arrows_icon_next',
1674
+ 'default' => 'fas fa-angle-right',
1675
+ 'placeholder' => esc_attr__( 'Next arrow icon', 'visual-portfolio' ),
1676
+ 'hint' => esc_attr__( 'Next arrow icon', 'visual-portfolio' ),
1677
+ 'hint_place' => 'left',
1678
+ 'condition' => array(
1679
+ array(
1680
+ 'control' => 'vp_pagination_style',
1681
+ 'operator' => '!=',
1682
+ 'value' => 'false',
1683
+ ),
1684
+ array(
1685
+ 'control' => 'vp_pagination',
1686
+ 'value' => 'paged',
1687
+ ),
1688
+ array(
1689
+ 'control' => 'vp_pagination_paged__show_arrows',
1690
+ ),
1691
+ ),
1692
+ )
1693
+ );
1694
  Visual_Portfolio_Controls::register(
1695
  array(
1696
  'category' => 'pagination',
1699
  'name' => 'vp_pagination_paged__show_numbers',
1700
  'default' => true,
1701
  'condition' => array(
1702
+ array(
1703
+ 'control' => 'vp_pagination_style',
1704
+ 'operator' => '!=',
1705
+ 'value' => 'false',
1706
+ ),
1707
  array(
1708
  'control' => 'vp_pagination',
1709
  'value' => 'paged',
1726
  )
1727
  );
1728
 
1729
+ /**
1730
+ * Custom controls styles.
1731
+ */
1732
+ Visual_Portfolio_Controls::register(
1733
+ array(
1734
+ 'category' => 'controls_styles',
1735
+ 'type' => 'textarea',
1736
+ 'name' => 'vp_controls_styles',
1737
+ 'default' => '',
1738
+ 'readonly' => true,
1739
+ 'wrapper_class' => 'vp-controls-styles',
1740
+ )
1741
+ );
1742
+
1743
  /**
1744
  * Content Source
1745
  */
2049
 
2050
  Visual_Portfolio_Controls::get(
2051
  array(
2052
+ 'type' => 'text',
2053
+ 'label' => esc_html__( 'Shortcode', 'visual-portfolio' ),
2054
  'description' => esc_html__( 'Place the shortcode where you want to show the portfolio list.', 'visual-portfolio' ),
2055
+ 'name' => 'vp_list_shortcode',
2056
+ 'value' => $post->ID ? '[visual_portfolio id="' . $post->ID . '" class=""]' : '',
2057
  'readonly' => true,
2058
  )
2059
  );
2060
 
2061
+ // custom controls styles.
2062
+ Visual_Portfolio_Controls::get_registered( 'controls_styles' );
2063
+
2064
  ?>
2065
 
2066
  <style>
2068
  margin-top: -21px;
2069
  border-top: none;
2070
  }
2071
+ .vp-controls-styles,
2072
  #post-body-content,
2073
  #submitdiv .handlediv,
2074
  #submitdiv .hndle,
2282
 
2283
  foreach ( $meta as $item ) {
2284
  if ( isset( $_POST[ $item ] ) ) {
2285
+ if ( 'vp_custom_css' === $item || 'vp_controls_styles' === $item ) {
2286
  $result = wp_kses( wp_unslash( $_POST[ $item ] ), array( '\'', '\"' ) );
2287
  } else {
2288
  $result = sanitize_text_field( wp_unslash( $_POST[ $item ] ) );
2455
  'post_type' => get_post_type( get_the_ID() ),
2456
  );
2457
  }
2458
+ $the_query->reset_postdata();
2459
  }
2460
 
2461
  echo json_encode( $result );
classes/class-controls.php CHANGED
@@ -71,6 +71,15 @@ class Visual_Portfolio_Controls {
71
  */
72
  ),
73
 
 
 
 
 
 
 
 
 
 
74
  'class' => '',
75
  'wrapper_class' => '',
76
  );
@@ -133,6 +142,8 @@ class Visual_Portfolio_Controls {
133
  <?php
134
  self::print_label( $args );
135
 
 
 
136
  if ( method_exists( __CLASS__, 'print_control_' . $args['type'] ) ) {
137
  call_user_func( array( __CLASS__, 'print_control_' . $args['type'] ), $args );
138
  }
@@ -276,6 +287,34 @@ class Visual_Portfolio_Controls {
276
  <?php
277
  }
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  /**
280
  * Print control description.
281
  *
71
  */
72
  ),
73
 
74
+ // style.
75
+ 'style' => array(
76
+ /**
77
+ * Array of arrays with data:
78
+ * 'element' - CSS selector string (.vp-portfolio__item, .vp-portfolio__item-overlay, etc).
79
+ * 'property' - CSS property (color, font-size, etc).
80
+ */
81
+ ),
82
+
83
  'class' => '',
84
  'wrapper_class' => '',
85
  );
142
  <?php
143
  self::print_label( $args );
144
 
145
+ self::print_style( $args );
146
+
147
  if ( method_exists( __CLASS__, 'print_control_' . $args['type'] ) ) {
148
  call_user_func( array( __CLASS__, 'print_control_' . $args['type'] ), $args );
149
  }
287
  <?php
288
  }
289
 
290
+ /**
291
+ * Print control style.
292
+ *
293
+ * @param array $args - control args.
294
+ */
295
+ public static function print_style( $args = array() ) {
296
+ if ( ! $args['style'] || empty( $args['style'] ) ) {
297
+ return;
298
+ }
299
+ ?>
300
+ <div class="vp-control-style">
301
+ <?php
302
+ foreach ( $args['style'] as $style ) {
303
+ ?>
304
+ <input type="hidden"
305
+ name="<?php echo esc_attr( $args['name'] ); ?>__style[]"
306
+ data-style-from="[name='<?php echo esc_attr( $args['name'] ); ?>']"
307
+ data-style-element="<?php echo esc_attr( $style['element'] ); ?>"
308
+ data-style-property="<?php echo esc_attr( $style['property'] ); ?>"
309
+ value=""
310
+ >
311
+ <?php
312
+ }
313
+ ?>
314
+ </div>
315
+ <?php
316
+ }
317
+
318
  /**
319
  * Print control description.
320
  *
classes/class-extend.php CHANGED
@@ -87,6 +87,26 @@ class Visual_Portfolio_Extend {
87
  return apply_filters( 'vpf_extend_filters', array() );
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  /**
91
  * Portfolio Data Attributes.
92
  *
87
  return apply_filters( 'vpf_extend_filters', array() );
88
  }
89
 
90
+ /**
91
+ * Additional Pagination.
92
+ *
93
+ * @return array
94
+ */
95
+ public static function pagination() {
96
+ /*
97
+ * Example:
98
+ array(
99
+ 'new_pagination' => array(
100
+ 'title' => esc_html__( 'New Pagination', 'visual-portfolio' ),
101
+ 'controls' => array(
102
+ ... controls ...
103
+ ),
104
+ ),
105
+ )
106
+ */
107
+ return apply_filters( 'vpf_extend_pagination', array() );
108
+ }
109
+
110
  /**
111
  * Portfolio Data Attributes.
112
  *
classes/class-get-portfolio.php CHANGED
@@ -76,11 +76,12 @@ class Visual_Portfolio_Get {
76
  * Check if portfolio showed in preview mode.
77
  */
78
  public static function is_preview() {
79
- $frame = get_query_var( 'vp_preview_frame' );
80
- $id = get_query_var( 'vp_preview_frame_id' );
81
- $pagename = get_query_var( 'vp_preview' );
 
82
 
83
- return 'vp_preview' === $pagename && 'true' === $frame && $id;
84
  }
85
 
86
  /**
@@ -165,6 +166,9 @@ class Visual_Portfolio_Get {
165
 
166
  $start_page = self::get_current_page_number();
167
 
 
 
 
168
  $is_images = 'images' === $options['vp_content_source'];
169
  if ( $is_images ) {
170
  $query_opts = self::get_query_params( $options );
@@ -261,9 +265,9 @@ class Visual_Portfolio_Get {
261
  <?php
262
  foreach ( $data_atts as $name => $data ) {
263
  if ( 'data-vp-next-page-url' === $name ) {
264
- echo esc_html( $name ) . '="' . esc_url( $data ) . '"';
265
  } else {
266
- echo esc_html( $name ) . '="' . esc_attr( $data ) . '"';
267
  }
268
  }
269
  ?>
@@ -292,14 +296,11 @@ class Visual_Portfolio_Get {
292
  self::filter( $options );
293
 
294
  // Insert styles.
295
- switch ( $options['vp_items_style'] ) {
296
- case 'default':
297
- visual_portfolio()->include_template_style( 'visual-portfolio-items-style-default', 'items-list/items-style/style' );
298
- break;
299
- default:
300
- visual_portfolio()->include_template_style( 'visual-portfolio-items-style-' . $options['vp_items_style'], 'items-list/items-style/' . $options['vp_items_style'] . '/style' );
301
- break;
302
  }
 
303
  ?>
304
 
305
  <div class="vp-portfolio__items-wrap">
@@ -309,6 +310,7 @@ class Visual_Portfolio_Get {
309
  'url' => '',
310
  'title' => '',
311
  'excerpt' => '',
 
312
  'format' => '',
313
  'published' => '',
314
  'published_time' => '',
@@ -317,13 +319,18 @@ class Visual_Portfolio_Get {
317
  'image_id' => '',
318
  'image_allowed_html' => array(
319
  'img' => array(
320
- 'src' => array(),
321
- 'srcset' => array(),
322
- 'sizes' => array(),
323
- 'alt' => array(),
324
- 'class' => array(),
325
- 'width' => array(),
326
- 'height' => array(),
 
 
 
 
 
327
  ),
328
  ),
329
  'img_size_popup' => $img_size_popup,
@@ -387,7 +394,7 @@ class Visual_Portfolio_Get {
387
 
388
  self::each_item( $args );
389
  }
390
- } else if ( isset( $portfolio_query ) && $portfolio_query->have_posts() ) {
391
  while ( $portfolio_query->have_posts() ) {
392
  $portfolio_query->the_post();
393
 
@@ -437,6 +444,8 @@ class Visual_Portfolio_Get {
437
  'categories' => $categories,
438
  ) );
439
 
 
 
440
  // Excerpt.
441
  if ( isset( $args['opts']['show_excerpt'] ) && $args['opts']['show_excerpt'] ) {
442
  $args['excerpt'] = wp_trim_words( do_shortcode( has_excerpt() ? get_the_excerpt() : get_the_content() ), $args['opts']['excerpt_words_count'], '...' );
@@ -452,7 +461,7 @@ class Visual_Portfolio_Get {
452
  self::each_item( $args );
453
  }
454
 
455
- wp_reset_postdata();
456
  }
457
 
458
  ?>
@@ -471,6 +480,17 @@ class Visual_Portfolio_Get {
471
 
472
  <?php
473
 
 
 
 
 
 
 
 
 
 
 
 
474
  // Add custom styles.
475
  if ( $options['vp_custom_css'] ) {
476
  $custom_css_handle = 'vp-custom-css-' . $atts['id'];
@@ -482,6 +502,10 @@ class Visual_Portfolio_Get {
482
  wp_add_inline_style( $custom_css_handle, $css );
483
  }
484
 
 
 
 
 
485
  $return = ob_get_contents();
486
  ob_end_clean();
487
  return $return;
@@ -851,38 +875,43 @@ class Visual_Portfolio_Get {
851
  */
852
  $term_ids = array();
853
  $term_taxonomies = array();
 
 
 
854
  $portfolio_query = new WP_Query( $query_opts );
855
- if ( $portfolio_query->have_posts() ) {
856
- while ( $portfolio_query->have_posts() ) {
857
- $portfolio_query->the_post();
858
- $all_taxonomies = get_object_taxonomies( get_post() );
859
-
860
- foreach ( $all_taxonomies as $cat ) {
861
- // allow only category taxonomies like category, portfolio_category, etc...
862
- // + support for jetpack portfolio-type.
863
- if ( strpos( $cat, 'category' ) === false && strpos( $cat, 'jetpack-portfolio-type' ) === false ) {
864
- continue;
865
- }
866
 
867
- // Retrieve terms.
868
- $category = get_the_terms( get_post(), $cat );
869
- if ( ! $category ) {
870
- continue;
871
- }
872
 
873
- // Prepare each terms array.
874
- foreach ( $category as $key => $cat_item ) {
875
- if ( ! in_array( $cat_item->term_id, $term_ids ) ) {
876
- $term_ids[] = $cat_item->term_id;
877
- }
878
- if ( ! in_array( $cat_item->taxonomy, $term_taxonomies ) ) {
879
- $term_taxonomies[] = $cat_item->taxonomy;
880
- }
881
  }
882
  }
883
  }
884
- wp_reset_postdata();
885
  }
 
 
 
 
 
886
 
887
  // Get all available terms and then pick only needed by ID
888
  // we need this to support reordering plugins.
@@ -935,12 +964,29 @@ class Visual_Portfolio_Get {
935
  )
936
  );
937
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
938
  $args = array(
939
  'class' => 'vp-filter',
940
  'items' => $terms,
941
  'align' => $vp_options['vp_filter_align'],
942
  'show_count' => $vp_options['vp_filter_show_count'],
943
- 'vp_opts' => $vp_options,
 
944
  );
945
 
946
  if ( $vp_options['vp_filter_align'] ) {
@@ -951,17 +997,15 @@ class Visual_Portfolio_Get {
951
  <div class="vp-portfolio__filter-wrap">
952
  <?php
953
 
954
- switch ( $vp_options['vp_filter'] ) {
955
- case 'default':
956
- visual_portfolio()->include_template( 'items-list/filter/filter', $args );
957
- visual_portfolio()->include_template_style( 'visual-portfolio-filter-default', 'items-list/filter/style' );
958
- break;
959
- default:
960
- visual_portfolio()->include_template( 'items-list/filter/' . $vp_options['vp_filter'] . '/filter', $args );
961
- visual_portfolio()->include_template_style( 'visual-portfolio-filter-' . $vp_options['vp_filter'], 'items-list/filter/' . $vp_options['vp_filter'] . '/style' );
962
- break;
963
  }
964
 
 
 
 
965
  ?>
966
  </div>
967
  <?php
@@ -990,7 +1034,7 @@ class Visual_Portfolio_Get {
990
  */
991
  private static function each_item( $args ) {
992
  // prepare image.
993
- $args['image'] = wp_get_attachment_image( $args['image_id'], $args['img_size'] );
994
 
995
  // prepare date.
996
  if ( isset( $args['opts']['show_date'] ) ) {
@@ -1061,7 +1105,7 @@ class Visual_Portfolio_Get {
1061
 
1062
  // No Image.
1063
  if ( ! $args['image'] && $args['no_image'] ) {
1064
- $args['image'] = wp_get_attachment_image( $args['no_image'], $args['img_size'] );
1065
  }
1066
  ?>
1067
 
@@ -1092,16 +1136,12 @@ class Visual_Portfolio_Get {
1092
  ?>
1093
  <div class="vp-portfolio__item">
1094
  <?php
1095
- switch ( $args['vp_opts']['vp_items_style'] ) {
1096
- case 'default':
1097
- visual_portfolio()->include_template( 'items-list/items-style/image', $args );
1098
- visual_portfolio()->include_template( 'items-list/items-style/meta', $args );
1099
- break;
1100
- default:
1101
- visual_portfolio()->include_template( 'items-list/items-style/' . $args['vp_opts']['vp_items_style'] . '/image', $args );
1102
- visual_portfolio()->include_template( 'items-list/items-style/' . $args['vp_opts']['vp_items_style'] . '/meta', $args );
1103
- break;
1104
  }
 
 
1105
  ?>
1106
  </div>
1107
  </div>
@@ -1118,10 +1158,26 @@ class Visual_Portfolio_Get {
1118
  * 'next_page_url'.
1119
  */
1120
  private static function pagination( $vp_options, $args ) {
1121
- if ( ! $vp_options['vp_pagination'] ) {
1122
  return;
1123
  }
1124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1125
  $args = array(
1126
  'type' => $vp_options['vp_pagination'],
1127
  'next_page_url' => $args['next_page_url'],
@@ -1129,7 +1185,8 @@ class Visual_Portfolio_Get {
1129
  'max_pages' => $args['max_pages'],
1130
  'class' => 'vp-pagination',
1131
  'align' => $vp_options['vp_pagination_align'],
1132
- 'vp_opts' => $vp_options,
 
1133
  );
1134
 
1135
  if ( ! $args['next_page_url'] ) {
@@ -1144,10 +1201,16 @@ class Visual_Portfolio_Get {
1144
  <div class="vp-portfolio__pagination-wrap">
1145
  <?php
1146
 
 
 
 
 
 
1147
  switch ( $vp_options['vp_pagination'] ) {
1148
  case 'infinite':
1149
  case 'load-more':
1150
- visual_portfolio()->include_template( 'items-list/pagination/' . $vp_options['vp_pagination'], $args );
 
1151
  break;
1152
  default:
1153
  $pagination_links = paginate_links(
@@ -1217,7 +1280,12 @@ class Visual_Portfolio_Get {
1217
 
1218
  if ( ! empty( $filtered_links ) ) {
1219
  $args['items'] = $filtered_links;
1220
- visual_portfolio()->include_template( 'items-list/pagination/paged', $args );
 
 
 
 
 
1221
  }
1222
 
1223
  break;
@@ -1226,15 +1294,13 @@ class Visual_Portfolio_Get {
1226
  ?>
1227
  </div>
1228
  <?php
1229
-
1230
- visual_portfolio()->include_template_style( 'visual-portfolio-pagination-default', 'items-list/pagination/style' );
1231
  }
1232
 
1233
  /**
1234
  * Return current url without page variables.
1235
  *
1236
- * @param string $current_url - custom page url.
1237
- * @param array $query_arg - custom query arg.
1238
  * @return string
1239
  */
1240
  private static function get_nopaging_url( $current_url = false, $query_arg = array() ) {
76
  * Check if portfolio showed in preview mode.
77
  */
78
  public static function is_preview() {
79
+ // phpcs:disable
80
+ $frame = isset( $_GET['vp_preview_frame'] ) ? esc_attr( wp_unslash( $_GET['vp_preview_frame'] ) ) : false;
81
+ $id = isset( $_GET['vp_preview_frame_id'] ) ? esc_attr( wp_unslash( $_GET['vp_preview_frame_id'] ) ) : false;
82
+ // phpcs:enable
83
 
84
+ return 'true' === $frame && $id;
85
  }
86
 
87
  /**
166
 
167
  $start_page = self::get_current_page_number();
168
 
169
+ // stupid hack as wp_reset_postdata() function is not working for me...
170
+ $old_post = $GLOBALS['post'];
171
+
172
  $is_images = 'images' === $options['vp_content_source'];
173
  if ( $is_images ) {
174
  $query_opts = self::get_query_params( $options );
265
  <?php
266
  foreach ( $data_atts as $name => $data ) {
267
  if ( 'data-vp-next-page-url' === $name ) {
268
+ echo esc_html( $name ) . '="' . esc_url( $data ) . '" ';
269
  } else {
270
+ echo esc_html( $name ) . '="' . esc_attr( $data ) . '" ';
271
  }
272
  }
273
  ?>
296
  self::filter( $options );
297
 
298
  // Insert styles.
299
+ $items_style_pref = '';
300
+ if ( 'default' !== $options['vp_items_style'] ) {
301
+ $items_style_pref = '/' . $options['vp_items_style'];
 
 
 
 
302
  }
303
+ visual_portfolio()->include_template_style( 'visual-portfolio-items-style-' . $options['vp_items_style'], 'items-list/items-style' . $items_style_pref . '/style' );
304
  ?>
305
 
306
  <div class="vp-portfolio__items-wrap">
310
  'url' => '',
311
  'title' => '',
312
  'excerpt' => '',
313
+ 'comments_number' => '',
314
  'format' => '',
315
  'published' => '',
316
  'published_time' => '',
319
  'image_id' => '',
320
  'image_allowed_html' => array(
321
  'img' => array(
322
+ 'src' => array(),
323
+ 'srcset' => array(),
324
+ 'sizes' => array(),
325
+ 'alt' => array(),
326
+ 'class' => array(),
327
+ 'width' => array(),
328
+ 'height' => array(),
329
+
330
+ // Lazyload support.
331
+ 'data-src' => array(),
332
+ 'data-sizes' => array(),
333
+ 'data-srcset' => array(),
334
  ),
335
  ),
336
  'img_size_popup' => $img_size_popup,
394
 
395
  self::each_item( $args );
396
  }
397
+ } else if ( isset( $portfolio_query ) ) {
398
  while ( $portfolio_query->have_posts() ) {
399
  $portfolio_query->the_post();
400
 
444
  'categories' => $categories,
445
  ) );
446
 
447
+ $args['comments_number'] = get_comments_number();
448
+
449
  // Excerpt.
450
  if ( isset( $args['opts']['show_excerpt'] ) && $args['opts']['show_excerpt'] ) {
451
  $args['excerpt'] = wp_trim_words( do_shortcode( has_excerpt() ? get_the_excerpt() : get_the_content() ), $args['opts']['excerpt_words_count'], '...' );
461
  self::each_item( $args );
462
  }
463
 
464
+ $portfolio_query->reset_postdata();
465
  }
466
 
467
  ?>
480
 
481
  <?php
482
 
483
+ // Add controls styles.
484
+ if ( $options['vp_controls_styles'] ) {
485
+ $controls_css_handle = 'vp-controls-styles-' . $atts['id'];
486
+ $css = wp_kses( $options['vp_controls_styles'], array( '\'', '\"' ) );
487
+ $css = str_replace( '&gt;', '>', $css );
488
+
489
+ wp_register_style( $controls_css_handle, false );
490
+ wp_enqueue_style( $controls_css_handle );
491
+ wp_add_inline_style( $controls_css_handle, $css );
492
+ }
493
+
494
  // Add custom styles.
495
  if ( $options['vp_custom_css'] ) {
496
  $custom_css_handle = 'vp-custom-css-' . $atts['id'];
502
  wp_add_inline_style( $custom_css_handle, $css );
503
  }
504
 
505
+ // stupid hack as wp_reset_postdata() function is not working for me...
506
+ // phpcs:ignore
507
+ $GLOBALS['post'] = $old_post;
508
+
509
  $return = ob_get_contents();
510
  ob_end_clean();
511
  return $return;
875
  */
876
  $term_ids = array();
877
  $term_taxonomies = array();
878
+
879
+ // stupid hack as wp_reset_postdata() function is not working for me...
880
+ $old_post = $GLOBALS['post'];
881
  $portfolio_query = new WP_Query( $query_opts );
882
+ while ( $portfolio_query->have_posts() ) {
883
+ $portfolio_query->the_post();
884
+ $all_taxonomies = get_object_taxonomies( get_post() );
885
+
886
+ foreach ( $all_taxonomies as $cat ) {
887
+ // allow only category taxonomies like category, portfolio_category, etc...
888
+ // + support for jetpack portfolio-type.
889
+ if ( strpos( $cat, 'category' ) === false && strpos( $cat, 'jetpack-portfolio-type' ) === false ) {
890
+ continue;
891
+ }
 
892
 
893
+ // Retrieve terms.
894
+ $category = get_the_terms( get_post(), $cat );
895
+ if ( ! $category ) {
896
+ continue;
897
+ }
898
 
899
+ // Prepare each terms array.
900
+ foreach ( $category as $key => $cat_item ) {
901
+ if ( ! in_array( $cat_item->term_id, $term_ids ) ) {
902
+ $term_ids[] = $cat_item->term_id;
903
+ }
904
+ if ( ! in_array( $cat_item->taxonomy, $term_taxonomies ) ) {
905
+ $term_taxonomies[] = $cat_item->taxonomy;
 
906
  }
907
  }
908
  }
 
909
  }
910
+ $portfolio_query->reset_postdata();
911
+
912
+ // stupid hack as wp_reset_postdata() function is not working for me...
913
+ // phpcs:ignore
914
+ $GLOBALS['post'] = $old_post;
915
 
916
  // Get all available terms and then pick only needed by ID
917
  // we need this to support reordering plugins.
964
  )
965
  );
966
 
967
+ // get options for the current filter.
968
+ $filter_options = array();
969
+ $filter_options_slug = 'vp_filter_' . $vp_options['vp_filter'] . '__';
970
+ foreach ( $vp_options as $k => $opt ) {
971
+ // add option to array.
972
+ if ( substr( $k, 0, strlen( $filter_options_slug ) ) === $filter_options_slug ) {
973
+ $opt_name = str_replace( $filter_options_slug, '', $k );
974
+ $filter_options[ $opt_name ] = $opt;
975
+ }
976
+
977
+ // remove style options from the options list.
978
+ if ( substr( $k, 0, strlen( $filter_options_slug ) ) === $filter_options_slug ) {
979
+ unset( $vp_options[ $k ] );
980
+ }
981
+ }
982
+
983
  $args = array(
984
  'class' => 'vp-filter',
985
  'items' => $terms,
986
  'align' => $vp_options['vp_filter_align'],
987
  'show_count' => $vp_options['vp_filter_show_count'],
988
+ 'opts' => $filter_options,
989
+ 'vp_opts' => $vp_options,
990
  );
991
 
992
  if ( $vp_options['vp_filter_align'] ) {
997
  <div class="vp-portfolio__filter-wrap">
998
  <?php
999
 
1000
+ $filter_style_pref = '';
1001
+
1002
+ if ( 'default' !== $vp_options['vp_filter'] ) {
1003
+ $filter_style_pref = '/' . $vp_options['vp_filter'];
 
 
 
 
 
1004
  }
1005
 
1006
+ visual_portfolio()->include_template( 'items-list/filter' . $filter_style_pref . '/filter', $args );
1007
+ visual_portfolio()->include_template_style( 'visual-portfolio-filter-' . $vp_options['vp_filter'], 'items-list/filter' . $filter_style_pref . '/style' );
1008
+
1009
  ?>
1010
  </div>
1011
  <?php
1034
  */
1035
  private static function each_item( $args ) {
1036
  // prepare image.
1037
+ $args['image'] = Visual_Portfolio_Images::get_attachment_image( $args['image_id'], $args['img_size'] );
1038
 
1039
  // prepare date.
1040
  if ( isset( $args['opts']['show_date'] ) ) {
1105
 
1106
  // No Image.
1107
  if ( ! $args['image'] && $args['no_image'] ) {
1108
+ $args['image'] = Visual_Portfolio_Images::get_attachment_image( $args['no_image'], $args['img_size'] );
1109
  }
1110
  ?>
1111
 
1136
  ?>
1137
  <div class="vp-portfolio__item">
1138
  <?php
1139
+ $items_style_pref = '';
1140
+ if ( 'default' !== $args['vp_opts']['vp_items_style'] ) {
1141
+ $items_style_pref = '/' . $args['vp_opts']['vp_items_style'];
 
 
 
 
 
 
1142
  }
1143
+ visual_portfolio()->include_template( 'items-list/items-style' . $items_style_pref . '/image', $args );
1144
+ visual_portfolio()->include_template( 'items-list/items-style' . $items_style_pref . '/meta', $args );
1145
  ?>
1146
  </div>
1147
  </div>
1158
  * 'next_page_url'.
1159
  */
1160
  private static function pagination( $vp_options, $args ) {
1161
+ if ( ! $vp_options['vp_pagination_style'] || ! $vp_options['vp_pagination'] ) {
1162
  return;
1163
  }
1164
 
1165
+ // get options for the current pagination.
1166
+ $pagination_options = array();
1167
+ $pagination_options_slug = 'vp_pagination_' . $vp_options['vp_pagination_style'] . '__';
1168
+ foreach ( $vp_options as $k => $opt ) {
1169
+ // add option to array.
1170
+ if ( substr( $k, 0, strlen( $pagination_options_slug ) ) === $pagination_options_slug ) {
1171
+ $opt_name = str_replace( $pagination_options_slug, '', $k );
1172
+ $pagination_options[ $opt_name ] = $opt;
1173
+ }
1174
+
1175
+ // remove style options from the options list.
1176
+ if ( substr( $k, 0, strlen( $pagination_options_slug ) ) === $pagination_options_slug ) {
1177
+ unset( $vp_options[ $k ] );
1178
+ }
1179
+ }
1180
+
1181
  $args = array(
1182
  'type' => $vp_options['vp_pagination'],
1183
  'next_page_url' => $args['next_page_url'],
1185
  'max_pages' => $args['max_pages'],
1186
  'class' => 'vp-pagination',
1187
  'align' => $vp_options['vp_pagination_align'],
1188
+ 'opts' => $pagination_options,
1189
+ 'vp_opts' => $vp_options,
1190
  );
1191
 
1192
  if ( ! $args['next_page_url'] ) {
1201
  <div class="vp-portfolio__pagination-wrap">
1202
  <?php
1203
 
1204
+ $pagination_style_pref = '';
1205
+ if ( 'default' !== $vp_options['vp_pagination_style'] ) {
1206
+ $pagination_style_pref = '/' . $vp_options['vp_pagination_style'];
1207
+ }
1208
+
1209
  switch ( $vp_options['vp_pagination'] ) {
1210
  case 'infinite':
1211
  case 'load-more':
1212
+ visual_portfolio()->include_template( 'items-list/pagination' . $pagination_style_pref . '/' . $vp_options['vp_pagination'], $args );
1213
+ visual_portfolio()->include_template_style( 'visual-portfolio-pagination-' . $vp_options['vp_pagination_style'], 'items-list/pagination' . $pagination_style_pref . '/style' );
1214
  break;
1215
  default:
1216
  $pagination_links = paginate_links(
1280
 
1281
  if ( ! empty( $filtered_links ) ) {
1282
  $args['items'] = $filtered_links;
1283
+ if ( $vp_options['vp_pagination_paged__show_arrows'] ) {
1284
+ $args['arrows_icon_prev'] = $vp_options['vp_pagination_paged__arrows_icon_prev'];
1285
+ $args['arrows_icon_next'] = $vp_options['vp_pagination_paged__arrows_icon_next'];
1286
+ }
1287
+ visual_portfolio()->include_template( 'items-list/pagination' . $pagination_style_pref . '/paged', $args );
1288
+ visual_portfolio()->include_template_style( 'visual-portfolio-pagination-' . $vp_options['vp_pagination_style'], 'items-list/pagination/style' );
1289
  }
1290
 
1291
  break;
1294
  ?>
1295
  </div>
1296
  <?php
 
 
1297
  }
1298
 
1299
  /**
1300
  * Return current url without page variables.
1301
  *
1302
+ * @param string|boolean $current_url - custom page url.
1303
+ * @param array $query_arg - custom query arg.
1304
  * @return string
1305
  */
1306
  private static function get_nopaging_url( $current_url = false, $query_arg = array() ) {
classes/class-images.php ADDED
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Prepare placeholder and lazy load.
4
+ *
5
+ * @package visual-portfolio/images
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) {
9
+ exit;
10
+ }
11
+
12
+ /**
13
+ * Class Visual_Portfolio_Images
14
+ */
15
+ class Visual_Portfolio_Images {
16
+ /**
17
+ * When image process in progress with method get_attachment_image, this variable will be 'true'.
18
+ *
19
+ * @var bool
20
+ */
21
+ public static $image_processing = false;
22
+
23
+ /**
24
+ * Visual_Portfolio_Images constructor.
25
+ */
26
+ public static function construct() {
27
+ // Prepare images base64 placeholders.
28
+ // Thanks https://wordpress.org/plugins/powerkit/.
29
+ add_action( 'init', 'Visual_Portfolio_Images::allow_lazy_attributes' );
30
+ add_filter( 'kses_allowed_protocols', 'Visual_Portfolio_Images::kses_allowed_protocols', 15 );
31
+ add_filter( 'wp_update_attachment_metadata', 'Visual_Portfolio_Images::generate_attachment_placeholder', 15 );
32
+ add_filter( 'wp_generate_attachment_metadata', 'Visual_Portfolio_Images::generate_attachment_placeholder', 15 );
33
+ add_filter( 'wp_get_attachment_image_attributes', 'Visual_Portfolio_Images::add_image_placeholders', 15, 3 );
34
+ }
35
+
36
+ /**
37
+ * Allow attributes of Lazy Load for wp_kses.
38
+ */
39
+ public static function allow_lazy_attributes() {
40
+ global $allowedposttags;
41
+
42
+ if ( $allowedposttags ) {
43
+ foreach ( $allowedposttags as $key => & $tags ) {
44
+ if ( 'img' === $key ) {
45
+ $tags['data-src'] = true;
46
+ $tags['data-sizes'] = true;
47
+ $tags['data-srcset'] = true;
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Fix img src attribute correction in wp_kses.
55
+ *
56
+ * @param array $protocols protocols array.
57
+ *
58
+ * @return array
59
+ */
60
+ public static function kses_allowed_protocols( $protocols ) {
61
+ $protocols[] = 'data';
62
+ return $protocols;
63
+ }
64
+
65
+ /**
66
+ * Get attachment image wrapper.
67
+ *
68
+ * @param int $attachment_id attachment image id.
69
+ * @param string|array $size image size.
70
+ * @param bool $icon icon.
71
+ * @param string|array $attr image attributes.
72
+ *
73
+ * @return string
74
+ */
75
+ public static function get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = false, $attr = '' ) {
76
+ self::$image_processing = true;
77
+ $image = wp_get_attachment_image( $attachment_id, $size, $icon, $attr );
78
+ self::$image_processing = false;
79
+ return $image;
80
+ }
81
+
82
+ /**
83
+ * Generation placeholder.
84
+ *
85
+ * @param int $width Width of image.
86
+ * @param int $height Height of image.
87
+ *
88
+ * @return string
89
+ */
90
+ public static function get_image_placeholder( $width = 1, $height = 1 ) {
91
+ // 'pk' slug just because this code is from Powerkit plugin,
92
+ // so we need to be compatible with it.
93
+ $transient = sprintf( 'pk_image_placeholder_%s_%s', $width, $height );
94
+
95
+ $placeholder_image = get_transient( $transient );
96
+
97
+ if ( ! $placeholder_image ) {
98
+ ob_start();
99
+
100
+ $image = imagecreate( $width, $height );
101
+ $background = imagecolorallocatealpha( $image, 0, 0, 255, 127 );
102
+
103
+ imagepng( $image, null, 9 );
104
+ imagecolordeallocate( $image, $background );
105
+ imagedestroy( $image );
106
+
107
+ $placeholder_code = ob_get_clean();
108
+
109
+ $placeholder_image = 'data:image/png;base64,' . base64_encode( $placeholder_code );
110
+
111
+ set_transient( $transient, $placeholder_image );
112
+ }
113
+
114
+ return $placeholder_image;
115
+ }
116
+
117
+ /**
118
+ * Attachment metadata filter.
119
+ *
120
+ * @param array $metadata - attachment meta data.
121
+ *
122
+ * @return array
123
+ */
124
+ public static function generate_attachment_placeholder( $metadata ) {
125
+ // Generate image full size.
126
+ if ( isset( $metadata['width'] ) && isset( $metadata['height'] ) ) {
127
+ $metadata['placeholder'] = self::get_image_placeholder( $metadata['width'], $metadata['height'] );
128
+ }
129
+
130
+ // Generate image sizes.
131
+ if ( isset( $metadata['sizes'] ) ) {
132
+ foreach ( $metadata['sizes'] as $slug => & $size ) {
133
+ // Ignore lqip size.
134
+ if ( preg_match( '/powerkit-lqip/', $slug ) ) {
135
+ continue;
136
+ }
137
+ // Ignore retina size.
138
+ if ( preg_match( '/-2x$/', $slug ) ) {
139
+ continue;
140
+ }
141
+ if ( isset( $size['width'] ) && isset( $size['height'] ) ) {
142
+ $size['placeholder'] = self::get_image_placeholder( $size['width'], $size['height'] );
143
+ }
144
+ }
145
+ }
146
+
147
+ return $metadata;
148
+ }
149
+
150
+ /**
151
+ * Add placeholder for Visual Portfolio images.
152
+ *
153
+ * @param array $attr Attributes for the image markup.
154
+ * @param WP_Post $attachment Image attachment post.
155
+ * @param string|array $size Requested size. Image size or array of width and height values
156
+ * (in that order). Default 'thumbnail'.
157
+ *
158
+ * @return array
159
+ */
160
+ public static function add_image_placeholders( $attr, $attachment, $size ) {
161
+ // Is string.
162
+ if ( ! is_string( $size ) ) {
163
+ return $attr;
164
+ }
165
+
166
+ // Use only when called class method get_attachment_image.
167
+ if ( ! self::$image_processing ) {
168
+ return $attr;
169
+ }
170
+
171
+ // Lazyload already added.
172
+ if ( strpos( $attr['class'], 'lazyload' ) !== false || isset( $attr['data-src'] ) ) {
173
+ return $attr;
174
+ }
175
+
176
+ // Get attachment id.
177
+ $attachment_id = null;
178
+
179
+ if ( isset( $attachment->ID ) ) {
180
+ $attachment_id = $attachment->ID;
181
+ } elseif ( isset( $attachment['ID'] ) ) {
182
+ $attachment_id = $attachment['ID'];
183
+ }
184
+
185
+ // Default Placeholder.
186
+ $placeholder = false;
187
+
188
+ // The right Image Placeholder.
189
+ $metadata = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
190
+
191
+ if ( isset( $metadata['sizes'][ $size ]['placeholder'] ) ) {
192
+ $placeholder = $metadata['sizes'][ $size ]['placeholder'];
193
+ } elseif ( isset( $metadata['placeholder'] ) ) {
194
+ $placeholder = $metadata['placeholder'];
195
+ }
196
+
197
+ // lazy placeholder.
198
+ if ( $placeholder ) {
199
+ $attr['data-sizes'] = 'auto';
200
+ $attr['data-src'] = $attr['src'];
201
+ $attr['src'] = $placeholder;
202
+ }
203
+
204
+ $attr['class'] .= ' visual-portfolio-lazyload lazyload';
205
+
206
+ // Set Src Set.
207
+ if ( isset( $attr['srcset'] ) ) {
208
+ $attr['data-srcset'] = $attr['srcset'];
209
+ unset( $attr['srcset'] );
210
+ }
211
+
212
+ return $attr;
213
+ }
214
+ }
215
+ Visual_Portfolio_Images::construct();
languages/visual-portfolio.pot CHANGED
@@ -15,19 +15,19 @@ msgstr ""
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
18
- #: dist/visual-portfolio/class-visual-portfolio.php:265
19
  msgid "Small (VP)"
20
  msgstr ""
21
 
22
- #: dist/visual-portfolio/class-visual-portfolio.php:266
23
  msgid "Medium (VP)"
24
  msgstr ""
25
 
26
- #: dist/visual-portfolio/class-visual-portfolio.php:267
27
  msgid "Large (VP)"
28
  msgstr ""
29
 
30
- #: dist/visual-portfolio/class-visual-portfolio.php:268
31
  msgid "Extra Large (VP)"
32
  msgstr ""
33
 
@@ -101,7 +101,7 @@ msgstr ""
101
  msgid "Portfolio Categories"
102
  msgstr ""
103
 
104
- #: dist/visual-portfolio/classes/class-admin.php:238, dist/visual-portfolio/classes/class-controls.php:551
105
  msgid "Categories"
106
  msgstr ""
107
 
@@ -147,7 +147,7 @@ msgstr ""
147
  msgid "Search Portfolio Layout"
148
  msgstr ""
149
 
150
- #: dist/visual-portfolio/classes/class-admin.php:337, dist/visual-portfolio/classes/class-controls.php:563
151
  msgid "Video"
152
  msgstr ""
153
 
@@ -167,7 +167,7 @@ msgstr ""
167
  msgid "Thumbnail"
168
  msgstr ""
169
 
170
- #: dist/visual-portfolio/classes/class-admin.php:559, dist/visual-portfolio/classes/class-admin.php:1842
171
  msgid "Shortcode"
172
  msgstr ""
173
 
@@ -175,7 +175,7 @@ msgstr ""
175
  msgid "Tiles"
176
  msgstr ""
177
 
178
- #: dist/visual-portfolio/classes/class-admin.php:630
179
  msgid "Type"
180
  msgstr ""
181
 
@@ -183,472 +183,472 @@ msgstr ""
183
  msgid "Select tiles type"
184
  msgstr ""
185
 
186
- #: dist/visual-portfolio/classes/class-admin.php:726
187
  msgid "Masonry"
188
  msgstr ""
189
 
190
- #: dist/visual-portfolio/classes/class-admin.php:730
191
  msgid "Columns"
192
  msgstr ""
193
 
194
- #: dist/visual-portfolio/classes/class-admin.php:741
195
  msgid "Justified"
196
  msgstr ""
197
 
198
- #: dist/visual-portfolio/classes/class-admin.php:745
199
  msgid "Row height"
200
  msgstr ""
201
 
202
- #: dist/visual-portfolio/classes/class-admin.php:753
203
  msgid "Row height tolerance"
204
  msgstr ""
205
 
206
- #: dist/visual-portfolio/classes/class-admin.php:765
207
  msgid "Slider"
208
  msgstr ""
209
 
210
- #: dist/visual-portfolio/classes/class-admin.php:769
211
  msgid "Effect"
212
  msgstr ""
213
 
214
- #: dist/visual-portfolio/classes/class-admin.php:773
215
  msgid "Slide"
216
  msgstr ""
217
 
218
- #: dist/visual-portfolio/classes/class-admin.php:774
219
  msgid "Coverflow"
220
  msgstr ""
221
 
222
- #: dist/visual-portfolio/classes/class-admin.php:775, dist/visual-portfolio/classes/class-admin.php:1109
223
  msgid "Fade"
224
  msgstr ""
225
 
226
- #: dist/visual-portfolio/classes/class-admin.php:780
227
  msgid "Speed (seconds)"
228
  msgstr ""
229
 
230
- #: dist/visual-portfolio/classes/class-admin.php:789
231
  msgid "Autoplay (seconds)"
232
  msgstr ""
233
 
234
- #: dist/visual-portfolio/classes/class-admin.php:798
235
  msgid "Items height"
236
  msgstr ""
237
 
238
- #: dist/visual-portfolio/classes/class-admin.php:802, dist/visual-portfolio/classes/class-admin.php:841
239
  msgid "Auto"
240
  msgstr ""
241
 
242
- #: dist/visual-portfolio/classes/class-admin.php:803
243
  msgid "Static (px)"
244
  msgstr ""
245
 
246
- #: dist/visual-portfolio/classes/class-admin.php:804
247
  msgid "Dynamic (%)"
248
  msgstr ""
249
 
250
- #: dist/visual-portfolio/classes/class-admin.php:837
251
  msgid "Slides per view"
252
  msgstr ""
253
 
254
- #: dist/visual-portfolio/classes/class-admin.php:842
255
  msgid "Custom"
256
  msgstr ""
257
 
258
- #: dist/visual-portfolio/classes/class-admin.php:873
259
  msgid "Centered slides"
260
  msgstr ""
261
 
262
- #: dist/visual-portfolio/classes/class-admin.php:886
263
  msgid "Loop"
264
  msgstr ""
265
 
266
- #: dist/visual-portfolio/classes/class-admin.php:892
267
  msgid "Free scroll"
268
  msgstr ""
269
 
270
- #: dist/visual-portfolio/classes/class-admin.php:898, dist/visual-portfolio/classes/class-admin.php:1491, dist/visual-portfolio/classes/class-settings.php:139
271
  msgid "Show arrows"
272
  msgstr ""
273
 
274
- #: dist/visual-portfolio/classes/class-admin.php:906, dist/visual-portfolio/classes/class-admin.php:907
275
  msgid "Prev arrow icon"
276
  msgstr ""
277
 
278
- #: dist/visual-portfolio/classes/class-admin.php:919, dist/visual-portfolio/classes/class-admin.php:920
279
  msgid "Next arrow icon"
280
  msgstr ""
281
 
282
- #: dist/visual-portfolio/classes/class-admin.php:930
283
  msgid "Show bullets"
284
  msgstr ""
285
 
286
- #: dist/visual-portfolio/classes/class-admin.php:936
287
  msgid "Dynamic bullets"
288
  msgstr ""
289
 
290
- #: dist/visual-portfolio/classes/class-admin.php:999
291
  msgid "Gap"
292
  msgstr ""
293
 
294
- #: dist/visual-portfolio/classes/class-admin.php:1011
295
  msgid "Items per page"
296
  msgstr ""
297
 
298
- #: dist/visual-portfolio/classes/class-admin.php:1023
299
  msgid "Stretch"
300
  msgstr ""
301
 
302
- #: dist/visual-portfolio/classes/class-admin.php:1026
303
  msgid "Break container and display it wide"
304
  msgstr ""
305
 
306
- #: dist/visual-portfolio/classes/class-admin.php:1037, dist/visual-portfolio/classes/class-admin.php:1345
307
  msgid "Default"
308
  msgstr ""
309
 
310
- #: dist/visual-portfolio/classes/class-admin.php:1051
311
  msgid "Fly"
312
  msgstr ""
313
 
314
- #: dist/visual-portfolio/classes/class-admin.php:1063, dist/visual-portfolio/classes/class-admin.php:1092, dist/visual-portfolio/classes/class-admin.php:1121
315
  msgid "Overlay background color"
316
  msgstr ""
317
 
318
- #: dist/visual-portfolio/classes/class-admin.php:1070, dist/visual-portfolio/classes/class-admin.php:1099, dist/visual-portfolio/classes/class-admin.php:1128
319
  msgid "Overlay text color"
320
  msgstr ""
321
 
322
- #: dist/visual-portfolio/classes/class-admin.php:1080
323
  msgid "Emerge"
324
  msgstr ""
325
 
326
- #: dist/visual-portfolio/classes/class-admin.php:1164
327
  msgid "Show title"
328
  msgstr ""
329
 
330
- #: dist/visual-portfolio/classes/class-admin.php:1172
331
  msgid "Show categories"
332
  msgstr ""
333
 
334
- #: dist/visual-portfolio/classes/class-admin.php:1178
335
  msgid "Categories count"
336
  msgstr ""
337
 
338
- #: dist/visual-portfolio/classes/class-admin.php:1193
339
  msgid "Show date"
340
  msgstr ""
341
 
342
- #: dist/visual-portfolio/classes/class-admin.php:1197
343
  msgid "False"
344
  msgstr ""
345
 
346
- #: dist/visual-portfolio/classes/class-admin.php:1198
347
  msgid "Show"
348
  msgstr ""
349
 
350
- #: dist/visual-portfolio/classes/class-admin.php:1199
351
  msgid "Human Format"
352
  msgstr ""
353
 
354
- #: dist/visual-portfolio/classes/class-admin.php:1207
355
  msgid ""
356
  "Date format
357
  " Example: F j, Y"
358
  msgstr ""
359
 
360
- #: dist/visual-portfolio/classes/class-admin.php:1219
361
  msgid "Show excerpt"
362
  msgstr ""
363
 
364
- #: dist/visual-portfolio/classes/class-admin.php:1225
365
  msgid "Excerpt words count"
366
  msgstr ""
367
 
368
- #: dist/visual-portfolio/classes/class-admin.php:1240
369
  msgid "Show icon"
370
  msgstr ""
371
 
372
- #: dist/visual-portfolio/classes/class-admin.php:1248, dist/visual-portfolio/classes/class-admin.php:1249
373
  msgid "Standard icon"
374
  msgstr ""
375
 
376
- #: dist/visual-portfolio/classes/class-admin.php:1261, dist/visual-portfolio/classes/class-admin.php:1262
377
  msgid "Video icon"
378
  msgstr ""
379
 
380
- #: dist/visual-portfolio/classes/class-admin.php:1274
381
  msgid "Caption align"
382
  msgstr ""
383
 
384
- #: dist/visual-portfolio/classes/class-admin.php:1327, dist/visual-portfolio/classes/class-admin.php:1339, dist/visual-portfolio/classes/class-admin.php:1444
385
  msgid "Disabled"
386
  msgstr ""
387
 
388
- #: dist/visual-portfolio/classes/class-admin.php:1328, dist/visual-portfolio/classes/class-controls.php:580
389
  msgid "URL"
390
  msgstr ""
391
 
392
- #: dist/visual-portfolio/classes/class-admin.php:1329, dist/visual-portfolio/classes/class-settings.php:104
393
  msgid "Popup Gallery"
394
  msgstr ""
395
 
396
- #: dist/visual-portfolio/classes/class-admin.php:1400, dist/visual-portfolio/classes/class-admin.php:1470
397
  msgid "Align"
398
  msgstr ""
399
 
400
- #: dist/visual-portfolio/classes/class-admin.php:1404, dist/visual-portfolio/classes/class-admin.php:1474, dist/visual-portfolio/classes/class-controls.php:490, dist/visual-portfolio/classes/class-controls.php:499, dist/visual-portfolio/classes/class-controls.php:503, dist/visual-portfolio/classes/class-controls.php:516
401
  msgid "Center"
402
  msgstr ""
403
 
404
- #: dist/visual-portfolio/classes/class-admin.php:1405, dist/visual-portfolio/classes/class-admin.php:1475, dist/visual-portfolio/classes/class-controls.php:493, dist/visual-portfolio/classes/class-controls.php:506, dist/visual-portfolio/classes/class-controls.php:519
405
  msgid "Left"
406
  msgstr ""
407
 
408
- #: dist/visual-portfolio/classes/class-admin.php:1406, dist/visual-portfolio/classes/class-admin.php:1476, dist/visual-portfolio/classes/class-controls.php:496, dist/visual-portfolio/classes/class-controls.php:509, dist/visual-portfolio/classes/class-controls.php:522
409
  msgid "Right"
410
  msgstr ""
411
 
412
- #: dist/visual-portfolio/classes/class-admin.php:1421
413
  msgid "Show count"
414
  msgstr ""
415
 
416
- #: dist/visual-portfolio/classes/class-admin.php:1445
417
  msgid "Paged"
418
  msgstr ""
419
 
420
- #: dist/visual-portfolio/classes/class-admin.php:1446, dist/visual-portfolio/templates/items-list/pagination/infinite.php:18
421
  msgid "Load More"
422
  msgstr ""
423
 
424
- #: dist/visual-portfolio/classes/class-admin.php:1447
425
  msgid "Infinite"
426
  msgstr ""
427
 
428
- #: dist/visual-portfolio/classes/class-admin.php:1455
429
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
430
  msgstr ""
431
 
432
- #: dist/visual-portfolio/classes/class-admin.php:1506
433
  msgid "Show numbers"
434
  msgstr ""
435
 
436
- #: dist/visual-portfolio/classes/class-admin.php:1551
437
  msgid "Data source"
438
  msgstr ""
439
 
440
- #: dist/visual-portfolio/classes/class-admin.php:1563
441
  msgid "Specific posts"
442
  msgstr ""
443
 
444
- #: dist/visual-portfolio/classes/class-admin.php:1584
445
  msgid "Excluded posts"
446
  msgstr ""
447
 
448
- #: dist/visual-portfolio/classes/class-admin.php:1612
449
  msgid "Custom query"
450
  msgstr ""
451
 
452
  #. translators: %1$s - escaped url.
453
- #: dist/visual-portfolio/classes/class-admin.php:1614
454
  msgid "Build custom query according to <a href=\"%1$s\">WordPress Codex</a>."
455
  msgstr ""
456
 
457
- #: dist/visual-portfolio/classes/class-admin.php:1640
458
  msgid "Taxonomies"
459
  msgstr ""
460
 
461
- #: dist/visual-portfolio/classes/class-admin.php:1667
462
  msgid "Taxonomies relation"
463
  msgstr ""
464
 
465
- #: dist/visual-portfolio/classes/class-admin.php:1671
466
  msgid "OR"
467
  msgstr ""
468
 
469
- #: dist/visual-portfolio/classes/class-admin.php:1672
470
  msgid "AND"
471
  msgstr ""
472
 
473
- #: dist/visual-portfolio/classes/class-admin.php:1693
474
  msgid "Order by"
475
  msgstr ""
476
 
477
- #: dist/visual-portfolio/classes/class-admin.php:1697
478
  msgid "Date"
479
  msgstr ""
480
 
481
- #: dist/visual-portfolio/classes/class-admin.php:1698, dist/visual-portfolio/classes/class-controls.php:541
482
  msgid "Title"
483
  msgstr ""
484
 
485
- #: dist/visual-portfolio/classes/class-admin.php:1699
486
  msgid "ID"
487
  msgstr ""
488
 
489
- #: dist/visual-portfolio/classes/class-admin.php:1700
490
  msgid "Random"
491
  msgstr ""
492
 
493
- #: dist/visual-portfolio/classes/class-admin.php:1709
494
  msgid "Order direction"
495
  msgstr ""
496
 
497
- #: dist/visual-portfolio/classes/class-admin.php:1713
498
  msgid "DESC"
499
  msgstr ""
500
 
501
- #: dist/visual-portfolio/classes/class-admin.php:1714
502
  msgid "ASC"
503
  msgstr ""
504
 
505
- #: dist/visual-portfolio/classes/class-admin.php:1749
506
  msgid "Name & Shortcode"
507
  msgstr ""
508
 
509
- #: dist/visual-portfolio/classes/class-admin.php:1757
510
  msgid "Layout"
511
  msgstr ""
512
 
513
- #: dist/visual-portfolio/classes/class-admin.php:1765
514
  msgid "Items Style"
515
  msgstr ""
516
 
517
- #: dist/visual-portfolio/classes/class-admin.php:1773
518
  msgid "Items Click Action"
519
  msgstr ""
520
 
521
- #: dist/visual-portfolio/classes/class-admin.php:1781
522
  msgid "Filter"
523
  msgstr ""
524
 
525
- #: dist/visual-portfolio/classes/class-admin.php:1789
526
  msgid "Pagination"
527
  msgstr ""
528
 
529
- #: dist/visual-portfolio/classes/class-admin.php:1798
530
  msgid "Preview"
531
  msgstr ""
532
 
533
- #: dist/visual-portfolio/classes/class-admin.php:1806
534
  msgid "Content Source"
535
  msgstr ""
536
 
537
- #: dist/visual-portfolio/classes/class-admin.php:1814
538
  msgid "Custom CSS"
539
  msgstr ""
540
 
541
- #: dist/visual-portfolio/classes/class-admin.php:1833
542
  msgid "Name"
543
  msgstr ""
544
 
545
- #: dist/visual-portfolio/classes/class-admin.php:1843
546
  msgid "Place the shortcode where you want to show the portfolio list."
547
  msgstr ""
548
 
549
- #: dist/visual-portfolio/classes/class-admin.php:1905
550
  msgid "Filter Shortcode"
551
  msgstr ""
552
 
553
- #: dist/visual-portfolio/classes/class-admin.php:1906
554
  msgid "Place the shortcode where you want to show the filter."
555
  msgstr ""
556
 
557
- #: dist/visual-portfolio/classes/class-admin.php:1973
558
  msgid "Portfolio"
559
  msgstr ""
560
 
561
- #: dist/visual-portfolio/classes/class-admin.php:1979
562
  msgid "Post-Based"
563
  msgstr ""
564
 
565
- #: dist/visual-portfolio/classes/class-admin.php:1985
566
  msgid "Images"
567
  msgstr ""
568
 
569
  #. translators: %1$s - escaped url.
570
- #: dist/visual-portfolio/classes/class-admin.php:2004
571
  msgid "Portfolio items list from <a href=\"%1$s\" target=\"_blank\">%2$s</a>"
572
  msgstr ""
573
 
574
- #: dist/visual-portfolio/classes/class-admin.php:2040
575
  msgid "Available classes:"
576
  msgstr ""
577
 
578
- #: dist/visual-portfolio/classes/class-admin.php:2043
579
  msgid " - use this classname for each styles you added. It is the main Visual Portfolio wrapper."
580
  msgstr ""
581
 
582
- #: dist/visual-portfolio/classes/class-admin.php:2044
583
  msgid " - items wrapper."
584
  msgstr ""
585
 
586
- #: dist/visual-portfolio/classes/class-admin.php:2045
587
  msgid " - single item wrapper."
588
  msgstr ""
589
 
590
- #: dist/visual-portfolio/classes/class-admin.php:2046
591
  msgid " - filter wrapper."
592
  msgstr ""
593
 
594
- #: dist/visual-portfolio/classes/class-admin.php:2047
595
  msgid " - pagination wrapper."
596
  msgstr ""
597
 
598
- #: dist/visual-portfolio/classes/class-admin.php:2107
599
  msgid "Specific Posts"
600
  msgstr ""
601
 
602
- #: dist/visual-portfolio/classes/class-admin.php:2108
603
  msgid "Custom Query"
604
  msgstr ""
605
 
606
- #: dist/visual-portfolio/classes/class-controls.php:488
607
  msgid "Top"
608
  msgstr ""
609
 
610
- #: dist/visual-portfolio/classes/class-controls.php:514
611
  msgid "Bottom"
612
  msgstr ""
613
 
614
- #: dist/visual-portfolio/classes/class-controls.php:546
615
  msgid "Description"
616
  msgstr ""
617
 
618
- #: dist/visual-portfolio/classes/class-controls.php:558
619
  msgid "Format"
620
  msgstr ""
621
 
622
- #: dist/visual-portfolio/classes/class-controls.php:562
623
  msgid "Standard"
624
  msgstr ""
625
 
626
- #: dist/visual-portfolio/classes/class-controls.php:568
627
  msgid "Video URL"
628
  msgstr ""
629
 
630
- #: dist/visual-portfolio/classes/class-controls.php:569, dist/visual-portfolio/classes/class-controls.php:582
631
  msgid "https://..."
632
  msgstr ""
633
 
634
- #: dist/visual-portfolio/classes/class-controls.php:581
635
  msgid "By default used full image url, you can use custom one"
636
  msgstr ""
637
 
638
- #: dist/visual-portfolio/classes/class-controls.php:599
639
  msgid "Edit"
640
  msgstr ""
641
 
642
- #: dist/visual-portfolio/classes/class-get-portfolio.php:188
643
  msgid "No items found."
644
  msgstr ""
645
 
646
- #: dist/visual-portfolio/classes/class-get-portfolio.php:929
647
  msgid "All"
648
  msgstr ""
649
 
650
  #. translators: %s - published in human format.
651
- #: dist/visual-portfolio/classes/class-get-portfolio.php:999
652
  msgid "%s ago"
653
  msgstr ""
654
 
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
18
+ #: dist/visual-portfolio/class-visual-portfolio.php:280
19
  msgid "Small (VP)"
20
  msgstr ""
21
 
22
+ #: dist/visual-portfolio/class-visual-portfolio.php:281
23
  msgid "Medium (VP)"
24
  msgstr ""
25
 
26
+ #: dist/visual-portfolio/class-visual-portfolio.php:282
27
  msgid "Large (VP)"
28
  msgstr ""
29
 
30
+ #: dist/visual-portfolio/class-visual-portfolio.php:283
31
  msgid "Extra Large (VP)"
32
  msgstr ""
33
 
101
  msgid "Portfolio Categories"
102
  msgstr ""
103
 
104
+ #: dist/visual-portfolio/classes/class-admin.php:238, dist/visual-portfolio/classes/class-controls.php:590
105
  msgid "Categories"
106
  msgstr ""
107
 
147
  msgid "Search Portfolio Layout"
148
  msgstr ""
149
 
150
+ #: dist/visual-portfolio/classes/class-admin.php:337, dist/visual-portfolio/classes/class-controls.php:602
151
  msgid "Video"
152
  msgstr ""
153
 
167
  msgid "Thumbnail"
168
  msgstr ""
169
 
170
+ #: dist/visual-portfolio/classes/class-admin.php:559, dist/visual-portfolio/classes/class-admin.php:2053
171
  msgid "Shortcode"
172
  msgstr ""
173
 
175
  msgid "Tiles"
176
  msgstr ""
177
 
178
+ #: dist/visual-portfolio/classes/class-admin.php:630, dist/visual-portfolio/classes/class-admin.php:1560
179
  msgid "Type"
180
  msgstr ""
181
 
183
  msgid "Select tiles type"
184
  msgstr ""
185
 
186
+ #: dist/visual-portfolio/classes/class-admin.php:750
187
  msgid "Masonry"
188
  msgstr ""
189
 
190
+ #: dist/visual-portfolio/classes/class-admin.php:754
191
  msgid "Columns"
192
  msgstr ""
193
 
194
+ #: dist/visual-portfolio/classes/class-admin.php:765
195
  msgid "Justified"
196
  msgstr ""
197
 
198
+ #: dist/visual-portfolio/classes/class-admin.php:769
199
  msgid "Row height"
200
  msgstr ""
201
 
202
+ #: dist/visual-portfolio/classes/class-admin.php:777
203
  msgid "Row height tolerance"
204
  msgstr ""
205
 
206
+ #: dist/visual-portfolio/classes/class-admin.php:789
207
  msgid "Slider"
208
  msgstr ""
209
 
210
+ #: dist/visual-portfolio/classes/class-admin.php:793
211
  msgid "Effect"
212
  msgstr ""
213
 
214
+ #: dist/visual-portfolio/classes/class-admin.php:797
215
  msgid "Slide"
216
  msgstr ""
217
 
218
+ #: dist/visual-portfolio/classes/class-admin.php:798
219
  msgid "Coverflow"
220
  msgstr ""
221
 
222
+ #: dist/visual-portfolio/classes/class-admin.php:799, dist/visual-portfolio/classes/class-admin.php:1157
223
  msgid "Fade"
224
  msgstr ""
225
 
226
+ #: dist/visual-portfolio/classes/class-admin.php:804
227
  msgid "Speed (seconds)"
228
  msgstr ""
229
 
230
+ #: dist/visual-portfolio/classes/class-admin.php:813
231
  msgid "Autoplay (seconds)"
232
  msgstr ""
233
 
234
+ #: dist/visual-portfolio/classes/class-admin.php:822
235
  msgid "Items height"
236
  msgstr ""
237
 
238
+ #: dist/visual-portfolio/classes/class-admin.php:826, dist/visual-portfolio/classes/class-admin.php:865
239
  msgid "Auto"
240
  msgstr ""
241
 
242
+ #: dist/visual-portfolio/classes/class-admin.php:827
243
  msgid "Static (px)"
244
  msgstr ""
245
 
246
+ #: dist/visual-portfolio/classes/class-admin.php:828
247
  msgid "Dynamic (%)"
248
  msgstr ""
249
 
250
+ #: dist/visual-portfolio/classes/class-admin.php:861
251
  msgid "Slides per view"
252
  msgstr ""
253
 
254
+ #: dist/visual-portfolio/classes/class-admin.php:866
255
  msgid "Custom"
256
  msgstr ""
257
 
258
+ #: dist/visual-portfolio/classes/class-admin.php:897
259
  msgid "Centered slides"
260
  msgstr ""
261
 
262
+ #: dist/visual-portfolio/classes/class-admin.php:910
263
  msgid "Loop"
264
  msgstr ""
265
 
266
+ #: dist/visual-portfolio/classes/class-admin.php:916
267
  msgid "Free scroll"
268
  msgstr ""
269
 
270
+ #: dist/visual-portfolio/classes/class-admin.php:922, dist/visual-portfolio/classes/class-admin.php:1628, dist/visual-portfolio/classes/class-settings.php:139
271
  msgid "Show arrows"
272
  msgstr ""
273
 
274
+ #: dist/visual-portfolio/classes/class-admin.php:930, dist/visual-portfolio/classes/class-admin.php:931, dist/visual-portfolio/classes/class-admin.php:1650, dist/visual-portfolio/classes/class-admin.php:1651
275
  msgid "Prev arrow icon"
276
  msgstr ""
277
 
278
+ #: dist/visual-portfolio/classes/class-admin.php:943, dist/visual-portfolio/classes/class-admin.php:944, dist/visual-portfolio/classes/class-admin.php:1675, dist/visual-portfolio/classes/class-admin.php:1676
279
  msgid "Next arrow icon"
280
  msgstr ""
281
 
282
+ #: dist/visual-portfolio/classes/class-admin.php:954
283
  msgid "Show bullets"
284
  msgstr ""
285
 
286
+ #: dist/visual-portfolio/classes/class-admin.php:960
287
  msgid "Dynamic bullets"
288
  msgstr ""
289
 
290
+ #: dist/visual-portfolio/classes/class-admin.php:1023
291
  msgid "Gap"
292
  msgstr ""
293
 
294
+ #: dist/visual-portfolio/classes/class-admin.php:1035
295
  msgid "Items per page"
296
  msgstr ""
297
 
298
+ #: dist/visual-portfolio/classes/class-admin.php:1047
299
  msgid "Stretch"
300
  msgstr ""
301
 
302
+ #: dist/visual-portfolio/classes/class-admin.php:1050
303
  msgid "Break container and display it wide"
304
  msgstr ""
305
 
306
+ #: dist/visual-portfolio/classes/class-admin.php:1061, dist/visual-portfolio/classes/class-admin.php:1405, dist/visual-portfolio/classes/class-admin.php:1506
307
  msgid "Default"
308
  msgstr ""
309
 
310
+ #: dist/visual-portfolio/classes/class-admin.php:1075
311
  msgid "Fly"
312
  msgstr ""
313
 
314
+ #: dist/visual-portfolio/classes/class-admin.php:1087, dist/visual-portfolio/classes/class-admin.php:1128, dist/visual-portfolio/classes/class-admin.php:1169
315
  msgid "Overlay background color"
316
  msgstr ""
317
 
318
+ #: dist/visual-portfolio/classes/class-admin.php:1100, dist/visual-portfolio/classes/class-admin.php:1141, dist/visual-portfolio/classes/class-admin.php:1182
319
  msgid "Overlay text color"
320
  msgstr ""
321
 
322
+ #: dist/visual-portfolio/classes/class-admin.php:1116
323
  msgid "Emerge"
324
  msgstr ""
325
 
326
+ #: dist/visual-portfolio/classes/class-admin.php:1224
327
  msgid "Show title"
328
  msgstr ""
329
 
330
+ #: dist/visual-portfolio/classes/class-admin.php:1232
331
  msgid "Show categories"
332
  msgstr ""
333
 
334
+ #: dist/visual-portfolio/classes/class-admin.php:1238
335
  msgid "Categories count"
336
  msgstr ""
337
 
338
+ #: dist/visual-portfolio/classes/class-admin.php:1253
339
  msgid "Show date"
340
  msgstr ""
341
 
342
+ #: dist/visual-portfolio/classes/class-admin.php:1257
343
  msgid "False"
344
  msgstr ""
345
 
346
+ #: dist/visual-portfolio/classes/class-admin.php:1258
347
  msgid "Show"
348
  msgstr ""
349
 
350
+ #: dist/visual-portfolio/classes/class-admin.php:1259
351
  msgid "Human Format"
352
  msgstr ""
353
 
354
+ #: dist/visual-portfolio/classes/class-admin.php:1267
355
  msgid ""
356
  "Date format
357
  " Example: F j, Y"
358
  msgstr ""
359
 
360
+ #: dist/visual-portfolio/classes/class-admin.php:1279
361
  msgid "Show excerpt"
362
  msgstr ""
363
 
364
+ #: dist/visual-portfolio/classes/class-admin.php:1285
365
  msgid "Excerpt words count"
366
  msgstr ""
367
 
368
+ #: dist/visual-portfolio/classes/class-admin.php:1300
369
  msgid "Show icon"
370
  msgstr ""
371
 
372
+ #: dist/visual-portfolio/classes/class-admin.php:1308, dist/visual-portfolio/classes/class-admin.php:1309
373
  msgid "Standard icon"
374
  msgstr ""
375
 
376
+ #: dist/visual-portfolio/classes/class-admin.php:1321, dist/visual-portfolio/classes/class-admin.php:1322
377
  msgid "Video icon"
378
  msgstr ""
379
 
380
+ #: dist/visual-portfolio/classes/class-admin.php:1334
381
  msgid "Caption align"
382
  msgstr ""
383
 
384
+ #: dist/visual-portfolio/classes/class-admin.php:1387, dist/visual-portfolio/classes/class-admin.php:1399, dist/visual-portfolio/classes/class-admin.php:1500
385
  msgid "Disabled"
386
  msgstr ""
387
 
388
+ #: dist/visual-portfolio/classes/class-admin.php:1388, dist/visual-portfolio/classes/class-controls.php:619
389
  msgid "URL"
390
  msgstr ""
391
 
392
+ #: dist/visual-portfolio/classes/class-admin.php:1389, dist/visual-portfolio/classes/class-settings.php:104
393
  msgid "Popup Gallery"
394
  msgstr ""
395
 
396
+ #: dist/visual-portfolio/classes/class-admin.php:1460, dist/visual-portfolio/classes/class-admin.php:1602
397
  msgid "Align"
398
  msgstr ""
399
 
400
+ #: dist/visual-portfolio/classes/class-admin.php:1464, dist/visual-portfolio/classes/class-admin.php:1606, dist/visual-portfolio/classes/class-controls.php:529, dist/visual-portfolio/classes/class-controls.php:538, dist/visual-portfolio/classes/class-controls.php:542, dist/visual-portfolio/classes/class-controls.php:555
401
  msgid "Center"
402
  msgstr ""
403
 
404
+ #: dist/visual-portfolio/classes/class-admin.php:1465, dist/visual-portfolio/classes/class-admin.php:1607, dist/visual-portfolio/classes/class-controls.php:532, dist/visual-portfolio/classes/class-controls.php:545, dist/visual-portfolio/classes/class-controls.php:558
405
  msgid "Left"
406
  msgstr ""
407
 
408
+ #: dist/visual-portfolio/classes/class-admin.php:1466, dist/visual-portfolio/classes/class-admin.php:1608, dist/visual-portfolio/classes/class-controls.php:535, dist/visual-portfolio/classes/class-controls.php:548, dist/visual-portfolio/classes/class-controls.php:561
409
  msgid "Right"
410
  msgstr ""
411
 
412
+ #: dist/visual-portfolio/classes/class-admin.php:1481
413
  msgid "Show count"
414
  msgstr ""
415
 
416
+ #: dist/visual-portfolio/classes/class-admin.php:1565
417
  msgid "Paged"
418
  msgstr ""
419
 
420
+ #: dist/visual-portfolio/classes/class-admin.php:1566, dist/visual-portfolio/templates/items-list/pagination/infinite.php:18
421
  msgid "Load More"
422
  msgstr ""
423
 
424
+ #: dist/visual-portfolio/classes/class-admin.php:1567
425
  msgid "Infinite"
426
  msgstr ""
427
 
428
+ #: dist/visual-portfolio/classes/class-admin.php:1582
429
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
430
  msgstr ""
431
 
432
+ #: dist/visual-portfolio/classes/class-admin.php:1698
433
  msgid "Show numbers"
434
  msgstr ""
435
 
436
+ #: dist/visual-portfolio/classes/class-admin.php:1762
437
  msgid "Data source"
438
  msgstr ""
439
 
440
+ #: dist/visual-portfolio/classes/class-admin.php:1774
441
  msgid "Specific posts"
442
  msgstr ""
443
 
444
+ #: dist/visual-portfolio/classes/class-admin.php:1795
445
  msgid "Excluded posts"
446
  msgstr ""
447
 
448
+ #: dist/visual-portfolio/classes/class-admin.php:1823
449
  msgid "Custom query"
450
  msgstr ""
451
 
452
  #. translators: %1$s - escaped url.
453
+ #: dist/visual-portfolio/classes/class-admin.php:1825
454
  msgid "Build custom query according to <a href=\"%1$s\">WordPress Codex</a>."
455
  msgstr ""
456
 
457
+ #: dist/visual-portfolio/classes/class-admin.php:1851
458
  msgid "Taxonomies"
459
  msgstr ""
460
 
461
+ #: dist/visual-portfolio/classes/class-admin.php:1878
462
  msgid "Taxonomies relation"
463
  msgstr ""
464
 
465
+ #: dist/visual-portfolio/classes/class-admin.php:1882
466
  msgid "OR"
467
  msgstr ""
468
 
469
+ #: dist/visual-portfolio/classes/class-admin.php:1883
470
  msgid "AND"
471
  msgstr ""
472
 
473
+ #: dist/visual-portfolio/classes/class-admin.php:1904
474
  msgid "Order by"
475
  msgstr ""
476
 
477
+ #: dist/visual-portfolio/classes/class-admin.php:1908
478
  msgid "Date"
479
  msgstr ""
480
 
481
+ #: dist/visual-portfolio/classes/class-admin.php:1909, dist/visual-portfolio/classes/class-controls.php:580
482
  msgid "Title"
483
  msgstr ""
484
 
485
+ #: dist/visual-portfolio/classes/class-admin.php:1910
486
  msgid "ID"
487
  msgstr ""
488
 
489
+ #: dist/visual-portfolio/classes/class-admin.php:1911
490
  msgid "Random"
491
  msgstr ""
492
 
493
+ #: dist/visual-portfolio/classes/class-admin.php:1920
494
  msgid "Order direction"
495
  msgstr ""
496
 
497
+ #: dist/visual-portfolio/classes/class-admin.php:1924
498
  msgid "DESC"
499
  msgstr ""
500
 
501
+ #: dist/visual-portfolio/classes/class-admin.php:1925
502
  msgid "ASC"
503
  msgstr ""
504
 
505
+ #: dist/visual-portfolio/classes/class-admin.php:1960
506
  msgid "Name & Shortcode"
507
  msgstr ""
508
 
509
+ #: dist/visual-portfolio/classes/class-admin.php:1968
510
  msgid "Layout"
511
  msgstr ""
512
 
513
+ #: dist/visual-portfolio/classes/class-admin.php:1976
514
  msgid "Items Style"
515
  msgstr ""
516
 
517
+ #: dist/visual-portfolio/classes/class-admin.php:1984
518
  msgid "Items Click Action"
519
  msgstr ""
520
 
521
+ #: dist/visual-portfolio/classes/class-admin.php:1992
522
  msgid "Filter"
523
  msgstr ""
524
 
525
+ #: dist/visual-portfolio/classes/class-admin.php:2000
526
  msgid "Pagination"
527
  msgstr ""
528
 
529
+ #: dist/visual-portfolio/classes/class-admin.php:2009
530
  msgid "Preview"
531
  msgstr ""
532
 
533
+ #: dist/visual-portfolio/classes/class-admin.php:2017
534
  msgid "Content Source"
535
  msgstr ""
536
 
537
+ #: dist/visual-portfolio/classes/class-admin.php:2025
538
  msgid "Custom CSS"
539
  msgstr ""
540
 
541
+ #: dist/visual-portfolio/classes/class-admin.php:2044
542
  msgid "Name"
543
  msgstr ""
544
 
545
+ #: dist/visual-portfolio/classes/class-admin.php:2054
546
  msgid "Place the shortcode where you want to show the portfolio list."
547
  msgstr ""
548
 
549
+ #: dist/visual-portfolio/classes/class-admin.php:2120
550
  msgid "Filter Shortcode"
551
  msgstr ""
552
 
553
+ #: dist/visual-portfolio/classes/class-admin.php:2121
554
  msgid "Place the shortcode where you want to show the filter."
555
  msgstr ""
556
 
557
+ #: dist/visual-portfolio/classes/class-admin.php:2188
558
  msgid "Portfolio"
559
  msgstr ""
560
 
561
+ #: dist/visual-portfolio/classes/class-admin.php:2194
562
  msgid "Post-Based"
563
  msgstr ""
564
 
565
+ #: dist/visual-portfolio/classes/class-admin.php:2200
566
  msgid "Images"
567
  msgstr ""
568
 
569
  #. translators: %1$s - escaped url.
570
+ #: dist/visual-portfolio/classes/class-admin.php:2219
571
  msgid "Portfolio items list from <a href=\"%1$s\" target=\"_blank\">%2$s</a>"
572
  msgstr ""
573
 
574
+ #: dist/visual-portfolio/classes/class-admin.php:2255
575
  msgid "Available classes:"
576
  msgstr ""
577
 
578
+ #: dist/visual-portfolio/classes/class-admin.php:2258
579
  msgid " - use this classname for each styles you added. It is the main Visual Portfolio wrapper."
580
  msgstr ""
581
 
582
+ #: dist/visual-portfolio/classes/class-admin.php:2259
583
  msgid " - items wrapper."
584
  msgstr ""
585
 
586
+ #: dist/visual-portfolio/classes/class-admin.php:2260
587
  msgid " - single item wrapper."
588
  msgstr ""
589
 
590
+ #: dist/visual-portfolio/classes/class-admin.php:2261
591
  msgid " - filter wrapper."
592
  msgstr ""
593
 
594
+ #: dist/visual-portfolio/classes/class-admin.php:2262
595
  msgid " - pagination wrapper."
596
  msgstr ""
597
 
598
+ #: dist/visual-portfolio/classes/class-admin.php:2322
599
  msgid "Specific Posts"
600
  msgstr ""
601
 
602
+ #: dist/visual-portfolio/classes/class-admin.php:2323
603
  msgid "Custom Query"
604
  msgstr ""
605
 
606
+ #: dist/visual-portfolio/classes/class-controls.php:527
607
  msgid "Top"
608
  msgstr ""
609
 
610
+ #: dist/visual-portfolio/classes/class-controls.php:553
611
  msgid "Bottom"
612
  msgstr ""
613
 
614
+ #: dist/visual-portfolio/classes/class-controls.php:585
615
  msgid "Description"
616
  msgstr ""
617
 
618
+ #: dist/visual-portfolio/classes/class-controls.php:597
619
  msgid "Format"
620
  msgstr ""
621
 
622
+ #: dist/visual-portfolio/classes/class-controls.php:601
623
  msgid "Standard"
624
  msgstr ""
625
 
626
+ #: dist/visual-portfolio/classes/class-controls.php:607
627
  msgid "Video URL"
628
  msgstr ""
629
 
630
+ #: dist/visual-portfolio/classes/class-controls.php:608, dist/visual-portfolio/classes/class-controls.php:621
631
  msgid "https://..."
632
  msgstr ""
633
 
634
+ #: dist/visual-portfolio/classes/class-controls.php:620
635
  msgid "By default used full image url, you can use custom one"
636
  msgstr ""
637
 
638
+ #: dist/visual-portfolio/classes/class-controls.php:638
639
  msgid "Edit"
640
  msgstr ""
641
 
642
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:192
643
  msgid "No items found."
644
  msgstr ""
645
 
646
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:958
647
  msgid "All"
648
  msgstr ""
649
 
650
  #. translators: %s - published in human format.
651
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1043
652
  msgid "%s ago"
653
  msgstr ""
654
 
readme.md CHANGED
@@ -4,7 +4,7 @@
4
  * Requires at least: 4.0.0
5
  * Tested up to: 4.9
6
  * Requires PHP: 5.4
7
- * Stable tag: 1.5.0
8
  * License: GPLv2 or later
9
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -53,8 +53,8 @@ See **Online Demo** here - [https://demo.nkdev.info/#visual-portfolio](https://d
53
 
54
  ## Real Examples ##
55
 
56
- [Piroll - Portfolio Theme](https://demo.nkdev.info/#piroll)
57
- [Snow - Portfolio Theme](https://demo.nkdev.info/#snow)
58
 
59
 
60
 
@@ -105,6 +105,7 @@ Available filters:
105
  * **vpf_enqueue_plugin_photoswipe**
106
  * **vpf_enqueue_plugin_swiper**
107
  * **vpf_enqueue_plugin_font_awesome**
 
108
 
109
  Note: some functionality depends on these plugins and you may break the portfolio.
110
 
@@ -191,9 +192,26 @@ Available events:
191
 
192
  Note: Make sure that you added template in **your_theme/visual-portfolio/items-list/filter/new_filter**. See the structure of default templates to getting started.
193
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  ### DEV: Controls. ####
195
 
196
- These controls you can use in filters to extend Portfolio options (read **DEV: WP filters.** in FAQ).
197
 
198
  * The list of options, that available in all controls:
199
 
@@ -223,6 +241,14 @@ These controls you can use in filters to extend Portfolio options (read **DEV: W
223
  * 'value' - condition value.
224
  */
225
  ),
 
 
 
 
 
 
 
 
226
 
227
  'class' => '',
228
  'wrapper_class' => '',
@@ -363,18 +389,58 @@ Available events:
363
  * **addStyle.vpf** [ selector, styles, media, stylesList ] - called after added new custom styles.
364
  * **removeStyle.vpf** [ selector, styles, stylesList ] - called after removed custom styles.
365
  * **renderStyle.vpf** [ stylesString, stylesList, $style ] - called after rendered custom styles.
366
- * **imagesLoaded.vpf** - called after images loaded.
367
  * **initIsotope.vpf** - called after Isotope inited.
368
  * **destroyIsotope.vpf** - called after Isotope destroyed.
369
  * **initFjGallery.vpf** - called after fjGallery inited.
370
  * **destroyFjGallery.vpf** - called after fjGallery destroyed.
371
 
372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
 
374
 
375
 
376
  ## Changelog ##
377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  = 1.5.0 =
379
  * added Slider (+ Carousel, Coverflow) layout
380
  * added capabilities check when generated preview page
4
  * Requires at least: 4.0.0
5
  * Tested up to: 4.9
6
  * Requires PHP: 5.4
7
+ * Stable tag: 1.6.0
8
  * License: GPLv2 or later
9
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
53
 
54
  ## Real Examples ##
55
 
56
+ * [Piroll - Portfolio Theme](https://demo.nkdev.info/#piroll)
57
+ * [Snow - Portfolio Theme](https://demo.nkdev.info/#snow)
58
 
59
 
60
 
105
  * **vpf_enqueue_plugin_photoswipe**
106
  * **vpf_enqueue_plugin_swiper**
107
  * **vpf_enqueue_plugin_font_awesome**
108
+ * **vpf_enqueue_plugin_font_lazysizes**
109
 
110
  Note: some functionality depends on these plugins and you may break the portfolio.
111
 
192
 
193
  Note: Make sure that you added template in **your_theme/visual-portfolio/items-list/filter/new_filter**. See the structure of default templates to getting started.
194
 
195
+ * **vpf_extend_pagination** [ $pagination ] - custom pagination.
196
+
197
+ add_filter( 'vpf_extend_pagination', 'my_pagination_vpf_extend_pagination' );
198
+
199
+ function my_pagination_vpf_extend_pagination( $pagination ) {
200
+ return array_merge( $pagination, array(
201
+ 'new_pagination' => array(
202
+ 'title' => esc_html__( 'New Pagination', 'visual-portfolio' ),
203
+ 'controls' => array(
204
+ ... controls (read below) ...
205
+ ),
206
+ ),
207
+ ) );
208
+ }
209
+
210
+ Note: Make sure that you added template in **your_theme/visual-portfolio/items-list/pagination/new_pagination**. See the structure of default templates to getting started.
211
+
212
  ### DEV: Controls. ####
213
 
214
+ These controls you can use in filers to extend Portfolio options (read **DEV: WP filters.** in FAQ).
215
 
216
  * The list of options, that available in all controls:
217
 
241
  * 'value' - condition value.
242
  */
243
  ),
244
+
245
+ // custom styles.
246
+ 'style' => array(
247
+ array(
248
+ 'element' => '.vp-portfolio__item-overlay',
249
+ 'property' => 'background-color',
250
+ ),
251
+ ),
252
 
253
  'class' => '',
254
  'wrapper_class' => '',
389
  * **addStyle.vpf** [ selector, styles, media, stylesList ] - called after added new custom styles.
390
  * **removeStyle.vpf** [ selector, styles, stylesList ] - called after removed custom styles.
391
  * **renderStyle.vpf** [ stylesString, stylesList, $style ] - called after rendered custom styles.
 
392
  * **initIsotope.vpf** - called after Isotope inited.
393
  * **destroyIsotope.vpf** - called after Isotope destroyed.
394
  * **initFjGallery.vpf** - called after fjGallery inited.
395
  * **destroyFjGallery.vpf** - called after fjGallery destroyed.
396
 
397
 
398
+ ### DEV: jQuery methods. ####
399
+
400
+ Sometimes you may need to call Visual Portfolio methods manually, for example when you use AJAX page load, you will need to reinitialize portfolio, so you can use public methods. Example:
401
+
402
+ // Initialize.
403
+ $( '.vp-portfolio' ).vpf();
404
+
405
+ // Destroy.
406
+ $( '.vp-portfolio' ).vpf( 'destroy' );
407
+
408
+ Available methods:
409
+
410
+ * **init** - init/reinit portfolio
411
+ * **destroy** - destroy portfolio
412
+ * **resized** - portfolio was resized
413
+ * **addStyle** [ selector, styles, media ] - add custom styles to the current portfolio
414
+ * **removeStyle** [ selector, styles, media ] - remove custom styles from the current portfolio
415
+ * **renderStyle** - render custom styles
416
+ * **addItems** [ $items, removeExisting ] - add new items to portfolio (called after AJAX loading)
417
+ * **removeItems** [ $items ] - remove some items from portfolio (called after AJAX loading in Paged pagination)
418
 
419
 
420
 
421
  ## Changelog ##
422
 
423
+ = 1.6.0 =
424
+ * NOTE: strongly recommend to regenerate thumbnails on your site using [this plugin](https://wordpress.org/plugins/regenerate-thumbnails/)
425
+ * added lazy loading for images
426
+ * added will-change styles in templates (animations should work smoother)
427
+ * added new Tiles
428
+ * added pagination paged arrows options
429
+ * added align wide and full options in Gutenberg block
430
+ * added support for custom controls styles (developers could create their own controls and add custom styles). Read FAQ for more information
431
+ * added custom control options in filter templates (helpful for developers)
432
+ * added pagination style and possibility to extend it from 3rd-party code
433
+ * added portfolio item comments number data for templates
434
+ * added 'resized' event for developers
435
+ * always enqueued main style on all pages
436
+ * changed carousel arrows shadow
437
+ * fixed validation errors (added space between data attributes)
438
+ * fixed video popup position
439
+ * fixed portfolio bugged reload in preview
440
+ * renamed nk-spinner to vp-spinner
441
+ * removed double slash in custom theme template styles urls
442
+ * removed imagesloaded usage
443
+
444
  = 1.5.0 =
445
  * added Slider (+ Carousel, Coverflow) layout
446
  * added capabilities check when generated preview page
templates/items-list/filter/style.css CHANGED
@@ -1 +1 @@
1
- .vp-filter__style-default{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:-3px;margin-bottom:17px;list-style-type:none}.vp-filter__style-default .vp-filter__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-filter__style-default.vp-filter__align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-filter__style-default.vp-filter__align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-filter__style-default .vp-filter__item{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;margin:3px;text-align:center;list-style-type:none}.vp-filter__style-default .vp-filter__item>*{display:block;min-width:40px;padding:8px 16px;line-height:1.4;color:inherit;text-decoration:none;background-color:#fff;border:1px solid #eaeaea;-webkit-transition:.2s border-color, .2s background-color, .2s color;transition:.2s border-color, .2s background-color, .2s color}.vp-filter__style-default .vp-filter__item:not(.vp-filter__item-active)>a:hover{border:1px solid #bfbfbf}.vp-filter__style-default .vp-filter__item.vp-filter__item-active>*{color:#fff;cursor:default;background-color:#6c7781;border:1px solid #6c7781}.vp-filter__style-default .vp-filter__item .vp-filter__item-count{float:right;margin-left:8px;font-size:60%}
1
+ .vp-filter__style-default{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:-3px;margin-bottom:17px;list-style-type:none}.vp-filter__style-default .vp-filter__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-filter__style-default.vp-filter__align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-filter__style-default.vp-filter__align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-filter__style-default .vp-filter__item{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;margin:3px;text-align:center;list-style-type:none}.vp-filter__style-default .vp-filter__item>*{display:block;min-width:40px;padding:8px 16px;line-height:1.4;color:inherit;text-decoration:none;background-color:#fff;border:1px solid #eaeaea;-webkit-transition:.2s border-color, .2s background-color, .2s color;transition:.2s border-color, .2s background-color, .2s color;will-change:border-color, background-color, color}.vp-filter__style-default .vp-filter__item:not(.vp-filter__item-active)>a:hover{border:1px solid #bfbfbf}.vp-filter__style-default .vp-filter__item.vp-filter__item-active>*{color:#fff;cursor:default;background-color:#6c7781;border:1px solid #6c7781}.vp-filter__style-default .vp-filter__item .vp-filter__item-count{float:right;margin-left:8px;font-size:60%}
templates/items-list/filter/style.scss CHANGED
@@ -40,6 +40,7 @@
40
  background-color: #fff;
41
  border: 1px solid #eaeaea;
42
  transition: .2s border-color, .2s background-color, .2s color;
 
43
  }
44
 
45
  &:not(.vp-filter__item-active) > a:hover {
40
  background-color: #fff;
41
  border: 1px solid #eaeaea;
42
  transition: .2s border-color, .2s background-color, .2s color;
43
+ will-change: border-color, background-color, color;
44
  }
45
 
46
  &:not(.vp-filter__item-active) > a:hover {
templates/items-list/items-style/emerge/meta.php CHANGED
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
 
14
  ?>
15
 
16
- <div class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>" data-vp-bg-color="<?php echo esc_attr( $opts['bg_color'] ); ?>" data-vp-text-color="<?php echo esc_attr( $opts['text_color'] ); ?>">
17
  <div class="vp-portfolio__item-meta">
18
  <?php
19
 
13
 
14
  ?>
15
 
16
+ <div class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
17
  <div class="vp-portfolio__item-meta">
18
  <?php
19
 
templates/items-list/items-style/emerge/style.css CHANGED
@@ -1 +1 @@
1
- .vp-portfolio__items-style-emerge .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay{position:absolute;bottom:0;left:0;width:100%;max-height:50%;padding:15px 32px;color:#000;background-color:#fff;-webkit-transition:0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s transform cubic-bezier(0.07, 0.72, 0.24, 1), 0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);-webkit-transform:translateY(100%);transform:translateY(100%)}.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay::before{content:"";position:absolute;display:block;top:0;right:0;left:-20px;height:600%;background-color:inherit;-webkit-transition:.5s transform ease;transition:.5s transform ease;-webkit-transform:rotate(0deg);transform:rotate(0deg);-webkit-transform-origin:100% 0;transform-origin:100% 0;z-index:-1}.vp-portfolio__items-style-emerge .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1)}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-overlay{-webkit-transform:translateY(0);transform:translateY(0)}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-overlay::before{-webkit-transform:rotate(3deg);transform:rotate(3deg)}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta a{color:inherit;text-decoration:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta a:hover{opacity:.8}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em;color:inherit}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;bottom:100%;left:0;padding:0;margin-right:0;margin-bottom:0;margin-left:0;list-style-type:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{padding:0;margin:0}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a::after{content:", "}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category:last-of-type a::after{content:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-left{text-align:left}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-center{text-align:center}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-center .vp-portfolio__item-meta-categories{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-right{text-align:right}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-right .vp-portfolio__item-meta-categories{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}
1
+ .vp-portfolio__items-style-emerge .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay{position:absolute;bottom:0;left:0;width:100%;max-height:50%;padding:15px 32px;color:#000;background-color:#fff;-webkit-transition:0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s transform cubic-bezier(0.07, 0.72, 0.24, 1);transition:0.5s transform cubic-bezier(0.07, 0.72, 0.24, 1), 0.5s -webkit-transform cubic-bezier(0.07, 0.72, 0.24, 1);-webkit-transform:translateY(100%);transform:translateY(100%);will-change:transform}.vp-portfolio__items-style-emerge .vp-portfolio__item-overlay::before{content:"";position:absolute;display:block;top:0;right:0;left:-20px;height:600%;background-color:inherit;-webkit-transition:.5s transform ease;transition:.5s transform ease;-webkit-transform:rotate(0deg);transform:rotate(0deg);-webkit-transform-origin:100% 0;transform-origin:100% 0;will-change:transform;z-index:-1}.vp-portfolio__items-style-emerge .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);will-change:transform}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-overlay{-webkit-transform:translateY(0);transform:translateY(0)}.vp-portfolio__items-style-emerge .vp-portfolio__item:hover .vp-portfolio__item-overlay::before{-webkit-transform:rotate(3deg);transform:rotate(3deg)}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta a{color:inherit;text-decoration:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta a:hover{opacity:.8}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em;color:inherit}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;bottom:100%;left:0;padding:0;margin-right:0;margin-bottom:0;margin-left:0;list-style-type:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{padding:0;margin:0}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a::after{content:", "}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category:last-of-type a::after{content:none}.vp-portfolio__items-style-emerge .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-left{text-align:left}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-center{text-align:center}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-center .vp-portfolio__item-meta-categories{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-right{text-align:right}.vp-portfolio__items-style-emerge .vp-portfolio__item-align-right .vp-portfolio__item-meta-categories{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}
templates/items-list/items-style/emerge/style.scss CHANGED
@@ -18,6 +18,7 @@
18
  background-color: #fff;
19
  transition: .5s transform cubic-bezier(.07, .72, .24, 1);
20
  transform: translateY(100%);
 
21
 
22
  &::before {
23
  content: "";
@@ -31,6 +32,7 @@
31
  transition: .5s transform ease;
32
  transform: rotate(0deg);
33
  transform-origin: 100% 0;
 
34
  z-index: -1;
35
  }
36
  }
@@ -38,6 +40,7 @@
38
  // Transitions
39
  .vp-portfolio__item-img img {
40
  transition: transform 2s cubic-bezier(.08, .43, .24, 1);
 
41
  }
42
 
43
  .vp-portfolio__item:hover {
18
  background-color: #fff;
19
  transition: .5s transform cubic-bezier(.07, .72, .24, 1);
20
  transform: translateY(100%);
21
+ will-change: transform;
22
 
23
  &::before {
24
  content: "";
32
  transition: .5s transform ease;
33
  transform: rotate(0deg);
34
  transform-origin: 100% 0;
35
+ will-change: transform;
36
  z-index: -1;
37
  }
38
  }
40
  // Transitions
41
  .vp-portfolio__item-img img {
42
  transition: transform 2s cubic-bezier(.08, .43, .24, 1);
43
+ will-change: transform;
44
  }
45
 
46
  .vp-portfolio__item:hover {
templates/items-list/items-style/fade/meta.php CHANGED
@@ -21,9 +21,7 @@ if ( ! $args['url'] ) {
21
  <?php if ( $args['url'] ) : ?>
22
  href="<?php echo esc_url( $args['url'] ); ?>"
23
  <?php endif; ?>
24
- class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>"
25
- data-vp-bg-color="<?php echo esc_attr( $opts['bg_color'] ); ?>"
26
- data-vp-text-color="<?php echo esc_attr( $opts['text_color'] ); ?>">
27
  <div class="vp-portfolio__item-meta">
28
  <?php
29
 
21
  <?php if ( $args['url'] ) : ?>
22
  href="<?php echo esc_url( $args['url'] ); ?>"
23
  <?php endif; ?>
24
+ class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
 
 
25
  <div class="vp-portfolio__item-meta">
26
  <?php
27
 
templates/items-list/items-style/fade/style.css CHANGED
@@ -1 +1 @@
1
- .vp-portfolio__items-style-fade .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-fade .vp-portfolio__item-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:20px;color:#fff;text-decoration:none;background-color:rgba(0,0,0,0.85);opacity:0;-webkit-transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1)}.vp-portfolio__items-style-fade .vp-portfolio__item-meta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;text-align:center;-webkit-transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:transform 1s cubic-bezier(0.07, 0.72, 0.24, 1),opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:transform 1s cubic-bezier(0.07, 0.72, 0.24, 1),opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);-webkit-transform:scale(0.8);transform:scale(0.8)}.vp-portfolio__items-style-fade .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em;color:inherit}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-icon{font-size:2em}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-icon+*{margin-top:15px}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-categories{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;bottom:0;left:0;padding:0;margin:0 -5px;list-style-type:none}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{display:block;padding:4px 15px;margin:0 5px;color:#fff;background-color:#3c3c3c}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-fade .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1)}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-overlay{opacity:1}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-meta{-webkit-transform:scale(1);transform:scale(1)}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-fade .vp-portfolio__item-align-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;text-align:right}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-center .vp-portfolio__item-meta{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:right}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-center .vp-portfolio__item-meta{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:center}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}
1
+ .vp-portfolio__items-style-fade .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-fade .vp-portfolio__item-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:20px;color:#fff;text-decoration:none;background-color:rgba(0,0,0,0.85);opacity:0;-webkit-transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1);will-change:opacity}.vp-portfolio__items-style-fade .vp-portfolio__item-meta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;text-align:center;-webkit-transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:transform 1s cubic-bezier(0.07, 0.72, 0.24, 1),opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1);transition:transform 1s cubic-bezier(0.07, 0.72, 0.24, 1),opacity 1s cubic-bezier(0.07, 0.72, 0.24, 1),-webkit-transform 1s cubic-bezier(0.07, 0.72, 0.24, 1);-webkit-transform:scale(0.8);transform:scale(0.8);will-change:transform, opacity}.vp-portfolio__items-style-fade .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em;color:inherit}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-icon{font-size:2em}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-icon+*{margin-top:15px}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-categories{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;bottom:0;left:0;padding:0;margin:0 -5px;list-style-type:none}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{display:block;padding:4px 15px;margin:0 5px;color:#fff;background-color:#3c3c3c}.vp-portfolio__items-style-fade .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-fade .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);will-change:transform}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-overlay{opacity:1}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-meta{-webkit-transform:scale(1);transform:scale(1)}.vp-portfolio__items-style-fade .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-fade .vp-portfolio__item-align-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;text-align:right}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-center .vp-portfolio__item-meta{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-top-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:right}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-center .vp-portfolio__item-meta{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:center}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-left .vp-portfolio__item-meta{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:left}.vp-portfolio__items-style-fade .vp-portfolio__item-align-bottom-right .vp-portfolio__item-meta{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}
templates/items-list/items-style/fade/style.scss CHANGED
@@ -19,6 +19,7 @@
19
  background-color: rgba(0, 0, 0, .85);
20
  opacity: 0;
21
  transition: opacity 1s cubic-bezier(.07, .72, .24, 1);
 
22
  }
23
 
24
  // meta
@@ -34,6 +35,7 @@
34
  text-align: center;
35
  transition: transform 1s cubic-bezier(.07, .72, .24, 1), opacity 1s cubic-bezier(.07, .72, .24, 1);
36
  transform: scale(.8);
 
37
 
38
  * + * {
39
  margin-top: 4px;
@@ -79,6 +81,7 @@
79
  // Transitions
80
  .vp-portfolio__item-img img {
81
  transition: transform 2s cubic-bezier(.08, .43, .24, 1);
 
82
  }
83
  & .vp-portfolio__item:hover {
84
  .vp-portfolio__item-overlay {
19
  background-color: rgba(0, 0, 0, .85);
20
  opacity: 0;
21
  transition: opacity 1s cubic-bezier(.07, .72, .24, 1);
22
+ will-change: opacity;
23
  }
24
 
25
  // meta
35
  text-align: center;
36
  transition: transform 1s cubic-bezier(.07, .72, .24, 1), opacity 1s cubic-bezier(.07, .72, .24, 1);
37
  transform: scale(.8);
38
+ will-change: transform, opacity;
39
 
40
  * + * {
41
  margin-top: 4px;
81
  // Transitions
82
  .vp-portfolio__item-img img {
83
  transition: transform 2s cubic-bezier(.08, .43, .24, 1);
84
+ will-change: transform;
85
  }
86
  & .vp-portfolio__item:hover {
87
  .vp-portfolio__item-overlay {
templates/items-list/items-style/fly/meta.php CHANGED
@@ -21,9 +21,7 @@ if ( ! $args['url'] ) {
21
  <?php if ( $args['url'] ) : ?>
22
  href="<?php echo esc_url( $args['url'] ); ?>"
23
  <?php endif; ?>
24
- class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>"
25
- data-vp-bg-color="<?php echo esc_attr( $opts['bg_color'] ); ?>"
26
- data-vp-text-color="<?php echo esc_attr( $opts['text_color'] ); ?>">
27
  <div class="vp-portfolio__item-meta">
28
  <?php
29
 
21
  <?php if ( $args['url'] ) : ?>
22
  href="<?php echo esc_url( $args['url'] ); ?>"
23
  <?php endif; ?>
24
+ class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
 
 
25
  <div class="vp-portfolio__item-meta">
26
  <?php
27
 
templates/items-list/items-style/style.css CHANGED
@@ -1 +1 @@
1
- .vp-portfolio__items-style-default .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-default .vp-portfolio__item-img{overflow:hidden}.vp-portfolio__items-style-default .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1)}.vp-portfolio__items-style-default .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-default .vp-portfolio__item-meta{position:relative;padding:10px 15px}.vp-portfolio__items-style-default .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title a{color:inherit;text-decoration:none}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title a:hover{color:#007acc}.vp-portfolio__items-style-default .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;bottom:100%;left:0;padding:15px 10px;margin:0;list-style-type:none}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{padding:0;margin:0 5px}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a{display:block;padding:4px 15px;color:#fff;text-decoration:none;background-color:#3c3c3c;-webkit-transition:.2s background-color;transition:.2s background-color}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a:hover{background-color:#545454}.vp-portfolio__items-style-default .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-default .vp-portfolio__item-align-left{text-align:left}.vp-portfolio__items-style-default .vp-portfolio__item-align-center{text-align:center}.vp-portfolio__items-style-default .vp-portfolio__item-align-right{text-align:right}
1
+ .vp-portfolio__items-style-default .vp-portfolio__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-portfolio__items-style-default .vp-portfolio__item-img{overflow:hidden}.vp-portfolio__items-style-default .vp-portfolio__item-img img{-webkit-transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:-webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);transition:transform 2s cubic-bezier(0.08, 0.43, 0.24, 1), -webkit-transform 2s cubic-bezier(0.08, 0.43, 0.24, 1);will-change:transform}.vp-portfolio__items-style-default .vp-portfolio__item:hover .vp-portfolio__item-img img{-webkit-transform:scale(1.1);transform:scale(1.1)}.vp-portfolio__items-style-default .vp-portfolio__item-meta{position:relative;padding:10px 15px}.vp-portfolio__items-style-default .vp-portfolio__item-meta *+*{margin-top:4px}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title{margin-bottom:0;font-size:1.3em}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title a{color:inherit;text-decoration:none}.vp-portfolio__items-style-default .vp-portfolio__item-meta-title a:hover{color:#007acc}.vp-portfolio__items-style-default .vp-portfolio__item-meta-date{font-size:.85em}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;bottom:100%;left:0;padding:15px 10px;margin:0;list-style-type:none}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category{padding:0;margin:0 5px}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a{display:block;padding:4px 15px;color:#fff;text-decoration:none;background-color:#3c3c3c;-webkit-transition:.2s background-color;transition:.2s background-color;will-change:background-color}.vp-portfolio__items-style-default .vp-portfolio__item-meta-categories .vp-portfolio__item-meta-category a:hover{background-color:#545454}.vp-portfolio__items-style-default .vp-portfolio__item-meta-excerpt{opacity:.8}.vp-portfolio__items-style-default .vp-portfolio__item-align-left{text-align:left}.vp-portfolio__items-style-default .vp-portfolio__item-align-center{text-align:center}.vp-portfolio__items-style-default .vp-portfolio__item-align-right{text-align:right}
templates/items-list/items-style/style.scss CHANGED
@@ -1,90 +1,92 @@
1
- /**
2
- * Default items style
3
- */
4
- .vp-portfolio__items-style-default {
5
- .vp-portfolio__item a {
6
- outline: none;
7
- box-shadow: none;
8
- }
9
-
10
- // Transitions
11
- .vp-portfolio__item-img {
12
- overflow: hidden;
13
- }
14
- .vp-portfolio__item-img img {
15
- transition: transform 2s cubic-bezier(.08, .43, .24, 1);
16
- }
17
- .vp-portfolio__item:hover {
18
- .vp-portfolio__item-img img {
19
- transform: scale(1.1);
20
- }
21
- }
22
-
23
- // meta
24
- .vp-portfolio__item-meta {
25
- position: relative;
26
- padding: 10px 15px;
27
-
28
- * + * {
29
- margin-top: 4px;
30
- }
31
- }
32
- .vp-portfolio__item-meta-title {
33
- margin-bottom: 0;
34
- font-size: 1.3em;
35
-
36
- a {
37
- color: inherit;
38
- text-decoration: none;
39
-
40
- &:hover {
41
- color: #007acc;
42
- }
43
- }
44
- }
45
- .vp-portfolio__item-meta-date {
46
- font-size: .85em;
47
- }
48
- .vp-portfolio__item-meta-categories {
49
- position: absolute;
50
- display: flex;
51
- flex-wrap: wrap;
52
- bottom: 100%;
53
- left: 0;
54
- padding: 15px 10px;
55
- margin: 0;
56
- list-style-type: none;
57
-
58
- .vp-portfolio__item-meta-category {
59
- padding: 0;
60
- margin: 0 5px;
61
-
62
- a {
63
- display: block;
64
- padding: 4px 15px;
65
- color: #fff;
66
- text-decoration: none;
67
- background-color: #3c3c3c;
68
- transition: .2s background-color;
69
-
70
- &:hover {
71
- background-color: #545454;
72
- }
73
- }
74
- }
75
- }
76
- .vp-portfolio__item-meta-excerpt {
77
- opacity: .8;
78
- }
79
-
80
- // align
81
- .vp-portfolio__item-align-left {
82
- text-align: left;
83
- }
84
- .vp-portfolio__item-align-center {
85
- text-align: center;
86
- }
87
- .vp-portfolio__item-align-right {
88
- text-align: right;
89
- }
90
- }
 
 
1
+ /**
2
+ * Default items style
3
+ */
4
+ .vp-portfolio__items-style-default {
5
+ .vp-portfolio__item a {
6
+ outline: none;
7
+ box-shadow: none;
8
+ }
9
+
10
+ // Transitions
11
+ .vp-portfolio__item-img {
12
+ overflow: hidden;
13
+ }
14
+ .vp-portfolio__item-img img {
15
+ transition: transform 2s cubic-bezier(.08, .43, .24, 1);
16
+ will-change: transform;
17
+ }
18
+ .vp-portfolio__item:hover {
19
+ .vp-portfolio__item-img img {
20
+ transform: scale(1.1);
21
+ }
22
+ }
23
+
24
+ // meta
25
+ .vp-portfolio__item-meta {
26
+ position: relative;
27
+ padding: 10px 15px;
28
+
29
+ * + * {
30
+ margin-top: 4px;
31
+ }
32
+ }
33
+ .vp-portfolio__item-meta-title {
34
+ margin-bottom: 0;
35
+ font-size: 1.3em;
36
+
37
+ a {
38
+ color: inherit;
39
+ text-decoration: none;
40
+
41
+ &:hover {
42
+ color: #007acc;
43
+ }
44
+ }
45
+ }
46
+ .vp-portfolio__item-meta-date {
47
+ font-size: .85em;
48
+ }
49
+ .vp-portfolio__item-meta-categories {
50
+ position: absolute;
51
+ display: flex;
52
+ flex-wrap: wrap;
53
+ bottom: 100%;
54
+ left: 0;
55
+ padding: 15px 10px;
56
+ margin: 0;
57
+ list-style-type: none;
58
+
59
+ .vp-portfolio__item-meta-category {
60
+ padding: 0;
61
+ margin: 0 5px;
62
+
63
+ a {
64
+ display: block;
65
+ padding: 4px 15px;
66
+ color: #fff;
67
+ text-decoration: none;
68
+ background-color: #3c3c3c;
69
+ transition: .2s background-color;
70
+ will-change: background-color;
71
+
72
+ &:hover {
73
+ background-color: #545454;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ .vp-portfolio__item-meta-excerpt {
79
+ opacity: .8;
80
+ }
81
+
82
+ // align
83
+ .vp-portfolio__item-align-left {
84
+ text-align: left;
85
+ }
86
+ .vp-portfolio__item-align-center {
87
+ text-align: center;
88
+ }
89
+ .vp-portfolio__item-align-right {
90
+ text-align: right;
91
+ }
92
+ }
templates/items-list/pagination/paged.php CHANGED
@@ -20,9 +20,9 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  <?php if ( $item['url'] ) : ?>
21
  <a href="<?php echo esc_url( $item['url'] ); ?>">
22
  <?php if ( $item['is_prev_arrow'] ) : ?>
23
- <span class="fa fa-angle-left"></span>
24
  <?php elseif ( $item['is_next_arrow'] ) : ?>
25
- <span class="fa fa-angle-right"></span>
26
  <?php else : ?>
27
  <?php echo esc_html( $item['label'] ); ?>
28
  <?php endif; ?>
20
  <?php if ( $item['url'] ) : ?>
21
  <a href="<?php echo esc_url( $item['url'] ); ?>">
22
  <?php if ( $item['is_prev_arrow'] ) : ?>
23
+ <span class="<?php echo esc_attr( $args['arrows_icon_prev'] ); ?>"></span>
24
  <?php elseif ( $item['is_next_arrow'] ) : ?>
25
+ <span class="<?php echo esc_attr( $args['arrows_icon_next'] ); ?>"></span>
26
  <?php else : ?>
27
  <?php echo esc_html( $item['label'] ); ?>
28
  <?php endif; ?>
templates/items-list/pagination/style.css CHANGED
@@ -1 +1 @@
1
- .vp-pagination__style-default{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:-3px;margin-top:17px;list-style-type:none}.vp-pagination__style-default .vp-pagination__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-pagination__style-default.vp-pagination__align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-pagination__style-default.vp-pagination__align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-pagination__style-default .vp-pagination__item{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;margin:3px;text-align:center;list-style-type:none}.vp-pagination__style-default .vp-pagination__item>*{display:block;min-width:40px;padding:8px 16px;line-height:1.4;color:inherit;text-decoration:none;background-color:#fff;border:1px solid #eaeaea;-webkit-transition:.2s border-color, .2s background-color, .2s color;transition:.2s border-color, .2s background-color, .2s color}.vp-pagination__style-default .vp-pagination__item:not(.vp-pagination__item-active)>a:hover{border:1px solid #bfbfbf}.vp-pagination__style-default .vp-pagination__item.vp-pagination__item-active>*{color:#fff;cursor:default;background-color:#6c7781;border:1px solid #6c7781}.vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-no-more,.vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-loading,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more>span,.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>span,.vp-portfolio__loading .vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>.vp-pagination__load-more-no-more{display:none}.vp-pagination__style-default .vp-pagination__load-more>span,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-loading,.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>.vp-pagination__load-more-no-more{display:block}.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more{pointer-events:none;cursor:default;background-color:transparent;border:none;-webkit-transition:none;transition:none}.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more{opacity:.5}.vp-spinner{position:relative;display:inline-block;width:20px;height:20px;margin-top:-2px;vertical-align:middle;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px rgba(0,0,0,0.1);box-shadow:inset 0 0 0 2px rgba(0,0,0,0.1)}.vp-spinner i{position:absolute;display:block;width:7px;height:7px;overflow:hidden;-webkit-transform-origin:10px 10px;transform-origin:10px 10px;-webkit-animation:nk-spinner .4s infinite linear;animation:nk-spinner .4s infinite linear}.vp-spinner i::after{content:"";display:block;width:20px;height:20px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #6c7781;box-shadow:inset 0 0 0 2px #6c7781}@-webkit-keyframes nk-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nk-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
1
+ .vp-pagination__style-default{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:-3px;margin-top:17px;list-style-type:none}.vp-pagination__style-default .vp-pagination__item a{outline:none;-webkit-box-shadow:none;box-shadow:none}.vp-pagination__style-default.vp-pagination__align-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vp-pagination__style-default.vp-pagination__align-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vp-pagination__style-default .vp-pagination__item{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;margin:3px;text-align:center;list-style-type:none}.vp-pagination__style-default .vp-pagination__item>*{display:block;min-width:40px;padding:8px 16px;line-height:1.4;color:inherit;text-decoration:none;background-color:#fff;border:1px solid #eaeaea;-webkit-transition:.2s border-color, .2s background-color, .2s color;transition:.2s border-color, .2s background-color, .2s color;will-change:border-color, background-color, color}.vp-pagination__style-default .vp-pagination__item:not(.vp-pagination__item-active)>a:hover{border:1px solid #bfbfbf}.vp-pagination__style-default .vp-pagination__item.vp-pagination__item-active>*{color:#fff;cursor:default;background-color:#6c7781;border:1px solid #6c7781}.vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-no-more,.vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-loading,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more>span,.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>span,.vp-portfolio__loading .vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>.vp-pagination__load-more-no-more{display:none}.vp-pagination__style-default .vp-pagination__load-more>span,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more>.vp-pagination__load-more-loading,.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more>.vp-pagination__load-more-no-more{display:block}.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more,.vp-portfolio__loading .vp-pagination__style-default .vp-pagination__load-more{pointer-events:none;cursor:default;background-color:transparent;border:none;-webkit-transition:none;transition:none}.vp-pagination__style-default.vp-pagination__no-more .vp-pagination__load-more{opacity:.5}.vp-spinner{position:relative;display:inline-block;width:20px;height:20px;margin-top:-2px;vertical-align:middle;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px rgba(0,0,0,0.1);box-shadow:inset 0 0 0 2px rgba(0,0,0,0.1)}.vp-spinner i{position:absolute;display:block;width:7px;height:7px;overflow:hidden;-webkit-transform-origin:10px 10px;transform-origin:10px 10px;-webkit-animation:vp-spinner .4s infinite linear;animation:vp-spinner .4s infinite linear}.vp-spinner i::after{content:"";display:block;width:20px;height:20px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #6c7781;box-shadow:inset 0 0 0 2px #6c7781}@-webkit-keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes vp-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
templates/items-list/pagination/style.scss CHANGED
@@ -40,6 +40,7 @@
40
  background-color: #fff;
41
  border: 1px solid #eaeaea;
42
  transition: .2s border-color, .2s background-color, .2s color;
 
43
  }
44
 
45
  &:not(.vp-pagination__item-active) > a:hover {
@@ -107,7 +108,7 @@ $weight: 2px !default;
107
  height: $size_inner;
108
  overflow: hidden;
109
  transform-origin: $size / 2 $size / 2;
110
- animation: nk-spinner .4s infinite linear;
111
 
112
  &::after {
113
  content: "";
@@ -120,7 +121,7 @@ $weight: 2px !default;
120
  }
121
  }
122
 
123
- @keyframes nk-spinner {
124
  100% {
125
  transform: rotate(360deg);
126
  }
40
  background-color: #fff;
41
  border: 1px solid #eaeaea;
42
  transition: .2s border-color, .2s background-color, .2s color;
43
+ will-change: border-color, background-color, color;
44
  }
45
 
46
  &:not(.vp-pagination__item-active) > a:hover {
108
  height: $size_inner;
109
  overflow: hidden;
110
  transform-origin: $size / 2 $size / 2;
111
+ animation: vp-spinner .4s infinite linear;
112
 
113
  &::after {
114
  content: "";
121
  }
122
  }
123
 
124
+ @keyframes vp-spinner {
125
  100% {
126
  transform: rotate(360deg);
127
  }