Photo Gallery by Envira – Responsive Image Gallery for WordPress - Version 1.8.3.3

Version Description

Download this release

Release Info

Developer dimensionmedia
Plugin Icon 128x128 Photo Gallery by Envira – Responsive Image Gallery for WordPress
Version 1.8.3.3
Comparing to
See all releases

Code changes from version 1.6.1.7 to 1.8.3.3

Files changed (79) hide show
  1. assets/css/addons.css +1 -1
  2. assets/css/admin.css +1 -1
  3. assets/css/editor.css +1 -1
  4. assets/css/envira.css +1 -1
  5. assets/css/fancybox.css +355 -355
  6. assets/css/images/icons/breadcrumbs.svg +9 -9
  7. assets/css/images/icons/downloads.svg +9 -9
  8. assets/css/images/icons/exif.svg +10 -10
  9. assets/css/images/icons/printing.svg +8 -8
  10. assets/css/images/icons/social.svg +8 -8
  11. assets/css/images/icons/zoom.svg +30 -30
  12. assets/css/justifiedGallery.css +6 -6
  13. assets/css/metabox.css +1339 -1
  14. assets/css/responsivelyLazy.css +45 -45
  15. assets/css/settings.css +1 -1
  16. assets/css/table.css +1 -1
  17. assets/css/welcome.css +1053 -0
  18. assets/images/get-started/How-to-Customize-WordPress-Galleries-for-Mobile-Devices.png +0 -0
  19. assets/images/get-started/add-gallery-tags-in-wordpress.jpg +0 -0
  20. assets/images/get-started/creating.png +0 -0
  21. assets/images/get-started/how-to-create-a-masonry-image-gallery-in-wordpress.jpg +0 -0
  22. assets/images/get-started/how-to-create-image-slider-for-your-wordpress-galleries.jpg +0 -0
  23. assets/images/get-started/placeholder.jpg +0 -0
  24. assets/images/get-started/upgrade-and-save.png +0 -0
  25. assets/images/get-started/upgrade.png +0 -0
  26. assets/images/icons/arrow-down.svg +1 -0
  27. assets/images/icons/automatic-layout.png +0 -0
  28. assets/images/icons/cross.svg +1 -0
  29. assets/images/icons/email.svg +1 -0
  30. assets/images/icons/facebook-black.svg +1 -0
  31. assets/images/icons/facebook.svg +1 -0
  32. assets/images/icons/google-black.svg +1 -0
  33. assets/images/icons/google.svg +1 -0
  34. assets/images/icons/instagram-black.svg +73 -0
  35. assets/images/icons/linkedin-black.svg +1 -0
  36. assets/images/icons/linkedin.svg +1 -0
  37. assets/images/icons/litevspro/complete-guide-to-wpforms-settings.png +0 -0
  38. assets/images/icons/litevspro/cross.svg +1 -0
  39. assets/images/icons/litevspro/cross_red.svg +1 -0
  40. assets/images/icons/litevspro/how-choose-right-form-field.png +0 -0
  41. assets/images/icons/litevspro/how-create-gdpr-compliant-forms.png +0 -0
  42. assets/images/icons/litevspro/how-install-activate-wpforms-addons.png +0 -0
  43. assets/images/icons/litevspro/icon-full.svg +1 -0
  44. assets/images/icons/litevspro/icon-none.svg +1 -0
  45. assets/images/icons/litevspro/icon-partial.svg +1 -0
  46. assets/images/icons/litevspro/plugin-mi.png +0 -0
  47. assets/images/icons/litevspro/plugin-om.png +0 -0
  48. assets/images/icons/litevspro/plugin-smtp.png +0 -0
  49. assets/images/icons/litevspro/team.jpg +0 -0
  50. assets/images/icons/litevspro/tick.svg +1 -0
  51. assets/images/icons/menu.svg +1 -0
  52. assets/images/icons/page.svg +1 -0
  53. assets/images/icons/pinterest-black.svg +1 -0
  54. assets/images/icons/pinterest.svg +1 -0
  55. assets/images/icons/question.svg +1 -0
  56. assets/images/icons/quotation-right.svg +1 -0
  57. assets/images/icons/search.svg +1 -0
  58. assets/images/icons/tick.svg +1 -0
  59. assets/images/icons/twitter-black.svg +1 -0
  60. assets/images/icons/twitter.svg +1 -0
  61. assets/images/icons/youtube-black.svg +1 -0
  62. assets/images/icons/youtube.svg +1 -0
  63. assets/images/logos/gutenberg.svg +256 -0
  64. assets/js/addons.js +494 -381
  65. assets/js/admin.js +49 -49
  66. assets/js/conditional-fields.js +337 -329
  67. assets/js/conditions.js +211 -211
  68. assets/js/editor.js +61 -61
  69. assets/js/envira-gutenberg.js +6 -0
  70. assets/js/envira.js +293 -286
  71. assets/js/gallery-help.js +55 -55
  72. assets/js/gallery-select.js +633 -633
  73. assets/js/lib/enviraJustifiedGallery-extensions.js +419 -416
  74. assets/js/lib/enviratope-item.js +67 -0
  75. assets/js/lib/fancybox.js +863 -847
  76. assets/js/lib/imagesloaded.js +486 -486
  77. assets/js/lib/isotope.js +3495 -3513
  78. assets/js/lib/jquery.easing.js +134 -134
  79. assets/js/lib/jquery.justifiedGallery.js +0 -178
assets/css/addons.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:'envira';src:url("../fonts/envira.eot");src:url("../fonts/envira.eot?#iefix") format("embedded-opentype"),url("../fonts/envira.woff") format("woff"),url("../fonts/envira.ttf") format("truetype"),url("../fonts/envira.svg#envira") format("svg");font-weight:normal;font-style:normal}[class*='envira-']:before{display:inline-block;font-family:'envira';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.envira-configuration:before{content:'\0041'}.envira-leaf:before{content:'\0042'}.envira-lightbox:before{content:'\0044'}.envira-misc:before{content:'\0045'}.envira-mobile:before{content:'\0046'}.envira-pagination:before{content:'\0047'}.envira-proofing:before{content:'\0048'}.envira-slideshow:before{content:'\0049'}.envira-tags:before{content:'\004a'}.envira-thumbnails:before{content:'\004b'}.envira-video:before{content:'\004c'}.envira-watermark:before{content:'\004d'}.envira-cloud-download:before{content:'\004e'}.envira-toggle-on:before{content:'\004f'}.envira-plus-circle:before{content:'\0050'}.envira-down-arrow:before{content:'\0051'}.envira-list:before{content:'\0052'}.envira-grid:before{content:'\0053'}.envira-pinterest-p:before{content:'\0054'}.envira-pencil:before{content:'\0055'}.envira-close:before{content:'\0056'}.envira-check:before{content:'\0057'}#addon-heading:after{content:"";display:table;clear:both}#addon-heading h1{float:left}@media (min-width: 600px) and (max-width: 767px){#addon-heading h1{float:none}}#addon-heading form{float:right}#addon-heading form input{border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px;background-color:#fff;color:#666;margin:7px 10px 0 5px;font-size:14px;padding:5px 8px}#addon-heading form select{margin:-5px 20px 0 0}#addon-heading form .spinner{float:none;margin:-3px auto auto auto}@media (min-width: 600px) and (max-width: 767px){#addon-heading form{float:none;display:table;margin:10px auto 0 auto}}.envira-gallery{margin:20px auto}.envira-hideme{display:none}#envira-gallery-addons{padding:20px 0}#envira-addons .button,#envira-addons .button-primary{text-shadow:none;background-color:#f7f7f7;color:#23282d;font-weight:600;border:1px solid #ccc;line-height:inherit;height:inherit;padding:5px 15px;box-shadow:none;cursor:pointer}#envira-addons .button:hover,#envira-addons .button-primary:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-addons .envira-addon-action-button{padding-left:20px;padding-right:20px}#envira-addons .envira-addon-action-button .envira-cloud-download{font-size:19px;float:left;margin-right:8px;color:#8d8f92}#envira-addons .envira-addon-action-button .envira-toggle-on{font-size:19px;float:left;margin-right:8px;margin-top:1px;color:#7cc048}#envira-addons .envira-addon-upgrade-button{background-color:#7cc048;color:#fff;float:none !important;margin:0 auto;display:table;line-height:25px}#envira-addons .envira-addon-upgrade-button:hover{background-color:#95dc5e;color:#fff;border-color:#95dc5e}#envira-addons .envira-addon-action-button.envira-activate-addon .envira-toggle-on{color:#e92c21;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}#envira-addons .envira-addon-title{margin-top:30px}#envira-addons .envira-addons-area:after{content:"";display:table;clear:both}#envira-addons .envira-addons-area.licensed{margin:20px 0 40px 0;padding:0 0 20px 0;border-bottom:1px solid #ddd}#envira-addons .envira-addons-area .envira-addon{border:1px solid #ddd;position:relative;background:#fff;border-radius:3px;float:left;margin:0 2% 2% 0;min-height:465px;padding:0px;text-align:center;width:32%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#envira-addons .envira-addons-area .envira-addon:nth-child(3n){margin-right:0}#envira-addons .envira-addons-area .envira-addon:nth-child(3n+1){clear:both}@media (min-width: 992px) and (max-width: 1199px){#envira-addons .envira-addons-area .envira-addon{min-height:420px}}@media (min-width: 768px) and (max-width: 991px){#envira-addons .envira-addons-area .envira-addon{width:100% !important;min-height:525px}}@media (min-width: 600px) and (max-width: 767px){#envira-addons .envira-addons-area .envira-addon{width:100% !important;min-height:525px}}#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:20px auto 20px auto;max-width:100%}@media (min-width: 992px) and (max-width: 1199px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}@media (min-width: 768px) and (max-width: 991px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}@media (min-width: 600px) and (max-width: 767px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}#envira-addons .envira-addons-area .envira-addon .envira-addon-excerpt{margin-top:0;margin-bottom:90px;margin-left:0px;margin-right:0px;color:#2f2f2f;font-weight:200;padding:0 20px;display:table}#envira-addons .envira-addons-area .envira-addon .envira-addon-message{background:#f7f7f7;border-top:1px solid #ddd}#envira-addons .envira-addons-area .envira-addon .envira-addon-message,#envira-addons .envira-addons-area .envira-addon .envira-addon-error{position:absolute;bottom:0;float:left;width:100%;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;margin:0;padding:0;text-align:left}#envira-addons .envira-addons-area .envira-addon .envira-addon-message .interior,#envira-addons .envira-addons-area .envira-addon .envira-addon-error .interior{padding:20px}#envira-addons .envira-addons-area .envira-addon .envira-addon-message .interior:after,#envira-addons .envira-addons-area .envira-addon .envira-addon-error .interior:after{content:"";display:table;clear:both}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message span.addon-status,#envira-addons .envira-addons-area .envira-addon .envira-addon-error span.addon-status{float:left;font-weight:bold}#envira-addons .envira-addons-area .envira-addon .envira-addon-message a.button,#envira-addons .envira-addons-area .envira-addon .envira-addon-error a.button{float:right}#envira-addons .envira-addons-area .envira-addon .envira-addon-message span.envira-gallery-spinner,#envira-addons .envira-addons-area .envira-addon .envira-addon-error span.envira-gallery-spinner{position:absolute;bottom:15px;right:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-action{display:inline;float:right}#envira-addons .envira-addons-area .envira-addon .envira-addon-action .button-primary{margin:-5px 0 0 0;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px}#envira-addons .envira-addons-area .envira-addon .envira-addon-action .button-primary:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-addons .envira-addons-area .envira-addon .envira-addon-error{bottom:10px;float:none;left:15px;right:20px;width:auto}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .xinterior{width:100%;margin:0;background:#fff;border-left:4px solid #dc3232;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#envira-addons .envira-addons-area .envira-addon .envira-addon-error p{padding:10px;margin:5px 10px}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .wrap{margin:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .icon32{display:none}#envira-addons .envira-addons-area .envira-addon .envira-addon-error h2{padding:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .form-table th{padding:10px 0;width:30% !important}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .form-table input[type="text"],#envira-addons .envira-addons-area .envira-addon .envira-addon-error .envira-addon .envira-addon-error .form-table input[type="password"]{width:100% !important}#envira-addons .envira-addons-area .envira-addon .envira-addon-error p.submit{padding:0}#envira-addons .envira-addons-area .envira-addon p{color:#2f2f2f;font-size:13px;margin:10px 0 0;text-shadow:0 1px #fff}#envira-addons .envira-addons-area #envira-addons-unlock-more-area{margin:40px auto 20px auto;padding-bottom:0;border-bottom:0}#envira-addons-more-area .envira-addon .interior{padding:15px 20px !important}#envira-addons-refresh-addons-form{width:100%;max-width:850px;float:left}@media (min-width: 992px) and (max-width: 1199px){#envira-addons-refresh-addons-form{max-width:450px}}@media (min-width: 768px) and (max-width: 991px){#envira-addons-refresh-addons-form{max-width:50%}#envira-addons-refresh-addons-form input.button{display:block}}@media (min-width: 600px) and (max-width: 767px){#envira-addons-refresh-addons-form{width:100%;float:none}#envira-addons-refresh-addons-form input.button{display:block}}#envira-filter-form{float:right}#envira-filter-form input[type='submit'],#envira-filter-form select{background-color:#f7f7f7;color:#23282d;border:1px solid #ddd;height:30px;width:120px;margin-top:-2px}#envira-filter-form input{padding:5px 15px;box-shadow:0;cursor:pointer;background-color:#f7f7f7;color:#23282d}#envira-filter-form input:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-filter-form .spinner{float:left}.clearfix:after{content:"";display:table;clear:both}@media only screen and (max-width: 1050px){#envira-addons-area .envira-addon{width:49%}#envira-addons-area .envira-addon:nth-child(2n){margin-right:0}#envira-addons-area .envira-addon:nth-child(2n+1){clear:both}#envira-addons-area .envira-addon:nth-child(3n){margin-right:2%}#envira-addons-area .envira-addon:nth-child(3n+1){clear:none}#envira-addons-area .envira-addon .envira-addon-excerpt{margin-bottom:90px}}@media only screen and (max-width: 782px){#envira-addons-area .envira-addon{min-height:auto}#envira-addons-area .envira-addon .envira-addon-action .button-primary{margin:-7px 0 0 0}}@media only screen and (max-width: 600px){#envira-addons-area .envira-addon{width:99%}#envira-addons-area .envira-addon .envira-addon-message{float:left;width:100%}#envira-addons-area .envira-addon .envira-addon-message span.addon-status{display:block;width:100%;margin:0 0 5px 0;text-align:center}#envira-addons-area .envira-addon .envira-addon-message div.envira-addon-action{clear:both;display:block;width:100%;text-align:center}#envira-addons-area .envira-addon .envira-addon-message div.envira-addon-action .button-primary{clear:both;float:none;margin:0 auto}#envira-addons-area .envira-addon .envira-addon-excerpt{margin-bottom:120px}}
1
+ @font-face{font-family:'envira';src:url("../fonts/envira.eot");src:url("../fonts/envira.eot?#iefix") format("embedded-opentype"),url("../fonts/envira.woff") format("woff"),url("../fonts/envira.ttf") format("truetype"),url("../fonts/envira.svg#envira") format("svg");font-weight:normal;font-style:normal}[class*='envira-']:before{display:inline-block;font-family:'envira';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.envira-configuration:before{content:'\0041'}.envira-leaf:before{content:'\0042'}.envira-lightbox:before{content:'\0044'}.envira-misc:before{content:'\0045'}.envira-mobile:before{content:'\0046'}.envira-pagination:before{content:'\0047'}.envira-proofing:before{content:'\0048'}.envira-slideshow:before{content:'\0049'}.envira-tags:before{content:'\004a'}.envira-thumbnails:before{content:'\004b'}.envira-video:before{content:'\004c'}.envira-watermark:before{content:'\004d'}.envira-cloud-download:before{content:'\004e'}.envira-toggle-on:before{content:'\004f'}.envira-plus-circle:before{content:'\0050'}.envira-down-arrow:before{content:'\0051'}.envira-list:before{content:'\0052'}.envira-grid:before{content:'\0053'}.envira-pinterest-p:before{content:'\0054'}.envira-pencil:before{content:'\0055'}.envira-close:before{content:'\0056'}.envira-check:before{content:'\0057'}#addon-heading:after{content:"";display:table;clear:both}#addon-heading h1{float:left}@media (min-width: 600px) and (max-width: 767px){#addon-heading h1{float:none}}#addon-heading form{float:right}#addon-heading form input{border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px;background-color:#fff;color:#666;margin:7px 10px 0 5px;font-size:14px;padding:5px 8px}#addon-heading form select{margin:-5px 20px 0 0}#addon-heading form .spinner{float:none;margin:-3px auto auto auto}@media (min-width: 600px) and (max-width: 767px){#addon-heading form{float:none;display:table;margin:10px auto 0 auto}}.envira-gallery{margin:20px auto}.envira-hideme{display:none}#envira-gallery-addons{padding:20px 0}#envira-addons .button,#envira-addons .button-primary{text-shadow:none;background-color:#f7f7f7;color:#23282d;font-weight:600;border:1px solid #ccc;line-height:inherit;height:inherit;padding:5px 15px;box-shadow:none;cursor:pointer}#envira-addons .button:hover,#envira-addons .button-primary:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-addons .envira-addon-action-button{padding-left:20px;padding-right:20px}#envira-addons .envira-addon-action-button .envira-cloud-download{font-size:19px;float:left;margin-right:8px;color:#8d8f92}#envira-addons .envira-addon-action-button .envira-toggle-on{font-size:19px;float:left;margin-right:8px;margin-top:1px;color:#7cc048}#envira-addons .envira-addon-upgrade-button{background-color:#7cc048;color:#fff;float:none !important;margin:0 auto;display:table;line-height:25px}#envira-addons .envira-addon-upgrade-button:hover{background-color:#95dc5e;color:#fff;border-color:#95dc5e}#envira-addons .envira-addon-action-button.envira-activate-addon .envira-toggle-on{color:#e92c21;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}#envira-addons .envira-addon-title{margin-top:30px}#envira-addons .envira-addons-area:after{content:"";display:table;clear:both}#envira-addons .envira-addons-area.licensed{margin:20px 0 40px 0;padding:0 0 20px 0;border-bottom:1px solid #ddd}#envira-addons .envira-addons-area .envira-addon{border:1px solid #ddd;position:relative;background:#fff;border-radius:3px;float:left;margin:0 2% 2% 0;min-height:465px;padding:0px;text-align:center;width:32%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#envira-addons .envira-addons-area .envira-addon:nth-child(3n){margin-right:0}#envira-addons .envira-addons-area .envira-addon:nth-child(3n+1){clear:both}@media (min-width: 992px) and (max-width: 1199px){#envira-addons .envira-addons-area .envira-addon{min-height:420px}}@media (min-width: 768px) and (max-width: 991px){#envira-addons .envira-addons-area .envira-addon{width:100% !important;min-height:525px}}@media (min-width: 600px) and (max-width: 767px){#envira-addons .envira-addons-area .envira-addon{width:100% !important;min-height:525px}}#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:20px auto 20px auto;max-width:100%}@media (min-width: 992px) and (max-width: 1199px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}@media (min-width: 768px) and (max-width: 991px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}@media (min-width: 600px) and (max-width: 767px){#envira-addons .envira-addons-area .envira-addon .envira-addon-thumb{margin:10px auto 15px auto}}#envira-addons .envira-addons-area .envira-addon .envira-addon-excerpt{margin-top:0;margin-bottom:90px;margin-left:0px;margin-right:0px;color:#2f2f2f;font-weight:200;padding:0 20px;display:table}#envira-addons .envira-addons-area .envira-addon .envira-addon-message{background:#f7f7f7;border-top:1px solid #ddd}#envira-addons .envira-addons-area .envira-addon .envira-addon-message,#envira-addons .envira-addons-area .envira-addon .envira-addon-error{position:absolute;bottom:0;float:left;width:100%;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;margin:0;padding:0;text-align:left}#envira-addons .envira-addons-area .envira-addon .envira-addon-message .interior,#envira-addons .envira-addons-area .envira-addon .envira-addon-error .interior{padding:20px}#envira-addons .envira-addons-area .envira-addon .envira-addon-message .interior:after,#envira-addons .envira-addons-area .envira-addon .envira-addon-error .interior:after{content:"";display:table;clear:both}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-active .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-active .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-inactive .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-inactive .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-active .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-active .addon-status span{color:#7cc048}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-inactive .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-inactive .addon-status span{color:#e82c20}#envira-addons .envira-addons-area .envira-addon .envira-addon-message.envira-addon-not-installed .interior.envira-addon-not-installed .addon-status span,#envira-addons .envira-addons-area .envira-addon .envira-addon-error.envira-addon-not-installed .interior.envira-addon-not-installed .addon-status span{color:#a3a4a5}#envira-addons .envira-addons-area .envira-addon .envira-addon-message span.addon-status,#envira-addons .envira-addons-area .envira-addon .envira-addon-error span.addon-status{float:left;font-weight:bold}#envira-addons .envira-addons-area .envira-addon .envira-addon-message a.button,#envira-addons .envira-addons-area .envira-addon .envira-addon-error a.button{float:right}#envira-addons .envira-addons-area .envira-addon .envira-addon-message span.envira-gallery-spinner,#envira-addons .envira-addons-area .envira-addon .envira-addon-error span.envira-gallery-spinner{position:absolute;bottom:15px;right:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-action{display:inline;float:right}#envira-addons .envira-addons-area .envira-addon .envira-addon-action .button-primary{margin:-5px 0 0 0;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px}#envira-addons .envira-addons-area .envira-addon .envira-addon-action .button-primary:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-addons .envira-addons-area .envira-addon .envira-addon-error{bottom:10px;float:none;left:15px;right:20px;width:auto}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .xinterior{width:100%;margin:0;background:#fff;border-left:4px solid #dc3232;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#envira-addons .envira-addons-area .envira-addon .envira-addon-error p{padding:10px;margin:5px 10px}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .wrap{margin:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .icon32{display:none}#envira-addons .envira-addons-area .envira-addon .envira-addon-error h2{padding:0}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .form-table th{padding:10px 0;width:30% !important}#envira-addons .envira-addons-area .envira-addon .envira-addon-error .form-table input[type="text"],#envira-addons .envira-addons-area .envira-addon .envira-addon-error .envira-addon .envira-addon-error .form-table input[type="password"]{width:100% !important}#envira-addons .envira-addons-area .envira-addon .envira-addon-error p.submit{padding:0}#envira-addons .envira-addons-area .envira-addon p{color:#2f2f2f;font-size:13px;margin:10px 0 0;text-shadow:0 1px #fff}#envira-addons .envira-addons-area #envira-addons-unlock-more-area{margin:40px auto 20px auto;padding-bottom:0;border-bottom:0}#envira-addons-more-area .envira-addon .interior{padding:15px 20px !important}#envira-addons-refresh-addons-form{width:100%;max-width:850px;float:left}@media (min-width: 992px) and (max-width: 1199px){#envira-addons-refresh-addons-form{max-width:450px}}@media (min-width: 768px) and (max-width: 991px){#envira-addons-refresh-addons-form{max-width:50%}#envira-addons-refresh-addons-form input.button{display:block}}@media (min-width: 600px) and (max-width: 767px){#envira-addons-refresh-addons-form{width:100%;float:none}#envira-addons-refresh-addons-form input.button{display:block}}#envira-filter-form{float:right}#envira-filter-form input[type='submit'],#envira-filter-form select{background-color:#f7f7f7;color:#23282d;border:1px solid #ddd;height:30px;width:120px;margin-top:-2px}#envira-filter-form input{padding:5px 15px;box-shadow:0;cursor:pointer;background-color:#f7f7f7;color:#23282d}#envira-filter-form input:hover{color:#23282d;background-color:#fafafa;border-color:#999}#envira-filter-form .spinner{float:left}.clearfix:after{content:"";display:table;clear:both}@media only screen and (max-width: 1050px){#envira-addons-area .envira-addon{width:49%}#envira-addons-area .envira-addon:nth-child(2n){margin-right:0}#envira-addons-area .envira-addon:nth-child(2n+1){clear:both}#envira-addons-area .envira-addon:nth-child(3n){margin-right:2%}#envira-addons-area .envira-addon:nth-child(3n+1){clear:none}#envira-addons-area .envira-addon .envira-addon-excerpt{margin-bottom:90px}}@media only screen and (max-width: 782px){#envira-addons-area .envira-addon{min-height:auto}#envira-addons-area .envira-addon .envira-addon-action .button-primary{margin:-7px 0 0 0}}@media only screen and (max-width: 600px){#envira-addons-area .envira-addon{width:99%}#envira-addons-area .envira-addon .envira-addon-message{float:left;width:100%}#envira-addons-area .envira-addon .envira-addon-message span.addon-status{display:block;width:100%;margin:0 0 5px 0;text-align:center}#envira-addons-area .envira-addon .envira-addon-message div.envira-addon-action{clear:both;display:block;width:100%;text-align:center}#envira-addons-area .envira-addon .envira-addon-message div.envira-addon-action .button-primary{clear:both;float:none;margin:0 auto}#envira-addons-area .envira-addon .envira-addon-excerpt{margin-bottom:120px}}
assets/css/admin.css CHANGED
@@ -1 +1 @@
1
- body.post-type-envira #wpcontent,body.post-type-envira_album #wpcontent{padding-left:0}body.post-type-envira .update-nag,body.post-type-envira_album .update-nag{margin-left:20px;margin-bottom:20px}body.post-type-envira .subheading,body.post-type-envira_album .subheading{background-color:#fff;height:45px;margin-left:-20px}@media (min-width: 600px) and (max-width: 767px){body.post-type-envira .subheading,body.post-type-envira_album .subheading{height:auto;padding-bottom:20px}}body.post-type-envira .subheading h1,body.post-type-envira_album .subheading h1{font-size:20px;font-weight:400;line-height:45px;margin:0 0 0 20px;padding-left:20px}body.post-type-envira div.wrap,body.post-type-envira_album div.wrap{margin:0}body.post-type-envira div.wrap a.page-title-action,body.post-type-envira_album div.wrap a.page-title-action{position:relative;top:-55px;left:185px}body.post-type-envira div.wrap a.page-title-action:hover,body.post-type-envira_album div.wrap a.page-title-action:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira div.wrap>h1,body.post-type-envira div.wrap>h2,body.post-type-envira_album div.wrap>h1,body.post-type-envira_album div.wrap>h2{margin:0 0 20px 0;padding:15px 0 10px;background:#fff;font-weight:600;font-size:20px;width:100%;text-indent:20px}body.post-type-envira div.wrap>h1 a.page-title-action,body.post-type-envira div.wrap>h2 a.page-title-action,body.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px;left:auto}body.post-type-envira div.wrap>h1 a.page-title-action:hover,body.post-type-envira div.wrap>h2 a.page-title-action:hover,body.post-type-envira_album div.wrap>h1 a.page-title-action:hover,body.post-type-envira_album div.wrap>h2 a.page-title-action:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira div.wrap>h1 span.subtitle,body.post-type-envira div.wrap>h2 span.subtitle,body.post-type-envira_album div.wrap>h1 span.subtitle,body.post-type-envira_album div.wrap>h2 span.subtitle{float:right}body.post-type-envira div.wrap .envira-tab,body.post-type-envira_album div.wrap .envira-tab{display:none}body.post-type-envira div.wrap .envira-tab.envira-active,body.post-type-envira_album div.wrap .envira-tab.envira-active{display:block}body.post-type-envira div.wrap div.envira-code,body.post-type-envira_album div.wrap div.envira-code{position:relative;margin:0 0 10px 0}body.post-type-envira div.wrap div.envira-code:after,body.post-type-envira_album div.wrap div.envira-code:after{content:"";display:table;clear:both}body.post-type-envira div.wrap div.envira-code code,body.post-type-envira_album div.wrap div.envira-code code{display:block;font-size:11px;padding:5px 20px 5px 5px}body.post-type-envira div.wrap div.envira-code a.envira-clipboard,body.post-type-envira_album div.wrap div.envira-code a.envira-clipboard{position:absolute;top:5px;right:5px;color:#23282d}body.post-type-envira div.wrap div.envira-code a.envira-clipboard span,body.post-type-envira_album div.wrap div.envira-code a.envira-clipboard span{display:block;text-indent:-9999px}body.post-type-envira .button,body.post-type-envira_album .button{-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:0 16px 1px;height:33px;line-height:30px;text-decoration:none;text-shadow:none;font-weight:600;-webkit-box-shadow:none;box-shadow:none}body.post-type-envira .button.button-small,body.post-type-envira_album .button.button-small{padding:0 8px 1px;line-height:22px;height:24px}body.post-type-envira .button.button-x-large,body.post-type-envira_album .button.button-x-large{padding:0 32px 1px;line-height:48px;height:50px;font-size:18px;text-transform:uppercase}@media (min-width: 600px) and (max-width: 767px){body.post-type-envira .button,body.post-type-envira_album .button{margin-top:10px}}body.post-type-envira .button.show-settings,body.post-type-envira_album .button.show-settings{height:auto}body.post-type-envira .button.button-primary,body.post-type-envira_album .button.button-primary{background:#7cc048;border-color:#7cc048;-webkit-box-shadow:none;box-shadow:none;color:#fff}body.post-type-envira .button.button-primary:hover,body.post-type-envira_album .button.button-primary:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira .button.button-danger,body.post-type-envira_album .button.button-danger{background:#e02626;border-color:#e02626;-webkit-box-shadow:none;box-shadow:none;color:#fff}body.post-type-envira .button.button-danger:hover,body.post-type-envira_album .button.button-danger:hover{background:#f85959;border-color:#f85959;color:#fff}body.post-type-envira div#TB_window div.wrap,body.post-type-envira_album div#TB_window div.wrap{margin:10px 20px 0 2px}body.post-type-envira.locale-fr-fr div.wrap a.page-title-action,body.post-type-envira_album.locale-fr-fr div.wrap a.page-title-action{left:220px}#envira-header-temp{position:relative}#envira-header{background-color:#7cc048;height:120px}@media (max-width: 599px){#envira-header{padding-top:46px}}#envira-header h1.envira-logo{margin:0;line-height:120px;margin-left:20px}#envira-header h1.envira-logo img{max-width:339px;height:auto;width:90%}@media (min-width: 600px) and (max-width: 767px){#envira-header h1.envira-logo img{width:90%}}@media (max-width: 599px){#wpbody{padding-top:0}}body.post-type-envira_album div.wrap a.page-title-action{left:180px !important}body.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}body.post-php.post-type-envira_album div.wrap a.page-title-action{left:200px !important}body.post-php.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-php.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}body.post-php.post-type-envira div.wrap a.page-title-action{left:215px !important}body.post-php.post-type-envira div.wrap>h1 a.page-title-action,body.post-php.post-type-envira div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}.envira-notice{position:relative;margin:0 0 20px 0;padding:20px;-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px}.envira-notice p.envira-intro{border:none !important;margin:0 0 20px 0 !important;padding:0 !important}.envira-notice .notice-dismiss{top:10px;right:10px;color:#fff}.envira-notice .notice-dismiss:before{color:#fff;width:26px;height:26px;font-size:22px}.envira-notice.success{background:#7cc048;color:#fff;border:none}.envira-notice.success .button.button-primary{background-color:#95dc5e;border-color:#95dc5e}.envira-notice.warning{background:#fcf8e3;border:1px solid #faebcc}.envira-notice.warning .notice-dismiss{color:#000}.envira-notice.warning .notice-dismiss:before{color:#000}.envira-notice.error{border-top:1px solid #dc3232;border-right:1px solid #dc3232;border-bottom:1px solid #dc3232}body.post-type-envira.edit-php div.wrap,body.post-type-envira.post-new-php div.wrap,body.post-type-envira.post-php div.wrap,body.post-type-envira_album.edit-php div.wrap,body.post-type-envira_album.post-new-php div.wrap,body.post-type-envira_album.post-php div.wrap{margin:0}body.post-type-envira.edit-php div.wrap>div.error,body.post-type-envira.edit-php div.wrap>div.notice,body.post-type-envira.edit-php div.wrap>div.updated,body.post-type-envira.post-new-php div.wrap>div.error,body.post-type-envira.post-new-php div.wrap>div.notice,body.post-type-envira.post-new-php div.wrap>div.updated,body.post-type-envira.post-php div.wrap>div.error,body.post-type-envira.post-php div.wrap>div.notice,body.post-type-envira.post-php div.wrap>div.updated,body.post-type-envira_album.edit-php div.wrap>div.error,body.post-type-envira_album.edit-php div.wrap>div.notice,body.post-type-envira_album.edit-php div.wrap>div.updated,body.post-type-envira_album.post-new-php div.wrap>div.error,body.post-type-envira_album.post-new-php div.wrap>div.notice,body.post-type-envira_album.post-new-php div.wrap>div.updated,body.post-type-envira_album.post-php div.wrap>div.error,body.post-type-envira_album.post-php div.wrap>div.notice,body.post-type-envira_album.post-php div.wrap>div.updated{margin-left:20px;margin-right:20px}body.post-type-envira.edit-tags-php div.wrap,body.post-type-envira.taxonomy-envira-tag div.wrap{margin:0}body.post-type-envira.edit-tags-php div.wrap>div.error,body.post-type-envira.edit-tags-php div.wrap>div.notice,body.post-type-envira.edit-tags-php div.wrap>div.updated,body.post-type-envira.taxonomy-envira-tag div.wrap>div.error,body.post-type-envira.taxonomy-envira-tag div.wrap>div.notice,body.post-type-envira.taxonomy-envira-tag div.wrap>div.updated{margin-left:20px;margin-right:20px}body.post-type-envira.edit-tags-php div.wrap form.search-form,body.post-type-envira.edit-tags-php div.wrap form#edittag,body.post-type-envira.edit-tags-php div.wrap #col-container,body.post-type-envira.taxonomy-envira-tag div.wrap form.search-form,body.post-type-envira.taxonomy-envira-tag div.wrap form#edittag,body.post-type-envira.taxonomy-envira-tag div.wrap #col-container{margin:0 20px}body.post-type-envira.edit-tags-php div.wrap .button,body.post-type-envira.taxonomy-envira-tag div.wrap .button{height:28px;line-height:26px}body.post-type-envira div.wrap{margin:0 20px}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor div.envira-gallery-error{position:absolute;top:50px;left:0;right:300px}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment{width:20%}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail img{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0.2}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail strong{position:absolute;z-index:2;height:50%;top:0;left:0;right:0;padding:10px;text-align:center;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;background:rgba(0,0,0,0.07);text-shadow:1px 1px #ddd}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail strong span{display:block;position:absolute;bottom:10px;left:0;right:0;padding:0 10px;text-align:center}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail code{position:absolute;z-index:2;height:50%;bottom:0;left:0;right:0;padding:10px;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;text-shadow:1px 1px #ddd}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor div.media-sidebar div.settings .name{text-align:left}@media screen and (max-width: 782px){body.post-type-envira .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}@media screen and (max-width: 640px){body.post-type-envira div.wrap h1,body.post-type-envira_album div.wrap h1{padding-bottom:40px}body.post-type-envira div.wrap h1 span.subtitle,body.post-type-envira_album div.wrap h1 span.subtitle{clear:both;width:100%;padding:0}}@media screen and (max-width: 340px){body.post-type-envira div.wrap h1,body.post-type-envira_album div.wrap h1{text-align:center}body.post-type-envira div.wrap h1 a.page-title-action,body.post-type-envira_album div.wrap h1 a.page-title-action{display:block;text-align:center;margin:10px 0 0 0}}
1
+ body.post-type-envira #wpcontent,body.post-type-envira_album #wpcontent{padding-left:0}body.post-type-envira .update-nag,body.post-type-envira_album .update-nag{margin-left:20px;margin-bottom:20px}body.post-type-envira .subheading,body.post-type-envira_album .subheading{background-color:#fff;height:45px;margin-left:-20px}@media (min-width: 600px) and (max-width: 767px){body.post-type-envira .subheading,body.post-type-envira_album .subheading{height:auto;padding-bottom:20px}}body.post-type-envira .subheading h1,body.post-type-envira_album .subheading h1{font-size:20px;font-weight:400;line-height:45px;margin:0 0 0 20px;padding-left:20px}body.post-type-envira div.wrap,body.post-type-envira_album div.wrap{margin:0}body.post-type-envira div.wrap a.page-title-action,body.post-type-envira_album div.wrap a.page-title-action{position:relative;top:-53px;left:115px}body.post-type-envira div.wrap a.page-title-action:hover,body.post-type-envira_album div.wrap a.page-title-action:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira div.wrap>h1,body.post-type-envira div.wrap>h2,body.post-type-envira_album div.wrap>h1,body.post-type-envira_album div.wrap>h2{margin:0 0 20px 0;padding:15px 0 10px;background:#fff;font-weight:600;font-size:20px;width:100%;text-indent:20px}body.post-type-envira div.wrap>h1 a.page-title-action,body.post-type-envira div.wrap>h2 a.page-title-action,body.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px;left:auto}body.post-type-envira div.wrap>h1 a.page-title-action:hover,body.post-type-envira div.wrap>h2 a.page-title-action:hover,body.post-type-envira_album div.wrap>h1 a.page-title-action:hover,body.post-type-envira_album div.wrap>h2 a.page-title-action:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira div.wrap>h1 span.subtitle,body.post-type-envira div.wrap>h2 span.subtitle,body.post-type-envira_album div.wrap>h1 span.subtitle,body.post-type-envira_album div.wrap>h2 span.subtitle{float:right}body.post-type-envira div.wrap .envira-tab,body.post-type-envira_album div.wrap .envira-tab{display:none}body.post-type-envira div.wrap .envira-tab.envira-active,body.post-type-envira_album div.wrap .envira-tab.envira-active{display:block}body.post-type-envira div.wrap div.envira-code,body.post-type-envira_album div.wrap div.envira-code{position:relative;margin:0 0 10px 0}body.post-type-envira div.wrap div.envira-code:after,body.post-type-envira_album div.wrap div.envira-code:after{content:"";display:table;clear:both}body.post-type-envira div.wrap div.envira-code code,body.post-type-envira_album div.wrap div.envira-code code{display:block;font-size:11px;padding:5px 20px 5px 5px}body.post-type-envira div.wrap div.envira-code a.envira-clipboard,body.post-type-envira_album div.wrap div.envira-code a.envira-clipboard{position:absolute;top:5px;right:5px;color:#23282d}body.post-type-envira div.wrap div.envira-code a.envira-clipboard span,body.post-type-envira_album div.wrap div.envira-code a.envira-clipboard span{display:block;text-indent:-9999px}body.post-type-envira .button,body.post-type-envira_album .button{-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:0 16px 1px;height:33px;line-height:30px;text-decoration:none;text-shadow:none;font-weight:600;-webkit-box-shadow:none;box-shadow:none}body.post-type-envira .button.button-small,body.post-type-envira_album .button.button-small{padding:0 8px 1px;line-height:22px;height:24px}body.post-type-envira .button.button-x-large,body.post-type-envira_album .button.button-x-large{padding:0 32px 1px;line-height:48px;height:50px;font-size:18px;text-transform:uppercase}@media (min-width: 600px) and (max-width: 767px){body.post-type-envira .button,body.post-type-envira_album .button{margin-top:10px}}body.post-type-envira .button.show-settings,body.post-type-envira_album .button.show-settings{height:auto}body.post-type-envira .button.button-primary,body.post-type-envira_album .button.button-primary{background:#7cc048;border-color:#7cc048;-webkit-box-shadow:none;box-shadow:none;color:#fff}body.post-type-envira .button.button-primary:hover,body.post-type-envira_album .button.button-primary:hover{background:#95dc5e;border-color:#95dc5e;color:#fff}body.post-type-envira .button.button-danger,body.post-type-envira_album .button.button-danger{background:#e02626;border-color:#e02626;-webkit-box-shadow:none;box-shadow:none;color:#fff}body.post-type-envira .button.button-danger:hover,body.post-type-envira_album .button.button-danger:hover{background:#f85959;border-color:#f85959;color:#fff}body.post-type-envira div#TB_window div.wrap,body.post-type-envira_album div#TB_window div.wrap{margin:10px 20px 0 2px}body.post-type-envira.locale-fr-fr div.wrap a.page-title-action,body.post-type-envira_album.locale-fr-fr div.wrap a.page-title-action{left:220px}#envira-header-temp{position:relative}#envira-header{background-color:#7cc048;height:120px}@media (max-width: 599px){#envira-header{padding-top:46px}}#envira-header h1.envira-logo{margin:0;line-height:120px;margin-left:20px}#envira-header h1.envira-logo img{max-width:339px;height:auto;width:90%}@media (min-width: 600px) and (max-width: 767px){#envira-header h1.envira-logo img{width:90%}}@media (max-width: 599px){#wpbody{padding-top:0}}body.post-type-envira_album div.wrap a.page-title-action{left:180px !important}body.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}body.post-php.post-type-envira_album div.wrap a.page-title-action{left:200px !important}body.post-php.post-type-envira_album div.wrap>h1 a.page-title-action,body.post-php.post-type-envira_album div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}body.post-php.post-type-envira div.wrap a.page-title-action{left:140px !important}body.post-php.post-type-envira div.wrap>h1 a.page-title-action,body.post-php.post-type-envira div.wrap>h2 a.page-title-action{top:-3px !important;left:auto !important}body.post-php.post-type-envira div.wrap span.subtitle{display:block;margin-top:-10px;padding-left:21px}body.edit-php.post-type-envira div.wrap span.subtitle{display:block;margin-top:-15px;margin-bottom:10px;padding-left:22px}.envira-notice{position:relative;margin:0 0 20px 0;padding:20px;-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px}.envira-notice p.envira-intro{border:none !important;margin:0 0 20px 0 !important;padding:0 !important}.envira-notice .dashicons.star{color:#ff982d;line-height:1.3;font-size:15px;width:15px;height:15px}.envira-notice .notice-dismiss{top:10px;right:10px;color:#fff}.envira-notice .notice-dismiss:before{color:#fff;width:26px;height:26px;font-size:22px}.envira-notice .no-margin-top{margin-top:0}.envira-notice.success{background:#7cc048;color:#fff;border:none}.envira-notice.success .button.button-primary{background-color:#95dc5e;border-color:#95dc5e}.envira-notice.warning{background:#fcf8e3;border:1px solid #faebcc}.envira-notice.warning .notice-dismiss{color:#000}.envira-notice.warning .notice-dismiss:before{color:#000}.envira-notice.error{border-top:1px solid #dc3232;border-right:1px solid #dc3232;border-bottom:1px solid #dc3232}.envira-tab .two-column-list{display:table;width:100%}.envira-tab .two-column-list ul{list-style:none;margin-left:0;padding-left:1em;text-indent:-1em;width:45%;padding-right:10px;float:left}.envira-tab .two-column-list ul li:before{content:"+ "}.envira-tab .two-column-list ul li{line-height:1.5}.upgrade-content .two-column-list li{line-height:21px}.cta-buttons{margin-top:40px}body.post-type-envira.edit-php div.wrap,body.post-type-envira.post-new-php div.wrap,body.post-type-envira.post-php div.wrap,body.post-type-envira_album.edit-php div.wrap,body.post-type-envira_album.post-new-php div.wrap,body.post-type-envira_album.post-php div.wrap{margin:0}body.post-type-envira.edit-php div.wrap>div.error,body.post-type-envira.edit-php div.wrap>div.notice,body.post-type-envira.edit-php div.wrap>div.updated,body.post-type-envira.post-new-php div.wrap>div.error,body.post-type-envira.post-new-php div.wrap>div.notice,body.post-type-envira.post-new-php div.wrap>div.updated,body.post-type-envira.post-php div.wrap>div.error,body.post-type-envira.post-php div.wrap>div.notice,body.post-type-envira.post-php div.wrap>div.updated,body.post-type-envira_album.edit-php div.wrap>div.error,body.post-type-envira_album.edit-php div.wrap>div.notice,body.post-type-envira_album.edit-php div.wrap>div.updated,body.post-type-envira_album.post-new-php div.wrap>div.error,body.post-type-envira_album.post-new-php div.wrap>div.notice,body.post-type-envira_album.post-new-php div.wrap>div.updated,body.post-type-envira_album.post-php div.wrap>div.error,body.post-type-envira_album.post-php div.wrap>div.notice,body.post-type-envira_album.post-php div.wrap>div.updated{margin-left:20px;margin-right:20px}body.post-type-envira.edit-tags-php div.wrap,body.post-type-envira.taxonomy-envira-tag div.wrap{margin:0}body.post-type-envira.edit-tags-php div.wrap>div.error,body.post-type-envira.edit-tags-php div.wrap>div.notice,body.post-type-envira.edit-tags-php div.wrap>div.updated,body.post-type-envira.taxonomy-envira-tag div.wrap>div.error,body.post-type-envira.taxonomy-envira-tag div.wrap>div.notice,body.post-type-envira.taxonomy-envira-tag div.wrap>div.updated{margin-left:20px;margin-right:20px}body.post-type-envira.edit-tags-php div.wrap form.search-form,body.post-type-envira.edit-tags-php div.wrap form#edittag,body.post-type-envira.edit-tags-php div.wrap #col-container,body.post-type-envira.taxonomy-envira-tag div.wrap form.search-form,body.post-type-envira.taxonomy-envira-tag div.wrap form#edittag,body.post-type-envira.taxonomy-envira-tag div.wrap #col-container{margin:0 20px}body.post-type-envira.edit-tags-php div.wrap .button,body.post-type-envira.taxonomy-envira-tag div.wrap .button{height:28px;line-height:26px}body.post-type-envira div.wrap{margin:0 20px}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor div.envira-gallery-error{position:absolute;top:50px;left:0;right:300px}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment{width:20%}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail img{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0.2}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail strong{position:absolute;z-index:2;height:50%;top:0;left:0;right:0;padding:10px;text-align:center;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;background:rgba(0,0,0,0.07);text-shadow:1px 1px #ddd}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail strong span{display:block;position:absolute;bottom:10px;left:0;right:0;padding:0 10px;text-align:center}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor ul.attachments li.attachment div.attachment-preview div.thumbnail code{position:absolute;z-index:2;height:50%;bottom:0;left:0;right:0;padding:10px;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;text-shadow:1px 1px #ddd}.media-modal .media-modal-content .media-frame-content .attachments-browser.envira-gallery-editor div.media-sidebar div.settings .name{text-align:left}body.post-type-envira .postbox-header{display:none}.envira-admin-litevspro-section h3{font-size:42px;line-height:50px;font-weight:600;margin:5px auto}@media screen and (max-width: 782px){body.post-type-envira .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}@media screen and (max-width: 640px){body.post-type-envira div.wrap h1,body.post-type-envira_album div.wrap h1{padding-bottom:40px}body.post-type-envira div.wrap h1 span.subtitle,body.post-type-envira_album div.wrap h1 span.subtitle{clear:both;width:100%;padding:0}}@media screen and (max-width: 340px){body.post-type-envira div.wrap h1,body.post-type-envira_album div.wrap h1{text-align:center}body.post-type-envira div.wrap h1 a.page-title-action,body.post-type-envira_album div.wrap h1 a.page-title-action{display:block;text-align:center;margin:10px 0 0 0}}.addon-tag{position:absolute;display:inline-block;padding:.75em 3em .75em 1.1em;overflow:hidden;color:#fff;z-index:999;font-weight:bold;left:0;font-size:1.3em}div.addon-tag:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:#1c45ba;-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:skew(-45deg);-ms-transform:skew(-45deg);transform:skew(-45deg);z-index:-1}
assets/css/editor.css CHANGED
@@ -1 +1 @@
1
- .envira-gallery-choose-gallery,.envira-albums-choose-album{padding-left:.4em}.envira-gallery-choose-gallery span.envira-media-icon,.envira-albums-choose-album span.envira-media-icon{background:url(images/menu-icon.png) transparent no-repeat scroll 0 0;width:16px;height:16px;display:inline-block;vertical-align:text-top}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#envira-media-modal-button .envira-media-icon[style]{background-image:url(images/menu-icon@2x.png) !important;background-size:16px 16px !important}}
1
+ .envira-gallery-choose-gallery,.envira-albums-choose-album{padding-left:.4em}.envira-gallery-choose-gallery span.envira-media-icon,.envira-albums-choose-album span.envira-media-icon{background:url(images/menu-icon.png) transparent no-repeat scroll 0 0;width:16px;height:16px;display:inline-block;vertical-align:text-top}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#envira-media-modal-button .envira-media-icon[style]{background-image:url(images/menu-icon@2x.png) !important;background-size:16px 16px !important}}
assets/css/envira.css CHANGED
@@ -1 +1 @@
1
- .envira-gallery-wrap,.envira-gallery-wrap *,.envira-tags-filter-list,.envira-tags-filter-list *{background:none;border:0 none;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;float:none;font-size:100%;height:auto;letter-spacing:normal;list-style:none;outline:none;position:static;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;width:auto;visibility:visible;overflow:visible;margin:0;padding:0;line-height:1;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;-webkit-appearance:none;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none}.envira-tags-filter-list{clear:both;margin:0 0 10px 0}.envira-tags-filter-list li.envira-tags-filter,.envira-tags-filter-list li.envira-tag-filter{float:left;margin:0 20px 10px 0}.envira-tags-filter-list .envira-tag-filter-link{font-size:13px;font-weight:bold}.envira-breadcrumbs{display:block;margin:0 0 20px 0;padding:10px;background:#eee}.envira-breadcrumbs a{text-decoration:none}.envira-gallery-wrap{width:100%;margin:0 auto 20px auto}.envira-gallery-wrap .envira-pagination{margin:0 0 20px 0}.envira-gallery-wrap .envira-gallery-description{clear:both}.envira-gallery-wrap .envira-gallery-public{width:100%;margin:0 auto 20px auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.envira-gallery-wrap .envira-gallery-public.envira-clear{clear:both}.envira-gallery-wrap .envira-gallery-public.envira-clear:after{clear:both;content:'.';display:block;height:0;line-height:0;overflow:auto;visibility:hidden;zoom:1}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner{position:relative}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay{box-sizing:border-box;position:absolute;overflow:visible;z-index:999}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-top-left{top:0;left:0;padding:5px 0 0 5px}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-top-right{top:0;right:0;padding:5px 5px 0 0;text-align:right}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-bottom-left{bottom:0;left:0;padding:0 0 5px 5px}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-bottom-right{bottom:0;right:0;padding:0 5px 5px 0;text-align:right}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item{float:left}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item>.envira-gallery-link{display:block;outline:none;border:0 none;position:relative}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item img{float:none;display:block;margin:0 auto;padding:0;max-width:100%}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item iframe,.envira-gallery-wrap .envira-gallery-public .envira-gallery-item video{display:block;margin:0 auto;width:100%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item{clear:both;width:100%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item{width:50%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item{width:33.33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item{width:25%;margin:0;padding:0;box-sizing:border-box}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item{width:20%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:16.66%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-css-animations .envira-gallery-item img{opacity:0;transition:all .2s ease-in-out}.envira-gallery-wrap .envira-gallery-public.envira-gallery-css-animations .envira-gallery-item a:hover img{opacity:1 !important}.envira-gallery-public.justified-gallery .envira-gallery-item-inner{position:absolute}.envira-gallery-wrap.envira-gallery-rtl .envira-gallery-public .envira-gallery-item{float:right}@media only screen and (max-width: 768px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}@media only screen and (max-width: 459px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:50% !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:none !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(2n+1){clear:both !important}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}@media only screen and (max-width: 320px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:100% !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}.envirabox-wrap,.envirabox-skin,.envirabox-outer,.envirabox-inner,.envirabox-image,.envirabox-wrap iframe,.envirabox-wrap object,.envirabox-nav,.envirabox-nav span,.envirabox-tmp,.envirabox-buttons,.envirabox-thumbs,.envirabox-wrap *,.envirabox-thumbs *,.envirabox-buttons *{background:none;border:0 none;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;float:none;font-size:100%;height:auto;letter-spacing:normal;list-style:none;outline:none;position:static;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;width:auto;visibility:visible;overflow:visible;margin:0;padding:0;line-height:1;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;-webkit-appearance:none;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none}.envirabox-wrap{position:absolute;top:0;left:0;z-index:988020}.envirabox-skin{position:relative;background:#f9f9f9;color:#444;text-shadow:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.envirabox-opened{z-index:988030}.envirabox-opened .envirabox-skin{-webkit-box-shadow:0 10px 25px rgba(0,0,0,0.5);-moz-box-shadow:0 10px 25px rgba(0,0,0,0.5);box-shadow:0 10px 25px rgba(0,0,0,0.5)}.envirabox-outer,.envirabox-inner{position:relative}.envirabox-inner{overflow:hidden}.envirabox-inner .envirabox-position-overlay{box-sizing:border-box;position:absolute;overflow:visible;z-index:988041;padding:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-top-left{top:0;left:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-top-right{top:0;right:0;text-align:right}.envirabox-inner .envirabox-position-overlay.envira-gallery-bottom-left{bottom:0;left:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-bottom-right{bottom:0;right:0;text-align:right}.envirabox-type-iframe .envirabox-inner{-webkit-overflow-scrolling:touch}.envirabox-error{color:#444;font:13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;padding:15px;white-space:nowrap}.envirabox-image,.envirabox-iframe{display:block;width:100%;height:100%}.envirabox-image{max-width:100%;max-height:100%}#envirabox-loading,.envirabox-close,.envirabox-prev span,.envirabox-next span{background-image:url("images/envirabox_sprite.png")}#envirabox-loading{position:fixed;top:50%;left:50%;margin-top:-22px;margin-left:-22px;background-position:0 -108px;opacity:0.8;cursor:pointer;z-index:988060}#envirabox-loading div{width:44px;height:44px;background:url("images/envirabox_loading.gif") center center no-repeat}.envirabox-close{position:absolute;top:-18px;right:-18px;width:36px;height:36px;cursor:pointer;z-index:988040}.envirabox-nav{position:absolute;top:0;width:40%;height:100%;cursor:pointer;text-decoration:none;background:transparent url("images/blank.gif");-webkit-tap-highlight-color:transparent;z-index:988040}.envirabox-prev{left:0}.envirabox-next{right:0}.envirabox-prev.envirabox-arrows-outside{left:-100px}.envirabox-next.envirabox-arrows-outside{right:-100px}.envirabox-nav span{position:absolute;top:50%;width:36px;height:34px;margin-top:-18px;cursor:pointer;z-index:988040;visibility:hidden}body.envira-touch .envirabox-nav span{visibility:visible}.envirabox-prev span{left:10px;background-position:0 -36px}.envirabox-next span{right:10px;background-position:0 -72px}.envirabox-nav:hover span{visibility:visible}.envirabox-tmp{position:absolute;top:-99999px;left:-99999px;max-width:99999px;max-height:99999px;overflow:visible !important}a.envirabox-close,a.envirabox-nav,a.fancy-close:hover,a.envirabox-nav:hover{border:0}.envirabox-lock{overflow:visible !important;width:auto}.envirabox-lock body{overflow:hidden !important}.envirabox-lock-test{overflow-y:hidden !important}.envirabox-overlay{position:absolute;top:0;left:0;overflow:hidden;display:none;z-index:988010;background:url("images/envirabox_overlay.png")}.envirabox-overlay-fixed{position:fixed;bottom:0;right:0}.envirabox-lock .envirabox-overlay{overflow:auto;overflow-y:scroll}.envirabox-title{visibility:hidden;font-size:13px;line-height:20px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;text-shadow:none;z-index:988090}.envirabox-opened .envirabox-title{visibility:visible}.envirabox-title-float-wrap{position:absolute;bottom:auto;right:50%;margin-top:20px;z-index:988050;text-align:center}.envirabox-title-float-wrap .child{display:inline-block;margin-right:-100%;padding:2px 20px;background:transparent;background:rgba(0,0,0,0.8);-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;text-shadow:0 1px 2px #222;color:#FFF;line-height:24px;white-space:normal}.envirabox-title-float-wrap.envirabox-title-text-wrap .child{white-space:normal}.envirabox-title-outside-wrap{position:relative;margin-top:10px;color:#fff}.envirabox-title-inside-wrap{padding-top:10px}.envirabox-title-over-wrap{position:absolute;bottom:0;left:0;color:#fff;padding:10px;background:#000;background:rgba(0,0,0,0.8)}#envirabox-buttons{position:fixed;left:0;width:100%;z-index:988050}#envirabox-buttons.top{top:10px}#envirabox-buttons.bottom{bottom:10px}#envirabox-buttons.bottom.has-padding{bottom:80px}#envirabox-buttons.top.has-padding{top:80px}#envirabox-buttons ul{display:block;width:auto;height:30px;margin:0 auto;padding:0;list-style:none;border:1px solid #111;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);-moz-box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);background:#323232;background:-moz-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #444), color-stop(50%, #343434), color-stop(50%, #292929), color-stop(100%, #333));background:-webkit-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-o-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-ms-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 )}#envirabox-buttons ul li{float:left;margin:0;padding:0}#envirabox-buttons ul li#envirabox-buttons-title span{display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:30px;padding:0 10px;color:#fff}#envirabox-buttons a{display:block;width:30px;height:30px;text-indent:-9999px;background-color:transparent;background-image:url("images/envirabox_buttons.png");background-repeat:no-repeat;outline:none;opacity:0.8}#envirabox-buttons a:hover{opacity:1}#envirabox-buttons a.btnPrev{background-position:5px 0}#envirabox-buttons a.btnNext{background-position:-33px 0;border-right:1px solid #3e3e3e}#envirabox-buttons a.btnPlay{background-position:0 -30px}#envirabox-buttons a.btnPlayOn{background-position:-30px -30px}#envirabox-buttons a.btnToggle,#envirabox-buttons a.btnFullscreen{background-position:3px -60px;border-left:1px solid #111;border-right:1px solid #3e3e3e;width:35px}#envirabox-buttons a.btnToggleOn,#envirabox-buttons a.btnFullscreenOn{background-position:-27px -60px}#envirabox-buttons a.btnClose{border-left:1px solid #111;width:35px;background-position:-56px 0px}#envirabox-buttons a.btnDisabled{opacity:0.4;cursor:default}#envirabox-thumbs{position:fixed;left:0;width:100%;overflow:hidden;z-index:988050;box-sizing:border-box}#envirabox-thumbs.top{top:2px}#envirabox-thumbs.top.has-other-content{top:50px}#envirabox-thumbs.bottom{bottom:2px}#envirabox-thumbs.bottom.has-other-content{bottom:50px}#envirabox-thumbs.inline{position:absolute}#envirabox-thumbs *{box-sizing:border-box}#envirabox-thumbs ul{position:relative;list-style:none;margin:0;padding:0}#envirabox-thumbs ul li{border:3px solid #fff;float:left;margin:5px;opacity:1}#envirabox-thumbs ul li.active{opacity:0.75;border:3px solid #888}#envirabox-thumbs ul li:hover{opacity:0.75}#envirabox-thumbs ul li a{display:block;position:relative;overflow:hidden;border:1px solid #222;background:#111;outline:none}#envirabox-thumbs ul li img{display:block;position:relative;border:0;padding:0;max-width:none}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#envirabox-loading,.envirabox-close,.envirabox-prev span,.envirabox-next span{background-image:url("images/envirabox_sprite@2x.png");background-size:44px 152px}#envirabox-loading div{background-image:url("images/envirabox_loading@2x.gif");background-size:24px 24px}}
1
+ .envira-gallery-wrap,.envira-gallery-wrap *,.envira-tags-filter-list,.envira-tags-filter-list *{background:none;border:0 none;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;float:none;font-size:100%;height:auto;letter-spacing:normal;list-style:none;outline:none;position:static;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;width:auto;visibility:visible;overflow:visible;margin:0;padding:0;line-height:1;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;-webkit-appearance:none;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none}.envira-tags-filter-list{clear:both;margin:0 0 10px 0}.envira-tags-filter-list li.envira-tags-filter,.envira-tags-filter-list li.envira-tag-filter{float:left;margin:0 20px 10px 0}.envira-tags-filter-list .envira-tag-filter-link{font-size:13px;font-weight:bold}.envira-breadcrumbs{display:block;margin:0 0 20px 0;padding:10px;background:#eee}.envira-breadcrumbs a{text-decoration:none}.envira-gallery-wrap{width:100%;margin:0 auto 20px auto}.envira-gallery-wrap .envira-pagination{margin:0 0 20px 0}.envira-gallery-wrap .envira-gallery-description{clear:both}.envira-gallery-wrap .envira-gallery-public{width:100%;margin:0 auto 20px auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.envira-gallery-wrap .envira-gallery-public.envira-clear{clear:both}.envira-gallery-wrap .envira-gallery-public.envira-clear:after{clear:both;content:'.';display:block;height:0;line-height:0;overflow:auto;visibility:hidden;zoom:1}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner{position:relative}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay{box-sizing:border-box;position:absolute;overflow:visible;z-index:999}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-top-left{top:0;left:0;padding:5px 0 0 5px}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-top-right{top:0;right:0;padding:5px 5px 0 0;text-align:right}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-bottom-left{bottom:0;left:0;padding:0 0 5px 5px}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item-inner .envira-gallery-position-overlay.envira-gallery-bottom-right{bottom:0;right:0;padding:0 5px 5px 0;text-align:right}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item{float:left}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item>.envira-gallery-link{display:block;outline:none;border:0 none;position:relative}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item img{float:none;display:block;margin:0 auto;padding:0;max-width:100%}.envira-gallery-wrap .envira-gallery-public .envira-gallery-item iframe,.envira-gallery-wrap .envira-gallery-public .envira-gallery-item video{display:block;margin:0 auto;width:100%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item{clear:both;width:100%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item{width:50%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item{width:33.33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item{width:25%;margin:0;padding:0;box-sizing:border-box}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item{width:20%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:16.66%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-css-animations .envira-gallery-item img{opacity:0;transition:all .2s ease-in-out}.envira-gallery-wrap .envira-gallery-public.envira-gallery-css-animations .envira-gallery-item a:hover img{opacity:1 !important}.envira-gallery-public.justified-gallery .envira-gallery-item-inner{position:absolute}.envira-gallery-wrap.envira-gallery-rtl .envira-gallery-public .envira-gallery-item{float:right}@media only screen and (max-width: 768px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:33%}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:none}.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}@media only screen and (max-width: 459px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:50% !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:none !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(2n+1){clear:both !important}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}@media only screen and (max-width: 320px){.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item,.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:100% !important}.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-1-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(6n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(2n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(3n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(4n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(5n+1),.envira-gallery-wrap .envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:both}.envira-gallery-wrap .envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}}.envirabox-wrap,.envirabox-skin,.envirabox-outer,.envirabox-inner,.envirabox-image,.envirabox-wrap iframe,.envirabox-wrap object,.envirabox-nav,.envirabox-nav span,.envirabox-tmp,.envirabox-buttons,.envirabox-thumbs,.envirabox-wrap *,.envirabox-thumbs *,.envirabox-buttons *{background:none;border:0 none;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;float:none;font-size:100%;height:auto;letter-spacing:normal;list-style:none;outline:none;position:static;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;width:auto;visibility:visible;overflow:visible;margin:0;padding:0;line-height:1;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none;-webkit-appearance:none;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none}.envirabox-wrap{position:absolute;top:0;left:0;z-index:988020}.envirabox-skin{position:relative;background:#f9f9f9;color:#444;text-shadow:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.envirabox-opened{z-index:988030}.envirabox-opened .envirabox-skin{-webkit-box-shadow:0 10px 25px rgba(0,0,0,0.5);-moz-box-shadow:0 10px 25px rgba(0,0,0,0.5);box-shadow:0 10px 25px rgba(0,0,0,0.5)}.envirabox-outer,.envirabox-inner{position:relative}.envirabox-inner{overflow:hidden}.envirabox-inner .envirabox-position-overlay{box-sizing:border-box;position:absolute;overflow:visible;z-index:988041;padding:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-top-left{top:0;left:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-top-right{top:0;right:0;text-align:right}.envirabox-inner .envirabox-position-overlay.envira-gallery-bottom-left{bottom:0;left:0}.envirabox-inner .envirabox-position-overlay.envira-gallery-bottom-right{bottom:0;right:0;text-align:right}.envirabox-type-iframe .envirabox-inner{-webkit-overflow-scrolling:touch}.envirabox-error{color:#444;font:13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;padding:15px;white-space:nowrap}.envirabox-image,.envirabox-iframe{display:block;width:100%;height:100%}.envirabox-image{max-width:100%;max-height:100%}#envirabox-loading,.envirabox-close,.envirabox-prev span,.envirabox-next span{background-image:url("images/envirabox_sprite.png")}#envirabox-loading{position:fixed;top:50%;left:50%;margin-top:-22px;margin-left:-22px;background-position:0 -108px;opacity:0.8;cursor:pointer;z-index:988060}#envirabox-loading div{width:44px;height:44px;background:url("images/envirabox_loading.gif") center center no-repeat}.envirabox-close{position:absolute;top:-18px;right:-18px;width:36px;height:36px;cursor:pointer;z-index:988040}.envirabox-nav{position:absolute;top:0;width:40%;height:100%;cursor:pointer;text-decoration:none;background:transparent url("images/blank.gif");-webkit-tap-highlight-color:transparent;z-index:988040}.envirabox-prev{left:0}.envirabox-next{right:0}.envirabox-prev.envirabox-arrows-outside{left:-100px}.envirabox-next.envirabox-arrows-outside{right:-100px}.envirabox-nav span{position:absolute;top:50%;width:36px;height:34px;margin-top:-18px;cursor:pointer;z-index:988040;visibility:hidden}body.envira-touch .envirabox-nav span{visibility:visible}.envirabox-prev span{left:10px;background-position:0 -36px}.envirabox-next span{right:10px;background-position:0 -72px}.envirabox-nav:hover span{visibility:visible}.envirabox-tmp{position:absolute;top:-99999px;left:-99999px;max-width:99999px;max-height:99999px;overflow:visible !important}a.envirabox-close,a.envirabox-nav,a.fancy-close:hover,a.envirabox-nav:hover{border:0}.envirabox-lock{overflow:visible !important;width:auto}.envirabox-lock body{overflow:hidden !important}.envirabox-lock-test{overflow-y:hidden !important}.envirabox-overlay{position:absolute;top:0;left:0;overflow:hidden;display:none;z-index:988010;background:url("images/envirabox_overlay.png")}.envirabox-overlay-fixed{position:fixed;bottom:0;right:0}.envirabox-lock .envirabox-overlay{overflow:auto;overflow-y:scroll}.envirabox-title{visibility:hidden;font-size:13px;line-height:20px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;text-shadow:none;z-index:988090}.envirabox-opened .envirabox-title{visibility:visible}.envirabox-title-float-wrap{position:absolute;bottom:auto;right:50%;margin-top:20px;z-index:988050;text-align:center}.envirabox-title-float-wrap .child{display:inline-block;margin-right:-100%;padding:2px 20px;background:transparent;background:rgba(0,0,0,0.8);-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;text-shadow:0 1px 2px #222;color:#FFF;line-height:24px;white-space:normal}.envirabox-title-float-wrap.envirabox-title-text-wrap .child{white-space:normal}.envirabox-title-outside-wrap{position:relative;margin-top:10px;color:#fff}.envirabox-title-inside-wrap{padding-top:10px}.envirabox-title-over-wrap{position:absolute;bottom:0;left:0;color:#fff;padding:10px;background:#000;background:rgba(0,0,0,0.8)}#envirabox-buttons{position:fixed;left:0;width:100%;z-index:988050}#envirabox-buttons.top{top:10px}#envirabox-buttons.bottom{bottom:10px}#envirabox-buttons.bottom.has-padding{bottom:80px}#envirabox-buttons.top.has-padding{top:80px}#envirabox-buttons ul{display:block;width:auto;height:30px;margin:0 auto;padding:0;list-style:none;border:1px solid #111;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);-moz-box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05);background:#323232;background:-moz-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #444), color-stop(50%, #343434), color-stop(50%, #292929), color-stop(100%, #333));background:-webkit-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-o-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:-ms-linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);background:linear-gradient(top, #444 0%, #343434 50%, #292929 50%, #333 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 )}#envirabox-buttons ul li{float:left;margin:0;padding:0}#envirabox-buttons ul li#envirabox-buttons-title span{display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:30px;padding:0 10px;color:#fff}#envirabox-buttons a{display:block;width:30px;height:30px;text-indent:-9999px;background-color:transparent;background-image:url("images/envirabox_buttons.png");background-repeat:no-repeat;outline:none;opacity:0.8}#envirabox-buttons a:hover{opacity:1}#envirabox-buttons a.btnPrev{background-position:5px 0}#envirabox-buttons a.btnNext{background-position:-33px 0;border-right:1px solid #3e3e3e}#envirabox-buttons a.btnPlay{background-position:0 -30px}#envirabox-buttons a.btnPlayOn{background-position:-30px -30px}#envirabox-buttons a.btnToggle,#envirabox-buttons a.btnFullscreen{background-position:3px -60px;border-left:1px solid #111;border-right:1px solid #3e3e3e;width:35px}#envirabox-buttons a.btnToggleOn,#envirabox-buttons a.btnFullscreenOn{background-position:-27px -60px}#envirabox-buttons a.btnClose{border-left:1px solid #111;width:35px;background-position:-56px 0px}#envirabox-buttons a.btnDisabled{opacity:0.4;cursor:default}#envirabox-thumbs{position:fixed;left:0;width:100%;overflow:hidden;z-index:988050;box-sizing:border-box}#envirabox-thumbs.top{top:2px}#envirabox-thumbs.top.has-other-content{top:50px}#envirabox-thumbs.bottom{bottom:2px}#envirabox-thumbs.bottom.has-other-content{bottom:50px}#envirabox-thumbs.inline{position:absolute}#envirabox-thumbs *{box-sizing:border-box}#envirabox-thumbs ul{position:relative;list-style:none;margin:0;padding:0}#envirabox-thumbs ul li{border:3px solid #fff;float:left;margin:5px;opacity:1}#envirabox-thumbs ul li.active{opacity:0.75;border:3px solid #888}#envirabox-thumbs ul li:hover{opacity:0.75}#envirabox-thumbs ul li a{display:block;position:relative;overflow:hidden;border:1px solid #222;background:#111;outline:none}#envirabox-thumbs ul li img{display:block;position:relative;border:0;padding:0;max-width:none}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#envirabox-loading,.envirabox-close,.envirabox-prev span,.envirabox-next span{background-image:url("images/envirabox_sprite@2x.png");background-size:44px 152px}#envirabox-loading div{background-image:url("images/envirabox_loading@2x.gif");background-size:24px 24px}}
assets/css/fancybox.css CHANGED
@@ -1,356 +1,356 @@
1
- #envirabox-wrap,
2
- #envirabox-wrap *,
3
- #envirabox-overlay {
4
- box-sizing: content-box;
5
- -webkit-box-sizing: content-box;
6
- -moz-box-sizing: content-box;
7
- }
8
-
9
- #envirabox-loading, .envirabox-close, #envirabox-left #envirabox-left-ico, #envirabox-right #envirabox-right-ico {
10
- background-image: url('images/envirabox_sprite.png');
11
- }
12
-
13
- #envirabox-loading {
14
- position: fixed;
15
- top: 50%;
16
- left: 50%;
17
- margin-top: -22px;
18
- margin-left: -22px;
19
- background-position: 0 -108px;
20
- opacity: 0.8;
21
- cursor: pointer;
22
- z-index: 988100;
23
- display: none;
24
- }
25
-
26
- #envirabox-loading div {
27
- width: 44px;
28
- height: 44px;
29
- background: url('images/envirabox_loading.gif') center center no-repeat;
30
- }
31
-
32
- #envirabox-overlay {
33
- position: absolute;
34
- top: 0;
35
- left: 0;
36
- width: 100%;
37
- z-index: 988010;
38
- display: none;
39
- background: url('images/envirabox_overlay.png');
40
- background-color: rgba(0,0,0,.9); /* !important; */
41
- }
42
-
43
- #envirabox-tmp {
44
- padding: 0;
45
- margin: 0;
46
- border: 0;
47
- overflow: auto;
48
- display: none;
49
- }
50
-
51
- #envirabox-wrap {
52
- position: absolute;
53
- top: 0;
54
- left: 0;
55
- padding: 20px;
56
- z-index: 988020;
57
- outline: none;
58
- display: none;
59
- }
60
-
61
- #envirabox-outer {
62
- position: relative;
63
- width: 100%;
64
- height: 100%;
65
- background: #fff;
66
- -webkit-border-radius: 4px;
67
- -moz-border-radius: 4px;
68
- border-radius: 4px;
69
- }
70
-
71
- #envirabox-content {
72
- width: 0;
73
- height: 0;
74
- padding: 0;
75
- outline: none;
76
- position: relative;
77
- overflow: hidden;
78
- z-index: 988021;
79
- border: 0px solid #fff;
80
- -webkit-box-shadow: 0 10px 25px rgba(0,0,0,0.5);
81
- -moz-box-shadow: 0 10px 25px rgba(0,0,0,0.5);
82
- box-shadow: 0 10px 25px rgba(0,0,0,0.5);
83
- -webkit-border-radius: 4px;
84
- -moz-border-radius: 4px;
85
- border-radius: 4px;
86
- }
87
-
88
- #envirabox-hide-sel-frame {
89
- position: absolute;
90
- top: 0;
91
- left: 0;
92
- width: 100%;
93
- height: 100%;
94
- background: transparent;
95
- z-index: 988020;
96
- }
97
-
98
- #envirabox-close {
99
- position: absolute;
100
- top: -18px;
101
- right: -18px;
102
- width: 36px;
103
- height: 36px;
104
- z-index: 988040;
105
- cursor: pointer;
106
- display: none;
107
- background-image: url("images/envirabox_sprite.png");
108
- }
109
-
110
- #envirabox-error {
111
- color: #444;
112
- font: normal 12px/20px Arial;
113
- padding: 14px;
114
- margin: 0;
115
- }
116
-
117
- #envirabox-img {
118
- width: 100%;
119
- height: 100%;
120
- padding: 0;
121
- margin: 0;
122
- border: none;
123
- outline: none;
124
- line-height: 0;
125
- vertical-align: top;
126
- }
127
-
128
- #envirabox-frame {
129
- width: 100%;
130
- height: 100%;
131
- border: none;
132
- display: block;
133
- }
134
-
135
- #envirabox-left, #envirabox-right {
136
- position: absolute;
137
- bottom: 0px;
138
- height: 100%;
139
- width: 35%;
140
- cursor: pointer;
141
- outline: none;
142
- background: transparent url('images/blank.gif');
143
- z-index: 988040;
144
- display: none;
145
- }
146
-
147
- #envirabox-left {
148
- left: 0px;
149
- }
150
-
151
- #envirabox-right {
152
- right: 0px;
153
- }
154
-
155
- #envirabox-left-ico, #envirabox-right-ico {
156
- position: absolute;
157
- top: 50%;
158
- left: -9999px;
159
- width: 36px;
160
- height: 34px;
161
- margin-top: -15px;
162
- cursor: pointer;
163
- z-index: 988040;
164
- display: block;
165
- }
166
-
167
- #envirabox-left-ico {
168
- background-position: 0 -36px;
169
- }
170
-
171
- #envirabox-right-ico {
172
- background-position: 0 -72px;
173
- }
174
-
175
- #envirabox-left:hover, #envirabox-right:hover {
176
- visibility: visible; /* IE6 */
177
- }
178
-
179
- body.envira-touch #envirabox-left span,
180
- #envirabox-left:hover span {
181
- left: 20px;
182
- }
183
-
184
- #envirabox-right:hover span,
185
- body.envira-touch #envirabox-right span {
186
- left: auto;
187
- right: 20px;
188
- }
189
-
190
- body.envira-touch #envirabox-left,
191
- body.envira-touch #envirabox-right {
192
- visibility: visible;
193
- }
194
-
195
- #envirabox-title {
196
- font-family: Helvetica;
197
- font-size: 12px;
198
- z-index: 988025;
199
- }
200
-
201
- #envirabox-title.envirabox-title-inside {
202
- padding-bottom: 12px;
203
- background: #fff;
204
- font-size: 13px;
205
- line-height: 20px;
206
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
207
- position: relative;
208
- text-shadow: none;
209
- z-index: 988090;
210
- margin-left: 0 !important;
211
- margin-right: 0 !important;
212
- padding-left: 15px;
213
- padding-right: 15px;
214
- margin-top: -6px;
215
- -webkit-border-bottom-right-radius: 4px;
216
- -webkit-border-bottom-left-radius: 4px;
217
- -moz-border-radius-bottomright: 4px;
218
- -moz-border-radius-bottomleft: 4px;
219
- border-bottom-right-radius: 4px;
220
- border-bottom-left-radius: 4px;
221
- }
222
-
223
- #envirabox-title.envirabox-title-outside {
224
- padding-top: 10px;
225
- color: #fff;
226
- font-size: 13px;
227
- line-height: 20px;
228
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
229
- position: relative;
230
- text-shadow: none;
231
- padding-left: 0 !important;
232
- }
233
-
234
- #envirabox-title-outside {
235
- color: #fff;
236
- font-size: 13px;
237
- line-height: 20px;
238
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
239
- position: relative;
240
- text-shadow: none;
241
- }
242
-
243
- .envirabox-title-over {
244
- position: absolute;
245
- bottom: 0;
246
- left: 0;
247
- color: #FFF;
248
- text-align: left;
249
- }
250
-
251
- #envirabox-title-over {
252
- padding: 10px;
253
- background: #000;
254
- background: rgba(0,0,0,.8);
255
- display: inline-block;
256
- font-size: 13px;
257
- line-height: 20px;
258
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
259
- position: relative;
260
- text-shadow: none;
261
- }
262
-
263
- .envirabox-title-float {
264
- position: absolute;
265
- left: 0;
266
- bottom: -20px;
267
- height: 32px;
268
- }
269
-
270
- #envirabox-title-float-wrap {
271
- border: none;
272
- border-collapse: collapse;
273
- width: auto;
274
- }
275
-
276
- #envirabox-title-float-wrap tbody,
277
- #envirabox-title-float-wrap td {
278
- border: none;
279
- white-space: nowrap;
280
- }
281
-
282
- #envirabox-title-float-left {
283
- padding: 0 0 0 15px;
284
- }
285
-
286
- #envirabox-title-float-main {
287
- display: inline-block;
288
- margin-right: -100%;
289
- padding: 2px 20px;
290
- background: transparent;
291
- background: rgba(0,0,0,0.8);
292
- -webkit-border-radius: 15px;
293
- -moz-border-radius: 15px;
294
- border-radius: 15px;
295
- text-shadow: 0 1px 2px #222;
296
- color: #FFF;
297
- line-height: 24px;
298
- white-space: nowrap;
299
- }
300
-
301
- #envirabox-title-float-right {
302
- padding: 0 0 0 15px;
303
- }
304
-
305
- /* UPDATED FOR TWENTY-SEVENTEEN */
306
-
307
- #envirabox-title-float-wrap tr {
308
- border-bottom: 0;
309
- }
310
-
311
- /* IE6 */
312
-
313
- .envirabox-ie6 #envirabox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_close.png', sizingMethod='scale'); }
314
-
315
- .envirabox-ie6 #envirabox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_nav_left.png', sizingMethod='scale'); }
316
- .envirabox-ie6 #envirabox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_nav_right.png', sizingMethod='scale'); }
317
-
318
- .envirabox-ie6 #envirabox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
319
- .envirabox-ie6 #envirabox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_left.png', sizingMethod='scale'); }
320
- .envirabox-ie6 #envirabox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_main.png', sizingMethod='scale'); }
321
- .envirabox-ie6 #envirabox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_right.png', sizingMethod='scale'); }
322
-
323
- .envirabox-ie6 #envirabox-bg-w, .envirabox-ie6 #envirabox-bg-e, .envirabox-ie6 #envirabox-left, .envirabox-ie6 #envirabox-right, #envirabox-hide-sel-frame {
324
- height: expression(this.parentNode.clientHeight + "px");
325
- }
326
-
327
- #envirabox-loading.envirabox-ie6 {
328
- position: absolute; margin-top: 0;
329
- top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
330
- }
331
-
332
- #envirabox-loading.envirabox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_loading.png', sizingMethod='scale'); }
333
-
334
- /* IE6, IE7, IE8 */
335
-
336
- .envirabox-ie .envirabox-bg { background: transparent !important; }
337
-
338
- @media
339
- only screen and (-webkit-min-device-pixel-ratio: 2),
340
- only screen and ( min--moz-device-pixel-ratio: 2),
341
- only screen and ( -o-min-device-pixel-ratio: 2/1),
342
- only screen and ( min-device-pixel-ratio: 2),
343
- only screen and ( min-resolution: 192dpi),
344
- only screen and ( min-resolution: 2dppx) {
345
-
346
- #envirabox-loading, .envirabox-close, #envirabox-left #envirabox-left-ico, #envirabox-right #envirabox-right-ico, #envirabox-close {
347
- background-image: url('images/envirabox_sprite@2x.png');
348
- background-size: 44px 152px;
349
- }
350
-
351
- #envirabox-loading div {
352
- background-image: url('images/envirabox_loading@2x.gif');
353
- background-size: 24px 24px;
354
- }
355
-
356
  }
1
+ #envirabox-wrap,
2
+ #envirabox-wrap *,
3
+ #envirabox-overlay {
4
+ box-sizing: content-box;
5
+ -webkit-box-sizing: content-box;
6
+ -moz-box-sizing: content-box;
7
+ }
8
+
9
+ #envirabox-loading, .envirabox-close, #envirabox-left #envirabox-left-ico, #envirabox-right #envirabox-right-ico {
10
+ background-image: url('images/envirabox_sprite.png');
11
+ }
12
+
13
+ #envirabox-loading {
14
+ position: fixed;
15
+ top: 50%;
16
+ left: 50%;
17
+ margin-top: -22px;
18
+ margin-left: -22px;
19
+ background-position: 0 -108px;
20
+ opacity: 0.8;
21
+ cursor: pointer;
22
+ z-index: 988100;
23
+ display: none;
24
+ }
25
+
26
+ #envirabox-loading div {
27
+ width: 44px;
28
+ height: 44px;
29
+ background: url('images/envirabox_loading.gif') center center no-repeat;
30
+ }
31
+
32
+ #envirabox-overlay {
33
+ position: absolute;
34
+ top: 0;
35
+ left: 0;
36
+ width: 100%;
37
+ z-index: 988010;
38
+ display: none;
39
+ background: url('images/envirabox_overlay.png');
40
+ background-color: rgba(0,0,0,.9); /* !important; */
41
+ }
42
+
43
+ #envirabox-tmp {
44
+ padding: 0;
45
+ margin: 0;
46
+ border: 0;
47
+ overflow: auto;
48
+ display: none;
49
+ }
50
+
51
+ #envirabox-wrap {
52
+ position: absolute;
53
+ top: 0;
54
+ left: 0;
55
+ padding: 20px;
56
+ z-index: 988020;
57
+ outline: none;
58
+ display: none;
59
+ }
60
+
61
+ #envirabox-outer {
62
+ position: relative;
63
+ width: 100%;
64
+ height: 100%;
65
+ background: #fff;
66
+ -webkit-border-radius: 4px;
67
+ -moz-border-radius: 4px;
68
+ border-radius: 4px;
69
+ }
70
+
71
+ #envirabox-content {
72
+ width: 0;
73
+ height: 0;
74
+ padding: 0;
75
+ outline: none;
76
+ position: relative;
77
+ overflow: hidden;
78
+ z-index: 988021;
79
+ border: 0px solid #fff;
80
+ -webkit-box-shadow: 0 10px 25px rgba(0,0,0,0.5);
81
+ -moz-box-shadow: 0 10px 25px rgba(0,0,0,0.5);
82
+ box-shadow: 0 10px 25px rgba(0,0,0,0.5);
83
+ -webkit-border-radius: 4px;
84
+ -moz-border-radius: 4px;
85
+ border-radius: 4px;
86
+ }
87
+
88
+ #envirabox-hide-sel-frame {
89
+ position: absolute;
90
+ top: 0;
91
+ left: 0;
92
+ width: 100%;
93
+ height: 100%;
94
+ background: transparent;
95
+ z-index: 988020;
96
+ }
97
+
98
+ #envirabox-close {
99
+ position: absolute;
100
+ top: -18px;
101
+ right: -18px;
102
+ width: 36px;
103
+ height: 36px;
104
+ z-index: 988040;
105
+ cursor: pointer;
106
+ display: none;
107
+ background-image: url("images/envirabox_sprite.png");
108
+ }
109
+
110
+ #envirabox-error {
111
+ color: #444;
112
+ font: normal 12px/20px Arial;
113
+ padding: 14px;
114
+ margin: 0;
115
+ }
116
+
117
+ #envirabox-img {
118
+ width: 100%;
119
+ height: 100%;
120
+ padding: 0;
121
+ margin: 0;
122
+ border: none;
123
+ outline: none;
124
+ line-height: 0;
125
+ vertical-align: top;
126
+ }
127
+
128
+ #envirabox-frame {
129
+ width: 100%;
130
+ height: 100%;
131
+ border: none;
132
+ display: block;
133
+ }
134
+
135
+ #envirabox-left, #envirabox-right {
136
+ position: absolute;
137
+ bottom: 0px;
138
+ height: 100%;
139
+ width: 35%;
140
+ cursor: pointer;
141
+ outline: none;
142
+ background: transparent url('images/blank.gif');
143
+ z-index: 988040;
144
+ display: none;
145
+ }
146
+
147
+ #envirabox-left {
148
+ left: 0px;
149
+ }
150
+
151
+ #envirabox-right {
152
+ right: 0px;
153
+ }
154
+
155
+ #envirabox-left-ico, #envirabox-right-ico {
156
+ position: absolute;
157
+ top: 50%;
158
+ left: -9999px;
159
+ width: 36px;
160
+ height: 34px;
161
+ margin-top: -15px;
162
+ cursor: pointer;
163
+ z-index: 988040;
164
+ display: block;
165
+ }
166
+
167
+ #envirabox-left-ico {
168
+ background-position: 0 -36px;
169
+ }
170
+
171
+ #envirabox-right-ico {
172
+ background-position: 0 -72px;
173
+ }
174
+
175
+ #envirabox-left:hover, #envirabox-right:hover {
176
+ visibility: visible; /* IE6 */
177
+ }
178
+
179
+ body.envira-touch #envirabox-left span,
180
+ #envirabox-left:hover span {
181
+ left: 20px;
182
+ }
183
+
184
+ #envirabox-right:hover span,
185
+ body.envira-touch #envirabox-right span {
186
+ left: auto;
187
+ right: 20px;
188
+ }
189
+
190
+ body.envira-touch #envirabox-left,
191
+ body.envira-touch #envirabox-right {
192
+ visibility: visible;
193
+ }
194
+
195
+ #envirabox-title {
196
+ font-family: Helvetica;
197
+ font-size: 12px;
198
+ z-index: 988025;
199
+ }
200
+
201
+ #envirabox-title.envirabox-title-inside {
202
+ padding-bottom: 12px;
203
+ background: #fff;
204
+ font-size: 13px;
205
+ line-height: 20px;
206
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
207
+ position: relative;
208
+ text-shadow: none;
209
+ z-index: 988090;
210
+ margin-left: 0 !important;
211
+ margin-right: 0 !important;
212
+ padding-left: 15px;
213
+ padding-right: 15px;
214
+ margin-top: -6px;
215
+ -webkit-border-bottom-right-radius: 4px;
216
+ -webkit-border-bottom-left-radius: 4px;
217
+ -moz-border-radius-bottomright: 4px;
218
+ -moz-border-radius-bottomleft: 4px;
219
+ border-bottom-right-radius: 4px;
220
+ border-bottom-left-radius: 4px;
221
+ }
222
+
223
+ #envirabox-title.envirabox-title-outside {
224
+ padding-top: 10px;
225
+ color: #fff;
226
+ font-size: 13px;
227
+ line-height: 20px;
228
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
229
+ position: relative;
230
+ text-shadow: none;
231
+ padding-left: 0 !important;
232
+ }
233
+
234
+ #envirabox-title-outside {
235
+ color: #fff;
236
+ font-size: 13px;
237
+ line-height: 20px;
238
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
239
+ position: relative;
240
+ text-shadow: none;
241
+ }
242
+
243
+ .envirabox-title-over {
244
+ position: absolute;
245
+ bottom: 0;
246
+ left: 0;
247
+ color: #FFF;
248
+ text-align: left;
249
+ }
250
+
251
+ #envirabox-title-over {
252
+ padding: 10px;
253
+ background: #000;
254
+ background: rgba(0,0,0,.8);
255
+ display: inline-block;
256
+ font-size: 13px;
257
+ line-height: 20px;
258
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
259
+ position: relative;
260
+ text-shadow: none;
261
+ }
262
+
263
+ .envirabox-title-float {
264
+ position: absolute;
265
+ left: 0;
266
+ bottom: -20px;
267
+ height: 32px;
268
+ }
269
+
270
+ #envirabox-title-float-wrap {
271
+ border: none;
272
+ border-collapse: collapse;
273
+ width: auto;
274
+ }
275
+
276
+ #envirabox-title-float-wrap tbody,
277
+ #envirabox-title-float-wrap td {
278
+ border: none;
279
+ white-space: nowrap;
280
+ }
281
+
282
+ #envirabox-title-float-left {
283
+ padding: 0 0 0 15px;
284
+ }
285
+
286
+ #envirabox-title-float-main {
287
+ display: inline-block;
288
+ margin-right: -100%;
289
+ padding: 2px 20px;
290
+ background: transparent;
291
+ background: rgba(0,0,0,0.8);
292
+ -webkit-border-radius: 15px;
293
+ -moz-border-radius: 15px;
294
+ border-radius: 15px;
295
+ text-shadow: 0 1px 2px #222;
296
+ color: #FFF;
297
+ line-height: 24px;
298
+ white-space: nowrap;
299
+ }
300
+
301
+ #envirabox-title-float-right {
302
+ padding: 0 0 0 15px;
303
+ }
304
+
305
+ /* UPDATED FOR TWENTY-SEVENTEEN */
306
+
307
+ #envirabox-title-float-wrap tr {
308
+ border-bottom: 0;
309
+ }
310
+
311
+ /* IE6 */
312
+
313
+ .envirabox-ie6 #envirabox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_close.png', sizingMethod='scale'); }
314
+
315
+ .envirabox-ie6 #envirabox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_nav_left.png', sizingMethod='scale'); }
316
+ .envirabox-ie6 #envirabox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_nav_right.png', sizingMethod='scale'); }
317
+
318
+ .envirabox-ie6 #envirabox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
319
+ .envirabox-ie6 #envirabox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_left.png', sizingMethod='scale'); }
320
+ .envirabox-ie6 #envirabox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_main.png', sizingMethod='scale'); }
321
+ .envirabox-ie6 #envirabox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_title_right.png', sizingMethod='scale'); }
322
+
323
+ .envirabox-ie6 #envirabox-bg-w, .envirabox-ie6 #envirabox-bg-e, .envirabox-ie6 #envirabox-left, .envirabox-ie6 #envirabox-right, #envirabox-hide-sel-frame {
324
+ height: expression(this.parentNode.clientHeight + "px");
325
+ }
326
+
327
+ #envirabox-loading.envirabox-ie6 {
328
+ position: absolute; margin-top: 0;
329
+ top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
330
+ }
331
+
332
+ #envirabox-loading.envirabox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/envirabox/fancy_loading.png', sizingMethod='scale'); }
333
+
334
+ /* IE6, IE7, IE8 */
335
+
336
+ .envirabox-ie .envirabox-bg { background: transparent !important; }
337
+
338
+ @media
339
+ only screen and (-webkit-min-device-pixel-ratio: 2),
340
+ only screen and ( min--moz-device-pixel-ratio: 2),
341
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
342
+ only screen and ( min-device-pixel-ratio: 2),
343
+ only screen and ( min-resolution: 192dpi),
344
+ only screen and ( min-resolution: 2dppx) {
345
+
346
+ #envirabox-loading, .envirabox-close, #envirabox-left #envirabox-left-ico, #envirabox-right #envirabox-right-ico, #envirabox-close {
347
+ background-image: url('images/envirabox_sprite@2x.png');
348
+ background-size: 44px 152px;
349
+ }
350
+
351
+ #envirabox-loading div {
352
+ background-image: url('images/envirabox_loading@2x.gif');
353
+ background-size: 24px 24px;
354
+ }
355
+
356
  }
assets/css/images/icons/breadcrumbs.svg CHANGED
@@ -1,10 +1,10 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg version="1.1" id="breadcrumbs" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
4
- y="0px" width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
- <path class="envira-icon" fill-rule="evenodd" clip-rule="evenodd" d="M56,32.001l8,10L56,52H42v8c0,2.207-1.791,4-4,4H26.001C23.791,64,22,62.207,22,60
6
- v-8h-9.999V32.001H22v-4H8L0,18L8,8h14V3.998C22,1.791,23.791,0,26.001,0H38c2.209,0,4,1.791,4,3.998V8h10v20.001H42v4H56z
7
- M26.001,57.998c0,1.104,0.895,2.002,2,2.002H36c1.104,0,2-0.898,2-2.002V52H26.001V57.998z M38,6c0-1.104-0.896-2.002-2-2.002
8
- h-7.999c-1.105,0-2,0.898-2,2.002v2H38V6z M48,24.001V11.998H10.001L4,18l6.001,6.001H48z M26.001,28.001v4H38v-4H26.001z
9
- M16.001,35.997v12.001H54l6-5.997l-6-6.004H16.001z"/>
10
  </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" id="breadcrumbs" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
4
+ y="0px" width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
+ <path class="envira-icon" fill-rule="evenodd" clip-rule="evenodd" d="M56,32.001l8,10L56,52H42v8c0,2.207-1.791,4-4,4H26.001C23.791,64,22,62.207,22,60
6
+ v-8h-9.999V32.001H22v-4H8L0,18L8,8h14V3.998C22,1.791,23.791,0,26.001,0H38c2.209,0,4,1.791,4,3.998V8h10v20.001H42v4H56z
7
+ M26.001,57.998c0,1.104,0.895,2.002,2,2.002H36c1.104,0,2-0.898,2-2.002V52H26.001V57.998z M38,6c0-1.104-0.896-2.002-2-2.002
8
+ h-7.999c-1.105,0-2,0.898-2,2.002v2H38V6z M48,24.001V11.998H10.001L4,18l6.001,6.001H48z M26.001,28.001v4H38v-4H26.001z
9
+ M16.001,35.997v12.001H54l6-5.997l-6-6.004H16.001z"/>
10
  </svg>
assets/css/images/icons/downloads.svg CHANGED
@@ -1,10 +1,10 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg version="1.1" id="download" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
- <path class="envira-icon" fill="#3C4042" d="M51.2,7.9h-7.9v3.9h5.1l6.7,23.6H29.5c0.4,0,0.7-0.1,1-0.3c0.3-0.1,0.6-0.3,0.9-0.5l11.2-11.2
6
- c0.9-0.9,0.9-2.3,0-3.2c-0.9-0.9-2.3-0.9-3.2,0L31.6,28V2c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2v26.2l-7.9-7.9c-0.9-0.9-2.3-0.9-3.2,0
7
- c-0.9,0.9-0.9,2.3,0,3.2l11.2,11.2c0.3,0.3,0.7,0.5,1.1,0.6c0.3,0.1,0.6,0.2,0.9,0.2H3.9l6.8-23.6h5.1V7.9H7.9L0,35.4v23.6
8
- C0,61.2,1.8,63,3.9,63h51.2c2.2,0,3.9-1.8,3.9-3.9V35.4L51.2,7.9z M19.7,35.4h19.7v7.9H19.7V35.4z M55.1,57.1c0,1.1-0.9,2-2,2H5.9
9
- c-1.1,0-2-0.9-2-2V41.3c0-1.1,0.9-2,2-2h9.8v7.9h27.6v-7.9h9.8c1.1,0,2,0.9,2,2V57.1z"/>
10
  </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" id="download" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
+ <path class="envira-icon" fill="#3C4042" d="M51.2,7.9h-7.9v3.9h5.1l6.7,23.6H29.5c0.4,0,0.7-0.1,1-0.3c0.3-0.1,0.6-0.3,0.9-0.5l11.2-11.2
6
+ c0.9-0.9,0.9-2.3,0-3.2c-0.9-0.9-2.3-0.9-3.2,0L31.6,28V2c0-1.1-0.9-2-2-2c-1.1,0-2,0.9-2,2v26.2l-7.9-7.9c-0.9-0.9-2.3-0.9-3.2,0
7
+ c-0.9,0.9-0.9,2.3,0,3.2l11.2,11.2c0.3,0.3,0.7,0.5,1.1,0.6c0.3,0.1,0.6,0.2,0.9,0.2H3.9l6.8-23.6h5.1V7.9H7.9L0,35.4v23.6
8
+ C0,61.2,1.8,63,3.9,63h51.2c2.2,0,3.9-1.8,3.9-3.9V35.4L51.2,7.9z M19.7,35.4h19.7v7.9H19.7V35.4z M55.1,57.1c0,1.1-0.9,2-2,2H5.9
9
+ c-1.1,0-2-0.9-2-2V41.3c0-1.1,0.9-2,2-2h9.8v7.9h27.6v-7.9h9.8c1.1,0,2,0.9,2,2V57.1z"/>
10
  </svg>
assets/css/images/icons/exif.svg CHANGED
@@ -1,11 +1,11 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg version="1.1" id="exif" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
- <path class="envira-icon" d="M56,12h-6C47.5,7.3,43.2,0,40,0H24c-3.2,0-7.5,7.3-10,12H8c-4.4,0-8,3.6-8,8v36c0,4.4,3.6,8,8,8h48
6
- c4.4,0,8-3.6,8-8V20C64,15.6,60.4,12,56,12z M24,4h16c1.5,0,4.2,4.5,6,8H18C19.8,8.5,22.5,4,24,4z M4,28h13
7
- c-0.8,1.2-1.4,2.6-1.9,4H4V28z M60,56c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V36h10.2c-0.1,0.7-0.2,1.3-0.2,2c0,9.9,8.1,18,18,18
8
- c9.9,0,18-8.1,18-18c0-0.7-0.1-1.3-0.2-2H60V56z M18,38c0-7.7,6.3-14,14-14s14,6.3,14,14c0,7.7-6.3,14-14,14S18,45.7,18,38z
9
- M60,32H48.9c-0.5-1.4-1.1-2.8-1.9-4h13V32z M60,24H43.2c-3.1-2.5-6.9-4-11.2-4s-8.1,1.5-11.2,4H4v-4c0-2.2,1.8-4,4-4h48
10
- c2.2,0,4,1.8,4,4V24z"/>
11
  </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" id="exif" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
+ <path class="envira-icon" d="M56,12h-6C47.5,7.3,43.2,0,40,0H24c-3.2,0-7.5,7.3-10,12H8c-4.4,0-8,3.6-8,8v36c0,4.4,3.6,8,8,8h48
6
+ c4.4,0,8-3.6,8-8V20C64,15.6,60.4,12,56,12z M24,4h16c1.5,0,4.2,4.5,6,8H18C19.8,8.5,22.5,4,24,4z M4,28h13
7
+ c-0.8,1.2-1.4,2.6-1.9,4H4V28z M60,56c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V36h10.2c-0.1,0.7-0.2,1.3-0.2,2c0,9.9,8.1,18,18,18
8
+ c9.9,0,18-8.1,18-18c0-0.7-0.1-1.3-0.2-2H60V56z M18,38c0-7.7,6.3-14,14-14s14,6.3,14,14c0,7.7-6.3,14-14,14S18,45.7,18,38z
9
+ M60,32H48.9c-0.5-1.4-1.1-2.8-1.9-4h13V32z M60,24H43.2c-3.1-2.5-6.9-4-11.2-4s-8.1,1.5-11.2,4H4v-4c0-2.2,1.8-4,4-4h48
10
+ c2.2,0,4,1.8,4,4V24z"/>
11
  </svg>
assets/css/images/icons/printing.svg CHANGED
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg version="1.1" id="printing" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
- <path class="envira-icon" fill="#3C4042" d="M24,20C24,20,24,20,24,20l-4,0v4c0,0,0,0,0,0c0,0,0,0,0,0v4h8v-8L24,20C24,20,24,20,24,20z M12,20
6
- C12,20,12,20,12,20l-4,0v4c0,0,0,0,0,0l0,0v4h8v-8L12,20C12,20,12,20,12,20z M62,12H48V0H16v12H2c-1.1,0-2,0.9-2,2v36
7
- c0,1.1,0.9,2,2,2h14v12h32V52h14c1.1,0,2-0.9,2-2V14C64,12.9,63.1,12,62,12z M20,4h24v8H20V4z M44,60H20V40h24V60z M60,46
8
- c0,1.1-0.9,2-2,2H48V36H16v12H6c-1.1,0-2-0.9-2-2V18c0-1.1,0.9-2,2-2h52c1.1,0,2,0.9,2,2V46z"/>
9
  </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" id="printing" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
+ <path class="envira-icon" fill="#3C4042" d="M24,20C24,20,24,20,24,20l-4,0v4c0,0,0,0,0,0c0,0,0,0,0,0v4h8v-8L24,20C24,20,24,20,24,20z M12,20
6
+ C12,20,12,20,12,20l-4,0v4c0,0,0,0,0,0l0,0v4h8v-8L12,20C12,20,12,20,12,20z M62,12H48V0H16v12H2c-1.1,0-2,0.9-2,2v36
7
+ c0,1.1,0.9,2,2,2h14v12h32V52h14c1.1,0,2-0.9,2-2V14C64,12.9,63.1,12,62,12z M20,4h24v8H20V4z M44,60H20V40h24V60z M60,46
8
+ c0,1.1-0.9,2-2,2H48V36H16v12H6c-1.1,0-2-0.9-2-2V18c0-1.1,0.9-2,2-2h52c1.1,0,2,0.9,2,2V46z"/>
9
  </svg>
assets/css/images/icons/social.svg CHANGED
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg version="1.1" id="social" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
- <path class="envira-icon" d="M47.492,12.001H15.999C7.162,12.001,0,19.165,0,28c0,7.669,5.401,14.061,12.603,15.621L15.999,64l15.999-8l-3.001-12.001
6
- h18.502l16.496,11.999V0L47.492,12.001z M19.054,58l-2.332-13.997h8.154l2.465,9.855L19.054,58z M43.995,39.998H31.998V40H15.999
7
- C9.372,40,4,34.625,4,28c0-6.626,5.372-11.998,11.999-11.998h15.998v-0.004h11.998V39.998z M59.995,47.996l-11.998-8.57V16.569
8
- l11.998-8.571V47.996z"/>
9
  </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" id="social" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
5
+ <path class="envira-icon" d="M47.492,12.001H15.999C7.162,12.001,0,19.165,0,28c0,7.669,5.401,14.061,12.603,15.621L15.999,64l15.999-8l-3.001-12.001
6
+ h18.502l16.496,11.999V0L47.492,12.001z M19.054,58l-2.332-13.997h8.154l2.465,9.855L19.054,58z M43.995,39.998H31.998V40H15.999
7
+ C9.372,40,4,34.625,4,28c0-6.626,5.372-11.998,11.999-11.998h15.998v-0.004h11.998V39.998z M59.995,47.996l-11.998-8.57V16.569
8
+ l11.998-8.571V47.996z"/>
9
  </svg>
assets/css/images/icons/zoom.svg CHANGED
@@ -1,30 +1,30 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
4
- <g transform="matrix(0.5625,0,0,0.5625,0,28)">
5
- <clipPath id="_clip1">
6
- <path d="M0,0L32,0L32,32L64,32L64,64L0,64L0,0Z"/>
7
- </clipPath>
8
- <g clip-path="url(#_clip1)">
9
- <path class="envira-icon" d="M60,0L4,0C1.8,0 0,1.8 0,4L0,60C0,62.2 1.8,64 4,64L60,64C62.2,64 64,62.2 64,60L64,4C64,1.8 62.2,0 60,0ZM6,60C4.9,60 4,59.1 4,58L4,51.2L21.6,37L41.5,60L6,60ZM60,58C60,59.1 59.1,60 58,60L47.2,60L32.3,42.8L49.8,28.5L59.9,39.5L60,39.5L60,58ZM60,33.3L51.9,24.5C51.4,24.1 50.7,24 50,24C49.4,24 48.8,24.1 48.4,24.5L29.7,39.8L23.5,32.6C23,32.1 22.4,31.9 21.8,32C21.6,32 21.5,32.1 21.3,32.1C21.2,32.1 21.2,32.1 21.1,32.2C20.7,32.3 20.3,32.3 20,32.6L4,45.7L4,6C4,4.9 4.9,4 6,4L58,4C59.1,4 60,4.9 60,6L60,33.3ZM16,8C11.6,8 8,11.6 8,16C8,20.4 11.6,24 16,24C20.4,24 24,20.4 24,16C24,11.6 20.4,8 16,8ZM16,20C13.8,20 12,18.2 12,16C12,13.8 13.8,12 16,12C18.2,12 20,13.8 20,16C20,18.2 18.2,20 16,20Z" style="fill-rule:nonzero;"/>
10
- </g>
11
- </g>
12
- <g transform="matrix(1,0,0,1,-1,1)">
13
- <g id="Layer3">
14
- <clipPath id="_clip2">
15
- <path d="M20,0L64,0L64,44L20,44L20,0ZM62,42L62,2L22,2L22,42L62,42Z"/>
16
- </clipPath>
17
- <g clip-path="url(#_clip2)">
18
- <rect x="20" y="0" width="44" height="44" class="envira-icon" />
19
- </g>
20
- </g>
21
- </g>
22
- <g transform="matrix(1.17188,0,0,1.17187,13,-6)">
23
- <clipPath id="_clip3">
24
- <rect x="5.973" y="6.827" width="35.84" height="35.84"/>
25
- </clipPath>
26
- <g clip-path="url(#_clip3)">
27
- <path class="envira-icon" d="M60,0L4,0C1.8,0 0,1.8 0,4L0,60C0,62.2 1.8,64 4,64L60,64C62.2,64 64,62.2 64,60L64,4C64,1.8 62.2,0 60,0ZM6,60C4.9,60 4,59.1 4,58L4,51.2L21.6,37L41.5,60L6,60ZM60,58C60,59.1 59.1,60 58,60L47.2,60L32.3,42.8L49.8,28.5L59.9,39.5L60,39.5L60,58ZM60,33.3L51.9,24.5C51.4,24.1 50.7,24 50,24C49.4,24 48.8,24.1 48.4,24.5L29.7,39.8L23.5,32.6C23,32.1 22.4,31.9 21.8,32C21.6,32 21.5,32.1 21.3,32.1C21.2,32.1 21.2,32.1 21.1,32.2C20.7,32.3 20.3,32.3 20,32.6L4,45.7L4,6C4,4.9 4.9,4 6,4L58,4C59.1,4 60,4.9 60,6L60,33.3ZM16,8C11.6,8 8,11.6 8,16C8,20.4 11.6,24 16,24C20.4,24 24,20.4 24,16C24,11.6 20.4,8 16,8ZM16,20C13.8,20 12,18.2 12,16C12,13.8 13.8,12 16,12C18.2,12 20,13.8 20,16C20,18.2 18.2,20 16,20Z" style="fill-rule:nonzero;"/>
28
- </g>
29
- </g>
30
- </svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
4
+ <g transform="matrix(0.5625,0,0,0.5625,0,28)">
5
+ <clipPath id="_clip1">
6
+ <path d="M0,0L32,0L32,32L64,32L64,64L0,64L0,0Z"/>
7
+ </clipPath>
8
+ <g clip-path="url(#_clip1)">
9
+ <path class="envira-icon" d="M60,0L4,0C1.8,0 0,1.8 0,4L0,60C0,62.2 1.8,64 4,64L60,64C62.2,64 64,62.2 64,60L64,4C64,1.8 62.2,0 60,0ZM6,60C4.9,60 4,59.1 4,58L4,51.2L21.6,37L41.5,60L6,60ZM60,58C60,59.1 59.1,60 58,60L47.2,60L32.3,42.8L49.8,28.5L59.9,39.5L60,39.5L60,58ZM60,33.3L51.9,24.5C51.4,24.1 50.7,24 50,24C49.4,24 48.8,24.1 48.4,24.5L29.7,39.8L23.5,32.6C23,32.1 22.4,31.9 21.8,32C21.6,32 21.5,32.1 21.3,32.1C21.2,32.1 21.2,32.1 21.1,32.2C20.7,32.3 20.3,32.3 20,32.6L4,45.7L4,6C4,4.9 4.9,4 6,4L58,4C59.1,4 60,4.9 60,6L60,33.3ZM16,8C11.6,8 8,11.6 8,16C8,20.4 11.6,24 16,24C20.4,24 24,20.4 24,16C24,11.6 20.4,8 16,8ZM16,20C13.8,20 12,18.2 12,16C12,13.8 13.8,12 16,12C18.2,12 20,13.8 20,16C20,18.2 18.2,20 16,20Z" style="fill-rule:nonzero;"/>
10
+ </g>
11
+ </g>
12
+ <g transform="matrix(1,0,0,1,-1,1)">
13
+ <g id="Layer3">
14
+ <clipPath id="_clip2">
15
+ <path d="M20,0L64,0L64,44L20,44L20,0ZM62,42L62,2L22,2L22,42L62,42Z"/>
16
+ </clipPath>
17
+ <g clip-path="url(#_clip2)">
18
+ <rect x="20" y="0" width="44" height="44" class="envira-icon" />
19
+ </g>
20
+ </g>
21
+ </g>
22
+ <g transform="matrix(1.17188,0,0,1.17187,13,-6)">
23
+ <clipPath id="_clip3">
24
+ <rect x="5.973" y="6.827" width="35.84" height="35.84"/>
25
+ </clipPath>
26
+ <g clip-path="url(#_clip3)">
27
+ <path class="envira-icon" d="M60,0L4,0C1.8,0 0,1.8 0,4L0,60C0,62.2 1.8,64 4,64L60,64C62.2,64 64,62.2 64,60L64,4C64,1.8 62.2,0 60,0ZM6,60C4.9,60 4,59.1 4,58L4,51.2L21.6,37L41.5,60L6,60ZM60,58C60,59.1 59.1,60 58,60L47.2,60L32.3,42.8L49.8,28.5L59.9,39.5L60,39.5L60,58ZM60,33.3L51.9,24.5C51.4,24.1 50.7,24 50,24C49.4,24 48.8,24.1 48.4,24.5L29.7,39.8L23.5,32.6C23,32.1 22.4,31.9 21.8,32C21.6,32 21.5,32.1 21.3,32.1C21.2,32.1 21.2,32.1 21.1,32.2C20.7,32.3 20.3,32.3 20,32.6L4,45.7L4,6C4,4.9 4.9,4 6,4L58,4C59.1,4 60,4.9 60,6L60,33.3ZM16,8C11.6,8 8,11.6 8,16C8,20.4 11.6,24 16,24C20.4,24 24,20.4 24,16C24,11.6 20.4,8 16,8ZM16,20C13.8,20 12,18.2 12,16C12,13.8 13.8,12 16,12C18.2,12 20,13.8 20,16C20,18.2 18.2,20 16,20Z" style="fill-rule:nonzero;"/>
28
+ </g>
29
+ </g>
30
+ </svg>
assets/css/justifiedGallery.css CHANGED
@@ -1,6 +1,6 @@
1
- .envira-js-desaturate,.envira-js-desaturate-hover:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" /></filter></svg>#filter');-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-blur,.envira-js-blur:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feGaussianBlur stdDeviation="3" /></filter></svg>#filter');-webkit-filter:blur(3px);filter:blur(3px);filter:progid:DXImageTransform.Microsoft.Blur(pixelradius=3);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-vintage,.envira-js-vintage:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.5751000000000001 0.5383 0.1323 0 0 0.24429999999999996 0.7802000000000001 0.11760000000000001 0 0 0.1904 0.3738 0.39170000000000005 0 0 0 0 0 1 0" /><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0.9" /><feFuncG type="linear" slope="0.9" /><feFuncB type="linear" slope="0.9" /></feComponentTransfer><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="1.3" intercept="-0.15000000000000002" /><feFuncG type="linear" slope="1.3" intercept="-0.15000000000000002" /><feFuncB type="linear" slope="1.3" intercept="-0.15000000000000002" /></feComponentTransfer></filter></svg>#filter');-webkit-filter:sepia(70%) brightness(90%) contrast(130%);filter:sepia(70%) brightness(90%) contrast(130%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-threshold,.envira-js-threshold:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" /><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="3" intercept="-1" /><feFuncG type="linear" slope="3" intercept="-1" /><feFuncB type="linear" slope="3" intercept="-1" /></feComponentTransfer><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="1.7" /><feFuncG type="linear" slope="1.7" /><feFuncB type="linear" slope="1.7" /></feComponentTransfer></filter></svg>#filter');-webkit-filter:grayscale(100%) contrast(300%) brightness(170%);filter:grayscale(100%) contrast(300%) brightness(170%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}/*!
2
- * Justified Gallery - v3.6.2
3
- * http://miromannino.github.io/Justified-Gallery/
4
- * Copyright (c) 2016 Miro Mannino
5
- * Licensed under the MIT license.
6
- */.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>div>div{position:absolute;display:inline-block;overflow:hidden}.justified-gallery>div>div>a>img,.justified-gallery>div>div>img,.justified-gallery>div>div>a>div.effect-wrapper>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:none}.justified-gallery>div>div>a>.caption,.justified-gallery>div>div>.caption,.justified-gallery>div>div .caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000000;left:0;right:0;margin:0;color:white;font-size:12px;font-weight:300;font-family:sans-serif;z-index:2}.justified-gallery>div>div>a>.caption.caption-visible,.justified-gallery>div>div>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible{display:initial;opacity:0.7;filter:"alpha(opacity=70)";-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>div>div>a>.envira-exif,.justified-gallery>div>div>.envira-exif,.justified-gallery>div>div .envira-exif{display:none;opacity:0.8;position:absolute;top:0;padding:5px;background:rgba(255,255,255,0.7);left:0;right:0;margin:0;color:black;font-size:10px;font-weight:300;font-family:sans-serif}.justified-gallery>div>div>a>.envira-exif.exif-visible,.justified-gallery>div>.envira-exif.exif-visible{display:initial;opacity:0.7;filter:"alpha(opacity=70)";-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.entry-visible{opacity:1.0;filter:alpha(opacity=100);-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.jg-filtered{display:none}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0 10px 0;left:50%;opacity:initial;filter:initial;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;opacity:0;filter:alpha(opacity=0);width:8px;height:8px;margin:0 4px 0 4px;background-color:#000;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px}
1
+ .envira-js-desaturate,.envira-js-desaturate-hover:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" /></filter></svg>#filter');-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-blur,.envira-js-blur:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feGaussianBlur stdDeviation="3" /></filter></svg>#filter');-webkit-filter:blur(3px);filter:blur(3px);filter:progid:DXImageTransform.Microsoft.Blur(pixelradius=3);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-vintage,.envira-js-vintage:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.5751000000000001 0.5383 0.1323 0 0 0.24429999999999996 0.7802000000000001 0.11760000000000001 0 0 0.1904 0.3738 0.39170000000000005 0 0 0 0 0 1 0" /><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0.9" /><feFuncG type="linear" slope="0.9" /><feFuncB type="linear" slope="0.9" /></feComponentTransfer><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="1.3" intercept="-0.15000000000000002" /><feFuncG type="linear" slope="1.3" intercept="-0.15000000000000002" /><feFuncB type="linear" slope="1.3" intercept="-0.15000000000000002" /></feComponentTransfer></filter></svg>#filter');-webkit-filter:sepia(70%) brightness(90%) contrast(130%);filter:sepia(70%) brightness(90%) contrast(130%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.envira-js-threshold,.envira-js-threshold:hover{filter:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><filter id="filter"><feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" /><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="3" intercept="-1" /><feFuncG type="linear" slope="3" intercept="-1" /><feFuncB type="linear" slope="3" intercept="-1" /></feComponentTransfer><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="linear" slope="1.7" /><feFuncG type="linear" slope="1.7" /><feFuncB type="linear" slope="1.7" /></feComponentTransfer></filter></svg>#filter');-webkit-filter:grayscale(100%) contrast(300%) brightness(170%);filter:grayscale(100%) contrast(300%) brightness(170%);-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}/*!
2
+ * Justified Gallery - v3.6.2
3
+ * http://miromannino.github.io/Justified-Gallery/
4
+ * Copyright (c) 2016 Miro Mannino
5
+ * Licensed under the MIT license.
6
+ */.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>div>div{position:absolute;display:inline-block;overflow:hidden}.justified-gallery>div>div>a>img,.justified-gallery>div>div>img,.justified-gallery>div>div>a>div.effect-wrapper>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:none}.justified-gallery>div>div>a>.caption,.justified-gallery>div>div>.caption,.justified-gallery>div>div .caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000000;left:0;right:0;margin:0;color:white;font-size:12px;font-weight:300;font-family:sans-serif;z-index:2}.justified-gallery>div>div>a>.caption.caption-visible,.justified-gallery>div>div>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible{display:initial;opacity:0.7;filter:"alpha(opacity=70)";-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>div>div>a>.envira-exif,.justified-gallery>div>div>.envira-exif,.justified-gallery>div>div .envira-exif{display:none;opacity:0.8;position:absolute;top:0;padding:5px;background:rgba(255,255,255,0.7);left:0;right:0;margin:0;color:black;font-size:10px;font-weight:300;font-family:sans-serif}.justified-gallery>div>div>a>.envira-exif.exif-visible,.justified-gallery>div>.envira-exif.exif-visible{display:initial;opacity:0.7;filter:"alpha(opacity=70)";-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.entry-visible{opacity:1.0;filter:alpha(opacity=100);-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.jg-filtered{display:none}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0 10px 0;left:50%;opacity:initial;filter:initial;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;opacity:0;filter:alpha(opacity=0);width:8px;height:8px;margin:0 4px 0 4px;background-color:#000;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px}
assets/css/metabox.css CHANGED
@@ -1 +1,1339 @@
1
- body.post-type-envira #message,body.post-type-envira_album #message{margin:5px 20px 15px 20px}body.post-type-envira #wp-link-wrap,body.post-type-envira_album #wp-link-wrap{z-index:180105 !important}body.post-type-envira #wp-link-backdrop,body.post-type-envira_album #wp-link-backdrop{z-index:160105 !important}form#post.envira-gallery{margin:0 20px}form#post.envira-gallery #poststuff p.envira-intro{margin:0;padding:0 0 30px 0;border-bottom:1px solid #ddd;font-size:16px;font-weight:700}form#post.envira-gallery #poststuff p.envira-intro small{margin:5px 0 0 0;display:block;font-weight:400}form#post.envira-gallery #poststuff p.envira-intro small a{text-decoration:none;font-weight:600}form#post.envira-gallery #poststuff div.envira-video-help{position:relative;z-index:1;width:100%;margin:20px 0 0 0}form#post.envira-gallery #poststuff div.envira-video-help iframe{position:relative;z-index:1;width:100%;height:auto;min-height:300px}form#post.envira-gallery #poststuff div.envira-video-help a.envira-video-close{position:absolute;z-index:2;top:-12px;right:-12px;width:24px;height:24px;line-height:24px;-webkit-border-radius:50%;-moz-border-radius:50%;-o-border-radius:50%;border-radius:50%;background:#f5f5f5;color:#000;text-align:center;text-decoration:none}form#post.envira-gallery #poststuff ul.envira-gallery-images-output{width:100%}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li{position:relative;display:inline-block;width:150px;margin:0 20px 20px 0;padding:0;list-style:none;vertical-align:top;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background:#f7f7f7}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li img{display:block;width:150px;height:150px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.placeholder-image{display:block;width:148px;height:149px;background:url(images/icons/leaf.svg) center no-repeat;background-size:64px 64px;border-left:1px solid #dfdfdf;border-top:1px solid #dfdfdf;border-right:1px solid #dfdfdf}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta{width:148px;overflow:hidden;text-align:center;border-left:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-right:1px solid #dfdfdf}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title{font-size:12px;font-weight:700;width:138px;height:18px;line-height:18px;margin:8px 5px;overflow:hidden}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title a.hint{position:absolute;display:inline-block;bottom:10px;right:10px;width:16px;height:16px;background:#f7f7f7}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title a.hint.hidden{display:none}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.additional{display:none;margin:5px 0 0 0;font-weight:400}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.check{display:none;position:absolute;right:5px;top:5px;width:24px;height:24px;background-color:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,0.15);box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,0.15)}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.check div.media-modal-icon{display:none;width:15px;height:15px;margin:5px 0 0 5px;background-position:-21px 0}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons{position:absolute;display:block;top:5px;left:5px;width:25px;height:25px;line-height:25px;font-size:18px;outline:none;z-index:20;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons.envira-gallery-modify-image{background:#0085ba;color:#fff}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons.envira-gallery-remove-image{left:35px;background:#e02626;color:#fff}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected{width:148px;border:2px solid #7cc048 !important}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected a.check{display:block;background-color:#7cc048;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #7cc048;box-shadow:0 0 0 1px #fff,0 0 0 2px #7cc048}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected a.check div.media-modal-icon{display:block}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected div.meta{width:146px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.ui-sortable-helper li{position:absolute;top:0;left:0}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li{position:relative;z-index:2;display:block;width:100%;margin:0 0 10px 0;padding:10px 15px;background:#fff;border:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li img{display:inline-block;width:75px;margin-left:45px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta{position:absolute;z-index:1;left:0;display:inline-block;width:100%;padding:0 80px 0 150px;border:none;font-weight:700;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.title{display:block;width:100%;height:auto;font-size:16px;margin:0;padding:0}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.title a.hint{display:none}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.additional{display:block}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.check{display:block;position:absolute;left:15px;top:35px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.envira-gallery-remove-image{left:auto;top:10px;right:10px}form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.envira-gallery-modify-image{left:auto;top:10px;right:40px}form#post.envira-gallery #poststuff #envira-gallery{margin:60px 0 20px 0}form#post.envira-gallery #poststuff #envira-gallery .handlediv,form#post.envira-gallery #poststuff #envira-albums .handlediv{display:none}form#post.envira-gallery #poststuff #envira-gallery .hndle,form#post.envira-gallery #poststuff #envira-albums .hndle{display:none}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper{margin:-56px 0 0 -1px;padding:0;border-bottom:none}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab{display:inline-block;width:49%;margin:0;padding:15px 0;text-align:center;font-size:16px;border-color:#e5e5e5;background:#f5f5f5}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.nav-tab-native-envira-gallery span,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab.nav-tab-native-envira-gallery span{display:inline-block;background:url(images/icons/leaf.svg) 0 5px no-repeat;background-size:14px 14px;text-indent:20px}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.nav-tab-external-gallery,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab.nav-tab-external-gallery{margin-right:-1px}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:hover,form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.envira-active,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab:hover,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab.envira-active{background:#fff;border-bottom:1px solid #fff}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:focus,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:last-child,form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab:last-child{float:right}form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab input[type=radio],form#post.envira-gallery #poststuff #envira-albums h2.nav-tab-wrapper .nav-tab input[type=radio]{display:none}form#post.envira-gallery #poststuff #envira-gallery .inside,form#post.envira-gallery #poststuff #envira-albums .inside{margin:0;padding:0}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui{height:210px}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area{display:none;border:4px dashed #b4b9be;height:200px}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside{margin:0 auto 0 auto}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p{display:block;text-align:center;color:#a0a5aa;position:absolute;top:50%;left:50%;margin:-10px 0 0 -10px}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-info,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-info{display:none;font-size:20px}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-buttons,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-buttons{text-align:center;position:relative;top:20px;left:0;margin:0}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button{display:none;position:absolute;margin:0 auto;left:280px;right:0;width:230px;top:115px;text-align:center}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside{width:520px;margin:50px auto 0 auto}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p{position:relative;top:0;left:0;margin:0}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-info,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-info{display:block}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons{margin:10px 0 0 0;text-align:left}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar{display:none;width:100%;position:relative;height:10px;width:100%;margin:10px auto;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,0.1)}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-inner,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-inner{height:10px;min-width:20px;width:0;background:#aaa;background:rgba(0,0,0,0.2);border-radius:10px;-webkit-transition:width 300ms;-moz-transition:width 300ms;-ms-transition:width 300ms;-o-transition:width 300ms;transition:width 300ms}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status{clear:both;position:absolute;right:0;width:50%;height:30px;margin:12px 0 0 0;text-align:right}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status .done,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status .done{display:none}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui p.upload-flash-bypass,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui p.upload-flash-bypass{display:none}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab{padding:20px}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external{text-align:center}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external p.envira-intro,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external p.envira-intro{margin:0 0 20px 0;padding:0;border:none}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav{margin:0 0 40px 0;text-align:center}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li{display:inline-block;margin:0 20px 0 0;vertical-align:top}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:last-child,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:last-child{margin:0}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a{float:left;width:110px}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label input,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a input,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label input,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a input{display:none}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.icon{width:110px;height:110px;margin:0 0 10px 0;border:1px solid #ddd;background-size:64px 64px;background-position:center;background-repeat:no-repeat}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.title,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.title,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.title,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.title{font-weight:700}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover label div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover a div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active label div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active a div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover label div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover a div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active label div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active a div.icon{background-color:#f7fcf3;border-color:#7cc048}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc label div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc a div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc label div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc a div.icon{background-image:url(../images/types/fc.png)}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram label div.icon,form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram a div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram label div.icon,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram a div.icon{background-image:url(../images/types/instagram.png)}form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external a.button.button-x-large,form#post.envira-gallery #poststuff #envira-albums .inside div.envira-tab#envira-gallery-external a.button.button-x-large{margin-top:30px}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native{position:relative}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native ul#envira-album-drag-drop-area{z-index:2;min-height:200px;margin:0;padding:20px;border:4px dashed #b4b9be;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native ul#envira-album-drag-drop-area li{cursor:move}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info{position:absolute;top:80px;z-index:1;margin:0 auto;left:0;right:0;text-align:center;color:#a0a5aa;font-size:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info span{display:block}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info span.click{font-size:18px}form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info small{display:block;margin:5px 0;font-size:14px}form#post.envira-gallery #poststuff #envira-gallery-settings,form#post.envira-gallery #poststuff #envira-albums-settings{background:#f7f7f7}form#post.envira-gallery #poststuff #envira-gallery-settings:after,form#post.envira-gallery #poststuff #envira-albums-settings:after{content:"";display:table;clear:both}form#post.envira-gallery #poststuff #envira-gallery-settings .handlediv,form#post.envira-gallery #poststuff #envira-albums-settings .handlediv{display:none}form#post.envira-gallery #poststuff #envira-gallery-settings .hndle,form#post.envira-gallery #poststuff #envira-albums-settings .hndle{display:none}form#post.envira-gallery #poststuff #envira-gallery-settings .inside,form#post.envira-gallery #poststuff #envira-albums-settings .inside{margin:0;padding:0}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav{width:160px;margin:0;padding:0;border-right:1px solid #ddd}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li{float:left;width:100%;margin:0;padding:0}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a{float:left;width:120px;margin:0 20px;padding:20px 0 20px 25px;text-decoration:none;color:#999;border-bottom:1px solid #ddd;background-position:left center;background-repeat:no-repeat;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:none;-webkit-transition:none}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:hover,form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a.envira-active,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:hover,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a.envira-active{width:161px;margin:-1px 0 0 0;padding:20px 20px 20px 45px;text-decoration:none;color:#444;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-right:1px solid #fff;background-color:#fff;background-position:20px center}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:focus,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li:last-child a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li:last-child a{border-bottom:none}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li:last-child a:hover,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li:last-child a:hover{border-bottom:none}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-images a,form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-galleries a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-images a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-galleries a{background-image:url(images/icons/leaf.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-config a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-config a{background-image:url(images/icons/configuration.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-lightbox a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-lightbox a{background-image:url(images/icons/lightbox.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-mobile a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-mobile a{background-image:url(images/icons/mobile.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-breadcrumbs a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-breadcrumbs a{background-image:url(images/icons/breadcrumbs.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-comments a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-comments a{background-image:url(images/icons/comments.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-downloads a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-downloads a{background-image:url(images/icons/downloads.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-exif a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-exif a{background-image:url(images/icons/exif.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-pagination a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-pagination a{background-image:url(images/icons/pagination.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-pinterest a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-pinterest a{background-image:url(images/icons/pinterest.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-proofing a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-proofing a{background-image:url(images/icons/proofing.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-printing a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-printing a{background-image:url(images/icons/printing.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-slideshow a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-slideshow a{background-image:url(images/icons/slideshow.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-standalone a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-standalone a{background-image:url(images/icons/standalone.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-social a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-social a{background-image:url(images/icons/social.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-tags a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-tags a{background-image:url(images/icons/tags.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-videos a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-videos a{background-image:url(images/icons/video.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-watermarking a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-watermarking a{background-image:url(images/icons/watermark.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-woocommerce a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-woocommerce a{background-image:url(images/icons/woocommerce.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-zoom a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-zoom a{background-image:url(images/icons/zoom.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-misc a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-misc a{background-image:url(images/icons/misc.svg);background-size:16px 16px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs{margin:0 0 0 160px;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;border-left:1px solid #ddd}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs h2,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs h2{clear:none}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table{clear:none;margin:0 0 40px 0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table.no-margin,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table.no-margin{margin:0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table th,form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table td,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table th,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table td{padding-top:20px;padding-bottom:20px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table tr.sub-heading th,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table tr.sub-heading th{margin:0;padding:20px 0 0 0;font-style:italic;font-weight:400;font-size:16px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table label.full-width,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table label.full-width{display:block;margin:0 0 5px 0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table label.full-width:first-child,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table label.full-width:first-child{margin-top:5px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table textarea,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table textarea{width:100%}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table input[type=checkbox],form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table input[type=checkbox]{margin-bottom:2px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table p.description,form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table span.description,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table p.description,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table span.description{font-size:13px;font-style:italic;color:#666}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav{width:100%}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav.envira-tab-options,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav.envira-tab-options{margin:20px 0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons{position:absolute;color:#999}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-grid-view,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-grid-view{right:20px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-list-view,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-list-view{right:50px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.selected,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.selected{color:#23282d}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons span,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons span{display:inline-block;text-indent:-9999px}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav.envira-select-options,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav.envira-select-options{display:none}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images ul#envira-gallery-output li,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images ul#envira-gallery-output li{cursor:move}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav{width:100%}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options{height:40px;margin:20px 0;position:relative}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options a.envira-galleries-add,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options a.envira-galleries-add{display:none;position:absolute;top:0;left:0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options input#envira-albums-gallery-search,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options input#envira-albums-gallery-search{position:absolute;top:0;right:0}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-select-options,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-select-options{display:none}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li{cursor:move}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-remove-image,form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-modify-image,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-remove-image,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-modify-image{display:none}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs:after,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs:after{content:"";display:table;clear:both}form#post.envira-gallery #poststuff #envira-gallery-preview:after{content:"";display:table;clear:both}form#post.envira-gallery #poststuff #envira-gallery-preview button.handlediv{display:none}form#post.envira-gallery #poststuff #envira-gallery-preview h2.hndle{display:none}form#post.envira-gallery #poststuff #envira-gallery-preview .inside{margin:0;padding:20px}.media-modal .edit-attachment-frame .edit-media-header button.right{border-right:1px solid #ddd}.media-modal .uploader-inline a.envira-media-library.button{display:none}.media-modal .envira-progress-bar .envira-progress-bar-status{display:none}.media-modal .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #7cc048;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #7cc048}.media-modal .attachment.details .check{background-color:#7cc048;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #7cc048;box-shadow:0 0 0 1px #fff,0 0 0 2px #7cc048}.media-modal ul.attachments.envira-albums-gallery-cover-image{padding:10px}.media-modal ul.attachments.envira-bulk-edit li.attachment{cursor:default}.media-modal ul.attachments.envira-bulk-edit li.attachment .attachment-preview{cursor:default}.media-modal .attachment-details .attachment-info{padding:16px}.media-modal .attachment-details .attachment-info .settings{margin:0;padding:0;border:none}.media-modal .attachment-details .attachment-info .settings .setting{margin:0 0 20px 0;padding:0 0 20px 0;border-bottom:1px solid #ddd}.media-modal .attachment-details .attachment-info .settings .setting input[type="text"],.media-modal .attachment-details .attachment-info .settings .setting textarea{display:block;width:100%;min-width:100%;margin:0}.media-modal .attachment-details .attachment-info .settings .setting input[type="checkbox"]{float:left;margin:0 5px 0 0}.media-modal .attachment-details .attachment-info .settings .setting select{margin:0}.media-modal .attachment-details .attachment-info .settings .setting span.name{display:block;width:100%;min-width:100%;margin:0;padding:0;text-align:left;font-weight:700;font-size:14px}.media-modal .attachment-details .attachment-info .settings .setting span.description{text-align:left;font-style:normal;font-size:13px;font-style:italic;color:#666}.media-modal .attachment-details .attachment-info .settings .setting div.description{clear:both;float:left;margin:5px 0 0 0;text-align:left;font-size:13px;font-style:italic;color:#666}.media-modal .attachment-details .attachment-info div.actions a.button{display:inline-block}@media (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi){.wp-core-ui a.check .media-modal-icon{background-image:url(../../../../../wp-includes/images/uploader-icons-2x.png) !important;-webkit-background-size:134px 15px;background-size:134px 15px}}@media screen and (max-width: 1100px){form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area{border-color:#d5d5d5}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside{width:100%;margin-top:20px}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons{text-align:center}form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button,form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button{left:0;right:0;width:235px;top:145px}}@media screen and (max-width: 768px){form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav{width:60px}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a{width:60px;height:60px;margin:0;padding:0;text-indent:-9999px;background-position:center}form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:hover,form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a.envira-active,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:hover,form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a.envira-active{width:60px;height:60px;margin:0;padding:0;text-indent:-9999px;background-position:center}form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs,form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs{margin:0 0 0 60px}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ==========================================================================
2
+ metabox.css loads on any Envira Gallery and Album Create/Edit Screen
3
+
4
+ Any styles that will be used by the main Gallery / Album editor screen should be
5
+ added to this file
6
+ ========================================================================== */
7
+ /* ==========================================================================
8
+ Imports
9
+ ========================================================================== */
10
+ /* ==========================================================================
11
+ Variables SCSS
12
+ ========================================================================== */
13
+ /* ==========================================================================
14
+ Mixins
15
+ ========================================================================== */
16
+ /**
17
+ * Media Query
18
+ */
19
+ /**
20
+ * Border-Radius
21
+ */
22
+ /* ==========================================================================
23
+ Messages
24
+ ========================================================================== */
25
+ body.post-type-envira {
26
+ /**
27
+ * Add left and right margins to ensure the message notification horizontally lines up
28
+ * with the metaboxes
29
+ */ }
30
+ body.post-type-envira #message {
31
+ margin: 5px 20px 15px 20px; }
32
+ body.post-type-envira #wp-link-wrap {
33
+ z-index: 180105 !important; }
34
+ body.post-type-envira #wp-link-backdrop {
35
+ z-index: 160105 !important; }
36
+
37
+ /* ==========================================================================
38
+ Form
39
+ - The envira-gallery class is assigned to the Gallery and Album Add/Edit screens form.
40
+ ========================================================================== */
41
+ form#post.envira-gallery {
42
+ /**
43
+ * Re-establish the left and right margins, so there's spacing between the Admin Menu
44
+ * and the content
45
+ */
46
+ margin: 0 20px;
47
+ /**
48
+ * Defined so we override WordPress' default styles
49
+ */ }
50
+ form#post.envira-gallery #poststuff {
51
+ /* ==========================================================================
52
+ Envira Gallery Shared Styles for Types and Settings
53
+ ========================================================================== */
54
+ /**
55
+ * Intro Text
56
+ */
57
+ /**
58
+ * Help Video
59
+ * - Can be placed inside p.envira-intro by JS, or outside p.envira-intro when
60
+ * viewing the Images tab for a Dynamic or Default Gallery
61
+ */
62
+ /**
63
+ * Image Grid
64
+ * - Used on the Images tab for Default Galleries, as well as the Preview Metabox
65
+ */
66
+ /* ==========================================================================
67
+ Envira Gallery Type
68
+ ========================================================================== */
69
+ /* ==========================================================================
70
+ Envira Albums Drag & Drop Area
71
+ ========================================================================== */
72
+ /* ==========================================================================
73
+ Envira Gallery Settings
74
+ Envira Albums Settings
75
+ ========================================================================== */
76
+ /* ==========================================================================
77
+ Envira Gallery Preview Metabox
78
+ ========================================================================== */ }
79
+ form#post.envira-gallery #poststuff p.envira-intro {
80
+ margin: 0;
81
+ padding: 0 0 30px 0;
82
+ border-bottom: 1px solid #ddd;
83
+ font-size: 16px;
84
+ font-weight: 700; }
85
+ form#post.envira-gallery #poststuff p.envira-intro small {
86
+ margin: 5px 0 0 0;
87
+ display: block;
88
+ font-weight: 400; }
89
+ form#post.envira-gallery #poststuff p.envira-intro small a {
90
+ text-decoration: none;
91
+ font-weight: 600; }
92
+ form#post.envira-gallery #poststuff div.envira-video-help {
93
+ position: relative;
94
+ z-index: 1;
95
+ width: 100%;
96
+ margin: 20px 0 0 0; }
97
+ form#post.envira-gallery #poststuff div.envira-video-help iframe {
98
+ position: relative;
99
+ z-index: 1;
100
+ width: 100%;
101
+ height: auto;
102
+ min-height: 300px; }
103
+ form#post.envira-gallery #poststuff div.envira-video-help a.envira-video-close {
104
+ position: absolute;
105
+ z-index: 2;
106
+ top: -12px;
107
+ right: -12px;
108
+ width: 24px;
109
+ height: 24px;
110
+ line-height: 24px;
111
+ -webkit-border-radius: 50%;
112
+ -moz-border-radius: 50%;
113
+ -o-border-radius: 50%;
114
+ border-radius: 50%;
115
+ background: #f5f5f5;
116
+ color: #000;
117
+ text-align: center;
118
+ text-decoration: none; }
119
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output {
120
+ width: 100%;
121
+ /**
122
+ * List View
123
+ */ }
124
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li {
125
+ position: relative;
126
+ display: inline-block;
127
+ width: 150px;
128
+ margin: 0 20px 20px 0;
129
+ padding: 0;
130
+ list-style: none;
131
+ vertical-align: top;
132
+ -moz-background-clip: padding;
133
+ -webkit-background-clip: padding-box;
134
+ background-clip: padding-box;
135
+ background: #f7f7f7;
136
+ /**
137
+ * If, for some reason, the image doesn't exist or fails to load,
138
+ * the placeholder logo is displayed
139
+ */
140
+ /**
141
+ * Metadata
142
+ */
143
+ /**
144
+ * Tick Icon
145
+ */
146
+ /**
147
+ * Edit / Delete Buttons
148
+ */
149
+ /**
150
+ * Selected state
151
+ */
152
+ /**
153
+ * Multiple selection sorting - stacks images when the user has selected more than one image + dragged them
154
+ */ }
155
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li img {
156
+ display: block;
157
+ width: 150px;
158
+ height: 150px; }
159
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.placeholder-image {
160
+ display: block;
161
+ width: 148px;
162
+ height: 149px;
163
+ background: url(images/icons/leaf.svg) center no-repeat;
164
+ background-size: 64px 64px;
165
+ border-left: 1px solid #dfdfdf;
166
+ border-top: 1px solid #dfdfdf;
167
+ border-right: 1px solid #dfdfdf; }
168
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta {
169
+ width: 148px;
170
+ overflow: hidden;
171
+ text-align: center;
172
+ border-left: 1px solid #dfdfdf;
173
+ border-bottom: 1px solid #dfdfdf;
174
+ border-right: 1px solid #dfdfdf;
175
+ /**
176
+ * Title
177
+ */
178
+ /**
179
+ * Additional metadata
180
+ */ }
181
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title {
182
+ font-size: 12px;
183
+ font-weight: 700;
184
+ width: 138px;
185
+ height: 18px;
186
+ line-height: 18px;
187
+ margin: 8px 5px;
188
+ overflow: hidden;
189
+ /**
190
+ * Hint
191
+ * - Displays the full title on hover
192
+ */ }
193
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title a.hint {
194
+ position: absolute;
195
+ display: inline-block;
196
+ bottom: 10px;
197
+ right: 10px;
198
+ width: 16px;
199
+ height: 16px;
200
+ background: #f7f7f7; }
201
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.title a.hint.hidden {
202
+ display: none; }
203
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li div.meta div.additional {
204
+ display: none;
205
+ margin: 5px 0 0 0;
206
+ font-weight: 400; }
207
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.check {
208
+ display: none;
209
+ position: absolute;
210
+ right: 5px;
211
+ top: 5px;
212
+ width: 24px;
213
+ height: 24px;
214
+ background-color: #eee;
215
+ -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(0, 0, 0, 0.15);
216
+ box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(0, 0, 0, 0.15); }
217
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.check div.media-modal-icon {
218
+ display: none;
219
+ width: 15px;
220
+ height: 15px;
221
+ margin: 5px 0 0 5px;
222
+ background-position: -21px 0; }
223
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons {
224
+ position: absolute;
225
+ display: block;
226
+ top: 5px;
227
+ left: 5px;
228
+ width: 25px;
229
+ height: 25px;
230
+ line-height: 25px;
231
+ font-size: 18px;
232
+ /* Controls the icon size */
233
+ outline: none;
234
+ z-index: 20;
235
+ border-radius: 2px;
236
+ -moz-border-radius: 2px;
237
+ -webkit-border-radius: 2px; }
238
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons.envira-gallery-modify-image {
239
+ background: #0085ba;
240
+ color: #ffffff; }
241
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li a.dashicons.envira-gallery-remove-image {
242
+ left: 35px;
243
+ background: #e02626;
244
+ color: #ffffff; }
245
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected {
246
+ width: 148px;
247
+ border: 2px solid #7cc048 !important; }
248
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected a.check {
249
+ display: block;
250
+ background-color: #7cc048;
251
+ -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #7cc048;
252
+ box-shadow: 0 0 0 1px #fff, 0 0 0 2px #7cc048; }
253
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected a.check div.media-modal-icon {
254
+ display: block; }
255
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.selected div.meta {
256
+ width: 146px; }
257
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output li.ui-sortable-helper li {
258
+ position: absolute;
259
+ top: 0;
260
+ left: 0; }
261
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li {
262
+ position: relative;
263
+ z-index: 2;
264
+ display: block;
265
+ width: 100%;
266
+ margin: 0 0 10px 0;
267
+ padding: 10px 15px;
268
+ background: #fff;
269
+ border: 1px solid #ddd;
270
+ -webkit-box-sizing: border-box;
271
+ -moz-box-sizing: border-box;
272
+ box-sizing: border-box;
273
+ border-radius: 2px;
274
+ -moz-border-radius: 2px;
275
+ -webkit-border-radius: 2px;
276
+ /**
277
+ * Metadata
278
+ */
279
+ /**
280
+ * Checkbox
281
+ * - Always display
282
+ */ }
283
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li img {
284
+ display: inline-block;
285
+ width: 75px;
286
+ margin-left: 45px; }
287
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta {
288
+ position: absolute;
289
+ z-index: 1;
290
+ left: 0;
291
+ display: inline-block;
292
+ width: 100%;
293
+ padding: 0 80px 0 150px;
294
+ border: none;
295
+ font-weight: 700;
296
+ text-align: left;
297
+ -webkit-box-sizing: border-box;
298
+ -moz-box-sizing: border-box;
299
+ box-sizing: border-box;
300
+ /**
301
+ * Title
302
+ */
303
+ /**
304
+ * Additional metadata
305
+ * - Displayed in list view
306
+ */ }
307
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.title {
308
+ display: block;
309
+ width: 100%;
310
+ height: auto;
311
+ font-size: 16px;
312
+ margin: 0;
313
+ padding: 0; }
314
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.title a.hint {
315
+ display: none; }
316
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li div.meta div.additional {
317
+ display: block; }
318
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.check {
319
+ display: block;
320
+ position: absolute;
321
+ left: 15px;
322
+ top: 35px; }
323
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.envira-gallery-remove-image {
324
+ left: auto;
325
+ top: 10px;
326
+ right: 10px; }
327
+ form#post.envira-gallery #poststuff ul.envira-gallery-images-output.list li a.envira-gallery-modify-image {
328
+ left: auto;
329
+ top: 10px;
330
+ right: 40px; }
331
+ form#post.envira-gallery #poststuff #envira-gallery {
332
+ margin: 60px 0 20px 0; }
333
+ form#post.envira-gallery #poststuff #envira-gallery {
334
+ /**
335
+ * Hide the title bar of the metabox, so we have a seamless style
336
+ */
337
+ /**
338
+ * Tabs
339
+ * - Move up vertically so they sit above the metabox
340
+ */
341
+ /**
342
+ * Tab Settings
343
+ */ }
344
+ form#post.envira-gallery #poststuff #envira-gallery .handlediv {
345
+ display: none; }
346
+ form#post.envira-gallery #poststuff #envira-gallery .hndle {
347
+ display: none; }
348
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper {
349
+ margin: -56px 0 0 -1px;
350
+ /* The height of the tab */
351
+ padding: 0;
352
+ border-bottom: none;
353
+ /**
354
+ * Increase tab sizes and style
355
+ */ }
356
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab {
357
+ display: inline-block;
358
+ width: 49%;
359
+ margin: 0;
360
+ padding: 15px 0;
361
+ text-align: center;
362
+ font-size: 16px;
363
+ border-color: #e5e5e5;
364
+ /* Matches the metabox border for a seamless UI */
365
+ background: #f5f5f5;
366
+ /**
367
+ * Envira Gallery Icon
368
+ */
369
+ /**
370
+ * External Gallery Tab
371
+ */
372
+ /**
373
+ * Hover and Active States
374
+ */
375
+ /**
376
+ * Focus State
377
+ * - Remove WordPress' blue focus box from tabs
378
+ */
379
+ /**
380
+ * Hides the radio input on a label
381
+ * The radio input will be selected when the label is clicked
382
+ */ }
383
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.nav-tab-native-envira-gallery span {
384
+ display: inline-block;
385
+ background: url(images/icons/leaf.svg) 0 5px no-repeat;
386
+ background-size: 14px 14px;
387
+ text-indent: 20px; }
388
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.nav-tab-external-gallery {
389
+ margin-right: -1px; }
390
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:hover, form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab.envira-active {
391
+ background: #ffffff;
392
+ border-bottom: 1px solid #ffffff; }
393
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:focus {
394
+ -webkit-box-shadow: none;
395
+ -moz-box-shadow: none;
396
+ box-shadow: none; }
397
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab:last-child {
398
+ float: right; }
399
+ form#post.envira-gallery #poststuff #envira-gallery h2.nav-tab-wrapper .nav-tab input[type=radio] {
400
+ display: none; }
401
+ form#post.envira-gallery #poststuff #envira-gallery .inside {
402
+ margin: 0;
403
+ padding: 0;
404
+ /**
405
+ * Native Envira Gallery Uploader / Select Files
406
+ * - Styles the pluploader instance to look the way we want it
407
+ * - Also see responsive styles at the end of this file
408
+ */ }
409
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui {
410
+ /* Reserves the space needed for the drag-drop-area, which is loaded using JS */
411
+ height: 210px;
412
+ /**
413
+ * A drag-drop-area div is always output, whether we're on a touch
414
+ * device or not. WordPress will only style this div if its parent
415
+ * has the .drag-drop class (i.e. touch devices won't get any CSS styling)
416
+ *
417
+ * The below CSS ensures that the drag drop area looks consistent
418
+ * regardless of device used, and then adjusts the layout if drag-drop is supported.
419
+ */
420
+ /**
421
+ * Select Files from Other Sources Button
422
+ */
423
+ /**
424
+ * When the uploader supports drag and drop, a .drag-drop
425
+ * class is appended to #drag-drop-area by WordPress
426
+ *
427
+ * We use this to show certain descriptions
428
+ */
429
+ /**
430
+ * Upload Progress Bar
431
+ */
432
+ /**
433
+ * Upload Progress Bar
434
+ */ }
435
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area {
436
+ display: none;
437
+ border: 4px dashed #b4b9be;
438
+ height: 200px; }
439
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside {
440
+ margin: 0 auto 0 auto; }
441
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p {
442
+ display: block;
443
+ text-align: center;
444
+ color: #a0a5aa;
445
+ position: absolute;
446
+ top: 50%;
447
+ left: 50%;
448
+ margin: -10px 0 0 -10px;
449
+ /**
450
+ * "Drop Files here"
451
+ */ }
452
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-info {
453
+ display: none;
454
+ font-size: 20px; }
455
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui #drag-drop-area .drag-drop-inside p.drag-drop-buttons {
456
+ text-align: center;
457
+ position: relative;
458
+ top: 20px;
459
+ left: 0;
460
+ margin: 0; }
461
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button {
462
+ display: none;
463
+ position: absolute;
464
+ margin: 0 auto;
465
+ left: 280px;
466
+ right: 0;
467
+ width: 230px;
468
+ top: 115px;
469
+ text-align: center; }
470
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside {
471
+ width: 520px;
472
+ margin: 50px auto 0 auto; }
473
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p {
474
+ position: relative;
475
+ top: 0;
476
+ left: 0;
477
+ margin: 0; }
478
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-info {
479
+ display: block; }
480
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons {
481
+ margin: 10px 0 0 0;
482
+ text-align: left; }
483
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar {
484
+ display: none;
485
+ width: 100%;
486
+ position: relative;
487
+ height: 10px;
488
+ width: 100%;
489
+ margin: 10px auto;
490
+ border-radius: 10px;
491
+ background: #dfdfdf;
492
+ background: rgba(0, 0, 0, 0.1); }
493
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-inner {
494
+ height: 10px;
495
+ min-width: 20px;
496
+ width: 0;
497
+ background: #aaa;
498
+ background: rgba(0, 0, 0, 0.2);
499
+ border-radius: 10px;
500
+ -webkit-transition: width 300ms;
501
+ -moz-transition: width 300ms;
502
+ -ms-transition: width 300ms;
503
+ -o-transition: width 300ms;
504
+ transition: width 300ms; }
505
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status {
506
+ clear: both;
507
+ position: absolute;
508
+ right: 0;
509
+ width: 50%;
510
+ height: 30px;
511
+ margin: 12px 0 0 0;
512
+ text-align: right; }
513
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-bar .envira-progress-bar-status .done {
514
+ display: none; }
515
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-adding-images {
516
+ display: none;
517
+ width: 100%;
518
+ position: relative;
519
+ height: 10px;
520
+ width: 100%;
521
+ margin: 5px auto;
522
+ border-radius: 10px;
523
+ /* background: #dfdfdf;
524
+ background: rgba(0,0,0,.1);
525
+ */ }
526
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-adding-images .envira-progress-bar-inner {
527
+ height: 10px;
528
+ min-width: 20px;
529
+ width: 0;
530
+ /* background: #aaa;
531
+ background: rgba(0,0,0,.2);*/
532
+ border-radius: 10px;
533
+ /* -webkit-transition: width 300ms;
534
+ -moz-transition: width 300ms;
535
+ -ms-transition: width 300ms;
536
+ -o-transition: width 300ms;
537
+ transition: width 300ms;*/ }
538
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-adding-images .envira-progress-status {
539
+ clear: both;
540
+ position: absolute;
541
+ right: 0;
542
+ width: 50%;
543
+ height: 30px;
544
+ margin: 12px 0 0 0;
545
+ text-align: right;
546
+ color: green;
547
+ -webkit-transition: 0.05s color ease-in-out;
548
+ transition: 0.05s color ease-in-out; }
549
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-adding-images .envira-progress-status .spinner {
550
+ float: right;
551
+ margin-top: 0;
552
+ visibility: visible; }
553
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui .envira-progress-adding-images .envira-progress-status .adding_images {
554
+ float: right;
555
+ display: inline-block; }
556
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui p.upload-flash-bypass {
557
+ display: none; }
558
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab {
559
+ padding: 20px;
560
+ /**
561
+ * External Gallery Tab Area
562
+ */ }
563
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external {
564
+ text-align: center;
565
+ /**
566
+ * Header
567
+ */
568
+ /**
569
+ * External Gallery Types
570
+ */
571
+ /**
572
+ * Upgrade Button
573
+ */ }
574
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external p.envira-intro {
575
+ margin: 0 0 20px 0;
576
+ padding: 0;
577
+ border: none; }
578
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav {
579
+ margin: 0 0 40px 0;
580
+ text-align: center; }
581
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li {
582
+ display: inline-block;
583
+ margin: 0 20px 0 0;
584
+ vertical-align: top;
585
+ /**
586
+ * Pro uses a <label> element so the user can select the Gallery Type
587
+ * Lite uses an <a> element so the user can go to the Upgrade URL
588
+ */
589
+ /**
590
+ * Hover State
591
+ * Selected State
592
+ */
593
+ /**
594
+ * Featured Content
595
+ */
596
+ /**
597
+ * Instagram
598
+ */ }
599
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:last-child {
600
+ margin: 0; }
601
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label,
602
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a {
603
+ float: left;
604
+ width: 110px; }
605
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label input,
606
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a input {
607
+ display: none; }
608
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.icon,
609
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.icon {
610
+ width: 110px;
611
+ height: 110px;
612
+ margin: 0 0 10px 0;
613
+ border: 1px solid #ddd;
614
+ background-size: 64px 64px;
615
+ background-position: center;
616
+ background-repeat: no-repeat; }
617
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li label div.title,
618
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li a div.title {
619
+ font-weight: 700; }
620
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover label div.icon,
621
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li:hover a div.icon, form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active label div.icon,
622
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li.envira-active a div.icon {
623
+ background-color: #f7fcf3;
624
+ border-color: #7cc048; }
625
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc label div.icon,
626
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-fc a div.icon {
627
+ background-image: url(../images/types/fc.png); }
628
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram label div.icon,
629
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external ul#envira-gallery-types-nav li#envira-gallery-type-instagram a div.icon {
630
+ background-image: url(../images/types/instagram.png); }
631
+ form#post.envira-gallery #poststuff #envira-gallery .inside div.envira-tab#envira-gallery-external a.button.button-x-large {
632
+ margin-top: 30px; }
633
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native {
634
+ position: relative;
635
+ /**
636
+ * Galleries (Drop Target)
637
+ */
638
+ /**
639
+ * Drag & Drop Instructions
640
+ */ }
641
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native ul#envira-album-drag-drop-area {
642
+ z-index: 2;
643
+ min-height: 200px;
644
+ margin: 0;
645
+ padding: 20px;
646
+ border: 4px dashed #b4b9be;
647
+ -webkit-box-sizing: border-box;
648
+ -moz-box-sizing: border-box;
649
+ box-sizing: border-box; }
650
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native ul#envira-album-drag-drop-area li {
651
+ cursor: move; }
652
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info {
653
+ position: absolute;
654
+ top: 80px;
655
+ z-index: 1;
656
+ margin: 0 auto;
657
+ left: 0;
658
+ right: 0;
659
+ text-align: center;
660
+ color: #a0a5aa;
661
+ font-size: 20px;
662
+ -webkit-box-sizing: border-box;
663
+ -moz-box-sizing: border-box;
664
+ box-sizing: border-box; }
665
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info span {
666
+ display: block; }
667
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info span.click {
668
+ font-size: 18px; }
669
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-types #envira-album-native p.drag-drop-info small {
670
+ display: block;
671
+ margin: 5px 0;
672
+ font-size: 14px; }
673
+ form#post.envira-gallery #poststuff #envira-gallery-settings,
674
+ form#post.envira-gallery #poststuff #envira-albums-settings {
675
+ background: #f7f7f7;
676
+ /* The background for tabs, full height */
677
+ /**
678
+ * Clearfix
679
+ */
680
+ /**
681
+ * Hide the title bar of the metabox, so we have a seamless style
682
+ */
683
+ /**
684
+ * Tabs
685
+ */
686
+ /**
687
+ * Settings
688
+ */ }
689
+ form#post.envira-gallery #poststuff #envira-gallery-settings:after,
690
+ form#post.envira-gallery #poststuff #envira-albums-settings:after {
691
+ content: "";
692
+ display: table;
693
+ clear: both; }
694
+ form#post.envira-gallery #poststuff #envira-gallery-settings .handlediv,
695
+ form#post.envira-gallery #poststuff #envira-albums-settings .handlediv {
696
+ display: none; }
697
+ form#post.envira-gallery #poststuff #envira-gallery-settings .hndle,
698
+ form#post.envira-gallery #poststuff #envira-albums-settings .hndle {
699
+ display: none; }
700
+ form#post.envira-gallery #poststuff #envira-gallery-settings .inside,
701
+ form#post.envira-gallery #poststuff #envira-albums-settings .inside {
702
+ margin: 0;
703
+ padding: 0; }
704
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav,
705
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav {
706
+ width: 160px;
707
+ margin: 0;
708
+ padding: 0;
709
+ border-right: 1px solid #ddd; }
710
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li,
711
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li {
712
+ float: left;
713
+ width: 100%;
714
+ margin: 0;
715
+ padding: 0;
716
+ /**
717
+ * Last Item
718
+ */
719
+ /**
720
+ * Tab Icons
721
+ */ }
722
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a,
723
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a {
724
+ float: left;
725
+ width: 120px;
726
+ margin: 0 20px;
727
+ padding: 20px 0 20px 25px;
728
+ text-decoration: none;
729
+ color: #999;
730
+ border-bottom: 1px solid #ddd;
731
+ background-position: left center;
732
+ background-repeat: no-repeat;
733
+ -webkit-box-sizing: border-box;
734
+ -moz-box-sizing: border-box;
735
+ box-sizing: border-box;
736
+ transition: none;
737
+ -webkit-transition: none;
738
+ /**
739
+ * Hover and Active States
740
+ */
741
+ /**
742
+ * Focus State
743
+ * - Remove WordPress' blue focus box from tabs
744
+ */ }
745
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:hover, form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a.envira-active,
746
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:hover,
747
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a.envira-active {
748
+ width: 161px;
749
+ margin: -1px 0 0 0;
750
+ padding: 20px 20px 20px 45px;
751
+ text-decoration: none;
752
+ color: #444;
753
+ border-top: 1px solid #ddd;
754
+ border-bottom: 1px solid #ddd;
755
+ border-right: 1px solid #ffffff;
756
+ background-color: #ffffff;
757
+ background-position: 20px center; }
758
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:focus,
759
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:focus {
760
+ -webkit-box-shadow: none;
761
+ -moz-box-shadow: none;
762
+ box-shadow: none; }
763
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li:last-child a,
764
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li:last-child a {
765
+ border-bottom: none; }
766
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li:last-child a:hover,
767
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li:last-child a:hover {
768
+ border-bottom: none; }
769
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-images a, form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-galleries a,
770
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-images a,
771
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-galleries a {
772
+ background-image: url(images/icons/leaf.svg);
773
+ background-size: 16px 16px; }
774
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-config a,
775
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-config a {
776
+ background-image: url(images/icons/configuration.svg);
777
+ background-size: 16px 16px; }
778
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-lightbox a,
779
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-lightbox a {
780
+ background-image: url(images/icons/lightbox.svg);
781
+ background-size: 16px 16px; }
782
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-mobile a,
783
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-mobile a {
784
+ background-image: url(images/icons/mobile.svg);
785
+ background-size: 16px 16px; }
786
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-breadcrumbs a,
787
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-breadcrumbs a {
788
+ background-image: url(images/icons/breadcrumbs.svg);
789
+ background-size: 16px 16px; }
790
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-comments a,
791
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-comments a {
792
+ background-image: url(images/icons/comments.svg);
793
+ background-size: 16px 16px; }
794
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-downloads a,
795
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-downloads a {
796
+ background-image: url(images/icons/downloads.svg);
797
+ background-size: 16px 16px; }
798
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-exif a,
799
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-exif a {
800
+ background-image: url(images/icons/exif.svg);
801
+ background-size: 16px 16px; }
802
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-pagination a,
803
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-pagination a {
804
+ background-image: url(images/icons/pagination.svg);
805
+ background-size: 16px 16px; }
806
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-pinterest a,
807
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-pinterest a {
808
+ background-image: url(images/icons/pinterest.svg);
809
+ background-size: 16px 16px; }
810
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-proofing a,
811
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-proofing a {
812
+ background-image: url(images/icons/proofing.svg);
813
+ background-size: 16px 16px; }
814
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-printing a,
815
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-printing a {
816
+ background-image: url(images/icons/printing.svg);
817
+ background-size: 16px 16px; }
818
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-slideshow a,
819
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-slideshow a {
820
+ background-image: url(images/icons/slideshow.svg);
821
+ background-size: 16px 16px; }
822
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-standalone a,
823
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-standalone a {
824
+ background-image: url(images/icons/standalone.svg);
825
+ background-size: 16px 16px; }
826
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-social a,
827
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-social a {
828
+ background-image: url(images/icons/social.svg);
829
+ background-size: 16px 16px; }
830
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-tags a,
831
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-tags a {
832
+ background-image: url(images/icons/tags.svg);
833
+ background-size: 16px 16px; }
834
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-videos a,
835
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-videos a {
836
+ background-image: url(images/icons/video.svg);
837
+ background-size: 16px 16px; }
838
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-watermarking a,
839
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-watermarking a {
840
+ background-image: url(images/icons/watermark.svg);
841
+ background-size: 16px 16px; }
842
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-woocommerce a,
843
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-woocommerce a {
844
+ background-image: url(images/icons/woocommerce.svg);
845
+ background-size: 16px 16px; }
846
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-zoom a,
847
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-zoom a {
848
+ background-image: url(images/icons/zoom.svg);
849
+ background-size: 16px 16px; }
850
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li.envira-misc a,
851
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li.envira-misc a {
852
+ background-image: url(images/icons/misc.svg);
853
+ background-size: 16px 16px; }
854
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs,
855
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs {
856
+ margin: 0 0 0 160px;
857
+ /* Must match #ul#envira-tabs-nav width */
858
+ padding: 20px;
859
+ -webkit-box-sizing: border-box;
860
+ -moz-box-sizing: border-box;
861
+ box-sizing: border-box;
862
+ background: #ffffff;
863
+ border-left: 1px solid #ddd;
864
+ /**
865
+ * Headings
866
+ */
867
+ /**
868
+ * All Tabs
869
+ */
870
+ /**
871
+ * Upsell/Upgrade Call To Actions
872
+ */
873
+ /**
874
+ * Tab: Images
875
+ */
876
+ /**
877
+ * Tab: Galleries
878
+ * - Used on Albums
879
+ */
880
+ /**
881
+ * Clearfix
882
+ */ }
883
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs h2,
884
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs h2 {
885
+ clear: none; }
886
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table,
887
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table {
888
+ clear: none;
889
+ margin: 0 0 40px 0;
890
+ /**
891
+ * Row padding
892
+ */
893
+ /**
894
+ * Sub Headings
895
+ * - Used to denote an Addon's settings within a settings tab e.g. the Mobile tab
896
+ */
897
+ /**
898
+ * Full width labels (used for checkboxes that we don't want to be inline)
899
+ */
900
+ /**
901
+ * Full width textareas
902
+ */
903
+ /**
904
+ * Checkbox alignment
905
+ */
906
+ /**
907
+ * Descriptions
908
+ */ }
909
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table.no-margin,
910
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table.no-margin {
911
+ margin: 0; }
912
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table th, form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table td,
913
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table th,
914
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table td {
915
+ padding-top: 20px;
916
+ padding-bottom: 20px; }
917
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table tr.sub-heading th,
918
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table tr.sub-heading th {
919
+ margin: 0;
920
+ padding: 20px 0 0 0;
921
+ font-style: italic;
922
+ font-weight: 400;
923
+ font-size: 16px; }
924
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table label.full-width,
925
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table label.full-width {
926
+ display: block;
927
+ margin: 0 0 5px 0; }
928
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table label.full-width:first-child,
929
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table label.full-width:first-child {
930
+ margin-top: 5px; }
931
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table textarea,
932
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table textarea {
933
+ width: 100%; }
934
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table input[type=checkbox],
935
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table input[type=checkbox] {
936
+ margin-bottom: 2px; }
937
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table p.description,
938
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs table.form-table span.description,
939
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table p.description,
940
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs table.form-table span.description {
941
+ font-size: 13px;
942
+ font-style: italic;
943
+ color: #666; }
944
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-header,
945
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-header {
946
+ display: table;
947
+ margin-bottom: 10px;
948
+ width: 100%;
949
+ border-bottom: 1px solid #ccc;
950
+ padding-bottom: 15px; }
951
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-header img,
952
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-header img {
953
+ float: left; }
954
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-header h2,
955
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-header h2 {
956
+ float: left;
957
+ font-size: 24px;
958
+ line-height: 24px;
959
+ font-weight: 500;
960
+ margin-top: 0px;
961
+ max-width: 80%;
962
+ padding-top: 0; }
963
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .hero-image-exterior,
964
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .hero-image-exterior {
965
+ border: 1px solid #ccc;
966
+ width: 100%;
967
+ max-width: 100%;
968
+ display: table; }
969
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .hero-image-exterior .interior,
970
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .hero-image-exterior .interior {
971
+ padding: 10px; }
972
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .hero-image-exterior .interior img,
973
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .hero-image-exterior .interior img {
974
+ width: 100%;
975
+ display: table; }
976
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .two-column-list,
977
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .two-column-list {
978
+ display: table;
979
+ width: 100%; }
980
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .two-column-list ul,
981
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .two-column-list ul {
982
+ list-style: none;
983
+ list-style-position: inside;
984
+ width: 45%;
985
+ float: left; }
986
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .cta-buttons,
987
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .cta-buttons {
988
+ margin-top: 30px; }
989
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs .upgrade-content .cta-buttons a,
990
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs .upgrade-content .cta-buttons a {
991
+ display: inline-block;
992
+ margin-right: 20px; }
993
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images,
994
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images {
995
+ /**
996
+ * Inline Navigation
997
+ * - Select All
998
+ * - List View / Grid View
999
+ * - Edit / Delete Selected Items
1000
+ */
1001
+ /**
1002
+ * Images
1003
+ * - Show move cursor
1004
+ */ }
1005
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav,
1006
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav {
1007
+ width: 100%;
1008
+ /**
1009
+ * Edit / Delete Selected
1010
+ * - Hidden by default, shown by JS when image(s) are selected
1011
+ */ }
1012
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav.envira-tab-options,
1013
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav.envira-tab-options {
1014
+ margin: 20px 0; }
1015
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons,
1016
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons {
1017
+ position: absolute;
1018
+ color: #999; }
1019
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-grid-view,
1020
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-grid-view {
1021
+ right: 20px; }
1022
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-list-view,
1023
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.dashicons-list-view {
1024
+ right: 50px; }
1025
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons.selected,
1026
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons.selected {
1027
+ color: #23282d; }
1028
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav a.dashicons span,
1029
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav a.dashicons span {
1030
+ display: inline-block;
1031
+ text-indent: -9999px; }
1032
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images nav.envira-select-options,
1033
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images nav.envira-select-options {
1034
+ display: none; }
1035
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-images ul#envira-gallery-output li,
1036
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-images ul#envira-gallery-output li {
1037
+ cursor: move; }
1038
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries,
1039
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries {
1040
+ /**
1041
+ * Inline Navigation
1042
+ * - Search
1043
+ */
1044
+ /**
1045
+ * Images
1046
+ * - Show move cursor
1047
+ * - Hide Edit & Delete icons, as these are only displayed when the gallery is assigned to the Album
1048
+ */ }
1049
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav,
1050
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav {
1051
+ width: 100%;
1052
+ /**
1053
+ * Bulk Action Buttons
1054
+ * - Hidden by default, shown by JS when galleries(s) are selected
1055
+ */ }
1056
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options,
1057
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options {
1058
+ height: 40px;
1059
+ margin: 20px 0;
1060
+ position: relative;
1061
+ /**
1062
+ * Add Galleries to Album Button
1063
+ */
1064
+ /**
1065
+ * Search
1066
+ */ }
1067
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options a.envira-galleries-add,
1068
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options a.envira-galleries-add {
1069
+ display: none;
1070
+ /* Displayed via JS when Galleries selected */
1071
+ position: absolute;
1072
+ top: 0;
1073
+ left: 0; }
1074
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options input#envira-albums-gallery-search,
1075
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-tab-options input#envira-albums-gallery-search {
1076
+ position: absolute;
1077
+ top: 0;
1078
+ right: 0; }
1079
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries nav.envira-select-options,
1080
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries nav.envira-select-options {
1081
+ display: none; }
1082
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li,
1083
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li {
1084
+ cursor: move; }
1085
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-remove-image,
1086
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-modify-image,
1087
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-remove-image,
1088
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs #envira-tab-galleries ul.envira-gallery-images-output li a.envira-gallery-modify-image {
1089
+ display: none; }
1090
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs:after,
1091
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs:after {
1092
+ content: "";
1093
+ display: table;
1094
+ clear: both; }
1095
+ form#post.envira-gallery #poststuff #envira-gallery-preview {
1096
+ /**
1097
+ * Clearfix
1098
+ */
1099
+ /**
1100
+ * Hide the title bar of the metabox, so we have a seamless style
1101
+ */ }
1102
+ form#post.envira-gallery #poststuff #envira-gallery-preview:after {
1103
+ content: "";
1104
+ display: table;
1105
+ clear: both; }
1106
+ form#post.envira-gallery #poststuff #envira-gallery-preview button.handlediv {
1107
+ display: none; }
1108
+ form#post.envira-gallery #poststuff #envira-gallery-preview h2.hndle {
1109
+ display: none; }
1110
+ form#post.envira-gallery #poststuff #envira-gallery-preview .inside {
1111
+ margin: 0;
1112
+ padding: 20px; }
1113
+
1114
+ /* ==========================================================================
1115
+ Media Modal (Insert Images and Edit Metadata)
1116
+ ========================================================================== */
1117
+ .media-modal {
1118
+ /**
1119
+ * Header Buttons
1120
+ */
1121
+ /**
1122
+ * Upload
1123
+ */
1124
+ /**
1125
+ * Insert
1126
+ */
1127
+ /**
1128
+ * Attachments
1129
+ * - Ensures that images fill each <li> attachment block, providing compatibility from WordPress 4.0 upwards
1130
+ * - Removed as breaks 4.4, 4.5
1131
+ ul.attachments {
1132
+ li.attachment {
1133
+ width: 20%;
1134
+
1135
+ img {
1136
+ width: 100%;
1137
+ height: 100%;
1138
+ }
1139
+ }
1140
+ }
1141
+ */
1142
+ /**
1143
+ * Albums: Select Gallery Cover Image
1144
+ * - Add some top spacing so that a selected cover image that's on the first line of the results
1145
+ * doesn't have its checkmark cut off
1146
+ */
1147
+ /**
1148
+ * Bulk Edit Attachments
1149
+ * - Restore cursor to default, so the user doesn't think they can click an image
1150
+ */
1151
+ /**
1152
+ * Edit
1153
+ */ }
1154
+ .media-modal .edit-attachment-frame .edit-media-header button.right {
1155
+ border-right: 1px solid #ddd; }
1156
+ .media-modal .uploader-inline {
1157
+ /**
1158
+ * Don't display the 'Select Files from Other Sources' button that we add to plupload
1159
+ * when we're in a modal.
1160
+ */ }
1161
+ .media-modal .uploader-inline a.envira-media-library.button {
1162
+ display: none; }
1163
+ .media-modal .envira-progress-bar .envira-progress-bar-status {
1164
+ display: none; }
1165
+ .media-modal .attachment.details {
1166
+ -webkit-box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #7cc048;
1167
+ box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #7cc048; }
1168
+ .media-modal .attachment.details .check {
1169
+ background-color: #7cc048;
1170
+ -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px #7cc048;
1171
+ box-shadow: 0 0 0 1px #fff, 0 0 0 2px #7cc048; }
1172
+ .media-modal ul.attachments.envira-albums-gallery-cover-image {
1173
+ padding: 10px; }
1174
+ .media-modal ul.attachments.envira-bulk-edit li.attachment {
1175
+ cursor: default; }
1176
+ .media-modal ul.attachments.envira-bulk-edit li.attachment .attachment-preview {
1177
+ cursor: default; }
1178
+ .media-modal .attachment-details .attachment-info {
1179
+ padding: 16px;
1180
+ /**
1181
+ * Settings
1182
+ * - Contains one or more setting elements (Title, Alt etc)
1183
+ */
1184
+ /**
1185
+ * Actions
1186
+ * - Save Button
1187
+ * - Spinner
1188
+ */ }
1189
+ .media-modal .attachment-details .attachment-info .settings {
1190
+ margin: 0;
1191
+ padding: 0;
1192
+ border: none;
1193
+ /**
1194
+ * Individual Setting (Title, Alt etc)
1195
+ */ }
1196
+ .media-modal .attachment-details .attachment-info .settings .setting {
1197
+ margin: 0 0 20px 0;
1198
+ padding: 0 0 20px 0;
1199
+ border-bottom: 1px solid #ddd;
1200
+ /**
1201
+ * Input
1202
+ */ }
1203
+ .media-modal .attachment-details .attachment-info .settings .setting input[type="text"],
1204
+ .media-modal .attachment-details .attachment-info .settings .setting textarea {
1205
+ display: block;
1206
+ width: 100%;
1207
+ min-width: 100%;
1208
+ margin: 0; }
1209
+ .media-modal .attachment-details .attachment-info .settings .setting input[type="checkbox"] {
1210
+ float: left;
1211
+ margin: 0 5px 0 0; }
1212
+ .media-modal .attachment-details .attachment-info .settings .setting select {
1213
+ margin: 0; }
1214
+ .media-modal .attachment-details .attachment-info .settings .setting span {
1215
+ /**
1216
+ * Title
1217
+ */
1218
+ /**
1219
+ * Description
1220
+ */ }
1221
+ .media-modal .attachment-details .attachment-info .settings .setting span.name {
1222
+ display: block;
1223
+ width: 100%;
1224
+ min-width: 100%;
1225
+ margin: 0;
1226
+ padding: 0;
1227
+ text-align: left;
1228
+ font-weight: 700;
1229
+ font-size: 14px; }
1230
+ .media-modal .attachment-details .attachment-info .settings .setting span.description {
1231
+ text-align: left;
1232
+ font-style: normal;
1233
+ font-size: 13px;
1234
+ font-style: italic;
1235
+ color: #666; }
1236
+ .media-modal .attachment-details .attachment-info .settings .setting div.description {
1237
+ clear: both;
1238
+ float: left;
1239
+ margin: 5px 0 0 0;
1240
+ text-align: left;
1241
+ font-size: 13px;
1242
+ font-style: italic;
1243
+ color: #666; }
1244
+ .media-modal .attachment-details .attachment-info div.actions {
1245
+ /**
1246
+ * Ensure button renders at correct height
1247
+ */ }
1248
+ .media-modal .attachment-details .attachment-info div.actions a.button {
1249
+ display: inline-block; }
1250
+
1251
+ /* ==========================================================================
1252
+ Retina
1253
+ ========================================================================== */
1254
+ @media (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
1255
+ /**
1256
+ * WP media-views.css doesn't use .wp-core-ui for the x2 icons, therefore they never get applied
1257
+ */
1258
+ .wp-core-ui a.check .media-modal-icon {
1259
+ background-image: url(../../../../../wp-includes/images/uploader-icons-2x.png) !important;
1260
+ -webkit-background-size: 134px 15px;
1261
+ background-size: 134px 15px; } }
1262
+
1263
+ /* ==========================================================================
1264
+ Responsive
1265
+ ========================================================================== */
1266
+ @media screen and (max-width: 1100px) {
1267
+ /* ==========================================================================
1268
+ Form
1269
+ - The envira-gallery class is assigned to the Gallery and Album Add/Edit screens form.
1270
+ ========================================================================== */
1271
+ form#post.envira-gallery #poststuff #envira-gallery,
1272
+ form#post.envira-gallery #poststuff #envira-albums {
1273
+ /**
1274
+ * Tab Settings
1275
+ */ }
1276
+ form#post.envira-gallery #poststuff #envira-gallery .inside,
1277
+ form#post.envira-gallery #poststuff #envira-albums .inside {
1278
+ /**
1279
+ * Native Envira Gallery
1280
+ */ }
1281
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area,
1282
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area {
1283
+ border-color: #d5d5d5; }
1284
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside,
1285
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside {
1286
+ width: 100%;
1287
+ margin-top: 20px; }
1288
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons,
1289
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui.drag-drop #drag-drop-area .drag-drop-inside p.drag-drop-buttons {
1290
+ text-align: center; }
1291
+ form#post.envira-gallery #poststuff #envira-gallery .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button,
1292
+ form#post.envira-gallery #poststuff #envira-albums .inside #envira-gallery-native #plupload-upload-ui a.envira-media-library.button {
1293
+ left: 0;
1294
+ right: 0;
1295
+ width: 235px;
1296
+ top: 145px; } }
1297
+
1298
+ @media screen and (max-width: 768px) {
1299
+ /* ==========================================================================
1300
+ Form
1301
+ - The envira-gallery class is assigned to the Gallery and Album Add/Edit screens form.
1302
+ ========================================================================== */
1303
+ form#post.envira-gallery #poststuff {
1304
+ /* ==========================================================================
1305
+ Envira Gallery Settings
1306
+ Envira Albums Settings
1307
+ ========================================================================== */ }
1308
+ form#post.envira-gallery #poststuff #envira-gallery-settings,
1309
+ form#post.envira-gallery #poststuff #envira-albums-settings {
1310
+ /**
1311
+ * Tabs
1312
+ */
1313
+ /**
1314
+ * Settings
1315
+ */ }
1316
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav,
1317
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav {
1318
+ width: 60px; }
1319
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a,
1320
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a {
1321
+ width: 60px;
1322
+ height: 60px;
1323
+ margin: 0;
1324
+ padding: 0;
1325
+ text-indent: -9999px;
1326
+ background-position: center; }
1327
+ form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a:hover, form#post.envira-gallery #poststuff #envira-gallery-settings ul#envira-tabs-nav li a.envira-active,
1328
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a:hover,
1329
+ form#post.envira-gallery #poststuff #envira-albums-settings ul#envira-tabs-nav li a.envira-active {
1330
+ width: 60px;
1331
+ height: 60px;
1332
+ margin: 0;
1333
+ padding: 0;
1334
+ text-indent: -9999px;
1335
+ background-position: center; }
1336
+ form#post.envira-gallery #poststuff #envira-gallery-settings #envira-tabs,
1337
+ form#post.envira-gallery #poststuff #envira-albums-settings #envira-tabs {
1338
+ margin: 0 0 0 60px;
1339
+ /* Must match #ul#envira-tabs-nav width */ } }
assets/css/responsivelyLazy.css CHANGED
@@ -1,45 +1,45 @@
1
- /*
2
- * Responsively Lazy
3
- * http://ivopetkov.com/b/lazy-load-responsive-images/
4
- * Copyright 2015-2016, Ivo Petkov
5
- * Free to use under the MIT license.
6
- */
7
-
8
- .envira-lazy:not(img){
9
- position:relative;
10
- height: 0;
11
- display: block;
12
- overflow: hidden;
13
- }
14
-
15
- .envira-lazy:not(img) img {
16
- position: absolute;
17
- top: 0;
18
- left: 0;
19
- }
20
-
21
- .envira-gallery-1-columns .envira-lazy:not(img) img,
22
- .envira-gallery-2-columns .envira-lazy:not(img) img,
23
- .envira-gallery-3-columns .envira-lazy:not(img) img,
24
- .envira-gallery-4-columns .envira-lazy:not(img) img,
25
- .envira-gallery-5-columns .envira-lazy:not(img) img,
26
- .envira-gallery-6-columns .envira-lazy:not(img) img {
27
- position: relative;
28
- }
29
-
30
- img.envira-lazy{
31
- width: 100%;
32
- }
33
-
34
- /* hide the gallery overlay by default and use JS triggers to make them appear when images load */
35
-
36
- .envira-gallery-item.envira-lazy-load .envira-gallery-position-overlay {
37
- display: none;
38
- }
39
-
40
- /* hide the captions on legacy by default and use JS triggers to make them appear when images load */
41
-
42
- .envira-gallery-item.envira-lazy-load .envira-title,
43
- .envira-gallery-item.envira-lazy-load .envira-caption {
44
- visibility: hidden;
45
- }
1
+ /*
2
+ * Responsively Lazy
3
+ * http://ivopetkov.com/b/lazy-load-responsive-images/
4
+ * Copyright 2015-2016, Ivo Petkov
5
+ * Free to use under the MIT license.
6
+ */
7
+
8
+ .envira-lazy:not(img){
9
+ position:relative;
10
+ height: 0;
11
+ display: block;
12
+ overflow: hidden;
13
+ }
14
+
15
+ .envira-lazy:not(img) img {
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ }
20
+
21
+ .envira-gallery-1-columns .envira-lazy:not(img) img,
22
+ .envira-gallery-2-columns .envira-lazy:not(img) img,
23
+ .envira-gallery-3-columns .envira-lazy:not(img) img,
24
+ .envira-gallery-4-columns .envira-lazy:not(img) img,
25
+ .envira-gallery-5-columns .envira-lazy:not(img) img,
26
+ .envira-gallery-6-columns .envira-lazy:not(img) img {
27
+ position: relative;
28
+ }
29
+
30
+ img.envira-lazy{
31
+ width: 100%;
32
+ }
33
+
34
+ /* hide the gallery overlay by default and use JS triggers to make them appear when images load */
35
+
36
+ .envira-gallery-item.envira-lazy-load .envira-gallery-position-overlay {
37
+ display: none;
38
+ }
39
+
40
+ /* hide the captions on legacy by default and use JS triggers to make them appear when images load */
41
+
42
+ .envira-gallery-item.envira-lazy-load .envira-title,
43
+ .envira-gallery-item.envira-lazy-load .envira-caption {
44
+ visibility: hidden;
45
+ }
assets/css/settings.css CHANGED
@@ -1 +1 @@
1
- .envira-tab label{margin-top:7px;display:block}.nav-tab{float:left}#envira-gallery-settings{padding:20px 0}#envira-gallery-settings #envira-gallery-refresh-submit{margin-left:10px}#envira-gallery-settings .envira-hideme{display:none}#envira-gallery-settings .envira-clear{clear:both}#envira-gallery-settings .envira-clear:after{clear:both;content:'.';display:block;height:0;line-height:0;overflow:auto;visibility:hidden;zoom:1}#envira-gallery-settings .envira-gallery{margin:15px 0 20px}#envira-gallery-settings .envira-tab{display:none}#envira-gallery-settings .envira-tab.envira-active{display:block}#envira-gallery-settings .envira-tab th{width:170px;padding-right:40px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab th{width:auto}}#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"],#envira-gallery-settings .envira-tab select,#envira-gallery-settings .envira-tab textarea{width:350px;padding-right:0;font-size:13px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"],#envira-gallery-settings .envira-tab select,#envira-gallery-settings .envira-tab textarea{width:100%}}#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"]{height:32px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"]{height:auto}}#envira-gallery-settings .envira-tab a.envira-clipboard{width:33px;padding:0}#envira-gallery-settings .envira-tab #envira-gallery-settings-submit{margin:40px 0 0 0px}#envira-gallery-settings #envira-gallery-refresh-submit{vertical-align:baseline}#envira-tabs .form-table th,#envira-tabs .form-table td{padding-top:40px;padding-bottom:40px}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table th{padding-top:40px;padding-bottom:10px;padding-right:0px !important}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table th{padding-top:40px;padding-bottom:10px;padding-right:0px !important}}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table tr#envira-settings-key-box th{padding-top:20px}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table tr#envira-settings-key-box th{padding-top:20px}}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table td{padding-top:0;padding-right:0px}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table td{padding-top:0;padding-right:0px}}#envira-tabs .form-table tr{border-bottom:1px solid #ddd}#envira-tabs .form-table tr.no-bottom-border{border-bottom:0}#envira-tabs .description{color:#666;font-size:13px;margin-top:10px}#envira-tabs-nav{border-bottom:0 !important;background-color:#fff;height:50px;padding-left:20px;margin:0 0 0 -20px;display:table;width:100%}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav{height:auto;background-color:transparent;margin:5px 0 0 0;padding:0 10px;display:table}}#envira-tabs-nav a{float:left;border-left:1px solid #f1f1f1;border-right:1px solid #f1f1f1;border-top:0;color:#6b6e72;background:none;line-height:50px;font-size:13px;padding:0 15px;margin:0}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav a{-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;background-color:#f7f7f7;padding:0px 20px;margin:5px 5px 0px 0;border:1px solid #ddd;line-height:35px;min-height:30px}}#envira-tabs-nav .envira-active{background-color:#f1f1f1;border-left:0;border-right:0;border-top:0;color:#000}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav .envira-active{background-color:#6b6e72;color:#fff}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav a:hover{background-color:#6b6e72;color:#fff}}@media only screen and (max-width: 770px){#envira-gallery-settings #envira-gallery-settings-submit{margin:40px 0 0 0}}
1
+ .envira-tab label{margin-top:7px;display:block}.nav-tab{float:left}#envira-gallery-settings{padding:20px 0}#envira-gallery-settings #envira-gallery-refresh-submit{margin-left:10px}#envira-gallery-settings .envira-hideme{display:none}#envira-gallery-settings .envira-clear{clear:both}#envira-gallery-settings .envira-clear:after{clear:both;content:'.';display:block;height:0;line-height:0;overflow:auto;visibility:hidden;zoom:1}#envira-gallery-settings .envira-gallery{margin:15px 0 20px}#envira-gallery-settings .envira-tab{display:none}#envira-gallery-settings .envira-tab.envira-active{display:block}#envira-gallery-settings .envira-tab th{width:170px;padding-right:40px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab th{width:auto}}#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"],#envira-gallery-settings .envira-tab select,#envira-gallery-settings .envira-tab textarea{width:350px;padding-right:0;font-size:13px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"],#envira-gallery-settings .envira-tab select,#envira-gallery-settings .envira-tab textarea{width:100%}}#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"]{height:32px}@media (min-width: 600px) and (max-width: 767px){#envira-gallery-settings .envira-tab input[type="text"],#envira-gallery-settings .envira-tab input[type="number"],#envira-gallery-settings .envira-tab input[type="password"]{height:auto}}#envira-gallery-settings .envira-tab a.envira-clipboard{width:33px;padding:0}#envira-gallery-settings .envira-tab #envira-gallery-settings-submit{margin:40px 0 0 0px}#envira-gallery-settings #envira-gallery-refresh-submit{vertical-align:baseline}#envira-tabs .form-table th,#envira-tabs .form-table td{padding-top:40px;padding-bottom:40px}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table th{padding-top:40px;padding-bottom:10px;padding-right:0px !important}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table th{padding-top:40px;padding-bottom:10px;padding-right:0px !important}}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table tr#envira-settings-key-box th{padding-top:20px}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table tr#envira-settings-key-box th{padding-top:20px}}@media (min-width: 768px) and (max-width: 991px){#envira-tabs .form-table td{padding-top:0;padding-right:0px}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs .form-table td{padding-top:0;padding-right:0px}}#envira-tabs .form-table tr{border-bottom:1px solid #ddd}#envira-tabs .form-table tr.no-bottom-border{border-bottom:0}#envira-tabs .description{color:#666;font-size:13px;margin-top:10px}#envira-tabs-nav{border-bottom:0 !important;background-color:#fff;height:50px;padding-left:20px;margin:0 0 0 -20px;display:table;width:100%}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav{height:auto;background-color:transparent;margin:5px 0 0 0;padding:0 10px;display:table}}#envira-tabs-nav a{float:left;border-left:1px solid #f1f1f1;border-right:1px solid #f1f1f1;border-top:0;color:#6b6e72;background:none;line-height:50px;font-size:13px;padding:0 15px;margin:0}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav a{-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;background-color:#f7f7f7;padding:0px 20px;margin:5px 5px 0px 0;border:1px solid #ddd;line-height:35px;min-height:30px}}#envira-tabs-nav .envira-active{background-color:#f1f1f1;border-left:0;border-right:0;border-top:0;color:#000}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav .envira-active{background-color:#6b6e72;color:#fff}}@media (min-width: 600px) and (max-width: 767px){#envira-tabs-nav a:hover{background-color:#6b6e72;color:#fff}}@media only screen and (max-width: 770px){#envira-gallery-settings #envira-gallery-settings-submit{margin:40px 0 0 0}}
assets/css/table.css CHANGED
@@ -1 +1 @@
1
- body.post-type-envira ul.subsubsub,body.post-type-envira_album ul.subsubsub{margin:0 0 20px 0;padding-left:20px}body.post-type-envira .column-image,body.post-type-envira_album .column-image{width:85px !important}body.post-type-envira form#posts-filter,body.post-type-envira_album form#posts-filter{margin:0 20px}body.post-type-envira form#posts-filter div.tablenav.top,body.post-type-envira_album form#posts-filter div.tablenav.top{margin:0 0 8px 0}body.post-type-envira form#posts-filter .button,body.post-type-envira_album form#posts-filter .button{height:28px;line-height:26px}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left{width:40%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-date,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-date{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left div.inline-edit-group:last-child,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left div.inline-edit-group:last-child{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-center.inline-edit-categories,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-center.inline-edit-categories{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right{margin:30px 0 0 0}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right label.inline-edit-status.alignleft,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right label.inline-edit-status.alignleft{width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery{width:60%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group{clear:none;float:left;width:50%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title{width:40%;padding-right:0.5em}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group input[type=number],body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group input[type=number],body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group input[type=number],body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group input[type=number]{width:60px;line-height:normal}body.post-type-envira #wpbody-content td.colspanchange p.submit.inline-edit-save,body.post-type-envira_album #wpbody-content td.colspanchange p.submit.inline-edit-save{margin-bottom:20px}@media screen and (max-width: 940px){body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery{clear:both;width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group{clear:both;float:left;width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title{width:100%}body.post-type-envira p.search-box,body.post-type-envira_album p.search-box{width:94%}}
1
+ body.post-type-envira ul.subsubsub,body.post-type-envira_album ul.subsubsub{margin:0 0 20px 0;padding-left:20px}body.post-type-envira .column-image,body.post-type-envira_album .column-image{width:85px !important}body.post-type-envira form#posts-filter,body.post-type-envira_album form#posts-filter{margin:0 20px}body.post-type-envira form#posts-filter div.tablenav.top,body.post-type-envira_album form#posts-filter div.tablenav.top{margin:0 0 8px 0}body.post-type-envira form#posts-filter .button,body.post-type-envira_album form#posts-filter .button{height:28px;line-height:26px}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left{width:40%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-date,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-date{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left div.inline-edit-group:last-child,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left div.inline-edit-group:last-child{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-center.inline-edit-categories,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-center.inline-edit-categories{display:none}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right{margin:30px 0 0 0}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right label.inline-edit-status.alignleft,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right label.inline-edit-status.alignleft{width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery{width:60%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group{clear:none;float:left;width:50%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title{width:40%;padding-right:0.5em}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group input[type=number],body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group input[type=number],body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-right .inline-edit-group input[type=number],body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group input[type=number]{width:60px;line-height:normal}body.post-type-envira #wpbody-content td.colspanchange p.submit.inline-edit-save,body.post-type-envira_album #wpbody-content td.colspanchange p.submit.inline-edit-save{margin-bottom:20px}@media screen and (max-width: 940px){body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery{clear:both;width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group{clear:both;float:left;width:100%}body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-col-left fieldset.inline-edit-col-right .inline-edit-group span.title,body.post-type-envira_album #wpbody-content td.colspanchange fieldset.inline-edit-envira-gallery .inline-edit-group span.title{width:100%}body.post-type-envira p.search-box,body.post-type-envira_album p.search-box{width:94%}}
assets/css/welcome.css ADDED
@@ -0,0 +1,1053 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'envira';
3
+ src: url("../fonts/envira.eot");
4
+ src: url("../fonts/envira.eot?#iefix") format("embedded-opentype"), url("../fonts/envira.woff") format("woff"), url("../fonts/envira.ttf") format("truetype"), url("../fonts/envira.svg#envira") format("svg");
5
+ font-weight: normal;
6
+ font-style: normal; }
7
+
8
+ [class*='envira-']:before {
9
+ display: inline-block;
10
+ font-family: 'envira';
11
+ font-style: normal;
12
+ font-weight: normal;
13
+ line-height: 1;
14
+ -webkit-font-smoothing: antialiased;
15
+ -moz-osx-font-smoothing: grayscale; }
16
+
17
+ .envira-configuration:before {
18
+ content: '\0041'; }
19
+
20
+ .envira-leaf:before {
21
+ content: '\0042'; }
22
+
23
+ .envira-lightbox:before {
24
+ content: '\0044'; }
25
+
26
+ .envira-misc:before {
27
+ content: '\0045'; }
28
+
29
+ .envira-mobile:before {
30
+ content: '\0046'; }
31
+
32
+ .envira-pagination:before {
33
+ content: '\0047'; }
34
+
35
+ .envira-proofing:before {
36
+ content: '\0048'; }
37
+
38
+ .envira-slideshow:before {
39
+ content: '\0049'; }
40
+
41
+ .envira-tags:before {
42
+ content: '\004a'; }
43
+
44
+ .envira-thumbnails:before {
45
+ content: '\004b'; }
46
+
47
+ .envira-video:before {
48
+ content: '\004c'; }
49
+
50
+ .envira-watermark:before {
51
+ content: '\004d'; }
52
+
53
+ .envira-cloud-download:before {
54
+ content: '\004e'; }
55
+
56
+ .envira-toggle-on:before {
57
+ content: '\004f'; }
58
+
59
+ .envira-plus-circle:before {
60
+ content: '\0050'; }
61
+
62
+ .envira-down-arrow:before {
63
+ content: '\0051'; }
64
+
65
+ .envira-list:before {
66
+ content: '\0052'; }
67
+
68
+ .envira-grid:before {
69
+ content: '\0053'; }
70
+
71
+ .envira-pinterest-p:before {
72
+ content: '\0054'; }
73
+
74
+ .envira-whatsapp-p:before {
75
+ content: '\0054'; }
76
+
77
+ .envira-pencil:before {
78
+ content: '\0055'; }
79
+
80
+ .envira-close:before {
81
+ content: '\0056'; }
82
+
83
+ .envira-check:before {
84
+ content: '\0057'; }
85
+
86
+ .envira-welcome-wrap {
87
+ padding: 20px 30px; }
88
+ .envira-welcome-wrap .nav-tab-wrapper a {
89
+ font-weight: 400;
90
+ font-size: 18px;
91
+ line-height: 24px; }
92
+ .envira-welcome-wrap .nav-tab-wrapper a.nav-tab-active {
93
+ font-weight: 600; }
94
+ .envira-welcome-wrap .nav-tab {
95
+ margin-right: 0.85em; }
96
+ .envira-welcome-wrap .envira-title {
97
+ width: 100%;
98
+ margin-bottom: 20px; }
99
+ .envira-welcome-wrap .envira-title h1.welcome-header {
100
+ background: none;
101
+ font-size: 42px;
102
+ font-weight: 400;
103
+ padding-left: 0; }
104
+ .envira-welcome-wrap .envira-title h1.welcome-header span {
105
+ color: #7cc048;
106
+ margin-right: -10px;
107
+ text-indent: 0;
108
+ line-height: 1;
109
+ font-size: 33px; }
110
+ .envira-welcome-wrap .envira-title h1.welcome-header,
111
+ .envira-welcome-wrap .envira-title .about-text {
112
+ text-indent: 10px; }
113
+ .envira-welcome-wrap .envira-title .about-text {
114
+ font-size: 21px;
115
+ line-height: 32px;
116
+ font-weight: 200; }
117
+ .envira-welcome-wrap .envira-welcome-sidebar {
118
+ float: right;
119
+ width: 20%;
120
+ padding: 15px; }
121
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox {
122
+ background: #e6e6e6;
123
+ padding: 20px;
124
+ font-size: 14px;
125
+ margin-bottom: 20px; }
126
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox h4 {
127
+ font-weight: 600;
128
+ line-height: 1.3;
129
+ color: #000;
130
+ margin: 0 0 10px 0; }
131
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox input[type='password'],
132
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox input[type='text'],
133
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox input[type='email'] {
134
+ width: 100%; }
135
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox input[type='submit'],
136
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox input[type='button'] {
137
+ margin: 10px 0 0; }
138
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox .form-row {
139
+ margin: 2px 0;
140
+ width: 100%;
141
+ font-size: 14px;
142
+ line-break: 14px; }
143
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox .form-row input[type='checkbox'] {
144
+ margin: 2px; }
145
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox .form-row label {
146
+ margin-left: 5px;
147
+ font-size: 12px; }
148
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox.warning {
149
+ background: #950303;
150
+ color: white; }
151
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox.warning h4 {
152
+ color: #ffae00; }
153
+ .envira-welcome-wrap .envira-welcome-sidebar .sidebox.warning p strong {
154
+ color: #ffae00; }
155
+ .envira-welcome-wrap .envira-welcome-sidebar sidebox:last-of-type {
156
+ margin-bottom: 0; }
157
+ .envira-welcome-wrap .envira-welcome-main,
158
+ .envira-welcome-wrap .envira-get-started-main,
159
+ .envira-welcome-wrap .envira-support-main {
160
+ width: 75%;
161
+ float: left; }
162
+ .envira-welcome-wrap .envira-wrap {
163
+ padding: 20px; }
164
+
165
+ .changelog-main {
166
+ padding: 0 10px; }
167
+ .changelog-main ul {
168
+ list-style: disc;
169
+ list-style-position: inside; }
170
+
171
+ /*------------------------------------------------------------------------------
172
+ * 1.0 Welcome Screen
173
+ *----------------------------------------------------------------------------*/
174
+ /*
175
+ * 1.1 Version Badge
176
+ */
177
+ .envirabadge {
178
+ color: #d84800;
179
+ display: inline-block;
180
+ font: 400 150px/1 dashicons !important; }
181
+
182
+ .envirabadge:before {
183
+ content: "\f448"; }
184
+
185
+ .about-wrap .envirabadge {
186
+ position: absolute;
187
+ top: 0;
188
+ right: 0; }
189
+
190
+ .index_page_enviracredits code,
191
+ .index_page_enviraabout code {
192
+ background-color: #e0e0e0;
193
+ color: #636363;
194
+ font-size: 1em; }
195
+
196
+ @media only screen and (max-width: 500px) {
197
+ .about-wrap .envirabadge {
198
+ position: relative;
199
+ margin: 10px auto;
200
+ top: auto;
201
+ right: auto; } }
202
+
203
+ /*
204
+ * 1.2 About Panel
205
+ */
206
+ body.post-type-envira div.wrap.about-wrap {
207
+ padding-top: 20px;
208
+ padding-left: 20px; }
209
+ body.post-type-envira div.wrap.about-wrap h1.welcome-header {
210
+ background: none;
211
+ font-size: 42px;
212
+ font-weight: 400;
213
+ padding-left: 0; }
214
+ body.post-type-envira div.wrap.about-wrap h1.welcome-header,
215
+ body.post-type-envira div.wrap.about-wrap .about-text {
216
+ text-indent: 10px; }
217
+ body.post-type-envira div.wrap.about-wrap .nav-tab {
218
+ padding: 15px; }
219
+
220
+ /*
221
+ * 1.2.1 Headline Feature
222
+ */
223
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature {
224
+ margin-bottom: 2em;
225
+ margin-top: 3em;
226
+ padding: 2em 3em; }
227
+
228
+ .envira_page_envira-gallery-lite-welcome .enviraheadline {
229
+ margin: 0 auto;
230
+ width: 45em; }
231
+
232
+ .envira_page_envira-gallery-lite-welcome .enviraheadline span.dashicons {
233
+ background-color: #f1f1f1;
234
+ color: #d84800;
235
+ clear: left;
236
+ font-size: 100px;
237
+ float: left;
238
+ height: 100px;
239
+ line-height: 100px;
240
+ margin: 0 15px 15px 0;
241
+ text-align: center;
242
+ width: 100px; }
243
+
244
+ .envira_page_envira-gallery-support .headline-title {
245
+ font-size: 2.2em;
246
+ font-weight: 300;
247
+ line-height: 2;
248
+ margin: 1em 0 1em;
249
+ text-align: center; }
250
+
251
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature p {
252
+ font-size: 1.15em;
253
+ margin: 1.15em auto 0.6em 0; }
254
+
255
+ .envira_page_envira-gallery-lite-welcome .envira-features-section,
256
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section,
257
+ .envira_page_envira-gallery-lite-get-started .envira-features-section,
258
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section,
259
+ .envira_page_envira-gallery-support .envira-features-section,
260
+ .envira_page_envira-gallery-support .envira-recent-section {
261
+ border-bottom: 1px solid #ccc;
262
+ clear: both;
263
+ margin-bottom: 20px;
264
+ margin-top: 10px;
265
+ overflow: hidden;
266
+ padding-bottom: 2em;
267
+ word-break: break-word; }
268
+ .envira_page_envira-gallery-lite-welcome .envira-features-section p,
269
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section p,
270
+ .envira_page_envira-gallery-lite-get-started .envira-features-section p,
271
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section p,
272
+ .envira_page_envira-gallery-support .envira-features-section p,
273
+ .envira_page_envira-gallery-support .envira-recent-section p {
274
+ font-size: 14px;
275
+ line-height: 1.5; }
276
+ .envira_page_envira-gallery-lite-welcome .envira-features-section img,
277
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section img,
278
+ .envira_page_envira-gallery-lite-get-started .envira-features-section img,
279
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section img,
280
+ .envira_page_envira-gallery-support .envira-features-section img,
281
+ .envira_page_envira-gallery-support .envira-recent-section img {
282
+ margin-bottom: 20px; }
283
+ .envira_page_envira-gallery-lite-welcome .envira-features-section code,
284
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section code,
285
+ .envira_page_envira-gallery-lite-get-started .envira-features-section code,
286
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section code,
287
+ .envira_page_envira-gallery-support .envira-features-section code,
288
+ .envira_page_envira-gallery-support .envira-recent-section code {
289
+ word-break: break-all; }
290
+ .envira_page_envira-gallery-lite-welcome .envira-features-section span.dashicons,
291
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section span.dashicons,
292
+ .envira_page_envira-gallery-lite-get-started .envira-features-section span.dashicons,
293
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section span.dashicons,
294
+ .envira_page_envira-gallery-support .envira-features-section span.dashicons,
295
+ .envira_page_envira-gallery-support .envira-recent-section span.dashicons {
296
+ /* DELETE */
297
+ background-color: #fff;
298
+ border-radius: 50%;
299
+ clear: left;
300
+ color: #d84800;
301
+ font-size: 50px;
302
+ float: left;
303
+ height: 80px;
304
+ line-height: 80px;
305
+ margin: 0 15px 15px 0;
306
+ text-align: center;
307
+ width: 80px; }
308
+ .envira_page_envira-gallery-lite-welcome .envira-features-section img.icon,
309
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section img.icon,
310
+ .envira_page_envira-gallery-lite-get-started .envira-features-section img.icon,
311
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section img.icon,
312
+ .envira_page_envira-gallery-support .envira-features-section img.icon,
313
+ .envira_page_envira-gallery-support .envira-recent-section img.icon {
314
+ background-color: transparent;
315
+ clear: left;
316
+ font-size: 50px;
317
+ float: left;
318
+ line-height: 80px;
319
+ margin: 0 15px 15px 0;
320
+ text-align: center;
321
+ width: 80px; }
322
+ .envira_page_envira-gallery-lite-welcome .envira-features-section h4.feature-title,
323
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section h4.feature-title,
324
+ .envira_page_envira-gallery-lite-get-started .envira-features-section h4.feature-title,
325
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section h4.feature-title,
326
+ .envira_page_envira-gallery-support .envira-features-section h4.feature-title,
327
+ .envira_page_envira-gallery-support .envira-recent-section h4.feature-title {
328
+ color: #7cc048;
329
+ font-size: 1.35em;
330
+ margin-bottom: 0.6em;
331
+ margin-top: 0; }
332
+ .envira_page_envira-gallery-lite-welcome .envira-features-section span.badge,
333
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section span.badge,
334
+ .envira_page_envira-gallery-lite-get-started .envira-features-section span.badge,
335
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section span.badge,
336
+ .envira_page_envira-gallery-support .envira-features-section span.badge,
337
+ .envira_page_envira-gallery-support .envira-recent-section span.badge {
338
+ font-size: 0.7em;
339
+ font-weight: 500;
340
+ display: inline-block;
341
+ text-transform: uppercase;
342
+ background-color: #7cc048;
343
+ color: white;
344
+ padding: 3px 5px;
345
+ border-radius: 15%; }
346
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .headline-title,
347
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .headline-title,
348
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .headline-title,
349
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .headline-title,
350
+ .envira_page_envira-gallery-support .envira-features-section .headline-title,
351
+ .envira_page_envira-gallery-support .envira-recent-section .headline-title {
352
+ font-size: 25px;
353
+ font-weight: 400;
354
+ line-height: 1.5;
355
+ margin: 1em auto 2em;
356
+ text-align: center;
357
+ color: #000; }
358
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-with-images,
359
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature-with-images,
360
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature-with-images,
361
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature-with-images,
362
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature-with-images,
363
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature-with-images {
364
+ border-bottom: 1px solid #ccc;
365
+ margin-bottom: 5em;
366
+ padding-bottom: 2em; }
367
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature,
368
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-imaged,
369
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature,
370
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature-imaged,
371
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature,
372
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature-imaged,
373
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature,
374
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature-imaged,
375
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature,
376
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature-imaged,
377
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature,
378
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature-imaged {
379
+ float: left;
380
+ margin-bottom: 3em;
381
+ margin-right: 4.799999999%;
382
+ width: 47.6%; }
383
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature.opposite,
384
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-imaged.anon,
385
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature.opposite,
386
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature-imaged.anon,
387
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature.opposite,
388
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature-imaged.anon,
389
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature.opposite,
390
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature-imaged.anon,
391
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature.opposite,
392
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature-imaged.anon,
393
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature.opposite,
394
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature-imaged.anon {
395
+ margin-right: 0; }
396
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature code,
397
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-feature code,
398
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-feature code,
399
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-feature code,
400
+ .envira_page_envira-gallery-support .envira-features-section .envira-feature code,
401
+ .envira_page_envira-gallery-support .envira-recent-section .envira-feature code {
402
+ font-size: 0.95em;
403
+ line-height: 1.5; }
404
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-big-icon,
405
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-big-icon,
406
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-big-icon,
407
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-big-icon,
408
+ .envira_page_envira-gallery-support .envira-features-section .envira-big-icon,
409
+ .envira_page_envira-gallery-support .envira-recent-section .envira-big-icon {
410
+ font-size: 80px;
411
+ float: left;
412
+ margin-left: 10px; }
413
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-big-icon.envira-leaf,
414
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .envira-big-icon.envira-leaf,
415
+ .envira_page_envira-gallery-lite-get-started .envira-features-section .envira-big-icon.envira-leaf,
416
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section .envira-big-icon.envira-leaf,
417
+ .envira_page_envira-gallery-support .envira-features-section .envira-big-icon.envira-leaf,
418
+ .envira_page_envira-gallery-support .envira-recent-section .envira-big-icon.envira-leaf {
419
+ color: #7cc048; }
420
+
421
+ .envira_page_envira-gallery-lite-welcome .envira-feature:after,
422
+ .envira_page_envira-gallery-lite-get-started .envira-feature:after,
423
+ .envira_page_envira-gallery-support .envira-feature:after {
424
+ clear: both;
425
+ content: "";
426
+ margin-bottom: 2em; }
427
+
428
+ .envira_page_envira-gallery-lite-welcome .envira-feature-imaged p,
429
+ .envira_page_envira-gallery-lite-get-started .envira-feature-imaged p,
430
+ .envira_page_envira-gallery-support .envira-feature-imaged p {
431
+ clear: left;
432
+ font-size: 1.1em; }
433
+
434
+ .envira_page_envira-gallery-lite-welcome .envira-feature-imaged img,
435
+ .envira_page_envira-gallery-lite-get-started .envira-feature-imaged img,
436
+ .envira_page_envira-gallery-support .envira-feature-imaged img {
437
+ clear: left; }
438
+
439
+ .envira_page_envira-gallery-lite-welcome .envira-feature .feature-title,
440
+ .envira_page_envira-gallery-lite-get-started .envira-feature .feature-title,
441
+ .envira_page_envira-gallery-support .envira-feature .feature-title {
442
+ font-size: 1em;
443
+ line-height: 1.5;
444
+ margin-bottom: 0;
445
+ margin-left: 110px;
446
+ margin-top: 0;
447
+ text-align: left; }
448
+
449
+ .envira_page_envira-gallery-lite-welcome .envira-feature p,
450
+ .envira_page_envira-gallery-lite-get-started .envira-feature p,
451
+ .envira_page_envira-gallery-support .envira-feature p {
452
+ margin-left: 110px; }
453
+
454
+ /*
455
+ * 1.2.3 Changelog Section
456
+ */
457
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section,
458
+ .envira_page_envira-gallery-lite-welcome .envira-posts,
459
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section,
460
+ .envira_page_envira-gallery-lite-get-started .envira-posts,
461
+ .envira_page_envira-gallery-support .envira-recent-section,
462
+ .envira_page_envira-gallery-support .envira-posts {
463
+ clear: both;
464
+ margin-bottom: 20px;
465
+ margin-top: 10px;
466
+ padding-bottom: 0; }
467
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section h3,
468
+ .envira_page_envira-gallery-lite-welcome .envira-posts h3,
469
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section h3,
470
+ .envira_page_envira-gallery-lite-get-started .envira-posts h3,
471
+ .envira_page_envira-gallery-support .envira-recent-section h3,
472
+ .envira_page_envira-gallery-support .envira-posts h3 {
473
+ margin-top: 0;
474
+ color: #7cc048;
475
+ font-size: 1.50em;
476
+ line-height: 1.5;
477
+ font-weight: 500; }
478
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section img.post-image,
479
+ .envira_page_envira-gallery-lite-welcome .envira-posts img.post-image,
480
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section img.post-image,
481
+ .envira_page_envira-gallery-lite-get-started .envira-posts img.post-image,
482
+ .envira_page_envira-gallery-support .envira-recent-section img.post-image,
483
+ .envira_page_envira-gallery-support .envira-posts img.post-image {
484
+ max-width: 100%; }
485
+
486
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section,
487
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section,
488
+ .envira_page_envira-gallery-support .envira-recent-section {
489
+ padding-bottom: 20px; }
490
+
491
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section:after,
492
+ .envira_page_envira-gallery-lite-get-started .envira-recent-section:after,
493
+ .envira_page_envira-gallery-support .envira-recent-section:after {
494
+ clear: both;
495
+ content: "";
496
+ display: table; }
497
+
498
+ .envira_page_envira-gallery-lite-welcome .enviratwo-column div,
499
+ .envira_page_envira-gallery-lite-get-started .enviratwo-column div,
500
+ .envira_page_envira-gallery-support .enviratwo-column div {
501
+ float: left;
502
+ margin-right: 4.799999999%;
503
+ position: relative;
504
+ width: 47.6%; }
505
+
506
+ .envira_page_envira-gallery-lite-welcome .envirathree-column .enviracolumn,
507
+ .envira_page_envira-gallery-lite-get-started .envirathree-column .enviracolumn,
508
+ .envira_page_envira-gallery-support .envirathree-column .enviracolumn {
509
+ float: left;
510
+ margin-right: 5%;
511
+ position: relative;
512
+ width: 29.95%; }
513
+
514
+ .envira_page_envira-gallery-lite-welcome .enviratwo-column .enviracolumn:nth-of-type(2n),
515
+ .envira_page_envira-gallery-lite-welcome .envirathree-column .enviracolumn:nth-of-type(3n),
516
+ .envira_page_envira-gallery-lite-get-started .enviratwo-column .enviracolumn:nth-of-type(2n),
517
+ .envira_page_envira-gallery-lite-get-started .envirathree-column .enviracolumn:nth-of-type(3n),
518
+ .envira_page_envira-gallery-support .enviratwo-column .enviracolumn:nth-of-type(2n),
519
+ .envira_page_envira-gallery-support .envirathree-column .enviracolumn:nth-of-type(3n) {
520
+ margin-right: 0; }
521
+
522
+ .envira_page_envira-gallery-lite-welcome .envira-recent,
523
+ .envira_page_envira-gallery-lite-get-started .envira-recent,
524
+ .envira_page_envira-gallery-support .envira-recent {
525
+ margin-right: 0; }
526
+ .envira_page_envira-gallery-lite-welcome .envira-recent p,
527
+ .envira_page_envira-gallery-lite-get-started .envira-recent p,
528
+ .envira_page_envira-gallery-support .envira-recent p {
529
+ margin-bottom: 0; }
530
+
531
+ .envira_page_envira-gallery-lite-welcome .envira-recent:after,
532
+ .envira_page_envira-gallery-lite-get-started .envira-recent:after,
533
+ .envira_page_envira-gallery-support .envira-recent:after {
534
+ clear: both;
535
+ content: "";
536
+ display: table; }
537
+
538
+ .envira_page_envira-gallery-lite-welcome .envira-recent .title,
539
+ .envira_page_envira-gallery-lite-get-started .envira-recent .title,
540
+ .envira_page_envira-gallery-support .envira-recent .title {
541
+ font-size: 14px;
542
+ margin-bottom: 0.75em;
543
+ margin-top: 0; }
544
+
545
+ .envira_page_envira-gallery-lite-welcome .envira-recent-url,
546
+ .envira_page_envira-gallery-lite-get-started .envira-recent-url,
547
+ .envira_page_envira-gallery-support .envira-recent-url {
548
+ text-align: center; }
549
+
550
+ .envira_page_envira-gallery-lite-welcome .envira-assets,
551
+ .envira_page_envira-gallery-lite-get-started .envira-assets,
552
+ .envira_page_envira-gallery-support .envira-assets {
553
+ clear: both;
554
+ margin-bottom: 3em; }
555
+
556
+ .envira_page_envira-gallery-lite-welcome article.docs li,
557
+ .envira_page_envira-gallery-lite-get-started article.docs li,
558
+ .envira_page_envira-gallery-support article.docs li {
559
+ width: 45%;
560
+ display: inline-block; }
561
+
562
+ .envira_page_envira-gallery-support h3.headline-title {
563
+ margin-bottom: 1em; }
564
+
565
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section {
566
+ padding-bottom: 30px; }
567
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section h3.headline-title {
568
+ margin-bottom: 1.25em; }
569
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section.last-section {
570
+ padding-top: 0px;
571
+ padding-bottom: 0; }
572
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section.last-section h3 {
573
+ margin-bottom: 1.25em; }
574
+
575
+ #changelog-envira-gallery h3 {
576
+ background: #7cc048;
577
+ color: white;
578
+ font-weight: 500;
579
+ width: 100%;
580
+ padding: 5px; }
581
+
582
+ #changelog-envira-gallery ul {
583
+ list-style: inside; }
584
+
585
+ #changelog-envira-gallery li {
586
+ width: 80%;
587
+ vertical-align: top; }
588
+
589
+ .envira-headline-button {
590
+ margin: 20px auto 0 auto; }
591
+ .envira-headline-button .button.button-primary {
592
+ font-size: 17px;
593
+ line-height: 30px; }
594
+
595
+ div.label {
596
+ float: left;
597
+ margin-right: 10px; }
598
+
599
+ div.icons-container {
600
+ display: table;
601
+ clear: both; }
602
+
603
+ ul.social-icons {
604
+ float: left;
605
+ margin-top: 0px;
606
+ margin-bottom: 5px; }
607
+ ul.social-icons li {
608
+ float: left;
609
+ width: 20px;
610
+ height: 20px;
611
+ margin-right: 5px; }
612
+ ul.social-icons li a {
613
+ width: 20px;
614
+ height: 20px;
615
+ background-size: 20px 20px;
616
+ text-decoration: none;
617
+ text-indent: -999em;
618
+ float: left; }
619
+ ul.social-icons li a.facebook {
620
+ background-image: url(../images/icons/facebook-black.svg);
621
+ background-repeat: no-repeat; }
622
+ ul.social-icons li a.twitter {
623
+ background-image: url(../images/icons/twitter-black.svg);
624
+ background-repeat: no-repeat; }
625
+ ul.social-icons li a.instagram {
626
+ background-image: url(../images/icons/instagram-black.svg);
627
+ background-repeat: no-repeat;
628
+ opacity: 0.7; }
629
+ ul.social-icons li a.youtube {
630
+ background-image: url(../images/icons/youtube-black.svg);
631
+ background-repeat: no-repeat; }
632
+ ul.social-icons li a.pinterest {
633
+ background-image: url(../images/icons/pinterest-black.svg);
634
+ background-repeat: no-repeat; }
635
+
636
+ /*------------------------------------------------------------------------------
637
+ * 2.0 Addon Screen
638
+ *----------------------------------------------------------------------------*/
639
+ body.envira_page_envira-gallery-lite-welcome-addons #wpfooter {
640
+ position: relative; }
641
+
642
+ body.envira_page_envira-gallery-lite-welcome-addons .envira-addons-area.unlicensed h3 {
643
+ display: none; }
644
+
645
+ body.envira_page_envira-gallery-lite-welcome-addons #envira-addons .envira-addons-area .envira-addon p {
646
+ font-size: 18px; }
647
+
648
+ /*------------------------------------------------------------------------------
649
+ * 3.0 Upgrade Screen
650
+ *----------------------------------------------------------------------------*/
651
+ .upgrade-wrap {
652
+ text-align: center; }
653
+ .upgrade-wrap h3 {
654
+ font-size: 28px;
655
+ line-height: 28px;
656
+ font-weight: 400;
657
+ margin: 35px auto 10px auto; }
658
+ .upgrade-wrap h4.headline-subtitle {
659
+ font-size: 20px;
660
+ line-height: 24px;
661
+ font-weight: 200;
662
+ margin: 20px auto;
663
+ display: block; }
664
+ .upgrade-wrap a.button {
665
+ margin: 10px auto;
666
+ display: table;
667
+ clear: both; }
668
+
669
+ .upgrade-list {
670
+ display: table;
671
+ margin-bottom: 40px;
672
+ border-bottom: 1px solid #ccc;
673
+ padding-bottom: 35px; }
674
+ .upgrade-list ul {
675
+ width: 85%;
676
+ margin: 20px auto; }
677
+ .upgrade-list li {
678
+ width: 50%;
679
+ margin: 20px auto;
680
+ float: left;
681
+ display: block;
682
+ font-size: 16px;
683
+ line-height: 18px;
684
+ min-height: 75px; }
685
+ .upgrade-list li .interior {
686
+ padding: 0 10px; }
687
+ .upgrade-list li h5 {
688
+ font-size: 18px;
689
+ line-height: 24px;
690
+ margin: 5px auto;
691
+ font-weight: 700; }
692
+ .upgrade-list li p {
693
+ margin: 0; }
694
+
695
+ .upgrade-video {
696
+ position: relative;
697
+ padding-bottom: 56.25%;
698
+ /* 16:9 */
699
+ padding-top: 25px;
700
+ height: 0; }
701
+
702
+ .upgrade-video iframe {
703
+ position: absolute;
704
+ top: 0;
705
+ left: 0;
706
+ width: 100%;
707
+ height: 100%; }
708
+
709
+ /*------------------------------------------------------------------------------
710
+ * 4.0 Lite vs Pro
711
+ *----------------------------------------------------------------------------*/
712
+ body.envira_page_envira-gallery-lite-litevspro .envira-get-started-main {
713
+ width: 100%; }
714
+
715
+ #envira-admin-litevspro .centered {
716
+ text-align: center; }
717
+
718
+ #envira-admin-litevspro h1 {
719
+ font-size: 34px;
720
+ line-height: 32px; }
721
+
722
+ #envira-admin-litevspro p.centered {
723
+ font-size: 18px;
724
+ line-height: 21px; }
725
+
726
+ #envira-admin-litevspro.wrap {
727
+ margin-left: 0;
728
+ margin-right: 0; }
729
+
730
+ #envira-admin-litevspro .litevspro-table-header {
731
+ background: #fff;
732
+ border-right: 1px solid #DDDDDD;
733
+ border-left: 1px solid #DDDDDD; }
734
+
735
+ #envira-admin-litevspro .envira-admin-litevspro-section {
736
+ margin: 0 0 30px 0;
737
+ padding: 30px;
738
+ line-height: 2; }
739
+ #envira-admin-litevspro .envira-admin-litevspro-section.no-bottom {
740
+ margin-bottom: 0;
741
+ padding-bottom: 0; }
742
+ #envira-admin-litevspro .envira-admin-litevspro-section.litevspro-table-header {
743
+ padding-bottom: 15px; }
744
+
745
+ #envira-admin-litevspro table tr td {
746
+ border-bottom: 1px solid #DDDDDD;
747
+ border-right: 1px solid #DDDDDD;
748
+ padding: 30px;
749
+ vertical-align: top;
750
+ width: 33%; }
751
+ #envira-admin-litevspro table tr td p {
752
+ font-size: 18px;
753
+ line-height: 24px; }
754
+
755
+ #envira-admin-litevspro table tr td:last-child {
756
+ border-right: 0; }
757
+
758
+ #envira-admin-litevspro table {
759
+ border-bottom: 0; }
760
+
761
+ #envira-admin-litevspro .envira-admin-litevspro-section-hero {
762
+ border-top: 0;
763
+ font-size: 16px;
764
+ line-height: 18px; }
765
+ #envira-admin-litevspro .envira-admin-litevspro-section-hero p {
766
+ text-align: center;
767
+ font-size: 16px;
768
+ line-height: 18px; }
769
+ #envira-admin-litevspro .envira-admin-litevspro-section-hero h3.call-to-action {
770
+ font-size: 21px;
771
+ font-weight: 500;
772
+ text-align: center; }
773
+ #envira-admin-litevspro .envira-admin-litevspro-section-hero span.envira-deal {
774
+ font-weight: 500;
775
+ color: green; }
776
+
777
+ #envira-admin-litevspro .envira-admin-litevspro-section-table {
778
+ padding-left: 0;
779
+ padding-right: 0;
780
+ padding-top: 0; }
781
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table {
782
+ width: 100%; }
783
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table tr td:first-child {
784
+ border-left: 1px solid #DDDDDD;
785
+ border-bottom-color: #dddddd;
786
+ border-bottom-style: solid;
787
+ border-bottom-width: 1px; }
788
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table tr td:last-child {
789
+ border-right: 1px solid #DDDDDD;
790
+ border-bottom-color: #dddddd;
791
+ border-bottom-style: solid;
792
+ border-bottom-width: 1px;
793
+ background-color: #F3F9FE; }
794
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table tr:first-child td {
795
+ border-top: 1px solid #DDD; }
796
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table th {
797
+ text-align: left;
798
+ font-weight: 600;
799
+ font-size: 18px;
800
+ padding-left: 30px;
801
+ padding-bottom: 20px;
802
+ padding-top: 20px;
803
+ border-top: 1px solid #DDDDDD;
804
+ border-right: 1px solid #DDDDDD;
805
+ vertical-align: middle; }
806
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table th:last-child {
807
+ border-right: 1px solid #DDDDDD; }
808
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table th:first-child {
809
+ border-left: 1px solid #DDDDDD; }
810
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table td {
811
+ background: #fff; }
812
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table td strong {
813
+ display: block; }
814
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table p {
815
+ background-repeat: no-repeat;
816
+ background-size: 15px auto;
817
+ background-position: 0 6px;
818
+ margin: 0; }
819
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table p.features-full {
820
+ padding-left: 30px;
821
+ background-position: 0 4px;
822
+ background-image: url(../images/icons/litevspro/tick.svg); }
823
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table p.features-none {
824
+ padding-left: 30px;
825
+ background-position: 6px 6px;
826
+ background-image: url(../images/icons/litevspro/cross_red.svg);
827
+ background-size: 15px auto; }
828
+ #envira-admin-litevspro .envira-admin-litevspro-section-table table p.features-partial {
829
+ padding-left: 30px;
830
+ background-position: 6px 6px;
831
+ background-size: 15px auto;
832
+ background-image: url(../images/icons/litevspro/cross.svg); }
833
+
834
+ /*------------------------------------------------------------------------------
835
+ * 5.0 Getting Started (Revised)
836
+ *----------------------------------------------------------------------------*/
837
+ .envira-get-started-section {
838
+ margin-top: 20px; }
839
+ .envira-get-started-section .centered {
840
+ text-align: center; }
841
+ .envira-get-started-section .envira-admin-get-started-panel {
842
+ display: flex;
843
+ background: white;
844
+ padding: 20px;
845
+ font-size: 16px;
846
+ line-height: 25px;
847
+ margin-bottom: 20px; }
848
+ .envira-get-started-section .envira-admin-get-started-panel h2 {
849
+ font-size: 2em;
850
+ font-weight: 500;
851
+ line-height: 1.2em;
852
+ margin-top: 0;
853
+ margin-bottom: 0;
854
+ text-transform: capitalize; }
855
+ .envira-get-started-section .envira-admin-get-started-panel p {
856
+ font-size: 16px;
857
+ line-height: 20px; }
858
+ .envira-get-started-section .envira-admin-get-started-panel p a {
859
+ font-weight: 500;
860
+ color: #7cc048;
861
+ text-decoration: none; }
862
+ .envira-get-started-section .envira-admin-get-started-panel p a:hover {
863
+ text-decoration: underline; }
864
+ .envira-get-started-section .envira-admin-get-started-panel ul {
865
+ list-style: disc;
866
+ list-style-position: inside; }
867
+ .envira-get-started-section .envira-admin-get-started-panel ul.list-of-links {
868
+ list-style: none; }
869
+ .envira-get-started-section .envira-admin-get-started-panel ul.list-of-links a {
870
+ color: #7cc048;
871
+ text-decoration: none; }
872
+ .envira-get-started-section .envira-admin-get-started-panel ul.list-of-links a:hover {
873
+ text-decoration: underline; }
874
+ .envira-get-started-section .envira-admin-get-started-panel .feature-photo-column {
875
+ padding-left: 30px;
876
+ max-width: 360px;
877
+ min-width: 350px;
878
+ display: inherit; }
879
+ .envira-get-started-section .envira-admin-get-started-panel .feature-photo-column img {
880
+ width: 100%;
881
+ margin: auto; }
882
+ .envira-get-started-section .envira-admin-get-started-panel .feature-photo-column.photo-left {
883
+ padding-left: 0;
884
+ padding-right: 30px; }
885
+ .envira-get-started-section .envira-admin-get-started-panel.mini-panel .feature-photo-column {
886
+ padding-top: 10px; }
887
+ .envira-get-started-section .envira-admin-get-started-panel.mini-panel .feature-photo-column a {
888
+ margin: 0 auto;
889
+ height: auto; }
890
+ .envira-get-started-section .envira-admin-get-started-panel.mini-panel .feature-photo-column img {
891
+ width: auto;
892
+ margin: 0 auto; }
893
+ .envira-get-started-section .envira-admin-get-started-banner {
894
+ display: flex;
895
+ background: black;
896
+ color: white;
897
+ padding: 10px 0;
898
+ margin-bottom: 20px; }
899
+ .envira-get-started-section .envira-admin-get-started-banner .banner-text {
900
+ display: block;
901
+ margin: 0 auto;
902
+ padding: 10px 0 0 0;
903
+ text-align: center;
904
+ font-size: 1.5em;
905
+ text-align: left; }
906
+ .envira-get-started-section .envira-admin-get-started-banner .banner-text h3 {
907
+ font-size: 1.5em;
908
+ line-height: 1.3em;
909
+ margin: 5px auto;
910
+ color: white; }
911
+ .envira-get-started-section .envira-admin-get-started-banner .banner-button {
912
+ margin: auto;
913
+ max-width: 33%;
914
+ height: 100%;
915
+ vertical-align: middle; }
916
+ .envira-get-started-section .envira-admin-get-started-banner .banner-button a {
917
+ height: auto;
918
+ padding: 15px 25px;
919
+ font-size: 1.45em;
920
+ display: block;
921
+ margin: auto; }
922
+
923
+ /*------------------------------------------------------------------------------
924
+ * 1.0 Media Queries
925
+ *----------------------------------------------------------------------------*/
926
+ @media screen and (max-width: 782px) {
927
+ .envira-welcome-wrap .envira-welcome-sidebar {
928
+ float: none;
929
+ width: 100%;
930
+ padding: 0; }
931
+ .envira-welcome-wrap .envira-welcome-main {
932
+ float: none;
933
+ width: 100%; }
934
+ .envira-welcome-wrap .envira-title h1.welcome-header {
935
+ line-height: 42px; }
936
+ .envira-welcome-wrap .envira-title h1.welcome-header,
937
+ .envira-welcome-wrap .envira-title .about-text {
938
+ text-indent: 0; }
939
+ .enviraheadline-feature,
940
+ .envira-features-section,
941
+ .envira-recent-section {
942
+ margin-left: 20px;
943
+ margin-right: 20px; }
944
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature {
945
+ padding: 0; }
946
+ .envira_page_envira-gallery-lite-welcome .enviraheadline {
947
+ margin: 0;
948
+ width: 97%; }
949
+ .envira_page_envira-gallery-lite-welcome .envira-features-section {
950
+ clear: both;
951
+ margin-bottom: 0;
952
+ margin-top: 2em;
953
+ padding-bottom: 2em; }
954
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-with-images {
955
+ margin-bottom: 2em; }
956
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .headline-title {
957
+ margin-bottom: 1em; }
958
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .changelog-title {
959
+ font-size: 1.25em;
960
+ line-height: 1.5;
961
+ margin-bottom: 0.5em;
962
+ margin-top: 0.5em; }
963
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .feature-title,
964
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .title {
965
+ font-size: 1.25em;
966
+ line-height: 1.25;
967
+ margin-top: 0.6em;
968
+ text-align: left; }
969
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature,
970
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-imaged {
971
+ clear: both;
972
+ float: left;
973
+ margin-bottom: 1em;
974
+ margin-top: 1em;
975
+ margin-right: 0;
976
+ padding-right: 1em;
977
+ width: 100%; }
978
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature-imaged p {
979
+ font-size: 1em; }
980
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature span {
981
+ margin-top: 0.33em; }
982
+ .envira_page_envira-gallery-lite-welcome .envira-feature.opposite .feature-title,
983
+ .envira_page_envira-gallery-lite-welcome .envira-feature.opposite p {
984
+ float: none; }
985
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section {
986
+ clear: both;
987
+ margin-bottom: 2em;
988
+ margin-top: 2em; }
989
+ .envira_page_envira-gallery-lite-welcome .envira-recent {
990
+ margin-bottom: 0; }
991
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .changelog-title {
992
+ margin-bottom: 0.5em; }
993
+ .envira_page_envira-gallery-lite-welcome .envira-recent .title {
994
+ font-size: 1em; }
995
+ .envira_page_envira-gallery-lite-welcome .envira-recent p {
996
+ margin-bottom: 1em; }
997
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .two-col > div,
998
+ .envira_page_envira-gallery-lite-welcome .envira-recent-section .three-col .col {
999
+ margin-top: 0;
1000
+ padding-bottom: 0.5em;
1001
+ width: 100%; }
1002
+ .envira_page_envira-gallery-lite-welcome .envirathree-column .enviracolumn {
1003
+ width: 100%; } }
1004
+
1005
+ @media screen and (max-width: 1400px) {
1006
+ .envira-admin-get-started-banner.middle .banner-text,
1007
+ .envira-admin-get-started-banner.bottom .banner-text {
1008
+ padding: 10px 0 0 10px; }
1009
+ .envira-admin-get-started-banner.middle .banner-text h3,
1010
+ .envira-admin-get-started-banner.bottom .banner-text h3 {
1011
+ line-height: 1.3em; }
1012
+ .envira-admin-get-started-banner.middle .banner-button,
1013
+ .envira-admin-get-started-banner.bottom .banner-button {
1014
+ margin-right: 10px; }
1015
+ .envira-admin-get-started-banner.middle .banner-button a,
1016
+ .envira-admin-get-started-banner.bottom .banner-button a {
1017
+ font-size: 16px; } }
1018
+
1019
+ @media screen and (max-width: 1120px) {
1020
+ .envira-admin-get-started-banner.middle .banner-button a,
1021
+ .envira-admin-get-started-banner.bottom .banner-button a {
1022
+ font-size: 14px; } }
1023
+
1024
+ @media screen and (max-width: 360px) {
1025
+ .envira_page_envira-gallery-lite-welcome .enviraheadline {
1026
+ text-align: center; }
1027
+ .envira_page_envira-gallery-lite-welcome .enviraheadline span.dashicons {
1028
+ clear: none;
1029
+ font-size: 80px;
1030
+ float: none;
1031
+ height: 80px;
1032
+ line-height: 80px;
1033
+ margin: 0 auto;
1034
+ width: 80px; }
1035
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature .headline-title,
1036
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .headline-title {
1037
+ font-size: 1.5em;
1038
+ line-height: 1.5;
1039
+ text-align: left; }
1040
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature .headline-title {
1041
+ margin: 1em 0 0; }
1042
+ .envira_page_envira-gallery-lite-welcome .enviraheadline-feature p {
1043
+ margin: 1.15em auto 0.6em 0;
1044
+ text-align: left;
1045
+ width: auto; }
1046
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .envira-feature {
1047
+ text-align: center; }
1048
+ .envira_page_envira-gallery-lite-welcome .envira-features-section span.dashicons {
1049
+ float: none; }
1050
+ .envira_page_envira-gallery-lite-welcome .envira-features-section .feature-title,
1051
+ .envira_page_envira-gallery-lite-welcome .envira-features-section p {
1052
+ margin-left: 0;
1053
+ text-align: left; } }
assets/images/get-started/How-to-Customize-WordPress-Galleries-for-Mobile-Devices.png ADDED
Binary file
assets/images/get-started/add-gallery-tags-in-wordpress.jpg ADDED
Binary file
assets/images/get-started/creating.png ADDED
Binary file
assets/images/get-started/how-to-create-a-masonry-image-gallery-in-wordpress.jpg ADDED
Binary file
assets/images/get-started/how-to-create-image-slider-for-your-wordpress-galleries.jpg ADDED
Binary file
assets/images/get-started/placeholder.jpg ADDED
Binary file
assets/images/get-started/upgrade-and-save.png ADDED
Binary file
assets/images/get-started/upgrade.png ADDED
Binary file
assets/images/icons/arrow-down.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 404.308 404.309" height="404.309" viewBox="0 0 404.308 404.309" width="404.308" xmlns="http://www.w3.org/2000/svg"><path d="m0 101.08h404.308l-202.157 202.149z"/></svg>
assets/images/icons/automatic-layout.png ADDED
Binary file
assets/images/icons/cross.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 339.177 339.177" fill="#cdcdcd" height="339.177" viewBox="0 0 339.177 339.177" width="339.177" xmlns="http://www.w3.org/2000/svg"><path d="m247.244 169.59 83.938-83.938c5.332-5.327 7.994-11.798 7.994-19.414 0-7.614-2.669-14.084-7.994-19.414l-38.827-38.831c-5.329-5.328-11.799-7.993-19.411-7.993-7.617 0-14.085 2.665-19.417 7.993l-83.937 83.938-83.939-83.938c-5.326-5.328-11.797-7.993-19.414-7.993-7.611 0-14.083 2.665-19.414 7.993l-38.829 38.831c-5.327 5.326-7.994 11.8-7.994 19.414 0 7.616 2.664 14.084 7.994 19.414l83.937 83.938-83.937 83.938c-5.327 5.331-7.994 11.799-7.994 19.417 0 7.61 2.664 14.082 7.994 19.41l38.83 38.828c5.33 5.332 11.803 7.994 19.414 7.994 7.616 0 14.084-2.669 19.414-7.994l83.939-83.938 83.944 83.938c5.328 5.332 11.793 7.994 19.417 7.994 7.611 0 14.082-2.669 19.411-7.994l38.82-38.828c5.332-5.324 7.994-11.8 7.994-19.41 0-7.618-2.662-14.086-7.994-19.417z"/></svg>
assets/images/icons/email.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 27.857 27.857" height="15" viewBox="0 0 27.857 27.857" width="15" xmlns="http://www.w3.org/2000/svg"><g fill="#c3c3c3"><path d="m2.203 5.331 10.034 7.948c.455.36 1.082.52 1.691.49.608.03 1.235-.129 1.69-.49l10.034-7.948c.804-.633.622-1.152-.398-1.152h-11.325-11.325c-1.021 0-1.203.519-.401 1.152z"/><path d="m26.377 7.428-10.965 8.325c-.41.308-.947.458-1.482.451-.536.007-1.073-.144-1.483-.451l-10.967-8.325c-.814-.617-1.48-.286-1.48.735v13.659c0 1.021.836 1.857 1.857 1.857h12.071 12.072c1.021 0 1.857-.836 1.857-1.857v-13.659c0-1.021-.666-1.352-1.48-.735z"/></g></svg>
assets/images/icons/facebook-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 90 90" fill="#444" height="90" viewBox="0 0 90 90" width="90" xmlns="http://www.w3.org/2000/svg"><path d="m90 15.001c0-7.882-7.116-15.001-15-15.001h-60c-7.884 0-15 7.119-15 15.001v59.998c0 7.882 7.116 15.001 15.001 15.001h29.999v-34h-11v-15h11v-5.844c0-10.079 7.568-19.156 16.875-19.156h12.125v15h-12.125c-1.327 0-2.875 1.611-2.875 4.024v5.976h15v15h-15v34h16c7.884 0 15-7.119 15-15.001z"/></svg>
assets/images/icons/facebook.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 90 90" fill="#3b5988" height="90" viewBox="0 0 90 90" width="90" xmlns="http://www.w3.org/2000/svg"><path d="m90 15.001c0-7.882-7.116-15.001-15-15.001h-60c-7.884 0-15 7.119-15 15.001v59.998c0 7.882 7.116 15.001 15.001 15.001h29.999v-34h-11v-15h11v-5.844c0-10.079 7.568-19.156 16.875-19.156h12.125v15h-12.125c-1.327 0-2.875 1.611-2.875 4.024v5.976h15v15h-15v34h16c7.884 0 15-7.119 15-15.001z"/></svg>
assets/images/icons/google-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 96.828 96.827" height="96.827" viewBox="0 0 96.828 96.827" width="96.828" xmlns="http://www.w3.org/2000/svg"><path d="m62.617 0h-23.092c-10.29 0-17.413 2.256-23.824 7.552-5.042 4.35-8.051 10.672-8.051 16.912 0 9.614 7.33 19.831 20.913 19.831 1.306 0 2.752-.134 4.028-.253l-.188.457c-.546 1.308-1.063 2.542-1.063 4.468 0 3.75 1.809 6.063 3.558 8.298l.22.283-.391.027c-5.609.384-16.049 1.1-23.675 5.787-9.007 5.355-9.707 13.145-9.707 15.404 0 8.988 8.376 18.06 27.09 18.06 21.76 0 33.146-12.005 33.146-23.863.002-8.771-5.141-13.101-10.6-17.698l-4.605-3.582c-1.423-1.179-3.195-2.646-3.195-5.364 0-2.672 1.772-4.436 3.336-5.992l.163-.165c4.973-3.917 10.609-8.358 10.609-17.964 0-9.658-6.035-14.649-8.937-17.048h7.663c.094 0 .188-.026.266-.077l6.601-4.15c.188-.119.276-.348.214-.562-.059-.214-.257-.361-.479-.361zm-28.003 91.535c-13.264 0-22.176-6.195-22.176-15.416 0-6.021 3.645-10.396 10.824-12.997 5.749-1.935 13.17-2.031 13.244-2.031 1.257 0 1.889 0 2.893.126 9.281 6.605 13.743 10.073 13.743 16.678-.001 8.414-7.101 13.64-18.528 13.64zm-.125-50.779c-11.132 0-15.752-14.633-15.752-22.468 0-3.984.906-7.042 2.77-9.351 2.023-2.531 5.487-4.166 8.825-4.166 10.221 0 15.873 13.738 15.873 23.233 0 1.498 0 6.055-3.148 9.22-2.117 2.113-5.56 3.532-8.568 3.532z"/><path d="m94.982 45.223h-12.168v-12.125c0-.276-.225-.5-.5-.5h-5.234c-.276 0-.5.224-.5.5v12.125h-12.107c-.276 0-.5.224-.5.5v5.304c0 .275.224.5.5.5h12.107v12.203c0 .275.224.5.5.5h5.234c.275 0 .5-.225.5-.5v-12.205h12.168c.276 0 .5-.223.5-.5v-5.302c0-.277-.223-.5-.5-.5z"/></svg>
assets/images/icons/google.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 96.828 96.827" height="96.827" viewBox="0 0 96.828 96.827" width="96.828" xmlns="http://www.w3.org/2000/svg"><path d="m62.617 0h-23.092c-10.29 0-17.413 2.256-23.824 7.552-5.042 4.35-8.051 10.672-8.051 16.912 0 9.614 7.33 19.831 20.913 19.831 1.306 0 2.752-.134 4.028-.253l-.188.457c-.546 1.308-1.063 2.542-1.063 4.468 0 3.75 1.809 6.063 3.558 8.298l.22.283-.391.027c-5.609.384-16.049 1.1-23.675 5.787-9.007 5.355-9.707 13.145-9.707 15.404 0 8.988 8.376 18.06 27.09 18.06 21.76 0 33.146-12.005 33.146-23.863.002-8.771-5.141-13.101-10.6-17.698l-4.605-3.582c-1.423-1.179-3.195-2.646-3.195-5.364 0-2.672 1.772-4.436 3.336-5.992l.163-.165c4.973-3.917 10.609-8.358 10.609-17.964 0-9.658-6.035-14.649-8.937-17.048h7.663c.094 0 .188-.026.266-.077l6.601-4.15c.188-.119.276-.348.214-.562-.059-.214-.257-.361-.479-.361zm-28.003 91.535c-13.264 0-22.176-6.195-22.176-15.416 0-6.021 3.645-10.396 10.824-12.997 5.749-1.935 13.17-2.031 13.244-2.031 1.257 0 1.889 0 2.893.126 9.281 6.605 13.743 10.073 13.743 16.678-.001 8.414-7.101 13.64-18.528 13.64zm-.125-50.779c-11.132 0-15.752-14.633-15.752-22.468 0-3.984.906-7.042 2.77-9.351 2.023-2.531 5.487-4.166 8.825-4.166 10.221 0 15.873 13.738 15.873 23.233 0 1.498 0 6.055-3.148 9.22-2.117 2.113-5.56 3.532-8.568 3.532z"/><path d="m94.982 45.223h-12.168v-12.125c0-.276-.225-.5-.5-.5h-5.234c-.276 0-.5.224-.5.5v12.125h-12.107c-.276 0-.5.224-.5.5v5.304c0 .275.224.5.5.5h12.107v12.203c0 .275.224.5.5.5h5.234c.275 0 .5-.225.5-.5v-12.205h12.168c.276 0 .5-.223.5-.5v-5.302c0-.277-.223-.5-.5-.5z"/></svg>
assets/images/icons/instagram-black.svg ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ version="1.0"
11
+ width="100"
12
+ height="100"
13
+ viewBox="0 0 80 80"
14
+ preserveAspectRatio="xMidYMid meet"
15
+ id="svg2"
16
+ inkscape:version="0.48.4 r9939"
17
+ sodipodi:docname="instagram-logo-black-png.svg">
18
+ <title
19
+ id="title2997">Instagram icon</title>
20
+ <defs
21
+ id="defs18" />
22
+ <sodipodi:namedview
23
+ pagecolor="#ffffff"
24
+ bordercolor="#666666"
25
+ borderopacity="1"
26
+ objecttolerance="10"
27
+ gridtolerance="10"
28
+ guidetolerance="10"
29
+ inkscape:pageopacity="0"
30
+ inkscape:pageshadow="2"
31
+ inkscape:window-width="1600"
32
+ inkscape:window-height="844"
33
+ id="namedview16"
34
+ showgrid="false"
35
+ inkscape:showpageshadow="false"
36
+ inkscape:zoom="1"
37
+ inkscape:cx="75.986979"
38
+ inkscape:cy="46.746849"
39
+ inkscape:window-x="-4"
40
+ inkscape:window-y="-4"
41
+ inkscape:window-maximized="1"
42
+ inkscape:current-layer="svg2" />
43
+ <metadata
44
+ id="metadata4">
45
+ Created by potrace 1.12, written by Peter Selinger 2001-2015
46
+ <rdf:RDF>
47
+ <cc:Work
48
+ rdf:about="">
49
+ <dc:format>image/svg+xml</dc:format>
50
+ <dc:type
51
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
52
+ <dc:title>Instagram icon</dc:title>
53
+ </cc:Work>
54
+ </rdf:RDF>
55
+ </metadata>
56
+ <g
57
+ transform="matrix(0.01880253,0,0,-0.01877464,-8.09169,88.053468)"
58
+ id="g6"
59
+ style="fill:#000000;stroke:none">
60
+ <path
61
+ d="m 1288,4123 -3,-508 -48,-3 c -27,-2 -55,2 -63,9 -12,10 -14,90 -14,500 0,555 10,502 -90,471 l -55,-18 -5,-479 -5,-480 -53,-3 c -31,-2 -60,2 -68,9 -12,10 -14,82 -14,435 0,390 -1,424 -17,424 -9,0 -60,-44 -114,-98 -86,-87 -103,-111 -147,-203 -84,-172 -85,-176 -89,-571 l -5,-348 671,0 c 369,0 671,4 671,8 0,13 119,107 191,150 87,53 188,95 295,123 131,34 340,33 475,-3 160,-43 317,-124 436,-225 l 62,-53 666,0 667,0 -4,353 c -4,329 -6,357 -27,427 -42,142 -93,224 -215,346 -122,121 -203,172 -346,216 l -75,23 -1197,3 -1198,3 -2,-508 -3,-508 -48,-3 c -27,-2 -55,2 -63,9 -12,10 -14,91 -14,510 l 0,499 -75,0 -75,0 -2,-507 z m 2872,122 c 17,-9 39,-33 50,-55 18,-36 20,-59 20,-277 0,-344 11,-333 -329,-333 -258,0 -289,7 -322,72 -19,37 -20,55 -17,289 l 3,251 37,34 38,34 245,0 c 201,0 251,-3 275,-15 z"
62
+ id="path10"
63
+ inkscape:connector-curvature="0" />
64
+ <path
65
+ d="m 2445,3353 c -352,-49 -638,-331 -695,-686 -17,-103 -8,-270 20,-367 39,-137 92,-223 210,-340 117,-118 193,-167 312,-205 468,-148 948,112 1069,580 27,104 29,300 5,395 -44,171 -98,264 -231,395 -129,129 -240,187 -413,221 -69,13 -207,17 -277,7 z m 220,-248 c 78,-16 234,-90 280,-133 81,-75 147,-183 181,-298 25,-82 22,-218 -5,-304 -76,-241 -306,-413 -551,-413 -90,0 -159,18 -260,66 -195,92 -323,297 -323,517 -1,269 194,506 464,564 84,19 129,19 214,1 z"
66
+ id="path12"
67
+ inkscape:connector-curvature="0" />
68
+ <path
69
+ d="m 502,2153 3,-1008 23,-75 C 572,927 623,846 744,724 868,601 951,550 1096,508 l 79,-23 1385,0 1385,0 79,23 c 159,46 270,115 389,242 83,88 151,206 189,330 l 23,75 3,1003 3,1002 -616,0 c -536,0 -615,-2 -615,-15 0,-8 16,-40 36,-70 189,-297 208,-678 50,-994 -162,-322 -460,-529 -823,-571 -292,-34 -630,92 -840,314 -84,88 -131,158 -193,289 -73,151 -94,249 -94,427 0,117 4,162 22,234 26,105 74,219 125,299 20,32 37,64 37,72 0,13 -78,15 -610,15 l -611,0 3,-1007 z"
70
+ id="path14"
71
+ inkscape:connector-curvature="0" />
72
+ </g>
73
+ </svg>
assets/images/icons/linkedin-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 430.117 430.118" height="430.118" viewBox="0 0 430.117 430.118" width="430.117" xmlns="http://www.w3.org/2000/svg"><path d="m398.355 0h-366.573c-17.553 0-31.78 13.793-31.78 30.817v368.471c0 17.025 14.232 30.83 31.78 30.83h366.573c17.549 0 31.76-13.814 31.76-30.83v-368.471c0-17.019-14.211-30.817-31.76-30.817zm-267.955 360.038h-64.987v-194.193h64.987zm-32.487-220.723h-.437c-21.793 0-35.92-14.904-35.92-33.563 0-19.035 14.542-33.535 36.767-33.535 22.227 0 35.899 14.496 36.331 33.535 0 18.663-14.099 33.563-36.741 33.563zm266.746 220.723h-64.966v-103.9c0-26.107-9.413-43.921-32.907-43.921-17.973 0-28.642 12.018-33.327 23.621-1.736 4.144-2.166 9.94-2.166 15.728v108.468h-64.954s.85-175.979 0-194.192h64.964v27.531c8.624-13.229 24.035-32.1 58.534-32.1 42.76 0 74.822 27.739 74.822 87.414zm-133.776-166.048c.111-.182.266-.401.42-.614v.614z"/></svg>
assets/images/icons/linkedin.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 430.117 430.118" height="430.118" viewBox="0 0 430.117 430.118" width="430.117" xmlns="http://www.w3.org/2000/svg"><path d="m398.355 0h-366.573c-17.553 0-31.78 13.793-31.78 30.817v368.471c0 17.025 14.232 30.83 31.78 30.83h366.573c17.549 0 31.76-13.814 31.76-30.83v-368.471c0-17.019-14.211-30.817-31.76-30.817zm-267.955 360.038h-64.987v-194.193h64.987zm-32.487-220.723h-.437c-21.793 0-35.92-14.904-35.92-33.563 0-19.035 14.542-33.535 36.767-33.535 22.227 0 35.899 14.496 36.331 33.535 0 18.663-14.099 33.563-36.741 33.563zm266.746 220.723h-64.966v-103.9c0-26.107-9.413-43.921-32.907-43.921-17.973 0-28.642 12.018-33.327 23.621-1.736 4.144-2.166 9.94-2.166 15.728v108.468h-64.954s.85-175.979 0-194.192h64.964v27.531c8.624-13.229 24.035-32.1 58.534-32.1 42.76 0 74.822 27.739 74.822 87.414zm-133.776-166.048c.111-.182.266-.401.42-.614v.614z"/></svg>
assets/images/icons/litevspro/complete-guide-to-wpforms-settings.png ADDED
Binary file
assets/images/icons/litevspro/cross.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 339.177 339.177" fill="#cdcdcd" height="339.177" viewBox="0 0 339.177 339.177" width="339.177" xmlns="http://www.w3.org/2000/svg"><path d="m247.244 169.59 83.938-83.938c5.332-5.327 7.994-11.798 7.994-19.414 0-7.614-2.669-14.084-7.994-19.414l-38.827-38.831c-5.329-5.328-11.799-7.993-19.411-7.993-7.617 0-14.085 2.665-19.417 7.993l-83.937 83.938-83.939-83.938c-5.326-5.328-11.797-7.993-19.414-7.993-7.611 0-14.083 2.665-19.414 7.993l-38.829 38.831c-5.327 5.326-7.994 11.8-7.994 19.414 0 7.616 2.664 14.084 7.994 19.414l83.937 83.938-83.937 83.938c-5.327 5.331-7.994 11.799-7.994 19.417 0 7.61 2.664 14.082 7.994 19.41l38.83 38.828c5.33 5.332 11.803 7.994 19.414 7.994 7.616 0 14.084-2.669 19.414-7.994l83.939-83.938 83.944 83.938c5.328 5.332 11.793 7.994 19.417 7.994 7.611 0 14.082-2.669 19.411-7.994l38.82-38.828c5.332-5.324 7.994-11.8 7.994-19.41 0-7.618-2.662-14.086-7.994-19.417z"/></svg>
assets/images/icons/litevspro/cross_red.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 339.177 339.177" fill="#dd7878" height="339.177" viewBox="0 0 339.177 339.177" width="339.177" xmlns="http://www.w3.org/2000/svg"><path d="m247.244 169.59 83.938-83.938c5.332-5.327 7.994-11.798 7.994-19.414 0-7.614-2.669-14.084-7.994-19.414l-38.827-38.831c-5.329-5.328-11.799-7.993-19.411-7.993-7.617 0-14.085 2.665-19.417 7.993l-83.937 83.938-83.939-83.938c-5.326-5.328-11.797-7.993-19.414-7.993-7.611 0-14.083 2.665-19.414 7.993l-38.829 38.831c-5.327 5.326-7.994 11.8-7.994 19.414 0 7.616 2.664 14.084 7.994 19.414l83.937 83.938-83.937 83.938c-5.327 5.331-7.994 11.799-7.994 19.417 0 7.61 2.664 14.082 7.994 19.41l38.83 38.828c5.33 5.332 11.803 7.994 19.414 7.994 7.616 0 14.084-2.669 19.414-7.994l83.939-83.938 83.944 83.938c5.328 5.332 11.793 7.994 19.417 7.994 7.611 0 14.082-2.669 19.411-7.994l38.82-38.828c5.332-5.324 7.994-11.8 7.994-19.41 0-7.618-2.662-14.086-7.994-19.417z"/></svg>
assets/images/icons/litevspro/how-choose-right-form-field.png ADDED
Binary file
assets/images/icons/litevspro/how-create-gdpr-compliant-forms.png ADDED
Binary file
assets/images/icons/litevspro/how-install-activate-wpforms-addons.png ADDED
Binary file
assets/images/icons/litevspro/icon-full.svg ADDED
@@ -0,0 +1 @@
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 37 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path id="check" d="M12.29,26.462c0.328,0.375 0.75,0.562 1.266,0.562c0.516,0 0.937,-0.187 1.266,-0.562l20.741,-20.672c0.329,-0.328 0.493,-0.75 0.493,-1.265c0,-0.516 -0.164,-0.938 -0.493,-1.266l-2.601,-2.531c-0.328,-0.375 -0.738,-0.563 -1.23,-0.563c-0.493,0 -0.926,0.188 -1.301,0.563l-16.875,16.875l-7.875,-7.875c-0.375,-0.375 -0.808,-0.563 -1.301,-0.563c-0.492,0 -0.902,0.188 -1.23,0.563l-2.602,2.531c-0.328,0.328 -0.492,0.75 -0.492,1.265c0,0.516 0.164,0.938 0.492,1.266l11.742,11.672Z" style="fill:#6ab255;fill-rule:nonzero;"/></svg>
assets/images/icons/litevspro/icon-none.svg ADDED
@@ -0,0 +1 @@
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 33 33" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path id="x" d="M27.592,32.359c-0.389,0.389 -0.861,0.583 -1.417,0.583c-0.555,0 -1.027,-0.194 -1.416,-0.583l-8.084,-8.084l-8.083,8.084c-0.389,0.389 -0.861,0.583 -1.417,0.583c-0.555,0 -1.028,-0.194 -1.417,-0.583l-4.5,-4.5c-0.388,-0.389 -0.583,-0.861 -0.583,-1.417c0,-0.555 0.195,-1.028 0.583,-1.417l8.084,-8.083l-8.084,-8.084c-0.388,-0.389 -0.583,-0.861 -0.583,-1.416c0,-0.556 0.195,-1.028 0.583,-1.417l4.5,-4.5c0.389,-0.389 0.862,-0.583 1.417,-0.583c0.556,0 1.028,0.194 1.417,0.583l8.083,8.083l8.084,-8.083c0.389,-0.389 0.861,-0.583 1.416,-0.583c0.556,0 1.028,0.194 1.417,0.583l4.5,4.5c0.389,0.389 0.583,0.861 0.583,1.417c0,0.555 -0.194,1.027 -0.583,1.416l-8.083,8.084l8.083,8.083c0.389,0.389 0.583,0.862 0.583,1.417c0,0.556 -0.194,1.028 -0.583,1.417l-4.5,4.5Z" style="fill:#d83638;fill-rule:nonzero;"/></svg>
assets/images/icons/litevspro/icon-partial.svg ADDED
@@ -0,0 +1 @@
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 53 53" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-miterlimit:10;"><path id="x" d="M37.592,42.359c-0.389,0.389 -0.861,0.583 -1.417,0.583c-0.555,0 -1.027,-0.194 -1.416,-0.583l-8.084,-8.084l-8.083,8.084c-0.389,0.389 -0.861,0.583 -1.417,0.583c-0.555,0 -1.028,-0.194 -1.417,-0.583l-4.5,-4.5c-0.388,-0.389 -0.583,-0.861 -0.583,-1.417c0,-0.556 0.195,-1.028 0.583,-1.417l8.084,-8.083l-8.084,-8.084c-0.388,-0.388 -0.583,-0.861 -0.583,-1.416c0,-0.556 0.195,-1.028 0.583,-1.417l4.5,-4.5c0.389,-0.389 0.862,-0.584 1.417,-0.584c0.556,0 1.028,0.195 1.417,0.584l8.083,8.083l8.084,-8.083c0.389,-0.389 0.861,-0.584 1.416,-0.584c0.556,0 1.028,0.195 1.417,0.584l4.5,4.5c0.389,0.389 0.583,0.861 0.583,1.417c0,0.555 -0.194,1.028 -0.583,1.416l-8.083,8.084l8.083,8.083c0.389,0.389 0.583,0.861 0.583,1.417c0,0.556 -0.194,1.028 -0.583,1.417l-4.5,4.5Z" style="fill:none;stroke:#d83638;stroke-width:2px;stroke-dasharray:4,2;"/></svg>
assets/images/icons/litevspro/plugin-mi.png ADDED
Binary file
assets/images/icons/litevspro/plugin-om.png ADDED
Binary file
assets/images/icons/litevspro/plugin-smtp.png ADDED
Binary file
assets/images/icons/litevspro/team.jpg ADDED
Binary file
assets/images/icons/litevspro/tick.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 442.533 442.533" fill="#7cc048" height="442.533" viewBox="0 0 442.533 442.533" width="442.533" xmlns="http://www.w3.org/2000/svg"><path d="m434.539 98.499-38.828-38.828c-5.324-5.328-11.799-7.993-19.41-7.993-7.618 0-14.093 2.665-19.417 7.993l-187.294 187.577-83.939-84.225c-5.33-5.33-11.801-7.992-19.412-7.992-7.616 0-14.087 2.662-19.417 7.992l-38.828 38.829c-5.33 5.329-7.994 11.802-7.994 19.417 0 7.609 2.664 14.088 7.994 19.416l103.351 103.349 38.831 38.828c5.327 5.332 11.8 7.994 19.414 7.994 7.611 0 14.084-2.669 19.414-7.994l38.83-38.828 206.705-206.704c5.325-5.33 7.994-11.802 7.994-19.417.004-7.611-2.669-14.084-7.994-19.414z"/></svg>
assets/images/icons/menu.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 459 459" height="459" viewBox="0 0 459 459" width="459" xmlns="http://www.w3.org/2000/svg"><path d="m0 382.5h459v-51h-459zm0-127.5h459v-51h-459zm0-178.5v51h459v-51z"/></svg>
assets/images/icons/page.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 80 80" fill="#bfbfbf" height="20" viewBox="0 0 80 80" width="20" xmlns="http://www.w3.org/2000/svg"><path d="m69.2 22.4-21.8-21.8c-.4-.4-.9-.6-1.4-.6h-32c-2.2 0-4 1.8-4 4v72c0 2.2 1.8 4 4 4h52c2.2 0 4-1.8 4-4v-52.3c-.1-.6-.4-.9-.8-1.3zm-21.2-15.6 15.2 15.2h-15.2zm18 69.2h-52v-72h30v20c0 1.1.9 2 2 2h20z"/></svg>
assets/images/icons/pinterest-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 144 144" height="144" viewBox="0 0 144 144" width="144" xmlns="http://www.w3.org/2000/svg"><path d="m71.9 5.4c-36.8 0-66.6 29.8-66.6 66.6 0 28.2 17.5 52.3 42.3 62-.6-5.3-1.1-13.3.2-19.1 1.2-5.2 7.8-33.1 7.8-33.1s-2-4-2-9.9c0-9.3 5.4-16.2 12-16.2 5.7 0 8.4 4.3 8.4 9.4 0 5.7-3.6 14.3-5.5 22.2-1.6 6.6 3.3 12 9.9 12 11.8 0 20.9-12.5 20.9-30.5 0-15.9-11.5-27.1-27.8-27.1-18.9 0-30.1 14.2-30.1 28.9 0 5.7 2.2 11.9 5 15.2.5.7.6 1.2.5 1.9-.5 2.1-1.6 6.6-1.8 7.5-.3 1.2-1 1.5-2.2.9-8.3-3.9-13.5-16-13.5-25.8 0-21 15.3-40.3 44-40.3 23.1 0 41 16.5 41 38.4 0 22.9-14.5 41.4-34.5 41.4-6.7 0-13.1-3.5-15.3-7.6 0 0-3.3 12.7-4.1 15.8-1.5 5.8-5.6 13-8.3 17.5 6.2 1.9 12.8 3 19.7 3 36.8 0 66.6-29.8 66.6-66.6 0-36.7-29.8-66.5-66.6-66.5z" fill="#bd081c"/><path d="m71.9 5.4c-36.8 0-66.6 29.8-66.6 66.6 0 28.2 17.5 52.3 42.3 62-.6-5.3-1.1-13.3.2-19.1 1.2-5.2 7.8-33.1 7.8-33.1s-2-4-2-9.9c0-9.3 5.4-16.2 12-16.2 5.7 0 8.4 4.3 8.4 9.4 0 5.7-3.6 14.3-5.5 22.2-1.6 6.6 3.3 12 9.9 12 11.8 0 20.9-12.5 20.9-30.5 0-15.9-11.5-27.1-27.8-27.1-18.9 0-30.1 14.2-30.1 28.9 0 5.7 2.2 11.9 5 15.2.5.7.6 1.2.5 1.9-.5 2.1-1.6 6.6-1.8 7.5-.3 1.2-1 1.5-2.2.9-8.3-3.9-13.5-16-13.5-25.8 0-21 15.3-40.3 44-40.3 23.1 0 41 16.5 41 38.4 0 22.9-14.5 41.4-34.5 41.4-6.7 0-13.1-3.5-15.3-7.6 0 0-3.3 12.7-4.1 15.8-1.5 5.8-5.6 13-8.3 17.5 6.2 1.9 12.8 3 19.7 3 36.8 0 66.6-29.8 66.6-66.6 0-36.7-29.8-66.5-66.6-66.5z" fill="#444"/></svg>
assets/images/icons/pinterest.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 144 144" viewBox="0 0 144 144" xmlns="http://www.w3.org/2000/svg"><path d="m71.9 5.4c-36.8 0-66.6 29.8-66.6 66.6 0 28.2 17.5 52.3 42.3 62-.6-5.3-1.1-13.3.2-19.1 1.2-5.2 7.8-33.1 7.8-33.1s-2-4-2-9.9c0-9.3 5.4-16.2 12-16.2 5.7 0 8.4 4.3 8.4 9.4 0 5.7-3.6 14.3-5.5 22.2-1.6 6.6 3.3 12 9.9 12 11.8 0 20.9-12.5 20.9-30.5 0-15.9-11.5-27.1-27.8-27.1-18.9 0-30.1 14.2-30.1 28.9 0 5.7 2.2 11.9 5 15.2.5.7.6 1.2.5 1.9-.5 2.1-1.6 6.6-1.8 7.5-.3 1.2-1 1.5-2.2.9-8.3-3.9-13.5-16-13.5-25.8 0-21 15.3-40.3 44-40.3 23.1 0 41 16.5 41 38.4 0 22.9-14.5 41.4-34.5 41.4-6.7 0-13.1-3.5-15.3-7.6 0 0-3.3 12.7-4.1 15.8-1.5 5.8-5.6 13-8.3 17.5 6.2 1.9 12.8 3 19.7 3 36.8 0 66.6-29.8 66.6-66.6 0-36.7-29.8-66.5-66.6-66.5z" fill="#bd081c"/></svg>
assets/images/icons/question.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 92 92" viewBox="0 0 92 92" xmlns="http://www.w3.org/2000/svg"><path d="m45.386.004c-25.403.34-45.719 21.211-45.381 46.615.34 25.393 21.209 45.715 46.611 45.377 25.398-.342 45.718-21.213 45.38-46.615-.34-25.395-21.21-45.716-46.61-45.377zm-.136 73.996-.254-.004c-3.912-.116-6.67-2.998-6.559-6.852.109-3.788 2.934-6.538 6.717-6.538l.227.004c4.021.119 6.748 2.972 6.635 6.937-.112 3.799-2.893 6.453-6.766 6.453zm16.455-32.659c-.92 1.307-2.943 2.93-5.492 4.916l-2.807 1.938c-1.541 1.198-2.471 2.325-2.82 3.434-.275.873-.41 1.104-.434 2.88l-.004.451h-10.718l.031-.907c.131-3.728.223-5.921 1.768-7.733 2.424-2.846 7.771-6.289 7.998-6.435.766-.577 1.412-1.234 1.893-1.936 1.125-1.551 1.623-2.772 1.623-3.972 0-1.665-.494-3.205-1.471-4.576-.939-1.323-2.723-1.993-5.303-1.993-2.559 0-4.311.812-5.359 2.478-1.078 1.713-1.623 3.512-1.623 5.35v.457h-11.051l.02-.477c.285-6.769 2.701-11.643 7.178-14.487 2.813-1.811 6.313-2.729 10.397-2.729 5.346 0 9.859 1.299 13.412 3.861 3.6 2.596 5.426 6.484 5.426 11.556 0 2.837-.896 5.502-2.664 7.924z" fill="#d4d4d4"/></svg>
assets/images/icons/quotation-right.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 475.082 475.081" fill="#f3f3f3" height="66.081" viewBox="0 0 475.082 475.081" width="66.082" xmlns="http://www.w3.org/2000/svg"><path d="m164.454 36.547h-109.636c-15.229 0-28.171 5.33-38.832 15.987-10.656 10.659-15.986 23.601-15.986 38.831v109.632c0 15.229 5.327 28.169 15.986 38.826 10.66 10.656 23.606 15.988 38.832 15.988h63.953c7.611 0 14.084 2.666 19.414 7.994 5.33 5.325 7.994 11.8 7.994 19.417v9.131c0 20.177-7.139 37.397-21.413 51.675-14.275 14.271-31.499 21.409-51.678 21.409h-18.27c-4.952 0-9.233 1.813-12.851 5.427-3.615 3.614-5.424 7.898-5.424 12.847v36.549c0 4.941 1.809 9.233 5.424 12.848 3.621 3.613 7.898 5.427 12.851 5.427h18.271c19.797 0 38.688-3.86 56.676-11.566 17.987-7.707 33.546-18.131 46.68-31.265 13.131-13.135 23.553-28.691 31.261-46.679 7.707-17.987 11.562-36.877 11.562-56.671v-200.993c0-15.23-5.33-28.171-15.987-38.828s-23.602-15.986-38.827-15.986z"/><path d="m459.089 52.534c-10.656-10.657-23.599-15.987-38.828-15.987h-109.632c-15.229 0-28.171 5.33-38.828 15.987-10.656 10.66-15.984 23.601-15.984 38.831v109.632c0 15.229 5.328 28.169 15.984 38.826 10.657 10.656 23.6 15.988 38.828 15.988h63.953c7.611 0 14.089 2.666 19.418 7.994 5.324 5.328 7.994 11.8 7.994 19.417v9.131c0 20.177-7.139 37.397-21.416 51.675-14.274 14.271-31.494 21.409-51.675 21.409h-18.274c-4.948 0-9.233 1.813-12.847 5.427-3.617 3.614-5.428 7.898-5.428 12.847v36.549c0 4.941 1.811 9.233 5.428 12.848 3.613 3.613 7.898 5.427 12.847 5.427h18.274c19.794 0 38.684-3.86 56.674-11.566 17.984-7.707 33.541-18.131 46.676-31.265 13.134-13.135 23.562-28.695 31.265-46.679 7.706-17.983 11.563-36.877 11.563-56.671v-200.993c-.003-15.23-5.328-28.171-15.992-38.827z"/></svg>
assets/images/icons/search.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 475.084 475.084" fill="#bfbfbf" height="20" viewBox="0 0 475.084 475.084" width="20" xmlns="http://www.w3.org/2000/svg"><path d="m464.524 412.846-97.929-97.925c23.6-34.068 35.406-72.047 35.406-113.917 0-27.218-5.284-53.249-15.852-78.087-10.561-24.842-24.838-46.254-42.825-64.241s-39.396-32.264-64.233-42.826c-24.845-10.565-50.874-15.847-78.092-15.847-27.216 0-53.247 5.282-78.085 15.847-24.842 10.562-46.254 24.839-64.241 42.826-17.989 17.987-32.264 39.403-42.827 64.241-10.564 24.841-15.846 50.869-15.846 78.087 0 27.216 5.282 53.238 15.846 78.083 10.562 24.838 24.838 46.247 42.827 64.234 17.987 17.993 39.403 32.264 64.241 42.832 24.841 10.563 50.869 15.844 78.085 15.844 41.879 0 79.852-11.807 113.922-35.405l97.929 97.641c6.852 7.231 15.406 10.849 25.693 10.849 9.897 0 18.467-3.617 25.694-10.849 7.23-7.23 10.848-15.796 10.848-25.693.003-10.082-3.518-18.651-10.561-25.694zm-173.161-121.488c-25.029 25.033-55.148 37.549-90.364 37.549-35.21 0-65.329-12.519-90.36-37.549-25.031-25.029-37.546-55.144-37.546-90.36 0-35.21 12.518-65.334 37.546-90.36 25.026-25.032 55.15-37.546 90.36-37.546 35.212 0 65.331 12.519 90.364 37.546 25.033 25.026 37.548 55.15 37.548 90.36 0 35.216-12.519 65.331-37.548 90.36z"/></svg>
assets/images/icons/tick.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 442.533 442.533" fill="#7cc048" height="442.533" viewBox="0 0 442.533 442.533" width="442.533" xmlns="http://www.w3.org/2000/svg"><path d="m434.539 98.499-38.828-38.828c-5.324-5.328-11.799-7.993-19.41-7.993-7.618 0-14.093 2.665-19.417 7.993l-187.294 187.577-83.939-84.225c-5.33-5.33-11.801-7.992-19.412-7.992-7.616 0-14.087 2.662-19.417 7.992l-38.828 38.829c-5.33 5.329-7.994 11.802-7.994 19.417 0 7.609 2.664 14.088 7.994 19.416l103.351 103.349 38.831 38.828c5.327 5.332 11.8 7.994 19.414 7.994 7.611 0 14.084-2.669 19.414-7.994l38.83-38.828 206.705-206.704c5.325-5.33 7.994-11.802 7.994-19.417.004-7.611-2.669-14.084-7.994-19.414z"/></svg>
assets/images/icons/twitter-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 612 612" viewBox="0 0 612 612" xmlns="http://www.w3.org/2000/svg"><path d="m612 116.258c-22.525 9.981-46.694 16.75-72.088 19.772 25.929-15.527 45.777-40.155 55.184-69.411-24.322 14.379-51.169 24.82-79.775 30.48-22.907-24.437-55.49-39.658-91.63-39.658-69.334 0-125.551 56.217-125.551 125.513 0 9.828 1.109 19.427 3.251 28.606-104.326-5.24-196.835-55.223-258.75-131.174-10.823 18.51-16.98 40.078-16.98 63.101 0 43.559 22.181 81.993 55.835 104.479-20.575-.688-39.926-6.348-56.867-15.756v1.568c0 60.806 43.291 111.554 100.693 123.104-10.517 2.83-21.607 4.398-33.08 4.398-8.107 0-15.947-.803-23.634-2.333 15.985 49.907 62.336 86.199 117.253 87.194-42.947 33.654-97.099 53.655-155.916 53.655-10.134 0-20.116-.612-29.944-1.721 55.567 35.681 121.536 56.485 192.438 56.485 230.948 0 357.188-191.291 357.188-357.188l-.421-16.253c24.666-17.593 46.005-39.697 62.794-64.861z" fill="#444"/></svg>
assets/images/icons/twitter.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 612 612" viewBox="0 0 612 612" xmlns="http://www.w3.org/2000/svg"><path d="m612 116.258c-22.525 9.981-46.694 16.75-72.088 19.772 25.929-15.527 45.777-40.155 55.184-69.411-24.322 14.379-51.169 24.82-79.775 30.48-22.907-24.437-55.49-39.658-91.63-39.658-69.334 0-125.551 56.217-125.551 125.513 0 9.828 1.109 19.427 3.251 28.606-104.326-5.24-196.835-55.223-258.75-131.174-10.823 18.51-16.98 40.078-16.98 63.101 0 43.559 22.181 81.993 55.835 104.479-20.575-.688-39.926-6.348-56.867-15.756v1.568c0 60.806 43.291 111.554 100.693 123.104-10.517 2.83-21.607 4.398-33.08 4.398-8.107 0-15.947-.803-23.634-2.333 15.985 49.907 62.336 86.199 117.253 87.194-42.947 33.654-97.099 53.655-155.916 53.655-10.134 0-20.116-.612-29.944-1.721 55.567 35.681 121.536 56.485 192.438 56.485 230.948 0 357.188-191.291 357.188-357.188l-.421-16.253c24.666-17.593 46.005-39.697 62.794-64.861z" fill="#4099ff"/></svg>
assets/images/icons/youtube-black.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 90 90" fill="#444" height="90" viewBox="0 0 90 90" width="90" xmlns="http://www.w3.org/2000/svg"><path d="m90 26.958c0-7.433-6.021-13.458-13.45-13.458h-63.1c-7.429 0-13.45 6.025-13.45 13.458v36.084c0 7.433 6.021 13.458 13.45 13.458h63.1c7.429 0 13.45-6.025 13.45-13.458zm-54 33.267v-33.895l25.702 16.947z"/></svg>
assets/images/icons/youtube.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 90 90" fill="#b31217" height="90" viewBox="0 0 90 90" width="90" xmlns="http://www.w3.org/2000/svg"><path d="m90 26.958c0-7.433-6.021-13.458-13.45-13.458h-63.1c-7.429 0-13.45 6.025-13.45 13.458v36.084c0 7.433 6.021 13.458 13.45 13.458h63.1c7.429 0 13.45-6.025 13.45-13.458zm-54 33.267v-33.895l25.702 16.947z"/></svg>
assets/images/logos/gutenberg.svg ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 720 864" style="enable-background:new 0 0 720 864;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{display:none;}
7
+ .st1{display:inline;fill:#191717;}
8
+ .st2{fill:#191717;}
9
+ </style>
10
+ <g id="BACK" class="st0">
11
+ <path class="st1" d="M188.9,575.8c-15.2,0-30.7-3.1-46.5-10.5c-5.9-2.8-8.5-9.8-5.7-15.7c2.8-5.9,9.8-8.5,15.7-5.7
12
+ c57,26.6,111.2-15.2,163.6-55.7c6.1-4.7,12-9.3,17.9-13.7c8-7.6,16.7-7.6,21.9-7.6c1,0,1.9,0.1,2.9,0.4
13
+ c69.1,17.3,143.2,10.5,208.5-19.2c6-2.7,13-0.1,15.7,5.9c2.7,6,0.1,13-5.9,15.7c-69.7,31.6-148.7,39-222.6,20.9
14
+ c-3.1,0-3.5,0.3-4.4,1.3c-0.4,0.4-0.8,0.8-1.3,1.1c-6,4.5-12,9.2-18.2,13.9C289.8,538.4,241.3,575.8,188.9,575.8z"/>
15
+ <path class="st1" d="M342.3,425.1c-3.6,0-6.2-0.3-7.2-0.4c-41.8-4.4-42.9-30.4-42.9-31.6c-0.1-25.9,27.7-39.8,44.5-44
16
+ c30.9-9.8,50.1-10.6,60.3-2.4c4.2,3.3,6.2,7.6,6.7,11.3c6.6,20.7-8.8,41.2-19.7,50.6C370.6,422.8,352.4,425.1,342.3,425.1z
17
+ M316,392c0.9,2.3,6.1,7.5,21.8,9.1c0.2,0,0.4,0,0.6,0.1c0.1,0,18.1,2.4,28.8-9.2c0.3-0.4,0.7-0.7,1.1-1c4.4-3.8,16.1-16.5,12.9-26
18
+ c-3.4-0.6-13.5-0.9-37.6,6.8c-0.2,0.1-0.5,0.2-0.8,0.2C337.2,373.4,316.9,380.8,316,392z M315.9,392.4c0,0.1,0,0.2,0,0.3
19
+ C315.9,392.6,315.9,392.5,315.9,392.4z M340,360.5L340,360.5L340,360.5z M380.3,359.5C380.3,359.5,380.3,359.5,380.3,359.5
20
+ C380.3,359.5,380.3,359.5,380.3,359.5z"/>
21
+ <circle class="st1" cx="544.2" cy="306" r="20.1"/>
22
+ <circle class="st1" cx="226.4" cy="382.6" r="20.1"/>
23
+ <path class="st1" d="M353.1,531.9c-26.3,0-46.4-16.9-47.4-17.7c-5-4.2-5.6-11.7-1.4-16.7c4.2-5,11.7-5.6,16.7-1.4
24
+ c0.4,0.3,18.1,14.8,37.8,11.6c12.6-2,24.1-11.1,34-27.1c3.5-5.6,10.8-7.3,16.3-3.8c5.6,3.5,7.3,10.8,3.8,16.3
25
+ c-13.7,22.1-30.8,34.9-50.6,38C359.2,531.7,356.1,531.9,353.1,531.9z"/>
26
+ </g>
27
+ <g id="FRONT">
28
+ <path class="st2" d="M432.4,415.6c-2.5-1.7-5.9-1-7.6,1.5c-9.9,14.9-30.9,15.7-32,15.7c-0.2,0-0.3,0-0.5,0
29
+ c-25.9,0-35.8,22.1-36.2,23c-1.2,2.8,0.1,6,2.8,7.2c0.7,0.3,1.5,0.5,2.2,0.5c2.1,0,4.1-1.2,5-3.3c0.1-0.2,6.9-15.4,24.4-16.4v28.3
30
+ c-0.7,6.1-3.6,10.9-8.7,14.5c-5.3,3.7-12.4,5.6-21.1,5.6c-10.4,0-18.9-3.6-25.2-10.7c-6.4-7.1-9.6-17.2-9.6-30.2l0.1-31.2
31
+ c0.5-11.5,3.6-20.6,9.5-27.1c6.4-7.1,14.8-10.7,25.2-10.7c8.7,0,15.8,1.9,21.1,5.6c5.3,3.7,8.3,8.8,8.8,15.4h0c0,0.2,0,0.5,0,0.7
32
+ c0,3.8,3.1,6.9,6.9,6.9s6.9-3.1,6.9-6.9c0-0.2,0-0.5,0-0.7h0c-1-9.9-5.5-17.7-13.6-23.6c-8.1-5.9-18.2-8.8-30.4-8.8
33
+ c-14.5,0-26.2,4.8-35.1,14.3c-8.4,8.9-12.8,20.6-13.3,35h0v0c0,1-0.1,2-0.1,3l0.1,28.1h-0.1c0,15.9,4.5,28.6,13.4,38.1
34
+ c8.9,9.5,20.6,14.3,35.1,14.3c12.2,0,22.3-2.9,30.4-8.8c7.4-5.4,11.8-12.5,13.3-21.3l0.3-31.4c9.1-2.2,21.5-7.2,29.3-19
35
+ C435.7,420.7,435,417.3,432.4,415.6z"/>
36
+ <path class="st2" d="M528.7,94.1h76.7c3.4,0,6.2-2.8,6.2-6.2s-2.8-6.2-6.2-6.2h-76.7c-3.4,0-6.2,2.8-6.2,6.2S525.3,94.1,528.7,94.1
37
+ z"/>
38
+ <path class="st2" d="M117.8,94.1h76.7c3.4,0,6.2-2.8,6.2-6.2s-2.8-6.2-6.2-6.2h-76.7c-3.4,0-6.2,2.8-6.2,6.2S114.3,94.1,117.8,94.1
39
+ z"/>
40
+ <circle class="st2" cx="609.3" cy="150.1" r="6.2"/>
41
+ <circle class="st2" cx="359.8" cy="130.6" r="6.2"/>
42
+ <path class="st2" d="M244.8,150.2c0.1,0,0.2,0,0.3,0c23.3,0,33.7-14.6,41.6-28.2c2.6-4.5,12.2-19.5,25.8-23.4
43
+ c16.8-4.9,34.7,2.9,41.7,18.2c1,2.2,3.2,3.5,5.4,3.6c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.4,0c2.2-0.1,4.4-1.4,5.4-3.6
44
+ c7-15.3,24.9-23.1,41.7-18.2c13.6,4,23.2,18.9,25.8,23.4c7.9,13.7,18.3,28.2,41.9,28.2c0,0,0,0,0,0c14.2,0,31-10.6,35.7-30.9
45
+ c3.9-16.8-3.3-32-19-39.7c-3.1-1.5-6.8-0.3-8.3,2.8c-1.5,3.1-0.3,6.8,2.8,8.3c14.9,7.4,13.6,20.5,12.4,25.8
46
+ c-2.4,10.4-11.6,21.4-23.7,21.4c-15.5,0-22.9-7.8-31.2-22.1c-4.1-7-15.5-24-33-29.1c-19.1-5.6-39.3,1.1-50.9,15.8
47
+ c-11.6-14.7-31.8-21.4-50.9-15.8c-17.5,5.1-28.9,22.1-33,29.1c-8.3,14.3-15.7,22.1-30.9,22.1c-0.1,0-0.2,0-0.2,0
48
+ c-13.2-0.1-21.6-9.3-24-18.4c-1.2-4.3-3.7-19,13.1-29c2.9-1.7,3.9-5.5,2.1-8.5c-1.8-2.9-5.5-3.9-8.5-2.1
49
+ c-19.3,11.5-22.3,29.7-18.7,42.9C213.3,139.1,227.8,150.1,244.8,150.2z"/>
50
+ <polygon class="st2" points="360,734 360.1,734 360.1,734 360,734 "/>
51
+ <circle class="st2" cx="108.1" cy="150.1" r="6.2"/>
52
+ <circle class="st2" cx="90.7" cy="88" r="6.2"/>
53
+ <circle class="st2" cx="631.3" cy="88" r="6.2"/>
54
+ <circle class="st2" cx="664.5" cy="485.3" r="6.2"/>
55
+ <circle class="st2" cx="639.6" cy="627.1" r="6.2"/>
56
+ <circle class="st2" cx="599.8" cy="644.8" r="6.2"/>
57
+ <path class="st2" d="M231.9,111.2c0,9.2,7.5,16.7,16.7,16.7c9.2,0,16.7-7.5,16.7-16.7s-7.5-16.7-16.7-16.7
58
+ C239.4,94.4,231.9,101.9,231.9,111.2z M248.6,106.8c2.4,0,4.4,2,4.4,4.4c0,2.4-2,4.4-4.4,4.4c-2.4,0-4.4-2-4.4-4.4
59
+ C244.2,108.8,246.2,106.8,248.6,106.8z"/>
60
+ <path class="st2" d="M473.6,127.9c9.2,0,16.7-7.5,16.7-16.7s-7.5-16.7-16.7-16.7s-16.7,7.5-16.7,16.7S464.4,127.9,473.6,127.9z
61
+ M473.6,106.8c2.4,0,4.4,2,4.4,4.4c0,2.4-2,4.4-4.4,4.4c-2.4,0-4.4-2-4.4-4.4C469.2,108.8,471.2,106.8,473.6,106.8z"/>
62
+ <path class="st2" d="M376.7,121.6c-3.2,1.2-4.8,4.7-3.6,7.9c1.2,3.2,4.7,4.8,7.9,3.7c1-0.4,25-8.4,43.4,20.2
63
+ c1.2,1.8,3.2,2.8,5.2,2.8c1.1,0,2.3-0.3,3.3-1c2.9-1.8,3.7-5.7,1.9-8.5C415.6,117,388.4,117.3,376.7,121.6z"/>
64
+ <path class="st2" d="M343.3,121.6c-0.9-0.3-9.1-3.2-20.3-1.5c-10.4,1.5-25.3,7.4-37.7,26.7c-1.8,2.9-1,6.7,1.9,8.5
65
+ c1,0.7,2.2,1,3.3,1c2,0,4-1,5.2-2.8c18.3-28.6,42.3-20.6,43.4-20.2c3.2,1.2,6.7-0.5,7.9-3.7C348.2,126.4,346.5,122.8,343.3,121.6z"
66
+ />
67
+ <path class="st2" d="M627.8,138.5l30.1-34.2v49.3c0,3.4,2.8,6.2,6.2,6.2s6.2-2.8,6.2-6.2V88c0-2.6-1.6-4.9-4-5.8
68
+ c-2.4-0.9-5.1-0.2-6.8,1.7l-40.9,46.5c-2.3,2.6-2,6.5,0.6,8.7C621.6,141.4,625.5,141.1,627.8,138.5z"/>
69
+ <path class="st2" d="M56.8,159.9c3.4,0,6.2-2.8,6.2-6.2v-49.3l30.1,34.2c2.3,2.6,6.2,2.8,8.7,0.6c2.6-2.3,2.8-6.2,0.6-8.7
70
+ L61.5,83.9c-1.7-1.9-4.4-2.6-6.8-1.7c-2.4,0.9-4,3.2-4,5.8v65.7C50.7,157.1,53.4,159.9,56.8,159.9z"/>
71
+ <path class="st2" d="M493.4,166c-2.9-0.2-5.6,1.8-6.3,4.6c-0.7,2.9,0.7,5.9,3.3,7.1c9.8,4.6,18.7,6.4,26.7,6.4
72
+ c15.3,0,27.5-6.7,36-13.7c13.6-11.2,20.6-25.3,20.9-25.9c1.4-2.9,0.4-6.4-2.4-8c-6.3-3.7-17.2-6-33.8,4.1
73
+ c-8.3,5.1-14.7,11.2-15.8,12.3C506.8,166.3,494.1,166,493.4,166z M530.3,162.1c0.1-0.1,0.2-0.2,0.3-0.3c4.7-4.7,18-15.6,28.4-16.1
74
+ c-3,4.3-7.5,10.1-13.6,15.2c-9,7.4-18.6,11-28.8,10.8C520.8,169.5,525.5,166.3,530.3,162.1z"/>
75
+ <path class="st2" d="M151.4,136.5c-2.8,1.6-3.8,5.1-2.4,8c0.3,0.6,7.3,14.7,20.9,25.9c8.5,7,20.6,13.7,36,13.7
76
+ c8.1,0,17-1.8,26.7-6.4c2.7-1.3,4-4.2,3.3-7.1c-0.7-2.9-3.3-4.8-6.3-4.7c-0.5,0-13.3,0.4-28.5-13c-1.1-1.1-7.5-7.2-15.8-12.3
77
+ C168.7,130.6,157.7,132.9,151.4,136.5z M192.8,162.1c4.7,4.2,9.4,7.3,13.7,9.6c-21.6,0.2-35.9-16.3-42.4-26
78
+ c10.4,0.5,23.7,11.4,28.4,16.1C192.6,161.9,192.7,162,192.8,162.1z"/>
79
+ <path class="st2" d="M671.8,664.6c-6.2-5.2-13-8.2-19.3-9.9c2.4-1.8,4.7-3.9,6.7-6.2c15.3-18,15.4-44.5,0.2-61.7
80
+ c-2.3-2.6-6.2-2.8-8.7-0.5c-2.6,2.3-2.8,6.2-0.5,8.7c11.1,12.6,10.9,32.1-0.4,45.5c-9.2,10.8-26.7,13.4-31.9,14
81
+ c-15.7,1.7-33.3,5.3-42.8,26.8c-1.5,3.3-2.4,7-2.6,11c-2.2-0.7-4.6-1.1-7-1.1c-12.5,0-22.7,10.2-22.7,22.7
82
+ c0,8.6,4.8,16.1,11.9,19.9c-2.1,1.9-4.1,4-5.9,6.4c-21-28.3-54.6-46.1-91.6-46.1c-5.3,0-10.6,0.4-15.7,1.1
83
+ c30.4-9.3,58.7-23.8,84.5-43l0,0c33.3-24.9,61-57.4,80-93.9c20-38.4,30.1-79.9,30.1-123.1c0-0.3,0-0.5,0-0.8c0-0.1,0-0.1,0-0.2
84
+ c0-0.1,0-0.2,0-0.3c-0.2-35.1-8-66.7-19.1-93.9c4.1,0.8,8,1.1,11.5,1.1c25.9,0,37.3-17.8,38.5-19.9h0c5.6-9.4,6.5-20.8,3.3-31.1
85
+ c0.1-0.3,0.1-0.7,0.1-1.1V176.3c0-3.4-2.8-6.2-6.2-6.2s-6.2,2.8-6.2,6.2V271c-10.5-9.1-25.7-10.1-32-10.1
86
+ c-12.2,0.1-19.8-1.8-25.4-11.4c-4.7-8.1-2-16.5,2.7-21.3c5.9-6,14.3-6.8,22.5-2.3c3,1.6,6.8,0.6,8.4-2.4c1.6-3,0.6-6.8-2.4-8.4
87
+ c-13-7.2-27.6-5.4-37.3,4.4c-9.6,9.8-11.4,24.3-4.6,36.1c8.9,15.3,22.4,17.5,35.7,17.5c0.2,0,0.3,0,0.5,0c4,0,16.9,0.6,24.3,7.6
88
+ c9.6,9.1,12.1,23.4,5.8,34c0,0-0.1,0.1-0.1,0.2c-0.5,0.9-12.4,21.1-45.6,10.5c-10-21.2-21.6-39.2-32.4-53.6l-4.9,3.7l4.9-3.8
89
+ l-2-2.6c-21.3-35.7,3.3-73.7,16.1-89.8l7.2-8.2c0,0,0,0,0,0c0,0,0,0,0,0l0,0c2.2-2.6,2-6.5-0.6-8.7c-2.5-2.1-6.1-2-8.4,0.3l0,0
90
+ c-0.2,0.2-1.3,1.3-3,3.2c-11.1,11.3-54.5,51.3-96.6,30.4l-1.2-0.8l-0.6-0.4c-37.7-20.3-74.9-32-110.4-35
91
+ c-4.6-10.5-10.7-18.5-18.4-18.5c-7.8,0-13.9,8.1-18.6,18.8c-49.7,2.2-111.5,34.3-114.1,35.6c-42.3,21.3-85.9-18.9-97-30.2
92
+ c-1.7-1.9-2.9-3-3-3.2l0,0c-2.3-2.3-5.9-2.4-8.4-0.3c-2.6,2.2-2.8,6.1-0.6,8.7l0,0c0,0,0,0,0,0c0,0,0,0,0,0l7.7,8.7
93
+ c4.5,5.6,10.2,13.7,15,23.4c12,24.3,12.2,46.4,0.7,65.8c-14.3,17.8-25.9,36.5-34.8,56.2c-33.5,10.9-45.5-9.5-46-10.4
94
+ c0-0.1-0.1-0.1-0.1-0.2c-6.3-10.6-3.8-24.9,5.8-34c7.4-7,20.3-7.6,24.3-7.6c0,0,0.1,0,0.1,0c13.4,0,27.2-2.1,36.1-17.5
95
+ c6.8-11.8,5-26.4-4.6-36.1c-9.7-9.9-24.3-11.6-37.3-4.4c-3,1.6-4.1,5.4-2.4,8.4c1.6,3,5.4,4.1,8.4,2.4c8.3-4.5,16.7-3.7,22.5,2.3
96
+ c4.7,4.8,7.3,13.2,2.7,21.3c-5.5,9.5-13,11.4-25,11.4c-0.1,0-0.2,0-0.4,0c-5.5,0-18.3,0.8-28.5,7.4v-90.3c0-3.4-2.8-6.2-6.2-6.2
97
+ s-6.2,2.8-6.2,6.2v104c-6.8,12.2-7.2,27.1-0.2,39.1c0.7,1.3,5,8.5,14.6,13.9c5.5,3.1,13.4,6,23.9,6c3.8,0,8-0.4,12.5-1.3
98
+ c-10.8,29-16.2,60.2-16.4,94.2c0,0.1,0,0.1,0,0.2c0,0,0,0.1,0,0.1c0,0.3,0,0.6,0,0.8c0,61.4,21.6,121.7,60.8,169.8
99
+ c34.7,42.6,81.9,74.2,134.2,90.3c-5.5-0.8-11.1-1.2-16.7-1.2c-36.7,0-70,17.5-91,45.4c-1.7-2.2-3.6-4.3-5.7-6.1
100
+ c6.6-4,11.1-11.2,11.1-19.5c0-12.5-10.2-22.7-22.7-22.7c-2.3,0-4.5,0.4-6.6,1c-0.3-3.9-1.2-7.6-2.6-10.9
101
+ c-9.6-21.5-27.1-25.1-42.8-26.8c-5.2-0.6-22.7-3.2-31.9-14C59.2,627,59,607.5,70.1,594.9c2.3-2.6,2-6.5-0.5-8.7
102
+ c-2.6-2.3-6.5-2-8.7,0.5c-15.1,17.2-15,43.7,0.2,61.7c2,2.4,4.3,4.4,6.7,6.2c-6.3,1.7-13.1,4.8-19.3,9.9
103
+ c-14.7,12.1-22.2,32.3-22.4,59.8c-0.5,2.5,0.6,5.1,2.8,6.5c1,0.6,2.1,0.9,3.2,0.9c0.4,0,0.9-0.1,1.3-0.2c0,0,0.1,0,0.1,0
104
+ c0.2,0,0.3-0.1,0.5-0.2c0.3-0.1,0.7-0.2,1-0.4c0.1,0,0.1-0.1,0.2-0.1c1-0.6,1.9-1.4,2.5-2.4c2.4-3.1,12.3-7,20.5-8.7
105
+ c32.1-7,38.8-28.7,37.8-39.1c-0.3-3.4-3.3-5.9-6.7-5.6c-3.4,0.3-5.9,3.3-5.6,6.7c0,0.1,0.1,1.9-0.5,4.6c-1.5,6.2-7,16.9-27.6,21.4
106
+ c-0.1,0-0.1,0-0.2,0c-2.4,0.5-9.6,2.2-16.3,5.3c1.8-17.8,7.5-30.8,17.2-38.9c14.9-12.4,34.6-8.9,34.8-8.8c0.7,0.1,1.3,0.1,1.9,0
107
+ c3.3,0.7,6.1,1.1,8.2,1.3c16.5,1.8,26.6,5.4,32.9,19.5c4.9,11.1-1.4,23.9-9.9,30.3c-4.3,3.3-15.8,9.8-28.7-0.8
108
+ c-2.6-2.2-6.5-1.8-8.7,0.8c-2.2,2.6-1.8,6.5,0.8,8.7c5.8,4.8,12.3,7.6,19,8.4c-8.6,7-14.4,15.8-17,20.4
109
+ c-8.4,14.5-15.2,22.3-26.5,22.4V733c0-3.4-2.8-6.2-6.2-6.2s-6.2,2.8-6.2,6.2v50.2c0,2.5,1.5,4.6,3.6,5.6c1.1,0.8,2.4,1.4,3.8,1.4
110
+ h144c2.2,0,4-1.1,5.2-2.8c0.8-0.8,1.5-1.8,1.8-3c5.7-22.1,25.6-37.5,48.4-37.5c20.4,0,38.5,12.4,46.2,30.9h-13.2
111
+ c-5.4-13.3-18.4-22.2-33.1-22.2c-16.1,0-30.3,10.9-34.6,26.4c-0.9,3.3,1.1,6.7,4.3,7.6c3.3,0.9,6.7-1.1,7.6-4.3
112
+ c2.8-10.2,12.1-17.3,22.6-17.3c7.8,0,14.8,3.8,19.1,9.8h-3.6c-3.4,0-6.2,2.8-6.2,6.2c0,3.4,2.8,6.2,6.2,6.2h12.5
113
+ c0.2,0,0.5,0.1,0.7,0.1c0.3,0,0.6,0,0.8-0.1h24.8c3.4,0,6.2-2.8,6.2-6.2c0-0.3,0-0.6-0.1-0.9c0.1-0.8,0.1-1.7-0.1-2.6
114
+ c-7.3-27.1-32.1-46-60.2-46c-27.2,0-51.1,17.6-59.4,43.3h-32.3c2.6-8.3,6.1-16,10.5-23.2c0.3-0.4,0.5-0.8,0.8-1.2
115
+ c18.3-28.7,50.3-47.1,85.8-47.1c21,0,41.2,6.4,58.3,18.4c0.5,0.3,1,0.6,1.5,0.7c2.6,3.1,5.2,6.4,7.7,9.8c0.6,0.8,1.1,1.6,1.7,2.4
116
+ c-0.6,12.7,6.3,26,20.6,39.6c0.5,1.5,1,2.8,1.3,3.8v1.3c0,3.4,2.8,6.2,6.2,6.2c2.9,0,5.2-1.9,5.9-4.6l0,0c0-0.1,0.9-3.1,2.7-8.1
117
+ c12.9-12.6,19.3-24.9,19.2-36.8c0.8-1.2,1.7-2.5,2.6-3.7c2.8-3.8,5.7-7.5,8.7-11c17-11.8,36.9-18,57.7-18c44.8,0,84,29.2,97,71.5
118
+ h-32.3c-8.2-25.7-32.1-43.3-59.4-43.3c-28.1,0-52.8,18.9-60.2,46c-0.3,1-0.3,2,0,3c0,0.2,0,0.3,0,0.5c0,3.4,2.8,6.2,6.2,6.2h54.2
119
+ c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2h-19.7c4.3-6,11.3-9.8,19.1-9.8c10.7,0,20,7.2,22.7,17.6c0.7,2.8,3.2,4.6,6,4.6
120
+ c0.5,0,1-0.1,1.5-0.2c3.3-0.8,5.3-4.2,4.5-7.5c-4.1-15.8-18.3-26.9-34.7-26.9c-14.6,0-27.6,8.9-33.1,22.2h-12.5
121
+ c7.6-18.5,25.8-30.9,46.2-30.9c22.8,0,42.7,15.4,48.4,37.5c0.1,0.5,0.4,1,0.6,1.5c0.8,2.5,3.1,4.3,5.9,4.3H664
122
+ c3.4,0,6.2-2.8,6.2-6.2c0-0.1,0-0.3,0-0.4c0-0.1,0-0.3,0-0.4V782c0.1-0.6,0.1-1.2,0.1-1.8c0-0.1,0-0.2-0.1-0.3V733
123
+ c0-3.4-2.8-6.2-6.2-6.2s-6.2,2.8-6.2,6.2v42c-10.4-0.8-16.9-8.5-24.9-22.3c-2.6-4.4-8-12.7-16-19.5c5.5-1.2,10.8-3.8,15.7-7.9
124
+ c2.6-2.2,3-6.1,0.8-8.7c-2.2-2.6-6.1-3-8.7-0.8c-12.8,10.6-24.3,4.1-28.7,0.8c-8.5-6.4-14.8-19.3-9.9-30.3
125
+ c6.3-14.1,16.4-17.8,32.9-19.5c2.1-0.2,4.9-0.6,8.2-1.3c0.6,0.1,1.3,0.1,2,0c0.2,0,19.7-3.6,34.7,8.8c9.8,8.1,15.6,21.1,17.3,39
126
+ c-6.8-3.2-14.1-4.9-16.4-5.4c-0.1,0-0.1,0-0.2,0c-20.5-4.5-26.1-15.1-27.6-21.3c-0.6-2.6-0.6-4.4-0.5-4.6c0.3-3.4-2.2-6.4-5.6-6.7
127
+ c-3.4-0.3-6.4,2.2-6.7,5.6c-1,10.5,5.7,32.1,37.9,39.1c8.3,1.8,18.8,5.9,20.7,9c0,0,0,0.1,0.1,0.1c0.3,0.4,0.6,0.8,0.9,1.1
128
+ c0.1,0.1,0.2,0.1,0.3,0.2c0.3,0.2,0.6,0.5,0.9,0.6c0.1,0.1,0.3,0.2,0.4,0.2c0.3,0.2,0.6,0.3,0.9,0.4c0.1,0,0.3,0.1,0.4,0.1
129
+ c0.4,0.1,0.9,0.2,1.4,0.2c0,0,0,0,0,0c0.4,0,0.7,0,1.1-0.1c0.1,0,0.2,0,0.3-0.1c0.3-0.1,0.6-0.2,1-0.3c0,0,0.1,0,0.1,0
130
+ c0.3-0.1,0.5-0.3,0.8-0.4c0,0,0.1-0.1,0.1-0.1c0.2-0.1,0.4-0.3,0.5-0.4c0.1-0.1,0.3-0.2,0.4-0.4c0.1-0.1,0.3-0.3,0.4-0.4
131
+ c0.1-0.2,0.3-0.3,0.4-0.5c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.1-0.4,0.2-0.6
132
+ c0-0.2,0.1-0.4,0.1-0.5c0-0.2,0.1-0.4,0.1-0.7c0,0,0-0.1,0-0.1C694.3,697.4,686.7,676.9,671.8,664.6z M152.9,777.7H87.8
133
+ c5.5-5.6,9.4-12.3,12.4-17.5c2.6-4.5,12.2-19.5,25.8-23.4c16-4.7,31,0.8,38.4,13.5C159.5,758.8,155.6,768,152.9,777.7z M154.6,724
134
+ c-5.7,0-10.3-4.6-10.3-10.3c0-5.7,4.6-10.3,10.3-10.3s10.3,4.6,10.3,10.3C164.9,719.4,160.2,724,154.6,724z M521.2,645.9
135
+ L521.2,645.9l0.9,1.1L521.2,645.9z M521.4,639.7c-58.4-6.8-100.6,18.3-125.8,40.5c-10.9,9.6-19.5,19.5-26,27.9
136
+ c-1.2-0.8-2.3-1.6-3.3-2.1v-17.6c47.3-47.5,94.3-61.7,125.5-65.2c20.7-2.3,37.4-0.4,47.4,1.5C533.5,630,527.6,635,521.4,639.7z
137
+ M594.7,552.5c-6,11.5-12.9,22.5-20.5,33.1c-7.9-2.5-17.8-4.8-29.7-5.9c26.5-33.6,43.3-73.7,48.7-116c8.6-1,20.5-4.7,29.6-10.6
138
+ C620.4,487.8,611,521.2,594.7,552.5z M552.6,440.9l7.2-0.3c2.4,10.7,10.5,19.3,21.1,22.2c-5.6,42.8-23.4,83.2-51.8,116.2
139
+ c-13.7,0-29.6,1.6-47.6,5.5C523.5,550.3,550.9,498.8,552.6,440.9z M435.1,598.9c-4,1.6-6.8,2.9-8.2,3.5
140
+ c-16.6,6.6-34.4,10.9-53,12.3l165.9-165.9C534.8,515.6,493.2,572.2,435.1,598.9z M623.4,434.2c-0.2,5.6-15.5,14.7-29,16.9
141
+ c-1.9,0.3-3.8,0.5-5.6,0.5c-2.4,0-4.7-0.5-6.8-1.4c-6.3-2.7-10.7-8.9-10.7-16.1c0-7.2,4.4-13.4,10.7-16.1c2.1-0.9,4.4-1.4,6.8-1.4
142
+ c1.8,0,3.7,0.2,5.6,0.5c13.5,2.2,28.7,11.3,29,16.8C623.4,434,623.4,434.1,623.4,434.2z M565.5,276l2.6,3.5v0
143
+ c22.7,30.3,49.3,77.2,54.4,135.6c-9-5.8-20.8-9.5-29.3-10.5C586.8,354,564.3,308.3,531,273c1.4-2.9,2.2-6.2,2.2-9.6
144
+ c0-4.6-1.4-8.9-3.7-12.4l28.4-32.4C552.5,239.2,555.1,258.7,565.5,276z M482.6,205.9l1.3,0.9l0.7,0.4c9.9,5,20.5,7.5,31.5,7.5
145
+ c11.6,0,23.7-2.8,35.9-8.4l-32,36.5c-2.9-1.4-6.1-2.1-9.6-2.1c-4.5,0-8.6,1.3-12.1,3.5c-31.5-23-68.8-38.3-109.4-43.3
146
+ c-1-7.3-3-17.7-6-27.9C415,176.6,448.5,187.6,482.6,205.9z M520.8,263.4c0,4.5-3,8.4-7.1,9.8c-1,0.3-2.1,0.5-3.2,0.5
147
+ c-0.3,0-0.7,0-1,0c-4.6-0.4-8.3-3.9-9.1-8.3c-0.1-0.6-0.2-1.3-0.2-1.9c0-0.7,0.1-1.3,0.2-2c0.9-4.5,4.7-8,9.4-8.3
148
+ c0.2,0,0.5,0,0.7,0c0.2,0,0.4,0,0.6,0c4.6,0.3,8.5,3.6,9.5,8c0.1,0.6,0.2,1.1,0.2,1.7C520.7,263,520.8,263.2,520.8,263.4z
149
+ M389.4,213.5c37.2,4.9,71.6,19.1,100.7,40.1c-1.5,3-2.3,6.3-2.3,9.9c0,4.5,1.3,8.6,3.6,12.2l-49.8,56.8c-2.3,2.6-2,6.5,0.6,8.7
150
+ c1.2,1,2.6,1.5,4.1,1.5c1.7,0,3.4-0.7,4.7-2.1l49.7-56.7c3,1.5,6.3,2.3,9.9,2.3c4.6,0,8.8-1.4,12.3-3.7c31,33.2,51.9,75.8,58.1,123
151
+ c-10.7,3-19,11.8-21.2,22.8l-7.1,0.3c-1.5-45.7-19.2-89.3-50.1-123.2c-2.3-2.5-6.2-2.7-8.7-0.4c-2.5,2.3-2.7,6.2-0.4,8.7
152
+ c27.2,29.8,43.4,67.6,46.5,107.6L473.5,355c-2.4-2.4-6.3-2.4-8.7,0c-2.4,2.4-2.4,6.3,0,8.7l71.4,71.4l-176,176l-176-176l70.8-70.8
153
+ c2.4-2.4,2.4-6.3,0-8.7c-2.4-2.4-6.3-2.4-8.7,0l-65.7,65.7c3.5-45.5,23.9-86.4,55-116.2l31,35.4c1.2,1.4,2.9,2.1,4.7,2.1
154
+ c1.4,0,2.9-0.5,4.1-1.5c2.6-2.3,2.8-6.2,0.6-8.7l-31.1-35.5c28-23.4,63.1-38.5,101.6-41.4l-52.8,52.3c-2.4,2.4-2.4,6.3,0,8.7
155
+ c1.2,1.2,2.8,1.8,4.4,1.8c1.6,0,3.1-0.6,4.4-1.8l58-57.4l56.3,56.3c2.4,2.4,6.3,2.4,8.7,0c2.4-2.4,2.4-6.3,0-8.7l-51.2-51.2
156
+ c31.7,2.4,61.9,13,88.2,31.1c2.8,1.9,6.7,1.2,8.6-1.6c1.9-2.8,1.2-6.7-1.6-8.6c-30.4-20.9-65.8-32.5-102.8-33.6v-4.4
157
+ C378.3,235.6,387.6,225.7,389.4,213.5z M208.7,287.8c3.5,0,6.8-0.8,9.7-2.2l8.9,10.2c-35.3,33.7-57.8,80.6-59.6,132.7l-5-0.3
158
+ c-2.4-11.7-11.5-20.9-23.2-23.3c6.1-46.3,26.5-88.1,56.5-120.9C199.7,286.4,204,287.8,208.7,287.8z M198.4,265.2
159
+ c0-0.5,0-0.9,0.1-1.4c0-0.3,0.1-0.5,0.1-0.8c0.9-4.4,4.7-7.8,9.3-8.1c0.2,0,0.4,0,0.5,0c0.1,0,0.1,0,0.2,0c4.7,0,8.7,3.2,9.9,7.6
160
+ c0.2,0.9,0.4,1.8,0.4,2.7c0,0.7-0.1,1.4-0.2,2.1c-0.9,4.4-4.7,7.8-9.3,8.1c-0.3,0-0.5,0-0.8,0c-1.3,0-2.6-0.3-3.7-0.7
161
+ C201.2,273.3,198.4,269.5,198.4,265.2z M162.6,440.6l5.1,0.3c1.7,58,29.2,109.6,71.3,143.8c-18.1-4-34-5.6-47.8-5.7
162
+ c-28.2-32.9-46.1-73.1-51.7-115.7C151,460.9,160.1,452,162.6,440.6z M180.5,448.8l165.9,165.9C258,608,187.2,537.2,180.5,448.8z
163
+ M343.2,199.8c2.7-18.7,11.9-43.7,16.7-45.7c5.5,2.1,14,28,16.6,45.6c0.5,3.5,0.8,6.7,0.8,9.3c0,1.1-0.1,2.1-0.3,3.1
164
+ c-1.5,8.1-8.6,14.3-17.2,14.3c-8.6,0-15.7-6.2-17.2-14.3c-0.2-1-0.3-2.1-0.3-3.1C342.4,206.3,342.7,203.2,343.2,199.8z M354,238.3
165
+ v4.3c-44.6,1.4-85.4,18.1-117.4,44.9l-8.8-10.1c2.3-3.5,3.7-7.8,3.7-12.3c0-3.8-1-7.4-2.6-10.5c29.3-21.5,64-36,101.7-41.1
166
+ C332.3,225.9,341.8,235.9,354,238.3z M201.3,214.7c11,0,21.6-2.5,31.6-7.5c0.6-0.3,57.7-30,103.9-34c-3,10.1-5,20.6-6,27.8
167
+ c-41.1,5.1-79,21-110.7,44.6c-3.4-2-7.2-3.1-11.4-3.1c-3.5,0-6.8,0.8-9.7,2.2l-33.6-38.3C177.7,211.9,189.7,214.7,201.3,214.7z
168
+ M151.4,276.6l0.5-0.7c10.4-17.2,13-36.8,7.8-57.4l30,34.3c-2.3,3.5-3.7,7.8-3.7,12.3c0,3.3,0.7,6.4,2,9.3
169
+ c-32.7,35.2-54.7,80.4-61,130.4c-8.9,1.4-20.7,5.2-29.6,10.9C100.9,362.9,118.6,317.2,151.4,276.6z M96.9,434
170
+ c0.2-5.8,16.3-13.8,29-16.4c2.8-0.6,5.4-0.9,7.6-0.9c1.7,0,3.2,0.2,4.8,0.7c7.3,2.1,12.7,8.8,12.7,16.8c0,8-5.4,14.7-12.7,16.8
171
+ c-1.5,0.4-3.1,0.7-4.8,0.7c-2.3,0-4.9-0.3-7.6-0.9c-12.7-2.7-28.8-10.7-29-16.5C96.9,434.1,96.9,434.1,96.9,434z M97.5,452.4
172
+ c8.9,5.8,20.8,9.6,29.6,11c5.3,42.4,22.1,82.6,48.7,116.2c-11.9,1.1-21.8,3.3-29.8,5.8C117.3,546,100.7,500.5,97.5,452.4z
173
+ M154.9,597c-0.3-0.4-0.6-0.7-0.9-1.1c30.1-8.3,63-3.9,86.1,1.6c27.9,6.7,48.3,16.4,48.5,16.5l0.1-0.2
174
+ c22.1,8.8,46.2,13.7,71.4,13.7c25.1,0,49.1-4.8,71.1-13.6l0,0c0,0,0.2-0.1,0.6-0.3c2.6-1.1,5.3-2.2,7.8-3.4
175
+ c8.5-3.5,22.8-8.7,40-12.8c23.3-5.6,56.3-10,86.4-1.6c-5.2,6.4-10.6,12.5-16.4,18.4c-8.4-2.3-29.8-6.7-58.7-3.6
176
+ c-31.4,3.4-77.6,16.8-124.8,60.4v-10.9c0-3.4-2.8-6.2-6.2-6.2s-6.2,2.8-6.2,6.2v10.3c-46.9-43.1-92.9-56.4-124.1-59.8
177
+ c-29.6-3.2-51.3,1.6-59.2,3.8C165.2,609,159.9,603.1,154.9,597z M181.2,624.8c10-2,26.9-4,48-1.6c55.5,6.2,98.1,37.9,124.8,64.5
178
+ v18.1c-0.9,0.5-1.9,1.1-3,1.9c-6.5-8.3-15-18-25.7-27.4c-25.2-22.3-67.6-47.5-126.2-40.5l0,0.1
179
+ C192.9,635.1,186.9,630.1,181.2,624.8z M336.5,722.8c-11.7-15-24.5-26.3-37.3-34.8l0.1-0.3c-0.3-0.1-0.6-0.2-0.9-0.2
180
+ c-21.3-13.9-42.7-20-59.9-22.5c-8.1-4.2-16.1-8.9-23.8-14c37.7-1.1,71.9,11.7,102.1,38.2c10.4,9.1,18.6,18.5,24.8,26.6
181
+ C339.7,717.9,338,720.2,336.5,722.8z M366.4,760.3c-1.5,1.8-3.1,3.6-4.9,5.4c-0.4,0.4-0.9,0.9-1.4,1.3c0,0-0.1,0.1-0.1,0.1
182
+ c0,0-0.1,0.1-0.1,0.1l0-0.2c-0.2-0.2-0.5-0.4-0.7-0.7c-2-1.9-3.7-3.8-5.3-5.7c-7.3-8.7-10.5-16.8-9.4-24.2c0.1-0.6,0.2-1.2,0.4-1.8
183
+ c0.8-3.2,2.3-6,4.1-8.4c1.5-2,3.2-3.7,4.9-5.2c1.5-1.3,3-2.4,4.3-3.3c0.6-0.4,1.1-0.7,1.6-1c0,0,0.1,0,0.1-0.1c0,0,0.1,0,0.1,0
184
+ c0.7,0.4,1.4,0.9,2.3,1.5c1.2,0.8,2.6,1.9,4,3.1c1.8,1.6,3.6,3.5,5.1,5.6c1.8,2.6,3.3,5.5,3.9,8.8c0,0.2,0.1,0.5,0.2,0.7
185
+ C376.6,743.6,373.5,751.6,366.4,760.3z M390.8,715.2c-0.2,0.2-0.4,0.4-0.5,0.6c-2.3,2.6-4.4,5.2-6.3,7.7c-1.5-2.6-3.2-5-5-7.1
186
+ c6.2-8.1,14.6-17.8,25.2-27.1c30-26.4,64.1-39.2,101.5-38.3c-7.8,5.1-15.8,9.9-24,14.1C438.9,671.6,409.6,693.8,390.8,715.2z
187
+ M565.3,703.4c5.7,0,10.3,4.6,10.3,10.3c0,5.7-4.6,10.3-10.3,10.3s-10.3-4.6-10.3-10.3C555,708.1,559.6,703.4,565.3,703.4z
188
+ M596.5,735.5c13.6,4,23.2,18.9,25.8,23.4c3.2,5.6,7.5,13,13.8,18.8h-69.1c-2.6-9.4-6.3-18.3-11-26.5
189
+ C563.6,737.6,580.6,730.8,596.5,735.5z"/>
190
+ <path class="st2" d="M69.6,301.1c0,10.1,8.2,18.4,18.4,18.4s18.4-8.2,18.4-18.4c0-10.1-8.2-18.4-18.4-18.4S69.6,291,69.6,301.1z
191
+ M94,301.1c0,3.3-2.7,6-6,6c-3.3,0-6-2.7-6-6c0-3.3,2.7-6,6-6C91.3,295.1,94,297.8,94,301.1z"/>
192
+ <path class="st2" d="M648.7,301.1c0-10.1-8.2-18.4-18.4-18.4c-10.1,0-18.4,8.2-18.4,18.4c0,10.1,8.2,18.4,18.4,18.4
193
+ C640.5,319.5,648.7,311.3,648.7,301.1z M624.3,301.1c0-3.3,2.7-6,6-6c3.3,0,6,2.7,6,6c0,3.3-2.7,6-6,6
194
+ C627,307.2,624.3,304.5,624.3,301.1z"/>
195
+ <path class="st2" d="M666.4,346.9c-2.3-0.9-5-0.4-6.8,1.4c-8.1,8.3-21.4,8-21.6,8c-0.1,0-0.2,0-0.2,0c-3.3,0-6,2.6-6.2,5.9
196
+ c-0.1,3.4,2.5,6.3,5.9,6.4c0.6,0,10.4,0.3,20.4-4.3v100.9c0,3.4,2.8,6.2,6.2,6.2s6.2-2.8,6.2-6.2V352.6
197
+ C670.2,350.1,668.7,347.8,666.4,346.9z"/>
198
+ <path class="st2" d="M55.7,471.4c3.4,0,6.2-2.8,6.2-6.2V364.3c10,4.6,19.8,4.3,20.4,4.3c3.4-0.1,6.1-3,5.9-6.4
199
+ c-0.1-3.4-3-6.1-6.4-5.9c-0.1,0-13.5,0.3-21.6-8c-1.8-1.8-4.4-2.3-6.8-1.4c-2.3,0.9-3.8,3.2-3.8,5.7v112.7
200
+ C49.5,468.7,52.3,471.4,55.7,471.4z"/>
201
+ <path class="st2" d="M671.3,574.3c0-3.4-2.8-6.2-6.2-6.2h-40c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h40
202
+ C668.5,580.5,671.3,577.8,671.3,574.3z"/>
203
+ <path class="st2" d="M629.8,598c3.4,0,6.2-2.8,6.2-6.2s-2.8-6.2-6.2-6.2h-15.4c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2H629.8z"/>
204
+ <path class="st2" d="M644.8,609.4c0-3.4-2.8-6.2-6.2-6.2h-38.2c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h38.2
205
+ C642,615.6,644.8,612.9,644.8,609.4z"/>
206
+ <path class="st2" d="M620.6,627.1c0-3.4-2.8-6.2-6.2-6.2h-29.9c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h29.9
207
+ C617.8,633.3,620.6,630.5,620.6,627.1z"/>
208
+ <path class="st2" d="M565.1,638.6c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h17c3.4,0,6.2-2.8,6.2-6.2s-2.8-6.2-6.2-6.2H565.1z"/>
209
+ <path class="st2" d="M665.1,532.8h-22.3c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h22.3c3.4,0,6.2-2.8,6.2-6.2
210
+ S668.5,532.8,665.1,532.8z"/>
211
+ <path class="st2" d="M665.1,550.5H634c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h31.1c3.4,0,6.2-2.8,6.2-6.2S668.5,550.5,665.1,550.5
212
+ z"/>
213
+ <path class="st2" d="M665.1,497.5h-9.9c-3.4,0-6.2,2.8-6.2,6.2c0,3.4,2.8,6.2,6.2,6.2h9.9c3.4,0,6.2-2.8,6.2-6.2
214
+ C671.3,500.3,668.5,497.5,665.1,497.5z"/>
215
+ <path class="st2" d="M665.1,515.2h-15.2c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2h15.2c3.4,0,6.2-2.8,6.2-6.2
216
+ S668.5,515.2,665.1,515.2z"/>
217
+ <circle class="st2" cx="55.5" cy="485.6" r="6.2"/>
218
+ <circle class="st2" cx="80.5" cy="627.3" r="6.2"/>
219
+ <circle class="st2" cx="120.3" cy="645" r="6.2"/>
220
+ <path class="st2" d="M54.9,580.7h40c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2h-40c-3.4,0-6.2,2.8-6.2,6.2
221
+ C48.7,578,51.5,580.7,54.9,580.7z"/>
222
+ <path class="st2" d="M105.6,585.9H90.2c-3.4,0-6.2,2.8-6.2,6.2c0,3.4,2.8,6.2,6.2,6.2h15.4c3.4,0,6.2-2.8,6.2-6.2
223
+ C111.8,588.7,109,585.9,105.6,585.9z"/>
224
+ <path class="st2" d="M119.6,603.5H81.4c-3.4,0-6.2,2.8-6.2,6.2c0,3.4,2.8,6.2,6.2,6.2h38.2c3.4,0,6.2-2.8,6.2-6.2
225
+ C125.8,606.2,123,603.5,119.6,603.5z"/>
226
+ <path class="st2" d="M135.5,621.1h-29.9c-3.4,0-6.2,2.8-6.2,6.2c0,3.4,2.8,6.2,6.2,6.2h29.9c3.4,0,6.2-2.8,6.2-6.2
227
+ C141.7,623.9,138.9,621.1,135.5,621.1z"/>
228
+ <path class="st2" d="M131.7,645c0,3.4,2.8,6.2,6.2,6.2h17c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2h-17
229
+ C134.5,638.8,131.7,641.6,131.7,645z"/>
230
+ <path class="st2" d="M54.9,545.4h22.3c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2H54.9c-3.4,0-6.2,2.8-6.2,6.2
231
+ C48.7,542.6,51.5,545.4,54.9,545.4z"/>
232
+ <path class="st2" d="M54.9,563.1H86c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2H54.9c-3.4,0-6.2,2.8-6.2,6.2
233
+ C48.7,560.3,51.5,563.1,54.9,563.1z"/>
234
+ <path class="st2" d="M54.9,510.1h9.9c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2h-9.9c-3.4,0-6.2,2.8-6.2,6.2
235
+ C48.7,507.3,51.5,510.1,54.9,510.1z"/>
236
+ <path class="st2" d="M54.9,527.7h15.2c3.4,0,6.2-2.8,6.2-6.2c0-3.4-2.8-6.2-6.2-6.2H54.9c-3.4,0-6.2,2.8-6.2,6.2
237
+ C48.7,525,51.5,527.7,54.9,527.7z"/>
238
+ <path class="st2" d="M360,767.1C360,767.1,360,767.1,360,767.1c0.1-0.1,0-0.1,0-0.2L360,767.1z"/>
239
+ <path class="st2" d="M641.2,202.7C641.3,202.7,641.3,202.7,641.2,202.7c2.8,0,5.3-1.9,6-4.7c2.2-8.8,1.3-16.3-2.9-22.5
240
+ c-6.7-10-19-11.9-20.4-12.1c-3.2-0.4-6.2,1.6-6.9,4.8c-2.3,10.5-1,18.9,4,25.1C628.4,202.3,640,202.6,641.2,202.7z M634.2,182.5
241
+ c1.2,1.9,1.9,4.1,1.9,6.7c-1.8-0.7-3.8-1.8-5.2-3.6c-1.6-2-2.4-4.6-2.4-7.9C630.5,178.7,632.7,180.3,634.2,182.5z"/>
242
+ <path class="st2" d="M601,113.3c-6.7-10-19-11.9-20.4-12.1c-3.2-0.4-6.2,1.6-6.9,4.8c-2.3,10.5-1,18.9,4,25.1
243
+ c7.2,9,18.8,9.3,20.1,9.3c0,0,0,0,0,0c2.8,0,5.3-1.9,6-4.7C606.1,127.1,605.2,119.5,601,113.3z M587.5,123.4
244
+ c-1.6-2-2.4-4.6-2.4-7.9c2.1,1,4.3,2.6,5.7,4.8c1.2,1.9,1.9,4.1,1.9,6.7C590.9,126.3,588.9,125.2,587.5,123.4z"/>
245
+ <path class="st2" d="M97.3,163.4c-1.4,0.2-13.6,2.1-20.4,12.1c-4.1,6.2-5.1,13.7-2.9,22.5c0.7,2.7,3.2,4.7,6,4.7c0,0,0,0,0,0
246
+ c1.3,0,12.9-0.3,20.1-9.3c5-6.2,6.3-14.7,4-25.1C103.5,165.1,100.5,163,97.3,163.4z M90.6,185.6c-1.4,1.8-3.4,2.9-5.3,3.6
247
+ c0-2.6,0.7-4.9,1.9-6.7c1.5-2.2,3.7-3.8,5.7-4.8C92.9,181,92.1,183.6,90.6,185.6z"/>
248
+ <path class="st2" d="M139.7,101.2c-1.4,0.2-13.6,2.1-20.4,12.1c-4.1,6.2-5.1,13.7-2.9,22.5c0.7,2.7,3.2,4.7,6,4.7c0,0,0,0,0,0
249
+ c1.3,0,12.9-0.3,20.1-9.3c5-6.2,6.3-14.7,4-25.1C145.8,102.9,142.9,100.8,139.7,101.2z M132.9,123.4c-1.4,1.8-3.4,2.9-5.3,3.6
250
+ c0-2.6,0.7-4.9,1.9-6.7c1.5-2.2,3.7-3.8,5.7-4.8C135.2,118.8,134.5,121.4,132.9,123.4z"/>
251
+ <path class="st2" d="M555.1,392c0.4,3.2,3,5.5,6.1,5.5c0.2,0,0.5,0,0.7,0c3.4-0.4,5.8-3.5,5.4-6.9c-6.2-54-43.1-92.2-44.7-93.8
252
+ c-2.4-2.4-6.3-2.5-8.7-0.1c-2.4,2.4-2.5,6.3-0.1,8.7C514.2,305.8,549.4,342.3,555.1,392z"/>
253
+ <path class="st2" d="M159.1,397.4c0.2,0,0.5,0,0.7,0c3.1,0,5.8-2.3,6.1-5.5c5.7-49.7,40.9-86.2,41.2-86.5c2.4-2.4,2.3-6.4-0.1-8.7
254
+ c-2.4-2.4-6.4-2.4-8.7,0.1c-1.6,1.6-38.4,39.8-44.7,93.8C153.3,394,155.7,397,159.1,397.4z"/>
255
+ </g>
256
+ </svg>
assets/js/addons.js CHANGED
@@ -1,382 +1,495 @@
1
- /* ==========================================================
2
- * addons.js
3
- * http://enviragallery.com/
4
- * ==========================================================
5
- * Copyright 2016 David Bisset.
6
- *
7
- * Licensed under the GPL License, Version 2.0 or later (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.gnu.org/licenses/gpl-2.0.html
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- * ========================================================== */
19
- ;(function($){
20
- $(function(){
21
-
22
- // Addons Search
23
- var addon_search_timeout;
24
- $( 'form#add-on-search input#add-on-searchbox' ).on( 'keyup', function() {
25
-
26
- // Clear timeout
27
- clearTimeout( addon_search_timeout );
28
-
29
- // Get the search input, heading, results and cancel elements
30
- var search = $( this ),
31
- search_terms = $( search ).val().toLowerCase(),
32
- search_heading = $( search ).data( 'heading' ),
33
- search_results = $( search ).data( 'results' ),
34
- search_cancel = $( search ).data( 'cancel' );
35
-
36
- // Show the Spinner
37
- $( 'form#add-on-search .spinner' ).css( 'visibility', 'visible' );
38
-
39
- // If the search terms is less than 3 characters, show all Addons
40
- if ( search_terms.length < 3 ) {
41
- $( 'div.envira-addon' ).fadeIn( 'fast', function() {
42
- // Hide the Spinner
43
- $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' );
44
- } );
45
- return;
46
- }
47
-
48
- // Iterate through the Addons, showing or hiding them depending on whether they
49
- // match the given search terms.
50
- $( 'div.envira-addon' ).each( function() {
51
- if ( $( 'h3.envira-addon-title', $( this ) ).text().toLowerCase().search( search_terms ) >= 0 ) {
52
- // This Addon's title does match the search terms
53
- // Show
54
- $( this ).fadeIn();
55
- } else {
56
- // This Addon's title does not match the search terms
57
- // Hide
58
- $( this ).fadeOut();
59
- }
60
- } );
61
-
62
- // Hide the Spinner
63
- $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' );
64
-
65
- } );
66
-
67
- // Addons Sorting
68
- var envira_addons_licensed_sorting = new List( 'envira-addons-licensed', {
69
- valueNames: [ 'envira-addon-title' ]
70
- } );
71
- var envira_addons_unlicensed_sorting = new List( 'envira-addons-unlicensed', {
72
- valueNames: [ 'envira-addon-title' ]
73
- } );
74
- $( 'select#envira-filter-select' ).on( 'change', function() {
75
- if ( typeof envira_addons_licensed_sorting.sort !== 'undefined' ) {
76
- envira_addons_licensed_sorting.sort( 'envira-addon-title', {
77
- order: $( this ).val(),
78
- } );
79
- }
80
- if ( typeof envira_addons_unlicensed_sorting.sort !== 'undefined' ) {
81
- envira_addons_unlicensed_sorting.sort( 'envira-addon-title', {
82
- order: $( this ).val(),
83
- } );
84
- }
85
- } );
86
-
87
- // Re-enable install button if user clicks on it, needs creds but tries to install another addon instead.
88
- $('#envira-addons').on('click.refreshInstallAddon', '.envira-addon-action-button', function(e) {
89
- var el = $(this);
90
- var buttons = $('#envira-addons').find('.envira-addon-action-button');
91
- $.each(buttons, function(i, element) {
92
- if ( el == element )
93
- return true;
94
-
95
- enviraAddonRefresh(element);
96
- });
97
- });
98
-
99
- // Activate Addon
100
- $('#envira-addons').on('click.activateAddon', '.envira-activate-addon', function(e) {
101
- e.preventDefault();
102
- var $this = $(this);
103
-
104
- // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
105
- $('.envira-addon-error').remove();
106
- $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activating);
107
- $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
108
- var button = $(this);
109
- var plugin = $(this).attr('rel');
110
- var el = $(this).parent().parent();
111
- var message = $(this).parent().parent().find('.addon-status');
112
-
113
- // Process the Ajax to perform the activation.
114
- var opts = {
115
- url: ajaxurl,
116
- type: 'post',
117
- async: true,
118
- cache: false,
119
- dataType: 'json',
120
- data: {
121
- action: 'envira_gallery_activate_addon',
122
- nonce: envira_gallery_addons.activate_nonce,
123
- plugin: plugin
124
- },
125
- success: function(response) {
126
- // If there is a WP Error instance, output it here and quit the script.
127
- if ( response && true !== response ) {
128
- $(el).slideDown('normal', function() {
129
- $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
130
- $this.next().hide();
131
- $('.envira-addon-error').delay(3000).slideUp();
132
- });
133
- return;
134
- }
135
-
136
- // The Ajax request was successful, so let's update the output.
137
- $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivate).removeClass('envira-activate-addon').addClass('envira-deactivate-addon');
138
- $(message).text(envira_gallery_addons.active);
139
- // Trick here to wrap a span around he last word of the status
140
- var heading = $(message), word_array, last_word, first_part;
141
-
142
- word_array = heading.html().split(/\s+/); // split on spaces
143
- last_word = word_array.pop(); // pop the last word
144
- first_part = word_array.join(' '); // rejoin the first words together
145
-
146
- heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
147
- // Proceed with CSS changes
148
- $(el).removeClass('envira-addon-inactive').addClass('envira-addon-active');
149
- $this.next().hide();
150
- },
151
- error: function(xhr, textStatus ,e) {
152
- $this.next().hide();
153
- return;
154
- }
155
- }
156
- $.ajax(opts);
157
- });
158
-
159
- // Deactivate Addon
160
- $('#envira-addons').on('click.deactivateAddon', '.envira-deactivate-addon', function(e) {
161
- e.preventDefault();
162
- var $this = $(this);
163
-
164
- // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
165
- $('.envira-addon-error').remove();
166
- $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivating);
167
- $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
168
- var button = $(this);
169
- var plugin = $(this).attr('rel');
170
- var el = $(this).parent().parent();
171
- var message = $(this).parent().parent().find('.addon-status');
172
-
173
- // Process the Ajax to perform the activation.
174
- var opts = {
175
- url: ajaxurl,
176
- type: 'post',
177
- async: true,
178
- cache: false,
179
- dataType: 'json',
180
- data: {
181
- action: 'envira_gallery_deactivate_addon',
182
- nonce: envira_gallery_addons.deactivate_nonce,
183
- plugin: plugin
184
- },
185
- success: function(response) {
186
- // If there is a WP Error instance, output it here and quit the script.
187
- if ( response && true !== response ) {
188
- $(el).slideDown('normal', function() {
189
- $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
190
- $this.next().hide();
191
- $('.envira-addon-error').delay(3000).slideUp();
192
- });
193
- return;
194
- }
195
-
196
- // The Ajax request was successful, so let's update the output.
197
- $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-deactivate-addon').addClass('envira-activate-addon');
198
- $(message).text(envira_gallery_addons.inactive);
199
- // Trick here to wrap a span around he last word of the status
200
- var heading = $(message), word_array, last_word, first_part;
201
-
202
- word_array = heading.html().split(/\s+/); // split on spaces
203
- last_word = word_array.pop(); // pop the last word
204
- first_part = word_array.join(' '); // rejoin the first words together
205
-
206
- heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
207
- // Proceed with CSS changes
208
- $(el).removeClass('envira-addon-active').addClass('envira-addon-inactive');
209
- $this.next().hide();
210
- },
211
- error: function(xhr, textStatus ,e) {
212
- $this.next().hide();
213
- return;
214
- }
215
- }
216
- $.ajax(opts);
217
- });
218
-
219
- // Install Addon
220
- $('#envira-addons').on('click.installAddon', '.envira-install-addon', function(e) {
221
- e.preventDefault();
222
- var $this = $(this);
223
-
224
- // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
225
- $('.envira-addon-error').remove();
226
- $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing);
227
- $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
228
- var button = $(this);
229
- var plugin = $(this).attr('rel');
230
- var el = $(this).parent().parent();
231
- var message = $(this).parent().parent().find('.addon-status');
232
-
233
- // Process the Ajax to perform the activation.
234
- var opts = {
235
- url: ajaxurl,
236
- type: 'post',
237
- async: true,
238
- cache: false,
239
- dataType: 'json',
240
- data: {
241
- action: 'envira_gallery_install_addon',
242
- nonce: envira_gallery_addons.install_nonce,
243
- plugin: plugin
244
- },
245
- success: function(response) {
246
- // If there is a WP Error instance, output it here and quit the script.
247
- if ( response.error ) {
248
- $(el).slideDown('normal', function() {
249
- $(button).parent().parent().after('<div class="envira-addon-error"><div class="xinterior"><p><strong>' + response.error + '</strong></p></div></div>');
250
- $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install);
251
- $this.next().hide();
252
- $('.envira-addon-error').delay(4000).slideUp();
253
- });
254
- return;
255
- }
256
-
257
- // If we need more credentials, output the form sent back to us.
258
- if ( response.form ) {
259
- // Display the form to gather the users credentials.
260
- $(el).slideDown('normal', function() {
261
- $(this).after('<div class="envira-addon-error">' + response.form + '</div>');
262
- $this.next().hide();
263
- });
264
-
265
- // Add a disabled attribute the install button if the creds are needed.
266
- $(button).attr('disabled', true);
267
-
268
- $('#envira-addons').on('click.installCredsAddon', '#upgrade', function(e) {
269
- // Prevent the default action, let the user know we are attempting to install again and go with it.
270
- e.preventDefault();
271
- $this.next().hide();
272
- $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing);
273
- $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
274
-
275
- // Now let's make another Ajax request once the user has submitted their credentials.
276
- var hostname = $(this).parent().parent().find('#hostname').val();
277
- var username = $(this).parent().parent().find('#username').val();
278
- var password = $(this).parent().parent().find('#password').val();
279
- var proceed = $(this);
280
- var connect = $(this).parent().parent().parent().parent();
281
- var cred_opts = {
282
- url: ajaxurl,
283
- type: 'post',
284
- async: true,
285
- cache: false,
286
- dataType: 'json',
287
- data: {
288
- action: 'envira_gallery_install_addon',
289
- nonce: envira_gallery_addons.install_nonce,
290
- plugin: plugin,
291
- hostname: hostname,
292
- username: username,
293
- password: password
294
- },
295
- success: function(response) {
296
- // If there is a WP Error instance, output it here and quit the script.
297
- if ( response.error ) {
298
- $(el).slideDown('normal', function() {
299
- $(button).parent().parent().after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
300
- $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install);
301
- $this.next().hide();
302
- $('.envira-addon-error').delay(4000).slideUp();
303
- });
304
- return;
305
- }
306
-
307
- if ( response.form ) {
308
- $this.next().hide();
309
- $('.envira-inline-error').remove();
310
- $(proceed).val(envira_gallery_addons.proceed);
311
- $(proceed).after('<span class="envira-inline-error">' + envira_gallery_addons.connect_error + '</span>');
312
- return;
313
- }
314
-
315
- // The Ajax request was successful, so let's update the output.
316
- $(connect).remove();
317
- $(button).show();
318
- $(button).text(envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon');
319
- $(button).attr('rel', response.plugin);
320
- $(button).removeAttr('disabled');
321
- $(message).text(envira_gallery_addons.inactive);
322
- // Trick here to wrap a span around he last word of the status
323
- var heading = $(message), word_array, last_word, first_part;
324
-
325
- word_array = heading.html().split(/\s+/); // split on spaces
326
- last_word = word_array.pop(); // pop the last word
327
- first_part = word_array.join(' '); // rejoin the first words together
328
-
329
- heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
330
- // Proceed with CSS changes
331
- $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive');
332
- $this.next().hide();
333
- },
334
- error: function(xhr, textStatus ,e) {
335
- $this.next().hide();
336
- return;
337
- }
338
- }
339
- $.ajax(cred_opts);
340
- });
341
-
342
- // No need to move further if we need to enter our creds.
343
- return;
344
- }
345
-
346
- // The Ajax request was successful, so let's update the output.
347
- $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon');
348
- $(button).attr('rel', response.plugin);
349
- $(message).text(envira_gallery_addons.inactive);
350
- // Trick here to wrap a span around he last word of the status
351
- var heading = $(message), word_array, last_word, first_part;
352
-
353
- word_array = heading.html().split(/\s+/); // split on spaces
354
- last_word = word_array.pop(); // pop the last word
355
- first_part = word_array.join(' '); // rejoin the first words together
356
-
357
- heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
358
- // Proceed with CSS changes
359
- $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive');
360
- $this.next().hide();
361
- },
362
- error: function(xhr, textStatus ,e) {
363
- $this.next().hide();
364
- return;
365
- }
366
- }
367
- $.ajax(opts);
368
- });
369
-
370
- // Function to clear any disabled buttons and extra text if the user needs to add creds but instead tries to install a different addon.
371
- function enviraAddonRefresh(element) {
372
- if ( $(element).attr('disabled') )
373
- $(element).removeAttr('disabled');
374
-
375
- if ( $(element).parent().parent().hasClass('envira-addon-not-installed') )
376
- $(element).text(envira_gallery_addons.install);
377
- }
378
-
379
-
380
-
381
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  }(jQuery));
1
+ /* ==========================================================
2
+ * addons.js
3
+ * http://enviragallery.com/
4
+ * ==========================================================
5
+ * Copyright 2016 David Bisset.
6
+ *
7
+ * Licensed under the GPL License, Version 2.0 or later (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.gnu.org/licenses/gpl-2.0.html
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+ ;(function($){
20
+ $(function(){
21
+
22
+ // Addons Search
23
+ var addon_search_timeout;
24
+ $( 'form#add-on-search input#add-on-searchbox' ).on( 'keyup', function() {
25
+
26
+ // Clear timeout
27
+ clearTimeout( addon_search_timeout );
28
+
29
+ // Get the search input, heading, results and cancel elements
30
+ var search = $( this ),
31
+ search_terms = $( search ).val().toLowerCase(),
32
+ search_heading = $( search ).data( 'heading' ),
33
+ search_results = $( search ).data( 'results' ),
34
+ search_cancel = $( search ).data( 'cancel' );
35
+
36
+ // Show the Spinner
37
+ $( 'form#add-on-search .spinner' ).css( 'visibility', 'visible' );
38
+
39
+ // If the search terms is less than 3 characters, show all Addons
40
+ if ( search_terms.length < 3 ) {
41
+ $( 'div.envira-addon' ).fadeIn( 'fast', function() {
42
+ // Hide the Spinner
43
+ $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' );
44
+ } );
45
+ return;
46
+ }
47
+
48
+ // Iterate through the Addons, showing or hiding them depending on whether they
49
+ // match the given search terms.
50
+ $( 'div.envira-addon' ).each( function() {
51
+ if ( $( 'h3.envira-addon-title', $( this ) ).text().toLowerCase().search( search_terms ) >= 0 ) {
52
+ // This Addon's title does match the search terms
53
+ // Show
54
+ $( this ).fadeIn();
55
+ } else {
56
+ // This Addon's title does not match the search terms
57
+ // Hide
58
+ $( this ).fadeOut();
59
+ }
60
+ } );
61
+
62
+ // Hide the Spinner
63
+ $( 'form#add-on-search .spinner' ).css( 'visibility', 'hidden' );
64
+
65
+ } );
66
+
67
+ //Sort Filter for addons
68
+ $('#envira-filter-select').on('change', function () {
69
+
70
+ var $select = $(this),
71
+ $value = $select.val(),
72
+ $container = $('#envira-addons-unlicensed'),
73
+ container_data = $container.data('envira-filter'),
74
+ $addon = $('#envira-addons-unlicensed .envira-addon');
75
+
76
+ //Make sure the addons are visible.
77
+ $addon.show();
78
+
79
+ switch ($value) {
80
+
81
+ case 'asc':
82
+
83
+ $addon.sort(function (a, b) {
84
+
85
+ return $(a).data('addon-title').localeCompare($(b).data('addon-title'));
86
+
87
+ }).each(function (_, addon) {
88
+
89
+ $(addon).removeClass('last');
90
+
91
+ $container.append(addon).hide().fadeIn(100);
92
+
93
+ });
94
+
95
+ $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last');
96
+
97
+ break;
98
+ case 'desc':
99
+
100
+ $addon.sort(function (a, b) {
101
+
102
+ return $(b).data('addon-title').localeCompare($(a).data('addon-title'));
103
+
104
+ }).each(function (_, addon) {
105
+
106
+ $(addon).removeClass('last');
107
+ $container.append(addon).hide().fadeIn(100);
108
+
109
+ });
110
+
111
+ $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last');
112
+
113
+ break;
114
+ case 'sort-order':
115
+
116
+ $addon.sort(function (a, b) {
117
+
118
+ return $(b).data('sort-order') - $(a).data('sort-order');
119
+
120
+ }).each(function (_, addon) {
121
+
122
+ $(addon).removeClass('last');
123
+ $container.append(addon).hide().fadeIn(100);
124
+
125
+ });
126
+
127
+ $("#envira-addons-unlicensed .envira-addon:nth-child(3n)").addClass('last');
128
+
129
+ break;
130
+ }
131
+
132
+ });
133
+
134
+ $('#envira-filter-select').on('change', function () {
135
+
136
+ var $select = $(this),
137
+ $value = $select.val(),
138
+ $container = $('#envira-addons-licensed'),
139
+ container_data = $container.data('envira-filter'),
140
+ $addon = $('#envira-addons-licensed .envira-addon');
141
+
142
+ //Make sure the addons are visible.
143
+ $addon.show();
144
+
145
+ switch ($value) {
146
+
147
+ case 'asc':
148
+
149
+ $addon.sort(function (a, b) {
150
+
151
+ return $(a).data('addon-title').localeCompare($(b).data('addon-title'));
152
+
153
+ }).each(function (_, addon) {
154
+
155
+ $(addon).removeClass('last');
156
+
157
+ $container.append(addon).hide().fadeIn(100);
158
+
159
+ });
160
+
161
+ $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last');
162
+
163
+ break;
164
+ case 'desc':
165
+
166
+ $addon.sort(function (a, b) {
167
+
168
+ return $(b).data('addon-title').localeCompare($(a).data('addon-title'));
169
+
170
+ }).each(function (_, addon) {
171
+
172
+ $(addon).removeClass('last');
173
+ $container.append(addon).hide().fadeIn(100);
174
+
175
+ });
176
+
177
+ $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last');
178
+
179
+ break;
180
+ case 'sort-order':
181
+
182
+ $addon.sort(function (a, b) {
183
+
184
+ return $(b).data('sort-order') - $(a).data('sort-order');
185
+
186
+ }).each(function (_, addon) {
187
+
188
+ $(addon).removeClass('last');
189
+ $container.append(addon).hide().fadeIn(100);
190
+
191
+ });
192
+
193
+ $("#envira-addons-licensed .envira-addon:nth-child(3n)").addClass('last');
194
+
195
+ break;
196
+ }
197
+
198
+ });
199
+
200
+ // Re-enable install button if user clicks on it, needs creds but tries to install another addon instead.
201
+ $('#envira-addons').on('click.refreshInstallAddon', '.envira-addon-action-button', function(e) {
202
+ var el = $(this);
203
+ var buttons = $('#envira-addons').find('.envira-addon-action-button');
204
+ $.each(buttons, function(i, element) {
205
+ if ( el == element )
206
+ return true;
207
+
208
+ enviraAddonRefresh(element);
209
+ });
210
+ });
211
+
212
+ // Activate Addon
213
+ $('#envira-addons').on('click.activateAddon', '.envira-activate-addon', function(e) {
214
+ e.preventDefault();
215
+ var $this = $(this);
216
+
217
+ // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
218
+ $('.envira-addon-error').remove();
219
+ $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activating);
220
+ $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
221
+ var button = $(this);
222
+ var plugin = $(this).attr('rel');
223
+ var el = $(this).parent().parent();
224
+ var message = $(this).parent().parent().find('.addon-status');
225
+
226
+ // Process the Ajax to perform the activation.
227
+ var opts = {
228
+ url: ajaxurl,
229
+ type: 'post',
230
+ async: true,
231
+ cache: false,
232
+ dataType: 'json',
233
+ data: {
234
+ action: 'envira_gallery_activate_addon',
235
+ nonce: envira_gallery_addons.activate_nonce,
236
+ plugin: plugin
237
+ },
238
+ success: function(response) {
239
+ // If there is a WP Error instance, output it here and quit the script.
240
+ if ( response && true !== response ) {
241
+ $(el).slideDown('normal', function() {
242
+ $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
243
+ $this.next().hide();
244
+ $('.envira-addon-error').delay(3000).slideUp();
245
+ });
246
+ return;
247
+ }
248
+
249
+ // The Ajax request was successful, so let's update the output.
250
+ $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivate).removeClass('envira-activate-addon').addClass('envira-deactivate-addon');
251
+ $(message).text(envira_gallery_addons.active);
252
+ // Trick here to wrap a span around he last word of the status
253
+ var heading = $(message), word_array, last_word, first_part;
254
+
255
+ word_array = heading.html().split(/\s+/); // split on spaces
256
+ last_word = word_array.pop(); // pop the last word
257
+ first_part = word_array.join(' '); // rejoin the first words together
258
+
259
+ heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
260
+ // Proceed with CSS changes
261
+ $(el).removeClass('envira-addon-inactive').addClass('envira-addon-active');
262
+ $this.next().hide();
263
+ },
264
+ error: function(xhr, textStatus ,e) {
265
+ $this.next().hide();
266
+ return;
267
+ }
268
+ }
269
+ $.ajax(opts);
270
+ });
271
+
272
+ // Deactivate Addon
273
+ $('#envira-addons').on('click.deactivateAddon', '.envira-deactivate-addon', function(e) {
274
+ e.preventDefault();
275
+ var $this = $(this);
276
+
277
+ // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
278
+ $('.envira-addon-error').remove();
279
+ $(this).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.deactivating);
280
+ $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
281
+ var button = $(this);
282
+ var plugin = $(this).attr('rel');
283
+ var el = $(this).parent().parent();
284
+ var message = $(this).parent().parent().find('.addon-status');
285
+
286
+ // Process the Ajax to perform the activation.
287
+ var opts = {
288
+ url: ajaxurl,
289
+ type: 'post',
290
+ async: true,
291
+ cache: false,
292
+ dataType: 'json',
293
+ data: {
294
+ action: 'envira_gallery_deactivate_addon',
295
+ nonce: envira_gallery_addons.deactivate_nonce,
296
+ plugin: plugin
297
+ },
298
+ success: function(response) {
299
+ // If there is a WP Error instance, output it here and quit the script.
300
+ if ( response && true !== response ) {
301
+ $(el).slideDown('normal', function() {
302
+ $(this).after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
303
+ $this.next().hide();
304
+ $('.envira-addon-error').delay(3000).slideUp();
305
+ });
306
+ return;
307
+ }
308
+
309
+ // The Ajax request was successful, so let's update the output.
310
+ $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-deactivate-addon').addClass('envira-activate-addon');
311
+ $(message).text(envira_gallery_addons.inactive);
312
+ // Trick here to wrap a span around he last word of the status
313
+ var heading = $(message), word_array, last_word, first_part;
314
+
315
+ word_array = heading.html().split(/\s+/); // split on spaces
316
+ last_word = word_array.pop(); // pop the last word
317
+ first_part = word_array.join(' '); // rejoin the first words together
318
+
319
+ heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
320
+ // Proceed with CSS changes
321
+ $(el).removeClass('envira-addon-active').addClass('envira-addon-inactive');
322
+ $this.next().hide();
323
+ },
324
+ error: function(xhr, textStatus ,e) {
325
+ $this.next().hide();
326
+ return;
327
+ }
328
+ }
329
+ $.ajax(opts);
330
+ });
331
+
332
+ // Install Addon
333
+ $('#envira-addons').on('click.installAddon', '.envira-install-addon', function(e) {
334
+ e.preventDefault();
335
+ var $this = $(this);
336
+
337
+ // Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
338
+ $('.envira-addon-error').remove();
339
+ $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing);
340
+ $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
341
+ var button = $(this);
342
+ var plugin = $(this).attr('rel');
343
+ var el = $(this).parent().parent();
344
+ var message = $(this).parent().parent().find('.addon-status');
345
+
346
+ // Process the Ajax to perform the activation.
347
+ var opts = {
348
+ url: ajaxurl,
349
+ type: 'post',
350
+ async: true,
351
+ cache: false,
352
+ dataType: 'json',
353
+ data: {
354
+ action: 'envira_gallery_install_addon',
355
+ nonce: envira_gallery_addons.install_nonce,
356
+ plugin: plugin
357
+ },
358
+ success: function(response) {
359
+ // If there is a WP Error instance, output it here and quit the script.
360
+ if ( response.error ) {
361
+ $(el).slideDown('normal', function() {
362
+ $(button).parent().parent().after('<div class="envira-addon-error"><div class="xinterior"><p><strong>' + response.error + '</strong></p></div></div>');
363
+ $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install);
364
+ $this.next().hide();
365
+ $('.envira-addon-error').delay(4000).slideUp();
366
+ });
367
+ return;
368
+ }
369
+
370
+ // If we need more credentials, output the form sent back to us.
371
+ if ( response.form ) {
372
+ // Display the form to gather the users credentials.
373
+ $(el).slideDown('normal', function() {
374
+ $(this).after('<div class="envira-addon-error">' + response.form + '</div>');
375
+ $this.next().hide();
376
+ });
377
+
378
+ // Add a disabled attribute the install button if the creds are needed.
379
+ $(button).attr('disabled', true);
380
+
381
+ $('#envira-addons').on('click.installCredsAddon', '#upgrade', function(e) {
382
+ // Prevent the default action, let the user know we are attempting to install again and go with it.
383
+ e.preventDefault();
384
+ $this.next().hide();
385
+ $(this).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.installing);
386
+ $(this).next().css({'display' : 'inline-block', 'margin-top' : '0px'});
387
+
388
+ // Now let's make another Ajax request once the user has submitted their credentials.
389
+ var hostname = $(this).parent().parent().find('#hostname').val();
390
+ var username = $(this).parent().parent().find('#username').val();
391
+ var password = $(this).parent().parent().find('#password').val();
392
+ var proceed = $(this);
393
+ var connect = $(this).parent().parent().parent().parent();
394
+ var cred_opts = {
395
+ url: ajaxurl,
396
+ type: 'post',
397
+ async: true,
398
+ cache: false,
399
+ dataType: 'json',
400
+ data: {
401
+ action: 'envira_gallery_install_addon',
402
+ nonce: envira_gallery_addons.install_nonce,
403
+ plugin: plugin,
404
+ hostname: hostname,
405
+ username: username,
406
+ password: password
407
+ },
408
+ success: function(response) {
409
+ // If there is a WP Error instance, output it here and quit the script.
410
+ if ( response.error ) {
411
+ $(el).slideDown('normal', function() {
412
+ $(button).parent().parent().after('<div class="envira-addon-error"><strong>' + response.error + '</strong></div>');
413
+ $(button).html('<i class="envira-cloud-download"></i> ' + envira_gallery_addons.install);
414
+ $this.next().hide();
415
+ $('.envira-addon-error').delay(4000).slideUp();
416
+ });
417
+ return;
418
+ }
419
+
420
+ if ( response.form ) {
421
+ $this.next().hide();
422
+ $('.envira-inline-error').remove();
423
+ $(proceed).val(envira_gallery_addons.proceed);
424
+ $(proceed).after('<span class="envira-inline-error">' + envira_gallery_addons.connect_error + '</span>');
425
+ return;
426
+ }
427
+
428
+ // The Ajax request was successful, so let's update the output.
429
+ $(connect).remove();
430
+ $(button).show();
431
+ $(button).text(envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon');
432
+ $(button).attr('rel', response.plugin);
433
+ $(button).removeAttr('disabled');
434
+ $(message).text(envira_gallery_addons.inactive);
435
+ // Trick here to wrap a span around he last word of the status
436
+ var heading = $(message), word_array, last_word, first_part;
437
+
438
+ word_array = heading.html().split(/\s+/); // split on spaces
439
+ last_word = word_array.pop(); // pop the last word
440
+ first_part = word_array.join(' '); // rejoin the first words together
441
+
442
+ heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
443
+ // Proceed with CSS changes
444
+ $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive');
445
+ $this.next().hide();
446
+ },
447
+ error: function(xhr, textStatus ,e) {
448
+ $this.next().hide();
449
+ return;
450
+ }
451
+ }
452
+ $.ajax(cred_opts);
453
+ });
454
+
455
+ // No need to move further if we need to enter our creds.
456
+ return;
457
+ }
458
+
459
+ // The Ajax request was successful, so let's update the output.
460
+ $(button).html('<i class="envira-toggle-on"></i> ' + envira_gallery_addons.activate).removeClass('envira-install-addon').addClass('envira-activate-addon');
461
+ $(button).attr('rel', response.plugin);
462
+ $(message).text(envira_gallery_addons.inactive);
463
+ // Trick here to wrap a span around he last word of the status
464
+ var heading = $(message), word_array, last_word, first_part;
465
+
466
+ word_array = heading.html().split(/\s+/); // split on spaces
467
+ last_word = word_array.pop(); // pop the last word
468
+ first_part = word_array.join(' '); // rejoin the first words together
469
+
470
+ heading.html([first_part, ' <span>', last_word, '</span>'].join(''));
471
+ // Proceed with CSS changes
472
+ $(el).removeClass('envira-addon-not-installed').addClass('envira-addon-inactive');
473
+ $this.next().hide();
474
+ },
475
+ error: function(xhr, textStatus ,e) {
476
+ $this.next().hide();
477
+ return;
478
+ }
479
+ }
480
+ $.ajax(opts);
481
+ });
482
+
483
+ // Function to clear any disabled buttons and extra text if the user needs to add creds but instead tries to install a different addon.
484
+ function enviraAddonRefresh(element) {
485
+ if ( $(element).attr('disabled') )
486
+ $(element).removeAttr('disabled');
487
+
488
+ if ( $(element).parent().parent().hasClass('envira-addon-not-installed') )
489
+ $(element).text(envira_gallery_addons.install);
490
+ }
491
+
492
+
493
+
494
+ });
495
  }(jQuery));
assets/js/admin.js CHANGED
@@ -1,50 +1,50 @@
1
- /**
2
- * Handles:
3
- * - Copy to Clipboard functionality
4
- * - Dismissable Notices
5
- *
6
- * @since 1.5.0
7
- */
8
- jQuery( document ).ready( function( $ ) {
9
-
10
- $("#screen-meta-links").prependTo("#envira-header-temp");
11
- $("#screen-meta").prependTo("#envira-header-temp");
12
-
13
- /**
14
- * Copy to Clipboard
15
- */
16
- if ( typeof Clipboard !== 'undefined' ) {
17
- var envira_clipboard = new Clipboard( '.envira-clipboard' );
18
- $( document ).on( 'click', '.envira-clipboard', function( e ) {
19
- e.preventDefault();
20
- } );
21
- }
22
-
23
- /**
24
- * Dismissable Notices
25
- * - Sends an AJAX request to mark the notice as dismissed
26
- */
27
- $( 'div.envira-notice' ).on( 'click', '.notice-dismiss', function( e ) {
28
-
29
- e.preventDefault();
30
-
31
- $( this ).closest( 'div.envira-notice' ).fadeOut();
32
-
33
- // If this is a dismissible notice, it means we need to send an AJAX request
34
- if ( $( this ).hasClass( 'is-dismissible' ) ) {
35
- $.post(
36
- envira_gallery_admin.ajax,
37
- {
38
- action: 'envira_gallery_ajax_dismiss_notice',
39
- nonce: envira_gallery_admin.dismiss_notice_nonce,
40
- notice: $( this ).parent().data( 'notice' )
41
- },
42
- function( response ) {
43
- },
44
- 'json'
45
- );
46
- }
47
-
48
- } );
49
-
50
  });
1
+ /**
2
+ * Handles:
3
+ * - Copy to Clipboard functionality
4
+ * - Dismissable Notices
5
+ *
6
+ * @since 1.5.0
7
+ */
8
+ jQuery( document ).ready( function( $ ) {
9
+
10
+ $("#screen-meta-links").prependTo("#envira-header-temp");
11
+ $("#screen-meta").prependTo("#envira-header-temp");
12
+
13
+ /**
14
+ * Copy to Clipboard
15
+ */
16
+ if ( typeof Clipboard !== 'undefined' ) {
17
+ $( document ).on( 'click', '.envira-clipboard', function( e ) {
18
+ var envira_clipboard = new Clipboard('.envira-clipboard');
19
+ e.preventDefault();
20
+ } );
21
+ }
22
+
23
+ /**
24
+ * Dismissable Notices
25
+ * - Sends an AJAX request to mark the notice as dismissed
26
+ */
27
+ $( 'div.envira-notice' ).on( 'click', '.notice-dismiss', function( e ) {
28
+
29
+ e.preventDefault();
30
+
31
+ $( this ).closest( 'div.envira-notice' ).fadeOut();
32
+
33
+ // If this is a dismissible notice, it means we need to send an AJAX request
34
+ if ( $( this ).hasClass( 'is-dismissible' ) ) {
35
+ $.post(
36
+ envira_gallery_admin.ajax,
37
+ {
38
+ action: 'envira_gallery_ajax_dismiss_notice',
39
+ nonce: envira_gallery_admin.dismiss_notice_nonce,
40
+ notice: $( this ).parent().data( 'notice' )
41
+ },
42
+ function( response ) {
43
+ },
44
+ 'json'
45
+ );
46
+ }
47
+
48
+ } );
49
+
50
  });
assets/js/conditional-fields.js CHANGED
@@ -1,330 +1,338 @@
1
- // @codekit-prepend "conditional-fields-legacy.js";
2
- // @codekit-prepend "conditions.js";
3
- /**
4
- * Handles showing and hiding fields conditionally
5
- */
6
- jQuery( document ).ready( function( $ ) {
7
-
8
- // Show/hide elements as necessary when a conditional field is changed
9
- $( '#envira-gallery-settings input:not([type=hidden]), #envira-gallery-settings select' ).conditions(
10
- [
11
-
12
- { // Main Theme Elements
13
- conditions: {
14
- element: '[name="_envira_gallery[lightbox_theme]"]',
15
- type: 'value',
16
- operator: 'array',
17
- condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
18
- },
19
- actions: {
20
- if: [
21
- {
22
- element: '#envira-config-lightbox-title-display-box, #envira-config-lightbox-arrows-box, #envira-config-lightbox-toolbar-box, #envira-config-supersize-box',
23
- action: 'show'
24
- }
25
- ]
26
- }
27
- },
28
- {
29
- conditions: {
30
- element: '[name="_envira_gallery[lightbox_theme]"]',
31
- type: 'value',
32
- operator: 'array',
33
- condition: [ 'base_dark' ]
34
- },
35
- actions: {
36
- if: [
37
- {
38
- element: '#envira-config-lightbox-title-display-box, #envira-config-lightbox-arrows-box, #envira-config-lightbox-toolbar-box, #envira-config-supersize-box',
39
- action: 'hide'
40
- }
41
- ]
42
- }
43
- },
44
- { // Gallery arrows Dependant on Theme
45
- conditions: [
46
- {
47
- element: '[name="_envira_gallery[lightbox_theme]"]',
48
- type: 'value',
49
- operator: 'array',
50
- condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
51
- },
52
- {
53
- element: '[name="_envira_gallery[arrows]"]',
54
- type: 'checked',
55
- operator: 'is'
56
- }
57
- ],
58
- actions: {
59
- if: {
60
- element: '#envira-config-lightbox-arrows-position-box',
61
- action: 'show'
62
- },
63
- else: {
64
- element: '#envira-config-lightbox-arrows-position-box',
65
- action: 'hide'
66
- }
67
- }
68
- },
69
- { // Gallery Toolbar
70
- conditions: [
71
- {
72
- element: '[name="_envira_gallery[toolbar]"]',
73
- type: 'checked',
74
- operator: 'is'
75
- },
76
- {
77
- element: '[name="_envira_gallery[lightbox_theme]"]',
78
- type: 'value',
79
- operator: 'array',
80
- condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
81
- }
82
- ],
83
- actions: {
84
- if: [
85
- {
86
- element: '#envira-config-lightbox-toolbar-title-box, #envira-config-lightbox-toolbar-position-box',
87
- action: 'show'
88
- }
89
- ],
90
- else: [
91
- {
92
- element: '#envira-config-lightbox-toolbar-title-box, #envira-config-lightbox-toolbar-position-box',
93
- action: 'hide'
94
- }
95
- ]
96
- }
97
- },
98
- { // Mobile Elements Dependant on Theme
99
- conditions: [
100
- {
101
- element: '[name="_envira_gallery[lightbox_theme]"]',
102
- type: 'value',
103
- operator: 'array',
104
- condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
105
- },
106
- {
107
- element: '[name="_envira_gallery[mobile_lightbox]"]',
108
- type: 'checked',
109
- operator: 'is'
110
- }
111
- ],
112
- actions: {
113
- if: {
114
- element: '#envira-config-mobile-arrows-box, #envira-config-mobile-toolbar-box',
115
- action: 'show'
116
- },
117
- else: {
118
- element: '#envira-config-mobile-arrows-box, #envira-config-mobile-toolbar-box',
119
- action: 'hide'
120
- }
121
- }
122
- },
123
- { // Thumbnail Elements Dependant on Theme
124
- conditions: [
125
- {
126
- element: '[name="_envira_gallery[lightbox_theme]"]',
127
- type: 'value',
128
- operator: 'array',
129
- condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
130
- },
131
- {
132
- element: '[name="_envira_gallery[thumbnails]"]',
133
- type: 'checked',
134
- operator: 'is'
135
- }
136
- ],
137
- actions: {
138
- if: {
139
- element: '#envira-config-thumbnails-position-box',
140
- action: 'show'
141
- },
142
- else: {
143
- element: '#envira-config-thumbnails-position-box',
144
- action: 'hide'
145
- }
146
- }
147
- },
148
- { // Thumbnail Elements Independant of Theme
149
- conditions: [
150
- {
151
- element: '[name="_envira_gallery[thumbnails]"]',
152
- type: 'checked',
153
- operator: 'is'
154
- }
155
- ],
156
- actions: {
157
- if: {
158
- element: '#envira-config-thumbnails-height-box, #envira-config-thumbnails-width-box',
159
- action: 'show'
160
- },
161
- else: {
162
- element: '#envira-config-thumbnails-height-box, #envira-config-thumbnails-width-box',
163
- action: 'hide'
164
- }
165
- }
166
- },
167
- { // Justified Gallery
168
- conditions: {
169
- element: '[name="_envira_gallery[columns]"]',
170
- type: 'value',
171
- operator: 'array',
172
- condition: [ '0' ]
173
- },
174
- actions: {
175
- if: [
176
- {
177
- element: '#envira-config-standard-settings-box',
178
- action: 'hide'
179
- },
180
- {
181
- element: '#envira-config-justified-settings-box',
182
- action: 'show'
183
- }
184
- ],
185
- else: [
186
- {
187
- element: '#envira-config-standard-settings-box',
188
- action: 'show'
189
- },
190
- {
191
- element: '#envira-config-justified-settings-box',
192
- action: 'hide'
193
- }
194
- ]
195
- }
196
- },
197
- { // Gallery Description
198
- conditions: {
199
- element: '[name="_envira_gallery[description_position]"]',
200
- type: 'value',
201
- operator: 'array',
202
- condition: [ '0' ]
203
- },
204
- actions: {
205
- if: [
206
- {
207
- element: '#envira-config-description-box',
208
- action: 'hide'
209
- }
210
- ],
211
- else: [
212
- {
213
- element: '#envira-config-description-box',
214
- action: 'show'
215
- }
216
- ]
217
- }
218
- },
219
- { // Gallery Sorting
220
- conditions: {
221
- element: '[name="_envira_gallery[random]"]',
222
- type: 'value',
223
- operator: 'array',
224
- condition: [ '0' ]
225
- },
226
- actions: {
227
- if: [
228
- {
229
- element: '#envira-config-sorting-direction-box',
230
- action: 'hide'
231
- }
232
- ],
233
- else: [
234
- {
235
- element: '#envira-config-sorting-direction-box',
236
- action: 'show'
237
- }
238
- ]
239
- }
240
- },
241
- { // Gallery CSS animations
242
- conditions: {
243
- element: '[name="_envira_gallery[css_animations]"]',
244
- type: 'checked',
245
- operator: 'is'
246
- },
247
- actions: {
248
- if: [
249
- {
250
- element: '#envira-config-css-opacity-box',
251
- action: 'show'
252
- }
253
- ],
254
- else: [
255
- {
256
- element: '#envira-config-css-opacity-box',
257
- action: 'hide'
258
- }
259
- ]
260
- }
261
- },
262
- { // Gallery image size
263
- conditions: {
264
- element: '[name="_envira_gallery[image_size]"]',
265
- type: 'value',
266
- operator: 'array',
267
- condition: [ 'default' ]
268
- },
269
- actions: {
270
- if: [
271
- {
272
- element: '#envira-config-crop-size-box, #envira-config-crop-box',
273
- action: 'show'
274
- }
275
- ],
276
- else: [
277
- {
278
- element: '#envira-config-crop-size-box, #envira-config-crop-box',
279
- action: 'hide'
280
- }
281
- ]
282
- }
283
- },
284
- { // Gallery Lightbox
285
- conditions: {
286
- element: '[name="_envira_gallery[lightbox_enabled]"]',
287
- type: 'checked',
288
- operator: 'is'
289
- },
290
- actions: {
291
- if: [
292
- {
293
- element: '#envira-lightbox-settings',
294
- action: 'show'
295
- }
296
- ],
297
- else: [
298
- {
299
- element: '#envira-lightbox-settings',
300
- action: 'hide'
301
- }
302
- ]
303
- }
304
- },
305
- { // Album Mobile Touchwipe
306
- conditions: {
307
- element: '[name="_envira_gallery[lazy_loading]"]',
308
- type: 'checked',
309
- operator: 'is'
310
- },
311
- actions: {
312
- if: [
313
- {
314
- element: '#envira-config-lazy-loading-delay',
315
- action: 'show'
316
- }
317
- ],
318
- else: [
319
- {
320
- element: '#envira-config-lazy-loading-delay',
321
- action: 'hide'
322
- }
323
- ]
324
- }
325
- },
326
-
327
- ]
328
- );
329
-
 
 
 
 
 
 
 
 
330
  } );
1
+ // @codekit-prepend "conditional-fields-legacy.js";
2
+ // @codekit-prepend "conditions.js";
3
+ /**
4
+ * Handles showing and hiding fields conditionally
5
+ */
6
+ jQuery( document ).ready( function( $ ) {
7
+
8
+ // Show/hide elements as necessary when a conditional field is changed
9
+ $( '#envira-gallery-settings input:not([type=hidden]), #envira-gallery-settings select' ).conditions(
10
+ [
11
+
12
+ { // Main Theme Elements
13
+ conditions: {
14
+ element: '[name="_envira_gallery[lightbox_theme]"]',
15
+ type: 'value',
16
+ operator: 'array',
17
+ condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
18
+ },
19
+ actions: {
20
+ if: [
21
+ {
22
+ element: '#envira-config-lightbox-title-display-box, #envira-config-lightbox-arrows-box, #envira-config-lightbox-toolbar-box, #envira-config-supersize-box',
23
+ action: 'show'
24
+ }
25
+ ]
26
+ }
27
+ },
28
+ {
29
+ conditions: {
30
+ element: '[name="_envira_gallery[lightbox_theme]"]',
31
+ type: 'value',
32
+ operator: 'array',
33
+ condition: [ 'base_dark' ]
34
+ },
35
+ actions: {
36
+ if: [
37
+ {
38
+ element: '#envira-config-lightbox-title-display-box, #envira-config-lightbox-arrows-box, #envira-config-lightbox-toolbar-box, #envira-config-supersize-box',
39
+ action: 'hide'
40
+ }
41
+ ]
42
+ }
43
+ },
44
+ { // Gallery arrows Dependant on Theme
45
+ conditions: [
46
+ {
47
+ element: '[name="_envira_gallery[lightbox_theme]"]',
48
+ type: 'value',
49
+ operator: 'array',
50
+ condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
51
+ },
52
+ {
53
+ element: '[name="_envira_gallery[arrows]"]',
54
+ type: 'checked',
55
+ operator: 'is'
56
+ }
57
+ ],
58
+ actions: {
59
+ if: {
60
+ element: '#envira-config-lightbox-arrows-position-box',
61
+ action: 'show'
62
+ },
63
+ else: {
64
+ element: '#envira-config-lightbox-arrows-position-box',
65
+ action: 'hide'
66
+ }
67
+ }
68
+ },
69
+ { // Gallery Toolbar
70
+ conditions: [
71
+ {
72
+ element: '[name="_envira_gallery[toolbar]"]',
73
+ type: 'checked',
74
+ operator: 'is'
75
+ },
76
+ {
77
+ element: '[name="_envira_gallery[lightbox_theme]"]',
78
+ type: 'value',
79
+ operator: 'array',
80
+ condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
81
+ }
82
+ ],
83
+ actions: {
84
+ if: [
85
+ {
86
+ element: '#envira-config-lightbox-toolbar-title-box, #envira-config-lightbox-toolbar-position-box',
87
+ action: 'show'
88
+ }
89
+ ],
90
+ else: [
91
+ {
92
+ element: '#envira-config-lightbox-toolbar-title-box, #envira-config-lightbox-toolbar-position-box',
93
+ action: 'hide'
94
+ }
95
+ ]
96
+ }
97
+ },
98
+ { // Mobile Elements Dependant on Theme
99
+ conditions: [
100
+ {
101
+ element: '[name="_envira_gallery[lightbox_theme]"]',
102
+ type: 'value',
103
+ operator: 'array',
104
+ condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
105
+ },
106
+ {
107
+ element: '[name="_envira_gallery[mobile_lightbox]"]',
108
+ type: 'checked',
109
+ operator: 'is'
110
+ }
111
+ ],
112
+ actions: {
113
+ if: {
114
+ element: '#envira-config-mobile-arrows-box, #envira-config-mobile-toolbar-box',
115
+ action: 'show'
116
+ },
117
+ else: {
118
+ element: '#envira-config-mobile-arrows-box, #envira-config-mobile-toolbar-box',
119
+ action: 'hide'
120
+ }
121
+ }
122
+ },
123
+ { // Thumbnail Elements Dependant on Theme
124
+ conditions: [
125
+ {
126
+ element: '[name="_envira_gallery[lightbox_theme]"]',
127
+ type: 'value',
128
+ operator: 'array',
129
+ condition: [ 'base', 'captioned', 'polaroid', 'showcase', 'sleek', 'subtle' ]
130
+ },
131
+ {
132
+ element: '[name="_envira_gallery[thumbnails]"]',
133
+ type: 'checked',
134
+ operator: 'is'
135
+ }
136
+ ],
137
+ actions: {
138
+ if: {
139
+ element: '#envira-config-thumbnails-position-box',
140
+ action: 'show'
141
+ },
142
+ else: {
143
+ element: '#envira-config-thumbnails-position-box',
144
+ action: 'hide'
145
+ }
146
+ }
147
+ },
148
+ { // Thumbnail Elements Independant of Theme
149
+ conditions: [
150
+ {
151
+ element: '[name="_envira_gallery[thumbnails]"]',
152
+ type: 'checked',
153
+ operator: 'is'
154
+ }
155
+ ],
156
+ actions: {
157
+ if: {
158
+ element: '#envira-config-thumbnails-height-box, #envira-config-thumbnails-width-box',
159
+ action: 'show'
160
+ },
161
+ else: {
162
+ element: '#envira-config-thumbnails-height-box, #envira-config-thumbnails-width-box',
163
+ action: 'hide'
164
+ }
165
+ }
166
+ },
167
+ { // Justified Gallery
168
+ conditions: {
169
+ element: '[name="_envira_gallery[columns]"]',
170
+ type: 'value',
171
+ operator: 'array',
172
+ condition: [ '0' ]
173
+ },
174
+ actions: {
175
+ if: [
176
+ {
177
+ element: '#envira-config-standard-settings-box',
178
+ action: 'hide'
179
+ },
180
+ {
181
+ element: '#envira-config-justified-settings-box',
182
+ action: 'show'
183
+ }
184
+ ],
185
+ else: [
186
+ {
187
+ element: '#envira-config-standard-settings-box',
188
+ action: 'show'
189
+ },
190
+ {
191
+ element: '#envira-config-justified-settings-box',
192
+ action: 'hide'
193
+ }
194
+ ]
195
+ }
196
+ },
197
+ { // Gallery Description
198
+ conditions: {
199
+ element: '[name="_envira_gallery[description_position]"]',
200
+ type: 'value',
201
+ operator: 'array',
202
+ condition: [ '0' ]
203
+ },
204
+ actions: {
205
+ if: [
206
+ {
207
+ element: '#envira-config-description-box',
208
+ action: 'hide'
209
+ }
210
+ ],
211
+ else: [
212
+ {
213
+ element: '#envira-config-description-box',
214
+ action: 'show'
215
+ }
216
+ ]
217
+ }
218
+ },
219
+ { // Gallery Sorting
220
+ conditions: {
221
+ element: '[name="_envira_gallery[random]"]',
222
+ type: 'value',
223
+ operator: 'array',
224
+ condition: [ '0' ]
225
+ },
226
+ actions: {
227
+ if: [
228
+ {
229
+ element: '#envira-config-sorting-direction-box',
230
+ action: 'hide'
231
+ }
232
+ ],
233
+ else: [
234
+ {
235
+ element: '#envira-config-sorting-direction-box',
236
+ action: 'show'
237
+ }
238
+ ]
239
+ }
240
+ },
241
+ { // Gallery CSS animations
242
+ conditions: {
243
+ element: '[name="_envira_gallery[css_animations]"]',
244
+ type: 'checked',
245
+ operator: 'is'
246
+ },
247
+ actions: {
248
+ if: [
249
+ {
250
+ element: '#envira-config-css-opacity-box',
251
+ action: 'show'
252
+ }
253
+ ],
254
+ else: [
255
+ {
256
+ element: '#envira-config-css-opacity-box',
257
+ action: 'hide'
258
+ }
259
+ ]
260
+ }
261
+ },
262
+ { // Gallery image size
263
+ conditions: {
264
+ element: '[name="_envira_gallery[image_size]"]',
265
+ type: 'value',
266
+ operator: 'array',
267
+ condition: [ 'default' ]
268
+ },
269
+ actions: {
270
+ if: [
271
+ {
272
+ element: '#envira-config-crop-size-box, #envira-config-crop-box',
273
+ action: 'show'
274
+ }
275
+ ],
276
+ else: [
277
+ {
278
+ element: '#envira-config-crop-size-box, #envira-config-crop-box',
279
+ action: 'hide'
280
+ }
281
+ ]
282
+ }
283
+ },
284
+ { // Gallery Lightbox
285
+ conditions: {
286
+ element: '[name="_envira_gallery[lightbox_enabled]"]',
287
+ type: 'checked',
288
+ operator: 'is'
289
+ },
290
+ actions: {
291
+ if: [
292
+ {
293
+ element: '#envira-lightbox-settings',
294
+ action: 'show'
295
+ },
296
+ {
297
+ element: '#envira-config-lightbox-enabled-link',
298
+ action: 'hide'
299
+ },
300
+ ],
301
+ else: [
302
+ {
303
+ element: '#envira-lightbox-settings',
304
+ action: 'hide'
305
+ },
306
+ {
307
+ element: '#envira-config-lightbox-enabled-link',
308
+ action: 'show'
309
+ },
310
+ ]
311
+ }
312
+ },
313
+ { // Album Mobile Touchwipe
314
+ conditions: {
315
+ element: '[name="_envira_gallery[lazy_loading]"]',
316
+ type: 'checked',
317
+ operator: 'is'
318
+ },
319
+ actions: {
320
+ if: [
321
+ {
322
+ element: '#envira-config-lazy-loading-delay',
323
+ action: 'show'
324
+ }
325
+ ],
326
+ else: [
327
+ {
328
+ element: '#envira-config-lazy-loading-delay',
329
+ action: 'hide'
330
+ }
331
+ ]
332
+ }
333
+ },
334
+
335
+ ]
336
+ );
337
+
338
  } );
assets/js/conditions.js CHANGED
@@ -1,212 +1,212 @@
1
- /**
2
- * jQuery Conditions 1.0.0
3
- *
4
- * Copyright 2016 Bejamin Rojas
5
- * @license Released under the MIT license.
6
- * http://jquery.org/license
7
- */
8
- (function($) {
9
- "use strict";
10
-
11
- $.fn.conditions = function(conditions) {
12
- return this.each( function(index, element) {
13
- var CJS = new ConditionsJS(element, conditions, $.fn.conditions.defaults);
14
- CJS.init();
15
- });
16
- };
17
-
18
- $.fn.conditions.defaults = {
19
- condition: null,
20
- actions: {},
21
- effect: 'fade'
22
- };
23
-
24
- var ConditionsJS = function(element, conditions, defaults) {
25
- var that = this;
26
-
27
- that.element = $(element);
28
- that.defaults = defaults;
29
- that.conditions = conditions;
30
- that._init = false;
31
-
32
- if(!$.isArray(that.conditions)) {
33
- that.conditions = [that.conditions];
34
- }
35
-
36
- $.each(that.conditions, function(i, v) {
37
-
38
- v = $.extend({}, that.defaults, v);
39
-
40
- that.conditions[i] = v;
41
-
42
- });
43
-
44
- };
45
-
46
- ConditionsJS.prototype.init = function() {
47
- var that = this;
48
- that._init = true;
49
- // Set up event listener
50
- $(that.element).on('change', function() {
51
- that.matchConditions();
52
- });
53
-
54
- $(that.element).on('keyup', function() {
55
- that.matchConditions();
56
- });
57
-
58
- //Show based on current value on page load
59
- that.matchConditions(true);
60
- };
61
-
62
- ConditionsJS.prototype.matchConditions = function(init) {
63
- var that = this;
64
-
65
- if(!init) {
66
- that._init = false;
67
- }
68
-
69
- $.each(that.conditions, function(ind, cond) {
70
-
71
- var condition_matches = false, all_conditions_match = true;
72
-
73
- if(!$.isArray(cond.conditions)) {
74
- cond.conditions = [cond.conditions];
75
- }
76
-
77
- $.each(cond.conditions, function(i, c) {
78
-
79
- c.element = $(c.element);
80
-
81
- switch(c.type) {
82
- case 'value':
83
- case 'val':
84
- switch(c.operator) {
85
- case '===':
86
- case '==':
87
- case '=':
88
- condition_matches = c.element.val() === c.condition;
89
- break;
90
- case '!==':
91
- case '!=':
92
- condition_matches = c.element.val() !== c.condition;
93
- break;
94
- case 'array':
95
- condition_matches = $.inArray( c.element.val(), c.condition ) !== -1;
96
- break;
97
- case '!array':
98
- condition_matches = $.inArray( c.element.val(), c.condition ) === -1;
99
- break;
100
- }
101
- break;
102
- case 'checked':
103
- switch(c.operator) {
104
- case 'is':
105
- condition_matches = c.element.is(':checked');
106
- break;
107
- case '!is':
108
- condition_matches = !c.element.is(':checked');
109
- break;
110
- }
111
- }
112
-
113
- if(!condition_matches && all_conditions_match) {
114
- all_conditions_match = false;
115
- }
116
-
117
- });
118
-
119
- if(all_conditions_match) {
120
-
121
- if(!$.isEmptyObject(cond.actions.if)) {
122
-
123
- if(!$.isArray(cond.actions.if)) {
124
- cond.actions.if = [cond.actions.if];
125
- }
126
-
127
- $.each(cond.actions.if, function(i, condition) {
128
- that.showAndHide(condition, cond.effect);
129
- });
130
-
131
- }
132
-
133
- }
134
- else {
135
-
136
- if(!$.isEmptyObject(cond.actions.else)) {
137
-
138
- if(!$.isArray(cond.actions.else)) {
139
- cond.actions.else = [cond.actions.else];
140
- }
141
-
142
- $.each(cond.actions.else, function(i, condition) {
143
- that.showAndHide(condition, cond.effect);
144
- });
145
-
146
- }
147
-
148
- }
149
-
150
- });
151
-
152
- };
153
-
154
- ConditionsJS.prototype.showAndHide = function(condition, effect) {
155
- var that = this;
156
-
157
- switch(condition.action) {
158
- case 'show':
159
- that._show($(condition.element), effect);
160
- break;
161
- case 'hide':
162
- that._hide($(condition.element), effect);
163
- break;
164
- }
165
-
166
- };
167
-
168
- ConditionsJS.prototype._show = function(element, effect) {
169
- var that = this;
170
-
171
- if(that._init) {
172
- element.show();
173
- }
174
- else {
175
- switch(effect) {
176
- case 'appear':
177
- element.show();
178
- break;
179
- case 'slide':
180
- element.slideDown();
181
- break;
182
- case 'fade':
183
- element.fadeIn( 300 );
184
- break;
185
- }
186
- }
187
-
188
- };
189
-
190
- ConditionsJS.prototype._hide = function(element, effect) {
191
- var that = this;
192
-
193
- if(that._init) {
194
- element.hide();
195
- }
196
- else {
197
- switch(effect) {
198
- case 'appear':
199
- element.hide();
200
- break;
201
- case 'slide':
202
- element.slideUp();
203
- break;
204
- case 'fade':
205
- element.fadeOut( 300 );
206
- break;
207
- }
208
- }
209
-
210
- };
211
-
212
  }(jQuery));
1
+ /**
2
+ * jQuery Conditions 1.0.0
3
+ *
4
+ * Copyright 2016 Bejamin Rojas
5
+ * @license Released under the MIT license.
6
+ * http://jquery.org/license
7
+ */
8
+ (function($) {
9
+ "use strict";
10
+
11
+ $.fn.conditions = function(conditions) {
12
+ return this.each( function(index, element) {
13
+ var CJS = new ConditionsJS(element, conditions, $.fn.conditions.defaults);
14
+ CJS.init();
15
+ });
16
+ };
17
+
18
+ $.fn.conditions.defaults = {
19
+ condition: null,
20
+ actions: {},
21
+ effect: 'fade'
22
+ };
23
+
24
+ var ConditionsJS = function(element, conditions, defaults) {
25
+ var that = this;
26
+
27
+ that.element = $(element);
28
+ that.defaults = defaults;
29
+ that.conditions = conditions;
30
+ that._init = false;
31
+
32
+ if(!$.isArray(that.conditions)) {
33
+ that.conditions = [that.conditions];
34
+ }
35
+
36
+ $.each(that.conditions, function(i, v) {
37
+
38
+ v = $.extend({}, that.defaults, v);
39
+
40
+ that.conditions[i] = v;
41
+
42
+ });
43
+
44
+ };
45
+
46
+ ConditionsJS.prototype.init = function() {
47
+ var that = this;
48
+ that._init = true;
49
+ // Set up event listener
50
+ $(that.element).on('change', function() {
51
+ that.matchConditions();
52
+ });
53
+
54
+ $(that.element).on('keyup', function() {
55
+ that.matchConditions();
56
+ });
57
+
58
+ //Show based on current value on page load
59
+ that.matchConditions(true);
60
+ };
61
+
62
+ ConditionsJS.prototype.matchConditions = function(init) {
63
+ var that = this;
64
+
65
+ if(!init) {
66
+ that._init = false;
67
+ }
68
+
69
+ $.each(that.conditions, function(ind, cond) {
70
+
71
+ var condition_matches = false, all_conditions_match = true;
72
+
73
+ if(!$.isArray(cond.conditions)) {
74
+ cond.conditions = [cond.conditions];
75
+ }
76
+
77
+ $.each(cond.conditions, function(i, c) {
78
+
79
+ c.element = $(c.element);
80
+
81
+ switch(c.type) {
82
+ case 'value':
83
+ case 'val':
84
+ switch(c.operator) {
85
+ case '===':
86
+ case '==':
87
+ case '=':
88
+ condition_matches = c.element.val() === c.condition;
89
+ break;
90
+ case '!==':
91
+ case '!=':
92
+ condition_matches = c.element.val() !== c.condition;
93
+ break;
94
+ case 'array':
95
+ condition_matches = $.inArray( c.element.val(), c.condition ) !== -1;
96
+ break;
97
+ case '!array':
98
+ condition_matches = $.inArray( c.element.val(), c.condition ) === -1;
99
+ break;
100
+ }
101
+ break;
102
+ case 'checked':
103
+ switch(c.operator) {
104
+ case 'is':
105
+ condition_matches = c.element.is(':checked');
106
+ break;
107
+ case '!is':
108
+ condition_matches = !c.element.is(':checked');
109
+ break;
110
+ }
111
+ }
112
+
113
+ if(!condition_matches && all_conditions_match) {
114
+ all_conditions_match = false;
115
+ }
116
+
117
+ });
118
+
119
+ if(all_conditions_match) {
120
+
121
+ if(!$.isEmptyObject(cond.actions.if)) {
122
+
123
+ if(!$.isArray(cond.actions.if)) {
124
+ cond.actions.if = [cond.actions.if];
125
+ }
126
+
127
+ $.each(cond.actions.if, function(i, condition) {
128
+ that.showAndHide(condition, cond.effect);
129
+ });
130
+
131
+ }
132
+
133
+ }
134
+ else {
135
+
136
+ if(!$.isEmptyObject(cond.actions.else)) {
137
+
138
+ if(!$.isArray(cond.actions.else)) {
139
+ cond.actions.else = [cond.actions.else];
140
+ }
141
+
142
+ $.each(cond.actions.else, function(i, condition) {
143
+ that.showAndHide(condition, cond.effect);
144
+ });
145
+
146
+ }
147
+
148
+ }
149
+
150
+ });
151
+
152
+ };
153
+
154
+ ConditionsJS.prototype.showAndHide = function(condition, effect) {
155
+ var that = this;
156
+
157
+ switch(condition.action) {
158
+ case 'show':
159
+ that._show($(condition.element), effect);
160
+ break;
161
+ case 'hide':
162
+ that._hide($(condition.element), effect);
163
+ break;
164
+ }
165
+
166
+ };
167
+
168
+ ConditionsJS.prototype._show = function(element, effect) {
169
+ var that = this;
170
+
171
+ if(that._init) {
172
+ element.show();
173
+ }
174
+ else {
175
+ switch(effect) {
176
+ case 'appear':
177
+ element.show();
178
+ break;
179
+ case 'slide':
180
+ element.slideDown();
181
+ break;
182
+ case 'fade':
183
+ element.fadeIn( 300 );
184
+ break;
185
+ }
186
+ }
187
+
188
+ };
189
+
190
+ ConditionsJS.prototype._hide = function(element, effect) {
191
+ var that = this;
192
+
193
+ if(that._init) {
194
+ element.hide();
195
+ }
196
+ else {
197
+ switch(effect) {
198
+ case 'appear':
199
+ element.hide();
200
+ break;
201
+ case 'slide':
202
+ element.slideUp();
203
+ break;
204
+ case 'fade':
205
+ element.fadeOut( 300 );
206
+ break;
207
+ }
208
+ }
209
+
210
+ };
211
+
212
  }(jQuery));
assets/js/editor.js CHANGED
@@ -1,62 +1,62 @@
1
- /* ==========================================================
2
- * editor.js
3
- * http://enviragallery.com/
4
- *
5
- * This file can be used by 3rd party plugins to integrate
6
- * with their custom field systems. It allows the selection
7
- * process to be standardized so that 3rd party plugins can
8
- * trigger modal selection windows and receive the corresponding
9
- * selected data objects.
10
- *
11
- * Using this file requires two actions for the 3rd party plugin.
12
- *
13
- * 1. This file should be enqueued on the page where the field resides.
14
- *
15
- * 2. You must add the class ".envira-gallery-modal-trigger" to the
16
- * option/dropdown/button that will trigger the modal.
17
- *
18
- * 3. You must add the data-action="gallery" or data-action="album" attribute
19
- * to the option/dropdown/button that will trigger the modal.
20
- *
21
- * 4. Attaching to a global event that is fired once the data for the
22
- * selection has been retrieved. You should listen on the document
23
- * object for the "enviraGalleryModalData" event, like this:
24
- *
25
- * jQuery( document ).on( 'enviraGalleryModalData', function( e ) {
26
- * console.log( e.action ); // 'gallery' or 'album'
27
- * console.log( e.multiple ); // Whether the user could select multiple Galleries / Albums (true|false)
28
- * console.log( e.items ); // An array of Galleries or Albums
29
- * console.log( e.insert_options ); // An object of the Insert Options the user chose
30
- * } );
31
- *
32
- * This will give you access to the entire array of galleries or albums that
33
- * the user has selected, including ID, title and slug.
34
- *
35
- * Please note that Envira Gallery 1.5.0 and Envira Albums 1.3.0 introduced
36
- * support for selecting multiple Galleries / Albums in the Backbone modal.
37
- */
38
- jQuery( document ).ready( function( $ ) {
39
-
40
- // Open the "Add Gallery" / "Add Album" modal
41
- $( document ).on( 'click', 'a.envira-gallery-choose-gallery, a.envira-albums-choose-album, .envira-gallery-modal-trigger', function( e ) {
42
-
43
- // Prevent default action
44
- e.preventDefault();
45
-
46
- // Get the action
47
- var action = $( this ).data( 'action' );
48
-
49
- // Define the modal's view
50
- EnviraGalleryModalWindow.content( new EnviraGallerySelectionView( {
51
- action: action, // gallery|album
52
- multiple: true, // Allow multiple Galleries / Albums to be selected
53
- modal_title: envira_gallery_editor.modal_title,
54
- insert_button_label:envira_gallery_editor.insert_button_label
55
- } ) );
56
-
57
- // Open the modal window
58
- EnviraGalleryModalWindow.open();
59
-
60
- } );
61
-
62
  } );
1
+ /* ==========================================================
2
+ * editor.js
3
+ * http://enviragallery.com/
4
+ *
5
+ * This file can be used by 3rd party plugins to integrate
6
+ * with their custom field systems. It allows the selection
7
+ * process to be standardized so that 3rd party plugins can
8
+ * trigger modal selection windows and receive the corresponding
9
+ * selected data objects.
10
+ *
11
+ * Using this file requires two actions for the 3rd party plugin.
12
+ *
13
+ * 1. This file should be enqueued on the page where the field resides.
14
+ *
15
+ * 2. You must add the class ".envira-gallery-modal-trigger" to the
16
+ * option/dropdown/button that will trigger the modal.
17
+ *
18
+ * 3. You must add the data-action="gallery" or data-action="album" attribute
19
+ * to the option/dropdown/button that will trigger the modal.
20
+ *
21
+ * 4. Attaching to a global event that is fired once the data for the
22
+ * selection has been retrieved. You should listen on the document
23
+ * object for the "enviraGalleryModalData" event, like this:
24
+ *
25
+ * jQuery( document ).on( 'enviraGalleryModalData', function( e ) {
26
+ * console.log( e.action ); // 'gallery' or 'album'
27
+ * console.log( e.multiple ); // Whether the user could select multiple Galleries / Albums (true|false)
28
+ * console.log( e.items ); // An array of Galleries or Albums
29
+ * console.log( e.insert_options ); // An object of the Insert Options the user chose
30
+ * } );
31
+ *
32
+ * This will give you access to the entire array of galleries or albums that
33
+ * the user has selected, including ID, title and slug.
34
+ *
35
+ * Please note that Envira Gallery 1.5.0 and Envira Albums 1.3.0 introduced
36
+ * support for selecting multiple Galleries / Albums in the Backbone modal.
37
+ */
38
+ jQuery( document ).ready( function( $ ) {
39
+
40
+ // Open the "Add Gallery" / "Add Album" modal
41
+ $( document ).on( 'click', 'a.envira-gallery-choose-gallery, a.envira-albums-choose-album, .envira-gallery-modal-trigger', function( e ) {
42
+
43
+ // Prevent default action
44
+ e.preventDefault();
45
+
46
+ // Get the action
47
+ var action = $( this ).data( 'action' );
48
+
49
+ // Define the modal's view
50
+ EnviraGalleryModalWindow.content( new EnviraGallerySelectionView( {
51
+ action: action, // gallery|album
52
+ multiple: true, // Allow multiple Galleries / Albums to be selected
53
+ modal_title: envira_gallery_editor.modal_title,
54
+ insert_button_label:envira_gallery_editor.insert_button_label
55
+ } ) );
56
+
57
+ // Open the modal window
58
+ EnviraGalleryModalWindow.open();
59
+
60
+ } );
61
+
62
  } );
assets/js/envira-gutenberg.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ window.wp=window.wp||{},window.wp.enviraGutenberg=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=32)}([function(e,t){e.exports=window.React},function(e,t,n){e.exports=n(23)()},function(e,t){e.exports=window.wp.i18n},function(e,t){e.exports=window.wp.element},function(e,t){e.exports=window.wp.components},function(e,t){e.exports=window.wp.data},function(e,t){e.exports=window.wp.compose},function(e,t){e.exports=window.wp.blockEditor},function(e,t){e.exports=window.wp.apiFetch},function(e,t){e.exports=window.ReactDOM},function(e,t,n){var r;
2
+ /*!
3
+ Copyright (c) 2017 Jed Watson.
4
+ Licensed under the MIT License (MIT), see
5
+ http://jedwatson.github.io/classnames
6
+ */!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(r);else if(Array.isArray(r)&&r.length){var a=o.apply(null,r);a&&e.push(a)}else if("object"===i)for(var u in r)n.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,u=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(u),"/*# ".concat(s," */")),i=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot).concat(e," */")}));return[n].concat(i).concat([o]).join("\n")}var a,u,s;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2],"{").concat(n,"}"):n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];null!=i&&(r[i]=!0)}for(var a=0;a<e.length;a++){var u=e[a];null!=u[0]&&r[u[0]]||(n&&!u[2]?u[2]=n:n&&(u[2]="(".concat(u[2],") and (").concat(n,")")),t.push(u))}},t}},function(e,t,n){"use strict";var r,o={},i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}();function u(e,t){for(var n=[],r={},o=0;o<e.length;o++){var i=e[o],a=t.base?i[0]+t.base:i[0],u={css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}function s(e,t){for(var n=0;n<e.length;n++){var r=e[n],i=o[r.id],a=0;if(i){for(i.refs++;a<i.parts.length;a++)i.parts[a](r.parts[a]);for(;a<r.parts.length;a++)i.parts.push(g(r.parts[a],t))}else{for(var u=[];a<r.parts.length;a++)u.push(g(r.parts[a],t));o[r.id]={id:r.id,refs:1,parts:u}}}}function l(e){var t=document.createElement("style");if(void 0===e.attributes.nonce){var r=n.nc;r&&(e.attributes.nonce=r)}if(Object.keys(e.attributes).forEach((function(n){t.setAttribute(n,e.attributes[n])})),"function"==typeof e.insert)e.insert(t);else{var o=a(e.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(t)}return t}var c,p=(c=[],function(e,t){return c[e]=t,c.filter(Boolean).join("\n")});function f(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=p(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function d(e,t,n){var r=n.css,o=n.media,i=n.sourceMap;if(o&&e.setAttribute("media",o),i&&btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var h=null,m=0;function g(e,t){var n,r,o;if(t.singleton){var i=m++;n=h||(h=l(t)),r=f.bind(null,n,i,!1),o=f.bind(null,n,i,!0)}else n=l(t),r=d.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).attributes="object"==typeof t.attributes?t.attributes:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=i());var n=u(e,t);return s(n,t),function(e){for(var r=[],i=0;i<n.length;i++){var a=n[i],l=o[a.id];l&&(l.refs--,r.push(l))}e&&s(u(e,t),t);for(var c=0;c<r.length;c++){var p=r[c];if(0===p.refs){for(var f=0;f<p.parts.length;f++)p.parts[f]();delete o[p.id]}}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(0),a=s(i),u=s(n(1));function s(e){return e&&e.__esModule?e:{default:e}}var l={position:"absolute",top:0,left:0,visibility:"hidden",height:0,overflow:"scroll",whiteSpace:"pre"},c=["extraWidth","injectStyles","inputClassName","inputRef","inputStyle","minWidth","onAutosize","placeholderIsMinWidth"],p=function(e,t){t.style.fontSize=e.fontSize,t.style.fontFamily=e.fontFamily,t.style.fontWeight=e.fontWeight,t.style.fontStyle=e.fontStyle,t.style.letterSpacing=e.letterSpacing,t.style.textTransform=e.textTransform},f=!("undefined"==typeof window||!window.navigator)&&/MSIE |Trident\/|Edge\//.test(window.navigator.userAgent),d=function(){return f?"_"+Math.random().toString(36).substr(2,12):void 0},h=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.inputRef=function(e){n.input=e,"function"==typeof n.props.inputRef&&n.props.inputRef(e)},n.placeHolderSizerRef=function(e){n.placeHolderSizer=e},n.sizerRef=function(e){n.sizer=e},n.state={inputWidth:e.minWidth,inputId:e.id||d()},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"componentDidMount",value:function(){this.mounted=!0,this.copyInputStyles(),this.updateInputWidth()}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=e.id;t!==this.props.id&&this.setState({inputId:t||d()})}},{key:"componentDidUpdate",value:function(e,t){t.inputWidth!==this.state.inputWidth&&"function"==typeof this.props.onAutosize&&this.props.onAutosize(this.state.inputWidth),this.updateInputWidth()}},{key:"componentWillUnmount",value:function(){this.mounted=!1}},{key:"copyInputStyles",value:function(){if(this.mounted&&window.getComputedStyle){var e=this.input&&window.getComputedStyle(this.input);e&&(p(e,this.sizer),this.placeHolderSizer&&p(e,this.placeHolderSizer))}}},{key:"updateInputWidth",value:function(){if(this.mounted&&this.sizer&&void 0!==this.sizer.scrollWidth){var e=void 0;e=this.props.placeholder&&(!this.props.value||this.props.value&&this.props.placeholderIsMinWidth)?Math.max(this.sizer.scrollWidth,this.placeHolderSizer.scrollWidth)+2:this.sizer.scrollWidth+2,(e+="number"===this.props.type&&void 0===this.props.extraWidth?16:parseInt(this.props.extraWidth)||0)<this.props.minWidth&&(e=this.props.minWidth),e!==this.state.inputWidth&&this.setState({inputWidth:e})}}},{key:"getInput",value:function(){return this.input}},{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"select",value:function(){this.input.select()}},{key:"renderStyles",value:function(){var e=this.props.injectStyles;return f&&e?a.default.createElement("style",{dangerouslySetInnerHTML:{__html:"input#"+this.state.inputId+"::-ms-clear {display: none;}"}}):null}},{key:"render",value:function(){var e=[this.props.defaultValue,this.props.value,""].reduce((function(e,t){return null!=e?e:t})),t=r({},this.props.style);t.display||(t.display="inline-block");var n=r({boxSizing:"content-box",width:this.state.inputWidth+"px"},this.props.inputStyle),o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(o),o.className=this.props.inputClassName,o.id=this.state.inputId,o.style=n,a.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),a.default.createElement("input",r({},o,{ref:this.inputRef})),a.default.createElement("div",{ref:this.sizerRef,style:l},e),this.props.placeholder?a.default.createElement("div",{ref:this.placeHolderSizerRef,style:l},this.props.placeholder):null)}}]),t}(i.Component);h.propTypes={className:u.default.string,defaultValue:u.default.any,extraWidth:u.default.oneOfType([u.default.number,u.default.string]),id:u.default.string,injectStyles:u.default.bool,inputClassName:u.default.string,inputRef:u.default.func,inputStyle:u.default.object,minWidth:u.default.oneOfType([u.default.number,u.default.string]),onAutosize:u.default.func,onChange:u.default.func,placeholder:u.default.string,placeholderIsMinWidth:u.default.bool,style:u.default.object,value:u.default.any},h.defaultProps={minWidth:1,injectStyles:!0},t.default=h},function(e,t){e.exports=window.lodash},function(e,t){e.exports=window.wp.blob},function(e,t){e.exports=window.wp.blocks},function(e,t){e.exports=window.wp.editor},function(e,t,n){var r;e.exports=(r=n(0),function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=11)}([function(e,t,n){var r;!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var i=typeof r;if("string"===i||"number"===i)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===i)for(var u in r)o.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var o={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):void 0!==(r=function(){return n}.apply(t,[]))&&(e.exports=r)}()},function(e,t){e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Progress=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(8));t.Progress=r.default},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0});var o,i=(t.prefixClass="react-sweet-progress",t.DEFAULT_TRAIL_COLOR="#efefef",t.STATUSES={ACTIVE:"active",SUCCESS:"success",ERROR:"error",DEFAULT:"default"});t.COLOR_MAP=(r(o={},i.ACTIVE,"#138ce4"),r(o,i.SUCCESS,"#049e51"),r(o,i.ERROR,"#e23f33"),o)},function(e,t){e.exports={"react-sweet-progress-line":"react-sweet-progress-line","react-sweet-progress-line-inner":"react-sweet-progress-line-inner","react-sweet-progress-line-inner-status-active":"react-sweet-progress-line-inner-status-active","active-anim":"active-anim"}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){var e="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;return function(t,n,r,o){var i=t&&t.defaultProps,a=arguments.length-3;if(n||0===a||(n={}),n&&i)for(var u in i)void 0===n[u]&&(n[u]=i[u]);else n||(n=i||{});if(1===a)n.children=o;else if(a>1){for(var s=Array(a),l=0;l<a;l++)s[l]=arguments[l+3];n.children=s}return{$$typeof:e,type:t,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(1),s=r(u),l=r(n(0)),c=r(n(9)),p=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),a(t,[{key:"getPathStyles",value:function(){var e=this.props,t=(e.prefixClass,e.percent),n=e.strokeWidth,r=e.gapDegree,o=void 0===r?0:r,i=(e.gapPosition,50-n/2),a=-2*i,u="M 50,50 m 0,"+-i+"\n a "+i+","+i+" 0 1 1 0,"+-a+"\n a "+i+","+i+" 0 1 1 "+-0+","+a,s=2*Math.PI*i;return{pathString:u,trailPathStyle:{strokeDasharray:s-o+"px "+s+"px",strokeDashoffset:"-"+o/2+"px",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s"},strokePathStyle:{strokeDasharray:t/100*(s-o)+"px "+s+"px",strokeDashoffset:"-"+o/2+"px",transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s"}}}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixClass,r=t.strokeWidth,a=t.strokeColor,u=t.trailColor,p=t.style,f=t.className,d=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["prefixClass","strokeWidth","strokeColor","trailColor","style","className"]),h=(0,l.default)(c.default[n+"-circle"],f),m=this.getPathStyles(),g=m.pathString,b=m.trailPathStyle,v=m.strokePathStyle;return delete d.percent,delete d.gapDegree,delete d.gapPosition,s.default.createElement("svg",o({className:h,viewBox:"0 0 100 100",style:p},d),i("path",{d:g,stroke:u,strokeWidth:r,fillOpacity:"0",style:b}),s.default.createElement("path",{d:g,stroke:a,strokeWidth:r,fillOpacity:"0",ref:function(t){e.path=t},style:v}))}}]),t}(u.Component);t.default=p},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){var e="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;return function(t,n,r,o){var i=t&&t.defaultProps,a=arguments.length-3;if(n||0===a||(n={}),n&&i)for(var u in i)void 0===n[u]&&(n[u]=i[u]);else n||(n=i||{});if(1===a)n.children=o;else if(a>1){for(var s=Array(a),l=0;l<a;l++)s[l]=arguments[l+3];n.children=s}return{$$typeof:e,type:t,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(1),u=(r(a),n(0)),s=(r(u),n(4)),l=(r(s),function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"render",value:function(){var e=this.props.size?{width:this.props.size,height:this.props.size}:{width:"20px",height:"20px"};switch(this.props.name){case"success":return o("svg",{version:"1.1",viewBox:"0 0 512 512",style:e},void 0,o("path",{fill:"#049e51",d:"M489,255.9c0-0.2,0-0.5,0-0.7c0-1.6,0-3.2-0.1-4.7c0-0.9-0.1-1.8-0.1-2.8c0-0.9-0.1-1.8-0.1-2.7 c-0.1-1.1-0.1-2.2-0.2-3.3c0-0.7-0.1-1.4-0.1-2.1c-0.1-1.2-0.2-2.4-0.3-3.6c0-0.5-0.1-1.1-0.1-1.6c-0.1-1.3-0.3-2.6-0.4-4 c0-0.3-0.1-0.7-0.1-1C474.3,113.2,375.7,22.9,256,22.9S37.7,113.2,24.5,229.5c0,0.3-0.1,0.7-0.1,1c-0.1,1.3-0.3,2.6-0.4,4 c-0.1,0.5-0.1,1.1-0.1,1.6c-0.1,1.2-0.2,2.4-0.3,3.6c0,0.7-0.1,1.4-0.1,2.1c-0.1,1.1-0.1,2.2-0.2,3.3c0,0.9-0.1,1.8-0.1,2.7 c0,0.9-0.1,1.8-0.1,2.8c0,1.6-0.1,3.2-0.1,4.7c0,0.2,0,0.5,0,0.7c0,0,0,0,0,0.1s0,0,0,0.1c0,0.2,0,0.5,0,0.7c0,1.6,0,3.2,0.1,4.7 c0,0.9,0.1,1.8,0.1,2.8c0,0.9,0.1,1.8,0.1,2.7c0.1,1.1,0.1,2.2,0.2,3.3c0,0.7,0.1,1.4,0.1,2.1c0.1,1.2,0.2,2.4,0.3,3.6 c0,0.5,0.1,1.1,0.1,1.6c0.1,1.3,0.3,2.6,0.4,4c0,0.3,0.1,0.7,0.1,1C37.7,398.8,136.3,489.1,256,489.1s218.3-90.3,231.5-206.5 c0-0.3,0.1-0.7,0.1-1c0.1-1.3,0.3-2.6,0.4-4c0.1-0.5,0.1-1.1,0.1-1.6c0.1-1.2,0.2-2.4,0.3-3.6c0-0.7,0.1-1.4,0.1-2.1 c0.1-1.1,0.1-2.2,0.2-3.3c0-0.9,0.1-1.8,0.1-2.7c0-0.9,0.1-1.8,0.1-2.8c0-1.6,0.1-3.2,0.1-4.7c0-0.2,0-0.5,0-0.7 C489,256,489,256,489,255.9C489,256,489,256,489,255.9z",id:"XMLID_3_"}),o("g",{fill:"none",stroke:"#FFFFFF",strokeWidth:30,strokeMiterlimit:10},void 0,o("line",{x1:"213.6",x2:"369.7",y1:"344.2",y2:"188.2"}),o("line",{x1:"233.8",x2:"154.7",y1:"345.2",y2:"266.1"})));case"error":return o("svg",{version:"1.1",viewBox:"0 0 50 50",style:e},void 0,o("circle",{fill:"#e23f33",cx:"25",cy:"25",r:"25"}),o("polyline",{fill:"none",stroke:"#FFFFFF",strokeWidth:3,strokeLinecap:"round",strokeMiterlimit:10,points:"16,34 25,25 34,16"}),o("polyline",{fill:"none",stroke:"#FFFFFF",strokeWidth:3,strokeLinecap:"round",strokeMiterlimit:10,points:"16,16 25,25 34,34"}));default:return null}}}]),t}(a.Component));t.default=l},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){var e="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;return function(t,n,r,o){var i=t&&t.defaultProps,a=arguments.length-3;if(n||0===a||(n={}),n&&i)for(var u in i)void 0===n[u]&&(n[u]=i[u]);else n||(n=i||{});if(1===a)n.children=o;else if(a>1){for(var s=Array(a),l=0;l<a;l++)s[l]=arguments[l+3];n.children=s}return{$$typeof:e,type:t,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),i=(r(n(1)),n(0)),a=r(i),u=r((n(3),n(4)));t.default=function(e){var t=e.prefixClass,n=e.percent,r=e.className,i=e.status,s=e.background,l=e.trailColor,c=(0,a.default)(u.default[t+"-line"],r),p=(0,a.default)(u.default[t+"-line-inner"],function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},u.default[t+"-line-inner-status-"+i],!!i));return o("div",{className:c,style:{backgroundColor:l}},void 0,o("div",{className:p,style:{width:n+"%",backgroundColor:s}}))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){var e="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;return function(t,n,r,o){var i=t&&t.defaultProps,a=arguments.length-3;if(n||0===a||(n={}),n&&i)for(var u in i)void 0===n[u]&&(n[u]=i[u]);else n||(n=i||{});if(1===a)n.children=o;else if(a>1){for(var s=Array(a),l=0;l<a;l++)s[l]=arguments[l+3];n.children=s}return{$$typeof:e,type:t,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(1),s=(r(u),n(0)),l=r(s),c=n(3),p=r(n(10)),f=r(n(7)),d=r(n(5)),h=r(n(6)),m=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={status:e.status||c.STATUSES.ACTIVE},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),a(t,[{key:"getSymbolByStatus",value:function(e,t){switch(e){case c.STATUSES.SUCCESS:return i(h.default,{name:"success",size:t});case c.STATUSES.ERROR:return i(h.default,{name:"error",size:t});default:return this.props.percent+"%"}}},{key:"render",value:function(){var e,t=this.props,n=t.percent,r=t.status,a=t.theme,u=t.style,s=t.className,h=t.symbolClassName,m=t.type,g=t.width,b=t.strokeWidth;e=0===n?c.STATUSES.DEFAULT:n>=100&&!r?c.STATUSES.SUCCESS:r||c.STATUSES.ACTIVE;var v=a&&a[e],y=v?v.color:c.COLOR_MAP[e],w=v?v.trailColor:c.DEFAULT_TRAIL_COLOR;if("circle"===m){var E=g||132,O=.16*E+6,_=1.25*O,C=v&&v.symbol||this.getSymbolByStatus(e,_),S=o({width:E,height:E,fontSize:O},u),x=b||6;return i("div",{className:c.prefixClass+"-circle-outer",style:S},void 0,i(d.default,{percent:n,strokeWidth:x,strokeColor:y,trailColor:w,prefixClass:c.prefixClass,gapDegree:0,gapPosition:"top"}),i("div",{className:p.default[c.prefixClass+"-symbol-absolute"]},void 0,i("div",{className:(0,l.default)(p.default[c.prefixClass+"-symbol"],h)},void 0,C)))}var k=v&&v.symbol||this.getSymbolByStatus(e);return i("div",{className:(0,l.default)(p.default[""+c.prefixClass],s),style:u},void 0,i(f.default,{prefixClass:c.prefixClass,percent:n,status:e,background:y,trailColor:w}),i("div",{className:(0,l.default)(p.default[c.prefixClass+"-symbol"],h)},void 0,k))}}]),t}(u.Component);m.defaultProps={percent:0},t.default=m},function(e,t){e.exports={"react-sweet-progress-circle":"react-sweet-progress-circle"}},function(e,t){e.exports={"react-sweet-progress":"react-sweet-progress","react-sweet-progress-symbol":"react-sweet-progress-symbol","react-sweet-progress-symbol-absolute":"react-sweet-progress-symbol-absolute","react-sweet-progress-circle-outer":"react-sweet-progress-circle-outer"}},function(e,t,n){n(2),e.exports=n(2)}]))},function(e,t){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}},function(e,t,n){"use strict";(function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return(function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var o=r[n];e.call(t,o[1],o[0])}},t}())}(),r="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,o=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),i="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(o):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},a=2;var u=20,s=["top","right","bottom","left","width","height","size","weight"],l="undefined"!=typeof MutationObserver,c=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,o=0;function u(){n&&(n=!1,e()),r&&l()}function s(){i(u)}function l(){var e=Date.now();if(n){if(e-o<a)return;r=!0}else n=!0,r=!1,setTimeout(s,t);o=e}return l}(this.refresh.bind(this),u)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;s.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),p=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var o=r[n];Object.defineProperty(e,o,{value:t[o],enumerable:!1,writable:!1,configurable:!0})}return e},f=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||o},d=y(0,0,0,0);function h(e){return parseFloat(e)||0}function m(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+h(e["border-"+n+"-width"])}),0)}function g(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return d;var r=f(e).getComputedStyle(e),o=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var o=r[n],i=e["padding-"+o];t[o]=h(i)}return t}(r),i=o.left+o.right,a=o.top+o.bottom,u=h(r.width),s=h(r.height);if("border-box"===r.boxSizing&&(Math.round(u+i)!==t&&(u-=m(r,"left","right")+i),Math.round(s+a)!==n&&(s-=m(r,"top","bottom")+a)),!function(e){return e===f(e).document.documentElement}(e)){var l=Math.round(u+i)-t,c=Math.round(s+a)-n;1!==Math.abs(l)&&(u-=l),1!==Math.abs(c)&&(s-=c)}return y(o.left,o.top,u,s)}var b="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof f(e).SVGGraphicsElement}:function(e){return e instanceof f(e).SVGElement&&"function"==typeof e.getBBox};function v(e){return r?b(e)?function(e){var t=e.getBBox();return y(0,0,t.width,t.height)}(e):g(e):d}function y(e,t,n,r){return{x:e,y:t,width:n,height:r}}var w=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=y(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=v(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),E=function(e,t){var n,r,o,i,a,u,s,l=(r=(n=t).x,o=n.y,i=n.width,a=n.height,u="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,s=Object.create(u.prototype),p(s,{x:r,y:o,width:i,height:a,top:o,right:r+i,bottom:a+o,left:r}),s);p(this,{target:e,contentRect:l})},O=function(){function e(e,t,r){if(this.activeObservations_=[],this.observations_=new n,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=r}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof f(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new w(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof f(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new E(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),_="undefined"!=typeof WeakMap?new WeakMap:new n,C=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=c.getInstance(),r=new O(t,n,this);_.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){C.prototype[e]=function(){var t;return(t=_.get(this))[e].apply(t,arguments)}}));var S=void 0!==o.ResizeObserver?o.ResizeObserver:C;t.a=S}).call(this,n(25))},function(e,t,n){var r=n(22);"string"==typeof r&&(r=[[e.i,r,""]]);var o={insert:"head",singleton:!1};n(12)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(11)(!1)).push([e.i,'.react-sweet-progress{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%}.react-sweet-progress-symbol{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;width:35px;height:20px;padding-left:10px;color:rgba(0,0,0,0.7);font-weight:200}.react-sweet-progress-symbol-absolute{display:-ms-flexbox;display:flex;position:absolute;top:50%;left:50%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;transform:translate3d(-50%, -50%, 0)}.react-sweet-progress-symbol-absolute .react-sweet-progress-symbol{padding:0;width:100%}.react-sweet-progress-circle-outer{position:relative;display:inline-block;vertical-align:middle}.react-sweet-progress-line{width:100%;border-radius:100px;background-color:#efefef;vertical-align:middle}.react-sweet-progress-line-inner{position:relative;min-height:10px;border-radius:100px;transition:width 0.3s ease}.react-sweet-progress-line-inner-status-active:before{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:10px;background:#fff;animation:active-anim 2s cubic-bezier(0.25, 1, 0.6, 1) infinite;content:"";opacity:0}@keyframes active-anim{0%{width:0;opacity:.1}20%{width:0;opacity:.5}to{width:100%;opacity:0}}.react-sweet-progress-circle path{stroke-linecap:round}\n',""])},function(e,t,n){"use strict";var r=n(24);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r=n(27);"string"==typeof r&&(r=[[e.i,r,""]]);var o={insert:"head",singleton:!1};n(12)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(11)(!1)).push([e.i,".envira-isLoading{width:100%;height:100%;display:flex;justify-content:center;align-items:center;position:relative}.envira-loading{display:inline-block;position:relative;width:64px;height:64px}.envira-loading.grey{background:#7cc048}.envira-loading div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#7cc048 !important;animation-timing-function:cubic-bezier(0, 1, 1, 0)}.envira-loading div:nth-child(1){left:6px;animation:enviraLoading1 0.6s infinite}.envira-loading div:nth-child(2){left:6px;animation:enviraLoading2 0.6s infinite}.envira-loading div:nth-child(3){left:26px;animation:enviraLoading2 0.6s infinite}.envira-loading div:nth-child(4){left:45px;animation:enviraLoading3 0.6s infinite}@keyframes enviraLoading1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes enviraLoading3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes enviraLoading2{0%{transform:translate(0, 0)}100%{transform:translate(19px, 0)}}\n",""])},function(e,t,n){var r=n(29);"string"==typeof r&&(r=[[e.i,r,""]]);var o={insert:"head",singleton:!1};n(12)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(11)(!1)).push([e.i,".envira-uploader{width:100%;display:flex;align-items:center;justify-content:center;background-color:#f7f7f7;min-height:100px}.envira-uploader .envira-media__button{border-radius:0;border:none;box-shadow:none !important;display:flex;flex-direction:column;justify-content:center;min-height:80px;width:95px;padding:0 !important;margin-right:20px}.envira-uploader .envira-media__button .dashicons-plus{margin-top:10px}.envira-uploader .envira-media__button .dashicons-format-gallery{margin-bottom:10px}.envira-uploader .envira-media__button:hover,.envira-uploader .envira-media__button:focus{border:1px solid #c8c8c8}\n",""])},function(e,t,n){var r=n(31);"string"==typeof r&&(r=[[e.i,r,""]]);var o={insert:"head",singleton:!1};n(12)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(11)(!1)).push([e.i,".envira-block-select{width:100%;padding:20px 0}.EnviraClear{width:100%}.envira-inspector-panelbody .envira-heading{margin-top:20px;margin-bottom:10px}.envira-inspector-panelbody .components-button.envira-button{margin-top:20px;color:#323232;border-color:#c8c8c8}.envira-inspector-panelbody .components-button.envira-button:hover{color:#505050;border-color:#c8c8c8}#envira-pro-control{padding:10px 0;font-size:16px}.envira-block-instructions p{font-size:16px !important}.envira-gallery-item.isSelected{border:5px solid #007eb1}.block-editor__container .envira-gallery-justified img,.block-editor__container .react-photo-gallery--gallery img{height:none !important;height:min-intrinsic !important;object-fit:contain}.envira-gallery-isotope img{width:100%}.envira-gallery-wrap{width:100%;margin:0 auto 20px auto;line-height:0 !important}.envira-gallery-wrap>.envira-gallery-public{width:100%;margin:0 auto 20px auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.envira-gallery-wrap>.envira-gallery-public.envira-clear{clear:both}.envira-gallery-wrap>.envira-gallery-public.envira-clear:after{clear:both;content:'.';display:block;height:0;line-height:0;overflow:auto;visibility:hidden;zoom:1}.envira-gallery-wrap>.envira-gallery-public .envira-gallery-item-inner{position:relative}.envira-gallery-wrap>.envira-gallery-public .envira-gallery-item{float:left}.envira-gallery-wrap>.envira-gallery-public .envira-gallery-item img{float:none;display:block;margin:0 auto;padding:0;width:100%;max-width:100%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-1-columns .envira-gallery-item{clear:both;width:100%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-2-columns .envira-gallery-item{width:50%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-2-columns .envira-gallery-item:nth-child(2n+1){clear:both}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-3-columns .envira-gallery-item{width:33.33%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-3-columns .envira-gallery-item:nth-child(3n+1){clear:both}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-4-columns .envira-gallery-item{width:25%;margin:0;padding:0;box-sizing:border-box}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-4-columns .envira-gallery-item:nth-child(4n+1){clear:both}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-5-columns .envira-gallery-item{width:20%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-5-columns .envira-gallery-item:nth-child(5n+1){clear:both}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-6-columns .envira-gallery-item{width:16.66%}.envira-gallery-wrap>.envira-gallery-public.envira-gallery-6-columns .envira-gallery-item:nth-child(6n+1){clear:both}.envira-gallery-wrap>.envira-gallery-public.enviratope .envira-gallery-item{clear:none !important}\n",""])},function(e,t,n){"use strict";n.r(t);var r=n(16),o=n(3),i=n(8),a=n.n(i),u=n(5),s=n(2),l=n(6),c=n(17),p=n(15),f=n(18);n(21);function d(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function m(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){g(e,t,n[t])}))}return e}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function w(e,t,n){return t&&y(e.prototype,t),n&&y(e,n),e}function E(e){return(E="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})(e)}function O(e){return(O="function"==typeof Symbol&&"symbol"===E(Symbol.iterator)?function(e){return E(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":E(e)})(e)}function _(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function C(e,t){return!t||"object"!==O(t)&&"function"!=typeof t?_(e):t}function S(e){return(S=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(e,t){return(x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&x(e,t)}var A=n(0),I=n.n(A);function F(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}var P=function(e,t){var n;void 0===t&&(t=F);var r,o=[],i=!1;return function(){for(var a=[],u=0;u<arguments.length;u++)a[u]=arguments[u];return i&&n===this&&t(a,o)?r:(r=e.apply(this,a),i=!0,n=this,o=a,r)}},j=n(19),D=n.n(j);var M=function(){function e(e){this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.before=null}var t=e.prototype;return t.insert=function(e){if(this.ctr%(this.isSpeedy?65e3:1)==0){var t,n=function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t}(this);t=0===this.tags.length?this.before:this.tags[this.tags.length-1].nextSibling,this.container.insertBefore(n,t),this.tags.push(n)}var r=this.tags[this.tags.length-1];if(this.isSpeedy){var o=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(r);try{var i=105===e.charCodeAt(1)&&64===e.charCodeAt(0);o.insertRule(e,i?0:o.cssRules.length)}catch(e){0}}else r.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0},e}();var T=function(e){function t(e,t,r){var o=t.trim().split(h);t=o;var i=o.length,a=e.length;switch(a){case 0:case 1:var u=0;for(e=0===a?"":e[0]+" ";u<i;++u)t[u]=n(e,t[u],r).trim();break;default:var s=u=0;for(t=[];u<i;++u)for(var l=0;l<a;++l)t[s++]=n(e[l]+" ",o[u],r).trim()}return t}function n(e,t,n){var r=t.charCodeAt(0);switch(33>r&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(m,"$1"+e.trim());case 58:return e.trim()+t.replace(m,"$1"+e.trim());default:if(0<1*n&&0<t.indexOf("\f"))return t.replace(m,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+t}function r(e,t,n,i){var a=e+";",u=2*t+3*n+4*i;if(944===u){e=a.indexOf(":",9)+1;var s=a.substring(e,a.length-1).trim();return s=a.substring(0,e).trim()+s+";",1===I||2===I&&o(s,1)?"-webkit-"+s+s:s}if(0===I||2===I&&!o(a,1))return a;switch(u){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(S,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(s=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+s+a;case 1005:return f.test(a)?a.replace(p,":-webkit-")+a.replace(p,":-moz-")+a:a;case 1e3:switch(t=(s=a.substring(13).trim()).indexOf("-")+1,s.charCodeAt(0)+s.charCodeAt(t)){case 226:s=a.replace(y,"tb");break;case 232:s=a.replace(y,"tb-rl");break;case 220:s=a.replace(y,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+s+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(t=(a=e).length-10,u=(s=(33===a.charCodeAt(t)?a.substring(0,t):a).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(111>s.charCodeAt(8))break;case 115:a=a.replace(s,"-webkit-"+s)+";"+a;break;case 207:case 102:a=a.replace(s,"-webkit-"+(102<u?"inline-":"")+"box")+";"+a.replace(s,"-webkit-"+s)+";"+a.replace(s,"-ms-"+s+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return s=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+s+"-ms-flex-"+s+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(O,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(O,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===C.test(e))return 115===(s=e.substring(e.indexOf(":")+1)).charCodeAt(0)?r(e.replace("stretch","fill-available"),t,n,i).replace(":fill-available",":stretch"):a.replace(s,"-webkit-"+s)+a.replace(s,"-moz-"+s.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===n+i&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(d,"$1-webkit-$2")+a}return a}function o(e,t){var n=e.indexOf(1===t?":":"{"),r=e.substring(0,3!==t?n:10);return n=e.substring(n+1,e.length-1),D(2!==t?r:r.replace(_,"$1"),n,t)}function i(e,t){var n=r(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+";"?n.replace(E," or ($1)").substring(4):"("+t+")"}function a(e,t,n,r,o,i,a,u,l,c){for(var p,f=0,d=t;f<j;++f)switch(p=P[f].call(s,e,d,n,r,o,i,a,u,l,c)){case void 0:case!1:case!0:case null:break;default:d=p}if(d!==t)return d}function u(e){return void 0!==(e=e.prefix)&&(D=null,e?"function"!=typeof e?I=1:(I=2,D=e):I=0),u}function s(e,n){var u=e;if(33>u.charCodeAt(0)&&(u=u.trim()),u=[u],0<j){var s=a(-1,n,u,u,k,x,0,0,0,0);void 0!==s&&"string"==typeof s&&(n=s)}var p=function e(n,u,s,p,f){for(var d,h,m,y,E,O=0,_=0,C=0,S=0,P=0,D=0,T=m=d=0,L=0,R=0,B=0,V=0,N=s.length,U=N-1,z="",H="",W="",G="";L<N;){if(h=s.charCodeAt(L),L===U&&0!==_+S+C+O&&(0!==_&&(h=47===_?10:47),S=C=O=0,N++,U++),0===_+S+C+O){if(L===U&&(0<R&&(z=z.replace(c,"")),0<z.trim().length)){switch(h){case 32:case 9:case 59:case 13:case 10:break;default:z+=s.charAt(L)}h=59}switch(h){case 123:for(d=(z=z.trim()).charCodeAt(0),m=1,V=++L;L<N;){switch(h=s.charCodeAt(L)){case 123:m++;break;case 125:m--;break;case 47:switch(h=s.charCodeAt(L+1)){case 42:case 47:e:{for(T=L+1;T<U;++T)switch(s.charCodeAt(T)){case 47:if(42===h&&42===s.charCodeAt(T-1)&&L+2!==T){L=T+1;break e}break;case 10:if(47===h){L=T+1;break e}}L=T}}break;case 91:h++;case 40:h++;case 34:case 39:for(;L++<U&&s.charCodeAt(L)!==h;);}if(0===m)break;L++}switch(m=s.substring(V,L),0===d&&(d=(z=z.replace(l,"").trim()).charCodeAt(0)),d){case 64:switch(0<R&&(z=z.replace(c,"")),h=z.charCodeAt(1)){case 100:case 109:case 115:case 45:R=u;break;default:R=F}if(V=(m=e(u,R,m,h,f+1)).length,0<j&&(E=a(3,m,R=t(F,z,B),u,k,x,V,h,f,p),z=R.join(""),void 0!==E&&0===(V=(m=E.trim()).length)&&(h=0,m="")),0<V)switch(h){case 115:z=z.replace(w,i);case 100:case 109:case 45:m=z+"{"+m+"}";break;case 107:m=(z=z.replace(g,"$1 $2"))+"{"+m+"}",m=1===I||2===I&&o("@"+m,3)?"@-webkit-"+m+"@"+m:"@"+m;break;default:m=z+m,112===p&&(H+=m,m="")}else m="";break;default:m=e(u,t(u,z,B),m,p,f+1)}W+=m,m=B=R=T=d=0,z="",h=s.charCodeAt(++L);break;case 125:case 59:if(1<(V=(z=(0<R?z.replace(c,""):z).trim()).length))switch(0===T&&(d=z.charCodeAt(0),45===d||96<d&&123>d)&&(V=(z=z.replace(" ",":")).length),0<j&&void 0!==(E=a(1,z,u,n,k,x,H.length,p,f,p))&&0===(V=(z=E.trim()).length)&&(z="\0\0"),d=z.charCodeAt(0),h=z.charCodeAt(1),d){case 0:break;case 64:if(105===h||99===h){G+=z+s.charAt(L);break}default:58!==z.charCodeAt(V-1)&&(H+=r(z,d,h,z.charCodeAt(2)))}B=R=T=d=0,z="",h=s.charCodeAt(++L)}}switch(h){case 13:case 10:47===_?_=0:0===1+d&&107!==p&&0<z.length&&(R=1,z+="\0"),0<j*M&&a(0,z,u,n,k,x,H.length,p,f,p),x=1,k++;break;case 59:case 125:if(0===_+S+C+O){x++;break}default:switch(x++,y=s.charAt(L),h){case 9:case 32:if(0===S+O+_)switch(P){case 44:case 58:case 9:case 32:y="";break;default:32!==h&&(y=" ")}break;case 0:y="\\0";break;case 12:y="\\f";break;case 11:y="\\v";break;case 38:0===S+_+O&&(R=B=1,y="\f"+y);break;case 108:if(0===S+_+O+A&&0<T)switch(L-T){case 2:112===P&&58===s.charCodeAt(L-3)&&(A=P);case 8:111===D&&(A=D)}break;case 58:0===S+_+O&&(T=L);break;case 44:0===_+C+S+O&&(R=1,y+="\r");break;case 34:case 39:0===_&&(S=S===h?0:0===S?h:S);break;case 91:0===S+_+C&&O++;break;case 93:0===S+_+C&&O--;break;case 41:0===S+_+O&&C--;break;case 40:if(0===S+_+O){if(0===d)switch(2*P+3*D){case 533:break;default:d=1}C++}break;case 64:0===_+C+S+O+T+m&&(m=1);break;case 42:case 47:if(!(0<S+O+C))switch(_){case 0:switch(2*h+3*s.charCodeAt(L+1)){case 235:_=47;break;case 220:V=L,_=42}break;case 42:47===h&&42===P&&V+2!==L&&(33===s.charCodeAt(V+2)&&(H+=s.substring(V,L+1)),y="",_=0)}}0===_&&(z+=y)}D=P,P=h,L++}if(0<(V=H.length)){if(R=u,0<j&&(void 0!==(E=a(2,H,R,n,k,x,V,p,f,p))&&0===(H=E).length))return G+H+W;if(H=R.join(",")+"{"+H+"}",0!=I*A){switch(2!==I||o(H,2)||(A=0),A){case 111:H=H.replace(v,":-moz-$1")+H;break;case 112:H=H.replace(b,"::-webkit-input-$1")+H.replace(b,"::-moz-$1")+H.replace(b,":-ms-input-$1")+H}A=0}}return G+H+W}(F,u,n,0,0);return 0<j&&(void 0!==(s=a(-2,p,u,u,k,x,p.length,0,0,0))&&(p=s)),"",A=0,x=k=1,p}var l=/^\0+/g,c=/[\0\r\f]/g,p=/: */g,f=/zoo|gra/,d=/([,: ])(transform)/g,h=/,\r+?/g,m=/([\t\r\n ])*\f?&/g,g=/@(k\w+)\s*(\S*)\s*/,b=/::(place)/g,v=/:(read-only)/g,y=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,E=/([\s\S]*?);/g,O=/-self|flex-/g,_=/[^]*?(:[rp][el]a[\w-]+)[^]*/,C=/stretch|:\s*\w+\-(?:conte|avail)/,S=/([^-])(image-set\()/,x=1,k=1,A=0,I=1,F=[],P=[],j=0,D=null,M=0;return s.use=function e(t){switch(t){case void 0:case null:j=P.length=0;break;default:if("function"==typeof t)P[j++]=t;else if("object"==typeof t)for(var n=0,r=t.length;n<r;++n)e(t[n]);else M=0|!!t}return e},s.set=u,void 0!==e&&u(e),s};function L(e){e&&R.current.insert(e+"}")}var R={current:null},B=function(e,t,n,r,o,i,a,u,s,l){switch(e){case 1:switch(t.charCodeAt(0)){case 64:return R.current.insert(t+";"),"";case 108:if(98===t.charCodeAt(2))return""}break;case 2:if(0===u)return t+"/*|*/";break;case 3:switch(u){case 102:case 112:return R.current.insert(n[0]+t),"";default:return t+(0===l?"/*|*/":"")}case-2:t.split("/*|*/}").forEach(L)}},V=function(e){void 0===e&&(e={});var t,n=e.key||"css";void 0!==e.prefix&&(t={prefix:e.prefix});var r=new T(t);var o,i={};o=e.container||document.head;var a,u=document.querySelectorAll("style[data-emotion-"+n+"]");Array.prototype.forEach.call(u,(function(e){e.getAttribute("data-emotion-"+n).split(" ").forEach((function(e){i[e]=!0})),e.parentNode!==o&&o.appendChild(e)})),r.use(e.stylisPlugins)(B),a=function(e,t,n,o){var i=t.name;R.current=n,r(e,t.styles),o&&(s.inserted[i]=!0)};var s={key:n,sheet:new M({key:n,container:o,nonce:e.nonce,speedy:e.speedy}),nonce:e.nonce,inserted:i,registered:{},insert:a};return s};function N(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]):r+=n+" "})),r}var U=function(e,t,n){var r=e.key+"-"+t.name;if(!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles),void 0===e.inserted[t.name]){var o=t;do{e.insert("."+r,o,e.sheet,!0);o=o.next}while(void 0!==o)}};var z=function(e){for(var t,n=e.length,r=n^n,o=0;n>=4;)t=1540483477*(65535&(t=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+((1540483477*(t>>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),n-=4,++o;switch(n){case 3:r^=(255&e.charCodeAt(o+2))<<16;case 2:r^=(255&e.charCodeAt(o+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(o)))+((1540483477*(r>>>16)&65535)<<16)}return r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16),((r^=r>>>15)>>>0).toString(36)},H={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var W=/[A-Z]|^ms/g,G=/_EMO_([^_]+?)_([^]*?)_EMO_/g,q=function(e){return 45===e.charCodeAt(1)},$=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return q(e)?e:e.replace(W,"-$&").toLowerCase()})),Y=function(e,t){if(null==t||"boolean"==typeof t)return"";switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(G,(function(e,t,n){return Z={name:t,styles:n,next:Z},t}))}return 1===H[e]||q(e)||"number"!=typeof t||0===t?t:t+"px"};function X(e,t,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return Z={name:n.name,styles:n.styles,next:Z},n.name;if(void 0!==n.styles){var o=n.next;if(void 0!==o)for(;void 0!==o;)Z={name:o.name,styles:o.styles,next:Z},o=o.next;return n.styles}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o<n.length;o++)r+=X(e,t,n[o],!1);else for(var i in n){var a=n[i];if("object"!=typeof a)null!=t&&void 0!==t[a]?r+=i+"{"+t[a]+"}":r+=$(i)+":"+Y(i,a)+";";else if(!Array.isArray(a)||"string"!=typeof a[0]||null!=t&&void 0!==t[a[0]]){var u=X(e,t,a,!1);switch(i){case"animation":case"animationName":r+=$(i)+":"+u+";";break;default:r+=i+"{"+u+"}"}}else for(var s=0;s<a.length;s++)r+=$(i)+":"+Y(i,a[s])+";"}return r}(e,t,n);case"function":if(void 0!==e){var i=Z,a=n(e);return Z=i,X(e,t,a,r)}default:if(null==t)return n;var u=t[n];return void 0===u||r?n:u}}var Z,K=/label:\s*([^\s;\n{]+)\s*;/g;var J=function(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var r=!0,o="";Z=void 0;var i=e[0];null==i||void 0===i.raw?(r=!1,o+=X(n,t,i,!1)):o+=i[0];for(var a=1;a<e.length;a++)o+=X(n,t,e[a],46===o.charCodeAt(o.length-1)),r&&(o+=i[a]);K.lastIndex=0;for(var u,s="";null!==(u=K.exec(o));)s+="-"+u[1];return{name:z(o)+s,styles:o,next:Z}};var Q=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return J(t)},ee=Object(A.createContext)("undefined"!=typeof HTMLElement?V():null),te=Object(A.createContext)({}),ne=ee.Provider,re=function(e){return Object(A.forwardRef)((function(t,n){return Object(A.createElement)(ee.Consumer,null,(function(r){return e(t,r,n)}))}))},oe="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",ie=Object.prototype.hasOwnProperty,ae=function(e,t,n,r){var o=null===n?t.css:t.css(n);"string"==typeof o&&void 0!==e.registered[o]&&(o=e.registered[o]);var i=t[oe],a=[o],u="";void 0!==t.className&&(u=N(e.registered,a,t.className));var s=J(a);U(e,s,"string"==typeof i);u+=e.key+"-"+s.name;var l={};for(var c in t)ie.call(t,c)&&"css"!==c&&c!==oe&&(l[c]=t[c]);return l.ref=r,l.className=u,Object(A.createElement)(i,l)},ue=re((function(e,t,n){return"function"==typeof e.css?Object(A.createElement)(te.Consumer,null,(function(r){return ae(t,e,r,n)})):ae(t,e,null,n)}));var se=function(e,t){var n=arguments;if(null==t||!ie.call(t,"css"))return A.createElement.apply(void 0,n);var r=n.length,o=new Array(r);o[0]=ue;var i={};for(var a in t)ie.call(t,a)&&(i[a]=t[a]);i[oe]=e,o[1]=i;for(var u=2;u<r;u++)o[u]=n[u];return A.createElement.apply(null,o)},le=(A.Component,function e(t){for(var n=t.length,r=0,o="";r<n;r++){var i=t[r];if(null!=i){var a=void 0;switch(typeof i){case"boolean":break;case"object":if(Array.isArray(i))a=e(i);else for(var u in a="",i)i[u]&&u&&(a&&(a+=" "),a+=u);break;default:a=i}a&&(o&&(o+=" "),o+=a)}}return o});function ce(e,t,n){var r=[],o=N(e,r,n);return r.length<2?n:o+t(r)}var pe=re((function(e,t){return Object(A.createElement)(te.Consumer,null,(function(n){var r=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];var o=J(n,t.registered);return U(t,o,!1),t.key+"-"+o.name},o={css:r,cx:function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return ce(t.registered,r,le(n))},theme:n},i=e.children(o);return!0,i}))})),fe=n(9),de=n(1),he=n.n(de),me=function(){};function ge(e,t){return t?"-"===t[0]?e+t:e+"__"+t:e}function be(e,t,n){var r=[n];if(t&&e)for(var o in t)t.hasOwnProperty(o)&&t[o]&&r.push("".concat(ge(e,o)));return r.filter((function(e){return e})).map((function(e){return String(e).trim()})).join(" ")}var ve=function(e){return Array.isArray(e)?e.filter(Boolean):"object"===O(e)&&null!==e?[e]:[]};function ye(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function we(e){return ye(e)?window.pageYOffset:e.scrollTop}function Ee(e,t){ye(e)?window.scrollTo(0,t):e.scrollTop=t}function Oe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:me,o=we(e),i=t-o,a=10,u=0;!function t(){var s,l=i*((s=(s=u+=a)/n-1)*s*s+1)+o;Ee(e,l),u<n?window.requestAnimationFrame(t):r(e)}()}function _e(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}var Ce=n(13),Se=n.n(Ce);function xe(e){var t=e.maxHeight,n=e.menuEl,r=e.minHeight,o=e.placement,i=e.shouldScroll,a=e.isFixedPosition,u=e.theme.spacing,s=function(e){var t=getComputedStyle(e),n="absolute"===t.position,r=/(auto|scroll)/,o=document.documentElement;if("fixed"===t.position)return o;for(var i=e;i=i.parentElement;)if(t=getComputedStyle(i),(!n||"static"!==t.position)&&r.test(t.overflow+t.overflowY+t.overflowX))return i;return o}(n),l={placement:"bottom",maxHeight:t};if(!n||!n.offsetParent)return l;var c=s.getBoundingClientRect().height,p=n.getBoundingClientRect(),f=p.bottom,d=p.height,h=p.top,m=n.offsetParent.getBoundingClientRect().top,g=window.innerHeight,b=we(s),v=parseInt(getComputedStyle(n).marginBottom,10),y=parseInt(getComputedStyle(n).marginTop,10),w=m-y,E=g-h,O=w+b,_=c-b-h,C=f-g+b+v,S=b+h-y;switch(o){case"auto":case"bottom":if(E>=d)return{placement:"bottom",maxHeight:t};if(_>=d&&!a)return i&&Oe(s,C,160),{placement:"bottom",maxHeight:t};if(!a&&_>=r||a&&E>=r)return i&&Oe(s,C,160),{placement:"bottom",maxHeight:a?E-v:_-v};if("auto"===o||a){var x=t,k=a?w:O;return k>=r&&(x=Math.min(k-v-u.controlHeight,t)),{placement:"top",maxHeight:x}}if("bottom"===o)return Ee(s,C),{placement:"bottom",maxHeight:t};break;case"top":if(w>=d)return{placement:"top",maxHeight:t};if(O>=d&&!a)return i&&Oe(s,S,160),{placement:"top",maxHeight:t};if(!a&&O>=r||a&&w>=r){var A=t;return(!a&&O>=r||a&&w>=r)&&(A=a?w-y:O-y),i&&Oe(s,S,160),{placement:"top",maxHeight:A}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(o,'".'))}return l}var ke=function(e){return"auto"===e?"bottom":e},Ae=function(e){function t(){var e,n;v(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(n=C(this,(e=S(t)).call.apply(e,[this].concat(o))))),"state",{maxHeight:n.props.maxMenuHeight,placement:null}),g(_(_(n)),"getPlacement",(function(e){var t=n.props,r=t.minMenuHeight,o=t.maxMenuHeight,i=t.menuPlacement,a=t.menuPosition,u=t.menuShouldScrollIntoView,s=t.theme,l=n.context.getPortalPlacement;if(e){var c="fixed"===a,p=xe({maxHeight:o,menuEl:e,minHeight:r,placement:i,shouldScroll:u&&!c,isFixedPosition:c,theme:s});l&&l(p),n.setState(p)}})),g(_(_(n)),"getUpdatedProps",(function(){var e=n.props.menuPlacement,t=n.state.placement||ke(e);return b({},n.props,{placement:t,maxHeight:n.state.maxHeight})})),n}return k(t,e),w(t,[{key:"render",value:function(){return(0,this.props.children)({ref:this.getPlacement,placerProps:this.getUpdatedProps()})}}]),t}(A.Component);g(Ae,"contextTypes",{getPortalPlacement:he.a.func});var Ie=function(e){var t=e.theme,n=t.spacing.baseUnit;return{color:t.colors.neutral40,padding:"".concat(2*n,"px ").concat(3*n,"px"),textAlign:"center"}},Fe=Ie,Pe=Ie,je=function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps;return se("div",h({css:o("noOptionsMessage",e),className:r({"menu-notice":!0,"menu-notice--no-options":!0},n)},i),t)};je.defaultProps={children:"No options"};var De=function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps;return se("div",h({css:o("loadingMessage",e),className:r({"menu-notice":!0,"menu-notice--loading":!0},n)},i),t)};De.defaultProps={children:"Loading..."};var Me=function(e){function t(){var e,n;v(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(n=C(this,(e=S(t)).call.apply(e,[this].concat(o))))),"state",{placement:null}),g(_(_(n)),"getPortalPlacement",(function(e){var t=e.placement;t!==ke(n.props.menuPlacement)&&n.setState({placement:t})})),n}return k(t,e),w(t,[{key:"getChildContext",value:function(){return{getPortalPlacement:this.getPortalPlacement}}},{key:"render",value:function(){var e=this.props,t=e.appendTo,n=e.children,r=e.controlElement,o=e.menuPlacement,i=e.menuPosition,a=e.getStyles,u="fixed"===i;if(!t&&!u||!r)return null;var s=this.state.placement||ke(o),l=function(e){var t=e.getBoundingClientRect();return{bottom:t.bottom,height:t.height,left:t.left,right:t.right,top:t.top,width:t.width}}(r),c=u?0:window.pageYOffset,p=l[s]+c,f=se("div",{css:a("menuPortal",{offset:p,position:i,rect:l})},n);return t?Object(fe.createPortal)(f,t):f}}]),t}(A.Component);g(Me,"childContextTypes",{getPortalPlacement:he.a.func});var Te=Array.isArray,Le=Object.keys,Re=Object.prototype.hasOwnProperty;function Be(e,t){try{return function e(t,n){if(t===n)return!0;if(t&&n&&"object"==O(t)&&"object"==O(n)){var r,o,i,a=Te(t),u=Te(n);if(a&&u){if((o=t.length)!=n.length)return!1;for(r=o;0!=r--;)if(!e(t[r],n[r]))return!1;return!0}if(a!=u)return!1;var s=t instanceof Date,l=n instanceof Date;if(s!=l)return!1;if(s&&l)return t.getTime()==n.getTime();var c=t instanceof RegExp,p=n instanceof RegExp;if(c!=p)return!1;if(c&&p)return t.toString()==n.toString();var f=Le(t);if((o=f.length)!==Le(n).length)return!1;for(r=o;0!=r--;)if(!Re.call(n,f[r]))return!1;for(r=o;0!=r--;)if(!("_owner"===(i=f[r])&&t.$$typeof||e(t[i],n[i])))return!1;return!0}return t!=t&&n!=n}(e,t)}catch(e){if(e.message&&e.message.match(/stack|recursion/i))return console.warn("Warning: react-fast-compare does not handle circular references.",e.name,e.message),!1;throw e}}var Ve=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"render",value:function(){var e=this.props,t=e.children,n=e.className,r=e.cx,o=e.isMulti,i=e.getStyles,a=e.hasValue;return se("div",{css:i("valueContainer",this.props),className:r({"value-container":!0,"value-container--is-multi":o,"value-container--has-value":a},n)},t)}}]),t}(A.Component);function Ne(){var e,t,n=(e=["\n 0%, 80%, 100% { opacity: 0; }\n 40% { opacity: 1; }\n"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return Ne=function(){return n},n}var Ue={name:"19bqh2r",styles:"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;"},ze=function(e){var t=e.size,n=d(e,["size"]);return se("svg",h({height:t,width:t,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:Ue},n))},He=function(e){return se(ze,h({size:20},e),se("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},We=function(e){return se(ze,h({size:20},e),se("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},Ge=function(e){var t=e.isFocused,n=e.theme,r=n.spacing.baseUnit,o=n.colors;return{label:"indicatorContainer",color:t?o.neutral60:o.neutral20,display:"flex",padding:2*r,transition:"color 150ms",":hover":{color:t?o.neutral80:o.neutral40}}},qe=Ge,$e=Ge,Ye=function(){var e=Q.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}(Ne()),Xe=function(e){var t=e.delay,n=e.offset;return se("span",{css:Q({animation:"".concat(Ye," 1s ease-in-out ").concat(t,"ms infinite;"),backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":null,height:"1em",verticalAlign:"top",width:"1em"},"")})},Ze=function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerProps,i=e.isRtl;return se("div",h({},o,{css:r("loadingIndicator",e),className:n({indicator:!0,"loading-indicator":!0},t)}),se(Xe,{delay:0,offset:i}),se(Xe,{delay:160,offset:!0}),se(Xe,{delay:320,offset:!i}))};Ze.defaultProps={size:4};var Ke=function(e){return{label:"input",background:0,border:0,fontSize:"inherit",opacity:e?0:1,outline:0,padding:0,color:"inherit"}},Je=function(e){var t=e.children,n=e.innerProps;return se("div",n,t)},Qe=Je,et=Je,tt=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"render",value:function(){var e=this.props,t=e.children,n=e.innerProps;return se("div",n,t||se(He,{size:14}))}}]),t}(A.Component),nt=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=t.className,o=t.components,i=t.cx,a=t.data,u=t.getStyles,s=t.innerProps,l=t.isDisabled,c=t.removeProps,p=t.selectProps,f=o.Container,d=o.Label,h=o.Remove;return se(pe,null,(function(t){var o=t.css,m=t.cx;return se(f,{data:a,innerProps:b({},s,{className:m(o(u("multiValue",e.props)),i({"multi-value":!0,"multi-value--is-disabled":l},r))}),selectProps:p},se(d,{data:a,innerProps:{className:m(o(u("multiValueLabel",e.props)),i({"multi-value__label":!0},r))},selectProps:p},n),se(h,{data:a,innerProps:b({className:m(o(u("multiValueRemove",e.props)),i({"multi-value__remove":!0},r))},c),selectProps:p}))}))}}]),t}(A.Component);g(nt,"defaultProps",{cropWithEllipsis:!0});var rt={ClearIndicator:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps;return se("div",h({},i,{css:o("clearIndicator",e),className:r({indicator:!0,"clear-indicator":!0},n)}),t||se(He,null))},Control:function(e){var t=e.children,n=e.cx,r=e.getStyles,o=e.className,i=e.isDisabled,a=e.isFocused,u=e.innerRef,s=e.innerProps,l=e.menuIsOpen;return se("div",h({ref:u,css:r("control",e),className:n({control:!0,"control--is-disabled":i,"control--is-focused":a,"control--menu-is-open":l},o)},s),t)},DropdownIndicator:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps;return se("div",h({},i,{css:o("dropdownIndicator",e),className:r({indicator:!0,"dropdown-indicator":!0},n)}),t||se(We,null))},DownChevron:We,CrossIcon:He,Group:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.Heading,a=e.headingProps,u=e.label,s=e.theme,l=e.selectProps;return se("div",{css:o("group",e),className:r({group:!0},n)},se(i,h({},a,{selectProps:l,theme:s,getStyles:o,cx:r}),u),se("div",null,t))},GroupHeading:function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.theme,i=(e.selectProps,d(e,["className","cx","getStyles","theme","selectProps"]));return se("div",h({css:r("groupHeading",b({theme:o},i)),className:n({"group-heading":!0},t)},i))},IndicatorsContainer:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles;return se("div",{css:o("indicatorsContainer",e),className:r({indicators:!0},n)},t)},IndicatorSeparator:function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerProps;return se("span",h({},o,{css:r("indicatorSeparator",e),className:n({"indicator-separator":!0},t)}))},Input:function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerRef,i=e.isHidden,a=e.isDisabled,u=e.theme,s=(e.selectProps,d(e,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return se("div",{css:r("input",b({theme:u},s))},se(Se.a,h({className:n({input:!0},t),inputRef:o,inputStyle:Ke(i),disabled:a},s)))},LoadingIndicator:Ze,Menu:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerRef,a=e.innerProps;return se("div",h({css:o("menu",e),className:r({menu:!0},n)},a,{ref:i}),t)},MenuList:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.isMulti,a=e.innerRef;return se("div",{css:o("menuList",e),className:r({"menu-list":!0,"menu-list--is-multi":i},n),ref:a},t)},MenuPortal:Me,LoadingMessage:De,NoOptionsMessage:je,MultiValue:nt,MultiValueContainer:Qe,MultiValueLabel:et,MultiValueRemove:tt,Option:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.isDisabled,a=e.isFocused,u=e.isSelected,s=e.innerRef,l=e.innerProps;return se("div",h({css:o("option",e),className:r({option:!0,"option--is-disabled":i,"option--is-focused":a,"option--is-selected":u},n),ref:s},l),t)},Placeholder:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps;return se("div",h({css:o("placeholder",e),className:r({placeholder:!0},n)},i),t)},SelectContainer:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.innerProps,a=e.isDisabled,u=e.isRtl;return se("div",h({css:o("container",e),className:r({"--is-disabled":a,"--is-rtl":u},n)},i),t)},SingleValue:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,i=e.isDisabled,a=e.innerProps;return se("div",h({css:o("singleValue",e),className:r({"single-value":!0,"single-value--is-disabled":i},n)},a),t)},ValueContainer:Ve},ot=function(e){return b({},rt,e.components)},it=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],at=function(e){for(var t=0;t<it.length;t++)e=e.replace(it[t].letters,it[t].base);return e},ut=function(e){return e.replace(/^\s+|\s+$/g,"")},st=function(e){return"".concat(e.label," ").concat(e.value)},lt={name:"1laao21-a11yText",styles:"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;"},ct=function(e){return se("span",h({css:lt},e))},pt=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"render",value:function(){var e=this.props,t=(e.in,e.out,e.onExited,e.appear,e.enter,e.exit,e.innerRef),n=(e.emotion,d(e,["in","out","onExited","appear","enter","exit","innerRef","emotion"]));return se("input",h({ref:t},n,{css:Q({label:"dummyInput",background:0,border:0,fontSize:"inherit",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(0)"},"")}))}}]),t}(A.Component),ft=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"componentDidMount",value:function(){this.props.innerRef(Object(fe.findDOMNode)(this))}},{key:"componentWillUnmount",value:function(){this.props.innerRef(null)}},{key:"render",value:function(){return this.props.children}}]),t}(A.Component),dt=["boxSizing","height","overflow","paddingRight","position"],ht={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function mt(e){e.preventDefault()}function gt(e){e.stopPropagation()}function bt(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function vt(){return"ontouchstart"in window||navigator.maxTouchPoints}var yt=!(!window.document||!window.document.createElement),wt=0,Et=function(e){function t(){var e,n;v(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(n=C(this,(e=S(t)).call.apply(e,[this].concat(o))))),"originalStyles",{}),g(_(_(n)),"listenerOptions",{capture:!1,passive:!1}),n}return k(t,e),w(t,[{key:"componentDidMount",value:function(){var e=this;if(yt){var t=this.props,n=t.accountForScrollbars,r=t.touchScrollTarget,o=document.body,i=o&&o.style;if(n&&dt.forEach((function(t){var n=i&&i[t];e.originalStyles[t]=n})),n&&wt<1){var a=parseInt(this.originalStyles.paddingRight,10)||0,u=document.body?document.body.clientWidth:0,s=window.innerWidth-u+a||0;Object.keys(ht).forEach((function(e){var t=ht[e];i&&(i[e]=t)})),i&&(i.paddingRight="".concat(s,"px"))}o&&vt()&&(o.addEventListener("touchmove",mt,this.listenerOptions),r&&(r.addEventListener("touchstart",bt,this.listenerOptions),r.addEventListener("touchmove",gt,this.listenerOptions))),wt+=1}}},{key:"componentWillUnmount",value:function(){var e=this;if(yt){var t=this.props,n=t.accountForScrollbars,r=t.touchScrollTarget,o=document.body,i=o&&o.style;wt=Math.max(wt-1,0),n&&wt<1&&dt.forEach((function(t){var n=e.originalStyles[t];i&&(i[t]=n)})),o&&vt()&&(o.removeEventListener("touchmove",mt,this.listenerOptions),r&&(r.removeEventListener("touchstart",bt,this.listenerOptions),r.removeEventListener("touchmove",gt,this.listenerOptions)))}}},{key:"render",value:function(){return null}}]),t}(A.Component);g(Et,"defaultProps",{accountForScrollbars:!0});var Ot={name:"1dsbpcp",styles:"position:fixed;left:0;bottom:0;right:0;top:0;"},_t=function(e){function t(){var e,n;v(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(n=C(this,(e=S(t)).call.apply(e,[this].concat(o))))),"state",{touchScrollTarget:null}),g(_(_(n)),"getScrollTarget",(function(e){e!==n.state.touchScrollTarget&&n.setState({touchScrollTarget:e})})),g(_(_(n)),"blurSelectInput",(function(){document.activeElement&&document.activeElement.blur()})),n}return k(t,e),w(t,[{key:"render",value:function(){var e=this.props,t=e.children,n=e.isEnabled,r=this.state.touchScrollTarget;return n?se("div",null,se("div",{onClick:this.blurSelectInput,css:Ot}),se(ft,{innerRef:this.getScrollTarget},t),r?se(Et,{touchScrollTarget:r}):null):t}}]),t}(A.PureComponent),Ct=function(e){function t(){var e,n;v(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(n=C(this,(e=S(t)).call.apply(e,[this].concat(o))))),"isBottom",!1),g(_(_(n)),"isTop",!1),g(_(_(n)),"scrollTarget",void 0),g(_(_(n)),"touchStart",void 0),g(_(_(n)),"cancelScroll",(function(e){e.preventDefault(),e.stopPropagation()})),g(_(_(n)),"handleEventDelta",(function(e,t){var r=n.props,o=r.onBottomArrive,i=r.onBottomLeave,a=r.onTopArrive,u=r.onTopLeave,s=n.scrollTarget,l=s.scrollTop,c=s.scrollHeight,p=s.clientHeight,f=n.scrollTarget,d=t>0,h=c-p-l,m=!1;h>t&&n.isBottom&&(i&&i(e),n.isBottom=!1),d&&n.isTop&&(u&&u(e),n.isTop=!1),d&&t>h?(o&&!n.isBottom&&o(e),f.scrollTop=c,m=!0,n.isBottom=!0):!d&&-t>l&&(a&&!n.isTop&&a(e),f.scrollTop=0,m=!0,n.isTop=!0),m&&n.cancelScroll(e)})),g(_(_(n)),"onWheel",(function(e){n.handleEventDelta(e,e.deltaY)})),g(_(_(n)),"onTouchStart",(function(e){n.touchStart=e.changedTouches[0].clientY})),g(_(_(n)),"onTouchMove",(function(e){var t=n.touchStart-e.changedTouches[0].clientY;n.handleEventDelta(e,t)})),g(_(_(n)),"getScrollTarget",(function(e){n.scrollTarget=e})),n}return k(t,e),w(t,[{key:"componentDidMount",value:function(){this.startListening(this.scrollTarget)}},{key:"componentWillUnmount",value:function(){this.stopListening(this.scrollTarget)}},{key:"startListening",value:function(e){e&&("function"==typeof e.addEventListener&&e.addEventListener("wheel",this.onWheel,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchmove",this.onTouchMove,!1))}},{key:"stopListening",value:function(e){"function"==typeof e.removeEventListener&&e.removeEventListener("wheel",this.onWheel,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchmove",this.onTouchMove,!1)}},{key:"render",value:function(){return I.a.createElement(ft,{innerRef:this.getScrollTarget},this.props.children)}}]),t}(A.Component),St=function(e){function t(){return v(this,t),C(this,S(t).apply(this,arguments))}return k(t,e),w(t,[{key:"render",value:function(){var e=this.props,t=e.isEnabled,n=d(e,["isEnabled"]);return t?I.a.createElement(Ct,n):this.props.children}}]),t}(A.Component);g(St,"defaultProps",{isEnabled:!0});var xt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.isSearchable,r=t.isMulti,o=t.label,i=t.isDisabled;switch(e){case"menu":return"Use Up and Down to choose options".concat(i?"":", press Enter to select the currently focused option",", press Escape to exit the menu, press Tab to select the option and exit the menu.");case"input":return"".concat(o||"Select"," is focused ").concat(n?",type to refine list":"",", press Down to open the menu, ").concat(r?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}},kt=function(e,t){var n=t.value,r=t.isDisabled;if(n)switch(e){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(n,", deselected.");case"select-option":return"option ".concat(n,r?" is disabled. Select another option.":", selected.")}},At=function(e){return!!e.isDisabled},It={clearIndicator:$e,container:function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":null,pointerEvents:t?"none":null,position:"relative"}},control:function(e){var t=e.isDisabled,n=e.isFocused,r=e.theme,o=r.colors,i=r.borderRadius,a=r.spacing;return{label:"control",alignItems:"center",backgroundColor:t?o.neutral5:o.neutral0,borderColor:t?o.neutral10:n?o.primary:o.neutral20,borderRadius:i,borderStyle:"solid",borderWidth:1,boxShadow:n?"0 0 0 1px ".concat(o.primary):null,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:a.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:n?o.primary:o.neutral30}}},dropdownIndicator:qe,group:function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},groupHeading:function(e){var t=e.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:"500",marginBottom:"0.25em",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:"uppercase"}},indicatorsContainer:function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing.baseUnit,o=n.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:t?o.neutral10:o.neutral20,marginBottom:2*r,marginTop:2*r,width:1}},input:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,o=n.colors;return{margin:r.baseUnit/2,paddingBottom:r.baseUnit/2,paddingTop:r.baseUnit/2,visibility:t?"hidden":"visible",color:o.neutral80}},loadingIndicator:function(e){var t=e.isFocused,n=e.size,r=e.theme,o=r.colors,i=r.spacing.baseUnit;return{label:"loadingIndicator",color:t?o.neutral60:o.neutral20,display:"flex",padding:2*i,transition:"color 150ms",alignSelf:"center",fontSize:n,lineHeight:1,marginRight:n,textAlign:"center",verticalAlign:"middle"}},loadingMessage:Pe,menu:function(e){var t,n=e.placement,r=e.theme,o=r.borderRadius,i=r.spacing,a=r.colors;return g(t={label:"menu"},function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(n),"100%"),g(t,"backgroundColor",a.neutral0),g(t,"borderRadius",o),g(t,"boxShadow","0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)"),g(t,"marginBottom",i.menuGutter),g(t,"marginTop",i.menuGutter),g(t,"position","absolute"),g(t,"width","100%"),g(t,"zIndex",1),t},menuList:function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:"auto",paddingBottom:n,paddingTop:n,position:"relative",WebkitOverflowScrolling:"touch"}},menuPortal:function(e){var t=e.rect,n=e.offset,r=e.position;return{left:t.left,position:r,top:n,width:t.width,zIndex:1}},multiValue:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius;return{label:"multiValue",backgroundColor:t.colors.neutral10,borderRadius:r/2,display:"flex",margin:n.baseUnit/2,minWidth:0}},multiValueLabel:function(e){var t=e.theme,n=t.borderRadius,r=t.colors,o=e.cropWithEllipsis;return{borderRadius:n/2,color:r.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:o?"ellipsis":null,whiteSpace:"nowrap"}},multiValueRemove:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius,o=t.colors;return{alignItems:"center",borderRadius:r/2,backgroundColor:e.isFocused&&o.dangerLight,display:"flex",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}}},noOptionsMessage:Fe,option:function(e){var t=e.isDisabled,n=e.isFocused,r=e.isSelected,o=e.theme,i=o.spacing,a=o.colors;return{label:"option",backgroundColor:r?a.primary:n?a.primary25:"transparent",color:t?a.neutral20:r?a.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:"".concat(2*i.baseUnit,"px ").concat(3*i.baseUnit,"px"),width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:!t&&(r?a.primary:a.primary50)}}},placeholder:function(e){var t=e.theme,n=t.spacing;return{label:"placeholder",color:t.colors.neutral50,marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2,position:"absolute",top:"50%",transform:"translateY(-50%)"}},singleValue:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,o=n.colors;return{label:"singleValue",color:t?o.neutral40:o.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2,maxWidth:"calc(100% - ".concat(2*r.baseUnit,"px)"),overflow:"hidden",position:"absolute",textOverflow:"ellipsis",whiteSpace:"nowrap",top:"50%",transform:"translateY(-50%)"}},valueContainer:function(e){var t=e.theme.spacing;return{alignItems:"center",display:"flex",flex:1,flexWrap:"wrap",padding:"".concat(t.baseUnit/2,"px ").concat(2*t.baseUnit,"px"),WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}};var Ft,Pt={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}},jt={backspaceRemovesValue:!0,blurInputOnSelect:_e(),captureMenuScroll:!_e(),closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:function(e,t){var n=b({ignoreCase:!0,ignoreAccents:!0,stringify:st,trim:!0,matchFrom:"any"},Ft),r=n.ignoreCase,o=n.ignoreAccents,i=n.stringify,a=n.trim,u=n.matchFrom,s=a?ut(t):t,l=a?ut(i(e)):i(e);return r&&(s=s.toLowerCase(),l=l.toLowerCase()),o&&(s=at(s),l=at(l)),"start"===u?l.substr(0,s.length)===s:l.indexOf(s)>-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:At,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(e){var t=e.count;return"".concat(t," result").concat(1!==t?"s":""," available")},styles:{},tabIndex:"0",tabSelectsValue:!0},Dt=1,Mt=function(e){function t(e){var n;v(this,t),g(_(_(n=C(this,S(t).call(this,e)))),"state",{ariaLiveSelection:"",ariaLiveContext:"",focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,menuOptions:{render:[],focusable:[]},selectValue:[]}),g(_(_(n)),"blockOptionHover",!1),g(_(_(n)),"isComposing",!1),g(_(_(n)),"clearFocusValueOnUpdate",!1),g(_(_(n)),"commonProps",void 0),g(_(_(n)),"components",void 0),g(_(_(n)),"hasGroups",!1),g(_(_(n)),"initialTouchX",0),g(_(_(n)),"initialTouchY",0),g(_(_(n)),"inputIsHiddenAfterUpdate",void 0),g(_(_(n)),"instancePrefix",""),g(_(_(n)),"openAfterFocus",!1),g(_(_(n)),"scrollToFocusedOptionOnUpdate",!1),g(_(_(n)),"userIsDragging",void 0),g(_(_(n)),"controlRef",null),g(_(_(n)),"getControlRef",(function(e){n.controlRef=e})),g(_(_(n)),"focusedOptionRef",null),g(_(_(n)),"getFocusedOptionRef",(function(e){n.focusedOptionRef=e})),g(_(_(n)),"menuListRef",null),g(_(_(n)),"getMenuListRef",(function(e){n.menuListRef=e})),g(_(_(n)),"inputRef",null),g(_(_(n)),"getInputRef",(function(e){n.inputRef=e})),g(_(_(n)),"cacheComponents",(function(e){n.components=ot({components:e})})),g(_(_(n)),"focus",n.focusInput),g(_(_(n)),"blur",n.blurInput),g(_(_(n)),"onChange",(function(e,t){var r=n.props;(0,r.onChange)(e,b({},t,{name:r.name}))})),g(_(_(n)),"setValue",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"set-value",r=arguments.length>2?arguments[2]:void 0,o=n.props,i=o.closeMenuOnSelect,a=o.isMulti;n.onInputChange("",{action:"set-value"}),i&&(n.inputIsHiddenAfterUpdate=!a,n.onMenuClose()),n.clearFocusValueOnUpdate=!0,n.onChange(e,{action:t,option:r})})),g(_(_(n)),"selectOption",(function(e){var t=n.props,r=t.blurInputOnSelect,o=t.isMulti,i=n.state.selectValue;if(o)if(n.isOptionSelected(e,i)){var a=n.getOptionValue(e);n.setValue(i.filter((function(e){return n.getOptionValue(e)!==a})),"deselect-option",e),n.announceAriaLiveSelection({event:"deselect-option",context:{value:n.getOptionLabel(e)}})}else n.isOptionDisabled(e,i)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue([].concat(m(i),[e]),"select-option",e),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));else n.isOptionDisabled(e,i)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue(e,"select-option"),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));r&&n.blurInput()})),g(_(_(n)),"removeValue",(function(e){var t=n.state.selectValue,r=n.getOptionValue(e),o=t.filter((function(e){return n.getOptionValue(e)!==r}));n.onChange(o.length?o:null,{action:"remove-value",removedValue:e}),n.announceAriaLiveSelection({event:"remove-value",context:{value:e?n.getOptionLabel(e):""}}),n.focusInput()})),g(_(_(n)),"clearValue",(function(){var e=n.props.isMulti;n.onChange(e?[]:null,{action:"clear"})})),g(_(_(n)),"popValue",(function(){var e=n.state.selectValue,t=e[e.length-1],r=e.slice(0,e.length-1);n.announceAriaLiveSelection({event:"pop-value",context:{value:t?n.getOptionLabel(t):""}}),n.onChange(r.length?r:null,{action:"pop-value",removedValue:t})})),g(_(_(n)),"getOptionLabel",(function(e){return n.props.getOptionLabel(e)})),g(_(_(n)),"getOptionValue",(function(e){return n.props.getOptionValue(e)})),g(_(_(n)),"getStyles",(function(e,t){var r=It[e](t);r.boxSizing="border-box";var o=n.props.styles[e];return o?o(r,t):r})),g(_(_(n)),"getElementId",(function(e){return"".concat(n.instancePrefix,"-").concat(e)})),g(_(_(n)),"getActiveDescendentId",(function(){var e=n.props.menuIsOpen,t=n.state,r=t.menuOptions,o=t.focusedOption;if(o&&e){var i=r.focusable.indexOf(o),a=r.render[i];return a&&a.key}})),g(_(_(n)),"announceAriaLiveSelection",(function(e){var t=e.event,r=e.context;n.setState({ariaLiveSelection:kt(t,r)})})),g(_(_(n)),"announceAriaLiveContext",(function(e){var t=e.event,r=e.context;n.setState({ariaLiveContext:xt(t,b({},r,{label:n.props["aria-label"]}))})})),g(_(_(n)),"onMenuMouseDown",(function(e){0===e.button&&(e.stopPropagation(),e.preventDefault(),n.focusInput())})),g(_(_(n)),"onMenuMouseMove",(function(e){n.blockOptionHover=!1})),g(_(_(n)),"onControlMouseDown",(function(e){var t=n.props.openMenuOnClick;n.state.isFocused?n.props.menuIsOpen?"INPUT"!==e.target.tagName&&n.onMenuClose():t&&n.openMenu("first"):(t&&(n.openAfterFocus=!0),n.focusInput()),"INPUT"!==e.target.tagName&&e.preventDefault()})),g(_(_(n)),"onDropdownIndicatorMouseDown",(function(e){if(!(e&&"mousedown"===e.type&&0!==e.button||n.props.isDisabled)){var t=n.props,r=t.isMulti,o=t.menuIsOpen;n.focusInput(),o?(n.inputIsHiddenAfterUpdate=!r,n.onMenuClose()):n.openMenu("first"),e.preventDefault(),e.stopPropagation()}})),g(_(_(n)),"onClearIndicatorMouseDown",(function(e){e&&"mousedown"===e.type&&0!==e.button||(n.clearValue(),e.stopPropagation(),n.openAfterFocus=!1,"touchend"===e.type?n.focusInput():setTimeout((function(){return n.focusInput()})))})),g(_(_(n)),"onScroll",(function(e){"boolean"==typeof n.props.closeMenuOnScroll?e.target instanceof HTMLElement&&ye(e.target)&&n.props.onMenuClose():"function"==typeof n.props.closeMenuOnScroll&&n.props.closeMenuOnScroll(e)&&n.props.onMenuClose()})),g(_(_(n)),"onCompositionStart",(function(){n.isComposing=!0})),g(_(_(n)),"onCompositionEnd",(function(){n.isComposing=!1})),g(_(_(n)),"onTouchStart",(function(e){var t=e.touches.item(0);t&&(n.initialTouchX=t.clientX,n.initialTouchY=t.clientY,n.userIsDragging=!1)})),g(_(_(n)),"onTouchMove",(function(e){var t=e.touches.item(0);if(t){var r=Math.abs(t.clientX-n.initialTouchX),o=Math.abs(t.clientY-n.initialTouchY);n.userIsDragging=r>5||o>5}})),g(_(_(n)),"onTouchEnd",(function(e){n.userIsDragging||(n.controlRef&&!n.controlRef.contains(e.target)&&n.menuListRef&&!n.menuListRef.contains(e.target)&&n.blurInput(),n.initialTouchX=0,n.initialTouchY=0)})),g(_(_(n)),"onControlTouchEnd",(function(e){n.userIsDragging||n.onControlMouseDown(e)})),g(_(_(n)),"onClearIndicatorTouchEnd",(function(e){n.userIsDragging||n.onClearIndicatorMouseDown(e)})),g(_(_(n)),"onDropdownIndicatorTouchEnd",(function(e){n.userIsDragging||n.onDropdownIndicatorMouseDown(e)})),g(_(_(n)),"handleInputChange",(function(e){var t=e.currentTarget.value;n.inputIsHiddenAfterUpdate=!1,n.onInputChange(t,{action:"input-change"}),n.onMenuOpen()})),g(_(_(n)),"onInputFocus",(function(e){var t=n.props,r=t.isSearchable,o=t.isMulti;n.props.onFocus&&n.props.onFocus(e),n.inputIsHiddenAfterUpdate=!1,n.announceAriaLiveContext({event:"input",context:{isSearchable:r,isMulti:o}}),n.setState({isFocused:!0}),(n.openAfterFocus||n.props.openMenuOnFocus)&&n.openMenu("first"),n.openAfterFocus=!1})),g(_(_(n)),"onInputBlur",(function(e){n.menuListRef&&n.menuListRef.contains(document.activeElement)?n.inputRef.focus():(n.props.onBlur&&n.props.onBlur(e),n.onInputChange("",{action:"input-blur"}),n.onMenuClose(),n.setState({focusedValue:null,isFocused:!1}))})),g(_(_(n)),"onOptionHover",(function(e){n.blockOptionHover||n.state.focusedOption===e||n.setState({focusedOption:e})})),g(_(_(n)),"shouldHideSelectedOptions",(function(){var e=n.props,t=e.hideSelectedOptions,r=e.isMulti;return void 0===t?r:t})),g(_(_(n)),"onKeyDown",(function(e){var t=n.props,r=t.isMulti,o=t.backspaceRemovesValue,i=t.escapeClearsValue,a=t.inputValue,u=t.isClearable,s=t.isDisabled,l=t.menuIsOpen,c=t.onKeyDown,p=t.tabSelectsValue,f=t.openMenuOnFocus,d=n.state,h=d.focusedOption,m=d.focusedValue,g=d.selectValue;if(!(s||"function"==typeof c&&(c(e),e.defaultPrevented))){switch(n.blockOptionHover=!0,e.key){case"ArrowLeft":if(!r||a)return;n.focusValue("previous");break;case"ArrowRight":if(!r||a)return;n.focusValue("next");break;case"Delete":case"Backspace":if(a)return;if(m)n.removeValue(m);else{if(!o)return;r?n.popValue():u&&n.clearValue()}break;case"Tab":if(n.isComposing)return;if(e.shiftKey||!l||!p||!h||f&&n.isOptionSelected(h,g))return;n.selectOption(h);break;case"Enter":if(229===e.keyCode)break;if(l){if(!h)return;if(n.isComposing)return;n.selectOption(h);break}return;case"Escape":l?(n.inputIsHiddenAfterUpdate=!1,n.onInputChange("",{action:"menu-close"}),n.onMenuClose()):u&&i&&n.clearValue();break;case" ":if(a)return;if(!l){n.openMenu("first");break}if(!h)return;n.selectOption(h);break;case"ArrowUp":l?n.focusOption("up"):n.openMenu("last");break;case"ArrowDown":l?n.focusOption("down"):n.openMenu("first");break;case"PageUp":if(!l)return;n.focusOption("pageup");break;case"PageDown":if(!l)return;n.focusOption("pagedown");break;case"Home":if(!l)return;n.focusOption("first");break;case"End":if(!l)return;n.focusOption("last");break;default:return}e.preventDefault()}}));var r=e.value;n.cacheComponents=P(n.cacheComponents,Be).bind(_(_(n))),n.cacheComponents(e.components),n.instancePrefix="react-select-"+(n.props.instanceId||++Dt);var o=ve(r),i=e.menuIsOpen?n.buildMenuOptions(e,o):{render:[],focusable:[]};return n.state.menuOptions=i,n.state.selectValue=o,n}return k(t,e),w(t,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this.props,n=t.options,r=t.value,o=t.menuIsOpen,i=t.inputValue;if(this.cacheComponents(e.components),e.value!==r||e.options!==n||e.menuIsOpen!==o||e.inputValue!==i){var a=ve(e.value),u=e.menuIsOpen?this.buildMenuOptions(e,a):{render:[],focusable:[]},s=this.getNextFocusedValue(a),l=this.getNextFocusedOption(u.focusable);this.setState({menuOptions:u,selectValue:a,focusedOption:l,focusedValue:s})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)}},{key:"componentDidUpdate",value:function(e){var t,n,r,o,i,a=this.props,u=a.isDisabled,s=a.menuIsOpen,l=this.state.isFocused;(l&&!u&&e.isDisabled||l&&s&&!e.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(t=this.menuListRef,n=this.focusedOptionRef,r=t.getBoundingClientRect(),o=n.getBoundingClientRect(),i=n.offsetHeight/3,o.bottom+i>r.bottom?Ee(t,Math.min(n.offsetTop+n.clientHeight-t.offsetHeight+i,t.scrollHeight)):o.top-i<r.top&&Ee(t,Math.max(n.offsetTop-i,0))),this.scrollToFocusedOptionOnUpdate=!1}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){var e=this.props,t=e.isSearchable,n=e.isMulti;this.announceAriaLiveContext({event:"input",context:{isSearchable:t,isMulti:n}}),this.onInputChange("",{action:"menu-close"}),this.props.onMenuClose()}},{key:"onInputChange",value:function(e,t){this.props.onInputChange(e,t)}},{key:"focusInput",value:function(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function(e){var t=this.state,n=t.menuOptions,r=t.selectValue,o=t.isFocused,i=this.props.isMulti,a="first"===e?0:n.focusable.length-1;if(!i){var u=n.focusable.indexOf(r[0]);u>-1&&(a=u)}this.scrollToFocusedOptionOnUpdate=!(o&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.onMenuOpen(),this.setState({focusedValue:null,focusedOption:n.focusable[a]}),this.announceAriaLiveContext({event:"menu"})}},{key:"focusValue",value:function(e){var t=this.props,n=t.isMulti,r=t.isSearchable,o=this.state,i=o.selectValue,a=o.focusedValue;if(n){this.setState({focusedOption:null});var u=i.indexOf(a);a||(u=-1,this.announceAriaLiveContext({event:"value"}));var s=i.length-1,l=-1;if(i.length){switch(e){case"previous":l=0===u?0:-1===u?s:u-1;break;case"next":u>-1&&u<s&&(l=u+1)}-1===l&&this.announceAriaLiveContext({event:"input",context:{isSearchable:r,isMulti:n}}),this.setState({inputIsHidden:-1!==l,focusedValue:i[l]})}}}},{key:"focusOption",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"first",t=this.props.pageSize,n=this.state,r=n.focusedOption,o=n.menuOptions,i=o.focusable;if(i.length){var a=0,u=i.indexOf(r);r||(u=-1,this.announceAriaLiveContext({event:"menu"})),"up"===e?a=u>0?u-1:i.length-1:"down"===e?a=(u+1)%i.length:"pageup"===e?(a=u-t)<0&&(a=0):"pagedown"===e?(a=u+t)>i.length-1&&(a=i.length-1):"last"===e&&(a=i.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:i[a],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:At(i[a])}})}}},{key:"getTheme",value:function(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(Pt):b({},Pt,this.props.theme):Pt}},{key:"getCommonProps",value:function(){var e=this.clearValue,t=this.getStyles,n=this.setValue,r=this.selectOption,o=this.props,i=o.classNamePrefix,a=o.isMulti,u=o.isRtl,s=o.options,l=this.state.selectValue,c=this.hasValue();return{cx:be.bind(null,i),clearValue:e,getStyles:t,getValue:function(){return l},hasValue:c,isMulti:a,isRtl:u,options:s,selectOption:r,setValue:n,selectProps:o,theme:this.getTheme()}}},{key:"getNextFocusedValue",value:function(e){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var t=this.state,n=t.focusedValue,r=t.selectValue.indexOf(n);if(r>-1){if(e.indexOf(n)>-1)return n;if(r<e.length)return e[r]}return null}},{key:"getNextFocusedOption",value:function(e){var t=this.state.focusedOption;return t&&e.indexOf(t)>-1?t:e[0]}},{key:"hasValue",value:function(){return this.state.selectValue.length>0}},{key:"hasOptions",value:function(){return!!this.state.menuOptions.render.length}},{key:"countOptions",value:function(){return this.state.menuOptions.focusable.length}},{key:"isClearable",value:function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t}},{key:"isOptionDisabled",value:function(e,t){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(e,t)}},{key:"isOptionSelected",value:function(e,t){var n=this;if(t.indexOf(e)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(e,t);var r=this.getOptionValue(e);return t.some((function(e){return n.getOptionValue(e)===r}))}},{key:"filterOption",value:function(e,t){return!this.props.filterOption||this.props.filterOption(e,t)}},{key:"formatOptionLabel",value:function(e,t){if("function"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,r=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:r})}return this.getOptionLabel(e)}},{key:"formatGroupLabel",value:function(e){return this.props.formatGroupLabel(e)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"buildMenuOptions",value:function(e,t){var n=this,r=e.inputValue,o=void 0===r?"":r,i=e.options,a=function(e,r){var i=n.isOptionDisabled(e,t),a=n.isOptionSelected(e,t),u=n.getOptionLabel(e),s=n.getOptionValue(e);if(!(n.shouldHideSelectedOptions()&&a||!n.filterOption({label:u,value:s,data:e},o))){var l=i?void 0:function(){return n.onOptionHover(e)},c=i?void 0:function(){return n.selectOption(e)},p="".concat(n.getElementId("option"),"-").concat(r);return{innerProps:{id:p,onClick:c,onMouseMove:l,onMouseOver:l,tabIndex:-1},data:e,isDisabled:i,isSelected:a,key:p,label:u,type:"option",value:s}}};return i.reduce((function(e,t,r){if(t.options){n.hasGroups||(n.hasGroups=!0);var o=t.options.map((function(t,n){var o=a(t,"".concat(r,"-").concat(n));return o&&e.focusable.push(t),o})).filter(Boolean);if(o.length){var i="".concat(n.getElementId("group"),"-").concat(r);e.render.push({type:"group",key:i,data:t,options:o})}}else{var u=a(t,"".concat(r));u&&(e.render.push(u),e.focusable.push(t))}return e}),{render:[],focusable:[]})}},{key:"constructAriaLiveMessage",value:function(){var e=this.state,t=e.ariaLiveContext,n=e.selectValue,r=e.focusedValue,o=e.focusedOption,i=this.props,a=i.options,u=i.menuIsOpen,s=i.inputValue,l=i.screenReaderStatus,c=r?function(e){var t=e.focusedValue,n=e.getOptionLabel,r=e.selectValue;return"value ".concat(n(t)," focused, ").concat(r.indexOf(t)+1," of ").concat(r.length,".")}({focusedValue:r,getOptionLabel:this.getOptionLabel,selectValue:n}):"",p=o&&u?function(e){var t=e.focusedOption,n=e.getOptionLabel,r=e.options;return"option ".concat(n(t)," focused").concat(t.isDisabled?" disabled":"",", ").concat(r.indexOf(t)+1," of ").concat(r.length,".")}({focusedOption:o,getOptionLabel:this.getOptionLabel,options:a}):"",f=function(e){var t=e.inputValue,n=e.screenReaderMessage;return"".concat(n).concat(t?" for search term "+t:"",".")}({inputValue:s,screenReaderMessage:l({count:this.countOptions()})});return"".concat(c," ").concat(p," ").concat(f," ").concat(t)}},{key:"renderInput",value:function(){var e=this.props,t=e.isDisabled,n=e.isSearchable,r=e.inputId,o=e.inputValue,i=e.tabIndex,a=this.components.Input,u=this.state.inputIsHidden,s=r||this.getElementId("input");if(!n)return I.a.createElement(pt,{id:s,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:me,onFocus:this.onInputFocus,readOnly:!0,disabled:t,tabIndex:i,value:""});var l={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]},c=this.commonProps,p=c.cx,f=c.theme,d=c.selectProps;return I.a.createElement(a,h({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:p,getStyles:this.getStyles,id:s,innerRef:this.getInputRef,isDisabled:t,isHidden:u,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:d,spellCheck:"false",tabIndex:i,theme:f,type:"text",value:o},l))}},{key:"renderPlaceholderOrValue",value:function(){var e=this,t=this.components,n=t.MultiValue,r=t.MultiValueContainer,o=t.MultiValueLabel,i=t.MultiValueRemove,a=t.SingleValue,u=t.Placeholder,s=this.commonProps,l=this.props,c=l.controlShouldRenderValue,p=l.isDisabled,f=l.isMulti,d=l.inputValue,m=l.placeholder,g=this.state,b=g.selectValue,v=g.focusedValue,y=g.isFocused;if(!this.hasValue()||!c)return d?null:I.a.createElement(u,h({},s,{key:"placeholder",isDisabled:p,isFocused:y}),m);if(f)return b.map((function(t,a){var u=t===v;return I.a.createElement(n,h({},s,{components:{Container:r,Label:o,Remove:i},isFocused:u,isDisabled:p,key:e.getOptionValue(t),index:a,removeProps:{onClick:function(){return e.removeValue(t)},onTouchEnd:function(){return e.removeValue(t)},onMouseDown:function(e){e.preventDefault(),e.stopPropagation()}},data:t}),e.formatOptionLabel(t,"value"))}));if(d)return null;var w=b[0];return I.a.createElement(a,h({},s,{data:w,isDisabled:p}),this.formatOptionLabel(w,"value"))}},{key:"renderClearIndicator",value:function(){var e=this.components.ClearIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,i=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||o)return null;var a={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return I.a.createElement(e,h({},t,{innerProps:a,isFocused:i}))}},{key:"renderLoadingIndicator",value:function(){var e=this.components.LoadingIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,i=this.state.isFocused;if(!e||!o)return null;return I.a.createElement(e,h({},t,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:i}))}},{key:"renderIndicatorSeparator",value:function(){var e=this.components,t=e.DropdownIndicator,n=e.IndicatorSeparator;if(!t||!n)return null;var r=this.commonProps,o=this.props.isDisabled,i=this.state.isFocused;return I.a.createElement(n,h({},r,{isDisabled:o,isFocused:i}))}},{key:"renderDropdownIndicator",value:function(){var e=this.components.DropdownIndicator;if(!e)return null;var t=this.commonProps,n=this.props.isDisabled,r=this.state.isFocused,o={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return I.a.createElement(e,h({},t,{innerProps:o,isDisabled:n,isFocused:r}))}},{key:"renderMenu",value:function(){var e=this,t=this.components,n=t.Group,r=t.GroupHeading,o=t.Menu,i=t.MenuList,a=t.MenuPortal,u=t.LoadingMessage,s=t.NoOptionsMessage,l=t.Option,c=this.commonProps,p=this.state,f=p.focusedOption,m=p.menuOptions,g=this.props,b=g.captureMenuScroll,v=g.inputValue,y=g.isLoading,w=g.loadingMessage,E=g.minMenuHeight,O=g.maxMenuHeight,_=g.menuIsOpen,C=g.menuPlacement,S=g.menuPosition,x=g.menuPortalTarget,k=g.menuShouldBlockScroll,A=g.menuShouldScrollIntoView,F=g.noOptionsMessage,P=g.onMenuScrollToTop,j=g.onMenuScrollToBottom;if(!_)return null;var D,M=function(t){var n=f===t.data;return t.innerRef=n?e.getFocusedOptionRef:void 0,I.a.createElement(l,h({},c,t,{isFocused:n}),e.formatOptionLabel(t.data,"menu"))};if(this.hasOptions())D=m.render.map((function(t){if("group"===t.type){t.type;var o=d(t,["type"]),i="".concat(t.key,"-heading");return I.a.createElement(n,h({},c,o,{Heading:r,headingProps:{id:i},label:e.formatGroupLabel(t.data)}),t.options.map((function(e){return M(e)})))}if("option"===t.type)return M(t)}));else if(y){var T=w({inputValue:v});if(null===T)return null;D=I.a.createElement(u,c,T)}else{var L=F({inputValue:v});if(null===L)return null;D=I.a.createElement(s,c,L)}var R={minMenuHeight:E,maxMenuHeight:O,menuPlacement:C,menuPosition:S,menuShouldScrollIntoView:A},B=I.a.createElement(Ae,h({},c,R),(function(t){var n=t.ref,r=t.placerProps,a=r.placement,u=r.maxHeight;return I.a.createElement(o,h({},c,R,{innerRef:n,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove},isLoading:y,placement:a}),I.a.createElement(St,{isEnabled:b,onTopArrive:P,onBottomArrive:j},I.a.createElement(_t,{isEnabled:k},I.a.createElement(i,h({},c,{innerRef:e.getMenuListRef,isLoading:y,maxHeight:u}),D))))}));return x||"fixed"===S?I.a.createElement(a,h({},c,{appendTo:x,controlElement:this.controlRef,menuPlacement:C,menuPosition:S}),B):B}},{key:"renderFormField",value:function(){var e=this,t=this.props,n=t.delimiter,r=t.isDisabled,o=t.isMulti,i=t.name,a=this.state.selectValue;if(i&&!r){if(o){if(n){var u=a.map((function(t){return e.getOptionValue(t)})).join(n);return I.a.createElement("input",{name:i,type:"hidden",value:u})}var s=a.length>0?a.map((function(t,n){return I.a.createElement("input",{key:"i-".concat(n),name:i,type:"hidden",value:e.getOptionValue(t)})})):I.a.createElement("input",{name:i,type:"hidden"});return I.a.createElement("div",null,s)}var l=a[0]?this.getOptionValue(a[0]):"";return I.a.createElement("input",{name:i,type:"hidden",value:l})}}},{key:"renderLiveRegion",value:function(){return this.state.isFocused?I.a.createElement(ct,{"aria-live":"polite"},I.a.createElement("p",{id:"aria-selection-event"}," ",this.state.ariaLiveSelection),I.a.createElement("p",{id:"aria-context"}," ",this.constructAriaLiveMessage())):null}},{key:"render",value:function(){var e=this.components,t=e.Control,n=e.IndicatorsContainer,r=e.SelectContainer,o=e.ValueContainer,i=this.props,a=i.className,u=i.id,s=i.isDisabled,l=i.menuIsOpen,c=this.state.isFocused,p=this.commonProps=this.getCommonProps();return I.a.createElement(r,h({},p,{className:a,innerProps:{id:u,onKeyDown:this.onKeyDown},isDisabled:s,isFocused:c}),this.renderLiveRegion(),I.a.createElement(t,h({},p,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:s,isFocused:c,menuIsOpen:l}),I.a.createElement(o,h({},p,{isDisabled:s}),this.renderPlaceholderOrValue(),this.renderInput()),I.a.createElement(n,h({},p,{isDisabled:s}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}]),t}(A.Component);g(Mt,"defaultProps",jt);var Tt,Lt,Rt,Bt={defaultInputValue:"",defaultMenuIsOpen:!1,defaultValue:null},Vt=function(e){var t,n;return n=t=function(t){function n(){var e,t;v(this,n);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return g(_(_(t=C(this,(e=S(n)).call.apply(e,[this].concat(o))))),"select",void 0),g(_(_(t)),"state",{inputValue:void 0!==t.props.inputValue?t.props.inputValue:t.props.defaultInputValue,menuIsOpen:void 0!==t.props.menuIsOpen?t.props.menuIsOpen:t.props.defaultMenuIsOpen,value:void 0!==t.props.value?t.props.value:t.props.defaultValue}),g(_(_(t)),"onChange",(function(e,n){t.callProp("onChange",e,n),t.setState({value:e})})),g(_(_(t)),"onInputChange",(function(e,n){var r=t.callProp("onInputChange",e,n);t.setState({inputValue:void 0!==r?r:e})})),g(_(_(t)),"onMenuOpen",(function(){t.callProp("onMenuOpen"),t.setState({menuIsOpen:!0})})),g(_(_(t)),"onMenuClose",(function(){t.callProp("onMenuClose"),t.setState({menuIsOpen:!1})})),t}return k(n,t),w(n,[{key:"focus",value:function(){this.select.focus()}},{key:"blur",value:function(){this.select.blur()}},{key:"getProp",value:function(e){return void 0!==this.props[e]?this.props[e]:this.state[e]}},{key:"callProp",value:function(e){if("function"==typeof this.props[e]){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return(t=this.props)[e].apply(t,r)}}},{key:"render",value:function(){var t=this,n=this.props,r=(n.defaultInputValue,n.defaultMenuIsOpen,n.defaultValue,d(n,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return I.a.createElement(e,h({},r,{ref:function(e){t.select=e},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))}}]),n}(A.Component),g(t,"defaultProps",Bt),n},Nt=(A.Component,Vt(Mt)),Ut=n(7),zt=n(4),Ht={cacheOptions:!1,defaultOptions:!1,filterOption:null},Wt=Vt(Mt),Gt=(Tt=Wt,Rt=Lt=function(e){function t(e){var n;return v(this,t),g(_(_(n=C(this,S(t).call(this)))),"select",void 0),g(_(_(n)),"lastRequest",void 0),g(_(_(n)),"mounted",!1),g(_(_(n)),"optionsCache",{}),g(_(_(n)),"handleInputChange",(function(e,t){var r=n.props,o=r.cacheOptions,i=function(e,t,n){if(n){var r=n(e,t);if("string"==typeof r)return r}return e}(e,t,r.onInputChange);if(!i)return delete n.lastRequest,void n.setState({inputValue:"",loadedInputValue:"",loadedOptions:[],isLoading:!1,passEmptyOptions:!1});if(o&&n.optionsCache[i])n.setState({inputValue:i,loadedInputValue:i,loadedOptions:n.optionsCache[i],isLoading:!1,passEmptyOptions:!1});else{var a=n.lastRequest={};n.setState({inputValue:i,isLoading:!0,passEmptyOptions:!n.state.loadedInputValue},(function(){n.loadOptions(i,(function(e){n.mounted&&(e&&(n.optionsCache[i]=e),a===n.lastRequest&&(delete n.lastRequest,n.setState({isLoading:!1,loadedInputValue:i,loadedOptions:e||[],passEmptyOptions:!1})))}))}))}return i})),n.state={defaultOptions:Array.isArray(e.defaultOptions)?e.defaultOptions:void 0,inputValue:void 0!==e.inputValue?e.inputValue:"",isLoading:!0===e.defaultOptions,loadedOptions:[],passEmptyOptions:!1},n}return k(t,e),w(t,[{key:"componentDidMount",value:function(){var e=this;this.mounted=!0;var t=this.props.defaultOptions,n=this.state.inputValue;!0===t&&this.loadOptions(n,(function(t){if(e.mounted){var n=!!e.lastRequest;e.setState({defaultOptions:t||[],isLoading:n})}}))}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){e.cacheOptions!==this.props.cacheOptions&&(this.optionsCache={}),e.defaultOptions!==this.props.defaultOptions&&this.setState({defaultOptions:Array.isArray(e.defaultOptions)?e.defaultOptions:void 0})}},{key:"componentWillUnmount",value:function(){this.mounted=!1}},{key:"focus",value:function(){this.select.focus()}},{key:"blur",value:function(){this.select.blur()}},{key:"loadOptions",value:function(e,t){var n=this.props.loadOptions;if(!n)return t();var r=n(e,t);r&&"function"==typeof r.then&&r.then(t,(function(){return t()}))}},{key:"render",value:function(){var e=this,t=this.props,n=(t.loadOptions,d(t,["loadOptions"])),r=this.state,o=r.defaultOptions,i=r.inputValue,a=r.isLoading,u=r.loadedInputValue,s=r.loadedOptions,l=r.passEmptyOptions?[]:i&&u?s:o||[];return I.a.createElement(Tt,h({},n,{ref:function(t){e.select=t},options:l,isLoading:a,onInputChange:this.handleInputChange}))}}]),t}(A.Component),g(Lt,"defaultProps",Ht),Rt);function qt(e){return(qt="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})(e)}function $t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Yt(e){return(Yt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Xt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Zt(e,t){return(Zt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Kt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Jt=envira_args.options.galleries.map((function(e){return Object.assign({},{value:e.id,label:e.title.rendered})})),Qt=function(e){function t(e){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==qt(t)&&"function"!=typeof t?Xt(e):t}(this,Yt(t).apply(this,arguments)),Kt(Xt(n),"loadOptions",(function(e){if(!e)return[];if(!n._mounted)return[];return a()({path:"/wp/v2/envira-gallery?search="+e}).then((function(e){return e})).then((function(e){return e.map((function(e){return Object.assign({},{value:e.id,label:e.title.rendered})}))}))})),Kt(Xt(n),"handleInputChange",(function(e){var t=n.props.onSelect;n.setState({selectedOption:e}),t(e)}));var r=""===n.props.title?Object(s.__)("(No Title)"):n.props.title;return n.state={selectedOption:null!=n.props.galleryId?{value:n.props.galleryId,label:r}:"",defaultOptions:Jt},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Zt(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this._mounted=!0}},{key:"componentWillUnmount",value:function(){this._mounted=!1}},{key:"componentDidUpdate",value:function(e){e.galleryId!=this.props.galleryId&&this._mounted&&this.setState({selectedOption:{value:this.props.galleryId,label:this.props.title}})}},{key:"render",value:function(){var e=this.state,t=e.selectedOption,n=e.defaultOptions;return wp.element.createElement(o.Fragment,null,wp.element.createElement(Gt,{placeholder:this.props.placeholder,value:t,filterOptions:!1,cacheOptions:!0,defaultOptions:n,onChange:this.handleInputChange,loadOptions:this.loadOptions}))}}])&&$t(n.prototype,r),i&&$t(n,i),t}(o.Component),en=Object(l.compose)([Object(u.withSelect)((function(e,t){var n=t.clientId,r=e("core/block-editor").getBlock(n);return r?{clientId:n,galleryId:r.attributes?r.attributes.galleryId:null,title:r.attributes?r.attributes.title:""}:{clientId:null,galleryId:null,title:""}})),Object(u.withDispatch)((function(e,t){var n=t.clientId;return{onSelect:function(t){e("core/block-editor").updateBlockAttributes(n,{galleryId:t.value,title:t.label})}}}))])(Qt);function tn(e){return(tn="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})(e)}function nn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function rn(e){return(rn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function on(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function an(e,t){return(an=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function un(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var sn=[{value:"0",label:Object(s.__)("None")},{value:"1",label:Object(s.__)("Small")},{value:"5",label:Object(s.__)("Medium")},{value:"20",label:Object(s.__)("Large")},{value:"custom",label:Object(s.__)("Custom")}],ln=function(e){function t(e){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==tn(t)&&"function"!=typeof t?on(e):t}(this,rn(t).apply(this,arguments)),un(on(n),"changeColumns",(function(e){n.setState({columns:e.value}),n.props.updateAttribute("columns",e.value)})),un(on(n),"changeCustomMargin",(function(e){e=""==e||isNaN(e)?null:parseInt(e),n.setState({custom_margins:null===e?"":e}),n.props.updateAttribute("custom_margins",e)})),un(on(n),"changeRowHeight",(function(e){e=""==e||isNaN(e)?null:parseInt(e),n.setState({row_height:null===e?"":e}),n.props.updateAttribute("row_height",e)})),un(on(n),"changeMargins",(function(e){n.setState({margins:e}),n.props.updateAttribute("margins",e)})),un(on(n),"toggleLightbox",(function(e){n.setState({lightbox_enabled:e}),n.props.updateAttribute("lightbox_enabled",e)})),un(on(n),"toggleIsotope",(function(e){n.setState({isotope:e}),n.props.updateAttribute("isotope",e)})),un(on(n),"onLightboxThemeChange",(function(e){n.setState({lightbox_theme:e}),n.props.updateAttribute("lightbox_theme",e)})),un(on(n),"onImageSizeChange",(function(e){n.setState({image_size:e.value}),n.props.updateAttribute("image_size",e.value)})),un(on(n),"onSelectedImageTitleChange",(function(e){var t=n.state.selectedImage;t.title=e,n.setState({selectedImage:t})})),un(on(n),"clearSelectedImage",(function(e){n.props.setAttributes({selectedImage:null})})),un(on(n),"onSelectedImageTitleBlur",(function(e){var t=n.state.selectedImage,r=n.props.galleryId;t.title=e.target.value,n.setState({selectedImage:t});var o={gallery_data:{update_image:t,attach_id:t.id,updated_image:t}};return a()({path:"/wp/v2/envira-gallery/".concat(r),method:"POST",data:o})})),un(on(n),"onSelectedImageCaptionChange",(function(e){var t=n.state.selectedImage;t.caption=e,n.setState({selectedImage:t})})),un(on(n),"onSelectedImageCaptionBlur",(function(e){var t=n.state,r=t.selectedImage,o=t.galleryId;r.caption=e.target.value,n.setState({selectedImage:r});var i={gallery_data:{update_image:!0,attach_id:r.id,updated_image:r}};return a()({path:"/wp/v2/envira-gallery/".concat(o),method:"PUT",data:i}).then((function(e){return e})).then((function(e){return e}))}));var r=null!=n.props.galleryId;return n.state={hasGallery:r,column_options:envira_args.options.columns,lightbox_options:envira_args.options.lightbox_themes,sorting_options:envira_args.options.sorting_options,image_sizes:envira_args.options.image_sizes,galleryId:n.props.galleryId,columns:n.props.columns,margins:n.props.margins,custom_margins:n.props.custom_margins,row_height:n.props.row_height,lightbox_enabled:n.props.lightbox_enabled,lightbox_theme:n.props.lightbox_theme,isotope:n.props.isotope,image_size:n.props.image_size,selectedImage:n.props.selectedImage},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&an(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this._mounted=!0}},{key:"componentWillUnmount",value:function(){this._mounted=!1}},{key:"componentDidUpdate",value:function(e){var t=null!=this.props.galleryId;if(!this._mounted)return null;this.props.selectedImage!=e.selectedImage&&this.setState({selectedImage:this.props.selectedImage}),this.props.attributes!=e.attributes&&this.setState({hasGallery:t,galleryId:this.props.galleryId,columns:this.props.columns,margins:this.props.margins,custom_margins:this.props.custom_margins,row_height:this.props.row_height,lightbox_enabled:this.props.lightbox_enabled,lightbox_theme:this.props.lightbox_theme,isotope:this.props.isotope,image_size:this.props.image_size})}},{key:"renderGalleryPanel",value:function(){var e=this.state,t=e.hasGallery,n=e.columns,r=e.margins,i=e.row_height,a=e.column_options,u=e.isotope,l=e.custom_margins;if(e.image_sizes,e.image_size,!1===t)return null;var c=sn.find((function(e){return e.value==r}));c=void 0===c?{value:"custom",label:Object(s.__)("Custom")}:c;var p=a.find((function(e){return e.value==n}));return wp.element.createElement("div",null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Select Layout")),wp.element.createElement(Nt,{value:p,onChange:this.changeColumns,options:a}),"0"===this.props.columns&&wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Set Row Height")),wp.element.createElement(zt.TextControl,{value:i,onChange:this.changeRowHeight})),"0"!=this.props.columns&&wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Enable Isotope")),wp.element.createElement(zt.ToggleControl,{checked:u,onChange:this.toggleIsotope})),wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Gallery Margins")),wp.element.createElement(zt.SelectControl,{value:this.props.margins,onChange:this.changeMargins,options:sn}),"custom"===c.value&&wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Custom Margin")),wp.element.createElement(zt.TextControl,{value:l,onChange:this.changeCustomMargin})))}},{key:"renderLightboxPanel",value:function(){var e=this.state,t=e.hasGallery,n=e.lightbox_options,r=e.lightbox_enabled;return e.lightbox_theme,!1===t?null:wp.element.createElement(zt.PanelBody,{title:Object(s.__)("Lightbox"),className:"envira-inspector-panelbody"},wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Enable Lightbox?")),wp.element.createElement(zt.ToggleControl,{checked:r,onChange:this.toggleLightbox}),r&&wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Select Lightbox Theme")),wp.element.createElement(zt.SelectControl,{value:this.props.lightbox_theme,onChange:this.onLightboxThemeChange,options:n})))}},{key:"renderImageEditPanel",value:function(){var e=this.state.selectedImage,t="",n="";return null!=e&&(t=null!==e.title?e.title:"",n=null!==e.caption?e.caption:""),wp.element.createElement(Ut.InspectorControls,null,wp.element.createElement(zt.PanelBody,{title:Object(s.__)("Image"),className:"envira-inspector-panelbody"},wp.element.createElement(zt.Button,{onClick:this.clearSelectedImage,isLink:!0},"Go Back"),wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Title")),wp.element.createElement(zt.TextControl,{value:t,onBlur:this.onSelectedImageTitleBlur,onChange:this.onSelectedImageTitleChange})),wp.element.createElement(o.Fragment,null,wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Caption")),wp.element.createElement(zt.TextareaControl,{value:n,onBlur:this.onSelectedImageCaptionBlur,onChange:this.onSelectedImageCaptionChange}))))}},{key:"render",value:function(){var e=this.props.galleryId;return null!==this.props.selectedImage?[this.renderImageEditPanel()]:wp.element.createElement(Ut.InspectorControls,null,wp.element.createElement(zt.PanelBody,{title:Object(s.__)("Gallery"),className:"envira-inspector-panelbody"},wp.element.createElement("h3",{className:"envira-heading"},Object(s.__)("Search for a Gallery")),wp.element.createElement(en,{clientId:this.props.clientId,placeholder:" "}),null!=e&&wp.element.createElement(zt.Button,{isDefault:!0,target:"_blank",className:"envira-button",href:envira_args.admin_url+"post.php?post="+e+"&action=edit"},"Edit Gallery"),this.renderGalleryPanel()),this.renderLightboxPanel())}}])&&nn(n.prototype,r),i&&nn(n,i),t}(o.Component),cn=Object(l.compose)([Object(u.withSelect)((function(e,t){var n=t.clientId,r=e("core/block-editor").getBlock(n);return{clientId:n,attributes:r.attributes?r.attributes:{},galleryId:r.attributes?r.attributes.galleryId:null,columns:r.attributes?r.attributes.columns:0,margins:r.attributes?r.attributes.margins:1,row_height:r.attributes?r.attributes.row_height:100,lightbox_enabled:!!r.attributes&&r.attributes.lightbox_enabled,lightbox_theme:r.attributes?r.attributes.lightbox_theme:"base_dark",custom_margins:!!r.attributes&&r.attributes.custom_margins,isotope:!!r.attributes&&r.attributes.isotope,selectedImage:r.attributes?r.attributes.selectedImage:{},images:r.attributes?r.attributes.images:{}}})),Object(u.withDispatch)((function(e,t){var n=t.clientId;return{updateAttribute:function(t,r){e("core/block-editor").updateBlockAttributes(n,un({},t,r))}}}))])(ln),pn=Object(l.compose)([Object(u.withSelect)((function(e,t){var n=t.clientId,r=e("core/block-editor").getBlock(n);return{clientId:n,galleryId:r.attributes?r.attributes.galleryId:null}}))])((function(e){var t=e.galleryId;return wp.element.createElement(o.Fragment,null,wp.element.createElement(Ut.BlockControls,null,wp.element.createElement(zt.Toolbar,null,t&&wp.element.createElement(o.Fragment,null,wp.element.createElement(zt.IconButton,{className:"components-toolbar__control",label:Object(s.__)("Edit gallery"),icon:"edit",target:"_blank",href:envira_args.admin_url+"post.php?post="+t+"&action=edit"})))))}));function fn(e){return(fn="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})(e)}function dn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function hn(e){return(hn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function mn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function gn(e,t){return(gn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var bn=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,t){return!t||"object"!==fn(t)&&"function"!=typeof t?mn(e):t}(this,hn(t).apply(this,arguments))).updateGallery=n.updateGallery.bind(mn(n)),n}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&gn(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this._mounted=!0}},{key:"componentWillUnmount",value:function(){this._mounted=!1}},{key:"shouldComponentUpdate",value:function(e){return e.attributes.selectedImage==this.props.attributes.selectedImage&&e.attributes!=this.props.attributes}},{key:"componentDidUpdate",value:function(e){this.props.galleryId===e.galleryId&&this.updateGallery()}},{key:"updateGallery",value:function(){if(null==this.props.galleryId)return null;if(null==this.props.attributes)return null;if(!this._mounted)return null;var e="custom"===this.props.attributes.margins?this.props.attributes.custom_margins:this.props.attributes.margins,t={gallery_data:{config:{columns:this.props.attributes.columns,justified_margins:e,justified_row_height:this.props.attributes.row_height,gutter:e,margin:e,isotope:this.props.attributes.isotope,lightbox_enabled:this.props.attributes.lightbox_enabled,lightbox_theme:this.props.attributes.lightbox_theme,image_size:this.props.attributes.image_size}}};return a()({path:"/wp/v2/envira-gallery/".concat(this.props.galleryId),method:"PUT",data:t}),!0}},{key:"render",value:function(){return null}}])&&dn(n.prototype,r),o&&dn(n,o),t}(o.Component),vn=Object(l.compose)([Object(u.withSelect)((function(e,t){var n=t.clientId,r=e("core/block-editor").getBlock(n);return{clientId:n,galleryId:r.attributes.galleryId?r.attributes.galleryId:null,title:r.attributes.title?r.attributes.title:"",attributes:r.attributes?r.attributes:{}}}))])(bn),yn=n(10),wn=n.n(yn),En=function(e){var t=e.selected;return wp.element.createElement("div",{style:t?{left:"6px",top:"6px",position:"relative",zIndex:"1"}:{display:"none"}},wp.element.createElement("svg",{style:{fill:"white",position:"absolute"},width:"24px",height:"24px"},wp.element.createElement("circle",{cx:"12.5",cy:"12.2",r:"8.292"})),wp.element.createElement("svg",{style:{fill:"#7cc048",position:"absolute"},width:"24px",height:"24px"},wp.element.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})))};function On(e){return(On="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})(e)}function _n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Cn(e){return(Cn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Sn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function xn(e,t){return(xn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function kn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var An=function(e){function t(e){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==On(t)&&"function"!=typeof t?Sn(e):t}(this,Cn(t).apply(this,arguments)),kn(Sn(n),"outsideClick",(function(e){e.stopPropagation(),n.node.current.contains(e.target)||(n.setState({isImageSelected:!1}),n.props.setAttributes({selectedImage:null}))})),kn(Sn(n),"handleOnClick",(function(e){var t=n.state.isImageSelected;e.stopPropagation(),n.setState({isImageSelected:!t}),t?n.props.setAttributes({selectedImage:null}):n.props.setAttributes({selectedImage:n.props.data})}));var r="0"!=n.props.attributes.margins?n.props.attributes.margins:"0";return n.node=Object(o.createRef)(),n.state={isImageSelected:!1,itemStyles:{paddingLeft:"0"!=n.props.attributes.columns?r/2+"px":"0px",paddingRight:"0"!=n.props.attributes.columns?r/2+"px":"0px",paddingBottom:"0"!=n.props.attributes.columns?r+"px":"0px"}},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&xn(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){document.addEventListener("mousedown",this.outsideClick,!1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("mousedown",this.outsideClick,!1)}},{key:"componentDidUpdate",value:function(e){if(e.attributes!=this.props.attributes){var t="custom"===this.props.attributes.margins?this.props.attributes.custom_margins:this.props.attributes.margins,n=null!==this.props.attributes.selectedImage&&this.props.attributes.selectedImage.id;this.setState({isImageSelected:n==this.props.data.id,itemStyles:{paddingLeft:"0"!=this.props.attributes.columns?t/2+"px":"0px",paddingRight:"0"!=this.props.attributes.columns?t/2+"px":"0px",paddingBottom:"0"!=this.props.attributes.columns?t+"px":"0px"}})}}},{key:"render",value:function(){var e=this.state.isImageSelected,t=wn()({"envira-gallery-item":!0});return wp.element.createElement("div",{className:t,style:this.state.itemStyles,ref:this.node},wp.element.createElement("div",{className:"envira-gallery-item-inner",key:this.props.key},wp.element.createElement(En,{selected:!!e}),wp.element.createElement("img",{src:this.props.data.src,onClick:this.handleOnClick})))}}])&&_n(n.prototype,r),i&&_n(n,i),t}(o.Component),In=n(20);function Fn(e){return(Fn="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})(e)}function Pn(){return(Pn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function jn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Dn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jn(n,!0).forEach((function(t){Bn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jn(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Mn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Tn(e){return(Tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ln(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Rn(e,t){return(Rn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Vn={backgroundColor:"#eee",cursor:"pointer",overflow:"hidden",position:"relative"},Nn=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==Fn(t)&&"function"!=typeof t?Ln(e):t}(this,Tn(t).apply(this,arguments)),Bn(Ln(n),"outsideClick",(function(e){e.stopPropagation(),n.node.current.contains(e.target)||(n.setState({isSelected:!1}),n.props.setAttributes({selectedImage:null}))})),Bn(Ln(n),"handleOnClick",(function(e){var t=n.state.isSelected;e.stopPropagation(),n.setState({isSelected:!t}),t?n.props.setAttributes({selectedImage:null}):n.props.setAttributes({selectedImage:n.props.photo})})),n.node=Object(o.createRef)(),n.state={isSelected:!1},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Rn(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){document.addEventListener("mousedown",this.outsideClick,!1),this._mounted=!0}},{key:"componentWillUnmount",value:function(){document.removeEventListener("mousedown",this.outsideClick,!1),this._mounted=!1}},{key:"componentDidUpdate",value:function(e){e.attributes!=this.props.attributes&&this._mounted&&null!=this.props.attributes.selectedImage&&this.setState({isSelected:this.props.attributes.selectedImage.id==this.props.photo.id})}},{key:"render",value:function(){var e=this.props,t=(e.index,e.onClick,e.photo),n=e.margin,r=e.direction,o=e.top,i=e.left,a=(e.max_height,e.selected,e.clientID,e.setAttributes,e.attributes,this.state.isSelected),u={display:"block",maxHeight:t.height};return"column"===r&&(u.position="absolute",u.left=i,u.top=o),wp.element.createElement("div",{style:Dn({margin:n,height:t.height,width:t.width},Vn),className:a?"":"not-selected"},wp.element.createElement(En,{selected:!!a}),wp.element.createElement("img",Pn({style:u},t,{onClick:this.handleOnClick,ref:this.node})),wp.element.createElement("style",null,".not-selected:hover{outline:2px solid #06befa}"))}}])&&Mn(n.prototype,r),i&&Mn(n,i),t}(o.Component),Un=he.a.shape({key:he.a.string,src:he.a.string.isRequired,width:he.a.number.isRequired,height:he.a.number.isRequired,alt:he.a.string,title:he.a.string,srcSet:he.a.oneOfType([he.a.string,he.a.array]),sizes:he.a.oneOfType([he.a.string,he.a.array])});Nn.propTypes={index:he.a.number.isRequired,onClick:he.a.func,photo:Un.isRequired,margin:he.a.number,top:function(e){if("column"===e.direction&&"number"!=typeof e.top)return new Error("top is a required number when direction is set to `column`")},left:function(e){if("column"===e.direction&&"number"!=typeof e.left)return new Error("left is a required number when direction is set to `column`")},direction:he.a.string};var zn=Nn,Hn=function(e,t){return t||(t=0),Number(Math.round(e+"e"+t)+"e-"+t)};function Wn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Gn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var qn=function(e){for(var t=e.photos,n=e.columns,r=e.containerWidth,o=e.margin,i=(r-2*o*n)/n,a=t.map((function(e){var t=e.height/e.width*i;return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Wn(n,!0).forEach((function(t){Gn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wn(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e,{width:Hn(i,1),height:Hn(t,1)})})),u=[],s=[],l=0;l<n;l++)u[l]=Hn(l*(i+2*o),1),s[l]=0;return a.map((function(e){var t=s.reduce((function(e,t,n){return e=t<s[e]?n:e}),0);e.top=s[t],e.left=u[t],s[t]=s[t]+e.height+2*o;var n=s.reduce((function(e,t,n){return e=t>s[e]?n:e}),0);return e.containerHeight=s[n],e}))},$n=function(e){var t=e.width,n=e.height;return Hn(t/n,2)};function Yn(e){this.content=[],this.scoreFunction=e}Yn.prototype={push:function(e){this.content.push(e),this.bubbleUp(this.content.length-1)},pop:function(){var e=this.content[0],t=this.content.pop();return this.content.length>0&&(this.content[0]=t,this.sinkDown(0)),e},remove:function(e){for(var t=this.content.length,n=0;n<t;n++)if(this.content[n]==e){var r=this.content.pop();if(n==t-1)break;this.content[n]=r,this.bubbleUp(n),this.sinkDown(n);break}},size:function(){return this.content.length},bubbleUp:function(e){for(var t=this.content[e],n=this.scoreFunction(t);e>0;){var r=Math.floor((e+1)/2)-1,o=this.content[r];if(n>=this.scoreFunction(o))break;this.content[r]=t,this.content[e]=o,e=r}},sinkDown:function(e){for(var t=this.content.length,n=this.content[e],r=this.scoreFunction(n);;){var o=2*(e+1),i=o-1,a=null;if(i<t){var u=this.content[i],s=this.scoreFunction(u);s<r&&(a=i)}if(o<t){var l=this.content[o];this.scoreFunction(l)<(null==a?r:s)&&(a=o)}if(null==a)break;this.content[e]=this.content[a],this.content[a]=n,e=a}}};var Xn=function(e,t,n){return function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse()}(function(e,t,n){var r={},o={},i={};i[t]=0;var a=new Yn((function(e){return e.weight}));for(a.push({id:t,weight:0});a.size();){var u=a.pop(),s=u.id;if(!o[s]){var l=e(s)||{};for(var c in o[s]=1,l){var p=u.weight+l[c];(void 0===i[c]||i[c]>p)&&(i[c]=p,a.push({id:c,weight:p}),r[c]=s)}}}if(void 0===i[n])throw new Error("There is no path from ".concat(t," to ").concat(n));return r}(e,t,n),n)},Zn=function(e,t,n){return(t-e.length*(2*n))/e.reduce((function(e,t){return e+$n(t)}),0)},Kn=function(e,t,n,r,o,i){var a=e.slice(t,n),u=Zn(a,r,i);return Math.pow(Math.abs(u-o),2)},Jn=function(e){var t=e.containerWidth,n=e.limitNodeSearch,r=e.targetRowHeight,o=e.margin,i=e.photos,a=function(e,t,n,r,o){return function(i){var a={};a[+(i=+i)]=0;for(var u=i+1;u<n.length+1&&!(u-i>r);++u)a[u.toString()]=Kn(n,i,u,t,e,o);return a}}(r,t,i,n,o),u=Xn(a,"0",i.length);u=u.map((function(e){return+e}));for(var s=1;s<u.length;++s)for(var l=i.slice(u[s-1],u[s]),c=Zn(l,t,o),p=u[s-1];p<u[s];++p)i[p].width=Hn(c*$n(i[p]),1),i[p].height=c;return i};function Qn(e){return(Qn="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})(e)}function er(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function tr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function nr(e){return(nr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function rr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function or(e,t){return(or=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ir(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ar=function(e){function t(){var e,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return n=function(e,t){return!t||"object"!==Qn(t)&&"function"!=typeof t?rr(e):t}(this,(e=nr(t)).call.apply(e,[this].concat(o))),ir(rr(n),"state",{containerWidth:0}),ir(rr(n),"handleClick",(function(e,t){var r=t.index,o=n.props,i=o.photos;(0,o.onClick)(e,{index:r,photo:i[r],previous:i[r-1]||null,next:i[r+1]||null})})),n}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&or(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){var e=this;this.animationFrameID=null,this.observer=new In.a((function(t){var n=t[0].contentRect.width;e.state.containerWidth!==n&&(e.animationFrameID=window.requestAnimationFrame((function(){e.setState({containerWidth:Math.floor(n)})})))})),this.observer.observe(this._gallery)}},{key:"componentDidUpdate",value:function(){}},{key:"componentWillUnmount",value:function(){this.observer.disconnect(),window.cancelAnimationFrame(this.animationFrameID)}},{key:"render",value:function(){var e=this,t=this.state.containerWidth;if(!t)return wp.element.createElement("div",{ref:function(t){return e._gallery=t}}," ");var n,r,o=this.props,i=o.margin,a=o.onClick,u=o.direction,s=o.photos,l=t-1;if("row"===u){var c=this.props,p=c.limitNodeSearch,f=c.targetRowHeight;"function"==typeof p&&(p=p(t)),"function"==typeof f&&(f=f(t)),void 0===p&&(p=1,t>=450&&(p=function(e){var t=e.targetRowHeight,n=e.containerWidth;return Hn(n/t/1.5)+8}({containerWidth:t,targetRowHeight:f}))),n={display:"flex",flexWrap:"wrap",flexDirection:"row"},r=Jn({containerWidth:l,limitNodeSearch:p,targetRowHeight:f,margin:i,photos:s})}if("column"===u){var d=this.props.columns;"function"==typeof d&&(d=d(t)),void 0===d&&(d=1,t>=500&&(d=2),t>=900&&(d=3),t>=1500&&(d=4)),n={position:"relative"},r=qn({containerWidth:l,columns:d,margin:i,photos:s}),n.height=r[r.length-1].containerHeight}var h=this.props,m=h.clientId,g=h.targetRowHeight,b=h.renderImage,v=void 0===b?zn:b,y=h.setAttributes,w=h.attributes;return wp.element.createElement("div",{className:"react-photo-gallery--gallery"},wp.element.createElement("div",{ref:function(t){return e._gallery=t},style:n},r.map((function(t,n){var r=t.left,o=t.top,s=(t.key,t.containerHeight,er(t,["left","top","key","containerHeight"]));return wp.element.createElement(v,{key:t.id,margin:i,index:n,photo:s,direction:u,left:r,top:o,max_height:g,clientId:m,onClick:a?e.handleClick:null,setAttributes:y,attributes:w})}))))}}])&&tr(n.prototype,r),o&&tr(n,o),t}(I.a.Component);ar.propTypes={photos:he.a.arrayOf(Un).isRequired,direction:he.a.string,onClick:he.a.func,columns:he.a.oneOfType([he.a.func,he.a.number]),targetRowHeight:he.a.oneOfType([he.a.func,he.a.number]),limitNodeSearch:he.a.oneOfType([he.a.func,he.a.number]),margin:he.a.number,renderImage:he.a.func},ar.defaultProps={margin:2,direction:"row",targetRowHeight:300};var ur=ar;function sr(e){return(sr="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})(e)}function lr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function cr(e,t){return!t||"object"!==sr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function pr(e){return(pr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function fr(e,t){return(fr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function dr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var hr=function(e){function t(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),cr(this,pr(t).apply(this,arguments))}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&fr(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){for(var e={},t=[],n=0;n<this.props.columns;n++)e["column".concat(n)]=[];for(var r=0;r<this.props.children.length;r++){var o=r%this.props.columns;e["column".concat(o)].push(wp.element.createElement("div",{style:{marginBottom:"".concat(this.props.margin,"px")}},this.props.children[r]))}for(var i=0;i<this.props.columns;i++)t.push(wp.element.createElement("div",{style:{marginLeft:"".concat(i>0?this.props.margin:0,"px"),flex:1}},e["column".concat(i)]));return wp.element.createElement("div",{className:"envira-gallery-wrap envira-gallery-isotope",style:{display:"flex"}},t)}}])&&lr(n.prototype,r),o&&lr(n,o),t}(o.Component);dr(hr,"propTypes",{columns:he.a.number.isRequired,margin:he.a.number.isRequired,images:he.a.arrayOf(he.a.element)}),dr(hr,"defaultProps",{columns:2,margin:0});var mr=hr;function gr(e){return(gr="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})(e)}function br(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function vr(e,t){return!t||"object"!==gr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function yr(e){return(yr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function wr(e,t){return(wr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Er(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Or=function(e){function t(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),vr(this,yr(t).apply(this,arguments))}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&wr(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props.columns,t="0"!==e?e+"-columns":"automatic",n=wn()("envira-gallery-public","envira-clear",Er({}," envira-gallery-".concat(t),!0));return wp.element.createElement("div",{className:"envira-gallery-wrap"},wp.element.createElement("div",{className:n},this.props.children))}}])&&br(n.prototype,r),o&&br(n,o),t}(o.Component);Er(Or,"propTypes",{columns:he.a.number.isRequired,margin:he.a.number.isRequired,children:he.a.arrayOf(he.a.element)}),Er(Or,"defaultProps",{columns:2,margin:0});var _r=Or;n(26);function Cr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Sr=function(e){var t,n=e.className,r=e.big,o=e.color;return wp.element.createElement(zt.Placeholder,null,wp.element.createElement("div",{className:"envira-isLoading"},wp.element.createElement("div",{className:wn()("envira-loading",(t={},Cr(t,n,n),Cr(t,"big",r),Cr(t,o,o),t))},wp.element.createElement("div",null),wp.element.createElement("div",null),wp.element.createElement("div",null),wp.element.createElement("div",null))))};Sr.propTypes={big:he.a.bool,color:he.a.oneOf(["green","gray"])},Sr.defaultProps={big:!1,color:"green"};var xr=Sr;n(28);function kr(e){return(kr="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})(e)}function Ar(){return(Ar=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function Ir(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Fr(e,t){return!t||"object"!==kr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Pr(e){return(Pr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function jr(e,t){return(jr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Dr=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=Fr(this,Pr(t).apply(this,arguments))).state={isLoadingGallery:!0,isotope:!1,activeGallery:null},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&jr(e,t)}(t,e),n=t,(r=[{key:"shouldComponentUpdate",value:function(){return!0}},{key:"renderGallery",value:function(){var e=this.state,t=(e.isLoadingGallery,e.activeGallery,e.selectedImage,this.props),n=t.clientId,r=t.attributes,o=t.columns,i=t.isotope,a=t.row_height,u=t.margins,s=t.custom_margins,l=t.images,c=this.props;if(0===parseInt(o)){var p="custom"===u?s:u;return wp.element.createElement(ur,Ar({photos:l,clientID:n,targetRowHeight:parseInt(a),margin:parseInt(p)},c))}return i?wp.element.createElement(mr,{columns:parseInt(o)},Object.keys(l).map((function(e){return wp.element.createElement(An,Ar({key:e,data:l[e],attributes:r},c))}))):wp.element.createElement(_r,{columns:o},Object.keys(l).map((function(e){return wp.element.createElement(An,Ar({key:e,data:l[e],attributes:r},c))})))}},{key:"render",value:function(){var e=this.props,t=e.isSelected,n=e.images;return null!=n?null!=n?wp.element.createElement(o.Fragment,null,wp.element.createElement(Ut.MediaUploadCheck,null,wp.element.createElement(zt.DropZone,{onFilesDrop:this.props.onFilesUpload})),this.renderGallery(),t&&wp.element.createElement("div",{className:"envira-uploader"},wp.element.createElement(Ut.MediaUploadCheck,null,wp.element.createElement(zt.FormFileUpload,{isLarge:!0,className:"envira-media__button",onChange:this.props.onUpload,accept:"image/*",multiple:!0,icon:"plus"},Object(s.__)("Upload")),wp.element.createElement(Ut.MediaUpload,{onSelect:this.props.onSelect,allowedTypes:["image"],multiple:!0,render:function(e){var t=e.open;return wp.element.createElement(zt.IconButton,{className:"envira-media__button",label:Object(s.__)("Upload from Media Library"),icon:"format-gallery",onClick:t},Object(s.__)("Media Library"))}})))):wp.element.createElement(o.Fragment,null,wp.element.createElement(Ut.MediaUploadCheck,null,wp.element.createElement(zt.DropZone,{onFilesDrop:this.props.onFilesUpload}),wp.element.createElement(zt.FormFileUpload,{isLarge:!0,className:"editor-media-placeholder__button",onChange:this.props.onUpload,accept:!1,multiple:!0},Object(s.__)("Upload")),wp.element.createElement(Ut.MediaUpload,{multiple:!0,onSelect:this.props.onSelect,value:{}.id,render:function(e){var t=e.open;return wp.element.createElement(zt.Button,{isLarge:!0,className:"editor-media-placeholder__button",onClick:t},Object(s.__)("Media Library"))}}))):wp.element.createElement(o.Fragment,null,wp.element.createElement(xr,null))}}])&&Ir(n.prototype,r),i&&Ir(n,i),t}(o.Component),Mr=Object(l.compose)([Object(u.withSelect)((function(e,t){var n=t.clientId,r=e("core/block-editor").getBlock(n);return{clientId:n,galleryId:r.attributes.galleryId,columns:r.attributes.columns,row_height:r.attributes.row_height,margins:r.attributes.margins,isotope:r.attributes.isotope,custom_margins:r.attributes.custom_margins,image_size:r.attributes.image_size,editMode:r.attributes.editMode,images:r.attributes.images,isLoading:r.attributes.isLoading,attributes:r.attributes}})),Object(u.withDispatch)((function(e,t){var n=t.clientId;return{setLoading:function(t){e("core/block-editor").updateBlockAttributes(n,{isLoading:t})},setGallery:function(t){e("core/block-editor").updateBlockAttributes(n,{galleryId:t})},onActivateGallery:function(t){if(void 0===t)return null;e("core/block-editor").updateBlockAttributes(n,{columns:t.columns,row_height:t.justified_row_height,margins:"0"!=t.columns?t.gutter:t.justified_margins,custom_margins:"0"!=t.columns?t.gutter:t.justified_margins,lightbox_enabled:t.lightbox_enabled,isotope:t.isotope})}}}))])(Dr),Tr=wp.element.createElement("svg",{id:"envira-logo",xmlns:"http://www.w3.org/2000/svg",width:"400",height:"41.333",viewBox:"0 0 400 41.333"},wp.element.createElement("g",{id:"Layer_1_1_"},wp.element.createElement("path",{d:"M80.339,279.15c0.337,0.628,0.932,1.585,1.35,1.892c0.419,0.308,0.874,0.533-0.091,0.126 c-0.964-0.408-1.669-1.564-2.136-2.439c-0.359-0.673-0.668-1.286-1.338-1.741c-0.67-0.455,0.078-0.135,0.078-0.135 C79.427,277.451,79.871,278.276,80.339,279.15 M79.053,281.124c1.335,1.04,2.601,0.6,3.179,0.539l1.041,1.035h0.384l-1.196-1.188 c-0.009-0.712,1.636-5.325-5.441-5.325C77.792,278.841,77.719,280.084,79.053,281.124",fill:"#7bc049",transform:"matrix(4.08032 0 0 4.08032 -309.725 -1118.87)"}),wp.element.createElement("g",{transform:"matrix(4.08032 0 0 4.08032 -299.725 -1118.87)",fill:"#231f20"},wp.element.createElement("path",{d:"M82.952,276.099h4.718v0.455h-4.225v2.605h3.799v0.455h-3.799v2.662h4.273v0.455h-4.765V276.099z"}),wp.element.createElement("path",{d:"M89.679,276.099h0.464l4.576,5.77v-5.77h0.474v6.632h-0.369l-4.671-5.893v5.893h-0.474V276.099z"}),wp.element.createElement("path",{d:"M96.974,276.099h0.55l2.596,6.101l2.605-6.101h0.521l-2.918,6.679h-0.436L96.974,276.099z"}),wp.element.createElement("rect",{x:"105.093",y:"276.099",width:"0.493",height:"6.632"}),wp.element.createElement("path",{d:"M110.73,279.538c0.278,0,0.535-0.035,0.772-0.104c0.237-0.069,0.441-0.169,0.611-0.298 c0.171-0.129,0.305-0.287,0.403-0.474c0.098-0.186,0.147-0.399,0.147-0.639v-0.019c0-0.448-0.166-0.802-0.497-1.061 c-0.332-0.259-0.801-0.388-1.407-0.388h-2.264v2.984H110.73z M108.002,276.099h2.785c0.411,0,0.774,0.058,1.09,0.175 s0.575,0.276,0.777,0.478c0.158,0.158,0.281,0.343,0.369,0.554s0.133,0.437,0.133,0.677v0.019c0,0.278-0.049,0.526-0.147,0.744 c-0.098,0.218-0.234,0.406-0.407,0.564c-0.174,0.158-0.379,0.286-0.616,0.384c-0.237,0.098-0.494,0.166-0.772,0.204l2.189,2.833 h-0.625l-2.113-2.747h-0.019h-2.151v2.747h-0.493V276.099z"}),wp.element.createElement("path",{d:"M119.721,280.429l-1.743-3.837l-1.753,3.837H119.721z M117.751,276.052h0.474l3.089,6.679h-0.54 l-0.843-1.857h-3.913l-0.843,1.857h-0.512L117.751,276.052z"}),wp.element.createElement("path",{d:"M126.107,282.845c-0.518,0-0.988-0.087-1.412-0.261c-0.423-0.174-0.785-0.414-1.085-0.72 c-0.3-0.306-0.532-0.666-0.696-1.08c-0.164-0.414-0.246-0.864-0.246-1.35v-0.019c0-0.461,0.084-0.9,0.251-1.317 c0.167-0.417,0.403-0.782,0.706-1.094c0.303-0.313,0.665-0.561,1.085-0.744c0.42-0.183,0.88-0.275,1.378-0.275 c0.291,0,0.554,0.021,0.791,0.062c0.237,0.041,0.456,0.099,0.658,0.175c0.202,0.076,0.393,0.169,0.573,0.279 c0.18,0.111,0.355,0.238,0.526,0.384l-0.739,0.881c-0.126-0.107-0.256-0.205-0.388-0.294c-0.133-0.088-0.272-0.163-0.417-0.223 c-0.145-0.06-0.305-0.107-0.478-0.142c-0.174-0.035-0.365-0.052-0.573-0.052c-0.303,0-0.586,0.063-0.848,0.189 c-0.262,0.126-0.489,0.295-0.682,0.507c-0.193,0.212-0.344,0.46-0.455,0.744c-0.111,0.284-0.166,0.584-0.166,0.9v0.019 c0,0.341,0.054,0.657,0.161,0.947c0.107,0.291,0.261,0.54,0.46,0.748c0.199,0.208,0.436,0.373,0.711,0.493 c0.275,0.12,0.583,0.18,0.924,0.18c0.316,0,0.611-0.046,0.886-0.137s0.513-0.213,0.715-0.365v-1.241h-1.696v-1.014h2.823v2.785 c-0.164,0.139-0.346,0.272-0.545,0.398c-0.199,0.126-0.414,0.237-0.644,0.332c-0.231,0.095-0.478,0.169-0.744,0.223 C126.675,282.818,126.397,282.845,126.107,282.845z"}),wp.element.createElement("path",{d:"M134.785,280.097l-1.146-2.653l-1.137,2.653H134.785z M133.118,276.052h1.08l2.918,6.679h-1.232 l-0.673-1.601h-3.136l-0.682,1.601H130.2L133.118,276.052z"}),wp.element.createElement("path",{d:"M138.632,276.099h1.165v5.571h3.486v1.061h-4.652V276.099z"}),wp.element.createElement("path",{d:"M144.875,276.099h1.165v5.571h3.486v1.061h-4.652V276.099z"}),wp.element.createElement("path",{d:"M151.119,276.099h4.917v1.042h-3.752v1.724h3.325v1.042h-3.325v1.781h3.799v1.042h-4.964V276.099z"}),wp.element.createElement("path",{d:"M160.716,279.387c0.417,0,0.748-0.099,0.995-0.298c0.246-0.199,0.37-0.469,0.37-0.81v-0.019 c0-0.36-0.12-0.633-0.36-0.82c-0.24-0.186-0.578-0.279-1.014-0.279h-1.696v2.226H160.716z M157.845,276.099h2.956 c0.417,0,0.786,0.058,1.108,0.175c0.322,0.117,0.591,0.279,0.805,0.488c0.177,0.183,0.313,0.395,0.407,0.635 c0.095,0.24,0.142,0.505,0.142,0.796v0.019c0,0.272-0.039,0.516-0.118,0.734c-0.079,0.218-0.188,0.411-0.327,0.578 c-0.139,0.167-0.305,0.309-0.497,0.426s-0.406,0.207-0.64,0.27l1.791,2.511h-1.374l-1.63-2.312h-0.019h-1.44v2.312h-1.165V276.099 z"}),wp.element.createElement("path",{d:"M167.026,280.116l-2.634-4.017h1.374l1.857,2.937l1.876-2.937h1.336l-2.634,3.989v2.643h-1.175 V280.116z"}))));function Lr(e){return(Lr="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})(e)}function Rr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Br(e,t){return!t||"object"!==Lr(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Vr(e){return(Vr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Nr(e,t){return(Nr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Ur=function(e){function t(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),Br(this,Vr(t).apply(this,arguments))}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Nr(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){return wp.element.createElement(zt.Placeholder,{key:"placeholder",className:"envira-block__placeholder"},wp.element.createElement("div",{className:"envira-block__placeholder-brand"},Tr),wp.element.createElement("div",{className:"envira-block-instructions"},wp.element.createElement("p",null,Object(s.__)("Drop your images here, upload new images, select images from your Media Library or select an existing gallery."))),wp.element.createElement("div",{className:"envira-block-select"},wp.element.createElement(en,{clientId:this.props.clientId,placeholder:Object(s.__)("Search for a gallery.")})),wp.element.createElement(Ut.MediaUploadCheck,null,wp.element.createElement(zt.DropZone,{onFilesDrop:this.props.onFilesUpload}),wp.element.createElement(zt.FormFileUpload,{isLarge:!0,className:"editor-media-placeholder__button",onChange:this.props.onUpload,accept:!1,multiple:!0},Object(s.__)("Upload")),wp.element.createElement(Ut.MediaUpload,{multiple:!0,onSelect:this.props.onSelect,value:{}.id,render:function(e){var t=e.open;return wp.element.createElement(zt.Button,{isLarge:!0,className:"editor-media-placeholder__button",onClick:t},Object(s.__)("Media Library"))}})))}}])&&Rr(n.prototype,r),o&&Rr(n,o),t}(o.Component),zr=Object(l.compose)([Object(u.withSelect)((function(e){return{pageTitle:(0,e("core/editor").getEditedPostAttribute)("title")}})),Object(u.withDispatch)((function(e,t){var n=t.clientId;return{setGallery:function(t){e("core/block-editor").updateBlockAttributes(n,{galleryId:t})}}}))])(Ur),Hr=n(14),Wr=function(e){var t=Object(Hr.pick)(e,["alt","id","link","caption","media_details"]);return t.src=Object(Hr.get)(e,["sizes","large","url"])||Object(Hr.get)(e,["media_details","sizes","large","source_url"])||e.url,t.media_details&&(t.height=t.media_details.height,t.width=t.media_details.width),t};function Gr(e){return(Gr="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})(e)}function qr(){return(qr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function $r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Yr(e){return(Yr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Xr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Zr(e,t){return(Zr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Kr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Jr=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==Gr(t)&&"function"!=typeof t?Xr(e):t}(this,Yr(t).apply(this,arguments)),Kr(Xr(n),"getActiveGallery",(function(e){return null==e?null:a()({path:"/wp/v2/envira-gallery/"+e}).then((function(e){return e})).then((function(e){return n.props.setAttributes({title:e.gallery_data.config.title,images:e.gallery_data.gallery,columns:e.gallery_data.config.columns,row_height:e.gallery_data.config.justified_row_height,lazyload_enabled:e.gallery_data.config.lazy_loading,lightbox_enabled:e.gallery_data.config.lightbox_enabled,lightbox_theme:e.gallery_data.config.lightbox_theme}),e.gallery_data}))})),Kr(Xr(n),"onUpload",(function(e){n.onFilesUpload(e.target.files)})),Kr(Xr(n),"onSelect",(function(e){var t=n.props.attributes,r=e.map(Wr);null===t.galleryId?n.createGallery(r):n.updateGallery(r)})),Kr(Xr(n),"onFilesUpload",(function(e){var t=n.props,r=t.setAttributes,o=t.attributes,i=o.images;n.setState({progress:0,isLoadingImages:!0});var a,u=e.length,s=i;Object(c.mediaUpload)({allowedTypes:["image"],filesList:e,onFileChange:function(e){var t=e.filter((function(e){return Object(p.isBlobURL)(e.url)}));if(0===parseInt(o.columns)){var i=e.filter((function(e){return!0!==Object(p.isBlobURL)(e.url)})),l=(a=i.map(Wr)).length/u*100;n.setState({progress:l,isLoadingImages:!0})}else a=e.map(Wr);if(s){envira_args.media_position;var c=s.concat(a);r({images:c})}else r({images:a});void 0!==t&&0!==t.length||(n.setState({isLoadingImages:!1,progress:0}),null===o.galleryId?n.createGallery(a):n.updateGallery(a))}})})),Kr(Xr(n),"updateGallery",(function(e){var t=n.props.attributes,r={gallery_data:{gallery:e}};return a()({path:"/wp/v2/envira-gallery/".concat(t.galleryId),method:"PUT",data:r}).then((function(e){return e})).then((function(e){return n.props.setAttributes({images:e.gallery_data.gallery}),e}))})),n.state={progress:0,isLoadingImages:!1},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Zr(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this._mounted=!0,null!==this.props.attributes.galleryId&&this.getActiveGallery(this.props.attributes.galleryId)}},{key:"componentWillUnmount",value:function(){this._mounted=!1}},{key:"componentDidUpdate",value:function(e){var t=this.props.attributes.galleryId;this.props.isSelected||this.props.setAttributes({selectedImage:null}),e.attributes.galleryId!=t&&this.getActiveGallery(t)}},{key:"createGallery",value:function(e){var t=this,n={title:this.props.pageTitle,status:"publish",gallery_data:{gallery:e}};return a()({path:"/wp/v2/envira-gallery",method:"POST",data:n}).then((function(e){return e})).then((function(e){return t.props.setGallery(e.id),e}))}},{key:"renderToolbar",value:function(){return wp.element.createElement(pn,qr({onSelect:this.onSelect},this.props))}},{key:"renderControls",value:function(){return wp.element.createElement(cn,this.props)}},{key:"renderBlock",value:function(){var e,t=this.props,n=t.clientId,r=t.attributes,i=r.galleryId,a=r.isLoading,u=r.images,s=this.state,l=s.isLoadingImages,c=s.progress;return l&&(e=wp.element.createElement(f.Progress,{percent:c,status:"success"})),a?wp.element.createElement(xr,null):null===i?wp.element.createElement(o.Fragment,null,e,wp.element.createElement(zr,{onFilesUpload:this.onFilesUpload,onUpload:this.onUpload,onSelect:this.onSelect,clientId:n})):wp.element.createElement(o.Fragment,null,e,wp.element.createElement(Mr,qr({onFilesUpload:this.onFilesUpload,onUpload:this.onUpload,onSelect:this.onSelect,images:u},this.props)))}},{key:"render",value:function(){return wp.element.createElement(o.Fragment,null,wp.element.createElement(vn,this.props),this.renderToolbar(),this.renderControls(),this.renderBlock())}}])&&$r(n.prototype,r),i&&$r(n,i),t}(o.Component),Qr=Object(l.compose)([Object(u.withSelect)((function(e){return{pageTitle:(0,e("core/editor").getEditedPostAttribute)("title")}})),Object(u.withDispatch)((function(e,t){var n=t.clientId;return{setGallery:function(t){e("core/block-editor").updateBlockAttributes(n,{galleryId:t})}}}))])(Jr);var eo,to,no,ro=wp.element.createElement("svg",(no="0 0 448 512",(to="viewBox")in(eo={width:"20px",height:"20px",viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"})?Object.defineProperty(eo,to,{value:no,enumerable:!0,configurable:!0,writable:!0}):eo[to]=no,eo),wp.element.createElement("path",{fill:"#7abd4e",d:"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"})),oo={id:"envira-gallery",title:Object(s.__)("Envira Gallery"),description:Object(s.__)("Select a gallery below to add it to your page."),icon:ro,category:"common",keywords:[Object(s.__)("Envira Gallery"),Object(s.__)("Photo"),Object(s.__)("Image")],supports:{align:["wide","full"]},attributes:{galleryId:{type:"int",default:null},title:{type:"string",default:""},columns:{type:"string",default:0},row_height:{type:"string",default:100},margins:{type:"string",default:1},custom_margins:{type:"string",default:1},lightbox_enabled:{type:"boolean",default:!0},lazyload_enabled:{type:"boolean",default:!0},titles_enabled:{type:"boolean",default:!0},captions_enabled:{type:"boolean",default:!0},isotope:{type:"boolean",default:!0},sort_order:{type:"string",default:""},lightbox_theme:{type:"string",default:"base_dark"},editMode:{type:"boolean",default:!1},isLoading:{type:"boolean",default:!1},selectedImage:{type:"string",default:null},images:{type:"array",default:[]}},edit:Qr,save:function(e){var t=e.attributes.galleryId,n="[envira-gallery id='".concat(t,"']");return t?wp.element.createElement(o.RawHTML,null,n):null}};n(30);Object(r.registerBlockType)("envira/envira-gallery",oo)}]);
assets/js/envira.js CHANGED
@@ -1,287 +1,294 @@
1
- /**
2
- * envira.js is a placeholder, which CodeKit attaches the following JS files to, before compiling as min/envira-min.js:
3
- */
4
- // @codekit-append "lib/jquery.justifiedGallery.js";
5
- // @codekit-append "lib/enviraJustifiedGallery-extensions.js";
6
- // @codekit-append "lib/touchsupport.js";
7
- // @codekit-append "lib/touchswipe.js";
8
- // @codekit-append "lib/mousewheel.js";
9
- // @codekit-append "lib/imagesloaded.js";
10
- // @codekit-append "lib/isotope.js";
11
- // @codekit-append "lib/fancybox.js";
12
- // @codekit-append "lib/fancybox-buttons.js";
13
- // @codekit-append "lib/fancybox-media.js";
14
- // @codekit-append "lib/fancybox-thumbs.js";
15
- // @codekit-append "lib/fancybox-video.js";
16
- // @codekit-append "lib/responsivelyLazy.js";
17
- /**
18
- * To load more JS resources:
19
- * - Add them to the lib subfolder
20
- * - Add the to the imports directive of this file in CodeKit
21
- */
22
-
23
- /**
24
- * If a lightbox caption's link is an anchor, close the lightbox
25
- */
26
- jQuery( document ).ready( function( $ ) {
27
-
28
- $( 'body' ).on( 'click', 'div.envirabox-title a[href*="#"]:not([href="#"])', function( e ) {
29
-
30
- if ( location.pathname.replace( /^\//, '' ) == this.pathname.replace( /^\//, '' ) && location.hostname == this.hostname ) {
31
- $.envirabox.close();
32
- return false;
33
- }
34
-
35
- } );
36
-
37
- /* setup lazy load event */
38
- $( document ).on( "envira_image_lazy_load_complete", function( event ) {
39
- if ( event !== undefined && event.image_id !== undefined && event.image_id !== null ) {
40
-
41
- var envira_container = $('div.envira-gallery-public').find('img#' + event.image_id);
42
-
43
- if ( $('div.envira-gallery-public').hasClass('envira-gallery-0-columns') ) {
44
- /* this is an automatic gallery */
45
- $( envira_container ).closest('div.envira-gallery-item-inner').find( 'div.envira-gallery-position-overlay' ).delay( 100 ).show();
46
- } else {
47
- /* this is a legacy gallery */
48
- $( envira_container ).closest('div.envira-gallery-item-inner').find( 'div.envira-gallery-position-overlay' ).delay( 100 ).show();
49
-
50
- /* re-do the padding bottom */
51
- /* $padding_bottom = ( $output_height / $output_width ) * 100; */
52
-
53
- var envira_lazy_width = $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').width();
54
- var ratio1 = ( event.naturalHeight / event.naturalWidth );
55
- var ratio2 = ( event.naturalHeight / envira_lazy_width );
56
-
57
- if ( ratio2 < ratio1 ) {
58
- var ratio = ratio2;
59
- } else {
60
- var ratio = ratio1;
61
- }
62
-
63
- var padding_bottom = ratio * 100;
64
-
65
- $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').css('padding-bottom', padding_bottom + '%');
66
- $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').data('envira-changed', 'true');
67
-
68
- if ( window["envira_container_" + event.gallery_id] !== undefined ) {
69
-
70
- window["envira_container_" + event.gallery_id].on( 'layoutComplete',
71
- function( event, laidOutItems ) {
72
-
73
- $( envira_container ).closest('div.envira-gallery-item-inner').find( 'span.envira-title' ).delay( 1000 ).css('visibility', 'visible');
74
- $( envira_container ).closest('div.envira-gallery-item-inner').find( 'span.envira-caption' ).delay( 1000 ).css('visibility', 'visible');
75
-
76
-
77
- }
78
- );
79
-
80
- }
81
-
82
-
83
- $('#envira-gallery-' + event.gallery_id).enviratope('layout');
84
-
85
- }
86
-
87
- }
88
- });
89
-
90
- } );
91
-
92
- function jg_effect_desaturate(src) {
93
- var supportsCanvas = !!document.createElement('canvas').getContext;
94
- if (supportsCanvas) {
95
- var canvas = document.createElement('canvas'),
96
- context = canvas.getContext('2d'),
97
- imageData, px, length, i = 0, gray,
98
- img = new Image();
99
-
100
- img.src = src;
101
- canvas.width = img.width;
102
- canvas.height = img.height;
103
- context.drawImage(img, 0, 0);
104
-
105
- imageData = context.getImageData(0, 0, canvas.width, canvas.height);
106
- px = imageData.data;
107
- length = px.length;
108
-
109
- for (; i < length; i += 4) {
110
- gray = px[i] * .3 + px[i + 1] * .59 + px[i + 2] * .11;
111
- px[i] = px[i + 1] = px[i + 2] = gray;
112
- }
113
-
114
- context.putImageData(imageData, 0, 0);
115
- return canvas.toDataURL();
116
- } else {
117
- return src;
118
- }
119
- }
120
-
121
- function jg_effect_threshold(src) {
122
- var supportsCanvas = !!document.createElement('canvas').getContext;
123
- if (supportsCanvas) {
124
- var canvas = document.createElement('canvas'),
125
- context = canvas.getContext('2d'),
126
- imageData, px, length, i = 0, gray,
127
- img = new Image();
128
-
129
- img.src = src;
130
- canvas.width = img.width;
131
- canvas.height = img.height;
132
- context.drawImage(img, 0, 0);
133
-
134
- imageData = context.getImageData(0, 0, canvas.width, canvas.height);
135
- px = imageData.data;
136
- length = px.length;
137
-
138
- threshold = 120;
139
-
140
- for (var i=0; i<length; i+=4) {
141
- var r = px[i];
142
- var g = px[i+1];
143
- var b = px[i+2];
144
- var v = (0.2126*r + 0.7152*g + 0.0722*b >= threshold) ? 255 : 0;
145
- px[i] = px[i+1] = px[i+2] = v
146
- }
147
-
148
- context.putImageData(imageData, 0, 0);
149
- return canvas.toDataURL();
150
- } else {
151
- return src;
152
- }
153
- }
154
-
155
- function jg_effect_blur(src) {
156
- var supportsCanvas = !!document.createElement('canvas').getContext;
157
- if (supportsCanvas) {
158
- var canvas = document.createElement('canvas'),
159
- context = canvas.getContext('2d'),
160
- imageData, px, length, i = 0, gray, top_x = 0, top_y = 0, radius = 30, iterations = 1
161
- img = new Image();
162
-
163
- img.src = src;
164
- canvas.width = img.width;
165
- canvas.height = img.height;
166
- context.drawImage(img, 0, 0);
167
-
168
- var imageData;
169
- var width = img.width;
170
- var height = img.height;
171
-
172
- imageData = context.getImageData( top_x, top_y, width, height );
173
- var pixels = imageData.data;
174
-
175
- var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx;
176
- var wm = width - 1;
177
- var hm = height - 1;
178
- var wh = width * height;
179
- var rad1 = radius + 1;
180
-
181
- var r = [];
182
- var g = [];
183
- var b = [];
184
-
185
- var mul_sum = mul_table[radius];
186
- var shg_sum = shg_table[radius];
187
-
188
- var vmin = [];
189
- var vmax = [];
190
-
191
- while ( iterations-- > 0 ){
192
- yw = yi = 0;
193
-
194
- for ( y=0; y < height; y++ ){
195
- rsum = pixels[yw] * rad1;
196
- gsum = pixels[yw+1] * rad1;
197
- bsum = pixels[yw+2] * rad1;
198
-
199
- for( i = 1; i <= radius; i++ ){
200
- p = yw + (((i > wm ? wm : i )) << 2 );
201
- rsum += pixels[p++];
202
- gsum += pixels[p++];
203
- bsum += pixels[p++];
204
- }
205
-
206
- for ( x = 0; x < width; x++ ){
207
- r[yi] = rsum;
208
- g[yi] = gsum;
209
- b[yi] = bsum;
210
-
211
- if( y==0) {
212
- vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
213
- vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
214
- }
215
-
216
- p1 = yw + vmin[x];
217
- p2 = yw + vmax[x];
218
-
219
- rsum += pixels[p1++] - pixels[p2++];
220
- gsum += pixels[p1++] - pixels[p2++];
221
- bsum += pixels[p1++] - pixels[p2++];
222
-
223
- yi++;
224
- }
225
- yw += ( width << 2 );
226
- }
227
-
228
- for ( x = 0; x < width; x++ ){
229
- yp = x;
230
- rsum = r[yp] * rad1;
231
- gsum = g[yp] * rad1;
232
- bsum = b[yp] * rad1;
233
-
234
- for( i = 1; i <= radius; i++ ){
235
- yp += ( i > hm ? 0 : width );
236
- rsum += r[yp];
237
- gsum += g[yp];
238
- bsum += b[yp];
239
- }
240
-
241
- yi = x << 2;
242
- for ( y = 0; y < height; y++){
243
- pixels[yi] = (rsum * mul_sum) >>> shg_sum;
244
- pixels[yi+1] = (gsum * mul_sum) >>> shg_sum;
245
- pixels[yi+2] = (bsum * mul_sum) >>> shg_sum;
246
-
247
- if( x == 0 ) {
248
- vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
249
- vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
250
- }
251
-
252
- p1 = x + vmin[y];
253
- p2 = x + vmax[y];
254
-
255
- rsum += r[p1] - r[p2];
256
- gsum += g[p1] - g[p2];
257
- bsum += b[p1] - b[p2];
258
-
259
- yi += width << 2;
260
- }
261
- }
262
- }
263
- context.putImageData( imageData, top_x, top_y );
264
-
265
- return canvas.toDataURL();
266
-
267
- } else {
268
- return src;
269
- }
270
- }
271
-
272
- function jg_effect_vintage( img ) {
273
- var options = {
274
- onError: function() {
275
- alert('ERROR');
276
- }
277
- };
278
- var effect = {
279
- vignette: 1,
280
- sepia: true,
281
- noise: 50,
282
- desaturate: .2,
283
- lighten: .1
284
-
285
- };
286
- new VintageJS(img, options, effect);
 
 
 
 
 
 
 
287
  }
1
+ /**
2
+ * envira.js is a placeholder, which CodeKit attaches the following JS files to, before compiling as min/envira-min.js:
3
+ */
4
+ import './lib/jquery.justifiedGallery.js';
5
+ import './lib/enviraJustifiedGallery-extensions.js';
6
+ import './lib/touchsupport.js';
7
+ import './lib/touchswipe.js';
8
+ import './lib/mousewheel.js';
9
+ import './lib/imagesloaded.js';
10
+ import './lib/isotope.js';
11
+ import './lib/fancybox.js';
12
+ import './lib/responsivelyLazy.js';
13
+
14
+ /**
15
+ * To load more JS resources:
16
+ * - Add them to the lib subfolder
17
+ * - Add the to the imports directive of this file in CodeKit
18
+ */
19
+
20
+ /**
21
+ * If a lightbox caption's link is an anchor, close the lightbox!
22
+ */
23
+ jQuery( document ).ready( function( $ ) {
24
+
25
+ let envira_container;
26
+
27
+ $( 'body' ).on( 'click', 'div.envirabox-title a[href*="#"]:not([href="#"])', function( e ) {
28
+
29
+ if ( location.pathname.replace( /^\//, '' ) == this.pathname.replace( /^\//, '' ) && location.hostname == this.hostname ) {
30
+ $.envirabox.close();
31
+ return false;
32
+ }
33
+
34
+ } );
35
+
36
+ /* setup lazy load event */
37
+ $( document ).on( "envira_image_lazy_load_complete", function( event ) {
38
+ if ( event !== undefined && ( ( event.image_id !== undefined && event.image_id !== null ) ) ) {
39
+
40
+ // var envira_container = $('div.envira-gallery-public').find('img#' + event.image_id);
41
+
42
+ if ($( '#envira-gallery-wrap-' + event.gallery_id ).find( '#' + event.video_id + ' iframe' ).length > 0) {
43
+ envira_container = $( '#envira-gallery-wrap-' + event.gallery_id ).find( '#' + event.video_id + ' iframe' );
44
+ } else if ($( '#envira-gallery-wrap-' + event.gallery_id ).find( '#' + event.video_id + ' video' ).length > 0) {
45
+ envira_container = $( '#envira-gallery-wrap-' + event.gallery_id ).find( '#' + event.video_id + ' video' );
46
+ } else {
47
+ envira_container = $( '#envira-gallery-wrap-' + event.gallery_id ).find( 'img#' + event.image_id );
48
+ }
49
+
50
+ if ( $('#envira-gallery-wrap-' + event.gallery_id).find('div.envira-gallery-public').hasClass('envira-gallery-0-columns') ) {
51
+ /* this is an automatic gallery */
52
+ $( envira_container ).closest('div.envira-gallery-item-inner').find( 'div.envira-gallery-position-overlay' ).delay( 100 ).show();
53
+ } else {
54
+ /* this is a legacy gallery */
55
+ $( envira_container ).closest('div.envira-gallery-item-inner').find( 'div.envira-gallery-position-overlay' ).delay( 100 ).show();
56
+
57
+ /* re-do the padding bottom */
58
+ /* $padding_bottom = ( $output_height / $output_width ) * 100; */
59
+
60
+ var envira_lazy_width = $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').width();
61
+ var ratio1 = ( event.naturalHeight / event.naturalWidth );
62
+ var ratio2 = ( event.naturalHeight / envira_lazy_width );
63
+
64
+ if ( ratio2 < ratio1 ) {
65
+ var ratio = ratio2;
66
+ } else {
67
+ var ratio = ratio1;
68
+ }
69
+
70
+ var padding_bottom = ratio * 100;
71
+
72
+ $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').css('padding-bottom', padding_bottom + '%');
73
+ $( envira_container ).closest('div.envira-gallery-item-inner').find('.envira-lazy').data('envira-changed', 'true');
74
+
75
+ if ( window["envira_container_" + event.gallery_id] !== undefined ) {
76
+
77
+ window["envira_container_" + event.gallery_id].on( 'layoutComplete',
78
+ function( event, laidOutItems ) {
79
+
80
+ $( envira_container ).closest('div.envira-gallery-item-inner').find( 'span.envira-title' ).delay( 1000 ).css('visibility', 'visible');
81
+ $( envira_container ).closest('div.envira-gallery-item-inner').find( 'span.envira-caption' ).delay( 1000 ).css('visibility', 'visible');
82
+
83
+
84
+ }
85
+ );
86
+
87
+ }
88
+
89
+
90
+ $('#envira-gallery-' + event.gallery_id).enviratope('layout');
91
+
92
+ }
93
+
94
+ }
95
+ });
96
+
97
+ } );
98
+
99
+ function jg_effect_desaturate(src) {
100
+ var supportsCanvas = !!document.createElement('canvas').getContext;
101
+ if (supportsCanvas) {
102
+ var canvas = document.createElement('canvas'),
103
+ context = canvas.getContext('2d'),
104
+ imageData, px, length, i = 0, gray,
105
+ img = new Image();
106
+
107
+ img.src = src;
108
+ canvas.width = img.width;
109
+ canvas.height = img.height;
110
+ context.drawImage(img, 0, 0);
111
+
112
+ imageData = context.getImageData(0, 0, canvas.width, canvas.height);
113
+ px = imageData.data;
114
+ length = px.length;
115
+
116
+ for (; i < length; i += 4) {
117
+ gray = px[i] * .3 + px[i + 1] * .59 + px[i + 2] * .11;
118
+ px[i] = px[i + 1] = px[i + 2] = gray;
119
+ }
120
+
121
+ context.putImageData(imageData, 0, 0);
122
+ return canvas.toDataURL();
123
+ } else {
124
+ return src;
125
+ }
126
+ }
127
+
128
+ function jg_effect_threshold(src) {
129
+ var supportsCanvas = !!document.createElement('canvas').getContext;
130
+ if (supportsCanvas) {
131
+ var canvas = document.createElement('canvas'),
132
+ context = canvas.getContext('2d'),
133
+ imageData, px, length, i = 0, gray,
134
+ img = new Image();
135
+
136
+ img.src = src;
137
+ canvas.width = img.width;
138
+ canvas.height = img.height;
139
+ context.drawImage(img, 0, 0);
140
+
141
+ imageData = context.getImageData(0, 0, canvas.width, canvas.height);
142
+ px = imageData.data;
143
+ length = px.length;
144
+
145
+ threshold = 120;
146
+
147
+ for (var i=0; i<length; i+=4) {
148
+ var r = px[i];
149
+ var g = px[i+1];
150
+ var b = px[i+2];
151
+ var v = (0.2126*r + 0.7152*g + 0.0722*b >= threshold) ? 255 : 0;
152
+ px[i] = px[i+1] = px[i+2] = v
153
+ }
154
+
155
+ context.putImageData(imageData, 0, 0);
156
+ return canvas.toDataURL();
157
+ } else {
158
+ return src;
159
+ }
160
+ }
161
+
162
+ function jg_effect_blur(src) {
163
+ var supportsCanvas = !!document.createElement('canvas').getContext;
164
+ if (supportsCanvas) {
165
+ var canvas = document.createElement('canvas'),
166
+ context = canvas.getContext('2d'),
167
+ imageData, px, length, i = 0, gray, top_x = 0, top_y = 0, radius = 30, iterations = 1
168
+ img = new Image();
169
+
170
+ img.src = src;
171
+ canvas.width = img.width;
172
+ canvas.height = img.height;
173
+ context.drawImage(img, 0, 0);
174
+
175
+ var imageData;
176
+ var width = img.width;
177
+ var height = img.height;
178
+
179
+ imageData = context.getImageData( top_x, top_y, width, height );
180
+ var pixels = imageData.data;
181
+
182
+ var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx;
183
+ var wm = width - 1;
184
+ var hm = height - 1;
185
+ var wh = width * height;
186
+ var rad1 = radius + 1;
187
+
188
+ var r = [];
189
+ var g = [];
190
+ var b = [];
191
+
192
+ var mul_sum = mul_table[radius];
193
+ var shg_sum = shg_table[radius];
194
+
195
+ var vmin = [];
196
+ var vmax = [];
197
+
198
+ while ( iterations-- > 0 ){
199
+ yw = yi = 0;
200
+
201
+ for ( y=0; y < height; y++ ){
202
+ rsum = pixels[yw] * rad1;
203
+ gsum = pixels[yw+1] * rad1;
204
+ bsum = pixels[yw+2] * rad1;
205
+
206
+ for( i = 1; i <= radius; i++ ){
207
+ p = yw + (((i > wm ? wm : i )) << 2 );
208
+ rsum += pixels[p++];
209
+ gsum += pixels[p++];
210
+ bsum += pixels[p++];
211
+ }
212
+
213
+ for ( x = 0; x < width; x++ ){
214
+ r[yi] = rsum;
215
+ g[yi] = gsum;
216
+ b[yi] = bsum;
217
+
218
+ if( y==0) {
219
+ vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
220
+ vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
221
+ }
222
+
223
+ p1 = yw + vmin[x];
224
+ p2 = yw + vmax[x];
225
+
226
+ rsum += pixels[p1++] - pixels[p2++];
227
+ gsum += pixels[p1++] - pixels[p2++];
228
+ bsum += pixels[p1++] - pixels[p2++];
229
+
230
+ yi++;
231
+ }
232
+ yw += ( width << 2 );
233
+ }
234
+
235
+ for ( x = 0; x < width; x++ ){
236
+ yp = x;
237
+ rsum = r[yp] * rad1;
238
+ gsum = g[yp] * rad1;
239
+ bsum = b[yp] * rad1;
240
+
241
+ for( i = 1; i <= radius; i++ ){
242
+ yp += ( i > hm ? 0 : width );
243
+ rsum += r[yp];
244
+ gsum += g[yp];
245
+ bsum += b[yp];
246
+ }
247
+
248
+ yi = x << 2;
249
+ for ( y = 0; y < height; y++){
250
+ pixels[yi] = (rsum * mul_sum) >>> shg_sum;
251
+ pixels[yi+1] = (gsum * mul_sum) >>> shg_sum;
252
+ pixels[yi+2] = (bsum * mul_sum) >>> shg_sum;
253
+
254
+ if( x == 0 ) {
255
+ vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
256
+ vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
257
+ }
258
+
259
+ p1 = x + vmin[y];
260
+ p2 = x + vmax[y];
261
+
262
+ rsum += r[p1] - r[p2];
263
+ gsum += g[p1] - g[p2];
264
+ bsum += b[p1] - b[p2];
265
+
266
+ yi += width << 2;
267
+ }
268
+ }
269
+ }
270
+ context.putImageData( imageData, top_x, top_y );
271
+
272
+ return canvas.toDataURL();
273
+
274
+ } else {
275
+ return src;
276
+ }
277
+ }
278
+
279
+ function jg_effect_vintage( img ) {
280
+ var options = {
281
+ onError: function() {
282
+ alert('ERROR');
283
+ }
284
+ };
285
+ var effect = {
286
+ vignette: 1,
287
+ sepia: true,
288
+ noise: 50,
289
+ desaturate: .2,
290
+ lighten: .1
291
+
292
+ };
293
+ new VintageJS(img, options, effect);
294
  }
assets/js/gallery-help.js CHANGED
@@ -1,56 +1,56 @@
1
- /**
2
- * Handles:
3
- * - Inline Video Help
4
- *
5
- * @since 1.5.0
6
- */
7
-
8
- // Setup vars
9
- var envira_video_link = 'p.envira-intro a.envira-video',
10
- envira_close_video_link = 'a.envira-video-close';
11
-
12
- jQuery( document ).ready( function( $ ) {
13
- /**
14
- * Display Video Inline on Video Link Click
15
- */
16
- $( document ).on( 'click', envira_video_link, function( e ) {
17
-
18
- // Prevent default action
19
- e.preventDefault();
20
-
21
- // Get the video URL
22
- var envira_video_url = $( this ).attr( 'href' );
23
-
24
- // Check if the video has the autoplay parameter included
25
- // If not, add it now - this will play the video when it's inserted to the iframe.
26
- if ( envira_video_url.search( 'autoplay=1' ) == -1 ) {
27
- if ( envira_video_url.search( 'rel=' ) == -1 ) {
28
- envira_video_url += '?rel=0&autoplay=1';
29
- } else {
30
- envira_video_url += '&autoplay=1';
31
- }
32
- }
33
-
34
- // Destroy any other instances of Envira Video iframes
35
- $( 'div.envira-video-help' ).remove();
36
-
37
- // Get the intro paragraph
38
- var envira_video_paragraph = $( this ).closest( 'p.envira-intro' );
39
-
40
- // Load the video below the intro paragraph on the current tab
41
- $( envira_video_paragraph ).append( '<div class="envira-video-help"><iframe src="' + envira_video_url + '" /><a href="#" class="envira-video-close dashicons dashicons-no"></a></div>' );
42
-
43
- } );
44
-
45
- /**
46
- * Destroy Video when closed
47
- */
48
- $( document ).on( 'click', envira_close_video_link, function( e ) {
49
-
50
- e.preventDefault();
51
-
52
- $( this ).closest( '.envira-video-help' ).remove();
53
-
54
- } );
55
-
56
  } );
1
+ /**
2
+ * Handles:
3
+ * - Inline Video Help
4
+ *
5
+ * @since 1.5.0
6
+ */
7
+
8
+ // Setup vars
9
+ var envira_video_link = 'p.envira-intro a.envira-video',
10
+ envira_close_video_link = 'a.envira-video-close';
11
+
12
+ jQuery( document ).ready( function( $ ) {
13
+ /**
14
+ * Display Video Inline on Video Link Click
15
+ */
16
+ $( document ).on( 'click', envira_video_link, function( e ) {
17
+
18
+ // Prevent default action
19
+ e.preventDefault();
20
+
21
+ // Get the video URL
22
+ var envira_video_url = $( this ).attr( 'href' );
23
+
24
+ // Check if the video has the autoplay parameter included
25
+ // If not, add it now - this will play the video when it's inserted to the iframe.
26
+ if ( envira_video_url.search( 'autoplay=1' ) == -1 ) {
27
+ if ( envira_video_url.search( 'rel=' ) == -1 ) {
28
+ envira_video_url += '?rel=0&autoplay=1';
29
+ } else {
30
+ envira_video_url += '&autoplay=1';
31
+ }
32
+ }
33
+
34
+ // Destroy any other instances of Envira Video iframes
35
+ $( 'div.envira-video-help' ).remove();
36
+
37
+ // Get the intro paragraph
38
+ var envira_video_paragraph = $( this ).closest( 'p.envira-intro' );
39
+
40
+ // Load the video below the intro paragraph on the current tab
41
+ $( envira_video_paragraph ).append( '<div class="envira-video-help"><iframe src="' + envira_video_url + '" /><a href="#" class="envira-video-close dashicons dashicons-no"></a></div>' );
42
+
43
+ } );
44
+
45
+ /**
46
+ * Destroy Video when closed
47
+ */
48
+ $( document ).on( 'click', envira_close_video_link, function( e ) {
49
+
50
+ e.preventDefault();
51
+
52
+ $( this ).closest( '.envira-video-help' ).remove();
53
+
54
+ } );
55
+
56
  } );
assets/js/gallery-select.js CHANGED
@@ -1,634 +1,634 @@
1
- /* ==========================================================
2
- * gallery-select.js
3
- *
4
- * Defines a Backbone Modal for Gallery or Album selection.
5
- *
6
- * To use:
7
- * EnviraGalleryModalWindow.content( new EnviraGallerySelectionView( {
8
- * action: 'gallery', // gallery|album
9
- * multiple: true, // Support multiple Gallery / Album selection
10
- * sidebar_view: 'envira-selection-sidebar' // WordPress media view to render into the sidebar
11
- * modal_title: 'Insert Gallery', // Title for the Backbone Modal
12
- * insert_button_label: 'Insert', // Label for the Insert Button
13
- * onInsert: function() {}, // Callback function when the 'Insert' button in the modal is pressed.
14
- * // You'll have access to this.selection, containing the chosen Galleries / Albums.
15
- * } ).open();
16
- *
17
- * Only the 'action' and 'multiple' arguments are required; defaults will be appled for the other arguments if they're not specified.
18
- *
19
- * You can also attach a global event once the user has chosen Galleries / Albums, clicked the Insert button and the item(s)
20
- * have been inserted:
21
- * jQuery( document ).on( 'enviraGalleryModalData', function( e ) {
22
- * console.log( e.action ); // 'gallery' or 'album'
23
- * console.log( e.multiple ); // Whether the user could select multiple Galleries / Albums (true|false)
24
- * console.log( e.items ); // An array of Galleries or Albums
25
- * console.log( e.insert_options ); // An object of the Insert Options the user chose
26
- * } );
27
- */
28
-
29
- /**
30
- * Controller: Modal Window
31
- * - Used by most Envira Backbone views to display information e.g. bulk edit, edit single image etc.
32
- */
33
- if ( typeof EnviraGalleryModalWindow == 'undefined' ) {
34
-
35
- var EnviraGalleryModalWindow = new wp.media.view.Modal( {
36
- controller: {
37
- trigger: function() {
38
- }
39
- }
40
- } );
41
-
42
- }
43
-
44
- /**
45
- * View: Error
46
- * - Renders a WordPress style error message when something goes wrong.
47
- *
48
- * @since 1.4.3.0
49
- */
50
- wp.media.view.EnviraGalleryError = wp.Backbone.View.extend( {
51
-
52
- // The outer tag and class name to use. The item is wrapped in this
53
- tagName : 'div',
54
- className : 'notice error envira-gallery-error',
55
-
56
- render: function() {
57
-
58
- // Load the template to render
59
- // See includes/admin/media-views.php
60
- this.template = wp.media.template( 'envira-gallery-error' );
61
-
62
- // Define the HTML for the template
63
- this.$el.html( this.template( this.model ) );
64
-
65
- // Return the template
66
- return this;
67
-
68
- }
69
-
70
- } );
71
-
72
- /**
73
- * View: Single Item (Gallery or Album)
74
- * - Renders an <li> element within the "Choose your Gallery / Album" view
75
- *
76
- * @since 1.5.0
77
- */
78
- var EnviraGallerySelectionItemView = wp.Backbone.View.extend( {
79
-
80
- /**
81
- * The Tag Name and Tag's Class(es)
82
- */
83
- tagName: 'li',
84
- className: 'attachment',
85
-
86
- /**
87
- * Template
88
- * - The template to load inside the above tagName element
89
- */
90
- template: wp.template( 'envira-selection-item' ),
91
-
92
- /**
93
- * Initialize
94
- *
95
- * @param object model EnviraGalleryImage Backbone Model
96
- */
97
- initialize: function( args ) {
98
-
99
- // Assign the model to this view
100
- this.model = args.model;
101
-
102
- },
103
-
104
- /**
105
- * Render
106
- * - Binds the model to the view, so we populate the view's fields and data
107
- */
108
- render: function() {
109
-
110
- // Get HTML
111
- this.$el.html( this.template( this.model.attributes ) );
112
- return this;
113
-
114
- }
115
-
116
- } );
117
-
118
- /**
119
- * View: Sidebar
120
- * - Renders the Helpful Tips when selecting a Gallery or Album for insertion into a Post.
121
- *
122
- * @since 1.5.0.3
123
- */
124
- var EnviraGallerySelectionSidebarView = wp.Backbone.View.extend( {
125
-
126
- /**
127
- * The Tag Name and Tag's Class(es)
128
- */
129
- tagName: 'div',
130
- className: 'sidebar',
131
-
132
- /**
133
- * Initialize
134
- *
135
- * @param string view View to render
136
- */
137
- initialize: function( view ) {
138
-
139
- // Define the sidebar view to render
140
- // This must be a WordPress media view using e.g. <script type="text/html" id="tmpl-my-sidebar-view-name">
141
- this.view = ( ( typeof view == 'undefined' ) ? 'envira-selection-sidebar' : view );
142
-
143
- },
144
-
145
- /**
146
- * Render the view
147
- */
148
- render: function() {
149
-
150
- // Get HTML
151
- this.$el.html( wp.template( this.view ) );
152
- return this;
153
-
154
- }
155
-
156
- } );
157
-
158
- /**
159
- * Gallery Selection View
160
- */
161
- var EnviraGallerySelectionView = wp.Backbone.View.extend( {
162
-
163
- /**
164
- * The Tag Name and Tag's Class(es)
165
- */
166
- tagName: 'div',
167
- className: 'media-frame mode-select wp-core-ui hide-router hide-menu',
168
-
169
- /**
170
- * Template
171
- * - The template to load inside the above tagName element
172
- */
173
- template: wp.template( 'envira-selection' ),
174
-
175
- /**
176
- * Events
177
- * - Functions to call when specific events occur
178
- */
179
- events: {
180
- // Clicked a gallery
181
- 'click .attachment': 'click',
182
-
183
- // Used the search input
184
- 'keyup': 'search',
185
- 'search': 'search',
186
-
187
- // Display Options
188
- 'change select': 'updateInsertOption',
189
-
190
- // Insert Button
191
- 'click button.media-button-insert': 'insert',
192
- },
193
-
194
- /**
195
- * Initialize
196
- *
197
- * @param object args:
198
- * - action: gallery|album (required)
199
- * - multiple: true|false (required)
200
- * - sidebar_view: A custom WordPress media view to render into the sidebar (optional)
201
- * - modal_title: The modal title (optional)
202
- * - insert_button_label: The 'Insert' button label (optional)
203
- * - prepend_ids: Optional array of Galleries or Albums to always prepend to the resultset
204
- * - onInsert: function() {} (optional)
205
- */
206
- initialize: function( args ) {
207
-
208
- // Whether we're inserting galleries or albums
209
- this.action = args.action;
210
-
211
- // Whether multiple galleries or albums can be selected
212
- this.multiple = args.multiple;
213
-
214
- // Define the sidebar view to render into this Modal
215
- // This must be a WordPress media view using e.g. <script type="text/html" id="tmpl-my-sidebar-view-name">
216
- this.sidebar_view = ( ( typeof args.sidebar_view == 'undefined' ) ? 'envira-selection-sidebar' : args.sidebar_view );
217
-
218
- // Store the onInsert function provided by the calling class
219
- this.onInsert = args.onInsert;
220
-
221
- // Whether we're prepending galleries / albums to the collection
222
- this.prepend_ids = ( ( typeof args.prepend_ids == 'undefined' ) ? false : args.prepend_ids );
223
-
224
- // Whether we're preselecting galleries / albums
225
- this.select_ids = ( ( typeof args.select_ids == 'undefined' ) ? false : args.select_ids );
226
-
227
- // Define a collection, which will store the Galleries
228
- this.selection = new Backbone.Collection(); // The galleries / albums the user has selected
229
- this.collection = new Backbone.Collection(); // The available galleries / albums
230
-
231
- // Define a model to store Insert Options
232
- this.insert_options = new Backbone.Model( {
233
- 'modal_title': ( ( typeof args.modal_title == 'undefined' ) ? envira_gallery_select.modal_title : args.modal_title ),
234
- 'title': 0,
235
- 'insert_button_label': ( ( typeof args.modal_title == 'undefined' ) ? envira_gallery_select.insert_button_label : args.insert_button_label )
236
- } );
237
-
238
- // Define some other flags.
239
- this.is_loading = false;
240
- this.search_timeout = false;
241
-
242
- // Define loading and loaded events
243
- this.on( 'loading', this.loading, this );
244
- this.on( 'loaded', this.loaded, this );
245
-
246
- // Get Galleries
247
- this.getItems( false, '' );
248
-
249
- },
250
-
251
- /**
252
- * Called when a Gallery is clicked
253
- *
254
- * @param object event Event
255
- */
256
- click: function( event ) {
257
-
258
- // Get the target element, whether it's a directory and its ID
259
- var target = jQuery( event.currentTarget ),
260
- id = jQuery( 'div.attachment-preview', target ).attr( 'data-id' );
261
-
262
- // Add or remove item from the selection, depending on its current state
263
- if ( target.hasClass( 'selected' ) ) {
264
- // Remove
265
- this.removeFromSelection( target, id );
266
- } else {
267
- // If multiple selection isn't supported, clear the selection first
268
- if ( ! this.multiple ) {
269
- this.clearSelection();
270
- }
271
-
272
- // Add
273
- this.addToSelection( target, id );
274
- }
275
-
276
- },
277
-
278
- /**
279
- * Called when the search event is fired (the user types into the search field)
280
- *
281
- * @param object event Event
282
- */
283
- search: function( event ) {
284
-
285
- // If we're already loading something, bail
286
- if ( this.is_loading ) {
287
- return;
288
- }
289
-
290
- // Clear any existing timeout
291
- clearTimeout( this.search_timeout );
292
-
293
- // Check if a search term exists, and is at least 3 characters
294
- var search = event.target.value;
295
-
296
- // If search is empty, return the entire folder's contents
297
- if ( search.length == 0 ) {
298
- this.getItems( false, '' );
299
- return;
300
- }
301
-
302
- // If search isn't empty but less than 3 characters, don't do anything
303
- if ( search.length < 3 ) {
304
- return;
305
- }
306
-
307
- // Set a small timeout before we perform the search. If the user keeps typing,
308
- // this ensures we don't return the wrong results too early.
309
- var that = this;
310
- this.search_timeout = setTimeout( function() {
311
- that.getItems( true, search );
312
- }, 1000 );
313
-
314
- },
315
-
316
- /**
317
- * Gets galleries by sending an AJAX request
318
- *
319
- * @param bool is_search Is a search request
320
- * @param string search_terms Search Terms
321
- */
322
- getItems: function( is_search, search_terms ) {
323
-
324
- // If we're already loading something, bail
325
- if ( this.is_loading ) {
326
- return;
327
- }
328
-
329
- // Clear the existing collection
330
- this.clearSelection();
331
- this.$el.find( 'ul.attachments' ).empty();
332
- this.$el.find( 'div.envira-gallery-error' ).remove();
333
-
334
- // Update the loading flag
335
- this.trigger( 'loading' );
336
-
337
- // Determine whether we're going to retrieve Galleries or Albums.
338
- var action = '';
339
- switch ( this.action ) {
340
- case 'gallery':
341
- action = 'envira_gallery_editor_get_galleries';
342
- break;
343
- case 'album':
344
- action = 'envira_albums_editor_get_albums';
345
- break;
346
- }
347
-
348
- // Perform AJAX request to get Galleries or Albums.
349
- wp.media.ajax( action, {
350
- context: this,
351
- data: {
352
- nonce: envira_gallery_select.get_galleries_nonce,
353
- search: is_search,
354
- search_terms: search_terms,
355
- prepend_ids: this.prepend_ids
356
- },
357
- success: function( items ) {
358
-
359
- // Define a collection
360
- var collection = new Backbone.Collection( items );
361
-
362
- // Reset the collection
363
- this.collection.reset();
364
-
365
- // Add the collection's models (items) to this class' collection
366
- this.collection.add( collection.models );
367
-
368
- // Render each item in the collection
369
- this.collection.each( function( model ) {
370
-
371
- // Init with model
372
- var child_view = new EnviraGallerySelectionItemView( {
373
- model: model
374
- } );
375
-
376
- // Render view within our main view
377
- this.$el.find( 'ul.attachments' ).append( child_view.render().el );
378
-
379
- // If we're selecting specific item IDs, check now if this item should be selected
380
- if ( this.select_ids !== false ) {
381
- var select_model = jQuery.inArray( parseInt( model.get( 'id' ) ), this.select_ids );
382
- if ( select_model > -1 ) {
383
- // Select this item
384
- this.addToSelection( jQuery( child_view.render().el ), model.get( 'id' ) );
385
- }
386
- }
387
-
388
- }, this );
389
-
390
- // Tell wp.media we've finished loading items
391
- this.trigger( 'loaded' );
392
-
393
- },
394
- error: function( error_message ) {
395
-
396
- // Tell wp.media we've finished loading items, and send the error message
397
- // for output
398
- this.trigger( 'loaded', error_message );
399
-
400
- }
401
- } );
402
-
403
- },
404
-
405
- /**
406
- * Updates an Insert Option (displayed in the sidebar) when changed.
407
- */
408
- updateInsertOption: function( event ) {
409
-
410
- // Check if the target has a name. If not, it's not a model value we want to store
411
- if ( event.target.name == '' ) {
412
- return;
413
- }
414
-
415
- // Update the model's value, depending on the input type
416
- if ( event.target.type == 'checkbox' ) {
417
- value = ( event.target.checked ? 1 : 0 );
418
- } else {
419
- value = event.target.value;
420
- }
421
-
422
- // Update the model
423
- this.insert_options.set( event.target.name, value );
424
-
425
- },
426
-
427
- /**
428
- * Render
429
- * - Binds the collection to the view, so we populate the view's attachments grid
430
- */
431
- render: function() {
432
-
433
- // Get HTML
434
- this.$el.html( this.template( this.insert_options.attributes ) );
435
-
436
- // Render the Sidebar View
437
- var sidebar = new EnviraGallerySelectionSidebarView( this.sidebar_view );
438
- this.$el.find( 'div.media-sidebar' ).append( sidebar.render().el );
439
-
440
- // Return
441
- return this;
442
-
443
- },
444
-
445
- /**
446
- * Renders an error using
447
- * wp.media.view.EnviraGalleryError
448
- */
449
- renderError: function( error ) {
450
-
451
- // Define model
452
- var model = {};
453
- model.error = error;
454
-
455
- // Define view
456
- var view = new wp.media.view.EnviraGalleryError( {
457
- model: model
458
- } );
459
-
460
- // Return rendered view
461
- return view.render().el;
462
-
463
- },
464
-
465
- /**
466
- * Tells the view we're loading by displaying a spinner
467
- */
468
- loading: function() {
469
-
470
- // Set a flag so we know we're loading data
471
- this.is_loading = true;
472
-
473
- // Show the spinner
474
- this.$el.find( '.spinner' ).css( 'visibility', 'visible' );
475
-
476
- },
477
-
478
- /**
479
- * Hides the loading spinner
480
- */
481
- loaded: function( response ) {
482
-
483
- // Set a flag so we know we're not loading anything now
484
- this.is_loading = false;
485
-
486
- // Hide the spinner
487
- this.$el.find( '.spinner' ).css( 'visibility', 'hidden' );
488
-
489
- // Display the error message, if it's provided
490
- if ( typeof response !== 'undefined' ) {
491
- this.$el.find( 'ul.attachments' ).before( this.renderError( response ) );
492
- }
493
-
494
- },
495
-
496
- /**
497
- * Adds the given target to the selection
498
- *
499
- * @param object target Selected Element
500
- * @param string id Unique Identifier (i.e. third party API item's UID)
501
- */
502
- addToSelection: function( target, id ) {
503
-
504
- // Trigger the loading event
505
- this.trigger( 'loading' );
506
-
507
- // Iterate through the current collection of models until we find the model
508
- // that matches the ID we have
509
- this.collection.each( function( model ) {
510
- // If this model matches the model the user selected, add it to the selection
511
- if ( model.get( 'id' ) == id ) {
512
- this.selection.add( model );
513
- }
514
- }, this );
515
-
516
- // Mark the item as selected in the media view
517
- target.addClass( 'selected details' );
518
-
519
- // If the selection is not empty, enable the Insert button
520
- if ( this.selection.length > 0 ) {
521
- this.$el.find( 'button.media-button-insert' ).attr( 'disabled', false );
522
- }
523
-
524
- // Trigger the loaded event
525
- this.trigger( 'loaded' );
526
-
527
- },
528
-
529
- /**
530
- * Removes the given target from the selection
531
- *
532
- * @param object target Deselected Element
533
- * @param string id Unique Identifier (i.e. third party API item's UID)
534
- */
535
- removeFromSelection: function( target, id ) {
536
-
537
- // Trigger the loading event
538
- this.trigger( 'loading' );
539
-
540
- // Iterate through the current collection of selected models until we find the model
541
- // that has a path matching the given path
542
- this.selection.each( function( model ) {
543
- // remove this model from the collection of selected models
544
- this.selection.remove([{ cid: model.cid }]);
545
- }, this );
546
-
547
- // Mark the item as deselected in the media view
548
- target.removeClass( 'selected details' );
549
-
550
- // If the selection is empty, disable the Insert button
551
- if ( this.selection.length == 0 ) {
552
- this.$el.find( 'button.media-button-insert' ).attr( 'disabled', 'disabled' );
553
- }
554
-
555
- // Trigger the loaded event
556
- this.trigger( 'loaded' );
557
-
558
- },
559
-
560
- /**
561
- * Clears all selected items
562
- */
563
- clearSelection: function() {
564
-
565
- // Iterate through each item, removing the selected state from the UI
566
- this.selection.each( function( model ) {
567
- this.$el.find( 'div[data-id="' + model.get( 'id' ) + '"]' ).parent().removeClass( 'selected details' );
568
- }, this );
569
-
570
- // Disable the Insert button
571
- this.$el.find( 'button.media-button-insert' ).attr( 'disabled', 'disabled' );
572
-
573
- // Clear the selected models
574
- this.selection.reset();
575
-
576
- },
577
-
578
- /**
579
- * Inserts one or more Galleries or Albums into the Editor
580
- */
581
- insert: function() {
582
-
583
- // Tell the View we're loading
584
- this.trigger( 'loading' );
585
-
586
- // Run the onInsert() function from the calling class
587
- // If no function given, run the default action, which is to insert
588
- // into the Visual Editor
589
- if ( typeof this.onInsert === 'undefined' ) {
590
- // For each selected item, insert a shortcode into the editor
591
- var items = [];
592
- this.selection.forEach( function( item ) {
593
-
594
- // Build array of items, and reset shortcode
595
- items.push( item.attributes );
596
- var shortcode = '';
597
-
598
- // Prepend Title to Shortcode
599
- if ( this.insert_options.get( 'title' ) != 0 ) {
600
- shortcode = '<' + this.insert_options.get( 'title' ) + '>' + item.get( 'title' ) + '</' + this.insert_options.get( 'title' ) + '>';
601
- }
602
-
603
- // Shortcode
604
- shortcode += '[envira-' + this.action + ' id="' + item.id + '"]';
605
-
606
- // Insert into Editor
607
- wp.media.editor.insert( shortcode );
608
-
609
- }, this );
610
-
611
- // Trigger the enviraGalleryModalData event, comprising of the chosen Galleries.
612
- jQuery( document ).trigger( {
613
- type: 'enviraGalleryModalData',
614
- items: items, // array of galleries or albums
615
- insert_options: this.insert_options,// Backbone Model comprising of Insert Options the user chose on screen
616
- action: this.action // gallery or album
617
- } );
618
-
619
- var result = true;
620
- } else {
621
- var result = this.onInsert();
622
- }
623
-
624
- // Trigger the loaded event
625
- this.trigger( 'loaded' );
626
-
627
- // If the result was successful, close the modal window
628
- if ( result ) {
629
- EnviraGalleryModalWindow.close();
630
- }
631
-
632
- }
633
-
634
  } );
1
+ /* ==========================================================
2
+ * gallery-select.js
3
+ *
4
+ * Defines a Backbone Modal for Gallery or Album selection.
5
+ *
6
+ * To use:
7
+ * EnviraGalleryModalWindow.content( new EnviraGallerySelectionView( {
8
+ * action: 'gallery', // gallery|album
9
+ * multiple: true, // Support multiple Gallery / Album selection
10
+ * sidebar_view: 'envira-selection-sidebar' // WordPress media view to render into the sidebar
11
+ * modal_title: 'Insert Gallery', // Title for the Backbone Modal
12
+ * insert_button_label: 'Insert', // Label for the Insert Button
13
+ * onInsert: function() {}, // Callback function when the 'Insert' button in the modal is pressed.
14
+ * // You'll have access to this.selection, containing the chosen Galleries / Albums.
15
+ * } ).open();
16
+ *
17
+ * Only the 'action' and 'multiple' arguments are required; defaults will be appled for the other arguments if they're not specified.
18
+ *
19
+ * You can also attach a global event once the user has chosen Galleries / Albums, clicked the Insert button and the item(s)
20
+ * have been inserted:
21
+ * jQuery( document ).on( 'enviraGalleryModalData', function( e ) {
22
+ * console.log( e.action ); // 'gallery' or 'album'
23
+ * console.log( e.multiple ); // Whether the user could select multiple Galleries / Albums (true|false)
24
+ * console.log( e.items ); // An array of Galleries or Albums
25
+ * console.log( e.insert_options ); // An object of the Insert Options the user chose
26
+ * } );
27
+ */
28
+
29
+ /**
30
+ * Controller: Modal Window
31
+ * - Used by most Envira Backbone views to display information e.g. bulk edit, edit single image etc.
32
+ */
33
+ if ( typeof EnviraGalleryModalWindow == 'undefined' ) {
34
+
35
+ var EnviraGalleryModalWindow = new wp.media.view.Modal( {
36
+ controller: {
37
+ trigger: function() {
38
+ }
39
+ }
40
+ } );
41
+
42
+ }
43
+
44
+ /**
45
+ * View: Error
46
+ * - Renders a WordPress style error message when something goes wrong.
47
+ *
48
+ * @since 1.4.3.0
49
+ */
50
+ wp.media.view.EnviraGalleryError = wp.Backbone.View.extend( {
51
+
52
+ // The outer tag and class name to use. The item is wrapped in this
53
+ tagName : 'div',
54
+ className : 'notice error envira-gallery-error',
55
+
56
+ render: function() {
57
+
58
+ // Load the template to render
59
+ // See includes/admin/media-views.php
60
+ this.template = wp.media.template( 'envira-gallery-error' );
61
+
62
+ // Define the HTML for the template
63
+ this.$el.html( this.template( this.model ) );
64
+
65
+ // Return the template
66
+ return this;
67
+
68
+ }
69
+
70
+ } );
71
+
72
+ /**
73
+ * View: Single Item (Gallery or Album)
74
+ * - Renders an <li> element within the "Choose your Gallery / Album" view
75
+ *
76
+ * @since 1.5.0
77
+ */
78
+ var EnviraGallerySelectionItemView = wp.Backbone.View.extend( {
79
+
80
+ /**
81
+ * The Tag Name and Tag's Class(es)
82
+ */
83
+ tagName: 'li',
84
+ className: 'attachment',
85
+
86
+ /**
87
+ * Template
88
+ * - The template to load inside the above tagName element
89
+ */
90
+ template: wp.template( 'envira-selection-item' ),
91
+
92
+ /**
93
+ * Initialize
94
+ *
95
+ * @param object model EnviraGalleryImage Backbone Model
96
+ */
97
+ initialize: function( args ) {
98
+
99
+ // Assign the model to this view
100
+ this.model = args.model;
101
+
102
+ },
103
+
104
+ /**
105
+ * Render
106
+ * - Binds the model to the view, so we populate the view's fields and data
107
+ */
108
+ render: function() {
109
+
110
+ // Get HTML
111
+ this.$el.html( this.template( this.model.attributes ) );
112
+ return this;
113
+
114
+ }
115
+
116
+ } );
117
+
118
+ /**
119
+ * View: Sidebar
120
+ * - Renders the Helpful Tips when selecting a Gallery or Album for insertion into a Post.
121
+ *
122
+ * @since 1.5.0.3
123
+ */
124
+ var EnviraGallerySelectionSidebarView = wp.Backbone.View.extend( {
125
+
126
+ /**
127
+ * The Tag Name and Tag's Class(es)
128
+ */
129
+ tagName: 'div',
130
+ className: 'sidebar',
131
+
132
+ /**
133
+ * Initialize
134
+ *
135
+ * @param string view View to render
136
+ */
137
+ initialize: function( view ) {
138
+
139
+ // Define the sidebar view to render
140
+ // This must be a WordPress media view using e.g. <script type="text/html" id="tmpl-my-sidebar-view-name">
141
+ this.view = ( ( typeof view == 'undefined' ) ? 'envira-selection-sidebar' : view );
142
+
143
+ },
144
+
145
+ /**
146
+ * Render the view
147
+ */
148
+ render: function() {
149
+
150
+ // Get HTML
151
+ this.$el.html( wp.template( this.view ) );
152
+ return this;
153
+
154
+ }
155
+
156
+ } );
157
+
158
+ /**
159
+ * Gallery Selection View
160
+ */
161
+ var EnviraGallerySelectionView = wp.Backbone.View.extend( {
162
+
163
+ /**
164
+ * The Tag Name and Tag's Class(es)
165
+ */
166
+ tagName: 'div',
167
+ className: 'media-frame mode-select wp-core-ui hide-router hide-menu',
168
+
169
+ /**
170
+ * Template
171
+ * - The template to load inside the above tagName element
172
+ */
173
+ template: wp.template( 'envira-selection' ),
174
+
175
+ /**
176
+ * Events
177
+ * - Functions to call when specific events occur
178
+ */
179
+ events: {
180
+ // Clicked a gallery
181
+ 'click .attachment': 'click',
182
+
183
+ // Used the search input
184
+ 'keyup': 'search',
185
+ 'search': 'search',
186
+
187
+ // Display Options
188
+ 'change select': 'updateInsertOption',
189
+
190
+ // Insert Button
191
+ 'click button.media-button-insert': 'insert',
192
+ },
193
+
194
+ /**
195
+ * Initialize
196
+ *
197
+ * @param object args:
198
+ * - action: gallery|album (required)
199
+ * - multiple: true|false (required)
200
+ * - sidebar_view: A custom WordPress media view to render into the sidebar (optional)
201
+ * - modal_title: The modal title (optional)
202
+ * - insert_button_label: The 'Insert' button label (optional)
203
+ * - prepend_ids: Optional array of Galleries or Albums to always prepend to the resultset
204
+ * - onInsert: function() {} (optional)
205
+ */
206
+ initialize: function( args ) {
207
+
208
+ // Whether we're inserting galleries or albums
209
+ this.action = args.action;
210
+
211
+ // Whether multiple galleries or albums can be selected
212
+ this.multiple = args.multiple;
213
+
214
+ // Define the sidebar view to render into this Modal
215
+ // This must be a WordPress media view using e.g. <script type="text/html" id="tmpl-my-sidebar-view-name">
216
+ this.sidebar_view = ( ( typeof args.sidebar_view == 'undefined' ) ? 'envira-selection-sidebar' : args.sidebar_view );
217
+
218
+ // Store the onInsert function provided by the calling class
219
+ this.onInsert = args.onInsert;
220
+
221
+ // Whether we're prepending galleries / albums to the collection
222
+ this.prepend_ids = ( ( typeof args.prepend_ids == 'undefined' ) ? false : args.prepend_ids );
223
+
224
+ // Whether we're preselecting galleries / albums
225
+ this.select_ids = ( ( typeof args.select_ids == 'undefined' ) ? false : args.select_ids );
226
+
227
+ // Define a collection, which will store the Galleries
228
+ this.selection = new Backbone.Collection(); // The galleries / albums the user has selected
229
+ this.collection = new Backbone.Collection(); // The available galleries / albums
230
+
231
+ // Define a model to store Insert Options
232
+ this.insert_options = new Backbone.Model( {
233
+ 'modal_title': ( ( typeof args.modal_title == 'undefined' ) ? envira_gallery_select.modal_title : args.modal_title ),
234
+ 'title': 0,
235
+ 'insert_button_label': ( ( typeof args.modal_title == 'undefined' ) ? envira_gallery_select.insert_button_label : args.insert_button_label )
236
+ } );
237
+
238
+ // Define some other flags.
239
+ this.is_loading = false;
240
+ this.search_timeout = false;
241
+
242
+ // Define loading and loaded events
243
+ this.on( 'loading', this.loading, this );
244
+ this.on( 'loaded', this.loaded, this );
245
+
246
+ // Get Galleries
247
+ this.getItems( false, '' );
248
+
249
+ },
250
+
251
+ /**
252
+ * Called when a Gallery is clicked
253
+ *
254
+ * @param object event Event
255
+ */
256
+ click: function( event ) {
257
+
258
+ // Get the target element, whether it's a directory and its ID
259
+ var target = jQuery( event.currentTarget ),
260
+ id = jQuery( 'div.attachment-preview', target ).attr( 'data-id' );
261
+
262
+ // Add or remove item from the selection, depending on its current state
263
+ if ( target.hasClass( 'selected' ) ) {
264
+ // Remove
265
+ this.removeFromSelection( target, id );
266
+ } else {
267
+ // If multiple selection isn't supported, clear the selection first
268
+ if ( ! this.multiple ) {
269
+ this.clearSelection();
270
+ }
271
+
272
+ // Add
273
+ this.addToSelection( target, id );
274
+ }
275
+
276
+ },
277
+
278
+ /**
279
+ * Called when the search event is fired (the user types into the search field)
280
+ *
281
+ * @param object event Event
282
+ */
283
+ search: function( event ) {
284
+
285
+ // If we're already loading something, bail
286
+ if ( this.is_loading ) {
287
+ return;
288
+ }
289
+
290
+ // Clear any existing timeout
291
+ clearTimeout( this.search_timeout );
292
+
293
+ // Check if a search term exists, and is at least 3 characters
294
+ var search = event.target.value;
295
+
296
+ // If search is empty, return the entire folder's contents
297
+ if ( search.length == 0 ) {
298
+ this.getItems( false, '' );
299
+ return;
300
+ }
301
+
302
+ // If search isn't empty but less than 3 characters, don't do anything
303
+ if ( search.length < 3 ) {
304
+ return;
305
+ }
306
+
307
+ // Set a small timeout before we perform the search. If the user keeps typing,
308
+ // this ensures we don't return the wrong results too early.
309
+ var that = this;
310
+ this.search_timeout = setTimeout( function() {
311
+ that.getItems( true, search );
312
+ }, 1000 );
313
+
314
+ },
315
+
316
+ /**
317
+ * Gets galleries by sending an AJAX request
318
+ *
319
+ * @param bool is_search Is a search request
320
+ * @param string search_terms Search Terms
321
+ */
322
+ getItems: function( is_search, search_terms ) {
323
+
324
+ // If we're already loading something, bail
325
+ if ( this.is_loading ) {
326
+ return;
327
+ }
328
+
329
+ // Clear the existing collection
330
+ this.clearSelection();
331
+ this.$el.find( 'ul.attachments' ).empty();
332
+ this.$el.find( 'div.envira-gallery-error' ).remove();
333
+
334
+ // Update the loading flag
335
+ this.trigger( 'loading' );
336
+
337
+ // Determine whether we're going to retrieve Galleries or Albums.
338
+ var action = '';
339
+ switch ( this.action ) {
340
+ case 'gallery':
341
+ action = 'envira_gallery_editor_get_galleries';
342
+ break;
343
+ case 'album':
344
+ action = 'envira_albums_editor_get_albums';
345
+ break;
346
+ }
347
+
348
+ // Perform AJAX request to get Galleries or Albums.
349
+ wp.media.ajax( action, {
350
+ context: this,
351
+ data: {
352
+ nonce: envira_gallery_select.get_galleries_nonce,
353
+ search: is_search,
354
+ search_terms: search_terms,
355
+ prepend_ids: this.prepend_ids
356
+ },
357
+ success: function( items ) {
358
+
359
+ // Define a collection
360
+ var collection = new Backbone.Collection( items );
361
+
362
+ // Reset the collection
363
+ this.collection.reset();
364
+
365
+ // Add the collection's models (items) to this class' collection
366
+ this.collection.add( collection.models );
367
+
368
+ // Render each item in the collection
369
+ this.collection.each( function( model ) {
370
+
371
+ // Init with model
372
+ var child_view = new EnviraGallerySelectionItemView( {
373
+ model: model
374
+ } );
375
+
376
+ // Render view within our main view
377
+ this.$el.find( 'ul.attachments' ).append( child_view.render().el );
378
+
379
+ // If we're selecting specific item IDs, check now if this item should be selected
380
+ if ( this.select_ids !== false ) {
381
+ var select_model = jQuery.inArray( parseInt( model.get( 'id' ) ), this.select_ids );
382
+ if ( select_model > -1 ) {
383
+ // Select this item
384
+ this.addToSelection( jQuery( child_view.render().el ), model.get( 'id' ) );
385
+ }
386
+ }
387
+
388
+ }, this );
389
+
390
+ // Tell wp.media we've finished loading items
391
+ this.trigger( 'loaded' );
392
+
393
+ },
394
+ error: function( error_message ) {
395
+
396
+ // Tell wp.media we've finished loading items, and send the error message
397
+ // for output
398
+ this.trigger( 'loaded', error_message );
399
+
400
+ }
401
+ } );
402
+
403
+ },
404
+
405
+ /**
406
+ * Updates an Insert Option (displayed in the sidebar) when changed.
407
+ */
408
+ updateInsertOption: function( event ) {
409
+
410
+ // Check if the target has a name. If not, it's not a model value we want to store
411
+ if ( event.target.name == '' ) {
412
+ return;
413
+ }
414
+
415
+ // Update the model's value, depending on the input type
416
+ if ( event.target.type == 'checkbox' ) {
417
+ value = ( event.target.checked ? 1 : 0 );
418
+ } else {
419
+ value = event.target.value;
420
+ }
421
+
422
+ // Update the model
423
+ this.insert_options.set( event.target.name, value );
424
+
425
+ },
426
+
427
+ /**
428
+ * Render
429
+ * - Binds the collection to the view, so we populate the view's attachments grid
430
+ */
431
+ render: function() {
432
+
433
+ // Get HTML
434
+ this.$el.html( this.template( this.insert_options.attributes ) );
435
+
436
+ // Render the Sidebar View
437
+ var sidebar = new EnviraGallerySelectionSidebarView( this.sidebar_view );
438
+ this.$el.find( 'div.media-sidebar' ).append( sidebar.render().el );
439
+
440
+ // Return
441
+ return this;
442
+
443
+ },
444
+
445
+ /**
446
+ * Renders an error using
447
+ * wp.media.view.EnviraGalleryError
448
+ */
449
+ renderError: function( error ) {
450
+
451
+ // Define model
452
+ var model = {};
453
+ model.error = error;
454
+
455
+ // Define view
456
+ var view = new wp.media.view.EnviraGalleryError( {
457
+ model: model
458
+ } );
459
+
460
+ // Return rendered view
461
+ return view.render().el;
462
+
463
+ },
464
+
465
+ /**
466
+ * Tells the view we're loading by displaying a spinner
467
+ */
468
+ loading: function() {
469
+
470
+ // Set a flag so we know we're loading data
471
+ this.is_loading = true;
472
+
473
+ // Show the spinner
474
+ this.$el.find( '.spinner' ).css( 'visibility', 'visible' );
475
+
476
+ },
477
+
478
+ /**
479
+ * Hides the loading spinner
480
+ */
481
+ loaded: function( response ) {
482
+
483
+ // Set a flag so we know we're not loading anything now
484
+ this.is_loading = false;
485
+
486
+ // Hide the spinner
487
+ this.$el.find( '.spinner' ).css( 'visibility', 'hidden' );
488
+
489
+ // Display the error message, if it's provided
490
+ if ( typeof response !== 'undefined' ) {
491
+ this.$el.find( 'ul.attachments' ).before( this.renderError( response ) );
492
+ }
493
+
494
+ },
495
+
496
+ /**
497
+ * Adds the given target to the selection
498
+ *
499
+ * @param object target Selected Element
500
+ * @param string id Unique Identifier (i.e. third party API item's UID)
501
+ */
502
+ addToSelection: function( target, id ) {
503
+
504
+ // Trigger the loading event
505
+ this.trigger( 'loading' );
506
+
507
+ // Iterate through the current collection of models until we find the model
508
+ // that matches the ID we have
509
+ this.collection.each( function( model ) {
510
+ // If this model matches the model the user selected, add it to the selection
511
+ if ( model.get( 'id' ) == id ) {
512
+ this.selection.add( model );
513
+ }
514
+ }, this );
515
+
516
+ // Mark the item as selected in the media view
517
+ target.addClass( 'selected details' );
518
+
519
+ // If the selection is not empty, enable the Insert button
520
+ if ( this.selection.length > 0 ) {
521
+ this.$el.find( 'button.media-button-insert' ).attr( 'disabled', false );
522
+ }
523
+
524
+ // Trigger the loaded event
525
+ this.trigger( 'loaded' );
526
+
527
+ },
528
+
529
+ /**
530
+ * Removes the given target from the selection
531
+ *
532
+ * @param object target Deselected Element
533
+ * @param string id Unique Identifier (i.e. third party API item's UID)
534
+ */
535
+ removeFromSelection: function( target, id ) {
536
+
537
+ // Trigger the loading event
538
+ this.trigger( 'loading' );
539
+
540
+ // Iterate through the current collection of selected models until we find the model
541
+ // that has a path matching the given path
542
+ this.selection.each( function( model ) {
543
+ // remove this model from the collection of selected models
544
+ this.selection.remove([{ cid: model.cid }]);
545
+ }, this );
546
+
547
+ // Mark the item as deselected in the media view
548
+ target.removeClass( 'selected details' );
549
+
550
+ // If the selection is empty, disable the Insert button
551
+ if ( this.selection.length == 0 ) {
552
+ this.$el.find( 'button.media-button-insert' ).attr( 'disabled', 'disabled' );
553
+ }
554
+
555
+ // Trigger the loaded event
556
+ this.trigger( 'loaded' );
557
+
558
+ },
559
+
560
+ /**
561
+ * Clears all selected items
562
+ */
563
+ clearSelection: function() {
564
+
565
+ // Iterate through each item, removing the selected state from the UI
566
+ this.selection.each( function( model ) {
567
+ this.$el.find( 'div[data-id="' + model.get( 'id' ) + '"]' ).parent().removeClass( 'selected details' );
568
+ }, this );
569
+
570
+ // Disable the Insert button
571
+ this.$el.find( 'button.media-button-insert' ).attr( 'disabled', 'disabled' );
572
+
573
+ // Clear the selected models
574
+ this.selection.reset();
575
+
576
+ },
577
+
578
+ /**
579
+ * Inserts one or more Galleries or Albums into the Editor
580
+ */
581
+ insert: function() {
582
+
583
+ // Tell the View we're loading
584
+ this.trigger( 'loading' );
585
+
586
+ // Run the onInsert() function from the calling class
587
+ // If no function given, run the default action, which is to insert
588
+ // into the Visual Editor
589
+ if ( typeof this.onInsert === 'undefined' ) {
590
+ // For each selected item, insert a shortcode into the editor
591
+ var items = [];
592
+ this.selection.forEach( function( item ) {
593
+
594
+ // Build array of items, and reset shortcode
595
+ items.push( item.attributes );
596
+ var shortcode = '';
597
+
598
+ // Prepend Title to Shortcode
599
+ if ( this.insert_options.get( 'title' ) != 0 ) {
600
+ shortcode = '<' + this.insert_options.get( 'title' ) + '>' + item.get( 'title' ) + '</' + this.insert_options.get( 'title' ) + '>';
601
+ }
602
+
603
+ // Shortcode
604
+ shortcode += '[envira-' + this.action + ' id="' + item.id + '"]';
605
+
606
+ // Insert into Editor
607
+ wp.media.editor.insert( shortcode );
608
+
609
+ }, this );
610
+
611
+ // Trigger the enviraGalleryModalData event, comprising of the chosen Galleries.
612
+ jQuery( document ).trigger( {
613
+ type: 'enviraGalleryModalData',
614
+ items: items, // array of galleries or albums
615
+ insert_options: this.insert_options,// Backbone Model comprising of Insert Options the user chose on screen
616
+ action: this.action // gallery or album
617
+ } );
618
+
619
+ var result = true;
620
+ } else {
621
+ var result = this.onInsert();
622
+ }
623
+
624
+ // Trigger the loaded event
625
+ this.trigger( 'loaded' );
626
+
627
+ // If the result was successful, close the modal window
628
+ if ( result ) {
629
+ EnviraGalleryModalWindow.close();
630
+ }
631
+
632
+ }
633
+
634
  } );
assets/js/lib/enviraJustifiedGallery-extensions.js CHANGED
@@ -1,417 +1,420 @@
1
- /*!
2
- * Justified Gallery / Envira Extensions and Overrides - v3.6.2
3
- * Copyright (c) 2016 David Bisset, Benjamin Rojas
4
- * Licensed under the MIT license.
5
- */
6
-
7
- (function ($) {
8
- var justifiedGallery = $.fn.justifiedGallery;
9
- var EnviraJustifiedGallery = {};
10
-
11
- $.fn.enviraJustifiedGallery = function () {
12
- var obj = justifiedGallery.apply(this, arguments);
13
- EnviraJustifiedGallery = obj.data('jg.controller');
14
-
15
- if (EnviraJustifiedGallery !== undefined) {
16
-
17
- EnviraJustifiedGallery.displayEntryCaption = function ($entry) {
18
-
19
- var $image = this.imgFromEntry($entry);
20
- if ($image !== null && this.settings.captions) {
21
- var $imgCaption = this.captionFromEntry($entry);
22
-
23
- // Create it if it doesn't exists
24
- if ($imgCaption === null) {
25
-
26
- var caption = $image.data('envira-caption');
27
- caption = caption.replace('<', '&lt;');
28
-
29
- if (this.isValidCaption(caption)) { // Create only we found something
30
- $imgCaption = $('<div class="caption">' + caption + '</div>');
31
- $entry.append($imgCaption);
32
- $entry.data('jg.createdCaption', true);
33
- }
34
- }
35
-
36
- // Create events (we check again the $imgCaption because it can be still inexistent)
37
- if ($imgCaption !== null) {
38
- if (!this.settings.cssAnimation) $imgCaption.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity);
39
- this.addCaptionEventsHandlers($entry);
40
- }
41
- } else {
42
- this.removeCaptionEventsHandlers($entry);
43
- }
44
- };
45
-
46
- return EnviraJustifiedGallery;
47
-
48
- }
49
-
50
- };
51
- })(jQuery);
52
-
53
- /*!
54
- * vintageJS
55
- * Add a retro/vintage effect to images using the HTML5 canvas element
56
- *
57
- * @license Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
58
- * @author Robert Fleischmann <rendro87@gmail.com>
59
- * @version 1.1.5
60
- */
61
-
62
- !function(a,b){"function"==typeof define&&define.amd?define("vintagejs",["jquery"],function(c){return a.VintageJS=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.VintageJS=b(jQuery)}(this,function(a){var b=function(a,b,c){if(!1==a instanceof HTMLImageElement)throw"The element (1st parameter) must be an instance of HTMLImageElement";var d,e,f,g,h,i,j,k,l,m=new Image,n=new Image,o=document.createElement("canvas"),p=o.getContext("2d"),q={onStart:function(){},onStop:function(){},onError:function(){},mime:"image/jpeg"},r={curves:!1,screen:!1,desaturate:!1,vignette:!1,lighten:!1,noise:!1,viewFinder:!1,sepia:!1,brightness:!1,contrast:!1};m.onerror=q.onError,m.onload=function(){i=o.width=m.width,j=o.height=m.height,d()},n.onerror=q.onError,n.onload=function(){p.clearRect(0,0,i,j),p.drawImage(n,0,0,i,j),(window.vjsImageCache||(window.vjsImageCache={}))[l]=p.getImageData(0,0,i,j).data,d()},e=function(a){q.onStart(),k={};for(var b in r)k[b]=a[b]||r[b];g=[],k.viewFinder&&g.push(k.viewFinder),m.src==h?d():m.src=h},d=function(){if(0===g.length)return f();var a=g.pop();return l=[i,j,a].join("-"),window.vjsImageCache&&window.vjsImageCache[l]?d():void(n.src=a)},f=function(){var b,c,d;p.clearRect(0,0,i,j),p.drawImage(m,0,0,i,j),(k.vignette||k.lighten)&&(b=Math.sqrt(Math.pow(i/2,2)+Math.pow(j/2,2))),k.vignette&&(p.globalCompositeOperation="source-over",c=p.createRadialGradient(i/2,j/2,0,i/2,j/2,b),c.addColorStop(0,"rgba(0,0,0,0)"),c.addColorStop(.5,"rgba(0,0,0,0)"),c.addColorStop(1,["rgba(0,0,0,",k.vignette,")"].join("")),p.fillStyle=c,p.fillRect(0,0,i,j)),k.lighten&&(p.globalCompositeOperation="lighter",c=p.createRadialGradient(i/2,j/2,0,i/2,j/2,b),c.addColorStop(0,["rgba(255,255,255,",k.lighten,")"].join("")),c.addColorStop(.5,"rgba(255,255,255,0)"),c.addColorStop(1,"rgba(0,0,0,0)"),p.fillStyle=c,p.fillRect(0,0,i,j)),d=p.getImageData(0,0,i,j);var e,f,g,h,l,n,o,r,s,t=d.data;k.contrast&&(s=259*(k.contrast+255)/(255*(259-k.contrast))),k.viewFinder&&(r=window.vjsImageCache[[i,j,k.viewFinder].join("-")]);for(var u=i*j;u>=0;--u)for(e=u<<2,k.curves&&(t[e]=k.curves.r[t[e]],t[e+1]=k.curves.g[t[e+1]],t[e+2]=k.curves.b[t[e+2]]),k.contrast&&(t[e]=s*(t[e]-128)+128,t[e+1]=s*(t[e+1]-128)+128,t[e+2]=s*(t[e+2]-128)+128),k.brightness&&(t[e]+=k.brightness,t[e+1]+=k.brightness,t[e+2]+=k.brightness),k.screen&&(t[e]=255-(255-t[e])*(255-k.screen.r*k.screen.a)/255,t[e+1]=255-(255-t[e+1])*(255-k.screen.g*k.screen.a)/255,t[e+2]=255-(255-t[e+2])*(255-k.screen.b*k.screen.a)/255),k.noise&&(o=k.noise-Math.random()*k.noise/2,t[e]+=o,t[e+1]+=o,t[e+2]+=o),k.viewFinder&&(t[e]=t[e]*r[e]/255,t[e+1]=t[e+1]*r[e+1]/255,t[e+2]=t[e+2]*r[e+2]/255),k.sepia&&(g=t[e],h=t[e+1],l=t[e+2],t[e]=.393*g+.769*h+.189*l,t[e+1]=.349*g+.686*h+.168*l,t[e+2]=.272*g+.534*h+.131*l),k.desaturate&&(n=(t[e]+t[e+1]+t[e+2])/3,t[e]+=(n-t[e])*k.desaturate,t[e+1]+=(n-t[e+1])*k.desaturate,t[e+2]+=(n-t[e+2])*k.desaturate),f=2;f>=0;--f)t[e+f]=~~(t[e+f]>255?255:t[e+f]<0?0:t[e+f]);p.putImageData(d,0,0),a.src=p.canvas.toDataURL(q.mime),q.onStop()},h=a.src,b=b||{};for(var s in q)q[s]=b[s]||q[s];return c&&e(c),{apply:function(){h=a.src},reset:function(){a.src=h},vintage:e}};return a.fn.vintage=function(c,d){return this.each(function(){a.data(this,"vintageJS")||a.data(this,"vintageJS",new b(this,c,d))})},b});
63
-
64
-
65
- /*
66
-
67
- Superfast Blur - a fast Box Blur For Canvas
68
-
69
- Version: 0.5
70
- Author: Mario Klingemann
71
- Contact: mario@quasimondo.com
72
- Website: http://www.quasimondo.com/BoxBlurForCanvas
73
- Twitter: @quasimondo
74
-
75
- In case you find this class useful - especially in commercial projects -
76
- I am not totally unhappy for a small donation to my PayPal account
77
- mario@quasimondo.de
78
-
79
- Or support me on flattr:
80
- https://flattr.com/thing/140066/Superfast-Blur-a-pretty-fast-Box-Blur-Effect-for-CanvasJavascript
81
-
82
- Copyright (c) 2011 Mario Klingemann
83
-
84
- Permission is hereby granted, free of charge, to any person
85
- obtaining a copy of this software and associated documentation
86
- files (the "Software"), to deal in the Software without
87
- restriction, including without limitation the rights to use,
88
- copy, modify, merge, publish, distribute, sublicense, and/or sell
89
- copies of the Software, and to permit persons to whom the
90
- Software is furnished to do so, subject to the following
91
- conditions:
92
-
93
- The above copyright notice and this permission notice shall be
94
- included in all copies or substantial portions of the Software.
95
-
96
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
97
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
98
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
99
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
100
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
101
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
102
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
103
- OTHER DEALINGS IN THE SOFTWARE.
104
- */
105
- var mul_table = [ 1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1];
106
-
107
-
108
- var shg_table = [0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];
109
-
110
-
111
- function boxBlurImage( imageID, canvasID, radius, blurAlphaChannel, iterations ){
112
-
113
- var img = document.getElementById( imageID );
114
- var w = img.naturalWidth;
115
- var h = img.naturalHeight;
116
-
117
- var canvas = document.getElementById( canvasID );
118
-
119
- canvas.style.width = w + "px";
120
- canvas.style.height = h + "px";
121
- canvas.width = w;
122
- canvas.height = h;
123
-
124
- var context = canvas.getContext("2d");
125
- context.clearRect( 0, 0, w, h );
126
- context.drawImage( img, 0, 0 );
127
-
128
- if ( isNaN(radius) || radius < 1 ) return;
129
-
130
- if ( blurAlphaChannel )
131
- {
132
- boxBlurCanvasRGBA( canvasID, 0, 0, w, h, radius, iterations );
133
- } else {
134
- boxBlurCanvasRGB( canvasID, 0, 0, w, h, radius, iterations );
135
- }
136
-
137
- }
138
-
139
-
140
- function boxBlurCanvasRGBA( id, top_x, top_y, width, height, radius, iterations ){
141
- if ( isNaN(radius) || radius < 1 ) return;
142
-
143
- radius |= 0;
144
-
145
- if ( isNaN(iterations) ) iterations = 1;
146
- iterations |= 0;
147
- if ( iterations > 3 ) iterations = 3;
148
- if ( iterations < 1 ) iterations = 1;
149
-
150
- var canvas = document.getElementById( id );
151
- var context = canvas.getContext("2d");
152
- var imageData;
153
-
154
- try {
155
- try {
156
- imageData = context.getImageData( top_x, top_y, width, height );
157
- } catch(e) {
158
-
159
- // NOTE: this part is supposedly only needed if you want to work with local files
160
- // so it might be okay to remove the whole try/catch block and just use
161
- // imageData = context.getImageData( top_x, top_y, width, height );
162
- try {
163
- netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
164
- imageData = context.getImageData( top_x, top_y, width, height );
165
- } catch(e) {
166
- alert("Cannot access local image");
167
- throw new Error("unable to access local image data: " + e);
168
- return;
169
- }
170
- }
171
- } catch(e) {
172
- alert("Cannot access image");
173
- throw new Error("unable to access image data: " + e);
174
- return;
175
- }
176
-
177
- var pixels = imageData.data;
178
-
179
- var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx,pa;
180
- var wm = width - 1;
181
- var hm = height - 1;
182
- var wh = width * height;
183
- var rad1 = radius + 1;
184
-
185
- var mul_sum = mul_table[radius];
186
- var shg_sum = shg_table[radius];
187
-
188
- var r = [];
189
- var g = [];
190
- var b = [];
191
- var a = [];
192
-
193
- var vmin = [];
194
- var vmax = [];
195
-
196
- while ( iterations-- > 0 ){
197
- yw = yi = 0;
198
-
199
- for ( y=0; y < height; y++ ){
200
- rsum = pixels[yw] * rad1;
201
- gsum = pixels[yw+1] * rad1;
202
- bsum = pixels[yw+2] * rad1;
203
- asum = pixels[yw+3] * rad1;
204
-
205
-
206
- for( i = 1; i <= radius; i++ ){
207
- p = yw + (((i > wm ? wm : i )) << 2 );
208
- rsum += pixels[p++];
209
- gsum += pixels[p++];
210
- bsum += pixels[p++];
211
- asum += pixels[p]
212
- }
213
-
214
- for ( x = 0; x < width; x++ ) {
215
- r[yi] = rsum;
216
- g[yi] = gsum;
217
- b[yi] = bsum;
218
- a[yi] = asum;
219
-
220
- if( y==0) {
221
- vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
222
- vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
223
- }
224
-
225
- p1 = yw + vmin[x];
226
- p2 = yw + vmax[x];
227
-
228
- rsum += pixels[p1++] - pixels[p2++];
229
- gsum += pixels[p1++] - pixels[p2++];
230
- bsum += pixels[p1++] - pixels[p2++];
231
- asum += pixels[p1] - pixels[p2];
232
-
233
- yi++;
234
- }
235
- yw += ( width << 2 );
236
- }
237
-
238
- for ( x = 0; x < width; x++ ) {
239
- yp = x;
240
- rsum = r[yp] * rad1;
241
- gsum = g[yp] * rad1;
242
- bsum = b[yp] * rad1;
243
- asum = a[yp] * rad1;
244
-
245
- for( i = 1; i <= radius; i++ ) {
246
- yp += ( i > hm ? 0 : width );
247
- rsum += r[yp];
248
- gsum += g[yp];
249
- bsum += b[yp];
250
- asum += a[yp];
251
- }
252
-
253
- yi = x << 2;
254
- for ( y = 0; y < height; y++) {
255
-
256
- pixels[yi+3] = pa = (asum * mul_sum) >>> shg_sum;
257
- if ( pa > 0 )
258
- {
259
- pa = 255 / pa;
260
- pixels[yi] = ((rsum * mul_sum) >>> shg_sum) * pa;
261
- pixels[yi+1] = ((gsum * mul_sum) >>> shg_sum) * pa;
262
- pixels[yi+2] = ((bsum * mul_sum) >>> shg_sum) * pa;
263
- } else {
264
- pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;
265
- }
266
- if( x == 0 ) {
267
- vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
268
- vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
269
- }
270
-
271
- p1 = x + vmin[y];
272
- p2 = x + vmax[y];
273
-
274
- rsum += r[p1] - r[p2];
275
- gsum += g[p1] - g[p2];
276
- bsum += b[p1] - b[p2];
277
- asum += a[p1] - a[p2];
278
-
279
- yi += width << 2;
280
- }
281
- }
282
- }
283
-
284
- context.putImageData( imageData, top_x, top_y );
285
-
286
- }
287
-
288
- function boxBlurCanvasRGB( id, top_x, top_y, width, height, radius, iterations ){
289
- if ( isNaN(radius) || radius < 1 ) return;
290
-
291
- radius |= 0;
292
-
293
- if ( isNaN(iterations) ) iterations = 1;
294
- iterations |= 0;
295
- if ( iterations > 3 ) iterations = 3;
296
- if ( iterations < 1 ) iterations = 1;
297
-
298
- var canvas = id;
299
- var context = canvas.getContext("2d");
300
- var imageData;
301
-
302
- try {
303
- try {
304
- imageData = context.getImageData( top_x, top_y, width, height );
305
- } catch(e) {
306
-
307
- // NOTE: this part is supposedly only needed if you want to work with local files
308
- // so it might be okay to remove the whole try/catch block and just use
309
- // imageData = context.getImageData( top_x, top_y, width, height );
310
- try {
311
- netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
312
- imageData = context.getImageData( top_x, top_y, width, height );
313
- } catch(e) {
314
- alert("Cannot access local image");
315
- throw new Error("unable to access local image data: " + e);
316
- return;
317
- }
318
- }
319
- } catch(e) {
320
- alert("Cannot access image");
321
- throw new Error("unable to access image data: " + e);
322
- return;
323
- }
324
-
325
- var pixels = imageData.data;
326
-
327
- var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx;
328
- var wm = width - 1;
329
- var hm = height - 1;
330
- var wh = width * height;
331
- var rad1 = radius + 1;
332
-
333
- var r = [];
334
- var g = [];
335
- var b = [];
336
-
337
- var mul_sum = mul_table[radius];
338
- var shg_sum = shg_table[radius];
339
-
340
- var vmin = [];
341
- var vmax = [];
342
-
343
- while ( iterations-- > 0 ){
344
- yw = yi = 0;
345
-
346
- for ( y=0; y < height; y++ ){
347
- rsum = pixels[yw] * rad1;
348
- gsum = pixels[yw+1] * rad1;
349
- bsum = pixels[yw+2] * rad1;
350
-
351
- for( i = 1; i <= radius; i++ ){
352
- p = yw + (((i > wm ? wm : i )) << 2 );
353
- rsum += pixels[p++];
354
- gsum += pixels[p++];
355
- bsum += pixels[p++];
356
- }
357
-
358
- for ( x = 0; x < width; x++ ){
359
- r[yi] = rsum;
360
- g[yi] = gsum;
361
- b[yi] = bsum;
362
-
363
- if( y==0) {
364
- vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
365
- vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
366
- }
367
-
368
- p1 = yw + vmin[x];
369
- p2 = yw + vmax[x];
370
-
371
- rsum += pixels[p1++] - pixels[p2++];
372
- gsum += pixels[p1++] - pixels[p2++];
373
- bsum += pixels[p1++] - pixels[p2++];
374
-
375
- yi++;
376
- }
377
- yw += ( width << 2 );
378
- }
379
-
380
- for ( x = 0; x < width; x++ ){
381
- yp = x;
382
- rsum = r[yp] * rad1;
383
- gsum = g[yp] * rad1;
384
- bsum = b[yp] * rad1;
385
-
386
- for( i = 1; i <= radius; i++ ){
387
- yp += ( i > hm ? 0 : width );
388
- rsum += r[yp];
389
- gsum += g[yp];
390
- bsum += b[yp];
391
- }
392
-
393
- yi = x << 2;
394
- for ( y = 0; y < height; y++){
395
- pixels[yi] = (rsum * mul_sum) >>> shg_sum;
396
- pixels[yi+1] = (gsum * mul_sum) >>> shg_sum;
397
- pixels[yi+2] = (bsum * mul_sum) >>> shg_sum;
398
-
399
- if( x == 0 ) {
400
- vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
401
- vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
402
- }
403
-
404
- p1 = x + vmin[y];
405
- p2 = x + vmax[y];
406
-
407
- rsum += r[p1] - r[p2];
408
- gsum += g[p1] - g[p2];
409
- bsum += b[p1] - b[p2];
410
-
411
- yi += width << 2;
412
- }
413
- }
414
- }
415
- context.putImageData( imageData, top_x, top_y );
416
-
 
 
 
417
  }
1
+ /*!
2
+ * Justified Gallery / Envira Extensions and Overrides - v3.6.2
3
+ * Copyright (c) 2016 David Bisset, Benjamin Rojas
4
+ * Licensed under the MIT license.
5
+ */
6
+
7
+ (function ($) {
8
+ var justifiedGallery = $.fn.justifiedGallery;
9
+ var EnviraJustifiedGallery = {};
10
+
11
+ $.fn.enviraJustifiedGallery = function () {
12
+ var obj = justifiedGallery.apply(this, arguments);
13
+ EnviraJustifiedGallery = obj.data('jg.controller');
14
+
15
+ if (EnviraJustifiedGallery !== undefined) {
16
+
17
+ EnviraJustifiedGallery.displayEntryCaption = function ($entry) {
18
+
19
+ var $image = this.imgFromEntry($entry);
20
+ if ($image !== null && this.settings.captions) {
21
+ var $imgCaption = this.captionFromEntry($entry);
22
+
23
+ // Create it if it doesn't exists
24
+ if ($imgCaption === null) {
25
+
26
+ var caption = $image.data('envira-caption');
27
+ if ( caption !== undefined && typeof caption === 'string' ) {
28
+ caption = caption.replace('<', '&lt;');
29
+ }
30
+
31
+ if (this.isValidCaption(caption)) { // Create only we found something
32
+ caption = $('<textarea />').html(caption).text();
33
+ $imgCaption = $('<div class="caption">' + caption + '</div>');
34
+ $entry.append($imgCaption);
35
+ $entry.data('jg.createdCaption', true);
36
+ }
37
+ }
38
+
39
+ // Create events (we check again the $imgCaption because it can be still inexistent)
40
+ if ($imgCaption !== null) {
41
+ if (!this.settings.cssAnimation) $imgCaption.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity);
42
+ this.addCaptionEventsHandlers($entry);
43
+ }
44
+ } else {
45
+ this.removeCaptionEventsHandlers($entry);
46
+ }
47
+ };
48
+
49
+ return EnviraJustifiedGallery;
50
+
51
+ }
52
+
53
+ };
54
+ })(jQuery);
55
+
56
+ /*!
57
+ * vintageJS
58
+ * Add a retro/vintage effect to images using the HTML5 canvas element
59
+ *
60
+ * @license Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
61
+ * @author Robert Fleischmann <rendro87@gmail.com>
62
+ * @version 1.1.5
63
+ */
64
+
65
+ !function(a,b){"function"==typeof define&&define.amd?define("vintagejs",["jquery"],function(c){return a.VintageJS=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.VintageJS=b(jQuery)}(this,function(a){var b=function(a,b,c){if(!1==a instanceof HTMLImageElement)throw"The element (1st parameter) must be an instance of HTMLImageElement";var d,e,f,g,h,i,j,k,l,m=new Image,n=new Image,o=document.createElement("canvas"),p=o.getContext("2d"),q={onStart:function(){},onStop:function(){},onError:function(){},mime:"image/jpeg"},r={curves:!1,screen:!1,desaturate:!1,vignette:!1,lighten:!1,noise:!1,viewFinder:!1,sepia:!1,brightness:!1,contrast:!1};m.onerror=q.onError,m.onload=function(){i=o.width=m.width,j=o.height=m.height,d()},n.onerror=q.onError,n.onload=function(){p.clearRect(0,0,i,j),p.drawImage(n,0,0,i,j),(window.vjsImageCache||(window.vjsImageCache={}))[l]=p.getImageData(0,0,i,j).data,d()},e=function(a){q.onStart(),k={};for(var b in r)k[b]=a[b]||r[b];g=[],k.viewFinder&&g.push(k.viewFinder),m.src==h?d():m.src=h},d=function(){if(0===g.length)return f();var a=g.pop();return l=[i,j,a].join("-"),window.vjsImageCache&&window.vjsImageCache[l]?d():void(n.src=a)},f=function(){var b,c,d;p.clearRect(0,0,i,j),p.drawImage(m,0,0,i,j),(k.vignette||k.lighten)&&(b=Math.sqrt(Math.pow(i/2,2)+Math.pow(j/2,2))),k.vignette&&(p.globalCompositeOperation="source-over",c=p.createRadialGradient(i/2,j/2,0,i/2,j/2,b),c.addColorStop(0,"rgba(0,0,0,0)"),c.addColorStop(.5,"rgba(0,0,0,0)"),c.addColorStop(1,["rgba(0,0,0,",k.vignette,")"].join("")),p.fillStyle=c,p.fillRect(0,0,i,j)),k.lighten&&(p.globalCompositeOperation="lighter",c=p.createRadialGradient(i/2,j/2,0,i/2,j/2,b),c.addColorStop(0,["rgba(255,255,255,",k.lighten,")"].join("")),c.addColorStop(.5,"rgba(255,255,255,0)"),c.addColorStop(1,"rgba(0,0,0,0)"),p.fillStyle=c,p.fillRect(0,0,i,j)),d=p.getImageData(0,0,i,j);var e,f,g,h,l,n,o,r,s,t=d.data;k.contrast&&(s=259*(k.contrast+255)/(255*(259-k.contrast))),k.viewFinder&&(r=window.vjsImageCache[[i,j,k.viewFinder].join("-")]);for(var u=i*j;u>=0;--u)for(e=u<<2,k.curves&&(t[e]=k.curves.r[t[e]],t[e+1]=k.curves.g[t[e+1]],t[e+2]=k.curves.b[t[e+2]]),k.contrast&&(t[e]=s*(t[e]-128)+128,t[e+1]=s*(t[e+1]-128)+128,t[e+2]=s*(t[e+2]-128)+128),k.brightness&&(t[e]+=k.brightness,t[e+1]+=k.brightness,t[e+2]+=k.brightness),k.screen&&(t[e]=255-(255-t[e])*(255-k.screen.r*k.screen.a)/255,t[e+1]=255-(255-t[e+1])*(255-k.screen.g*k.screen.a)/255,t[e+2]=255-(255-t[e+2])*(255-k.screen.b*k.screen.a)/255),k.noise&&(o=k.noise-Math.random()*k.noise/2,t[e]+=o,t[e+1]+=o,t[e+2]+=o),k.viewFinder&&(t[e]=t[e]*r[e]/255,t[e+1]=t[e+1]*r[e+1]/255,t[e+2]=t[e+2]*r[e+2]/255),k.sepia&&(g=t[e],h=t[e+1],l=t[e+2],t[e]=.393*g+.769*h+.189*l,t[e+1]=.349*g+.686*h+.168*l,t[e+2]=.272*g+.534*h+.131*l),k.desaturate&&(n=(t[e]+t[e+1]+t[e+2])/3,t[e]+=(n-t[e])*k.desaturate,t[e+1]+=(n-t[e+1])*k.desaturate,t[e+2]+=(n-t[e+2])*k.desaturate),f=2;f>=0;--f)t[e+f]=~~(t[e+f]>255?255:t[e+f]<0?0:t[e+f]);p.putImageData(d,0,0),a.src=p.canvas.toDataURL(q.mime),q.onStop()},h=a.src,b=b||{};for(var s in q)q[s]=b[s]||q[s];return c&&e(c),{apply:function(){h=a.src},reset:function(){a.src=h},vintage:e}};return a.fn.vintage=function(c,d){return this.each(function(){a.data(this,"vintageJS")||a.data(this,"vintageJS",new b(this,c,d))})},b});
66
+
67
+
68
+ /*
69
+
70
+ Superfast Blur - a fast Box Blur For Canvas
71
+
72
+ Version: 0.5
73
+ Author: Mario Klingemann
74
+ Contact: mario@quasimondo.com
75
+ Website: http://www.quasimondo.com/BoxBlurForCanvas
76
+ Twitter: @quasimondo
77
+
78
+ In case you find this class useful - especially in commercial projects -
79
+ I am not totally unhappy for a small donation to my PayPal account
80
+ mario@quasimondo.de
81
+
82
+ Or support me on flattr:
83
+ https://flattr.com/thing/140066/Superfast-Blur-a-pretty-fast-Box-Blur-Effect-for-CanvasJavascript
84
+
85
+ Copyright (c) 2011 Mario Klingemann
86
+
87
+ Permission is hereby granted, free of charge, to any person
88
+ obtaining a copy of this software and associated documentation
89
+ files (the "Software"), to deal in the Software without
90
+ restriction, including without limitation the rights to use,
91
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
92
+ copies of the Software, and to permit persons to whom the
93
+ Software is furnished to do so, subject to the following
94
+ conditions:
95
+
96
+ The above copyright notice and this permission notice shall be
97
+ included in all copies or substantial portions of the Software.
98
+
99
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
100
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
101
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
102
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
103
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
104
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
105
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
106
+ OTHER DEALINGS IN THE SOFTWARE.
107
+ */
108
+ var mul_table = [ 1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1];
109
+
110
+
111
+ var shg_table = [0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];
112
+
113
+
114
+ function boxBlurImage( imageID, canvasID, radius, blurAlphaChannel, iterations ){
115
+
116
+ var img = document.getElementById( imageID );
117
+ var w = img.naturalWidth;
118
+ var h = img.naturalHeight;
119
+
120
+ var canvas = document.getElementById( canvasID );
121
+
122
+ canvas.style.width = w + "px";
123
+ canvas.style.height = h + "px";
124
+ canvas.width = w;
125
+ canvas.height = h;
126
+
127
+ var context = canvas.getContext("2d");
128
+ context.clearRect( 0, 0, w, h );
129
+ context.drawImage( img, 0, 0 );
130
+
131
+ if ( isNaN(radius) || radius < 1 ) return;
132
+
133
+ if ( blurAlphaChannel )
134
+ {
135
+ boxBlurCanvasRGBA( canvasID, 0, 0, w, h, radius, iterations );
136
+ } else {
137
+ boxBlurCanvasRGB( canvasID, 0, 0, w, h, radius, iterations );
138
+ }
139
+
140
+ }
141
+
142
+
143
+ function boxBlurCanvasRGBA( id, top_x, top_y, width, height, radius, iterations ){
144
+ if ( isNaN(radius) || radius < 1 ) return;
145
+
146
+ radius |= 0;
147
+
148
+ if ( isNaN(iterations) ) iterations = 1;
149
+ iterations |= 0;
150
+ if ( iterations > 3 ) iterations = 3;
151
+ if ( iterations < 1 ) iterations = 1;
152
+
153
+ var canvas = document.getElementById( id );
154
+ var context = canvas.getContext("2d");
155
+ var imageData;
156
+
157
+ try {
158
+ try {
159
+ imageData = context.getImageData( top_x, top_y, width, height );
160
+ } catch(e) {
161
+
162
+ // NOTE: this part is supposedly only needed if you want to work with local files
163
+ // so it might be okay to remove the whole try/catch block and just use
164
+ // imageData = context.getImageData( top_x, top_y, width, height );
165
+ try {
166
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
167
+ imageData = context.getImageData( top_x, top_y, width, height );
168
+ } catch(e) {
169
+ alert("Cannot access local image");
170
+ throw new Error("unable to access local image data: " + e);
171
+ return;
172
+ }
173
+ }
174
+ } catch(e) {
175
+ alert("Cannot access image");
176
+ throw new Error("unable to access image data: " + e);
177
+ return;
178
+ }
179
+
180
+ var pixels = imageData.data;
181
+
182
+ var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx,pa;
183
+ var wm = width - 1;
184
+ var hm = height - 1;
185
+ var wh = width * height;
186
+ var rad1 = radius + 1;
187
+
188
+ var mul_sum = mul_table[radius];
189
+ var shg_sum = shg_table[radius];
190
+
191
+ var r = [];
192
+ var g = [];
193
+ var b = [];
194
+ var a = [];
195
+
196
+ var vmin = [];
197
+ var vmax = [];
198
+
199
+ while ( iterations-- > 0 ){
200
+ yw = yi = 0;
201
+
202
+ for ( y=0; y < height; y++ ){
203
+ rsum = pixels[yw] * rad1;
204
+ gsum = pixels[yw+1] * rad1;
205
+ bsum = pixels[yw+2] * rad1;
206
+ asum = pixels[yw+3] * rad1;
207
+
208
+
209
+ for( i = 1; i <= radius; i++ ){
210
+ p = yw + (((i > wm ? wm : i )) << 2 );
211
+ rsum += pixels[p++];
212
+ gsum += pixels[p++];
213
+ bsum += pixels[p++];
214
+ asum += pixels[p]
215
+ }
216
+
217
+ for ( x = 0; x < width; x++ ) {
218
+ r[yi] = rsum;
219
+ g[yi] = gsum;
220
+ b[yi] = bsum;
221
+ a[yi] = asum;
222
+
223
+ if( y==0) {
224
+ vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
225
+ vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
226
+ }
227
+
228
+ p1 = yw + vmin[x];
229
+ p2 = yw + vmax[x];
230
+
231
+ rsum += pixels[p1++] - pixels[p2++];
232
+ gsum += pixels[p1++] - pixels[p2++];
233
+ bsum += pixels[p1++] - pixels[p2++];
234
+ asum += pixels[p1] - pixels[p2];
235
+
236
+ yi++;
237
+ }
238
+ yw += ( width << 2 );
239
+ }
240
+
241
+ for ( x = 0; x < width; x++ ) {
242
+ yp = x;
243
+ rsum = r[yp] * rad1;
244
+ gsum = g[yp] * rad1;
245
+ bsum = b[yp] * rad1;
246
+ asum = a[yp] * rad1;
247
+
248
+ for( i = 1; i <= radius; i++ ) {
249
+ yp += ( i > hm ? 0 : width );
250
+ rsum += r[yp];
251
+ gsum += g[yp];
252
+ bsum += b[yp];
253
+ asum += a[yp];
254
+ }
255
+
256
+ yi = x << 2;
257
+ for ( y = 0; y < height; y++) {
258
+
259
+ pixels[yi+3] = pa = (asum * mul_sum) >>> shg_sum;
260
+ if ( pa > 0 )
261
+ {
262
+ pa = 255 / pa;
263
+ pixels[yi] = ((rsum * mul_sum) >>> shg_sum) * pa;
264
+ pixels[yi+1] = ((gsum * mul_sum) >>> shg_sum) * pa;
265
+ pixels[yi+2] = ((bsum * mul_sum) >>> shg_sum) * pa;
266
+ } else {
267
+ pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;
268
+ }
269
+ if( x == 0 ) {
270
+ vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
271
+ vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
272
+ }
273
+
274
+ p1 = x + vmin[y];
275
+ p2 = x + vmax[y];
276
+
277
+ rsum += r[p1] - r[p2];
278
+ gsum += g[p1] - g[p2];
279
+ bsum += b[p1] - b[p2];
280
+ asum += a[p1] - a[p2];
281
+
282
+ yi += width << 2;
283
+ }
284
+ }
285
+ }
286
+
287
+ context.putImageData( imageData, top_x, top_y );
288
+
289
+ }
290
+
291
+ function boxBlurCanvasRGB( id, top_x, top_y, width, height, radius, iterations ){
292
+ if ( isNaN(radius) || radius < 1 ) return;
293
+
294
+ radius |= 0;
295
+
296
+ if ( isNaN(iterations) ) iterations = 1;
297
+ iterations |= 0;
298
+ if ( iterations > 3 ) iterations = 3;
299
+ if ( iterations < 1 ) iterations = 1;
300
+
301
+ var canvas = id;
302
+ var context = canvas.getContext("2d");
303
+ var imageData;
304
+
305
+ try {
306
+ try {
307
+ imageData = context.getImageData( top_x, top_y, width, height );
308
+ } catch(e) {
309
+
310
+ // NOTE: this part is supposedly only needed if you want to work with local files
311
+ // so it might be okay to remove the whole try/catch block and just use
312
+ // imageData = context.getImageData( top_x, top_y, width, height );
313
+ try {
314
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
315
+ imageData = context.getImageData( top_x, top_y, width, height );
316
+ } catch(e) {
317
+ alert("Cannot access local image");
318
+ throw new Error("unable to access local image data: " + e);
319
+ return;
320
+ }
321
+ }
322
+ } catch(e) {
323
+ alert("Cannot access image");
324
+ throw new Error("unable to access image data: " + e);
325
+ return;
326
+ }
327
+
328
+ var pixels = imageData.data;
329
+
330
+ var rsum,gsum,bsum,asum,x,y,i,p,p1,p2,yp,yi,yw,idx;
331
+ var wm = width - 1;
332
+ var hm = height - 1;
333
+ var wh = width * height;
334
+ var rad1 = radius + 1;
335
+
336
+ var r = [];
337
+ var g = [];
338
+ var b = [];
339
+
340
+ var mul_sum = mul_table[radius];
341
+ var shg_sum = shg_table[radius];
342
+
343
+ var vmin = [];
344
+ var vmax = [];
345
+
346
+ while ( iterations-- > 0 ){
347
+ yw = yi = 0;
348
+
349
+ for ( y=0; y < height; y++ ){
350
+ rsum = pixels[yw] * rad1;
351
+ gsum = pixels[yw+1] * rad1;
352
+ bsum = pixels[yw+2] * rad1;
353
+
354
+ for( i = 1; i <= radius; i++ ){
355
+ p = yw + (((i > wm ? wm : i )) << 2 );
356
+ rsum += pixels[p++];
357
+ gsum += pixels[p++];
358
+ bsum += pixels[p++];
359
+ }
360
+
361
+ for ( x = 0; x < width; x++ ){
362
+ r[yi] = rsum;
363
+ g[yi] = gsum;
364
+ b[yi] = bsum;
365
+
366
+ if( y==0) {
367
+ vmin[x] = ( ( p = x + rad1) < wm ? p : wm ) << 2;
368
+ vmax[x] = ( ( p = x - radius) > 0 ? p << 2 : 0 );
369
+ }
370
+
371
+ p1 = yw + vmin[x];
372
+ p2 = yw + vmax[x];
373
+
374
+ rsum += pixels[p1++] - pixels[p2++];
375
+ gsum += pixels[p1++] - pixels[p2++];
376
+ bsum += pixels[p1++] - pixels[p2++];
377
+
378
+ yi++;
379
+ }
380
+ yw += ( width << 2 );
381
+ }
382
+
383
+ for ( x = 0; x < width; x++ ){
384
+ yp = x;
385
+ rsum = r[yp] * rad1;
386
+ gsum = g[yp] * rad1;
387
+ bsum = b[yp] * rad1;
388
+
389
+ for( i = 1; i <= radius; i++ ){
390
+ yp += ( i > hm ? 0 : width );
391
+ rsum += r[yp];
392
+ gsum += g[yp];
393
+ bsum += b[yp];
394
+ }
395
+
396
+ yi = x << 2;
397
+ for ( y = 0; y < height; y++){
398
+ pixels[yi] = (rsum * mul_sum) >>> shg_sum;
399
+ pixels[yi+1] = (gsum * mul_sum) >>> shg_sum;
400
+ pixels[yi+2] = (bsum * mul_sum) >>> shg_sum;
401
+
402
+ if( x == 0 ) {
403
+ vmin[y] = ( ( p = y + rad1) < hm ? p : hm ) * width;
404
+ vmax[y] = ( ( p = y - radius) > 0 ? p * width : 0 );
405
+ }
406
+
407
+ p1 = x + vmin[y];
408
+ p2 = x + vmax[y];
409
+
410
+ rsum += r[p1] - r[p2];
411
+ gsum += g[p1] - g[p2];
412
+ bsum += b[p1] - b[p2];
413
+
414
+ yi += width << 2;
415
+ }
416
+ }
417
+ }
418
+ context.putImageData( imageData, top_x, top_y );
419
+
420
  }
assets/js/lib/enviratope-item.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Isotope Item
3
+ **/
4
+
5
+ (function(window, factory) {
6
+ // universal module definition
7
+ /* jshint strict: false */ /*globals define, module, require */
8
+ if (typeof define == 'function' && define.amd) {
9
+ // AMD
10
+ define(['outlayer/outlayer'], factory);
11
+ } else if (typeof module == 'object' && module.exports) {
12
+ // CommonJS
13
+ module.exports = factory(require('outlayer'));
14
+ } else {
15
+ // browser global
16
+ window.Isotope = window.Isotope || {};
17
+ window.Isotope.Item = factory(window.Outlayer);
18
+ }
19
+ })(window, function factory(Outlayer) {
20
+ 'use strict';
21
+
22
+ // -------------------------- Item -------------------------- //
23
+ // sub-class Outlayer Item
24
+ function Item() {
25
+ Outlayer.Item.apply(this, arguments);
26
+ }
27
+
28
+ var proto = (Item.prototype = Object.create(Outlayer.Item.prototype));
29
+
30
+ var _create = proto._create;
31
+ proto._create = function() {
32
+ // assign id, used for original-order sorting
33
+ this.id = this.layout.itemGUID++;
34
+ _create.call(this);
35
+ this.sortData = {};
36
+ };
37
+
38
+ proto.updateSortData = function() {
39
+ if (this.isIgnored) {
40
+ return;
41
+ }
42
+ // default sorters
43
+ this.sortData.id = this.id;
44
+ // for backward compatibility
45
+ this.sortData['original-order'] = this.id;
46
+ this.sortData.random = Math.random();
47
+ // go thru getSortData obj and apply the sorters
48
+ var getSortData = this.layout.options.getSortData;
49
+ var sorters = this.layout._sorters;
50
+ for (var key in getSortData) {
51
+ var sorter = sorters[key];
52
+ this.sortData[key] = sorter(this.element, this);
53
+ }
54
+ };
55
+
56
+ var _destroy = proto.destroy;
57
+ proto.destroy = function() {
58
+ // call super
59
+ _destroy.apply(this, arguments);
60
+ // reset display, #741
61
+ this.css({
62
+ display: '',
63
+ });
64
+ };
65
+
66
+ return Item;
67
+ });
assets/js/lib/fancybox.js CHANGED
@@ -1,848 +1,864 @@
1
- // envirabox v1.3.4
2
- (function(B) {
3
- var L, T, Q, M, d, m, J, A, O, z, C = 0,
4
- H = {}, j = [],
5
- e = 0,
6
- G = {}, y = [],
7
- f = null,
8
- o = new Image(),
9
- i = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,
10
- k = /[^\.]\.(swf)\s*$/i,
11
- p, N = 1,
12
- h = 0,
13
- t = "",
14
- b, c, P = false,
15
- s = B.extend(B("<div/>")[0], {
16
- prop: 0
17
- }),
18
- S = false,
19
- r = function() {
20
- T.hide();
21
- o.onerror = o.onload = null;
22
- if (f) {
23
- f.abort()
24
- }
25
- L.empty()
26
- }, x = function() {
27
- if (false === H.onError(j, C, H)) {
28
- T.hide();
29
- P = false;
30
- return
31
- }
32
- H.titleShow = false;
33
- H.width = "auto";
34
- H.height = "auto";
35
- L.html('<p id="envirabox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
36
- n()
37
- }, w = function() {
38
- var Z = j[C],
39
- W, Y, ab, aa, V, X;
40
- r();
41
- H = B.extend({}, B.fn.envirabox.defaults, (typeof B(Z).data("envirabox") == "undefined" ? H : B(Z).data("envirabox")));
42
- X = H.onStart(j, C, H);
43
- if (X === false) {
44
- P = false;
45
- return
46
- } else {
47
- if (typeof X == "object") {
48
- H = B.extend(H, X)
49
- }
50
- }
51
- ab = H.title || (Z.nodeName ? B(Z).attr("title") : Z.title) || "";
52
- if (Z.nodeName && !H.orig) {
53
- H.orig = B(Z).children("img:first").length ? B(Z).children("img:first") : B(Z)
54
- }
55
- if (ab === "" && H.orig && H.titleFromAlt) {
56
- ab = H.orig.attr("alt")
57
- }
58
- W = H.href || (Z.nodeName ? B(Z).attr("href") : Z.href) || null;
59
- if ((/^(?:javascript)/i).test(W) || W == "#") {
60
- W = null
61
- }
62
- /* is href/W a link? */
63
- if ( typeof W === 'string' && B.envirabox.isUrl(W) && !B.envirabox.isImage(W) ) {
64
- document.getElementById("envirabox-loading").style.visibility = "hidden";
65
- window.location.href = W;
66
- }
67
- if (H.type) {
68
- Y = H.type;
69
- if (!W) {
70
- W = H.content
71
- }
72
- } else {
73
- if (H.content) {
74
- Y = "html"
75
- } else {
76
- if (W) {
77
- if (W.match(i)) {
78
- Y = "image"
79
- } else {
80
- if (W.match(k)) {
81
- Y = "swf"
82
- } else {
83
- if (B(Z).hasClass("iframe")) {
84
- Y = "iframe"
85
- } else {
86
- if (W.indexOf("#") === 0) {
87
- Y = "inline"
88
- } else {
89
- Y = "ajax"
90
- }
91
- }
92
- }
93
- }
94
- }
95
- }
96
- } if (!Y) {
97
- x();
98
- return
99
- }
100
- if (Y == "inline") {
101
- Z = W.substr(W.indexOf("#"));
102
- Y = B(Z).length > 0 ? "inline" : "ajax"
103
- }
104
- H.type = Y;
105
- H.href = W;
106
- H.title = ab;
107
- if (H.autoDimensions) {
108
- if (H.type == "html" || H.type == "inline" || H.type == "ajax") {
109
- H.width = "auto";
110
- H.height = "auto"
111
- } else {
112
- H.autoDimensions = false
113
- }
114
- }
115
- if (H.modal) {
116
- H.overlayShow = true;
117
- H.hideOnOverlayClick = false;
118
- H.hideOnContentClick = false;
119
- H.enableEscapeButton = false;
120
- H.showCloseButton = false
121
- }
122
- H.padding = parseInt(H.padding, 10);
123
- H.margin = parseInt(H.margin, 10);
124
- L.css("padding", (H.padding + H.margin));
125
- B(".envirabox-inline-tmp").unbind("envirabox-cancel").bind("envirabox-change", function() {
126
- B(this).replaceWith(m.children())
127
- });
128
- switch (Y) {
129
- case "html":
130
- L.html(H.content);
131
- n();
132
- break;
133
- case "inline":
134
- if (B(Z).parent().is("#envirabox-content") === true) {
135
- P = false;
136
- return
137
- }
138
- B('<div class="envirabox-inline-tmp" />').hide().insertBefore(B(Z)).bind("envirabox-cleanup", function() {
139
- B(this).replaceWith(m.children())
140
- }).bind("envirabox-cancel", function() {
141
- B(this).replaceWith(L.children())
142
- });
143
- B(Z).appendTo(L);
144
- n();
145
- break;
146
- case "image":
147
- P = false;
148
- B.envirabox.showActivity();
149
- o = new Image();
150
- o.onerror = function() {
151
- x()
152
- };
153
- o.onload = function() {
154
- P = true;
155
- o.onerror = o.onload = null;
156
- F()
157
- };
158
- o.src = W;
159
- break;
160
- case "swf":
161
- H.scrolling = "no";
162
- aa = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + H.width + '" height="' + H.height + '"><param name="movie" value="' + W + '"></param>';
163
- V = "";
164
- B.each(H.swf, function(ac, ad) {
165
- aa += '<param name="' + ac + '" value="' + ad + '"></param>';
166
- V += " " + ac + '="' + ad + '"'
167
- });
168
- aa += '<embed src="' + W + '" type="application/x-shockwave-flash" width="' + H.width + '" height="' + H.height + '"' + V + "></embed></object>";
169
- L.html(aa);
170
- n();
171
- break;
172
- case "ajax":
173
- P = false;
174
- B.envirabox.showActivity();
175
- H.ajax.win = H.ajax.success;
176
- f = B.ajax(B.extend({}, H.ajax, {
177
- url: W,
178
- data: H.ajax.data || {},
179
- error: function(ac, ae, ad) {
180
- if (ac.status > 0) {
181
- x()
182
- }
183
- },
184
- success: function(ad, af, ac) {
185
- var ae = typeof ac == "object" ? ac : f;
186
- if (ae.status == 200) {
187
- if (typeof H.ajax.win == "function") {
188
- X = H.ajax.win(W, ad, af, ac);
189
- if (X === false) {
190
- T.hide();
191
- return
192
- } else {
193
- if (typeof X == "string" || typeof X == "object") {
194
- ad = X
195
- }
196
- }
197
- }
198
- L.html(ad);
199
- n()
200
- }
201
- }
202
- }));
203
- break;
204
- case "iframe":
205
- E();
206
- break
207
- }
208
- }, n = function() {
209
- var V = H.width,
210
- W = H.height;
211
- if (V.toString().indexOf("%") > -1) {
212
- V = parseInt((B(window).width() - (H.margin * 2)) * parseFloat(V) / 100, 10) + "px"
213
- } else {
214
- V = V == "auto" ? "auto" : V + "px"
215
- } if (W.toString().indexOf("%") > -1) {
216
- W = parseInt((B(window).height() - (H.margin * 2)) * parseFloat(W) / 100, 10) + "px"
217
- } else {
218
- W = W == "auto" ? "auto" : W + "px"
219
- }
220
- L.wrapInner('<div style="width:' + V + ";height:" + W + ";overflow: " + (H.scrolling == "auto" ? "auto" : (H.scrolling == "yes" ? "scroll" : "hidden")) + ';position:relative;"></div>');
221
- H.width = L.width();
222
- H.height = L.height();
223
- E()
224
- }, F = function() {
225
- H.width = o.width;
226
- H.height = o.height;
227
- B("<img />").attr({
228
- id: "envirabox-img",
229
- src: o.src,
230
- alt: H.title
231
- }).appendTo(L);
232
- E()
233
- }, E = function() {
234
- var W, V;
235
- T.hide();
236
- if (M.is(":visible") && false === G.onCleanup(y, e, G)) {
237
- B.event.trigger("envirabox-cancel");
238
- P = false;
239
- return
240
- }
241
- P = true;
242
- B(m.add(Q)).unbind();
243
- B(window).unbind("resize.fb scroll.fb");
244
- B(document).unbind("keydown.fb");
245
- if (M.is(":visible") && G.titlePosition !== "outside") {
246
- M.css("height", M.height())
247
- }
248
- y = j;
249
- e = C;
250
- G = H;
251
- if (G.overlayShow) {
252
- Q.css({
253
- "background-color": G.overlayColor,
254
- opacity: G.overlayOpacity,
255
- cursor: G.hideOnOverlayClick ? "pointer" : "auto",
256
- height: B(document).height()
257
- });
258
- if (!Q.is(":visible")) {
259
- if (S) {
260
- B("select:not(#envirabox-tmp select)").filter(function() {
261
- return this.style.visibility !== "hidden"
262
- }).css({
263
- visibility: "hidden"
264
- }).one("envirabox-cleanup", function() {
265
- this.style.visibility = "inherit"
266
- })
267
- }
268
- Q.show()
269
- }
270
- } else {
271
- Q.hide()
272
- }
273
- c = R();
274
- l();
275
- if (M.is(":visible")) {
276
- B(J.add(O).add(z)).hide();
277
- W = M.position(), b = {
278
- top: W.top,
279
- left: W.left,
280
- width: M.width(),
281
- height: M.height()
282
- };
283
- V = (b.width == c.width && b.height == c.height);
284
- m.fadeTo(G.changeFade, 0.3, function() {
285
- var X = function() {
286
- m.html(L.contents()).fadeTo(G.changeFade, 1, v)
287
- };
288
- B.event.trigger("envirabox-change");
289
- m.empty().removeAttr("filter").css({
290
- "border-width": G.padding,
291
- width: c.width - G.padding * 2,
292
- height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
293
- });
294
- if (V) {
295
- X()
296
- } else {
297
- s.prop = 0;
298
- B(s).animate({
299
- prop: 1
300
- }, {
301
- duration: G.changeSpeed,
302
- easing: G.easingChange,
303
- step: U,
304
- complete: X
305
- })
306
- }
307
- });
308
- return
309
- }
310
- M.removeAttr("style");
311
- m.css("border-width", G.padding);
312
- if (G.transitionIn == "elastic") {
313
- b = I();
314
- m.html(L.contents());
315
- M.show();
316
- if (G.opacity) {
317
- c.opacity = 0
318
- }
319
- s.prop = 0;
320
- B(s).animate({
321
- prop: 1
322
- }, {
323
- duration: G.speedIn,
324
- easing: G.easingIn,
325
- step: U,
326
- complete: v
327
- });
328
- return
329
- }
330
- if (G.titlePosition == "inside" && h > 0) {
331
- A.show()
332
- }
333
- m.css({
334
- width: c.width - G.padding * 2,
335
- height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
336
- }).html(L.contents());
337
- M.css(c).fadeIn(G.transitionIn == "none" ? 0 : G.speedIn, v)
338
- }, D = function(V) {
339
- if (V && V.length) {
340
- if (G.titlePosition == "float") {
341
- return '<table id="envirabox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="envirabox-title-float-left"></td><td id="envirabox-title-float-main">' + V + '</td><td id="envirabox-title-float-right"></td></tr></table>'
342
- }
343
- return '<div id="envirabox-title-' + G.titlePosition + '">' + V + "</div>"
344
- }
345
- return false
346
- }, l = function() {
347
- t = G.title || "";
348
- h = 0;
349
- A.empty().removeAttr("style").removeClass();
350
- if (G.titleShow === false) {
351
- A.hide();
352
- return
353
- }
354
- t = B.isFunction(G.titleFormat) ? G.titleFormat(t, y, e, G) : D(t);
355
- if (!t || t === "") {
356
- A.hide();
357
- return
358
- }
359
- A.addClass("envirabox-title-" + G.titlePosition).html(t).appendTo("body").show();
360
- switch (G.titlePosition) {
361
- case "inside":
362
- A.css({
363
- width: c.width - (G.padding * 2),
364
- marginLeft: G.padding,
365
- marginRight: G.padding
366
- });
367
- h = A.outerHeight(true);
368
- A.appendTo(d);
369
- c.height += h;
370
- break;
371
- case "over":
372
- A.css({
373
- marginLeft: G.padding,
374
- width: c.width - (G.padding * 2),
375
- bottom: G.padding
376
- }).appendTo(d);
377
- break;
378
- case "float":
379
- A.css("left", parseInt((A.width() - c.width - 40) / 2, 10) * -1).appendTo(M);
380
- break;
381
- default:
382
- A.css({
383
- width: c.width - (G.padding * 2),
384
- paddingLeft: G.padding,
385
- paddingRight: G.padding
386
- }).appendTo(M);
387
- break
388
- }
389
- A.hide()
390
- }, g = function() {
391
- if (G.enableEscapeButton || G.enableKeyboardNav) {
392
- B(document).bind("keydown.fb", function(V) {
393
- if (V.keyCode == 27 && G.enableEscapeButton) {
394
- V.preventDefault();
395
- B.envirabox.close()
396
- } else {
397
- if ((V.keyCode == 37 || V.keyCode == 39) && G.enableKeyboardNav && V.target.tagName !== "INPUT" && V.target.tagName !== "TEXTAREA" && V.target.tagName !== "SELECT") {
398
- V.preventDefault();
399
- B.envirabox[V.keyCode == 37 ? "prev" : "next"]()
400
- }
401
- }
402
- })
403
- }
404
- if (!G.showNavArrows) {
405
- O.hide();
406
- z.hide();
407
- return
408
- }
409
- if ((G.cyclic && y.length > 1) || e !== 0) {
410
- O.show()
411
- }
412
- if ((G.cyclic && y.length > 1) || e != (y.length - 1)) {
413
- z.show()
414
- }
415
- }, v = function() {
416
- if (!B.support.opacity) {
417
- m.get(0).style.removeAttribute("filter");
418
- M.get(0).style.removeAttribute("filter")
419
- }
420
- if (H.autoDimensions) {
421
- m.css("height", "auto")
422
- }
423
- M.css("height", "auto");
424
- if (t && t.length) {
425
- A.show()
426
- }
427
- if (G.showCloseButton) {
428
- J.show()
429
- }
430
- g();
431
- if (G.hideOnContentClick) {
432
- m.bind("click", B.envirabox.close)
433
- }
434
- if (G.hideOnOverlayClick) {
435
- Q.bind("click", B.envirabox.close)
436
- }
437
- B(window).bind("resize.fb", B.envirabox.resize);
438
- if (G.centerOnScroll) {
439
- B(window).bind("scroll.fb", B.envirabox.center)
440
- }
441
- if (G.type == "iframe") {
442
- B('<iframe id="envirabox-frame" name="envirabox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" scrolling="' + H.scrolling + '" src="' + G.href + '"></iframe>').appendTo(m)
443
- }
444
- M.show();
445
- P = false;
446
- B.envirabox.center();
447
- G.onComplete(y, e, G);
448
- K()
449
- }, K = function() {
450
- var V, W;
451
- if ((y.length - 1) > e) {
452
- V = y[e + 1].href;
453
- if (typeof V !== "undefined" && V.match(i)) {
454
- W = new Image();
455
- W.src = V
456
- }
457
- }
458
- if (e > 0) {
459
- V = y[e - 1].href;
460
- if (typeof V !== "undefined" && V.match(i)) {
461
- W = new Image();
462
- W.src = V
463
- }
464
- }
465
- }, U = function(W) {
466
- var V = {
467
- width: parseInt(b.width + (c.width - b.width) * W, 10),
468
- height: parseInt(b.height + (c.height - b.height) * W, 10),
469
- top: parseInt(b.top + (c.top - b.top) * W, 10),
470
- left: parseInt(b.left + (c.left - b.left) * W, 10)
471
- };
472
- if (typeof c.opacity !== "undefined") {
473
- V.opacity = W < 0.5 ? 0.5 : W
474
- }
475
- M.css(V);
476
- m.css({
477
- width: V.width - G.padding * 2,
478
- height: V.height - (h * W) - G.padding * 2
479
- })
480
- }, u = function() {
481
- return [B(window).width() - (G.margin * 2), B(window).height() - (G.margin * 2), B(document).scrollLeft() + G.margin, B(document).scrollTop() + G.margin]
482
- }, R = function() {
483
- var V = u(),
484
- Z = {}, W = G.autoScale,
485
- X = G.padding * 2,
486
- Y;
487
- if (G.width.toString().indexOf("%") > -1) {
488
- Z.width = parseInt((V[0] * parseFloat(G.width)) / 100, 10)
489
- } else {
490
- Z.width = G.width + X
491
- } if (G.height.toString().indexOf("%") > -1) {
492
- Z.height = parseInt((V[1] * parseFloat(G.height)) / 100, 10)
493
- } else {
494
- Z.height = G.height + X
495
- } if (W && (Z.width > V[0] || Z.height > V[1])) {
496
- if (H.type == "image" || H.type == "swf") {
497
- Y = (G.width) / (G.height);
498
- if ((Z.width) > V[0]) {
499
- Z.width = V[0];
500
- Z.height = parseInt(((Z.width - X) / Y) + X, 10)
501
- }
502
- if ((Z.height) > V[1]) {
503
- Z.height = V[1];
504
- Z.width = parseInt(((Z.height - X) * Y) + X, 10)
505
- }
506
- } else {
507
- Z.width = Math.min(Z.width, V[0]);
508
- Z.height = Math.min(Z.height, V[1])
509
- }
510
- }
511
- Z.top = parseInt(Math.max(V[3] - 20, V[3] + ((V[1] - Z.height - 40) * 0.5)), 10);
512
- Z.left = parseInt(Math.max(V[2] - 20, V[2] + ((V[0] - Z.width - 40) * 0.5)), 10);
513
- return Z
514
- }, q = function(V) {
515
- var W = V.offset();
516
- W.top += parseInt(V.css("paddingTop"), 10) || 0;
517
- W.left += parseInt(V.css("paddingLeft"), 10) || 0;
518
- W.top += parseInt(V.css("border-top-width"), 10) || 0;
519
- W.left += parseInt(V.css("border-left-width"), 10) || 0;
520
- W.width = V.width();
521
- W.height = V.height();
522
- return W
523
- }, I = function() {
524
- var Y = H.orig ? B(H.orig) : false,
525
- X = {}, W, V;
526
- if (Y && Y.length) {
527
- W = q(Y);
528
- X = {
529
- width: W.width + (G.padding * 2),
530
- height: W.height + (G.padding * 2),
531
- top: W.top - G.padding - 20,
532
- left: W.left - G.padding - 20
533
- }
534
- } else {
535
- V = u();
536
- X = {
537
- width: G.padding * 2,
538
- height: G.padding * 2,
539
- top: parseInt(V[3] + V[1] * 0.5, 10),
540
- left: parseInt(V[2] + V[0] * 0.5, 10)
541
- }
542
- }
543
- return X
544
- }, a = function() {
545
- if (!T.is(":visible")) {
546
- clearInterval(p);
547
- return
548
- }
549
- B("div", T).css("top", (N * -40) + "px");
550
- N = (N + 1) % 12
551
- };
552
- B.fn.envirabox = function(V) {
553
- if (!B(this).length) {
554
- return this
555
- }
556
- B(this).data("envirabox", B.extend({}, V, (B.metadata ? B(this).metadata() : {}))).unbind("click.fb").bind("click.fb", function(X) {
557
- X.preventDefault();
558
- if (P) {
559
- return
560
- }
561
- P = true;
562
- B(this).blur();
563
- j = [];
564
- C = 0;
565
- var W = B(this).attr("rel") || "";
566
- if (!W || W == "" || W === "nofollow") {
567
- j.push(this)
568
- } else {
569
- j = B("a[rel=" + W + "], area[rel=" + W + "]");
570
- C = j.index(this)
571
- }
572
- w();
573
- return
574
- });
575
- return this
576
- };
577
- B.envirabox = function(Y) {
578
- var X;
579
- if (P) {
580
- return
581
- }
582
- P = true;
583
- X = typeof arguments[1] !== "undefined" ? arguments[1] : {};
584
- j = [];
585
- C = parseInt(X.index, 10) || 0;
586
- if (B.isArray(Y)) {
587
- for (var W = 0, V = Y.length; W < V; W++) {
588
- if (typeof Y[W] == "object") {
589
- B(Y[W]).data("envirabox", B.extend({}, X, Y[W]))
590
- } else {
591
- Y[W] = B({}).data("envirabox", B.extend({
592
- content: Y[W]
593
- }, X))
594
- }
595
- }
596
- j = jQuery.merge(j, Y)
597
- } else {
598
- if (typeof Y == "object") {
599
- B(Y).data("envirabox", B.extend({}, X, Y))
600
- } else {
601
- Y = B({}).data("envirabox", B.extend({
602
- content: Y
603
- }, X))
604
- }
605
- j.push(Y)
606
- } if (C > j.length || C < 0) {
607
- C = 0
608
- }
609
- w()
610
- };
611
- B.envirabox.showActivity = function() {
612
- clearInterval(p);
613
- T.show();
614
- p = setInterval(a, 66)
615
- };
616
- B.envirabox.hideActivity = function() {
617
- T.hide()
618
- };
619
- B.envirabox.next = function() {
620
- return B.envirabox.pos(e + 1)
621
- };
622
- B.envirabox.prev = function() {
623
- return B.envirabox.pos(e - 1)
624
- };
625
- B.envirabox.pos = function(V) {
626
- if (P) {
627
- return
628
- }
629
- V = parseInt(V);
630
- j = y;
631
- if (V > -1 && V < y.length) {
632
- C = V;
633
- w()
634
- } else {
635
- if (G.cyclic && y.length > 1) {
636
- C = V >= y.length ? 0 : y.length - 1;
637
- w()
638
- }
639
- }
640
- return
641
- };
642
- B.envirabox.cancel = function() {
643
- if (P) {
644
- return
645
- }
646
- P = true;
647
- B.event.trigger("envirabox-cancel");
648
- r();
649
- H.onCancel(j, C, H);
650
- P = false
651
- };
652
- B.envirabox.close = function() {
653
- if (P || M.is(":hidden")) {
654
- return
655
- }
656
- P = true;
657
- if (G && false === G.onCleanup(y, e, G)) {
658
- P = false;
659
- return
660
- }
661
- r();
662
- B(J.add(O).add(z)).hide();
663
- B(m.add(Q)).unbind();
664
- B(window).unbind("resize.fb scroll.fb");
665
- B(document).unbind("keydown.fb");
666
- m.find("iframe").attr("src", S && /^https/i.test(window.location.href || "") ? "javascript:void(false)" : "about:blank");
667
- if (G.titlePosition !== "inside") {
668
- A.empty()
669
- }
670
- M.stop();
671
-
672
- function V() {
673
- Q.fadeOut("fast");
674
- A.empty().hide();
675
- M.hide();
676
- B.event.trigger("envirabox-cleanup");
677
- m.empty();
678
- G.onClosed(y, e, G);
679
- y = H = [];
680
- e = C = 0;
681
- G = H = {};
682
- P = false
683
- }
684
- if (G.transitionOut == "elastic") {
685
- b = I();
686
- var W = M.position();
687
- c = {
688
- top: W.top,
689
- left: W.left,
690
- width: M.width(),
691
- height: M.height()
692
- };
693
- if (G.opacity) {
694
- c.opacity = 1
695
- }
696
- A.empty().hide();
697
- s.prop = 1;
698
- B(s).animate({
699
- prop: 0
700
- }, {
701
- duration: G.speedOut,
702
- easing: G.easingOut,
703
- step: U,
704
- complete: V
705
- })
706
- } else {
707
- M.fadeOut(G.transitionOut == "none" ? 0 : G.speedOut, V)
708
- }
709
- };
710
- B.envirabox.resize = function() {
711
- if (Q.is(":visible")) {
712
- Q.css("height", B(document).height())
713
- }
714
- var W, V;
715
- c = R();
716
- l();
717
- A.show();
718
- W = M.position(), b = {
719
- top: W.top,
720
- left: W.left,
721
- width: M.width(),
722
- height: M.height()
723
- };
724
- V = (b.width == c.width && b.height == c.height);
725
- if (V) {} else {
726
- s.prop = 0;
727
- B(s).animate({
728
- prop: 1
729
- }, {
730
- duration: G.changeSpeed,
731
- easing: G.easingChange,
732
- step: U
733
- })
734
- }
735
- m.css({
736
- width: c.width - G.padding * 2,
737
- height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
738
- });
739
- M.css(c);
740
- B.envirabox.center(true)
741
- };
742
- B.envirabox.center = function() {
743
- var V, W;
744
- if (P) {
745
- return
746
- }
747
- W = arguments[0] === true ? 1 : 0;
748
- V = u();
749
- if (!W && (M.width() > V[0] || M.height() > V[1])) {
750
- return
751
- }
752
- M.stop().animate({
753
- top: parseInt(Math.max(V[3] - 20, V[3] + ((V[1] - m.height() - 40) * 0.5) - G.padding)),
754
- left: parseInt(Math.max(V[2] - 20, V[2] + ((V[0] - m.width() - 40) * 0.5) - G.padding))
755
- }, typeof arguments[0] == "number" ? arguments[0] : 200)
756
- };
757
- B.envirabox.init = function() {
758
- if (B("#envirabox-wrap").length) {
759
- return
760
- }
761
- B("body").append(L = B('<div id="envirabox-tmp"></div>'), T = B('<div id="envirabox-loading"><div></div></div>'), Q = B('<div id="envirabox-overlay"></div>'), M = B('<div id="envirabox-wrap"></div>'));
762
- d = B('<div id="envirabox-outer"></div>').append('<div class="envirabox-bg" id="envirabox-bg-n"></div><div class="envirabox-bg" id="envirabox-bg-ne"></div><div class="envirabox-bg" id="envirabox-bg-e"></div><div class="envirabox-bg" id="envirabox-bg-se"></div><div class="envirabox-bg" id="envirabox-bg-s"></div><div class="envirabox-bg" id="envirabox-bg-sw"></div><div class="envirabox-bg" id="envirabox-bg-w"></div><div class="envirabox-bg" id="envirabox-bg-nw"></div>').appendTo(M);
763
- d.append(m = B('<div id="envirabox-content"></div>'), J = B('<a id="envirabox-close"></a>'), A = B('<div id="envirabox-title"></div>'), O = B('<a href="javascript:;" id="envirabox-left"><span class="fancy-ico" id="envirabox-left-ico"></span></a>'), z = B('<a href="javascript:;" id="envirabox-right"><span class="fancy-ico" id="envirabox-right-ico"></span></a>'));
764
- J.click(B.envirabox.close);
765
- T.click(B.envirabox.cancel);
766
- O.click(function(V) {
767
- V.preventDefault();
768
- B.envirabox.prev()
769
- });
770
- z.click(function(V) {
771
- V.preventDefault();
772
- B.envirabox.next()
773
- });
774
- if (B.fn.mousewheel) {
775
- M.bind("mousewheel.fb", function(V, W) {
776
- if (P) {
777
- V.preventDefault()
778
- } else {
779
- if (B(V.target).get(0).clientHeight == 0 || B(V.target).get(0).scrollHeight === B(V.target).get(0).clientHeight) {
780
- V.preventDefault();
781
- B.envirabox[W > 0 ? "prev" : "next"]()
782
- }
783
- }
784
- })
785
- }
786
- if (!B.support.opacity) {
787
- M.addClass("envirabox-ie")
788
- }
789
- if (S) {
790
- T.addClass("envirabox-ie6");
791
- M.addClass("envirabox-ie6");
792
- B('<iframe id="envirabox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || "") ? "javascript:void(false)" : "about:blank") + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(d)
793
- }
794
- };
795
- B.envirabox.isUrl = function(str) {
796
- return str.match(/^(https?):\/\/((?:[a-z0-9.-]|%[0-9A-F]{2}){3,})(?::(\d+))?((?:\/(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})*)*)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?$/i);
797
- };
798
- B.envirabox.isImage = function(str) {
799
- return str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
800
- };
801
- B.fn.envirabox.defaults = {
802
- padding: 10,
803
- margin: 40,
804
- opacity: false,
805
- modal: false,
806
- cyclic: false,
807
- scrolling: "auto",
808
- width: 560,
809
- height: 340,
810
- autoScale: true,
811
- autoDimensions: true,
812
- centerOnScroll: false,
813
- ajax: {},
814
- swf: {
815
- wmode: "transparent"
816
- },
817
- hideOnOverlayClick: true,
818
- hideOnContentClick: false,
819
- overlayShow: true,
820
- overlayOpacity: 0.9, /* was 0.7 but upped to remove CSS !important */
821
- overlayColor: "#777",
822
- titleShow: true,
823
- titlePosition: "float",
824
- titleFormat: null,
825
- titleFromAlt: false,
826
- transitionIn: "fade",
827
- transitionOut: "fade",
828
- speedIn: 300,
829
- speedOut: 300,
830
- changeSpeed: 300,
831
- changeFade: "fast",
832
- easingIn: "swing",
833
- easingOut: "swing",
834
- showCloseButton: true,
835
- showNavArrows: true,
836
- enableEscapeButton: true,
837
- enableKeyboardNav: true,
838
- onStart: function() {},
839
- onCancel: function() {},
840
- onComplete: function() {},
841
- onCleanup: function() {},
842
- onClosed: function() {},
843
- onError: function() {}
844
- };
845
- B(document).ready(function() {
846
- B.envirabox.init()
847
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
848
  })(jQuery);
1
+ // envirabox v1.3.4
2
+ (function(B) {
3
+ var L, T, Q, M, d, m, J, A, O, z, C = 0,
4
+ H = {}, j = [],
5
+ e = 0,
6
+ G = {}, y = [],
7
+ f = null,
8
+ o = new Image(),
9
+ i = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,
10
+ k = /[^\.]\.(swf)\s*$/i,
11
+ p, N = 1,
12
+ h = 0,
13
+ t = "",
14
+ b, c, P = false,
15
+ s = B.extend(B("<div/>")[0], {
16
+ prop: 0
17
+ }),
18
+ S = false,
19
+ r = function() {
20
+ T.hide();
21
+ o.onerror = o.onload = null;
22
+ if (f) {
23
+ f.abort()
24
+ }
25
+ L.empty()
26
+ }, x = function() {
27
+ if (false === H.onError(j, C, H)) {
28
+ T.hide();
29
+ P = false;
30
+ return
31
+ }
32
+ H.titleShow = false;
33
+ H.width = "auto";
34
+ H.height = "auto";
35
+ L.html('<p id="envirabox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
36
+ n()
37
+ }, w = function() {
38
+ var Z = j[C],
39
+ W, Y, ab, aa, V, X;
40
+ r();
41
+ H = B.extend({}, B.fn.envirabox.defaults, (typeof B(Z).data("envirabox") == "undefined" ? H : B(Z).data("envirabox")));
42
+ X = H.onStart(j, C, H);
43
+ if (X === false) {
44
+ P = false;
45
+ return
46
+ } else {
47
+ if (typeof X == "object") {
48
+ H = B.extend(H, X)
49
+ }
50
+ }
51
+ ab = H.title || (Z.nodeName ? B(Z).attr("title") : Z.title) || "";
52
+ if (Z.nodeName && !H.orig) {
53
+ H.orig = B(Z).children("img:first").length ? B(Z).children("img:first") : B(Z)
54
+ }
55
+ if (ab === "" && H.orig && H.titleFromAlt) {
56
+ ab = H.orig.attr("alt")
57
+ }
58
+ W = H.href || (Z.nodeName ? B(Z).attr("href") : Z.href) || null;
59
+ if ((/^(?:javascript)/i).test(W) || W == "#") {
60
+ W = null
61
+ }
62
+ /* is href/W a link? */
63
+ if ( typeof W === 'string' && B.envirabox.isUrl(W) && !B.envirabox.isImage(W) ) {
64
+ document.getElementById("envirabox-loading").style.visibility = "hidden";
65
+ window.location.href = W;
66
+ }
67
+ if (H.type) {
68
+ Y = H.type;
69
+ if (!W) {
70
+ W = H.content
71
+ }
72
+ } else {
73
+ if (H.content) {
74
+ Y = "html"
75
+ } else {
76
+ if (W) {
77
+ if (W.match(i)) {
78
+ Y = "image"
79
+ } else {
80
+ if (W.match(k)) {
81
+ Y = "swf"
82
+ } else {
83
+ if (B(Z).hasClass("iframe")) {
84
+ Y = "iframe"
85
+ } else {
86
+ if (W.indexOf("#") === 0) {
87
+ Y = "inline"
88
+ } else {
89
+ Y = "ajax"
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ } if (!Y) {
97
+ x();
98
+ return
99
+ }
100
+ if (Y == "inline") {
101
+ Z = W.substr(W.indexOf("#"));
102
+ Y = B(Z).length > 0 ? "inline" : "ajax"
103
+ }
104
+ H.type = Y;
105
+ H.href = W;
106
+ H.title = ab;
107
+ if (H.autoDimensions) {
108
+ if (H.type == "html" || H.type == "inline" || H.type == "ajax") {
109
+ H.width = "auto";
110
+ H.height = "auto"
111
+ } else {
112
+ H.autoDimensions = false
113
+ }
114
+ }
115
+ if (H.modal) {
116
+ H.overlayShow = true;
117
+ H.hideOnOverlayClick = false;
118
+ H.hideOnContentClick = false;
119
+ H.enableEscapeButton = false;
120
+ H.showCloseButton = false
121
+ }
122
+ H.padding = parseInt(H.padding, 10);
123
+ H.margin = parseInt(H.margin, 10);
124
+ L.css("padding", (H.padding + H.margin));
125
+ B(".envirabox-inline-tmp").unbind("envirabox-cancel").bind("envirabox-change", function() {
126
+ B(this).replaceWith(m.children())
127
+ });
128
+ switch (Y) {
129
+ case "html":
130
+ L.html(H.content);
131
+ n();
132
+ break;
133
+ case "inline":
134
+ if (B(Z).parent().is("#envirabox-content") === true) {
135
+ P = false;
136
+ return
137
+ }
138
+ B('<div class="envirabox-inline-tmp" />').hide().insertBefore(B(Z)).bind("envirabox-cleanup", function() {
139
+ B(this).replaceWith(m.children())
140
+ }).bind("envirabox-cancel", function() {
141
+ B(this).replaceWith(L.children())
142
+ });
143
+ B(Z).appendTo(L);
144
+ n();
145
+ break;
146
+ case "image":
147
+ P = false;
148
+ B.envirabox.showActivity();
149
+ o = new Image();
150
+ o.onerror = function() {
151
+ x()
152
+ };
153
+ o.onload = function() {
154
+ P = true;
155
+ o.onerror = o.onload = null;
156
+ F()
157
+ };
158
+ o.src = W;
159
+ break;
160
+ case "swf":
161
+ H.scrolling = "no";
162
+ aa = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + H.width + '" height="' + H.height + '"><param name="movie" value="' + W + '"></param>';
163
+ V = "";
164
+ B.each(H.swf, function(ac, ad) {
165
+ aa += '<param name="' + ac + '" value="' + ad + '"></param>';
166
+ V += " " + ac + '="' + ad + '"'
167
+ });
168
+ aa += '<embed src="' + W + '" type="application/x-shockwave-flash" width="' + H.width + '" height="' + H.height + '"' + V + "></embed></object>";
169
+ L.html(aa);
170
+ n();
171
+ break;
172
+ case "ajax":
173
+ P = false;
174
+ B.envirabox.showActivity();
175
+ H.ajax.win = H.ajax.success;
176
+ f = B.ajax(B.extend({}, H.ajax, {
177
+ url: W,
178
+ data: H.ajax.data || {},
179
+ error: function(ac, ae, ad) {
180
+ if (ac.status > 0) {
181
+ x()
182
+ }
183
+ },
184
+ success: function(ad, af, ac) {
185
+ var ae = typeof ac == "object" ? ac : f;
186
+ if (ae.status == 200) {
187
+ if (typeof H.ajax.win == "function") {
188
+ X = H.ajax.win(W, ad, af, ac);
189
+ if (X === false) {
190
+ T.hide();
191
+ return
192
+ } else {
193
+ if (typeof X == "string" || typeof X == "object") {
194
+ ad = X
195
+ }
196
+ }
197
+ }
198
+ L.html(ad);
199
+ n()
200
+ }
201
+ }
202
+ }));
203
+ break;
204
+ case "iframe":
205
+ E();
206
+ break
207
+ }
208
+ }, n = function() {
209
+ var V = H.width,
210
+ W = H.height;
211
+ if (V.toString().indexOf("%") > -1) {
212
+ V = parseInt((B(window).width() - (H.margin * 2)) * parseFloat(V) / 100, 10) + "px"
213
+ } else {
214
+ V = V == "auto" ? "auto" : V + "px"
215
+ } if (W.toString().indexOf("%") > -1) {
216
+ W = parseInt((B(window).height() - (H.margin * 2)) * parseFloat(W) / 100, 10) + "px"
217
+ } else {
218
+ W = W == "auto" ? "auto" : W + "px"
219
+ }
220
+ L.wrapInner('<div style="width:' + V + ";height:" + W + ";overflow: " + (H.scrolling == "auto" ? "auto" : (H.scrolling == "yes" ? "scroll" : "hidden")) + ';position:relative;"></div>');
221
+ H.width = L.width();
222
+ H.height = L.height();
223
+ E()
224
+ }, F = function() {
225
+ H.width = o.width;
226
+ H.height = o.height;
227
+ B("<img />").attr({
228
+ id: "envirabox-img",
229
+ src: o.src,
230
+ alt: H.title
231
+ }).appendTo(L);
232
+ E()
233
+ }, E = function() {
234
+ var W, V;
235
+ T.hide();
236
+ if (M.is(":visible") && false === G.onCleanup(y, e, G)) {
237
+ B.event.trigger("envirabox-cancel");
238
+ P = false;
239
+ return
240
+ }
241
+ P = true;
242
+ B(m.add(Q)).unbind();
243
+ B(window).unbind("resize.fb scroll.fb");
244
+ B(document).unbind("keydown.fb");
245
+ if (M.is(":visible") && G.titlePosition !== "outside") {
246
+ M.css("height", M.height())
247
+ }
248
+ y = j;
249
+ e = C;
250
+ G = H;
251
+ if (G.overlayShow) {
252
+ Q.css({
253
+ "background-color": G.overlayColor,
254
+ opacity: G.overlayOpacity,
255
+ cursor: G.hideOnOverlayClick ? "pointer" : "auto",
256
+ height: B(document).height()
257
+ });
258
+ if (!Q.is(":visible")) {
259
+ if (S) {
260
+ B("select:not(#envirabox-tmp select)").filter(function() {
261
+ return this.style.visibility !== "hidden"
262
+ }).css({
263
+ visibility: "hidden"
264
+ }).one("envirabox-cleanup", function() {
265
+ this.style.visibility = "inherit"
266
+ })
267
+ }
268
+ Q.show()
269
+ }
270
+ } else {
271
+ Q.hide()
272
+ }
273
+ c = R();
274
+ l();
275
+ if (M.is(":visible")) {
276
+ B(J.add(O).add(z)).hide();
277
+ W = M.position(), b = {
278
+ top: W.top,
279
+ left: W.left,
280
+ width: M.width(),
281
+ height: M.height()
282
+ };
283
+ V = (b.width == c.width && b.height == c.height);
284
+ m.fadeTo(G.changeFade, 0.3, function() {
285
+ var X = function() {
286
+ m.html(L.contents()).fadeTo(G.changeFade, 1, v)
287
+ };
288
+ B.event.trigger("envirabox-change");
289
+ m.empty().removeAttr("filter").css({
290
+ "border-width": G.padding,
291
+ width: c.width - G.padding * 2,
292
+ height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
293
+ });
294
+ if (V) {
295
+ X()
296
+ } else {
297
+ s.prop = 0;
298
+ B(s).animate({
299
+ prop: 1
300
+ }, {
301
+ duration: G.changeSpeed,
302
+ easing: G.easingChange,
303
+ step: U,
304
+ complete: X
305
+ })
306
+ }
307
+ });
308
+ return
309
+ }
310
+ M.removeAttr("style");
311
+ m.css("border-width", G.padding);
312
+ if (G.transitionIn == "elastic") {
313
+ b = I();
314
+ m.html(L.contents());
315
+ M.show();
316
+ if (G.opacity) {
317
+ c.opacity = 0
318
+ }
319
+ s.prop = 0;
320
+ B(s).animate({
321
+ prop: 1
322
+ }, {
323
+ duration: G.speedIn,
324
+ easing: G.easingIn,
325
+ step: U,
326
+ complete: v
327
+ });
328
+ return
329
+ }
330
+ if (G.titlePosition == "inside" && h > 0) {
331
+ A.show()
332
+ }
333
+ m.css({
334
+ width: c.width - G.padding * 2,
335
+ height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
336
+ }).html(L.contents());
337
+ M.css(c).fadeIn(G.transitionIn == "none" ? 0 : G.speedIn, v)
338
+ }, D = function(V) {
339
+ if (V && V.length) {
340
+ if (G.titlePosition == "float") {
341
+ return '<table id="envirabox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="envirabox-title-float-left"></td><td id="envirabox-title-float-main">' + B.decodeEntities(V) + '</td><td id="envirabox-title-float-right"></td></tr></table>'
342
+ }
343
+ return '<div id="envirabox-title-' + G.titlePosition + '">' + B.decodeEntities(V) + "</div>"
344
+ }
345
+ return false
346
+ }, l = function() {
347
+ t = G.title || "";
348
+ h = 0;
349
+ A.empty().removeAttr("style").removeClass();
350
+ if (G.titleShow === false) {
351
+ A.hide();
352
+ return
353
+ }
354
+ t = B.isFunction(G.titleFormat) ? G.titleFormat(t, y, e, G) : D(t);
355
+ if (!t || t === "") {
356
+ A.hide();
357
+ return
358
+ }
359
+ A.addClass("envirabox-title-" + G.titlePosition).html(t).appendTo("body").show();
360
+ switch (G.titlePosition) {
361
+ case "inside":
362
+ A.css({
363
+ width: c.width - (G.padding * 2),
364
+ marginLeft: G.padding,
365
+ marginRight: G.padding
366
+ });
367
+ h = A.outerHeight(true);
368
+ A.appendTo(d);
369
+ c.height += h;
370
+ break;
371
+ case "over":
372
+ A.css({
373
+ marginLeft: G.padding,
374
+ width: c.width - (G.padding * 2),
375
+ bottom: G.padding
376
+ }).appendTo(d);
377
+ break;
378
+ case "float":
379
+ A.css("left", parseInt((A.width() - c.width - 40) / 2, 10) * -1).appendTo(M);
380
+ break;
381
+ default:
382
+ A.css({
383
+ width: c.width - (G.padding * 2),
384
+ paddingLeft: G.padding,
385
+ paddingRight: G.padding
386
+ }).appendTo(M);
387
+ break
388
+ }
389
+ A.hide()
390
+ }, g = function() {
391
+ if (G.enableEscapeButton || G.enableKeyboardNav) {
392
+ B(document).bind("keydown.fb", function(V) {
393
+ if (V.keyCode == 27 && G.enableEscapeButton) {
394
+ V.preventDefault();
395
+ B.envirabox.close()
396
+ } else {
397
+ if ((V.keyCode == 37 || V.keyCode == 39) && G.enableKeyboardNav && V.target.tagName !== "INPUT" && V.target.tagName !== "TEXTAREA" && V.target.tagName !== "SELECT") {
398
+ V.preventDefault();
399
+ B.envirabox[V.keyCode == 37 ? "prev" : "next"]()
400
+ }
401
+ }
402
+ })
403
+ }
404
+ if (!G.showNavArrows) {
405
+ O.hide();
406
+ z.hide();
407
+ return
408
+ }
409
+ if ((G.cyclic && y.length > 1) || e !== 0) {
410
+ O.show()
411
+ }
412
+ if ((G.cyclic && y.length > 1) || e != (y.length - 1)) {
413
+ z.show()
414
+ }
415
+ }, v = function() {
416
+ if (!B.support.opacity) {
417
+ m.get(0).style.removeProperty("filter");
418
+ M.get(0).style.removeProperty("filter")
419
+ }
420
+ if (H.autoDimensions) {
421
+ m.css("height", "auto")
422
+ }
423
+ M.css("height", "auto");
424
+ if (t && t.length) {
425
+ A.show()
426
+ }
427
+ if (G.showCloseButton) {
428
+ J.show()
429
+ }
430
+ g();
431
+ if (G.hideOnContentClick) {
432
+ m.bind("click", B.envirabox.close)
433
+ }
434
+ if (G.hideOnOverlayClick) {
435
+ Q.bind("click", B.envirabox.close)
436
+ }
437
+ B(window).bind("resize.fb", B.envirabox.resize);
438
+ if (G.centerOnScroll) {
439
+ B(window).bind("scroll.fb", B.envirabox.center)
440
+ }
441
+ if (G.type == "iframe") {
442
+ B('<iframe id="envirabox-frame" name="envirabox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" scrolling="' + H.scrolling + '" src="' + G.href + '"></iframe>').appendTo(m)
443
+ }
444
+ M.show();
445
+ P = false;
446
+ B.envirabox.center();
447
+ G.onComplete(y, e, G);
448
+ K()
449
+ }, K = function() {
450
+ var V, W;
451
+ if ((y.length - 1) > e) {
452
+ V = y[e + 1].href;
453
+ if (typeof V !== "undefined" && V.match(i)) {
454
+ W = new Image();
455
+ W.src = V
456
+ }
457
+ }
458
+ if (e > 0) {
459
+ V = y[e - 1].href;
460
+ if (typeof V !== "undefined" && V.match(i)) {
461
+ W = new Image();
462
+ W.src = V
463
+ }
464
+ }
465
+ }, U = function(W) {
466
+ var V = {
467
+ width: parseInt(b.width + (c.width - b.width) * W, 10),
468
+ height: parseInt(b.height + (c.height - b.height) * W, 10),
469
+ top: parseInt(b.top + (c.top - b.top) * W, 10),
470
+ left: parseInt(b.left + (c.left - b.left) * W, 10)
471
+ };
472
+ if (typeof c.opacity !== "undefined") {
473
+ V.opacity = W < 0.5 ? 0.5 : W
474
+ }
475
+ M.css(V);
476
+ m.css({
477
+ width: V.width - G.padding * 2,
478
+ height: V.height - (h * W) - G.padding * 2
479
+ })
480
+ }, u = function() {
481
+ return [B(window).width() - (G.margin * 2), B(window).height() - (G.margin * 2), B(document).scrollLeft() + G.margin, B(document).scrollTop() + G.margin]
482
+ }, R = function() {
483
+ var V = u(),
484
+ Z = {}, W = G.autoScale,
485
+ X = G.padding * 2,
486
+ Y;
487
+ if (G.width.toString().indexOf("%") > -1) {
488
+ Z.width = parseInt((V[0] * parseFloat(G.width)) / 100, 10)
489
+ } else {
490
+ Z.width = G.width + X
491
+ } if (G.height.toString().indexOf("%") > -1) {
492
+ Z.height = parseInt((V[1] * parseFloat(G.height)) / 100, 10)
493
+ } else {
494
+ Z.height = G.height + X
495
+ } if (W && (Z.width > V[0] || Z.height > V[1])) {
496
+ if (H.type == "image" || H.type == "swf") {
497
+ Y = (G.width) / (G.height);
498
+ if ((Z.width) > V[0]) {
499
+ Z.width = V[0];
500
+ Z.height = parseInt(((Z.width - X) / Y) + X, 10)
501
+ }
502
+ if ((Z.height) > V[1]) {
503
+ Z.height = V[1];
504
+ Z.width = parseInt(((Z.height - X) * Y) + X, 10)
505
+ }
506
+ } else {
507
+ Z.width = Math.min(Z.width, V[0]);
508
+ Z.height = Math.min(Z.height, V[1])
509
+ }
510
+ }
511
+ Z.top = parseInt(Math.max(V[3] - 20, V[3] + ((V[1] - Z.height - 40) * 0.5)), 10);
512
+ Z.left = parseInt(Math.max(V[2] - 20, V[2] + ((V[0] - Z.width - 40) * 0.5)), 10);
513
+ return Z
514
+ }, q = function(V) {
515
+ var W = V.offset();
516
+ W.top += parseInt(V.css("paddingTop"), 10) || 0;
517
+ W.left += parseInt(V.css("paddingLeft"), 10) || 0;
518
+ W.top += parseInt(V.css("border-top-width"), 10) || 0;
519
+ W.left += parseInt(V.css("border-left-width"), 10) || 0;
520
+ W.width = V.width();
521
+ W.height = V.height();
522
+ return W
523
+ }, I = function() {
524
+ var Y = H.orig ? B(H.orig) : false,
525
+ X = {}, W, V;
526
+ if (Y && Y.length) {
527
+ W = q(Y);
528
+ X = {
529
+ width: W.width + (G.padding * 2),
530
+ height: W.height + (G.padding * 2),
531
+ top: W.top - G.padding - 20,
532
+ left: W.left - G.padding - 20
533
+ }
534
+ } else {
535
+ V = u();
536
+ X = {
537
+ width: G.padding * 2,
538
+ height: G.padding * 2,
539
+ top: parseInt(V[3] + V[1] * 0.5, 10),
540
+ left: parseInt(V[2] + V[0] * 0.5, 10)
541
+ }
542
+ }
543
+ return X
544
+ }, a = function() {
545
+ if (!T.is(":visible")) {
546
+ clearInterval(p);
547
+ return
548
+ }
549
+ B("div", T).css("top", (N * -40) + "px");
550
+ N = (N + 1) % 12
551
+ };
552
+ B.fn.envirabox = function(V) {
553
+ if (!B(this).length) {
554
+ return this
555
+ }
556
+ B(this).data("envirabox", B.extend({}, V, (B.metadata ? B(this).metadata() : {}))).unbind("click.fb").bind("click.fb", function(X) {
557
+ X.preventDefault();
558
+ if (P) {
559
+ return
560
+ }
561
+ P = true;
562
+ B(this).blur();
563
+ j = [];
564
+ C = 0;
565
+ var W = B(this).attr("rel") || "";
566
+ if (!W || W == "" || W === "nofollow") {
567
+ j.push(this)
568
+ } else {
569
+ j = B("a[rel=" + W + "], area[rel=" + W + "]");
570
+ C = j.index(this)
571
+ }
572
+ w();
573
+ return
574
+ });
575
+ return this
576
+ };
577
+ B.envirabox = function(Y) {
578
+ var X;
579
+ if (P) {
580
+ return
581
+ }
582
+ P = true;
583
+ X = typeof arguments[1] !== "undefined" ? arguments[1] : {};
584
+ j = [];
585
+ C = parseInt(X.index, 10) || 0;
586
+ if (B.isArray(Y)) {
587
+ for (var W = 0, V = Y.length; W < V; W++) {
588
+ if (typeof Y[W] == "object") {
589
+ B(Y[W]).data("envirabox", B.extend({}, X, Y[W]))
590
+ } else {
591
+ Y[W] = B({}).data("envirabox", B.extend({
592
+ content: Y[W]
593
+ }, X))
594
+ }
595
+ }
596
+ j = jQuery.merge(j, Y)
597
+ } else {
598
+ if (typeof Y == "object") {
599
+ B(Y).data("envirabox", B.extend({}, X, Y))
600
+ } else {
601
+ Y = B({}).data("envirabox", B.extend({
602
+ content: Y
603
+ }, X))
604
+ }
605
+ j.push(Y)
606
+ } if (C > j.length || C < 0) {
607
+ C = 0
608
+ }
609
+ w()
610
+ };
611
+ B.envirabox.showActivity = function() {
612
+ clearInterval(p);
613
+ T.show();
614
+ p = setInterval(a, 66)
615
+ };
616
+ B.envirabox.hideActivity = function() {
617
+ T.hide()
618
+ };
619
+ B.envirabox.next = function() {
620
+ return B.envirabox.pos(e + 1)
621
+ };
622
+ B.envirabox.prev = function() {
623
+ return B.envirabox.pos(e - 1)
624
+ };
625
+ B.envirabox.pos = function(V) {
626
+ if (P) {
627
+ return
628
+ }
629
+ V = parseInt(V);
630
+ j = y;
631
+ if (V > -1 && V < y.length) {
632
+ C = V;
633
+ w()
634
+ } else {
635
+ if (G.cyclic && y.length > 1) {
636
+ C = V >= y.length ? 0 : y.length - 1;
637
+ w()
638
+ }
639
+ }
640
+ return
641
+ };
642
+ B.envirabox.cancel = function() {
643
+ if (P) {
644
+ return
645
+ }
646
+ P = true;
647
+ B.event.trigger("envirabox-cancel");
648
+ r();
649
+ H.onCancel(j, C, H);
650
+ P = false
651
+ };
652
+ B.envirabox.close = function() {
653
+ if (P || M.is(":hidden")) {
654
+ return
655
+ }
656
+ P = true;
657
+ if (G && false === G.onCleanup(y, e, G)) {
658
+ P = false;
659
+ return
660
+ }
661
+ r();
662
+ B(J.add(O).add(z)).hide();
663
+ B(m.add(Q)).unbind();
664
+ B(window).unbind("resize.fb scroll.fb");
665
+ B(document).unbind("keydown.fb");
666
+ m.find("iframe").attr("src", S && /^https/i.test(window.location.href || "") ? "javascript:void(false)" : "about:blank");
667
+ if (G.titlePosition !== "inside") {
668
+ A.empty()
669
+ }
670
+ M.stop();
671
+
672
+ function V() {
673
+ Q.fadeOut("fast");
674
+ A.empty().hide();
675
+ M.hide();
676
+ B.event.trigger("envirabox-cleanup");
677
+ m.empty();
678
+ G.onClosed(y, e, G);
679
+ y = H = [];
680
+ e = C = 0;
681
+ G = H = {};
682
+ P = false
683
+ }
684
+ if (G.transitionOut == "elastic") {
685
+ b = I();
686
+ var W = M.position();
687
+ c = {
688
+ top: W.top,
689
+ left: W.left,
690
+ width: M.width(),
691
+ height: M.height()
692
+ };
693
+ if (G.opacity) {
694
+ c.opacity = 1
695
+ }
696
+ A.empty().hide();
697
+ s.prop = 1;
698
+ B(s).animate({
699
+ prop: 0
700
+ }, {
701
+ duration: G.speedOut,
702
+ easing: G.easingOut,
703
+ step: U,
704
+ complete: V
705
+ })
706
+ } else {
707
+ M.fadeOut(G.transitionOut == "none" ? 0 : G.speedOut, V)
708
+ }
709
+ };
710
+ B.envirabox.resize = function() {
711
+ if (Q.is(":visible")) {
712
+ Q.css("height", B(document).height())
713
+ }
714
+ var W, V;
715
+ c = R();
716
+ l();
717
+ A.show();
718
+ W = M.position(), b = {
719
+ top: W.top,
720
+ left: W.left,
721
+ width: M.width(),
722
+ height: M.height()
723
+ };
724
+ V = (b.width == c.width && b.height == c.height);
725
+ if (V) {} else {
726
+ s.prop = 0;
727
+ B(s).animate({
728
+ prop: 1
729
+ }, {
730
+ duration: G.changeSpeed,
731
+ easing: G.easingChange,
732
+ step: U
733
+ })
734
+ }
735
+ m.css({
736
+ width: c.width - G.padding * 2,
737
+ height: H.autoDimensions ? "auto" : c.height - h - G.padding * 2
738
+ });
739
+ M.css(c);
740
+ B.envirabox.center(true)
741
+ };
742
+ B.envirabox.center = function() {
743
+ var V, W;
744
+ if (P) {
745
+ return
746
+ }
747
+ W = arguments[0] === true ? 1 : 0;
748
+ V = u();
749
+ if (!W && (M.width() > V[0] || M.height() > V[1])) {
750
+ return
751
+ }
752
+ M.stop().animate({
753
+ top: parseInt(Math.max(V[3] - 20, V[3] + ((V[1] - m.height() - 40) * 0.5) - G.padding)),
754
+ left: parseInt(Math.max(V[2] - 20, V[2] + ((V[0] - m.width() - 40) * 0.5) - G.padding))
755
+ }, typeof arguments[0] == "number" ? arguments[0] : 200)
756
+ };
757
+ B.envirabox.init = function() {
758
+ if (B("#envirabox-wrap").length) {
759
+ return
760
+ }
761
+ B("body").append(L = B('<div id="envirabox-tmp"></div>'), T = B('<div id="envirabox-loading"><div></div></div>'), Q = B('<div id="envirabox-overlay"></div>'), M = B('<div id="envirabox-wrap"></div>'));
762
+ d = B('<div id="envirabox-outer"></div>').append('<div class="envirabox-bg" id="envirabox-bg-n"></div><div class="envirabox-bg" id="envirabox-bg-ne"></div><div class="envirabox-bg" id="envirabox-bg-e"></div><div class="envirabox-bg" id="envirabox-bg-se"></div><div class="envirabox-bg" id="envirabox-bg-s"></div><div class="envirabox-bg" id="envirabox-bg-sw"></div><div class="envirabox-bg" id="envirabox-bg-w"></div><div class="envirabox-bg" id="envirabox-bg-nw"></div>').appendTo(M);
763
+ d.append(m = B('<div id="envirabox-content"></div>'), J = B('<a id="envirabox-close"></a>'), A = B('<div id="envirabox-title"></div>'), O = B('<a href="javascript:;" id="envirabox-left"><span class="fancy-ico" id="envirabox-left-ico"></span></a>'), z = B('<a href="javascript:;" id="envirabox-right"><span class="fancy-ico" id="envirabox-right-ico"></span></a>'));
764
+ J.click(B.envirabox.close);
765
+ T.click(B.envirabox.cancel);
766
+ O.click(function(V) {
767
+ V.preventDefault();
768
+ B.envirabox.prev()
769
+ });
770
+ z.click(function(V) {
771
+ V.preventDefault();
772
+ B.envirabox.next()
773
+ });
774
+ if (B.fn.mousewheel) {
775
+ M.bind("mousewheel.fb", function(V, W) {
776
+ if (P) {
777
+ V.preventDefault()
778
+ } else {
779
+ if (B(V.target).get(0).clientHeight == 0 || B(V.target).get(0).scrollHeight === B(V.target).get(0).clientHeight) {
780
+ V.preventDefault();
781
+ B.envirabox[W > 0 ? "prev" : "next"]()
782
+ }
783
+ }
784
+ })
785
+ }
786
+ if (!B.support.opacity) {
787
+ M.addClass("envirabox-ie")
788
+ }
789
+ if (S) {
790
+ T.addClass("envirabox-ie6");
791
+ M.addClass("envirabox-ie6");
792
+ B('<iframe id="envirabox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || "") ? "javascript:void(false)" : "about:blank") + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(d)
793
+ }
794
+ };
795
+ B.envirabox.isUrl = function(str) {
796
+ return str.match(/^(https?):\/\/((?:[a-z0-9.-]|%[0-9A-F]{2}){3,})(?::(\d+))?((?:\/(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})*)*)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9A-F]{2})*))?$/i);
797
+ };
798
+ B.envirabox.isImage = function(str) {
799
+ return str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
800
+ };
801
+ B.decodeEntities = function(encodedString) {
802
+ var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
803
+ var translate = {
804
+ "nbsp":" ",
805
+ "amp" : "&",
806
+ "quot": "\"",
807
+ "lt" : "<",
808
+ "gt" : ">"
809
+ };
810
+ return encodedString.replace(translate_re, function(match, entity) {
811
+ return translate[entity];
812
+ }).replace(/&#(\d+);/gi, function(match, numStr) {
813
+ var num = parseInt(numStr, 10);
814
+ return String.fromCharCode(num);
815
+ });
816
+ };
817
+ B.fn.envirabox.defaults = {
818
+ padding: 10,
819
+ margin: 40,
820
+ opacity: false,
821
+ modal: false,
822
+ cyclic: false,
823
+ scrolling: "auto",
824
+ width: 560,
825
+ height: 340,
826
+ autoScale: true,
827
+ autoDimensions: true,
828
+ centerOnScroll: false,
829
+ ajax: {},
830
+ swf: {
831
+ wmode: "transparent"
832
+ },
833
+ hideOnOverlayClick: true,
834
+ hideOnContentClick: false,
835
+ overlayShow: true,
836
+ overlayOpacity: 0.9, /* was 0.7 but upped to remove CSS !important */
837
+ overlayColor: "#777",
838
+ titleShow: true,
839
+ titlePosition: "float",
840
+ titleFormat: null,
841
+ titleFromAlt: false,
842
+ transitionIn: "fade",
843
+ transitionOut: "fade",
844
+ speedIn: 300,
845
+ speedOut: 300,
846
+ changeSpeed: 300,
847
+ changeFade: "fast",
848
+ easingIn: "swing",
849
+ easingOut: "swing",
850
+ showCloseButton: true,
851
+ showNavArrows: true,
852
+ enableEscapeButton: true,
853
+ enableKeyboardNav: true,
854
+ onStart: function() {},
855
+ onCancel: function() {},
856
+ onComplete: function() {},
857
+ onCleanup: function() {},
858
+ onClosed: function() {},
859
+ onError: function() {}
860
+ };
861
+ B(document).ready(function() {
862
+ B.envirabox.init()
863
+ })
864
  })(jQuery);
assets/js/lib/imagesloaded.js CHANGED
@@ -1,486 +1,486 @@
1
- /**
2
- * enviraImagesLoaded PACKAGED v4.1.0
3
- * JavaScript is all like "You images are done yet or what?"
4
- * MIT License
5
- */
6
-
7
- /**
8
- * EvEmitter v1.0.1
9
- * Lil' event emitter
10
- * MIT License
11
- */
12
-
13
- /* jshint unused: true, undef: true, strict: true */
14
-
15
- ( function( global, factory ) {
16
- // universal module definition
17
- /* jshint strict: false */ /* globals define, module */
18
- if ( typeof define == 'function' && define.amd ) {
19
- // AMD - RequireJS
20
- define( 'ev-emitter/ev-emitter',factory );
21
- } else if ( typeof module == 'object' && module.exports ) {
22
- // CommonJS - Browserify, Webpack
23
- module.exports = factory();
24
- } else {
25
- // Browser globals
26
- global.EvEmitter = factory();
27
- }
28
-
29
- }( this, function() {
30
-
31
-
32
-
33
- function EvEmitter() {}
34
-
35
- var proto = EvEmitter.prototype;
36
-
37
- proto.on = function( eventName, listener ) {
38
- if ( !eventName || !listener ) {
39
- return;
40
- }
41
- // set events hash
42
- var events = this._events = this._events || {};
43
- // set listeners array
44
- var listeners = events[ eventName ] = events[ eventName ] || [];
45
- // only add once
46
- if ( listeners.indexOf( listener ) == -1 ) {
47
- listeners.push( listener );
48
- }
49
-
50
- return this;
51
- };
52
-
53
- proto.once = function( eventName, listener ) {
54
- if ( !eventName || !listener ) {
55
- return;
56
- }
57
- // add event
58
- this.on( eventName, listener );
59
- // set once flag
60
- // set onceEvents hash
61
- var onceEvents = this._onceEvents = this._onceEvents || {};
62
- // set onceListeners array
63
- var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || [];
64
- // set flag
65
- onceListeners[ listener ] = true;
66
-
67
- return this;
68
- };
69
-
70
- proto.off = function( eventName, listener ) {
71
- var listeners = this._events && this._events[ eventName ];
72
- if ( !listeners || !listeners.length ) {
73
- return;
74
- }
75
- var index = listeners.indexOf( listener );
76
- if ( index != -1 ) {
77
- listeners.splice( index, 1 );
78
- }
79
-
80
- return this;
81
- };
82
-
83
- proto.emitEvent = function( eventName, args ) {
84
- var listeners = this._events && this._events[ eventName ];
85
- if ( !listeners || !listeners.length ) {
86
- return;
87
- }
88
- var i = 0;
89
- var listener = listeners[i];
90
- args = args || [];
91
- // once stuff
92
- var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
93
-
94
- while ( listener ) {
95
- var isOnce = onceListeners && onceListeners[ listener ];
96
- if ( isOnce ) {
97
- // remove listener
98
- // remove before trigger to prevent recursion
99
- this.off( eventName, listener );
100
- // unset once flag
101
- delete onceListeners[ listener ];
102
- }
103
- // trigger listener
104
- listener.apply( this, args );
105
- // get next listener
106
- i += isOnce ? 0 : 1;
107
- listener = listeners[i];
108
- }
109
-
110
- return this;
111
- };
112
-
113
- return EvEmitter;
114
-
115
- }));
116
-
117
- /*!
118
- * enviraImagesLoaded v4.1.0
119
- * JavaScript is all like "You images are done yet or what?"
120
- * MIT License
121
- */
122
-
123
- ( function( window, factory ) { 'use strict';
124
- // universal module definition
125
-
126
- /*global define: false, module: false, require: false */
127
-
128
- if ( typeof define == 'function' && define.amd ) {
129
- // AMD
130
- define( [
131
- 'ev-emitter/ev-emitter'
132
- ], function( EvEmitter ) {
133
- return factory( window, EvEmitter );
134
- });
135
- } else if ( typeof module == 'object' && module.exports ) {
136
- // CommonJS
137
- module.exports = factory(
138
- window,
139
- require('ev-emitter')
140
- );
141
- } else {
142
- // browser global
143
- window.enviraImagesLoaded = factory(
144
- window,
145
- window.EvEmitter
146
- );
147
- }
148
-
149
- })( window,
150
-
151
- // -------------------------- factory -------------------------- //
152
-
153
- function factory( window, EvEmitter ) {
154
-
155
-
156
-
157
- var $ = window.jQuery;
158
- var console = window.console;
159
-
160
- // -------------------------- helpers -------------------------- //
161
-
162
- // extend objects
163
- function extend( a, b ) {
164
- for ( var prop in b ) {
165
- a[ prop ] = b[ prop ];
166
- }
167
- return a;
168
- }
169
-
170
- // turn element or nodeList into an array
171
- function makeArray( obj ) {
172
- var ary = [];
173
- if ( Array.isArray( obj ) ) {
174
- // use object if already an array
175
- ary = obj;
176
- } else if ( typeof obj.length == 'number' ) {
177
- // convert nodeList to array
178
- for ( var i=0; i < obj.length; i++ ) {
179
- ary.push( obj[i] );
180
- }
181
- } else {
182
- // array of single index
183
- ary.push( obj );
184
- }
185
- return ary;
186
- }
187
-
188
- // -------------------------- enviraImagesLoaded -------------------------- //
189
-
190
- /**
191
- * @param {Array, Element, NodeList, String} elem
192
- * @param {Object or Function} options - if function, use as callback
193
- * @param {Function} onAlways - callback function
194
- */
195
- function EnviraImagesLoaded( elem, options, onAlways ) {
196
- // coerce EnviraImagesLoaded() without new, to be new EnviraImagesLoaded()
197
- if ( !( this instanceof EnviraImagesLoaded ) ) {
198
- return new EnviraImagesLoaded( elem, options, onAlways );
199
- }
200
- // use elem as selector string
201
- if ( typeof elem == 'string' ) {
202
- elem = document.querySelectorAll( elem );
203
- }
204
-
205
- this.elements = makeArray( elem );
206
- this.options = extend( {}, this.options );
207
-
208
- if ( typeof options == 'function' ) {
209
- onAlways = options;
210
- } else {
211
- extend( this.options, options );
212
- }
213
-
214
- if ( onAlways ) {
215
- this.on( 'always', onAlways );
216
- }
217
-
218
- this.getImages();
219
-
220
- if ( $ ) {
221
- // add jQuery Deferred object
222
- this.jqDeferred = new $.Deferred();
223
- }
224
-
225
- // HACK check async to allow time to bind listeners
226
- setTimeout( function() {
227
- this.check();
228
- }.bind( this ));
229
- }
230
-
231
- EnviraImagesLoaded.prototype = Object.create( EvEmitter.prototype );
232
-
233
- EnviraImagesLoaded.prototype.options = {};
234
-
235
- EnviraImagesLoaded.prototype.getImages = function() {
236
- this.images = [];
237
-
238
- // filter & find items if we have an item selector
239
- this.elements.forEach( this.addElementImages, this );
240
- };
241
-
242
- /**
243
- * @param {Node} element
244
- */
245
- EnviraImagesLoaded.prototype.addElementImages = function( elem ) {
246
- // filter siblings
247
- if ( elem.nodeName == 'IMG' ) {
248
- this.addImage( elem );
249
- }
250
- // get background image on element
251
- if ( this.options.background === true ) {
252
- this.addElementBackgroundImages( elem );
253
- }
254
-
255
- // find children
256
- // no non-element nodes, #143
257
- var nodeType = elem.nodeType;
258
- if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
259
- return;
260
- }
261
- var childImgs = elem.querySelectorAll('img');
262
- // concat childElems to filterFound array
263
- for ( var i=0; i < childImgs.length; i++ ) {
264
- var img = childImgs[i];
265
- this.addImage( img );
266
- }
267
-
268
- // get child background images
269
- if ( typeof this.options.background == 'string' ) {
270
- var children = elem.querySelectorAll( this.options.background );
271
- for ( i=0; i < children.length; i++ ) {
272
- var child = children[i];
273
- this.addElementBackgroundImages( child );
274
- }
275
- }
276
- };
277
-
278
- var elementNodeTypes = {
279
- 1: true,
280
- 9: true,
281
- 11: true
282
- };
283
-
284
- EnviraImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
285
- var style = getComputedStyle( elem );
286
- if ( !style ) {
287
- // Firefox returns null if in a hidden iframe https://bugzil.la/548397
288
- return;
289
- }
290
- // get url inside url("...")
291
- var reURL = /url\((['"])?(.*?)\1\)/gi;
292
- var matches = reURL.exec( style.backgroundImage );
293
- while ( matches !== null ) {
294
- var url = matches && matches[2];
295
- if ( url ) {
296
- this.addBackground( url, elem );
297
- }
298
- matches = reURL.exec( style.backgroundImage );
299
- }
300
- };
301
-
302
- /**
303
- * @param {Image} img
304
- */
305
- EnviraImagesLoaded.prototype.addImage = function( img ) {
306
- var loadingImage = new LoadingImage( img );
307
- this.images.push( loadingImage );
308
- };
309
-
310
- EnviraImagesLoaded.prototype.addBackground = function( url, elem ) {
311
- var background = new Background( url, elem );
312
- this.images.push( background );
313
- };
314
-
315
- EnviraImagesLoaded.prototype.check = function() {
316
- var _this = this;
317
- this.progressedCount = 0;
318
- this.hasAnyBroken = false;
319
- // complete if no images
320
- if ( !this.images.length ) {
321
- this.complete();
322
- return;
323
- }
324
-
325
- function onProgress( image, elem, message ) {
326
- // HACK - Chrome triggers event before object properties have changed. #83
327
- setTimeout( function() {
328
- _this.progress( image, elem, message );
329
- });
330
- }
331
-
332
- this.images.forEach( function( loadingImage ) {
333
- loadingImage.once( 'progress', onProgress );
334
- loadingImage.check();
335
- });
336
- };
337
-
338
- EnviraImagesLoaded.prototype.progress = function( image, elem, message ) {
339
- this.progressedCount++;
340
- this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
341
- // progress event
342
- this.emitEvent( 'progress', [ this, image, elem ] );
343
- if ( this.jqDeferred && this.jqDeferred.notify ) {
344
- this.jqDeferred.notify( this, image );
345
- }
346
- // check if completed
347
- if ( this.progressedCount == this.images.length ) {
348
- this.complete();
349
- }
350
-
351
- if ( this.options.debug && console ) {
352
- console.log( 'progress: ' + message, image, elem );
353
- }
354
- };
355
-
356
- EnviraImagesLoaded.prototype.complete = function() {
357
- var eventName = this.hasAnyBroken ? 'fail' : 'done';
358
- this.isComplete = true;
359
- this.emitEvent( eventName, [ this ] );
360
- this.emitEvent( 'always', [ this ] );
361
- if ( this.jqDeferred ) {
362
- var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
363
- this.jqDeferred[ jqMethod ]( this );
364
- }
365
- };
366
-
367
- // -------------------------- -------------------------- //
368
-
369
- function LoadingImage( img ) {
370
- this.img = img;
371
- }
372
-
373
- LoadingImage.prototype = Object.create( EvEmitter.prototype );
374
-
375
- LoadingImage.prototype.check = function() {
376
- // If complete is true and browser supports natural sizes,
377
- // try to check for image status manually.
378
- var isComplete = this.getIsImageComplete();
379
- if ( isComplete ) {
380
- // report based on naturalWidth
381
- this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
382
- return;
383
- }
384
-
385
- // If none of the checks above matched, simulate loading on detached element.
386
- this.proxyImage = new Image();
387
- this.proxyImage.addEventListener( 'load', this );
388
- this.proxyImage.addEventListener( 'error', this );
389
- // bind to image as well for Firefox. #191
390
- this.img.addEventListener( 'load', this );
391
- this.img.addEventListener( 'error', this );
392
- this.proxyImage.src = this.img.src;
393
- };
394
-
395
- LoadingImage.prototype.getIsImageComplete = function() {
396
- return this.img.complete && this.img.naturalWidth !== undefined;
397
- };
398
-
399
- LoadingImage.prototype.confirm = function( isLoaded, message ) {
400
- this.isLoaded = isLoaded;
401
- this.emitEvent( 'progress', [ this, this.img, message ] );
402
- };
403
-
404
- // ----- events ----- //
405
-
406
- // trigger specified handler for event type
407
- LoadingImage.prototype.handleEvent = function( event ) {
408
- var method = 'on' + event.type;
409
- if ( this[ method ] ) {
410
- this[ method ]( event );
411
- }
412
- };
413
-
414
- LoadingImage.prototype.onload = function() {
415
- this.confirm( true, 'onload' );
416
- this.unbindEvents();
417
- };
418
-
419
- LoadingImage.prototype.onerror = function() {
420
- this.confirm( false, 'onerror' );
421
- this.unbindEvents();
422
- };
423
-
424
- LoadingImage.prototype.unbindEvents = function() {
425
- this.proxyImage.removeEventListener( 'load', this );
426
- this.proxyImage.removeEventListener( 'error', this );
427
- this.img.removeEventListener( 'load', this );
428
- this.img.removeEventListener( 'error', this );
429
- };
430
-
431
- // -------------------------- Background -------------------------- //
432
-
433
- function Background( url, element ) {
434
- this.url = url;
435
- this.element = element;
436
- this.img = new Image();
437
- }
438
-
439
- // inherit LoadingImage prototype
440
- Background.prototype = Object.create( LoadingImage.prototype );
441
-
442
- Background.prototype.check = function() {
443
- this.img.addEventListener( 'load', this );
444
- this.img.addEventListener( 'error', this );
445
- this.img.src = this.url;
446
- // check if image is already complete
447
- var isComplete = this.getIsImageComplete();
448
- if ( isComplete ) {
449
- this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
450
- this.unbindEvents();
451
- }
452
- };
453
-
454
- Background.prototype.unbindEvents = function() {
455
- this.img.removeEventListener( 'load', this );
456
- this.img.removeEventListener( 'error', this );
457
- };
458
-
459
- Background.prototype.confirm = function( isLoaded, message ) {
460
- this.isLoaded = isLoaded;
461
- this.emitEvent( 'progress', [ this, this.element, message ] );
462
- };
463
-
464
- // -------------------------- jQuery -------------------------- //
465
-
466
- EnviraImagesLoaded.makeJQueryPlugin = function( jQuery ) {
467
- jQuery = jQuery || window.jQuery;
468
- if ( !jQuery ) {
469
- return;
470
- }
471
- // set local variable
472
- $ = jQuery;
473
- // $().enviraImagesLoaded()
474
- $.fn.enviraImagesLoaded = function( options, callback ) {
475
- var instance = new EnviraImagesLoaded( this, options, callback );
476
- return instance.jqDeferred.promise( $(this) );
477
- };
478
- };
479
- // try making plugin
480
- EnviraImagesLoaded.makeJQueryPlugin();
481
-
482
- // -------------------------- -------------------------- //
483
-
484
- return EnviraImagesLoaded;
485
-
486
- });
1
+ /**
2
+ * enviraImagesLoaded PACKAGED v4.1.0
3
+ * JavaScript is all like "You images are done yet or what?"
4
+ * MIT License
5
+ */
6
+
7
+ /**
8
+ * EvEmitter v1.0.1
9
+ * Lil' event emitter
10
+ * MIT License
11
+ */
12
+
13
+ /* jshint unused: true, undef: true, strict: true */
14
+
15
+ ( function( global, factory ) {
16
+ // universal module definition
17
+ /* jshint strict: false */ /* globals define, module */
18
+ if ( typeof define == 'function' && define.amd ) {
19
+ // AMD - RequireJS
20
+ define( 'ev-emitter/ev-emitter',factory );
21
+ } else if ( typeof module == 'object' && module.exports ) {
22
+ // CommonJS - Browserify, Webpack
23
+ module.exports = factory();
24
+ } else {
25
+ // Browser globals
26
+ global.EvEmitter = factory();
27
+ }
28
+
29
+ }( this, function() {
30
+
31
+
32
+
33
+ function EvEmitter() {}
34
+
35
+ var proto = EvEmitter.prototype;
36
+
37
+ proto.on = function( eventName, listener ) {
38
+ if ( !eventName || !listener ) {
39
+ return;
40
+ }
41
+ // set events hash
42
+ var events = this._events = this._events || {};
43
+ // set listeners array
44
+ var listeners = events[ eventName ] = events[ eventName ] || [];
45
+ // only add once
46
+ if ( listeners.indexOf( listener ) == -1 ) {
47
+ listeners.push( listener );
48
+ }
49
+
50
+ return this;
51
+ };
52
+
53
+ proto.once = function( eventName, listener ) {
54
+ if ( !eventName || !listener ) {
55
+ return;
56
+ }
57
+ // add event
58
+ this.on( eventName, listener );
59
+ // set once flag
60
+ // set onceEvents hash
61
+ var onceEvents = this._onceEvents = this._onceEvents || {};
62
+ // set onceListeners array
63
+ var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || [];
64
+ // set flag
65
+ onceListeners[ listener ] = true;
66
+
67
+ return this;
68
+ };
69
+
70
+ proto.off = function( eventName, listener ) {
71
+ var listeners = this._events && this._events[ eventName ];
72
+ if ( !listeners || !listeners.length ) {
73
+ return;
74
+ }
75
+ var index = listeners.indexOf( listener );
76
+ if ( index != -1 ) {
77
+ listeners.splice( index, 1 );
78
+ }
79
+
80
+ return this;
81
+ };
82
+
83
+ proto.emitEvent = function( eventName, args ) {
84
+ var listeners = this._events && this._events[ eventName ];
85
+ if ( !listeners || !listeners.length ) {
86
+ return;
87
+ }
88
+ var i = 0;
89
+ var listener = listeners[i];
90
+ args = args || [];
91
+ // once stuff
92
+ var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
93
+
94
+ while ( listener ) {
95
+ var isOnce = onceListeners && onceListeners[ listener ];
96
+ if ( isOnce ) {
97
+ // remove listener
98
+ // remove before trigger to prevent recursion
99
+ this.off( eventName, listener );
100
+ // unset once flag
101
+ delete onceListeners[ listener ];
102
+ }
103
+ // trigger listener
104
+ listener.apply( this, args );
105
+ // get next listener
106
+ i += isOnce ? 0 : 1;
107
+ listener = listeners[i];
108
+ }
109
+
110
+ return this;
111
+ };
112
+
113
+ return EvEmitter;
114
+
115
+ }));
116
+
117
+ /*!
118
+ * enviraImagesLoaded v4.1.0
119
+ * JavaScript is all like "You images are done yet or what?"
120
+ * MIT License
121
+ */
122
+
123
+ ( function( window, factory ) { 'use strict';
124
+ // universal module definition
125
+
126
+ /*global define: false, module: false, require: false */
127
+
128
+ if ( typeof define == 'function' && define.amd ) {
129
+ // AMD
130
+ define( [
131
+ 'ev-emitter/ev-emitter'
132
+ ], function( EvEmitter ) {
133
+ return factory( window, EvEmitter );
134
+ });
135
+ } else if ( typeof module == 'object' && module.exports ) {
136
+ // CommonJS
137
+ module.exports = factory(
138
+ window,
139
+ require('ev-emitter')
140
+ );
141
+ } else {
142
+ // browser global
143
+ window.enviraImagesLoaded = factory(
144
+ window,
145
+ window.EvEmitter
146
+ );
147
+ }
148
+
149
+ })( window,
150
+
151
+ // -------------------------- factory -------------------------- //
152
+
153
+ function factory( window, EvEmitter ) {
154
+
155
+
156
+
157
+ var $ = window.jQuery;
158
+ var console = window.console;
159
+
160
+ // -------------------------- helpers -------------------------- //
161
+
162
+ // extend objects
163
+ function extend( a, b ) {
164
+ for ( var prop in b ) {
165
+ a[ prop ] = b[ prop ];
166
+ }
167
+ return a;
168
+ }
169
+
170
+ // turn element or nodeList into an array
171
+ function makeArray( obj ) {
172
+ var ary = [];
173
+ if ( Array.isArray( obj ) ) {
174
+ // use object if already an array
175
+ ary = obj;
176
+ } else if ( typeof obj.length == 'number' ) {
177
+ // convert nodeList to array
178
+ for ( var i=0; i < obj.length; i++ ) {
179
+ ary.push( obj[i] );
180
+ }
181
+ } else {
182
+ // array of single index
183
+ ary.push( obj );
184
+ }
185
+ return ary;
186
+ }
187
+
188
+ // -------------------------- enviraImagesLoaded -------------------------- //
189
+
190
+ /**
191
+ * @param {Array, Element, NodeList, String} elem
192
+ * @param {Object or Function} options - if function, use as callback
193
+ * @param {Function} onAlways - callback function
194
+ */
195
+ function EnviraImagesLoaded( elem, options, onAlways ) {
196
+ // coerce EnviraImagesLoaded() without new, to be new EnviraImagesLoaded()
197
+ if ( !( this instanceof EnviraImagesLoaded ) ) {
198
+ return new EnviraImagesLoaded( elem, options, onAlways );
199
+ }
200
+ // use elem as selector string
201
+ if ( typeof elem == 'string' ) {
202
+ elem = document.querySelectorAll( elem );
203
+ }
204
+
205
+ this.elements = makeArray( elem );
206
+ this.options = extend( {}, this.options );
207
+
208
+ if ( typeof options == 'function' ) {
209
+ onAlways = options;
210
+ } else {
211
+ extend( this.options, options );
212
+ }
213
+
214
+ if ( onAlways ) {
215
+ this.on( 'always', onAlways );
216
+ }
217
+
218
+ this.getImages();
219
+
220
+ if ( $ ) {
221
+ // add jQuery Deferred object
222
+ this.jqDeferred = new $.Deferred();
223
+ }
224
+
225
+ // HACK check async to allow time to bind listeners
226
+ setTimeout( function() {
227
+ this.check();
228
+ }.bind( this ));
229
+ }
230
+
231
+ EnviraImagesLoaded.prototype = Object.create( EvEmitter.prototype );
232
+
233
+ EnviraImagesLoaded.prototype.options = {};
234
+
235
+ EnviraImagesLoaded.prototype.getImages = function() {
236
+ this.images = [];
237
+
238
+ // filter & find items if we have an item selector
239
+ this.elements.forEach( this.addElementImages, this );
240
+ };
241
+
242
+ /**
243
+ * @param {Node} element
244
+ */
245
+ EnviraImagesLoaded.prototype.addElementImages = function( elem ) {
246
+ // filter siblings
247
+ if ( elem.nodeName == 'IMG' ) {
248
+ this.addImage( elem );
249
+ }
250
+ // get background image on element
251
+ if ( this.options.background === true ) {
252
+ this.addElementBackgroundImages( elem );
253
+ }
254
+
255
+ // find children
256
+ // no non-element nodes, #143
257
+ var nodeType = elem.nodeType;
258
+ if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
259
+ return;
260
+ }
261
+ var childImgs = elem.querySelectorAll('img');
262
+ // concat childElems to filterFound array
263
+ for ( var i=0; i < childImgs.length; i++ ) {
264
+ var img = childImgs[i];
265
+ this.addImage( img );
266
+ }
267
+
268
+ // get child background images
269
+ if ( typeof this.options.background == 'string' ) {
270
+ var children = elem.querySelectorAll( this.options.background );
271
+ for ( i=0; i < children.length; i++ ) {
272
+ var child = children[i];
273
+ this.addElementBackgroundImages( child );
274
+ }
275
+ }
276
+ };
277
+
278
+ var elementNodeTypes = {
279
+ 1: true,
280
+ 9: true,
281
+ 11: true
282
+ };
283
+
284
+ EnviraImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
285
+ var style = getComputedStyle( elem );
286
+ if ( !style ) {
287
+ // Firefox returns null if in a hidden iframe https://bugzil.la/548397
288
+ return;
289
+ }
290
+ // get url inside url("...")
291
+ var reURL = /url\((['"])?(.*?)\1\)/gi;
292
+ var matches = reURL.exec( style.backgroundImage );
293
+ while ( matches !== null ) {
294
+ var url = matches && matches[2];
295
+ if ( url ) {
296
+ this.addBackground( url, elem );
297
+ }
298
+ matches = reURL.exec( style.backgroundImage );
299
+ }
300
+ };
301
+
302
+ /**
303
+ * @param {Image} img
304
+ */
305
+ EnviraImagesLoaded.prototype.addImage = function( img ) {
306
+ var loadingImage = new LoadingImage( img );
307
+ this.images.push( loadingImage );
308
+ };
309
+
310
+ EnviraImagesLoaded.prototype.addBackground = function( url, elem ) {
311
+ var background = new Background( url, elem );
312
+ this.images.push( background );
313
+ };
314
+
315
+ EnviraImagesLoaded.prototype.check = function() {
316
+ var _this = this;
317
+ this.progressedCount = 0;
318
+ this.hasAnyBroken = false;
319
+ // complete if no images
320
+ if ( !this.images.length ) {
321
+ this.complete();
322
+ return;
323
+ }
324
+
325
+ function onProgress( image, elem, message ) {
326
+ // HACK - Chrome triggers event before object properties have changed. #83
327
+ setTimeout( function() {
328
+ _this.progress( image, elem, message );
329
+ });
330
+ }
331
+
332
+ this.images.forEach( function( loadingImage ) {
333
+ loadingImage.once( 'progress', onProgress );
334
+ loadingImage.check();
335
+ });
336
+ };
337
+
338
+ EnviraImagesLoaded.prototype.progress = function( image, elem, message ) {
339
+ this.progressedCount++;
340
+ this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
341
+ // progress event
342
+ this.emitEvent( 'progress', [ this, image, elem ] );
343
+ if ( this.jqDeferred && this.jqDeferred.notify ) {
344
+ this.jqDeferred.notify( this, image );
345
+ }
346
+ // check if completed
347
+ if ( this.progressedCount == this.images.length ) {
348
+ this.complete();
349
+ }
350
+
351
+ if ( this.options.debug && console ) {
352
+ console.log( 'progress: ' + message, image, elem );
353
+ }
354
+ };
355
+
356
+ EnviraImagesLoaded.prototype.complete = function() {
357
+ var eventName = this.hasAnyBroken ? 'fail' : 'done';
358
+ this.isComplete = true;
359
+ this.emitEvent( eventName, [ this ] );
360
+ this.emitEvent( 'always', [ this ] );
361
+ if ( this.jqDeferred ) {
362
+ var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
363
+ this.jqDeferred[ jqMethod ]( this );
364
+ }
365
+ };
366
+
367
+ // -------------------------- -------------------------- //
368
+
369
+ function LoadingImage( img ) {
370
+ this.img = img;
371
+ }
372
+
373
+ LoadingImage.prototype = Object.create( EvEmitter.prototype );
374
+
375
+ LoadingImage.prototype.check = function() {
376
+ // If complete is true and browser supports natural sizes,
377
+ // try to check for image status manually.
378
+ var isComplete = this.getIsImageComplete();
379
+ if ( isComplete ) {
380
+ // report based on naturalWidth
381
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
382
+ return;
383
+ }
384
+
385
+ // If none of the checks above matched, simulate loading on detached element.
386
+ this.proxyImage = new Image();
387
+ this.proxyImage.addEventListener( 'load', this );
388
+ this.proxyImage.addEventListener( 'error', this );
389
+ // bind to image as well for Firefox. #191
390
+ this.img.addEventListener( 'load', this );
391
+ this.img.addEventListener( 'error', this );
392
+ this.proxyImage.src = this.img.src;
393
+ };
394
+
395
+ LoadingImage.prototype.getIsImageComplete = function() {
396
+ return this.img.complete && this.img.naturalWidth !== undefined;
397
+ };
398
+
399
+ LoadingImage.prototype.confirm = function( isLoaded, message ) {
400
+ this.isLoaded = isLoaded;
401
+ this.emitEvent( 'progress', [ this, this.img, message ] );
402
+ };
403
+
404
+ // ----- events ----- //
405
+
406
+ // trigger specified handler for event type
407
+ LoadingImage.prototype.handleEvent = function( event ) {
408
+ var method = 'on' + event.type;
409
+ if ( this[ method ] ) {
410
+ this[ method ]( event );
411
+ }
412
+ };
413
+
414
+ LoadingImage.prototype.onload = function() {
415
+ this.confirm( true, 'onload' );
416
+ this.unbindEvents();
417
+ };
418
+
419
+ LoadingImage.prototype.onerror = function() {
420
+ this.confirm( false, 'onerror' );
421
+ this.unbindEvents();
422
+ };
423
+
424
+ LoadingImage.prototype.unbindEvents = function() {
425
+ this.proxyImage.removeEventListener( 'load', this );
426
+ this.proxyImage.removeEventListener( 'error', this );
427
+ this.img.removeEventListener( 'load', this );
428
+ this.img.removeEventListener( 'error', this );
429
+ };
430
+
431
+ // -------------------------- Background -------------------------- //
432
+
433
+ function Background( url, element ) {
434
+ this.url = url;
435
+ this.element = element;
436
+ this.img = new Image();
437
+ }
438
+
439
+ // inherit LoadingImage prototype
440
+ Background.prototype = Object.create( LoadingImage.prototype );
441
+
442
+ Background.prototype.check = function() {
443
+ this.img.addEventListener( 'load', this );
444
+ this.img.addEventListener( 'error', this );
445
+ this.img.src = this.url;
446
+ // check if image is already complete
447
+ var isComplete = this.getIsImageComplete();
448
+ if ( isComplete ) {
449
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
450
+ this.unbindEvents();
451
+ }
452
+ };
453
+
454
+ Background.prototype.unbindEvents = function() {
455
+ this.img.removeEventListener( 'load', this );
456
+ this.img.removeEventListener( 'error', this );
457
+ };
458
+
459
+ Background.prototype.confirm = function( isLoaded, message ) {
460
+ this.isLoaded = isLoaded;
461
+ this.emitEvent( 'progress', [ this, this.element, message ] );
462
+ };
463
+
464
+ // -------------------------- jQuery -------------------------- //
465
+
466
+ EnviraImagesLoaded.makeJQueryPlugin = function( jQuery ) {
467
+ jQuery = jQuery || window.jQuery;
468
+ if ( !jQuery ) {
469
+ return;
470
+ }
471
+ // set local variable
472
+ $ = jQuery;
473
+ // $().enviraImagesLoaded()
474
+ $.fn.enviraImagesLoaded = function( options, callback ) {
475
+ var instance = new EnviraImagesLoaded( this, options, callback );
476
+ return instance.jqDeferred.promise( $(this) );
477
+ };
478
+ };
479
+ // try making plugin
480
+ EnviraImagesLoaded.makeJQueryPlugin();
481
+
482
+ // -------------------------- -------------------------- //
483
+
484
+ return EnviraImagesLoaded;
485
+
486
+ });
assets/js/lib/isotope.js CHANGED
@@ -1,3513 +1,3495 @@
1
- /*!
2
- * Enviratope PACKAGED v3.0.0
3
- *
4
- * Licensed GPLv3 for open source use
5
- * or Enviratope Commercial License for commercial use
6
- *
7
- * http://enviratope.metafizzy.co
8
- * Copyright 2016 Metafizzy
9
- */
10
-
11
- /**
12
- * Bridget makes jQuery widgets
13
- * v2.0.0
14
- * MIT license
15
- */
16
-
17
- /* jshint browser: true, strict: true, undef: true, unused: true */
18
-
19
- ( function( window, factory ) {
20
- 'use strict';
21
- /* globals define: false, module: false, require: false */
22
-
23
- if ( typeof define == 'function' && define.amd ) {
24
- // AMD
25
- define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {
26
- factory( window, jQuery );
27
- });
28
- } else if ( typeof module == 'object' && module.exports ) {
29
- // CommonJS
30
- module.exports = factory(
31
- window,
32
- require('jquery')
33
- );
34
- } else {
35
- // browser global
36
- window.jQueryBridget = factory(
37
- window,
38
- window.jQuery
39
- );
40
- }
41
-
42
- }( window, function factory( window, jQuery ) {
43
- 'use strict';
44
-
45
- // ----- utils ----- //
46
-
47
- var arraySlice = Array.prototype.slice;
48
-
49
- // helper function for logging errors
50
- // $.error breaks jQuery chaining
51
- var console = window.console;
52
- var logError = typeof console == 'undefined' ? function() {} :
53
- function( message ) {
54
- console.error( message );
55
- };
56
-
57
- // ----- jQueryBridget ----- //
58
-
59
- function jQueryBridget( namespace, PluginClass, $ ) {
60
- $ = $ || jQuery || window.jQuery;
61
- if ( !$ ) {
62
- return;
63
- }
64
-
65
- // add option method -> $().plugin('option', {...})
66
- if ( !PluginClass.prototype.option ) {
67
- // option setter
68
- PluginClass.prototype.option = function( opts ) {
69
- // bail out if not an object
70
- if ( !$.isPlainObject( opts ) ){
71
- return;
72
- }
73
- this.options = $.extend( true, this.options, opts );
74
- };
75
- }
76
-
77
- // make jQuery plugin
78
- $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {
79
- if ( typeof arg0 == 'string' ) {
80
- // method call $().plugin( 'methodName', { options } )
81
- // shift arguments by 1
82
- var args = arraySlice.call( arguments, 1 );
83
- return methodCall( this, arg0, args );
84
- }
85
- // just $().plugin({ options })
86
- plainCall( this, arg0 );
87
- return this;
88
- };
89
-
90
- // $().plugin('methodName')
91
- function methodCall( $elems, methodName, args ) {
92
- var returnValue;
93
- var pluginMethodStr = '$().' + namespace + '("' + methodName + '")';
94
-
95
- $elems.each( function( i, elem ) {
96
- // get instance
97
- var instance = $.data( elem, namespace );
98
- if ( !instance ) {
99
- logError( namespace + ' not initialized. Cannot call methods, i.e. ' +
100
- pluginMethodStr );
101
- return;
102
- }
103
-
104
- var method = instance[ methodName ];
105
- if ( !method || methodName.charAt(0) == '_' ) {
106
- logError( pluginMethodStr + ' is not a valid method' );
107
- return;
108
- }
109
-
110
- // apply method, get return value
111
- var value = method.apply( instance, args );
112
- // set return value if value is returned, use only first value
113
- returnValue = returnValue === undefined ? value : returnValue;
114
- });
115
-
116
- return returnValue !== undefined ? returnValue : $elems;
117
- }
118
-
119
- function plainCall( $elems, options ) {
120
- $elems.each( function( i, elem ) {
121
- var instance = $.data( elem, namespace );
122
- if ( instance ) {
123
- // set options & init
124
- instance.option( options );
125
- instance._init();
126
- } else {
127
- // initialize new instance
128
- instance = new PluginClass( elem, options );
129
- $.data( elem, namespace, instance );
130
- }
131
- });
132
- }
133
-
134
- updateJQuery( $ );
135
-
136
- }
137
-
138
- // ----- updateJQuery ----- //
139
-
140
- // set $.bridget for v1 backwards compatibility
141
- function updateJQuery( $ ) {
142
- if ( !$ || ( $ && $.bridget ) ) {
143
- return;
144
- }
145
- $.bridget = jQueryBridget;
146
- }
147
-
148
- updateJQuery( jQuery || window.jQuery );
149
-
150
- // ----- ----- //
151
-
152
- return jQueryBridget;
153
-
154
- }));
155
-
156
- /**
157
- * EvEmitter v1.0.2
158
- * Lil' event emitter
159
- * MIT License
160
- */
161
-
162
- /* jshint unused: true, undef: true, strict: true */
163
-
164
- ( function( global, factory ) {
165
- // universal module definition
166
- /* jshint strict: false */ /* globals define, module */
167
- if ( typeof define == 'function' && define.amd ) {
168
- // AMD - RequireJS
169
- define( 'ev-emitter/ev-emitter',factory );
170
- } else if ( typeof module == 'object' && module.exports ) {
171
- // CommonJS - Browserify, Webpack
172
- module.exports = factory();
173
- } else {
174
- // Browser globals
175
- global.EvEmitter = factory();
176
- }
177
-
178
- }( this, function() {
179
-
180
-
181
-
182
- function EvEmitter() {}
183
-
184
- var proto = EvEmitter.prototype;
185
-
186
- proto.on = function( eventName, listener ) {
187
- if ( !eventName || !listener ) {
188
- return;
189
- }
190
- // set events hash
191
- var events = this._events = this._events || {};
192
- // set listeners array
193
- var listeners = events[ eventName ] = events[ eventName ] || [];
194
- // only add once
195
- if ( listeners.indexOf( listener ) == -1 ) {
196
- listeners.push( listener );
197
- }
198
-
199
- return this;
200
- };
201
-
202
- proto.once = function( eventName, listener ) {
203
- if ( !eventName || !listener ) {
204
- return;
205
- }
206
- // add event
207
- this.on( eventName, listener );
208
- // set once flag
209
- // set onceEvents hash
210
- var onceEvents = this._onceEvents = this._onceEvents || {};
211
- // set onceListeners object
212
- var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
213
- // set flag
214
- onceListeners[ listener ] = true;
215
-
216
- return this;
217
- };
218
-
219
- proto.off = function( eventName, listener ) {
220
- var listeners = this._events && this._events[ eventName ];
221
- if ( !listeners || !listeners.length ) {
222
- return;
223
- }
224
- var index = listeners.indexOf( listener );
225
- if ( index != -1 ) {
226
- listeners.splice( index, 1 );
227
- }
228
-
229
- return this;
230
- };
231
-
232
- proto.emitEvent = function( eventName, args ) {
233
- var listeners = this._events && this._events[ eventName ];
234
- if ( !listeners || !listeners.length ) {
235
- return;
236
- }
237
- var i = 0;
238
- var listener = listeners[i];
239
- args = args || [];
240
- // once stuff
241
- var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
242
-
243
- while ( listener ) {
244
- var isOnce = onceListeners && onceListeners[ listener ];
245
- if ( isOnce ) {
246
- // remove listener
247
- // remove before trigger to prevent recursion
248
- this.off( eventName, listener );
249
- // unset once flag
250
- delete onceListeners[ listener ];
251
- }
252
- // trigger listener
253
- listener.apply( this, args );
254
- // get next listener
255
- i += isOnce ? 0 : 1;
256
- listener = listeners[i];
257
- }
258
-
259
- return this;
260
- };
261
-
262
- return EvEmitter;
263
-
264
- }));
265
-
266
- /*!
267
- * getSize v2.0.2
268
- * measure size of elements
269
- * MIT license
270
- */
271
-
272
- /*jshint browser: true, strict: true, undef: true, unused: true */
273
- /*global define: false, module: false, console: false */
274
-
275
- ( function( window, factory ) {
276
- 'use strict';
277
-
278
- if ( typeof define == 'function' && define.amd ) {
279
- // AMD
280
- define( 'get-size/get-size',[],function() {
281
- return factory();
282
- });
283
- } else if ( typeof module == 'object' && module.exports ) {
284
- // CommonJS
285
- module.exports = factory();
286
- } else {
287
- // browser global
288
- window.getSize = factory();
289
- }
290
-
291
- })( window, function factory() {
292
- 'use strict';
293
-
294
- // -------------------------- helpers -------------------------- //
295
-
296
- // get a number from a string, not a percentage
297
- function getStyleSize( value ) {
298
- var num = parseFloat( value );
299
- // not a percent like '100%', and a number
300
- var isValid = value.indexOf('%') == -1 && !isNaN( num );
301
- return isValid && num;
302
- }
303
-
304
- function noop() {}
305
-
306
- var logError = typeof console == 'undefined' ? noop :
307
- function( message ) {
308
- console.error( message );
309
- };
310
-
311
- // -------------------------- measurements -------------------------- //
312
-
313
- var measurements = [
314
- 'paddingLeft',
315
- 'paddingRight',
316
- 'paddingTop',
317
- 'paddingBottom',
318
- 'marginLeft',
319
- 'marginRight',
320
- 'marginTop',
321
- 'marginBottom',
322
- 'borderLeftWidth',
323
- 'borderRightWidth',
324
- 'borderTopWidth',
325
- 'borderBottomWidth'
326
- ];
327
-
328
- var measurementsLength = measurements.length;
329
-
330
- function getZeroSize() {
331
- var size = {
332
- width: 0,
333
- height: 0,
334
- innerWidth: 0,
335
- innerHeight: 0,
336
- outerWidth: 0,
337
- outerHeight: 0
338
- };
339
- for ( var i=0; i < measurementsLength; i++ ) {
340
- var measurement = measurements[i];
341
- size[ measurement ] = 0;
342
- }
343
- return size;
344
- }
345
-
346
- // -------------------------- getStyle -------------------------- //
347
-
348
- /**
349
- * getStyle, get style of element, check for Firefox bug
350
- * https://bugzilla.mozilla.org/show_bug.cgi?id=548397
351
- */
352
- function getStyle( elem ) {
353
- var style = getComputedStyle( elem );
354
- if ( !style ) {
355
- logError( 'Style returned ' + style +
356
- '. Are you running this code in a hidden iframe on Firefox? ' +
357
- 'See http://bit.ly/getsizebug1' );
358
- }
359
- return style;
360
- }
361
-
362
- // -------------------------- setup -------------------------- //
363
-
364
- var isSetup = false;
365
-
366
- var isBoxSizeOuter;
367
-
368
- /**
369
- * setup
370
- * check isBoxSizerOuter
371
- * do on first getSize() rather than on page load for Firefox bug
372
- */
373
- function setup() {
374
- // setup once
375
- if ( isSetup ) {
376
- return;
377
- }
378
- isSetup = true;
379
-
380
- // -------------------------- box sizing -------------------------- //
381
-
382
- /**
383
- * WebKit measures the outer-width on style.width on border-box elems
384
- * IE & Firefox<29 measures the inner-width
385
- */
386
- var div = document.createElement('div');
387
- div.style.width = '200px';
388
- div.style.padding = '1px 2px 3px 4px';
389
- div.style.borderStyle = 'solid';
390
- div.style.borderWidth = '1px 2px 3px 4px';
391
- div.style.boxSizing = 'border-box';
392
-
393
- var body = document.body || document.documentElement;
394
- body.appendChild( div );
395
- var style = getStyle( div );
396
-
397
- getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;
398
- body.removeChild( div );
399
-
400
- }
401
-
402
- // -------------------------- getSize -------------------------- //
403
-
404
- function getSize( elem ) {
405
- setup();
406
-
407
- // use querySeletor if elem is string
408
- if ( typeof elem == 'string' ) {
409
- elem = document.querySelector( elem );
410
- }
411
-
412
- // do not proceed on non-objects
413
- if ( !elem || typeof elem != 'object' || !elem.nodeType ) {
414
- return;
415
- }
416
-
417
- var style = getStyle( elem );
418
-
419
- // if hidden, everything is 0
420
- if ( style.display == 'none' ) {
421
- return getZeroSize();
422
- }
423
-
424
- var size = {};
425
- size.width = elem.offsetWidth;
426
- size.height = elem.offsetHeight;
427
-
428
- var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';
429
-
430
- // get all measurements
431
- for ( var i=0; i < measurementsLength; i++ ) {
432
- var measurement = measurements[i];
433
- var value = style[ measurement ];
434
- var num = parseFloat( value );
435
- // any 'auto', 'medium' value will be 0
436
- size[ measurement ] = !isNaN( num ) ? num : 0;
437
- }
438
-
439
- var paddingWidth = size.paddingLeft + size.paddingRight;
440
- var paddingHeight = size.paddingTop + size.paddingBottom;
441
- var marginWidth = size.marginLeft + size.marginRight;
442
- var marginHeight = size.marginTop + size.marginBottom;
443
- var borderWidth = size.borderLeftWidth + size.borderRightWidth;
444
- var borderHeight = size.borderTopWidth + size.borderBottomWidth;
445
-
446
- var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
447
-
448
- // overwrite width and height if we can get it from style
449
- var styleWidth = getStyleSize( style.width );
450
- if ( styleWidth !== false ) {
451
- size.width = styleWidth +
452
- // add padding and border unless it's already including it
453
- ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
454
- }
455
-
456
- var styleHeight = getStyleSize( style.height );
457
- if ( styleHeight !== false ) {
458
- size.height = styleHeight +
459
- // add padding and border unless it's already including it
460
- ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
461
- }
462
-
463
- size.innerWidth = size.width - ( paddingWidth + borderWidth );
464
- size.innerHeight = size.height - ( paddingHeight + borderHeight );
465
-
466
- size.outerWidth = size.width + marginWidth;
467
- size.outerHeight = size.height + marginHeight;
468
-
469
- return size;
470
- }
471
-
472
- return getSize;
473
-
474
- });
475
-
476
- /**
477
- * matchesSelector v2.0.1
478
- * matchesSelector( element, '.selector' )
479
- * MIT license
480
- */
481
-
482
- /*jshint browser: true, strict: true, undef: true, unused: true */
483
-
484
- ( function( window, factory ) {
485
- /*global define: false, module: false */
486
- 'use strict';
487
- // universal module definition
488
- if ( typeof define == 'function' && define.amd ) {
489
- // AMD
490
- define( 'desandro-matches-selector/matches-selector',factory );
491
- } else if ( typeof module == 'object' && module.exports ) {
492
- // CommonJS
493
- module.exports = factory();
494
- } else {
495
- // browser global
496
- window.matchesSelector = factory();
497
- }
498
-
499
- }( window, function factory() {
500
- 'use strict';
501
-
502
- var matchesMethod = ( function() {
503
- var ElemProto = Element.prototype;
504
- // check for the standard method name first
505
- if ( ElemProto.matches ) {
506
- return 'matches';
507
- }
508
- // check un-prefixed
509
- if ( ElemProto.matchesSelector ) {
510
- return 'matchesSelector';
511
- }
512
- // check vendor prefixes
513
- var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
514
-
515
- for ( var i=0; i < prefixes.length; i++ ) {
516
- var prefix = prefixes[i];
517
- var method = prefix + 'MatchesSelector';
518
- if ( ElemProto[ method ] ) {
519
- return method;
520
- }
521
- }
522
- })();
523
-
524
- return function matchesSelector( elem, selector ) {
525
- return elem[ matchesMethod ]( selector );
526
- };
527
-
528
- }));
529
-
530
- /**
531
- * Fizzy UI utils v2.0.1
532
- * MIT license
533
- */
534
-
535
- /*jshint browser: true, undef: true, unused: true, strict: true */
536
-
537
- ( function( window, factory ) {
538
- // universal module definition
539
- /*jshint strict: false */ /*globals define, module, require */
540
-
541
- if ( typeof define == 'function' && define.amd ) {
542
- // AMD
543
- define( 'fizzy-ui-utils/utils',[
544
- 'desandro-matches-selector/matches-selector'
545
- ], function( matchesSelector ) {
546
- return factory( window, matchesSelector );
547
- });
548
- } else if ( typeof module == 'object' && module.exports ) {
549
- // CommonJS
550
- module.exports = factory(
551
- window,
552
- require('desandro-matches-selector')
553
- );
554
- } else {
555
- // browser global
556
- window.fizzyUIUtils = factory(
557
- window,
558
- window.matchesSelector
559
- );
560
- }
561
-
562
- }( window, function factory( window, matchesSelector ) {
563
-
564
-
565
-
566
- var utils = {};
567
-
568
- // ----- extend ----- //
569
-
570
- // extends objects
571
- utils.extend = function( a, b ) {
572
- for ( var prop in b ) {
573
- a[ prop ] = b[ prop ];
574
- }
575
- return a;
576
- };
577
-
578
- // ----- modulo ----- //
579
-
580
- utils.modulo = function( num, div ) {
581
- return ( ( num % div ) + div ) % div;
582
- };
583
-
584
- // ----- makeArray ----- //
585
-
586
- // turn element or nodeList into an array
587
- utils.makeArray = function( obj ) {
588
- var ary = [];
589
- if ( Array.isArray( obj ) ) {
590
- // use object if already an array
591
- ary = obj;
592
- } else if ( obj && typeof obj.length == 'number' ) {
593
- // convert nodeList to array
594
- for ( var i=0; i < obj.length; i++ ) {
595
- ary.push( obj[i] );
596
- }
597
- } else {
598
- // array of single index
599
- ary.push( obj );
600
- }
601
- return ary;
602
- };
603
-
604
- // ----- removeFrom ----- //
605
-
606
- utils.removeFrom = function( ary, obj ) {
607
- var index = ary.indexOf( obj );
608
- if ( index != -1 ) {
609
- ary.splice( index, 1 );
610
- }
611
- };
612
-
613
- // ----- getParent ----- //
614
-
615
- utils.getParent = function( elem, selector ) {
616
- while ( elem != document.body ) {
617
- elem = elem.parentNode;
618
- if ( matchesSelector( elem, selector ) ) {
619
- return elem;
620
- }
621
- }
622
- };
623
-
624
- // ----- getQueryElement ----- //
625
-
626
- // use element as selector string
627
- utils.getQueryElement = function( elem ) {
628
- if ( typeof elem == 'string' ) {
629
- return document.querySelector( elem );
630
- }
631
- return elem;
632
- };
633
-
634
- // ----- handleEvent ----- //
635
-
636
- // enable .ontype to trigger from .addEventListener( elem, 'type' )
637
- utils.handleEvent = function( event ) {
638
- var method = 'on' + event.type;
639
- if ( this[ method ] ) {
640
- this[ method ]( event );
641
- }
642
- };
643
-
644
- // ----- filterFindElements ----- //
645
-
646
- utils.filterFindElements = function( elems, selector ) {
647
- // make array of elems
648
- elems = utils.makeArray( elems );
649
- var ffElems = [];
650
-
651
- elems.forEach( function( elem ) {
652
- // check that elem is an actual element
653
- if ( !( elem instanceof HTMLElement ) ) {
654
- return;
655
- }
656
- // add elem if no selector
657
- if ( !selector ) {
658
- ffElems.push( elem );
659
- return;
660
- }
661
- // filter & find items if we have a selector
662
- // filter
663
- if ( matchesSelector( elem, selector ) ) {
664
- ffElems.push( elem );
665
- }
666
- // find children
667
- var childElems = elem.querySelectorAll( selector );
668
- // concat childElems to filterFound array
669
- for ( var i=0; i < childElems.length; i++ ) {
670
- ffElems.push( childElems[i] );
671
- }
672
- });
673
-
674
- return ffElems;
675
- };
676
-
677
- // ----- debounceMethod ----- //
678
-
679
- utils.debounceMethod = function( _class, methodName, threshold ) {
680
- // original method
681
- var method = _class.prototype[ methodName ];
682
- var timeoutName = methodName + 'Timeout';
683
-
684
- _class.prototype[ methodName ] = function() {
685
- var timeout = this[ timeoutName ];
686
- if ( timeout ) {
687
- clearTimeout( timeout );
688
- }
689
- var args = arguments;
690
-
691
- var _this = this;
692
- this[ timeoutName ] = setTimeout( function() {
693
- method.apply( _this, args );
694
- delete _this[ timeoutName ];
695
- }, threshold || 100 );
696
- };
697
- };
698
-
699
- // ----- docReady ----- //
700
-
701
- utils.docReady = function( callback ) {
702
- if ( document.readyState == 'complete' ) {
703
- callback();
704
- } else {
705
- document.addEventListener( 'DOMContentLoaded', callback );
706
- }
707
- };
708
-
709
- // ----- htmlInit ----- //
710
-
711
- // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
712
- utils.toDashed = function( str ) {
713
- return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
714
- return $1 + '-' + $2;
715
- }).toLowerCase();
716
- };
717
-
718
- var console = window.console;
719
- /**
720
- * allow user to initialize classes via [data-namespace] or .js-namespace class
721
- * htmlInit( Widget, 'widgetName' )
722
- * options are parsed from data-namespace-options
723
- */
724
- utils.htmlInit = function( WidgetClass, namespace ) {
725
- utils.docReady( function() {
726
- var dashedNamespace = utils.toDashed( namespace );
727
- var dataAttr = 'data-' + dashedNamespace;
728
- var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );
729
- var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );
730
- var elems = utils.makeArray( dataAttrElems )
731
- .concat( utils.makeArray( jsDashElems ) );
732
- var dataOptionsAttr = dataAttr + '-options';
733
- var jQuery = window.jQuery;
734
-
735
- elems.forEach( function( elem ) {
736
- var attr = elem.getAttribute( dataAttr ) ||
737
- elem.getAttribute( dataOptionsAttr );
738
- var options;
739
- try {
740
- options = attr && JSON.parse( attr );
741
- } catch ( error ) {
742
- // log error, do not initialize
743
- if ( console ) {
744
- console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +
745
- ': ' + error );
746
- }
747
- return;
748
- }
749
- // initialize
750
- var instance = new WidgetClass( elem, options );
751
- // make available via $().data('layoutname')
752
- if ( jQuery ) {
753
- jQuery.data( elem, namespace, instance );
754
- }
755
- });
756
-
757
- });
758
- };
759
-
760
- // ----- ----- //
761
-
762
- return utils;
763
-
764
- }));
765
-
766
- /**
767
- * Outlayer Item
768
- */
769
-
770
- ( function( window, factory ) {
771
- // universal module definition
772
- /* jshint strict: false */ /* globals define, module, require */
773
- if ( typeof define == 'function' && define.amd ) {
774
- // AMD - RequireJS
775
- define( 'outlayer/item',[
776
- 'ev-emitter/ev-emitter',
777
- 'get-size/get-size'
778
- ],
779
- factory
780
- );
781
- } else if ( typeof module == 'object' && module.exports ) {
782
- // CommonJS - Browserify, Webpack
783
- module.exports = factory(
784
- require('ev-emitter'),
785
- require('get-size')
786
- );
787
- } else {
788
- // browser global
789
- window.Outlayer = {};
790
- window.Outlayer.Item = factory(
791
- window.EvEmitter,
792
- window.getSize
793
- );
794
- }
795
-
796
- }( window, function factory( EvEmitter, getSize ) {
797
- 'use strict';
798
-
799
- // ----- helpers ----- //
800
-
801
- function isEmptyObj( obj ) {
802
- for ( var prop in obj ) {
803
- return false;
804
- }
805
- prop = null;
806
- return true;
807
- }
808
-
809
- // -------------------------- CSS3 support -------------------------- //
810
-
811
-
812
- var docElemStyle = document.documentElement.style;
813
-
814
- var transitionProperty = typeof docElemStyle.transition == 'string' ?
815
- 'transition' : 'WebkitTransition';
816
- var transformProperty = typeof docElemStyle.transform == 'string' ?
817
- 'transform' : 'WebkitTransform';
818
-
819
- var transitionEndEvent = {
820
- WebkitTransition: 'webkitTransitionEnd',
821
- transition: 'transitionend'
822
- }[ transitionProperty ];
823
-
824
- // cache all vendor properties that could have vendor prefix
825
- var vendorProperties = {
826
- transform: transformProperty,
827
- transition: transitionProperty,
828
- transitionDuration: transitionProperty + 'Duration',
829
- transitionProperty: transitionProperty + 'Property',
830
- transitionDelay: transitionProperty + 'Delay'
831
- };
832
-
833
- // -------------------------- Item -------------------------- //
834
-
835
- function Item( element, layout ) {
836
- if ( !element ) {
837
- return;
838
- }
839
-
840
- this.element = element;
841
- // parent layout class, i.e. Masonry, Enviratope, or Packery
842
- this.layout = layout;
843
- this.position = {
844
- x: 0,
845
- y: 0
846
- };
847
-
848
- this._create();
849
- }
850
-
851
- // inherit EvEmitter
852
- var proto = Item.prototype = Object.create( EvEmitter.prototype );
853
- proto.constructor = Item;
854
-
855
- proto._create = function() {
856
- // transition objects
857
- this._transn = {
858
- ingProperties: {},
859
- clean: {},
860
- onEnd: {}
861
- };
862
-
863
- this.css({
864
- position: 'absolute'
865
- });
866
- };
867
-
868
- // trigger specified handler for event type
869
- proto.handleEvent = function( event ) {
870
- var method = 'on' + event.type;
871
- if ( this[ method ] ) {
872
- this[ method ]( event );
873
- }
874
- };
875
-
876
- proto.getSize = function() {
877
- this.size = getSize( this.element );
878
- };
879
-
880
- /**
881
- * apply CSS styles to element
882
- * @param {Object} style
883
- */
884
- proto.css = function( style ) {
885
- var elemStyle = this.element.style;
886
-
887
- for ( var prop in style ) {
888
- // use vendor property if available
889
- var supportedProp = vendorProperties[ prop ] || prop;
890
- elemStyle[ supportedProp ] = style[ prop ];
891
- }
892
- };
893
-
894
- // measure position, and sets it
895
- proto.getPosition = function() {
896
- var style = getComputedStyle( this.element );
897
- var isOriginLeft = this.layout._getOption('originLeft');
898
- var isOriginTop = this.layout._getOption('originTop');
899
- var xValue = style[ isOriginLeft ? 'left' : 'right' ];
900
- var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
901
- // convert percent to pixels
902
- var layoutSize = this.layout.size;
903
- var x = xValue.indexOf('%') != -1 ?
904
- ( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 );
905
- var y = yValue.indexOf('%') != -1 ?
906
- ( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 );
907
-
908
- // clean up 'auto' or other non-integer values
909
- x = isNaN( x ) ? 0 : x;
910
- y = isNaN( y ) ? 0 : y;
911
- // remove padding from measurement
912
- x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
913
- y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
914
-
915
- this.position.x = x;
916
- this.position.y = y;
917
- };
918
-
919
- // set settled position, apply padding
920
- proto.layoutPosition = function() {
921
- var layoutSize = this.layout.size;
922
- var style = {};
923
- var isOriginLeft = this.layout._getOption('originLeft');
924
- var isOriginTop = this.layout._getOption('originTop');
925
-
926
- // x
927
- var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';
928
- var xProperty = isOriginLeft ? 'left' : 'right';
929
- var xResetProperty = isOriginLeft ? 'right' : 'left';
930
-
931
- var x = this.position.x + layoutSize[ xPadding ];
932
- // set in percentage or pixels
933
- style[ xProperty ] = this.getXValue( x );
934
- // reset other property
935
- style[ xResetProperty ] = '';
936
-
937
- // y
938
- var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';
939
- var yProperty = isOriginTop ? 'top' : 'bottom';
940
- var yResetProperty = isOriginTop ? 'bottom' : 'top';
941
-
942
- var y = this.position.y + layoutSize[ yPadding ];
943
- // set in percentage or pixels
944
- style[ yProperty ] = this.getYValue( y );
945
- // reset other property
946
- style[ yResetProperty ] = '';
947
-
948
- this.css( style );
949
- this.emitEvent( 'layout', [ this ] );
950
- };
951
-
952
- proto.getXValue = function( x ) {
953
- var isHorizontal = this.layout._getOption('horizontal');
954
- return this.layout.options.percentPosition && !isHorizontal ?
955
- ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
956
- };
957
-
958
- proto.getYValue = function( y ) {
959
- var isHorizontal = this.layout._getOption('horizontal');
960
- return this.layout.options.percentPosition && isHorizontal ?
961
- ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
962
- };
963
-
964
- proto._transitionTo = function( x, y ) {
965
- this.getPosition();
966
- // get current x & y from top/left
967
- var curX = this.position.x;
968
- var curY = this.position.y;
969
-
970
- var compareX = parseInt( x, 10 );
971
- var compareY = parseInt( y, 10 );
972
- var didNotMove = compareX === this.position.x && compareY === this.position.y;
973
-
974
- // save end position
975
- this.setPosition( x, y );
976
-
977
- // if did not move and not transitioning, just go to layout
978
- if ( didNotMove && !this.isTransitioning ) {
979
- this.layoutPosition();
980
- return;
981
- }
982
-
983
- var transX = x - curX;
984
- var transY = y - curY;
985
- var transitionStyle = {};
986
- transitionStyle.transform = this.getTranslate( transX, transY );
987
-
988
- this.transition({
989
- to: transitionStyle,
990
- onTransitionEnd: {
991
- transform: this.layoutPosition
992
- },
993
- isCleaning: true
994
- });
995
- };
996
-
997
- proto.getTranslate = function( x, y ) {
998
- // flip cooridinates if origin on right or bottom
999
- var isOriginLeft = this.layout._getOption('originLeft');
1000
- var isOriginTop = this.layout._getOption('originTop');
1001
- x = isOriginLeft ? x : -x;
1002
- y = isOriginTop ? y : -y;
1003
- return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
1004
- };
1005
-
1006
- // non transition + transform support
1007
- proto.goTo = function( x, y ) {
1008
- this.setPosition( x, y );
1009
- this.layoutPosition();
1010
- };
1011
-
1012
- proto.moveTo = proto._transitionTo;
1013
-
1014
- proto.setPosition = function( x, y ) {
1015
- this.position.x = parseInt( x, 10 );
1016
- this.position.y = parseInt( y, 10 );
1017
- };
1018
-
1019
- // ----- transition ----- //
1020
-
1021
- /**
1022
- * @param {Object} style - CSS
1023
- * @param {Function} onTransitionEnd
1024
- */
1025
-
1026
- // non transition, just trigger callback
1027
- proto._nonTransition = function( args ) {
1028
- this.css( args.to );
1029
- if ( args.isCleaning ) {
1030
- this._removeStyles( args.to );
1031
- }
1032
- for ( var prop in args.onTransitionEnd ) {
1033
- args.onTransitionEnd[ prop ].call( this );
1034
- }
1035
- };
1036
-
1037
- /**
1038
- * proper transition
1039
- * @param {Object} args - arguments
1040
- * @param {Object} to - style to transition to
1041
- * @param {Object} from - style to start transition from
1042
- * @param {Boolean} isCleaning - removes transition styles after transition
1043
- * @param {Function} onTransitionEnd - callback
1044
- */
1045
- proto.transition = function( args ) {
1046
- // redirect to nonTransition if no transition duration
1047
- if ( !parseFloat( this.layout.options.transitionDuration ) ) {
1048
- this._nonTransition( args );
1049
- return;
1050
- }
1051
-
1052
- var _transition = this._transn;
1053
- // keep track of onTransitionEnd callback by css property
1054
- for ( var prop in args.onTransitionEnd ) {
1055
- _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];
1056
- }
1057
- // keep track of properties that are transitioning
1058
- for ( prop in args.to ) {
1059
- _transition.ingProperties[ prop ] = true;
1060
- // keep track of properties to clean up when transition is done
1061
- if ( args.isCleaning ) {
1062
- _transition.clean[ prop ] = true;
1063
- }
1064
- }
1065
-
1066
- // set from styles
1067
- if ( args.from ) {
1068
- this.css( args.from );
1069
- // force redraw. http://blog.alexmaccaw.com/css-transitions
1070
- var h = this.element.offsetHeight;
1071
- // hack for JSHint to hush about unused var
1072
- h = null;
1073
- }
1074
- // enable transition
1075
- this.enableTransition( args.to );
1076
- // set styles that are transitioning
1077
- this.css( args.to );
1078
-
1079
- this.isTransitioning = true;
1080
-
1081
- };
1082
-
1083
- // dash before all cap letters, including first for
1084
- // WebkitTransform => -webkit-transform
1085
- function toDashedAll( str ) {
1086
- return str.replace( /([A-Z])/g, function( $1 ) {
1087
- return '-' + $1.toLowerCase();
1088
- });
1089
- }
1090
-
1091
- var transitionProps = 'opacity,' + toDashedAll( transformProperty );
1092
-
1093
- proto.enableTransition = function(/* style */) {
1094
- // HACK changing transitionProperty during a transition
1095
- // will cause transition to jump
1096
- if ( this.isTransitioning ) {
1097
- return;
1098
- }
1099
-
1100
- // make `transition: foo, bar, baz` from style object
1101
- // HACK un-comment this when enableTransition can work
1102
- // while a transition is happening
1103
- // var transitionValues = [];
1104
- // for ( var prop in style ) {
1105
- // // dash-ify camelCased properties like WebkitTransition
1106
- // prop = vendorProperties[ prop ] || prop;
1107
- // transitionValues.push( toDashedAll( prop ) );
1108
- // }
1109
- // munge number to millisecond, to match stagger
1110
- var duration = this.layout.options.transitionDuration;
1111
- duration = typeof duration == 'number' ? duration + 'ms' : duration;
1112
- // enable transition styles
1113
- this.css({
1114
- transitionProperty: transitionProps,
1115
- transitionDuration: duration,
1116
- transitionDelay: this.staggerDelay || 0
1117
- });
1118
- // listen for transition end event
1119
- this.element.addEventListener( transitionEndEvent, this, false );
1120
- };
1121
-
1122
- // ----- events ----- //
1123
-
1124
- proto.onwebkitTransitionEnd = function( event ) {
1125
- this.ontransitionend( event );
1126
- };
1127
-
1128
- proto.onotransitionend = function( event ) {
1129
- this.ontransitionend( event );
1130
- };
1131
-
1132
- // properties that I munge to make my life easier
1133
- var dashedVendorProperties = {
1134
- '-webkit-transform': 'transform'
1135
- };
1136
-
1137
- proto.ontransitionend = function( event ) {
1138
- // disregard bubbled events from children
1139
- if ( event.target !== this.element ) {
1140
- return;
1141
- }
1142
- var _transition = this._transn;
1143
- // get property name of transitioned property, convert to prefix-free
1144
- var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;
1145
-
1146
- // remove property that has completed transitioning
1147
- delete _transition.ingProperties[ propertyName ];
1148
- // check if any properties are still transitioning
1149
- if ( isEmptyObj( _transition.ingProperties ) ) {
1150
- // all properties have completed transitioning
1151
- this.disableTransition();
1152
- }
1153
- // clean style
1154
- if ( propertyName in _transition.clean ) {
1155
- // clean up style
1156
- this.element.style[ event.propertyName ] = '';
1157
- delete _transition.clean[ propertyName ];
1158
- }
1159
- // trigger onTransitionEnd callback
1160
- if ( propertyName in _transition.onEnd ) {
1161
- var onTransitionEnd = _transition.onEnd[ propertyName ];
1162
- onTransitionEnd.call( this );
1163
- delete _transition.onEnd[ propertyName ];
1164
- }
1165
-
1166
- this.emitEvent( 'transitionEnd', [ this ] );
1167
- };
1168
-
1169
- proto.disableTransition = function() {
1170
- this.removeTransitionStyles();
1171
- this.element.removeEventListener( transitionEndEvent, this, false );
1172
- this.isTransitioning = false;
1173
- };
1174
-
1175
- /**
1176
- * removes style property from element
1177
- * @param {Object} style
1178
- **/
1179
- proto._removeStyles = function( style ) {
1180
- // clean up transition styles
1181
- var cleanStyle = {};
1182
- for ( var prop in style ) {
1183
- cleanStyle[ prop ] = '';
1184
- }
1185
- this.css( cleanStyle );
1186
- };
1187
-
1188
- var cleanTransitionStyle = {
1189
- transitionProperty: '',
1190
- transitionDuration: '',
1191
- transitionDelay: ''
1192
- };
1193
-
1194
- proto.removeTransitionStyles = function() {
1195
- // remove transition
1196
- this.css( cleanTransitionStyle );
1197
- };
1198
-
1199
- // ----- stagger ----- //
1200
-
1201
- proto.stagger = function( delay ) {
1202
- delay = isNaN( delay ) ? 0 : delay;
1203
- this.staggerDelay = delay + 'ms';
1204
- };
1205
-
1206
- // ----- show/hide/remove ----- //
1207
-
1208
- // remove element from DOM
1209
- proto.removeElem = function() {
1210
- this.element.parentNode.removeChild( this.element );
1211
- // remove display: none
1212
- this.css({ display: '' });
1213
- this.emitEvent( 'remove', [ this ] );
1214
- };
1215
-
1216
- proto.remove = function() {
1217
- // just remove element if no transition support or no transition
1218
- if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {
1219
- this.removeElem();
1220
- return;
1221
- }
1222
-
1223
- // start transition
1224
- this.once( 'transitionEnd', function() {
1225
- this.removeElem();
1226
- });
1227
- this.hide();
1228
- };
1229
-
1230
- proto.reveal = function() {
1231
- delete this.isHidden;
1232
- // remove display: none
1233
- this.css({ display: '' });
1234
-
1235
- var options = this.layout.options;
1236
-
1237
- var onTransitionEnd = {};
1238
- var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');
1239
- onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;
1240
-
1241
- this.transition({
1242
- from: options.hiddenStyle,
1243
- to: options.visibleStyle,
1244
- isCleaning: true,
1245
- onTransitionEnd: onTransitionEnd
1246
- });
1247
- };
1248
-
1249
- proto.onRevealTransitionEnd = function() {
1250
- // check if still visible
1251
- // during transition, item may have been hidden
1252
- if ( !this.isHidden ) {
1253
- this.emitEvent('reveal');
1254
- }
1255
- };
1256
-
1257
- /**
1258
- * get style property use for hide/reveal transition end
1259
- * @param {String} styleProperty - hiddenStyle/visibleStyle
1260
- * @returns {String}
1261
- */
1262
- proto.getHideRevealTransitionEndProperty = function( styleProperty ) {
1263
- var optionStyle = this.layout.options[ styleProperty ];
1264
- // use opacity
1265
- if ( optionStyle.opacity ) {
1266
- return 'opacity';
1267
- }
1268
- // get first property
1269
- for ( var prop in optionStyle ) {
1270
- return prop;
1271
- }
1272
- };
1273
-
1274
- proto.hide = function() {
1275
- // set flag
1276
- this.isHidden = true;
1277
- // remove display: none
1278
- this.css({ display: '' });
1279
-
1280
- var options = this.layout.options;
1281
-
1282
- var onTransitionEnd = {};
1283
- var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');
1284
- onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;
1285
-
1286
- this.transition({
1287
- from: options.visibleStyle,
1288
- to: options.hiddenStyle,
1289
- // keep hidden stuff hidden
1290
- isCleaning: true,
1291
- onTransitionEnd: onTransitionEnd
1292
- });
1293
- };
1294
-
1295
- proto.onHideTransitionEnd = function() {
1296
- // check if still hidden
1297
- // during transition, item may have been un-hidden
1298
- if ( this.isHidden ) {
1299
- this.css({ display: 'none' });
1300
- this.emitEvent('hide');
1301
- }
1302
- };
1303
-
1304
- proto.destroy = function() {
1305
- this.css({
1306
- position: '',
1307
- left: '',
1308
- right: '',
1309
- top: '',
1310
- bottom: '',
1311
- transition: '',
1312
- transform: ''
1313
- });
1314
- };
1315
-
1316
- return Item;
1317
-
1318
- }));
1319
-
1320
- /*!
1321
- * Outlayer v2.1.0
1322
- * the brains and guts of a layout library
1323
- * MIT license
1324
- */
1325
-
1326
- ( function( window, factory ) {
1327
- 'use strict';
1328
- // universal module definition
1329
- /* jshint strict: false */ /* globals define, module, require */
1330
- if ( typeof define == 'function' && define.amd ) {
1331
- // AMD - RequireJS
1332
- define( 'outlayer/outlayer',[
1333
- 'ev-emitter/ev-emitter',
1334
- 'get-size/get-size',
1335
- 'fizzy-ui-utils/utils',
1336
- './item'
1337
- ],
1338
- function( EvEmitter, getSize, utils, Item ) {
1339
- return factory( window, EvEmitter, getSize, utils, Item);
1340
- }
1341
- );
1342
- } else if ( typeof module == 'object' && module.exports ) {
1343
- // CommonJS - Browserify, Webpack
1344
- module.exports = factory(
1345
- window,
1346
- require('ev-emitter'),
1347
- require('get-size'),
1348
- require('fizzy-ui-utils'),
1349
- require('./item')
1350
- );
1351
- } else {
1352
- // browser global
1353
- window.Outlayer = factory(
1354
- window,
1355
- window.EvEmitter,
1356
- window.getSize,
1357
- window.fizzyUIUtils,
1358
- window.Outlayer.Item
1359
- );
1360
- }
1361
-
1362
- }( window, function factory( window, EvEmitter, getSize, utils, Item ) {
1363
- 'use strict';
1364
-
1365
- // ----- vars ----- //
1366
-
1367
- var console = window.console;
1368
- var jQuery = window.jQuery;
1369
- var noop = function() {};
1370
-
1371
- // -------------------------- Outlayer -------------------------- //
1372
-
1373
- // globally unique identifiers
1374
- var GUID = 0;
1375
- // internal store of all Outlayer intances
1376
- var instances = {};
1377
-
1378
-
1379
- /**
1380
- * @param {Element, String} element
1381
- * @param {Object} options
1382
- * @constructor
1383
- */
1384
- function Outlayer( element, options ) {
1385
- var queryElement = utils.getQueryElement( element );
1386
- if ( !queryElement ) {
1387
- if ( console ) {
1388
- console.error( 'Bad element for ' + this.constructor.namespace +
1389
- ': ' + ( queryElement || element ) );
1390
- }
1391
- return;
1392
- }
1393
- this.element = queryElement;
1394
- // add jQuery
1395
- if ( jQuery ) {
1396
- this.$element = jQuery( this.element );
1397
- }
1398
-
1399
- // options
1400
- this.options = utils.extend( {}, this.constructor.defaults );
1401
- this.option( options );
1402
-
1403
- // add id for Outlayer.getFromElement
1404
- var id = ++GUID;
1405
- this.element.outlayerGUID = id; // expando
1406
- instances[ id ] = this; // associate via id
1407
-
1408
- // kick it off
1409
- this._create();
1410
-
1411
- var isInitLayout = this._getOption('initLayout');
1412
- if ( isInitLayout ) {
1413
- this.layout();
1414
- }
1415
- }
1416
-
1417
- // settings are for internal use only
1418
- Outlayer.namespace = 'outlayer';
1419
- Outlayer.Item = Item;
1420
-
1421
- // default options
1422
- Outlayer.defaults = {
1423
- containerStyle: {
1424
- position: 'relative'
1425
- },
1426
- initLayout: true,
1427
- originLeft: true,
1428
- originTop: true,
1429
- resize: true,
1430
- resizeContainer: true,
1431
- // item options
1432
- transitionDuration: '0.4s',
1433
- hiddenStyle: {
1434
- opacity: 0,
1435
- transform: 'scale(0.001)'
1436
- },
1437
- visibleStyle: {
1438
- opacity: 1,
1439
- transform: 'scale(1)'
1440
- }
1441
- };
1442
-
1443
- var proto = Outlayer.prototype;
1444
- // inherit EvEmitter
1445
- utils.extend( proto, EvEmitter.prototype );
1446
-
1447
- /**
1448
- * set options
1449
- * @param {Object} opts
1450
- */
1451
- proto.option = function( opts ) {
1452
- utils.extend( this.options, opts );
1453
- };
1454
-
1455
- /**
1456
- * get backwards compatible option value, check old name
1457
- */
1458
- proto._getOption = function( option ) {
1459
- var oldOption = this.constructor.compatOptions[ option ];
1460
- return oldOption && this.options[ oldOption ] !== undefined ?
1461
- this.options[ oldOption ] : this.options[ option ];
1462
- };
1463
-
1464
- Outlayer.compatOptions = {
1465
- // currentName: oldName
1466
- initLayout: 'isInitLayout',
1467
- horizontal: 'isHorizontal',
1468
- layoutInstant: 'isLayoutInstant',
1469
- originLeft: 'isOriginLeft',
1470
- originTop: 'isOriginTop',
1471
- resize: 'isResizeBound',
1472
- resizeContainer: 'isResizingContainer'
1473
- };
1474
-
1475
- proto._create = function() {
1476
- // get items from children
1477
- this.reloadItems();
1478
- // elements that affect layout, but are not laid out
1479
- this.stamps = [];
1480
- this.stamp( this.options.stamp );
1481
- // set container style
1482
- utils.extend( this.element.style, this.options.containerStyle );
1483
-
1484
- // bind resize method
1485
- var canBindResize = this._getOption('resize');
1486
- if ( canBindResize ) {
1487
- this.bindResize();
1488
- }
1489
- };
1490
-
1491
- // goes through all children again and gets bricks in proper order
1492
- proto.reloadItems = function() {
1493
- // collection of item elements
1494
- this.items = this._itemize( this.element.children );
1495
- };
1496
-
1497
-
1498
- /**
1499
- * turn elements into Outlayer.Items to be used in layout
1500
- * @param {Array or NodeList or HTMLElement} elems
1501
- * @returns {Array} items - collection of new Outlayer Items
1502
- */
1503
- proto._itemize = function( elems ) {
1504
-
1505
- var itemElems = this._filterFindItemElements( elems );
1506
- var Item = this.constructor.Item;
1507
-
1508
- // create new Outlayer Items for collection
1509
- var items = [];
1510
- for ( var i=0; i < itemElems.length; i++ ) {
1511
- var elem = itemElems[i];
1512
- var item = new Item( elem, this );
1513
- items.push( item );
1514
- }
1515
-
1516
- return items;
1517
- };
1518
-
1519
- /**
1520
- * get item elements to be used in layout
1521
- * @param {Array or NodeList or HTMLElement} elems
1522
- * @returns {Array} items - item elements
1523
- */
1524
- proto._filterFindItemElements = function( elems ) {
1525
- return utils.filterFindElements( elems, this.options.itemSelector );
1526
- };
1527
-
1528
- /**
1529
- * getter method for getting item elements
1530
- * @returns {Array} elems - collection of item elements
1531
- */
1532
- proto.getItemElements = function() {
1533
- return this.items.map( function( item ) {
1534
- return item.element;
1535
- });
1536
- };
1537
-
1538
- // ----- init & layout ----- //
1539
-
1540
- /**
1541
- * lays out all items
1542
- */
1543
- proto.layout = function() {
1544
- this._resetLayout();
1545
- this._manageStamps();
1546
-
1547
- // don't animate first layout
1548
- var layoutInstant = this._getOption('layoutInstant');
1549
- var isInstant = layoutInstant !== undefined ?
1550
- layoutInstant : !this._isLayoutInited;
1551
- this.layoutItems( this.items, isInstant );
1552
-
1553
- // flag for initalized
1554
- this._isLayoutInited = true;
1555
- };
1556
-
1557
- // _init is alias for layout
1558
- proto._init = proto.layout;
1559
-
1560
- /**
1561
- * logic before any new layout
1562
- */
1563
- proto._resetLayout = function() {
1564
- this.getSize();
1565
- };
1566
-
1567
-
1568
- proto.getSize = function() {
1569
- this.size = getSize( this.element );
1570
- };
1571
-
1572
- /**
1573
- * get measurement from option, for columnWidth, rowHeight, gutter
1574
- * if option is String -> get element from selector string, & get size of element
1575
- * if option is Element -> get size of element
1576
- * else use option as a number
1577
- *
1578
- * @param {String} measurement
1579
- * @param {String} size - width or height
1580
- * @private
1581
- */
1582
- proto._getMeasurement = function( measurement, size ) {
1583
- var option = this.options[ measurement ];
1584
- var elem;
1585
- if ( !option ) {
1586
- // default to 0
1587
- this[ measurement ] = 0;
1588
- } else {
1589
- // use option as an element
1590
- if ( typeof option == 'string' ) {
1591
- elem = this.element.querySelector( option );
1592
- } else if ( option instanceof HTMLElement ) {
1593
- elem = option;
1594
- }
1595
- // use size of element, if element
1596
- this[ measurement ] = elem ? getSize( elem )[ size ] : option;
1597
- }
1598
- };
1599
-
1600
- /**
1601
- * layout a collection of item elements
1602
- * @api public
1603
- */
1604
- proto.layoutItems = function( items, isInstant ) {
1605
- items = this._getItemsForLayout( items );
1606
-
1607
- this._layoutItems( items, isInstant );
1608
-
1609
- this._postLayout();
1610
- };
1611
-
1612
- /**
1613
- * get the items to be laid out
1614
- * you may want to skip over some items
1615
- * @param {Array} items
1616
- * @returns {Array} items
1617
- */
1618
- proto._getItemsForLayout = function( items ) {
1619
- return items.filter( function( item ) {
1620
- return !item.isIgnored;
1621
- });
1622
- };
1623
-
1624
- /**
1625
- * layout items
1626
- * @param {Array} items
1627
- * @param {Boolean} isInstant
1628
- */
1629
- proto._layoutItems = function( items, isInstant ) {
1630
- this._emitCompleteOnItems( 'layout', items );
1631
-
1632
- if ( !items || !items.length ) {
1633
- // no items, emit event with empty array
1634
- return;
1635
- }
1636
-
1637
- var queue = [];
1638
-
1639
- items.forEach( function( item ) {
1640
- // get x/y object from method
1641
- var position = this._getItemLayoutPosition( item );
1642
- // enqueue
1643
- position.item = item;
1644
- position.isInstant = isInstant || item.isLayoutInstant;
1645
- queue.push( position );
1646
- }, this );
1647
-
1648
- this._processLayoutQueue( queue );
1649
- };
1650
-
1651
- /**
1652
- * get item layout position
1653
- * @param {Outlayer.Item} item
1654
- * @returns {Object} x and y position
1655
- */
1656
- proto._getItemLayoutPosition = function( /* item */ ) {
1657
- return {
1658
- x: 0,
1659
- y: 0
1660
- };
1661
- };
1662
-
1663
- /**
1664
- * iterate over array and position each item
1665
- * Reason being - separating this logic prevents 'layout invalidation'
1666
- * thx @paul_irish
1667
- * @param {Array} queue
1668
- */
1669
- proto._processLayoutQueue = function( queue ) {
1670
- this.updateStagger();
1671
- queue.forEach( function( obj, i ) {
1672
- this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );
1673
- }, this );
1674
- };
1675
-
1676
- // set stagger from option in milliseconds number
1677
- proto.updateStagger = function() {
1678
- var stagger = this.options.stagger;
1679
- if ( stagger === null || stagger === undefined ) {
1680
- this.stagger = 0;
1681
- return;
1682
- }
1683
- this.stagger = getMilliseconds( stagger );
1684
- return this.stagger;
1685
- };
1686
-
1687
- /**
1688
- * Sets position of item in DOM
1689
- * @param {Outlayer.Item} item
1690
- * @param {Number} x - horizontal position
1691
- * @param {Number} y - vertical position
1692
- * @param {Boolean} isInstant - disables transitions
1693
- */
1694
- proto._positionItem = function( item, x, y, isInstant, i ) {
1695
- if ( isInstant ) {
1696
- // if not transition, just set CSS
1697
- item.goTo( x, y );
1698
- } else {
1699
- item.stagger( i * this.stagger );
1700
- item.moveTo( x, y );
1701
- }
1702
- };
1703
-
1704
- /**
1705
- * Any logic you want to do after each layout,
1706
- * i.e. size the container
1707
- */
1708
- proto._postLayout = function() {
1709
- this.resizeContainer();
1710
- };
1711
-
1712
- proto.resizeContainer = function() {
1713
- var isResizingContainer = this._getOption('resizeContainer');
1714
- if ( !isResizingContainer ) {
1715
- return;
1716
- }
1717
- var size = this._getContainerSize();
1718
- if ( size ) {
1719
- this._setContainerMeasure( size.width, true );
1720
- this._setContainerMeasure( size.height, false );
1721
- }
1722
- };
1723
-
1724
- /**
1725
- * Sets width or height of container if returned
1726
- * @returns {Object} size
1727
- * @param {Number} width
1728
- * @param {Number} height
1729
- */
1730
- proto._getContainerSize = noop;
1731
-
1732
- /**
1733
- * @param {Number} measure - size of width or height
1734
- * @param {Boolean} isWidth
1735
- */
1736
- proto._setContainerMeasure = function( measure, isWidth ) {
1737
- if ( measure === undefined ) {
1738
- return;
1739
- }
1740
-
1741
- var elemSize = this.size;
1742
- // add padding and border width if border box
1743
- if ( elemSize.isBorderBox ) {
1744
- measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +
1745
- elemSize.borderLeftWidth + elemSize.borderRightWidth :
1746
- elemSize.paddingBottom + elemSize.paddingTop +
1747
- elemSize.borderTopWidth + elemSize.borderBottomWidth;
1748
- }
1749
-
1750
- measure = Math.max( measure, 0 );
1751
- this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';
1752
- };
1753
-
1754
- /**
1755
- * emit eventComplete on a collection of items events
1756
- * @param {String} eventName
1757
- * @param {Array} items - Outlayer.Items
1758
- */
1759
- proto._emitCompleteOnItems = function( eventName, items ) {
1760
- var _this = this;
1761
- function onComplete() {
1762
- _this.dispatchEvent( eventName + 'Complete', null, [ items ] );
1763
- }
1764
-
1765
- var count = items.length;
1766
- if ( !items || !count ) {
1767
- onComplete();
1768
- return;
1769
- }
1770
-
1771
- var doneCount = 0;
1772
- function tick() {
1773
- doneCount++;
1774
- if ( doneCount == count ) {
1775
- onComplete();
1776
- }
1777
- }
1778
-
1779
- // bind callback
1780
- items.forEach( function( item ) {
1781
- item.once( eventName, tick );
1782
- });
1783
- };
1784
-
1785
- /**
1786
- * emits events via EvEmitter and jQuery events
1787
- * @param {String} type - name of event
1788
- * @param {Event} event - original event
1789
- * @param {Array} args - extra arguments
1790
- */
1791
- proto.dispatchEvent = function( type, event, args ) {
1792
- // add original event to arguments
1793
- var emitArgs = event ? [ event ].concat( args ) : args;
1794
- this.emitEvent( type, emitArgs );
1795
-
1796
- if ( jQuery ) {
1797
- // set this.$element
1798
- this.$element = this.$element || jQuery( this.element );
1799
- if ( event ) {
1800
- // create jQuery event
1801
- var $event = jQuery.Event( event );
1802
- $event.type = type;
1803
- this.$element.trigger( $event, args );
1804
- } else {
1805
- // just trigger with type if no event available
1806
- this.$element.trigger( type, args );
1807
- }
1808
- }
1809
- };
1810
-
1811
- // -------------------------- ignore & stamps -------------------------- //
1812
-
1813
-
1814
- /**
1815
- * keep item in collection, but do not lay it out
1816
- * ignored items do not get skipped in layout
1817
- * @param {Element} elem
1818
- */
1819
- proto.ignore = function( elem ) {
1820
- var item = this.getItem( elem );
1821
- if ( item ) {
1822
- item.isIgnored = true;
1823
- }
1824
- };
1825
-
1826
- /**
1827
- * return item to layout collection
1828
- * @param {Element} elem
1829
- */
1830
- proto.unignore = function( elem ) {
1831
- var item = this.getItem( elem );
1832
- if ( item ) {
1833
- delete item.isIgnored;
1834
- }
1835
- };
1836
-
1837
- /**
1838
- * adds elements to stamps
1839
- * @param {NodeList, Array, Element, or String} elems
1840
- */
1841
- proto.stamp = function( elems ) {
1842
- elems = this._find( elems );
1843
- if ( !elems ) {
1844
- return;
1845
- }
1846
-
1847
- this.stamps = this.stamps.concat( elems );
1848
- // ignore
1849
- elems.forEach( this.ignore, this );
1850
- };
1851
-
1852
- /**
1853
- * removes elements to stamps
1854
- * @param {NodeList, Array, or Element} elems
1855
- */
1856
- proto.unstamp = function( elems ) {
1857
- elems = this._find( elems );
1858
- if ( !elems ){
1859
- return;
1860
- }
1861
-
1862
- elems.forEach( function( elem ) {
1863
- // filter out removed stamp elements
1864
- utils.removeFrom( this.stamps, elem );
1865
- this.unignore( elem );
1866
- }, this );
1867
- };
1868
-
1869
- /**
1870
- * finds child elements
1871
- * @param {NodeList, Array, Element, or String} elems
1872
- * @returns {Array} elems
1873
- */
1874
- proto._find = function( elems ) {
1875
- if ( !elems ) {
1876
- return;
1877
- }
1878
- // if string, use argument as selector string
1879
- if ( typeof elems == 'string' ) {
1880
- elems = this.element.querySelectorAll( elems );
1881
- }
1882
- elems = utils.makeArray( elems );
1883
- return elems;
1884
- };
1885
-
1886
- proto._manageStamps = function() {
1887
- if ( !this.stamps || !this.stamps.length ) {
1888
- return;
1889
- }
1890
-
1891
- this._getBoundingRect();
1892
-
1893
- this.stamps.forEach( this._manageStamp, this );
1894
- };
1895
-
1896
- // update boundingLeft / Top
1897
- proto._getBoundingRect = function() {
1898
- // get bounding rect for container element
1899
- var boundingRect = this.element.getBoundingClientRect();
1900
- var size = this.size;
1901
- this._boundingRect = {
1902
- left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,
1903
- top: boundingRect.top + size.paddingTop + size.borderTopWidth,
1904
- right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),
1905
- bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )
1906
- };
1907
- };
1908
-
1909
- /**
1910
- * @param {Element} stamp
1911
- **/
1912
- proto._manageStamp = noop;
1913
-
1914
- /**
1915
- * get x/y position of element relative to container element
1916
- * @param {Element} elem
1917
- * @returns {Object} offset - has left, top, right, bottom
1918
- */
1919
- proto._getElementOffset = function( elem ) {
1920
- var boundingRect = elem.getBoundingClientRect();
1921
- var thisRect = this._boundingRect;
1922
- var size = getSize( elem );
1923
- var offset = {
1924
- left: boundingRect.left - thisRect.left - size.marginLeft,
1925
- top: boundingRect.top - thisRect.top - size.marginTop,
1926
- right: thisRect.right - boundingRect.right - size.marginRight,
1927
- bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom
1928
- };
1929
- return offset;
1930
- };
1931
-
1932
- // -------------------------- resize -------------------------- //
1933
-
1934
- // enable event handlers for listeners
1935
- // i.e. resize -> onresize
1936
- proto.handleEvent = utils.handleEvent;
1937
-
1938
- /**
1939
- * Bind layout to window resizing
1940
- */
1941
- proto.bindResize = function() {
1942
- window.addEventListener( 'resize', this );
1943
- this.isResizeBound = true;
1944
- };
1945
-
1946
- /**
1947
- * Unbind layout to window resizing
1948
- */
1949
- proto.unbindResize = function() {
1950
- window.removeEventListener( 'resize', this );
1951
- this.isResizeBound = false;
1952
- };
1953
-
1954
- proto.onresize = function() {
1955
- this.resize();
1956
- };
1957
-
1958
- utils.debounceMethod( Outlayer, 'onresize', 100 );
1959
-
1960
- proto.resize = function() {
1961
- // don't trigger if size did not change
1962
- // or if resize was unbound. See #9
1963
- if ( !this.isResizeBound || !this.needsResizeLayout() ) {
1964
- return;
1965
- }
1966
-
1967
- this.layout();
1968
- };
1969
-
1970
- /**
1971
- * check if layout is needed post layout
1972
- * @returns Boolean
1973
- */
1974
- proto.needsResizeLayout = function() {
1975
- var size = getSize( this.element );
1976
- // check that this.size and size are there
1977
- // IE8 triggers resize on body size change, so they might not be
1978
- var hasSizes = this.size && size;
1979
- return hasSizes && size.innerWidth !== this.size.innerWidth;
1980
- };
1981
-
1982
- // -------------------------- methods -------------------------- //
1983
-
1984
- /**
1985
- * add items to Outlayer instance
1986
- * @param {Array or NodeList or Element} elems
1987
- * @returns {Array} items - Outlayer.Items
1988
- **/
1989
- proto.addItems = function( elems ) {
1990
- var items = this._itemize( elems );
1991
- // add items to collection
1992
- if ( items.length ) {
1993
- this.items = this.items.concat( items );
1994
- }
1995
- return items;
1996
- };
1997
-
1998
- /**
1999
- * Layout newly-appended item elements
2000
- * @param {Array or NodeList or Element} elems
2001
- */
2002
- proto.appended = function( elems ) {
2003
- var items = this.addItems( elems );
2004
- if ( !items.length ) {
2005
- return;
2006
- }
2007
- // layout and reveal just the new items
2008
- this.layoutItems( items, true );
2009
- this.reveal( items );
2010
- };
2011
-
2012
- /**
2013
- * Layout prepended elements
2014
- * @param {Array or NodeList or Element} elems
2015
- */
2016
- proto.prepended = function( elems ) {
2017
- var items = this._itemize( elems );
2018
- if ( !items.length ) {
2019
- return;
2020
- }
2021
- // add items to beginning of collection
2022
- var previousItems = this.items.slice(0);
2023
- this.items = items.concat( previousItems );
2024
- // start new layout
2025
- this._resetLayout();
2026
- this._manageStamps();
2027
- // layout new stuff without transition
2028
- this.layoutItems( items, true );
2029
- this.reveal( items );
2030
- // layout previous items
2031
- this.layoutItems( previousItems );
2032
- };
2033
-
2034
- /**
2035
- * reveal a collection of items
2036
- * @param {Array of Outlayer.Items} items
2037
- */
2038
- proto.reveal = function( items ) {
2039
- this._emitCompleteOnItems( 'reveal', items );
2040
- if ( !items || !items.length ) {
2041
- return;
2042
- }
2043
- var stagger = this.updateStagger();
2044
- items.forEach( function( item, i ) {
2045
- item.stagger( i * stagger );
2046
- item.reveal();
2047
- });
2048
- };
2049
-
2050
- /**
2051
- * hide a collection of items
2052
- * @param {Array of Outlayer.Items} items
2053
- */
2054
- proto.hide = function( items ) {
2055
- this._emitCompleteOnItems( 'hide', items );
2056
- if ( !items || !items.length ) {
2057
- return;
2058
- }
2059
- var stagger = this.updateStagger();
2060
- items.forEach( function( item, i ) {
2061
- item.stagger( i * stagger );
2062
- item.hide();
2063
- });
2064
- };
2065
-
2066
- /**
2067
- * reveal item elements
2068
- * @param {Array}, {Element}, {NodeList} items
2069
- */
2070
- proto.revealItemElements = function( elems ) {
2071
- var items = this.getItems( elems );
2072
- this.reveal( items );
2073
- };
2074
-
2075
- /**
2076
- * hide item elements
2077
- * @param {Array}, {Element}, {NodeList} items
2078
- */
2079
- proto.hideItemElements = function( elems ) {
2080
- var items = this.getItems( elems );
2081
- this.hide( items );
2082
- };
2083
-
2084
- /**
2085
- * get Outlayer.Item, given an Element
2086
- * @param {Element} elem
2087
- * @param {Function} callback
2088
- * @returns {Outlayer.Item} item
2089
- */
2090
- proto.getItem = function( elem ) {
2091
- // loop through items to get the one that matches
2092
- for ( var i=0; i < this.items.length; i++ ) {
2093
- var item = this.items[i];
2094
- if ( item.element == elem ) {
2095
- // return item
2096
- return item;
2097
- }
2098
- }
2099
- };
2100
-
2101
- /**
2102
- * get collection of Outlayer.Items, given Elements
2103
- * @param {Array} elems
2104
- * @returns {Array} items - Outlayer.Items
2105
- */
2106
- proto.getItems = function( elems ) {
2107
- elems = utils.makeArray( elems );
2108
- var items = [];
2109
- elems.forEach( function( elem ) {
2110
- var item = this.getItem( elem );
2111
- if ( item ) {
2112
- items.push( item );
2113
- }
2114
- }, this );
2115
-
2116
- return items;
2117
- };
2118
-
2119
- /**
2120
- * remove element(s) from instance and DOM
2121
- * @param {Array or NodeList or Element} elems
2122
- */
2123
- proto.remove = function( elems ) {
2124
- var removeItems = this.getItems( elems );
2125
-
2126
- this._emitCompleteOnItems( 'remove', removeItems );
2127
-
2128
- // bail if no items to remove
2129
- if ( !removeItems || !removeItems.length ) {
2130
- return;
2131
- }
2132
-
2133
- removeItems.forEach( function( item ) {
2134
- item.remove();
2135
- // remove item from collection
2136
- utils.removeFrom( this.items, item );
2137
- }, this );
2138
- };
2139
-
2140
- // ----- destroy ----- //
2141
-
2142
- // remove and disable Outlayer instance
2143
- proto.destroy = function() {
2144
- // clean up dynamic styles
2145
- var style = this.element.style;
2146
- style.height = '';
2147
- style.position = '';
2148
- style.width = '';
2149
- // destroy items
2150
- this.items.forEach( function( item ) {
2151
- item.destroy();
2152
- });
2153
-
2154
- this.unbindResize();
2155
-
2156
- var id = this.element.outlayerGUID;
2157
- delete instances[ id ]; // remove reference to instance by id
2158
- delete this.element.outlayerGUID;
2159
- // remove data for jQuery
2160
- if ( jQuery ) {
2161
- jQuery.removeData( this.element, this.constructor.namespace );
2162
- }
2163
-
2164
- };
2165
-
2166
- // -------------------------- data -------------------------- //
2167
-
2168
- /**
2169
- * get Outlayer instance from element
2170
- * @param {Element} elem
2171
- * @returns {Outlayer}
2172
- */
2173
- Outlayer.data = function( elem ) {
2174
- elem = utils.getQueryElement( elem );
2175
- var id = elem && elem.outlayerGUID;
2176
- return id && instances[ id ];
2177
- };
2178
-
2179
-
2180
- // -------------------------- create Outlayer class -------------------------- //
2181
-
2182
- /**
2183
- * create a layout class
2184
- * @param {String} namespace
2185
- */
2186
- Outlayer.create = function( namespace, options ) {
2187
- // sub-class Outlayer
2188
- var Layout = subclass( Outlayer );
2189
- // apply new options and compatOptions
2190
- Layout.defaults = utils.extend( {}, Outlayer.defaults );
2191
- utils.extend( Layout.defaults, options );
2192
- Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );
2193
-
2194
- Layout.namespace = namespace;
2195
-
2196
- Layout.data = Outlayer.data;
2197
-
2198
- // sub-class Item
2199
- Layout.Item = subclass( Item );
2200
-
2201
- // -------------------------- declarative -------------------------- //
2202
-
2203
- utils.htmlInit( Layout, namespace );
2204
-
2205
- // -------------------------- jQuery bridge -------------------------- //
2206
-
2207
- // make into jQuery plugin
2208
- if ( jQuery && jQuery.bridget ) {
2209
- jQuery.bridget( namespace, Layout );
2210
- }
2211
-
2212
- return Layout;
2213
- };
2214
-
2215
- function subclass( Parent ) {
2216
- function SubClass() {
2217
- Parent.apply( this, arguments );
2218
- }
2219
-
2220
- SubClass.prototype = Object.create( Parent.prototype );
2221
- SubClass.prototype.constructor = SubClass;
2222
-
2223
- return SubClass;
2224
- }
2225
-
2226
- // ----- helpers ----- //
2227
-
2228
- // how many milliseconds are in each unit
2229
- var msUnits = {
2230
- ms: 1,
2231
- s: 1000
2232
- };
2233
-
2234
- // munge time-like parameter into millisecond number
2235
- // '0.4s' -> 40
2236
- function getMilliseconds( time ) {
2237
- if ( typeof time == 'number' ) {
2238
- return time;
2239
- }
2240
- var matches = time.match( /(^\d*\.?\d*)(\w*)/ );
2241
- var num = matches && matches[1];
2242
- var unit = matches && matches[2];
2243
- if ( !num.length ) {
2244
- return 0;
2245
- }
2246
- num = parseFloat( num );
2247
- var mult = msUnits[ unit ] || 1;
2248
- return num * mult;
2249
- }
2250
-
2251
- // ----- fin ----- //
2252
-
2253
- // back in global
2254
- Outlayer.Item = Item;
2255
-
2256
- return Outlayer;
2257
-
2258
- }));
2259
-
2260
- /**
2261
- * Enviratope Item
2262
- **/
2263
-
2264
- ( function( window, factory ) {
2265
- // universal module definition
2266
- /* jshint strict: false */ /*globals define, module, require */
2267
- if ( typeof define == 'function' && define.amd ) {
2268
- // AMD
2269
- define( 'enviratope/item',[
2270
- 'outlayer/outlayer'
2271
- ],
2272
- factory );
2273
- } else if ( typeof module == 'object' && module.exports ) {
2274
- // CommonJS
2275
- module.exports = factory(
2276
- require('outlayer')
2277
- );
2278
- } else {
2279
- // browser global
2280
- window.Enviratope = window.Enviratope || {};
2281
- window.Enviratope.Item = factory(
2282
- window.Outlayer
2283
- );
2284
- }
2285
-
2286
- }( window, function factory( Outlayer ) {
2287
- 'use strict';
2288
-
2289
- // -------------------------- Item -------------------------- //
2290
-
2291
- // sub-class Outlayer Item
2292
- function Item() {
2293
- Outlayer.Item.apply( this, arguments );
2294
- }
2295
-
2296
- var proto = Item.prototype = Object.create( Outlayer.Item.prototype );
2297
-
2298
- var _create = proto._create;
2299
- proto._create = function() {
2300
- // assign id, used for original-order sorting
2301
- this.id = this.layout.itemGUID++;
2302
- _create.call( this );
2303
- this.sortData = {};
2304
- };
2305
-
2306
- proto.updateSortData = function() {
2307
- if ( this.isIgnored ) {
2308
- return;
2309
- }
2310
- // default sorters
2311
- this.sortData.id = this.id;
2312
- // for backward compatibility
2313
- this.sortData['original-order'] = this.id;
2314
- this.sortData.random = Math.random();
2315
- // go thru getSortData obj and apply the sorters
2316
- var getSortData = this.layout.options.getSortData;
2317
- var sorters = this.layout._sorters;
2318
- for ( var key in getSortData ) {
2319
- var sorter = sorters[ key ];
2320
- this.sortData[ key ] = sorter( this.element, this );
2321
- }
2322
- };
2323
-
2324
- var _destroy = proto.destroy;
2325
- proto.destroy = function() {
2326
- // call super
2327
- _destroy.apply( this, arguments );
2328
- // reset display, #741
2329
- this.css({
2330
- display: ''
2331
- });
2332
- };
2333
-
2334
- return Item;
2335
-
2336
- }));
2337
-
2338
- /**
2339
- * Enviratope LayoutMode
2340
- */
2341
-
2342
- ( function( window, factory ) {
2343
- // universal module definition
2344
- /* jshint strict: false */ /*globals define, module, require */
2345
- if ( typeof define == 'function' && define.amd ) {
2346
- // AMD
2347
- define( 'enviratope/layout-mode',[
2348
- 'get-size/get-size',
2349
- 'outlayer/outlayer'
2350
- ],
2351
- factory );
2352
- } else if ( typeof module == 'object' && module.exports ) {
2353
- // CommonJS
2354
- module.exports = factory(
2355
- require('get-size'),
2356
- require('outlayer')
2357
- );
2358
- } else {
2359
- // browser global
2360
- window.Enviratope = window.Enviratope || {};
2361
- window.Enviratope.LayoutMode = factory(
2362
- window.getSize,
2363
- window.Outlayer
2364
- );
2365
- }
2366
-
2367
- }( window, function factory( getSize, Outlayer ) {
2368
- 'use strict';
2369
-
2370
- // layout mode class
2371
- function LayoutMode( enviratope ) {
2372
- this.enviratope = enviratope;
2373
- // link properties
2374
- if ( enviratope ) {
2375
- this.options = enviratope.options[ this.namespace ];
2376
- this.element = enviratope.element;
2377
- this.items = enviratope.filteredItems;
2378
- this.size = enviratope.size;
2379
- }
2380
- }
2381
-
2382
- var proto = LayoutMode.prototype;
2383
-
2384
- /**
2385
- * some methods should just defer to default Outlayer method
2386
- * and reference the Enviratope instance as `this`
2387
- **/
2388
- var facadeMethods = [
2389
- '_resetLayout',
2390
- '_getItemLayoutPosition',
2391
- '_manageStamp',
2392
- '_getContainerSize',
2393
- '_getElementOffset',
2394
- 'needsResizeLayout',
2395
- '_getOption'
2396
- ];
2397
-
2398
- facadeMethods.forEach( function( methodName ) {
2399
- proto[ methodName ] = function() {
2400
- return Outlayer.prototype[ methodName ].apply( this.enviratope, arguments );
2401
- };
2402
- });
2403
-
2404
- // ----- ----- //
2405
-
2406
- // for horizontal layout modes, check vertical size
2407
- proto.needsVerticalResizeLayout = function() {
2408
- // don't trigger if size did not change
2409
- var size = getSize( this.enviratope.element );
2410
- // check that this.size and size are there
2411
- // IE8 triggers resize on body size change, so they might not be
2412
- var hasSizes = this.enviratope.size && size;
2413
- return hasSizes && size.innerHeight != this.enviratope.size.innerHeight;
2414
- };
2415
-
2416
- // ----- measurements ----- //
2417
-
2418
- proto._getMeasurement = function() {
2419
- this.enviratope._getMeasurement.apply( this, arguments );
2420
- };
2421
-
2422
- proto.getColumnWidth = function() {
2423
- this.getSegmentSize( 'column', 'Width' );
2424
- };
2425
-
2426
- proto.getRowHeight = function() {
2427
- this.getSegmentSize( 'row', 'Height' );
2428
- };
2429
-
2430
- /**
2431
- * get columnWidth or rowHeight
2432
- * segment: 'column' or 'row'
2433
- * size 'Width' or 'Height'
2434
- **/
2435
- proto.getSegmentSize = function( segment, size ) {
2436
- var segmentName = segment + size;
2437
- var outerSize = 'outer' + size;
2438
- // columnWidth / outerWidth // rowHeight / outerHeight
2439
- this._getMeasurement( segmentName, outerSize );
2440
- // got rowHeight or columnWidth, we can chill
2441
- if ( this[ segmentName ] ) {
2442
- return;
2443
- }
2444
- // fall back to item of first element
2445
- var firstItemSize = this.getFirstItemSize();
2446
- this[ segmentName ] = firstItemSize && firstItemSize[ outerSize ] ||
2447
- // or size of container
2448
- this.enviratope.size[ 'inner' + size ];
2449
- };
2450
-
2451
- proto.getFirstItemSize = function() {
2452
- var firstItem = this.enviratope.filteredItems[0];
2453
- return firstItem && firstItem.element && getSize( firstItem.element );
2454
- };
2455
-
2456
- // ----- methods that should reference enviratope ----- //
2457
-
2458
- proto.layout = function() {
2459
- this.enviratope.layout.apply( this.enviratope, arguments );
2460
- };
2461
-
2462
- proto.getSize = function() {
2463
- this.enviratope.getSize();
2464
- this.size = this.enviratope.size;
2465
- };
2466
-
2467
- // -------------------------- create -------------------------- //
2468
-
2469
- LayoutMode.modes = {};
2470
-
2471
- LayoutMode.create = function( namespace, options ) {
2472
-
2473
- function Mode() {
2474
- LayoutMode.apply( this, arguments );
2475
- }
2476
-
2477
- Mode.prototype = Object.create( proto );
2478
- Mode.prototype.constructor = Mode;
2479
-
2480
- // default options
2481
- if ( options ) {
2482
- Mode.options = options;
2483
- }
2484
-
2485
- Mode.prototype.namespace = namespace;
2486
- // register in Enviratope
2487
- LayoutMode.modes[ namespace ] = Mode;
2488
-
2489
- return Mode;
2490
- };
2491
-
2492
- return LayoutMode;
2493
-
2494
- }));
2495
-
2496
- /*!
2497
- * Masonry v4.1.0
2498
- * Cascading grid layout library
2499
- * http://masonry.desandro.com
2500
- * MIT License
2501
- * by David DeSandro
2502
- */
2503
-
2504
- ( function( window, factory ) {
2505
- // universal module definition
2506
- /* jshint strict: false */ /*globals define, module, require */
2507
- if ( typeof define == 'function' && define.amd ) {
2508
- // AMD
2509
- define( 'masonry/masonry',[
2510
- 'outlayer/outlayer',
2511
- 'get-size/get-size'
2512
- ],
2513
- factory );
2514
- } else if ( typeof module == 'object' && module.exports ) {
2515
- // CommonJS
2516
- module.exports = factory(
2517
- require('outlayer'),
2518
- require('get-size')
2519
- );
2520
- } else {
2521
- // browser global
2522
- window.Masonry = factory(
2523
- window.Outlayer,
2524
- window.getSize
2525
- );
2526
- }
2527
-
2528
- }( window, function factory( Outlayer, getSize ) {
2529
-
2530
-
2531
-
2532
- // -------------------------- masonryDefinition -------------------------- //
2533
-
2534
- // create an Outlayer layout class
2535
- var Masonry = Outlayer.create('masonry');
2536
- // isFitWidth -> fitWidth
2537
- Masonry.compatOptions.fitWidth = 'isFitWidth';
2538
-
2539
- Masonry.prototype._resetLayout = function() {
2540
- this.getSize();
2541
- this._getMeasurement( 'columnWidth', 'outerWidth' );
2542
- this._getMeasurement( 'gutter', 'outerWidth' );
2543
- this.measureColumns();
2544
-
2545
- // reset column Y
2546
- this.colYs = [];
2547
- for ( var i=0; i < this.cols; i++ ) {
2548
- this.colYs.push( 0 );
2549
- }
2550
-
2551
- this.maxY = 0;
2552
- };
2553
-
2554
- Masonry.prototype.measureColumns = function() {
2555
- this.getContainerWidth();
2556
- // if columnWidth is 0, default to outerWidth of first item
2557
- if ( !this.columnWidth ) {
2558
- var firstItem = this.items[0];
2559
- var firstItemElem = firstItem && firstItem.element;
2560
- // columnWidth fall back to item of first element
2561
- this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||
2562
- // if first elem has no width, default to size of container
2563
- this.containerWidth;
2564
- }
2565
-
2566
- var columnWidth = this.columnWidth += this.gutter;
2567
-
2568
- // calculate columns
2569
- var containerWidth = this.containerWidth + this.gutter;
2570
- var cols = containerWidth / columnWidth;
2571
- // fix rounding errors, typically with gutters
2572
- var excess = columnWidth - containerWidth % columnWidth;
2573
- // if overshoot is less than a pixel, round up, otherwise floor it
2574
- var mathMethod = excess && excess < 1 ? 'round' : 'floor';
2575
- cols = Math[ mathMethod ]( cols );
2576
- this.cols = Math.max( cols, 1 );
2577
- };
2578
-
2579
- Masonry.prototype.getContainerWidth = function() {
2580
- // container is parent if fit width
2581
- var isFitWidth = this._getOption('fitWidth');
2582
- var container = isFitWidth ? this.element.parentNode : this.element;
2583
- // check that this.size and size are there
2584
- // IE8 triggers resize on body size change, so they might not be
2585
- var size = getSize( container );
2586
- this.containerWidth = size && size.innerWidth;
2587
- };
2588
-
2589
- Masonry.prototype._getItemLayoutPosition = function( item ) {
2590
- item.getSize();
2591
- // how many columns does this brick span
2592
- var remainder = item.size.outerWidth % this.columnWidth;
2593
- var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';
2594
- // round if off by 1 pixel, otherwise use ceil
2595
- var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );
2596
- colSpan = Math.min( colSpan, this.cols );
2597
-
2598
- var colGroup = this._getColGroup( colSpan );
2599
- // get the minimum Y value from the columns
2600
- var minimumY = Math.min.apply( Math, colGroup );
2601
- var shortColIndex = colGroup.indexOf( minimumY );
2602
-
2603
- // position the brick
2604
- var position = {
2605
- x: this.columnWidth * shortColIndex,
2606
- y: minimumY
2607
- };
2608
-
2609
- // apply setHeight to necessary columns
2610
- var setHeight = minimumY + item.size.outerHeight;
2611
- var setSpan = this.cols + 1 - colGroup.length;
2612
- for ( var i = 0; i < setSpan; i++ ) {
2613
- this.colYs[ shortColIndex + i ] = setHeight;
2614
- }
2615
-
2616
- return position;
2617
- };
2618
-
2619
- /**
2620
- * @param {Number} colSpan - number of columns the element spans
2621
- * @returns {Array} colGroup
2622
- */
2623
- Masonry.prototype._getColGroup = function( colSpan ) {
2624
- if ( colSpan < 2 ) {
2625
- // if brick spans only one column, use all the column Ys
2626
- return this.colYs;
2627
- }
2628
-
2629
- var colGroup = [];
2630
- // how many different places could this brick fit horizontally
2631
- var groupCount = this.cols + 1 - colSpan;
2632
- // for each group potential horizontal position
2633
- for ( var i = 0; i < groupCount; i++ ) {
2634
- // make an array of colY values for that one group
2635
- var groupColYs = this.colYs.slice( i, i + colSpan );
2636
- // and get the max value of the array
2637
- colGroup[i] = Math.max.apply( Math, groupColYs );
2638
- }
2639
- return colGroup;
2640
- };
2641
-
2642
- Masonry.prototype._manageStamp = function( stamp ) {
2643
- var stampSize = getSize( stamp );
2644
- var offset = this._getElementOffset( stamp );
2645
- // get the columns that this stamp affects
2646
- var isOriginLeft = this._getOption('originLeft');
2647
- var firstX = isOriginLeft ? offset.left : offset.right;
2648
- var lastX = firstX + stampSize.outerWidth;
2649
- var firstCol = Math.floor( firstX / this.columnWidth );
2650
- firstCol = Math.max( 0, firstCol );
2651
- var lastCol = Math.floor( lastX / this.columnWidth );
2652
- // lastCol should not go over if multiple of columnWidth #425
2653
- lastCol -= lastX % this.columnWidth ? 0 : 1;
2654
- lastCol = Math.min( this.cols - 1, lastCol );
2655
- // set colYs to bottom of the stamp
2656
-
2657
- var isOriginTop = this._getOption('originTop');
2658
- var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +
2659
- stampSize.outerHeight;
2660
- for ( var i = firstCol; i <= lastCol; i++ ) {
2661
- this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );
2662
- }
2663
- };
2664
-
2665
- Masonry.prototype._getContainerSize = function() {
2666
- this.maxY = Math.max.apply( Math, this.colYs );
2667
- var size = {
2668
- height: this.maxY
2669
- };
2670
-
2671
- if ( this._getOption('fitWidth') ) {
2672
- size.width = this._getContainerFitWidth();
2673
- }
2674
-
2675
- return size;
2676
- };
2677
-
2678
- Masonry.prototype._getContainerFitWidth = function() {
2679
- var unusedCols = 0;
2680
- // count unused columns
2681
- var i = this.cols;
2682
- while ( --i ) {
2683
- if ( this.colYs[i] !== 0 ) {
2684
- break;
2685
- }
2686
- unusedCols++;
2687
- }
2688
- // fit container to columns that have been used
2689
- return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;
2690
- };
2691
-
2692
- Masonry.prototype.needsResizeLayout = function() {
2693
- var previousWidth = this.containerWidth;
2694
- this.getContainerWidth();
2695
- return previousWidth != this.containerWidth;
2696
- };
2697
-
2698
- return Masonry;
2699
-
2700
- }));
2701
-
2702
- /*!
2703
- * Masonry layout mode
2704
- * sub-classes Masonry
2705
- * http://masonry.desandro.com
2706
- */
2707
-
2708
- ( function( window, factory ) {
2709
- // universal module definition
2710
- /* jshint strict: false */ /*globals define, module, require */
2711
- if ( typeof define == 'function' && define.amd ) {
2712
- // AMD
2713
- define( 'enviratope/layout-modes/masonry',[
2714
- '../layout-mode',
2715
- 'masonry/masonry'
2716
- ],
2717
- factory );
2718
- } else if ( typeof module == 'object' && module.exports ) {
2719
- // CommonJS
2720
- module.exports = factory(
2721
- require('../layout-mode'),
2722
- require('masonry-layout')
2723
- );
2724
- } else {
2725
- // browser global
2726
- factory(
2727
- window.Enviratope.LayoutMode,
2728
- window.Masonry
2729
- );
2730
- }
2731
-
2732
- }( window, function factory( LayoutMode, Masonry ) {
2733
- 'use strict';
2734
-
2735
- // -------------------------- masonryDefinition -------------------------- //
2736
-
2737
- // create an Outlayer layout class
2738
- var MasonryMode = LayoutMode.create('masonry');
2739
-
2740
- var proto = MasonryMode.prototype;
2741
-
2742
- var keepModeMethods = {
2743
- _getElementOffset: true,
2744
- layout: true,
2745
- _getMeasurement: true
2746
- };
2747
-
2748
- // inherit Masonry prototype
2749
- for ( var method in Masonry.prototype ) {
2750
- // do not inherit mode methods
2751
- if ( !keepModeMethods[ method ] ) {
2752
- proto[ method ] = Masonry.prototype[ method ];
2753
- }
2754
- }
2755
-
2756
- var measureColumns = proto.measureColumns;
2757
- proto.measureColumns = function() {
2758
- // set items, used if measuring first item
2759
- this.items = this.enviratope.filteredItems;
2760
- measureColumns.call( this );
2761
- };
2762
-
2763
- // point to mode options for fitWidth
2764
- var _getOption = proto._getOption;
2765
- proto._getOption = function( option ) {
2766
- if ( option == 'fitWidth' ) {
2767
- return this.options.isFitWidth !== undefined ?
2768
- this.options.isFitWidth : this.options.fitWidth;
2769
- }
2770
- return _getOption.apply( this.enviratope, arguments );
2771
- };
2772
-
2773
- return MasonryMode;
2774
-
2775
- }));
2776
-
2777
- /**
2778
- * fitRows layout mode
2779
- */
2780
-
2781
- ( function( window, factory ) {
2782
- // universal module definition
2783
- /* jshint strict: false */ /*globals define, module, require */
2784
- if ( typeof define == 'function' && define.amd ) {
2785
- // AMD
2786
- define( 'enviratope/layout-modes/fit-rows',[
2787
- '../layout-mode'
2788
- ],
2789
- factory );
2790
- } else if ( typeof exports == 'object' ) {
2791
- // CommonJS
2792
- module.exports = factory(
2793
- require('../layout-mode')
2794
- );
2795
- } else {
2796
- // browser global
2797
- factory(
2798
- window.Enviratope.LayoutMode
2799
- );
2800
- }
2801
-
2802
- }( window, function factory( LayoutMode ) {
2803
- 'use strict';
2804
-
2805
- var FitRows = LayoutMode.create('fitRows');
2806
-
2807
- var proto = FitRows.prototype;
2808
-
2809
- proto._resetLayout = function() {
2810
- this.x = 0;
2811
- this.y = 0;
2812
- this.maxY = 0;
2813
- this._getMeasurement( 'gutter', 'outerWidth' );
2814
- };
2815
-
2816
- proto._getItemLayoutPosition = function( item ) {
2817
- item.getSize();
2818
-
2819
- var itemWidth = item.size.outerWidth + this.gutter;
2820
- // if this element cannot fit in the current row
2821
- var containerWidth = this.enviratope.size.innerWidth + this.gutter;
2822
- if ( this.x !== 0 && itemWidth + this.x > containerWidth ) {
2823
- this.x = 0;
2824
- this.y = this.maxY;
2825
- }
2826
-
2827
- var position = {
2828
- x: this.x,
2829
- y: this.y
2830
- };
2831
-
2832
- this.maxY = Math.max( this.maxY, this.y + item.size.outerHeight );
2833
- this.x += itemWidth;
2834
-
2835
- return position;
2836
- };
2837
-
2838
- proto._getContainerSize = function() {
2839
- return { height: this.maxY };
2840
- };
2841
-
2842
- return FitRows;
2843
-
2844
- }));
2845
-
2846
- /**
2847
- * vertical layout mode
2848
- */
2849
-
2850
- ( function( window, factory ) {
2851
- // universal module definition
2852
- /* jshint strict: false */ /*globals define, module, require */
2853
- if ( typeof define == 'function' && define.amd ) {
2854
- // AMD
2855
- define( 'enviratope/layout-modes/vertical',[
2856
- '../layout-mode'
2857
- ],
2858
- factory );
2859
- } else if ( typeof module == 'object' && module.exports ) {
2860
- // CommonJS
2861
- module.exports = factory(
2862
- require('../layout-mode')
2863
- );
2864
- } else {
2865
- // browser global
2866
- factory(
2867
- window.Enviratope.LayoutMode
2868
- );
2869
- }
2870
-
2871
- }( window, function factory( LayoutMode ) {
2872
- 'use strict';
2873
-
2874
- var Vertical = LayoutMode.create( 'vertical', {
2875
- horizontalAlignment: 0
2876
- });
2877
-
2878
- var proto = Vertical.prototype;
2879
-
2880
- proto._resetLayout = function() {
2881
- this.y = 0;
2882
- };
2883
-
2884
- proto._getItemLayoutPosition = function( item ) {
2885
- item.getSize();
2886
- var x = ( this.enviratope.size.innerWidth - item.size.outerWidth ) *
2887
- this.options.horizontalAlignment;
2888
- var y = this.y;
2889
- this.y += item.size.outerHeight;
2890
- return { x: x, y: y };
2891
- };
2892
-
2893
- proto._getContainerSize = function() {
2894
- return { height: this.y };
2895
- };
2896
-
2897
- return Vertical;
2898
-
2899
- }));
2900
-
2901
- /*!
2902
- * Enviratope v3.0.0
2903
- *
2904
- * Licensed GPLv3 for open source use
2905
- * or Enviratope Commercial License for commercial use
2906
- *
2907
- * http://enviratope.metafizzy.co
2908
- * Copyright 2016 Metafizzy
2909
- */
2910
-
2911
- ( function( window, factory ) {
2912
- // universal module definition
2913
- /* jshint strict: false */ /*globals define, module, require */
2914
- if ( typeof define == 'function' && define.amd ) {
2915
- // AMD
2916
- define( [
2917
- 'outlayer/outlayer',
2918
- 'get-size/get-size',
2919
- 'desandro-matches-selector/matches-selector',
2920
- 'fizzy-ui-utils/utils',
2921
- './item',
2922
- './layout-mode',
2923
- // include default layout modes
2924
- './layout-modes/masonry',
2925
- './layout-modes/fit-rows',
2926
- './layout-modes/vertical'
2927
- ],
2928
- function( Outlayer, getSize, matchesSelector, utils, Item, LayoutMode ) {
2929
- return factory( window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode );
2930
- });
2931
- } else if ( typeof module == 'object' && module.exports ) {
2932
- // CommonJS
2933
- module.exports = factory(
2934
- window,
2935
- require('outlayer'),
2936
- require('get-size'),
2937
- require('desandro-matches-selector'),
2938
- require('fizzy-ui-utils'),
2939
- require('./item'),
2940
- require('./layout-mode'),
2941
- // include default layout modes
2942
- require('./layout-modes/masonry'),
2943
- require('./layout-modes/fit-rows'),
2944
- require('./layout-modes/vertical')
2945
- );
2946
- } else {
2947
- // browser global
2948
- window.Enviratope = factory(
2949
- window,
2950
- window.Outlayer,
2951
- window.getSize,
2952
- window.matchesSelector,
2953
- window.fizzyUIUtils,
2954
- window.Enviratope.Item,
2955
- window.Enviratope.LayoutMode
2956
- );
2957
- }
2958
-
2959
- }( window, function factory( window, Outlayer, getSize, matchesSelector, utils,
2960
- Item, LayoutMode ) {
2961
-
2962
-
2963
-
2964
- // -------------------------- vars -------------------------- //
2965
-
2966
- var jQuery = window.jQuery;
2967
-
2968
- // -------------------------- helpers -------------------------- //
2969
-
2970
- var trim = String.prototype.trim ?
2971
- function( str ) {
2972
- return str.trim();
2973
- } :
2974
- function( str ) {
2975
- return str.replace( /^\s+|\s+$/g, '' );
2976
- };
2977
-
2978
- // -------------------------- enviratopeDefinition -------------------------- //
2979
-
2980
- // create an Outlayer layout class
2981
- var Enviratope = Outlayer.create( 'enviratope', {
2982
- layoutMode: 'masonry',
2983
- isJQueryFiltering: true,
2984
- sortAscending: true
2985
- });
2986
-
2987
- Enviratope.Item = Item;
2988
- Enviratope.LayoutMode = LayoutMode;
2989
-
2990
- var proto = Enviratope.prototype;
2991
-
2992
- proto._create = function() {
2993
- this.itemGUID = 0;
2994
- // functions that sort items
2995
- this._sorters = {};
2996
- this._getSorters();
2997
- // call super
2998
- Outlayer.prototype._create.call( this );
2999
-
3000
- // create layout modes
3001
- this.modes = {};
3002
- // start filteredItems with all items
3003
- this.filteredItems = this.items;
3004
- // keep of track of sortBys
3005
- this.sortHistory = [ 'original-order' ];
3006
- // create from registered layout modes
3007
- for ( var name in LayoutMode.modes ) {
3008
- this._initLayoutMode( name );
3009
- }
3010
- };
3011
-
3012
- proto.reloadItems = function() {
3013
- // reset item ID counter
3014
- this.itemGUID = 0;
3015
- // call super
3016
- Outlayer.prototype.reloadItems.call( this );
3017
- };
3018
-
3019
- proto._itemize = function() {
3020
- var items = Outlayer.prototype._itemize.apply( this, arguments );
3021
- // assign ID for original-order
3022
- for ( var i=0; i < items.length; i++ ) {
3023
- var item = items[i];
3024
- item.id = this.itemGUID++;
3025
- }
3026
- this._updateItemsSortData( items );
3027
- return items;
3028
- };
3029
-
3030
-
3031
- // -------------------------- layout -------------------------- //
3032
-
3033
- proto._initLayoutMode = function( name ) {
3034
- var Mode = LayoutMode.modes[ name ];
3035
- // set mode options
3036
- // HACK extend initial options, back-fill in default options
3037
- var initialOpts = this.options[ name ] || {};
3038
- this.options[ name ] = Mode.options ?
3039
- utils.extend( Mode.options, initialOpts ) : initialOpts;
3040
- // init layout mode instance
3041
- this.modes[ name ] = new Mode( this );
3042
- };
3043
-
3044
-
3045
- proto.layout = function() {
3046
- // if first time doing layout, do all magic
3047
- if ( !this._isLayoutInited && this._getOption('initLayout') ) {
3048
- this.arrange();
3049
- return;
3050
- }
3051
- this._layout();
3052
- };
3053
-
3054
- // private method to be used in layout() & magic()
3055
- proto._layout = function() {
3056
- // don't animate first layout
3057
- var isInstant = this._getIsInstant();
3058
- // layout flow
3059
- this._resetLayout();
3060
- this._manageStamps();
3061
- this.layoutItems( this.filteredItems, isInstant );
3062
-
3063
- // flag for initalized
3064
- this._isLayoutInited = true;
3065
- };
3066
-
3067
- // filter + sort + layout
3068
- proto.arrange = function( opts ) {
3069
- // set any options pass
3070
- this.option( opts );
3071
- this._getIsInstant();
3072
- // filter, sort, and layout
3073
-
3074
- // filter
3075
- var filtered = this._filter( this.items );
3076
- this.filteredItems = filtered.matches;
3077
-
3078
- this._bindArrangeComplete();
3079
-
3080
- if ( this._isInstant ) {
3081
- this._noTransition( this._hideReveal, [ filtered ] );
3082
- } else {
3083
- this._hideReveal( filtered );
3084
- }
3085
-
3086
- this._sort();
3087
- this._layout();
3088
- };
3089
- // alias to _init for main plugin method
3090
- proto._init = proto.arrange;
3091
-
3092
- proto._hideReveal = function( filtered ) {
3093
- this.reveal( filtered.needReveal );
3094
- this.hide( filtered.needHide );
3095
- };
3096
-
3097
- // HACK
3098
- // Don't animate/transition first layout
3099
- // Or don't animate/transition other layouts
3100
- proto._getIsInstant = function() {
3101
- var isLayoutInstant = this._getOption('layoutInstant');
3102
- var isInstant = isLayoutInstant !== undefined ? isLayoutInstant :
3103
- !this._isLayoutInited;
3104
- this._isInstant = isInstant;
3105
- return isInstant;
3106
- };
3107
-
3108
- // listen for layoutComplete, hideComplete and revealComplete
3109
- // to trigger arrangeComplete
3110
- proto._bindArrangeComplete = function() {
3111
- // listen for 3 events to trigger arrangeComplete
3112
- var isLayoutComplete, isHideComplete, isRevealComplete;
3113
- var _this = this;
3114
- function arrangeParallelCallback() {
3115
- if ( isLayoutComplete && isHideComplete && isRevealComplete ) {
3116
- _this.dispatchEvent( 'arrangeComplete', null, [ _this.filteredItems ] );
3117
- }
3118
- }
3119
- this.once( 'layoutComplete', function() {
3120
- isLayoutComplete = true;
3121
- arrangeParallelCallback();
3122
- });
3123
- this.once( 'hideComplete', function() {
3124
- isHideComplete = true;
3125
- arrangeParallelCallback();
3126
- });
3127
- this.once( 'revealComplete', function() {
3128
- isRevealComplete = true;
3129
- arrangeParallelCallback();
3130
- });
3131
- };
3132
-
3133
- // -------------------------- filter -------------------------- //
3134
-
3135
- proto._filter = function( items ) {
3136
- var filter = this.options.filter;
3137
- filter = filter || '*';
3138
- var matches = [];
3139
- var hiddenMatched = [];
3140
- var visibleUnmatched = [];
3141
-
3142
- var test = this._getFilterTest( filter );
3143
-
3144
- // test each item
3145
- for ( var i=0; i < items.length; i++ ) {
3146
- var item = items[i];
3147
- if ( item.isIgnored ) {
3148
- continue;
3149
- }
3150
- // add item to either matched or unmatched group
3151
- var isMatched = test( item );
3152
- // item.isFilterMatched = isMatched;
3153
- // add to matches if its a match
3154
- if ( isMatched ) {
3155
- matches.push( item );
3156
- }
3157
- // add to additional group if item needs to be hidden or revealed
3158
- if ( isMatched && item.isHidden ) {
3159
- hiddenMatched.push( item );
3160
- } else if ( !isMatched && !item.isHidden ) {
3161
- visibleUnmatched.push( item );
3162
- }
3163
- }
3164
-
3165
- // return collections of items to be manipulated
3166
- return {
3167
- matches: matches,
3168
- needReveal: hiddenMatched,
3169
- needHide: visibleUnmatched
3170
- };
3171
- };
3172
-
3173
- // get a jQuery, function, or a matchesSelector test given the filter
3174
- proto._getFilterTest = function( filter ) {
3175
- if ( jQuery && this.options.isJQueryFiltering ) {
3176
- // use jQuery
3177
- return function( item ) {
3178
- return jQuery( item.element ).is( filter );
3179
- };
3180
- }
3181
- if ( typeof filter == 'function' ) {
3182
- // use filter as function
3183
- return function( item ) {
3184
- return filter( item.element );
3185
- };
3186
- }
3187
- // default, use filter as selector string
3188
- return function( item ) {
3189
- return matchesSelector( item.element, filter );
3190
- };
3191
- };
3192
-
3193
- // -------------------------- sorting -------------------------- //
3194
-
3195
- /**
3196
- * @params {Array} elems
3197
- * @public
3198
- */
3199
- proto.updateSortData = function( elems ) {
3200
- // get items
3201
- var items;
3202
- if ( elems ) {
3203
- elems = utils.makeArray( elems );
3204
- items = this.getItems( elems );
3205
- } else {
3206
- // update all items if no elems provided
3207
- items = this.items;
3208
- }
3209
-
3210
- this._getSorters();
3211
- this._updateItemsSortData( items );
3212
- };
3213
-
3214
- proto._getSorters = function() {
3215
- var getSortData = this.options.getSortData;
3216
- for ( var key in getSortData ) {
3217
- var sorter = getSortData[ key ];
3218
- this._sorters[ key ] = mungeSorter( sorter );
3219
- }
3220
- };
3221
-
3222
- /**
3223
- * @params {Array} items - of Enviratope.Items
3224
- * @private
3225
- */
3226
- proto._updateItemsSortData = function( items ) {
3227
- // do not update if no items
3228
- var len = items && items.length;
3229
-
3230
- for ( var i=0; len && i < len; i++ ) {
3231
- var item = items[i];
3232
- item.updateSortData();
3233
- }
3234
- };
3235
-
3236
- // ----- munge sorter ----- //
3237
-
3238
- // encapsulate this, as we just need mungeSorter
3239
- // other functions in here are just for munging
3240
- var mungeSorter = ( function() {
3241
- // add a magic layer to sorters for convienent shorthands
3242
- // `.foo-bar` will use the text of .foo-bar querySelector
3243
- // `[foo-bar]` will use attribute
3244
- // you can also add parser
3245
- // `.foo-bar parseInt` will parse that as a number
3246
- function mungeSorter( sorter ) {
3247
- // if not a string, return function or whatever it is
3248
- if ( typeof sorter != 'string' ) {
3249
- return sorter;
3250
- }
3251
- // parse the sorter string
3252
- var args = trim( sorter ).split(' ');
3253
- var query = args[0];
3254
- // check if query looks like [an-attribute]
3255
- var attrMatch = query.match( /^\[(.+)\]$/ );
3256
- var attr = attrMatch && attrMatch[1];
3257
- var getValue = getValueGetter( attr, query );
3258
- // use second argument as a parser
3259
- var parser = Enviratope.sortDataParsers[ args[1] ];
3260
- // parse the value, if there was a parser
3261
- sorter = parser ? function( elem ) {
3262
- return elem && parser( getValue( elem ) );
3263
- } :
3264
- // otherwise just return value
3265
- function( elem ) {
3266
- return elem && getValue( elem );
3267
- };
3268
-
3269
- return sorter;
3270
- }
3271
-
3272
- // get an attribute getter, or get text of the querySelector
3273
- function getValueGetter( attr, query ) {
3274
- // if query looks like [foo-bar], get attribute
3275
- if ( attr ) {
3276
- return function getAttribute( elem ) {
3277
- return elem.getAttribute( attr );
3278
- };
3279
- }
3280
-
3281
- // otherwise, assume its a querySelector, and get its text
3282
- return function getChildText( elem ) {
3283
- var child = elem.querySelector( query );
3284
- return child && child.textContent;
3285
- };
3286
- }
3287
-
3288
- return mungeSorter;
3289
- })();
3290
-
3291
- // parsers used in getSortData shortcut strings
3292
- Enviratope.sortDataParsers = {
3293
- 'parseInt': function( val ) {
3294
- return parseInt( val, 10 );
3295
- },
3296
- 'parseFloat': function( val ) {
3297
- return parseFloat( val );
3298
- }
3299
- };
3300
-
3301
- // ----- sort method ----- //
3302
-
3303
- // sort filteredItem order
3304
- proto._sort = function() {
3305
- var sortByOpt = this.options.sortBy;
3306
- if ( !sortByOpt ) {
3307
- return;
3308
- }
3309
- // concat all sortBy and sortHistory
3310
- var sortBys = [].concat.apply( sortByOpt, this.sortHistory );
3311
- // sort magic
3312
- var itemSorter = getItemSorter( sortBys, this.options.sortAscending );
3313
- this.filteredItems.sort( itemSorter );
3314
- // keep track of sortBy History
3315
- if ( sortByOpt != this.sortHistory[0] ) {
3316
- // add to front, oldest goes in last
3317
- this.sortHistory.unshift( sortByOpt );
3318
- }
3319
- };
3320
-
3321
- // returns a function used for sorting
3322
- function getItemSorter( sortBys, sortAsc ) {
3323
- return function sorter( itemA, itemB ) {
3324
- // cycle through all sortKeys
3325
- for ( var i = 0; i < sortBys.length; i++ ) {
3326
- var sortBy = sortBys[i];
3327
- var a = itemA.sortData[ sortBy ];
3328
- var b = itemB.sortData[ sortBy ];
3329
- if ( a > b || a < b ) {
3330
- // if sortAsc is an object, use the value given the sortBy key
3331
- var isAscending = sortAsc[ sortBy ] !== undefined ? sortAsc[ sortBy ] : sortAsc;
3332
- var direction = isAscending ? 1 : -1;
3333
- return ( a > b ? 1 : -1 ) * direction;
3334
- }
3335
- }
3336
- return 0;
3337
- };
3338
- }
3339
-
3340
- // -------------------------- methods -------------------------- //
3341
-
3342
- // get layout mode
3343
- proto._mode = function() {
3344
- var layoutMode = this.options.layoutMode;
3345
- var mode = this.modes[ layoutMode ];
3346
- if ( !mode ) {
3347
- // TODO console.error
3348
- throw new Error( 'No layout mode: ' + layoutMode );
3349
- }
3350
- // HACK sync mode's options
3351
- // any options set after init for layout mode need to be synced
3352
- mode.options = this.options[ layoutMode ];
3353
- return mode;
3354
- };
3355
-
3356
- proto._resetLayout = function() {
3357
- // trigger original reset layout
3358
- Outlayer.prototype._resetLayout.call( this );
3359
- this._mode()._resetLayout();
3360
- };
3361
-
3362
- proto._getItemLayoutPosition = function( item ) {
3363
- return this._mode()._getItemLayoutPosition( item );
3364
- };
3365
-
3366
- proto._manageStamp = function( stamp ) {
3367
- this._mode()._manageStamp( stamp );
3368
- };
3369
-
3370
- proto._getContainerSize = function() {
3371
- return this._mode()._getContainerSize();
3372
- };
3373
-
3374
- proto.needsResizeLayout = function() {
3375
- return this._mode().needsResizeLayout();
3376
- };
3377
-
3378
- // -------------------------- adding & removing -------------------------- //
3379
-
3380
- // HEADS UP overwrites default Outlayer appended
3381
- proto.appended = function( elems ) {
3382
- var items = this.addItems( elems );
3383
- if ( !items.length ) {
3384
- return;
3385
- }
3386
- // filter, layout, reveal new items
3387
- var filteredItems = this._filterRevealAdded( items );
3388
- // add to filteredItems
3389
- this.filteredItems = this.filteredItems.concat( filteredItems );
3390
- };
3391
-
3392
- // HEADS UP overwrites default Outlayer prepended
3393
- proto.prepended = function( elems ) {
3394
- var items = this._itemize( elems );
3395
- if ( !items.length ) {
3396
- return;
3397
- }
3398
- // start new layout
3399
- this._resetLayout();
3400
- this._manageStamps();
3401
- // filter, layout, reveal new items
3402
- var filteredItems = this._filterRevealAdded( items );
3403
- // layout previous items
3404
- this.layoutItems( this.filteredItems );
3405
- // add to items and filteredItems
3406
- this.filteredItems = filteredItems.concat( this.filteredItems );
3407
- this.items = items.concat( this.items );
3408
- };
3409
-
3410
- proto._filterRevealAdded = function( items ) {
3411
- var filtered = this._filter( items );
3412
- this.hide( filtered.needHide );
3413
- // reveal all new items
3414
- this.reveal( filtered.matches );
3415
- // layout new items, no transition
3416
- this.layoutItems( filtered.matches, true );
3417
- return filtered.matches;
3418
- };
3419
-
3420
- /**
3421
- * Filter, sort, and layout newly-appended item elements
3422
- * @param {Array or NodeList or Element} elems
3423
- */
3424
- proto.insert = function( elems ) {
3425
- var items = this.addItems( elems );
3426
- if ( !items.length ) {
3427
- return;
3428
- }
3429
- // append item elements
3430
- var i, item;
3431
- var len = items.length;
3432
- for ( i=0; i < len; i++ ) {
3433
- item = items[i];
3434
- this.element.appendChild( item.element );
3435
- }
3436
- // filter new stuff
3437
- var filteredInsertItems = this._filter( items ).matches;
3438
- // set flag
3439
- for ( i=0; i < len; i++ ) {
3440
- items[i].isLayoutInstant = true;
3441
- }
3442
- this.arrange();
3443
- // reset flag
3444
- for ( i=0; i < len; i++ ) {
3445
- delete items[i].isLayoutInstant;
3446
- }
3447
- this.reveal( filteredInsertItems );
3448
- };
3449
-
3450
- var _remove = proto.remove;
3451
- proto.remove = function( elems ) {
3452
- elems = utils.makeArray( elems );
3453
- var removeItems = this.getItems( elems );
3454
- // do regular thing
3455
- _remove.call( this, elems );
3456
- // bail if no items to remove
3457
- var len = removeItems && removeItems.length;
3458
- // remove elems from filteredItems
3459
- for ( var i=0; len && i < len; i++ ) {
3460
- var item = removeItems[i];
3461
- // remove item from collection
3462
- utils.removeFrom( this.filteredItems, item );
3463
- }
3464
- };
3465
-
3466
- proto.shuffle = function() {
3467
- // update random sortData
3468
- for ( var i=0; i < this.items.length; i++ ) {
3469
- var item = this.items[i];
3470
- item.sortData.random = Math.random();
3471
- }
3472
- this.options.sortBy = 'random';
3473
- this._sort();
3474
- this._layout();
3475
- };
3476
-
3477
- /**
3478
- * trigger fn without transition
3479
- * kind of hacky to have this in the first place
3480
- * @param {Function} fn
3481
- * @param {Array} args
3482
- * @returns ret
3483
- * @private
3484
- */
3485
- proto._noTransition = function( fn, args ) {
3486
- // save transitionDuration before disabling
3487
- var transitionDuration = this.options.transitionDuration;
3488
- // disable transition
3489
- this.options.transitionDuration = 0;
3490
- // do it
3491
- var returnValue = fn.apply( this, args );
3492
- // re-enable transition for reveal
3493
- this.options.transitionDuration = transitionDuration;
3494
- return returnValue;
3495
- };
3496
-
3497
- // ----- helper methods ----- //
3498
-
3499
- /**
3500
- * getter method for getting filtered item elements
3501
- * @returns {Array} elems - collection of item elements
3502
- */
3503
- proto.getFilteredItemElements = function() {
3504
- return this.filteredItems.map( function( item ) {
3505
- return item.element;
3506
- });
3507
- };
3508
-
3509
- // ----- ----- //
3510
-
3511
- return Enviratope;
3512
-
3513
- }));
1
+ /*!
2
+ * Enviratope PACKAGED v3.0.0
3
+ *
4
+ * Licensed GPLv3 for open source use
5
+ * or Enviratope Commercial License for commercial use
6
+ *
7
+ * http://enviratope.metafizzy.co
8
+ * Copyright 2016 Metafizzy
9
+ */
10
+
11
+ /**
12
+ * Bridget makes jQuery widgets
13
+ * v2.0.0
14
+ * MIT license
15
+ */
16
+
17
+ /* jshint browser: true, strict: true, undef: true, unused: true */
18
+
19
+ (function (window, factory) {
20
+ 'use strict';
21
+ /* globals define: false, module: false, require: false */
22
+
23
+ if (typeof define == 'function' && define.amd) {
24
+ // AMD
25
+ define('jquery-bridget/jquery-bridget', ['jquery'], function (jQuery) {
26
+ factory(window, jQuery);
27
+ });
28
+ } else if (typeof module == 'object' && module.exports) {
29
+ // CommonJS
30
+ module.exports = factory(window, require('jquery'));
31
+ } else {
32
+ // browser global
33
+ window.jQueryBridget = factory(window, window.jQuery);
34
+ }
35
+ })(window, function factory(window, jQuery) {
36
+ 'use strict';
37
+
38
+ // ----- utils ----- //
39
+
40
+ var arraySlice = Array.prototype.slice;
41
+
42
+ // helper function for logging errors
43
+ // $.error breaks jQuery chaining
44
+ var console = window.console;
45
+ var logError =
46
+ typeof console == 'undefined'
47
+ ? function () {}
48
+ : function (message) {
49
+ console.error(message);
50
+ };
51
+
52
+ // ----- jQueryBridget ----- //
53
+
54
+ function jQueryBridget(namespace, PluginClass, $) {
55
+ $ = $ || jQuery || window.jQuery;
56
+ if (!$) {
57
+ return;
58
+ }
59
+
60
+ // add option method -> $().plugin('option', {...})
61
+ if (!PluginClass.prototype.option) {
62
+ // option setter
63
+ PluginClass.prototype.option = function (opts) {
64
+ // bail out if not an object
65
+ if (!$.isPlainObject(opts)) {
66
+ return;
67
+ }
68
+ this.options = $.extend(true, this.options, opts);
69
+ };
70
+ }
71
+
72
+ // make jQuery plugin
73
+ $.fn[namespace] = function (arg0 /*, arg1 */) {
74
+ if (typeof arg0 == 'string') {
75
+ // method call $().plugin( 'methodName', { options } )
76
+ // shift arguments by 1
77
+ var args = arraySlice.call(arguments, 1);
78
+ return methodCall(this, arg0, args);
79
+ }
80
+ // just $().plugin({ options })
81
+ plainCall(this, arg0);
82
+ return this;
83
+ };
84
+
85
+ // $().plugin('methodName')
86
+ function methodCall($elems, methodName, args) {
87
+ var returnValue;
88
+ var pluginMethodStr = '$().' + namespace + '("' + methodName + '")';
89
+
90
+ $elems.each(function (i, elem) {
91
+ // get instance
92
+ var instance = $.data(elem, namespace);
93
+ if (!instance) {
94
+ logError(
95
+ namespace +
96
+ ' not initialized. Cannot call methods, i.e. ' +
97
+ pluginMethodStr,
98
+ );
99
+ return;
100
+ }
101
+
102
+ var method = instance[methodName];
103
+ if (!method || methodName.charAt(0) == '_') {
104
+ logError(pluginMethodStr + ' is not a valid method');
105
+ return;
106
+ }
107
+
108
+ // apply method, get return value
109
+ var value = method.apply(instance, args);
110
+ // set return value if value is returned, use only first value
111
+ returnValue = returnValue === undefined ? value : returnValue;
112
+ });
113
+
114
+ return returnValue !== undefined ? returnValue : $elems;
115
+ }
116
+
117
+ function plainCall($elems, options) {
118
+ $elems.each(function (i, elem) {
119
+ var instance = $.data(elem, namespace);
120
+ if (instance) {
121
+ // set options & init
122
+ instance.option(options);
123
+ instance._init();
124
+ } else {
125
+ // initialize new instance
126
+ instance = new PluginClass(elem, options);
127
+ $.data(elem, namespace, instance);
128
+ }
129
+ });
130
+ }
131
+
132
+ updateJQuery($);
133
+ }
134
+
135
+ // ----- updateJQuery ----- //
136
+
137
+ // set $.bridget for v1 backwards compatibility
138
+ function updateJQuery($) {
139
+ if (!$ || ($ && $.bridget)) {
140
+ return;
141
+ }
142
+ $.bridget = jQueryBridget;
143
+ }
144
+
145
+ updateJQuery(jQuery || window.jQuery);
146
+
147
+ // ----- ----- //
148
+
149
+ return jQueryBridget;
150
+ });
151
+
152
+ /**
153
+ * EvEmitter v1.0.2
154
+ * Lil' event emitter
155
+ * MIT License
156
+ */
157
+
158
+ /* jshint unused: true, undef: true, strict: true */
159
+
160
+ (function (global, factory) {
161
+ // universal module definition
162
+ /* jshint strict: false */ /* globals define, module */
163
+ if (typeof define == 'function' && define.amd) {
164
+ // AMD - RequireJS
165
+ define('ev-emitter/ev-emitter', factory);
166
+ } else if (typeof module == 'object' && module.exports) {
167
+ // CommonJS - Browserify, Webpack
168
+ module.exports = factory();
169
+ } else {
170
+ // Browser globals
171
+ global.EvEmitter = factory();
172
+ }
173
+ })(this, function () {
174
+ function EvEmitter() {}
175
+
176
+ var proto = EvEmitter.prototype;
177
+
178
+ proto.on = function (eventName, listener) {
179
+ if (!eventName || !listener) {
180
+ return;
181
+ }
182
+ // set events hash
183
+ var events = (this._events = this._events || {});
184
+ // set listeners array
185
+ var listeners = (events[eventName] = events[eventName] || []);
186
+ // only add once
187
+ if (listeners.indexOf(listener) == -1) {
188
+ listeners.push(listener);
189
+ }
190
+
191
+ return this;
192
+ };
193
+
194
+ proto.once = function (eventName, listener) {
195
+ if (!eventName || !listener) {
196
+ return;
197
+ }
198
+ // add event
199
+ this.on(eventName, listener);
200
+ // set once flag
201
+ // set onceEvents hash
202
+ var onceEvents = (this._onceEvents = this._onceEvents || {});
203
+ // set onceListeners object
204
+ var onceListeners = (onceEvents[eventName] =
205
+ onceEvents[eventName] || {});
206
+ // set flag
207
+ onceListeners[listener] = true;
208
+
209
+ return this;
210
+ };
211
+
212
+ proto.off = function (eventName, listener) {
213
+ var listeners = this._events && this._events[eventName];
214
+ if (!listeners || !listeners.length) {
215
+ return;
216
+ }
217
+ var index = listeners.indexOf(listener);
218
+ if (index != -1) {
219
+ listeners.splice(index, 1);
220
+ }
221
+
222
+ return this;
223
+ };
224
+
225
+ proto.emitEvent = function (eventName, args) {
226
+ var listeners = this._events && this._events[eventName];
227
+ if (!listeners || !listeners.length) {
228
+ return;
229
+ }
230
+ var i = 0;
231
+ var listener = listeners[i];
232
+ args = args || [];
233
+ // once stuff
234
+ var onceListeners = this._onceEvents && this._onceEvents[eventName];
235
+
236
+ while (listener) {
237
+ var isOnce = onceListeners && onceListeners[listener];
238
+ if (isOnce) {
239
+ // remove listener
240
+ // remove before trigger to prevent recursion
241
+ this.off(eventName, listener);
242
+ // unset once flag
243
+ delete onceListeners[listener];
244
+ }
245
+ // trigger listener
246
+ listener.apply(this, args);
247
+ // get next listener
248
+ i += isOnce ? 0 : 1;
249
+ listener = listeners[i];
250
+ }
251
+
252
+ return this;
253
+ };
254
+
255
+ return EvEmitter;
256
+ });
257
+
258
+ /*!
259
+ * getSize v2.0.2
260
+ * measure size of elements
261
+ * MIT license
262
+ */
263
+
264
+ /*jshint browser: true, strict: true, undef: true, unused: true */
265
+ /*global define: false, module: false, console: false */
266
+
267
+ (function (window, factory) {
268
+ 'use strict';
269
+
270
+ if (typeof define == 'function' && define.amd) {
271
+ // AMD
272
+ define('get-size/get-size', [], function () {
273
+ return factory();
274
+ });
275
+ } else if (typeof module == 'object' && module.exports) {
276
+ // CommonJS
277
+ module.exports = factory();
278
+ } else {
279
+ // browser global
280
+ window.getSize = factory();
281
+ }
282
+ })(window, function factory() {
283
+ 'use strict';
284
+
285
+ // -------------------------- helpers -------------------------- //
286
+
287
+ // get a number from a string, not a percentage
288
+ function getStyleSize(value) {
289
+ var num = parseFloat(value);
290
+ // not a percent like '100%', and a number
291
+ var isValid = value.indexOf('%') == -1 && !isNaN(num);
292
+ return isValid && num;
293
+ }
294
+
295
+ function noop() {}
296
+
297
+ var logError =
298
+ typeof console == 'undefined'
299
+ ? noop
300
+ : function (message) {
301
+ console.error(message);
302
+ };
303
+
304
+ // -------------------------- measurements -------------------------- //
305
+
306
+ var measurements = [
307
+ 'paddingLeft',
308
+ 'paddingRight',
309
+ 'paddingTop',
310
+ 'paddingBottom',
311
+ 'marginLeft',
312
+ 'marginRight',
313
+ 'marginTop',
314
+ 'marginBottom',
315
+ 'borderLeftWidth',
316
+ 'borderRightWidth',
317
+ 'borderTopWidth',
318
+ 'borderBottomWidth',
319
+ ];
320
+
321
+ var measurementsLength = measurements.length;
322
+
323
+ function getZeroSize() {
324
+ var size = {
325
+ width: 0,
326
+ height: 0,
327
+ innerWidth: 0,
328
+ innerHeight: 0,
329
+ outerWidth: 0,
330
+ outerHeight: 0,
331
+ };
332
+ for (var i = 0; i < measurementsLength; i++) {
333
+ var measurement = measurements[i];
334
+ size[measurement] = 0;
335
+ }
336
+ return size;
337
+ }
338
+
339
+ // -------------------------- getStyle -------------------------- //
340
+
341
+ /**
342
+ * getStyle, get style of element, check for Firefox bug
343
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=548397
344
+ */
345
+ function getStyle(elem) {
346
+ var style = getComputedStyle(elem);
347
+ if (!style) {
348
+ logError(
349
+ 'Style returned ' +
350
+ style +
351
+ '. Are you running this code in a hidden iframe on Firefox? ' +
352
+ 'See http://bit.ly/getsizebug1',
353
+ );
354
+ }
355
+ return style;
356
+ }
357
+
358
+ // -------------------------- setup -------------------------- //
359
+
360
+ var isSetup = false;
361
+
362
+ var isBoxSizeOuter;
363
+
364
+ /**
365
+ * setup
366
+ * check isBoxSizerOuter
367
+ * do on first getSize() rather than on page load for Firefox bug
368
+ */
369
+ function setup() {
370
+ // setup once
371
+ if (isSetup) {
372
+ return;
373
+ }
374
+ isSetup = true;
375
+
376
+ // -------------------------- box sizing -------------------------- //
377
+
378
+ /**
379
+ * WebKit measures the outer-width on style.width on border-box elems
380
+ * IE & Firefox<29 measures the inner-width
381
+ */
382
+ var div = document.createElement('div');
383
+ div.style.width = '200px';
384
+ div.style.padding = '1px 2px 3px 4px';
385
+ div.style.borderStyle = 'solid';
386
+ div.style.borderWidth = '1px 2px 3px 4px';
387
+ div.style.boxSizing = 'border-box';
388
+
389
+ var body = document.body || document.documentElement;
390
+ body.appendChild(div);
391
+ var style = getStyle(div);
392
+
393
+ getSize.isBoxSizeOuter = isBoxSizeOuter =
394
+ getStyleSize(style.width) == 200;
395
+ body.removeChild(div);
396
+ }
397
+
398
+ // -------------------------- getSize -------------------------- //
399
+
400
+ function getSize(elem) {
401
+ setup();
402
+
403
+ // use querySeletor if elem is string
404
+ if (typeof elem == 'string') {
405
+ elem = document.querySelector(elem);
406
+ }
407
+
408
+ // do not proceed on non-objects
409
+ if (!elem || typeof elem != 'object' || !elem.nodeType) {
410
+ return;
411
+ }
412
+
413
+ var style = getStyle(elem);
414
+
415
+ // if hidden, everything is 0
416
+ if (style.display == 'none') {
417
+ return getZeroSize();
418
+ }
419
+
420
+ var size = {};
421
+ size.width = elem.offsetWidth;
422
+ size.height = elem.offsetHeight;
423
+
424
+ var isBorderBox = (size.isBorderBox = style.boxSizing == 'border-box');
425
+
426
+ // get all measurements
427
+ for (var i = 0; i < measurementsLength; i++) {
428
+ var measurement = measurements[i];
429
+ var value = style[measurement];
430
+ var num = parseFloat(value);
431
+ // any 'auto', 'medium' value will be 0
432
+ size[measurement] = !isNaN(num) ? num : 0;
433
+ }
434
+
435
+ var paddingWidth = size.paddingLeft + size.paddingRight;
436
+ var paddingHeight = size.paddingTop + size.paddingBottom;
437
+ var marginWidth = size.marginLeft + size.marginRight;
438
+ var marginHeight = size.marginTop + size.marginBottom;
439
+ var borderWidth = size.borderLeftWidth + size.borderRightWidth;
440
+ var borderHeight = size.borderTopWidth + size.borderBottomWidth;
441
+
442
+ var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
443
+
444
+ // overwrite width and height if we can get it from style
445
+ var styleWidth = getStyleSize(style.width);
446
+ if (styleWidth !== false) {
447
+ size.width =
448
+ styleWidth +
449
+ // add padding and border unless it's already including it
450
+ (isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);
451
+ }
452
+
453
+ var styleHeight = getStyleSize(style.height);
454
+ if (styleHeight !== false) {
455
+ size.height =
456
+ styleHeight +
457
+ // add padding and border unless it's already including it
458
+ (isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);
459
+ }
460
+
461
+ size.innerWidth = size.width - (paddingWidth + borderWidth);
462
+ size.innerHeight = size.height - (paddingHeight + borderHeight);
463
+
464
+ size.outerWidth = size.width + marginWidth;
465
+ size.outerHeight = size.height + marginHeight;
466
+
467
+ return size;
468
+ }
469
+
470
+ return getSize;
471
+ });
472
+
473
+ /**
474
+ * matchesSelector v2.0.1
475
+ * matchesSelector( element, '.selector' )
476
+ * MIT license
477
+ */
478
+
479
+ /*jshint browser: true, strict: true, undef: true, unused: true */
480
+
481
+ (function (window, factory) {
482
+ /*global define: false, module: false */
483
+ 'use strict';
484
+ // universal module definition
485
+ if (typeof define == 'function' && define.amd) {
486
+ // AMD
487
+ define('desandro-matches-selector/matches-selector', factory);
488
+ } else if (typeof module == 'object' && module.exports) {
489
+ // CommonJS
490
+ module.exports = factory();
491
+ } else {
492
+ // browser global
493
+ window.matchesSelector = factory();
494
+ }
495
+ })(window, function factory() {
496
+ 'use strict';
497
+
498
+ var matchesMethod = (function () {
499
+ var ElemProto = Element.prototype;
500
+ // check for the standard method name first
501
+ if (ElemProto.matches) {
502
+ return 'matches';
503
+ }
504
+ // check un-prefixed
505
+ if (ElemProto.matchesSelector) {
506
+ return 'matchesSelector';
507
+ }
508
+ // check vendor prefixes
509
+ var prefixes = ['webkit', 'moz', 'ms', 'o'];
510
+
511
+ for (var i = 0; i < prefixes.length; i++) {
512
+ var prefix = prefixes[i];
513
+ var method = prefix + 'MatchesSelector';
514
+ if (ElemProto[method]) {
515
+ return method;
516
+ }
517
+ }
518
+ })();
519
+
520
+ return function matchesSelector(elem, selector) {
521
+ return elem[matchesMethod](selector);
522
+ };
523
+ });
524
+
525
+ /**
526
+ * Fizzy UI utils v2.0.1
527
+ * MIT license
528
+ */
529
+
530
+ /*jshint browser: true, undef: true, unused: true, strict: true */
531
+
532
+ (function (window, factory) {
533
+ // universal module definition
534
+ /*jshint strict: false */ /*globals define, module, require */
535
+
536
+ if (typeof define == 'function' && define.amd) {
537
+ // AMD
538
+ define('fizzy-ui-utils/utils', [
539
+ 'desandro-matches-selector/matches-selector',
540
+ ], function (matchesSelector) {
541
+ return factory(window, matchesSelector);
542
+ });
543
+ } else if (typeof module == 'object' && module.exports) {
544
+ // CommonJS
545
+ module.exports = factory(window, require('desandro-matches-selector'));
546
+ } else {
547
+ // browser global
548
+ window.fizzyUIUtils = factory(window, window.matchesSelector);
549
+ }
550
+ })(window, function factory(window, matchesSelector) {
551
+ var utils = {};
552
+
553
+ // ----- extend ----- //
554
+
555
+ // extends objects
556
+ utils.extend = function (a, b) {
557
+ for (var prop in b) {
558
+ a[prop] = b[prop];
559
+ }
560
+ return a;
561
+ };
562
+
563
+ // ----- modulo ----- //
564
+
565
+ utils.modulo = function (num, div) {
566
+ return ((num % div) + div) % div;
567
+ };
568
+
569
+ // ----- makeArray ----- //
570
+
571
+ // turn element or nodeList into an array
572
+ utils.makeArray = function (obj) {
573
+ var ary = [];
574
+ if (Array.isArray(obj)) {
575
+ // use object if already an array
576
+ ary = obj;
577
+ } else if (obj && typeof obj.length == 'number') {
578
+ // convert nodeList to array
579
+ for (var i = 0; i < obj.length; i++) {
580
+ ary.push(obj[i]);
581
+ }
582
+ } else {
583
+ // array of single index
584
+ ary.push(obj);
585
+ }
586
+ return ary;
587
+ };
588
+
589
+ // ----- removeFrom ----- //
590
+
591
+ utils.removeFrom = function (ary, obj) {
592
+ var index = ary.indexOf(obj);
593
+ if (index != -1) {
594
+ ary.splice(index, 1);
595
+ }
596
+ };
597
+
598
+ // ----- getParent ----- //
599
+
600
+ utils.getParent = function (elem, selector) {
601
+ while (elem != document.body) {
602
+ elem = elem.parentNode;
603
+ if (matchesSelector(elem, selector)) {
604
+ return elem;
605
+ }
606
+ }
607
+ };
608
+
609
+ // ----- getQueryElement ----- //
610
+
611
+ // use element as selector string
612
+ utils.getQueryElement = function (elem) {
613
+ if (typeof elem == 'string') {
614
+ return document.querySelector(elem);
615
+ }
616
+ return elem;
617
+ };
618
+
619
+ // ----- handleEvent ----- //
620
+
621
+ // enable .ontype to trigger from .addEventListener( elem, 'type' )
622
+ utils.handleEvent = function (event) {
623
+ var method = 'on' + event.type;
624
+ if (this[method]) {
625
+ this[method](event);
626
+ }
627
+ };
628
+
629
+ // ----- filterFindElements ----- //
630
+
631
+ utils.filterFindElements = function (elems, selector) {
632
+ // make array of elems
633
+ elems = utils.makeArray(elems);
634
+ var ffElems = [];
635
+
636
+ elems.forEach(function (elem) {
637
+ // check that elem is an actual element
638
+ if (!(elem instanceof HTMLElement)) {
639
+ return;
640
+ }
641
+ // add elem if no selector
642
+ if (!selector) {
643
+ ffElems.push(elem);
644
+ return;
645
+ }
646
+ // filter & find items if we have a selector
647
+ // filter
648
+ if (matchesSelector(elem, selector)) {
649
+ ffElems.push(elem);
650
+ }
651
+ // find children
652
+ var childElems = elem.querySelectorAll(selector);
653
+ // concat childElems to filterFound array
654
+ for (var i = 0; i < childElems.length; i++) {
655
+ ffElems.push(childElems[i]);
656
+ }
657
+ });
658
+
659
+ return ffElems;
660
+ };
661
+
662
+ // ----- debounceMethod ----- //
663
+
664
+ utils.debounceMethod = function (_class, methodName, threshold) {
665
+ // original method
666
+ var method = _class.prototype[methodName];
667
+ var timeoutName = methodName + 'Timeout';
668
+
669
+ _class.prototype[methodName] = function () {
670
+ var timeout = this[timeoutName];
671
+ if (timeout) {
672
+ clearTimeout(timeout);
673
+ }
674
+ var args = arguments;
675
+
676
+ var _this = this;
677
+ this[timeoutName] = setTimeout(function () {
678
+ method.apply(_this, args);
679
+ delete _this[timeoutName];
680
+ }, threshold || 100);
681
+ };
682
+ };
683
+
684
+ // ----- docReady ----- //
685
+
686
+ utils.docReady = function (callback) {
687
+ if (document.readyState == 'complete') {
688
+ callback();
689
+ } else {
690
+ document.addEventListener('DOMContentLoaded', callback);
691
+ }
692
+ };
693
+
694
+ // ----- htmlInit ----- //
695
+
696
+ // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
697
+ utils.toDashed = function (str) {
698
+ return str
699
+ .replace(/(.)([A-Z])/g, function (match, $1, $2) {
700
+ return $1 + '-' + $2;
701
+ })
702
+ .toLowerCase();
703
+ };
704
+
705
+ var console = window.console;
706
+ /**
707
+ * allow user to initialize classes via [data-namespace] or .js-namespace class
708
+ * htmlInit( Widget, 'widgetName' )
709
+ * options are parsed from data-namespace-options
710
+ */
711
+ utils.htmlInit = function (WidgetClass, namespace) {
712
+ utils.docReady(function () {
713
+ var dashedNamespace = utils.toDashed(namespace);
714
+ var dataAttr = 'data-' + dashedNamespace;
715
+ var dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');
716
+ var jsDashElems = document.querySelectorAll(
717
+ '.js-' + dashedNamespace,
718
+ );
719
+ var elems = utils
720
+ .makeArray(dataAttrElems)
721
+ .concat(utils.makeArray(jsDashElems));
722
+ var dataOptionsAttr = dataAttr + '-options';
723
+ var jQuery = window.jQuery;
724
+
725
+ elems.forEach(function (elem) {
726
+ var attr =
727
+ elem.getAttribute(dataAttr) ||
728
+ elem.getAttribute(dataOptionsAttr);
729
+ var options;
730
+ try {
731
+ options = attr && JSON.parse(attr);
732
+ } catch (error) {
733
+ // log error, do not initialize
734
+ if (console) {
735
+ console.error(
736
+ 'Error parsing ' +
737
+ dataAttr +
738
+ ' on ' +
739
+ elem.className +
740
+ ': ' +
741
+ error,
742
+ );
743
+ }
744
+ return;
745
+ }
746
+ // initialize
747
+ var instance = new WidgetClass(elem, options);
748
+ // make available via $().data('layoutname')
749
+ if (jQuery) {
750
+ jQuery.data(elem, namespace, instance);
751
+ }
752
+ });
753
+ });
754
+ };
755
+
756
+ // ----- ----- //
757
+
758
+ return utils;
759
+ });
760
+
761
+ /**
762
+ * Outlayer Item
763
+ */
764
+
765
+ (function (window, factory) {
766
+ // universal module definition
767
+ /* jshint strict: false */ /* globals define, module, require */
768
+ if (typeof define == 'function' && define.amd) {
769
+ // AMD - RequireJS
770
+ define('outlayer/enviratope-item', [
771
+ 'ev-emitter/ev-emitter',
772
+ 'get-size/get-size',
773
+ ], factory);
774
+ } else if (typeof module == 'object' && module.exports) {
775
+ // CommonJS - Browserify, Webpack
776
+ module.exports = factory(require('ev-emitter'), require('get-size'));
777
+ } else {
778
+ // browser global
779
+ window.Outlayer = {};
780
+ window.Outlayer.Item = factory(window.EvEmitter, window.getSize);
781
+ }
782
+ })(window, function factory(EvEmitter, getSize) {
783
+ 'use strict';
784
+
785
+ // ----- helpers ----- //
786
+
787
+ function isEmptyObj(obj) {
788
+ for (var prop in obj) {
789
+ return false;
790
+ }
791
+ prop = null;
792
+ return true;
793
+ }
794
+
795
+ // -------------------------- CSS3 support -------------------------- //
796
+
797
+ var docElemStyle = document.documentElement.style;
798
+
799
+ var transitionProperty =
800
+ typeof docElemStyle.transition == 'string'
801
+ ? 'transition'
802
+ : 'WebkitTransition';
803
+ var transformProperty =
804
+ typeof docElemStyle.transform == 'string'
805
+ ? 'transform'
806
+ : 'WebkitTransform';
807
+
808
+ var transitionEndEvent = {
809
+ WebkitTransition: 'webkitTransitionEnd',
810
+ transition: 'transitionend',
811
+ }[transitionProperty];
812
+
813
+ // cache all vendor properties that could have vendor prefix
814
+ var vendorProperties = {
815
+ transform: transformProperty,
816
+ transition: transitionProperty,
817
+ transitionDuration: transitionProperty + 'Duration',
818
+ transitionProperty: transitionProperty + 'Property',
819
+ transitionDelay: transitionProperty + 'Delay',
820
+ };
821
+
822
+ // -------------------------- Item -------------------------- //
823
+
824
+ function Item(element, layout) {
825
+ if (!element) {
826
+ return;
827
+ }
828
+
829
+ this.element = element;
830
+ // parent layout class, i.e. Masonry, Enviratope, or Packery
831
+ this.layout = layout;
832
+ this.position = {
833
+ x: 0,
834
+ y: 0,
835
+ };
836
+
837
+ this._create();
838
+ }
839
+
840
+ // inherit EvEmitter
841
+ var proto = (Item.prototype = Object.create(EvEmitter.prototype));
842
+ proto.constructor = Item;
843
+
844
+ proto._create = function () {
845
+ // transition objects
846
+ this._transn = {
847
+ ingProperties: {},
848
+ clean: {},
849
+ onEnd: {},
850
+ };
851
+
852
+ this.css({
853
+ position: 'absolute',
854
+ });
855
+ };
856
+
857
+ // trigger specified handler for event type
858
+ proto.handleEvent = function (event) {
859
+ var method = 'on' + event.type;
860
+ if (this[method]) {
861
+ this[method](event);
862
+ }
863
+ };
864
+
865
+ proto.getSize = function () {
866
+ this.size = getSize(this.element);
867
+ };
868
+
869
+ /**
870
+ * apply CSS styles to element
871
+ * @param {Object} style
872
+ */
873
+ proto.css = function (style) {
874
+ var elemStyle = this.element.style;
875
+
876
+ for (var prop in style) {
877
+ // use vendor property if available
878
+ var supportedProp = vendorProperties[prop] || prop;
879
+ elemStyle[supportedProp] = style[prop];
880
+ }
881
+ };
882
+
883
+ // measure position, and sets it
884
+ proto.getPosition = function () {
885
+ var style = getComputedStyle(this.element);
886
+ var isOriginLeft = this.layout._getOption('originLeft');
887
+ var isOriginTop = this.layout._getOption('originTop');
888
+ var xValue = style[isOriginLeft ? 'left' : 'right'];
889
+ var yValue = style[isOriginTop ? 'top' : 'bottom'];
890
+ // convert percent to pixels
891
+ var layoutSize = this.layout.size;
892
+ var x =
893
+ xValue.indexOf('%') != -1
894
+ ? (parseFloat(xValue) / 100) * layoutSize.width
895
+ : parseInt(xValue, 10);
896
+ var y =
897
+ yValue.indexOf('%') != -1
898
+ ? (parseFloat(yValue) / 100) * layoutSize.height
899
+ : parseInt(yValue, 10);
900
+
901
+ // clean up 'auto' or other non-integer values
902
+ x = isNaN(x) ? 0 : x;
903
+ y = isNaN(y) ? 0 : y;
904
+ // remove padding from measurement
905
+ x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
906
+ y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
907
+
908
+ this.position.x = x;
909
+ this.position.y = y;
910
+ };
911
+
912
+ // set settled position, apply padding
913
+ proto.layoutPosition = function () {
914
+ var layoutSize = this.layout.size;
915
+ var style = {};
916
+ var isOriginLeft = this.layout._getOption('originLeft');
917
+ var isOriginTop = this.layout._getOption('originTop');
918
+
919
+ // x
920
+ var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';
921
+ var xProperty = isOriginLeft ? 'left' : 'right';
922
+ var xResetProperty = isOriginLeft ? 'right' : 'left';
923
+
924
+ var x = this.position.x + layoutSize[xPadding];
925
+ // set in percentage or pixels
926
+ style[xProperty] = this.getXValue(x);
927
+ // reset other property
928
+ style[xResetProperty] = '';
929
+
930
+ // y
931
+ var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';
932
+ var yProperty = isOriginTop ? 'top' : 'bottom';
933
+ var yResetProperty = isOriginTop ? 'bottom' : 'top';
934
+
935
+ var y = this.position.y + layoutSize[yPadding];
936
+ // set in percentage or pixels
937
+ style[yProperty] = this.getYValue(y);
938
+ // reset other property
939
+ style[yResetProperty] = '';
940
+
941
+ this.css(style);
942
+ this.emitEvent('layout', [this]);
943
+ };
944
+
945
+ proto.getXValue = function (x) {
946
+ var isHorizontal = this.layout._getOption('horizontal');
947
+ return this.layout.options.percentPosition && !isHorizontal
948
+ ? (x / this.layout.size.width) * 100 + '%'
949
+ : x + 'px';
950
+ };
951
+
952
+ proto.getYValue = function (y) {
953
+ var isHorizontal = this.layout._getOption('horizontal');
954
+ return this.layout.options.percentPosition && isHorizontal
955
+ ? (y / this.layout.size.height) * 100 + '%'
956
+ : y + 'px';
957
+ };
958
+
959
+ proto._transitionTo = function (x, y) {
960
+ this.getPosition();
961
+ // get current x & y from top/left
962
+ var curX = this.position.x;
963
+ var curY = this.position.y;
964
+
965
+ var compareX = parseInt(x, 10);
966
+ var compareY = parseInt(y, 10);
967
+ var didNotMove =
968
+ compareX === this.position.x && compareY === this.position.y;
969
+
970
+ // save end position
971
+ this.setPosition(x, y);
972
+
973
+ // if did not move and not transitioning, just go to layout
974
+ if (didNotMove && !this.isTransitioning) {
975
+ this.layoutPosition();
976
+ return;
977
+ }
978
+
979
+ var transX = x - curX;
980
+ var transY = y - curY;
981
+ var transitionStyle = {};
982
+ transitionStyle.transform = this.getTranslate(transX, transY);
983
+
984
+ this.transition({
985
+ to: transitionStyle,
986
+ onTransitionEnd: {
987
+ transform: this.layoutPosition,
988
+ },
989
+ isCleaning: true,
990
+ });
991
+ };
992
+
993
+ proto.getTranslate = function (x, y) {
994
+ // flip cooridinates if origin on right or bottom
995
+ var isOriginLeft = this.layout._getOption('originLeft');
996
+ var isOriginTop = this.layout._getOption('originTop');
997
+ x = isOriginLeft ? x : -x;
998
+ y = isOriginTop ? y : -y;
999
+ return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
1000
+ };
1001
+
1002
+ // non transition + transform support
1003
+ proto.goTo = function (x, y) {
1004
+ this.setPosition(x, y);
1005
+ this.layoutPosition();
1006
+ };
1007
+
1008
+ proto.moveTo = proto._transitionTo;
1009
+
1010
+ proto.setPosition = function (x, y) {
1011
+ this.position.x = parseInt(x, 10);
1012
+ this.position.y = parseInt(y, 10);
1013
+ };
1014
+
1015
+ // ----- transition ----- //
1016
+
1017
+ /**
1018
+ * @param {Object} style - CSS
1019
+ * @param {Function} onTransitionEnd
1020
+ */
1021
+
1022
+ // non transition, just trigger callback
1023
+ proto._nonTransition = function (args) {
1024
+ this.css(args.to);
1025
+ if (args.isCleaning) {
1026
+ this._removeStyles(args.to);
1027
+ }
1028
+ for (var prop in args.onTransitionEnd) {
1029
+ args.onTransitionEnd[prop].call(this);
1030
+ }
1031
+ };
1032
+
1033
+ /**
1034
+ * proper transition
1035
+ * @param {Object} args - arguments
1036
+ * @param {Object} to - style to transition to
1037
+ * @param {Object} from - style to start transition from
1038
+ * @param {Boolean} isCleaning - removes transition styles after transition
1039
+ * @param {Function} onTransitionEnd - callback
1040
+ */
1041
+ proto.transition = function (args) {
1042
+ // redirect to nonTransition if no transition duration
1043
+ if (!parseFloat(this.layout.options.transitionDuration)) {
1044
+ this._nonTransition(args);
1045
+ return;
1046
+ }
1047
+
1048
+ var _transition = this._transn;
1049
+ // keep track of onTransitionEnd callback by css property
1050
+ for (var prop in args.onTransitionEnd) {
1051
+ _transition.onEnd[prop] = args.onTransitionEnd[prop];
1052
+ }
1053
+ // keep track of properties that are transitioning
1054
+ for (prop in args.to) {
1055
+ _transition.ingProperties[prop] = true;
1056
+ // keep track of properties to clean up when transition is done
1057
+ if (args.isCleaning) {
1058
+ _transition.clean[prop] = true;
1059
+ }
1060
+ }
1061
+
1062
+ // set from styles
1063
+ if (args.from) {
1064
+ this.css(args.from);
1065
+ // force redraw. http://blog.alexmaccaw.com/css-transitions
1066
+ var h = this.element.offsetHeight;
1067
+ // hack for JSHint to hush about unused var
1068
+ h = null;
1069
+ }
1070
+ // enable transition
1071
+ this.enableTransition(args.to);
1072
+ // set styles that are transitioning
1073
+ this.css(args.to);
1074
+
1075
+ this.isTransitioning = true;
1076
+ };
1077
+
1078
+ // dash before all cap letters, including first for
1079
+ // WebkitTransform => -webkit-transform
1080
+ function toDashedAll(str) {
1081
+ return str.replace(/([A-Z])/g, function ($1) {
1082
+ return '-' + $1.toLowerCase();
1083
+ });
1084
+ }
1085
+
1086
+ var transitionProps = 'opacity,' + toDashedAll(transformProperty);
1087
+
1088
+ proto.enableTransition = function (/* style */) {
1089
+ // HACK changing transitionProperty during a transition
1090
+ // will cause transition to jump
1091
+ if (this.isTransitioning) {
1092
+ return;
1093
+ }
1094
+
1095
+ // make `transition: foo, bar, baz` from style object
1096
+ // HACK un-comment this when enableTransition can work
1097
+ // while a transition is happening
1098
+ // var transitionValues = [];
1099
+ // for ( var prop in style ) {
1100
+ // // dash-ify camelCased properties like WebkitTransition
1101
+ // prop = vendorProperties[ prop ] || prop;
1102
+ // transitionValues.push( toDashedAll( prop ) );
1103
+ // }
1104
+ // munge number to millisecond, to match stagger
1105
+ var duration = this.layout.options.transitionDuration;
1106
+ duration = typeof duration == 'number' ? duration + 'ms' : duration;
1107
+ // enable transition styles
1108
+ this.css({
1109
+ transitionProperty: transitionProps,
1110
+ transitionDuration: duration,
1111
+ transitionDelay: this.staggerDelay || 0,
1112
+ });
1113
+ // listen for transition end event
1114
+ this.element.addEventListener(transitionEndEvent, this, false);
1115
+ };
1116
+
1117
+ // ----- events ----- //
1118
+
1119
+ proto.onwebkitTransitionEnd = function (event) {
1120
+ this.ontransitionend(event);
1121
+ };
1122
+
1123
+ proto.onotransitionend = function (event) {
1124
+ this.ontransitionend(event);
1125
+ };
1126
+
1127
+ // properties that I munge to make my life easier
1128
+ var dashedVendorProperties = {
1129
+ '-webkit-transform': 'transform',
1130
+ };
1131
+
1132
+ proto.ontransitionend = function (event) {
1133
+ // disregard bubbled events from children
1134
+ if (event.target !== this.element) {
1135
+ return;
1136
+ }
1137
+ var _transition = this._transn;
1138
+ // get property name of transitioned property, convert to prefix-free
1139
+ var propertyName =
1140
+ dashedVendorProperties[event.propertyName] || event.propertyName;
1141
+
1142
+ // remove property that has completed transitioning
1143
+ delete _transition.ingProperties[propertyName];
1144
+ // check if any properties are still transitioning
1145
+ if (isEmptyObj(_transition.ingProperties)) {
1146
+ // all properties have completed transitioning
1147
+ this.disableTransition();
1148
+ }
1149
+ // clean style
1150
+ if (propertyName in _transition.clean) {
1151
+ // clean up style
1152
+ this.element.style[event.propertyName] = '';
1153
+ delete _transition.clean[propertyName];
1154
+ }
1155
+ // trigger onTransitionEnd callback
1156
+ if (propertyName in _transition.onEnd) {
1157
+ var onTransitionEnd = _transition.onEnd[propertyName];
1158
+ onTransitionEnd.call(this);
1159
+ delete _transition.onEnd[propertyName];
1160
+ }
1161
+
1162
+ this.emitEvent('transitionEnd', [this]);
1163
+ };
1164
+
1165
+ proto.disableTransition = function () {
1166
+ this.removeTransitionStyles();
1167
+ this.element.removeEventListener(transitionEndEvent, this, false);
1168
+ this.isTransitioning = false;
1169
+ };
1170
+
1171
+ /**
1172
+ * removes style property from element
1173
+ * @param {Object} style
1174
+ **/
1175
+ proto._removeStyles = function (style) {
1176
+ // clean up transition styles
1177
+ var cleanStyle = {};
1178
+ for (var prop in style) {
1179
+ cleanStyle[prop] = '';
1180
+ }
1181
+ this.css(cleanStyle);
1182
+ };
1183
+
1184
+ var cleanTransitionStyle = {
1185
+ transitionProperty: '',
1186
+ transitionDuration: '',
1187
+ transitionDelay: '',
1188
+ };
1189
+
1190
+ proto.removeTransitionStyles = function () {
1191
+ // remove transition
1192
+ this.css(cleanTransitionStyle);
1193
+ };
1194
+
1195
+ // ----- stagger ----- //
1196
+
1197
+ proto.stagger = function (delay) {
1198
+ delay = isNaN(delay) ? 0 : delay;
1199
+ this.staggerDelay = delay + 'ms';
1200
+ };
1201
+
1202
+ // ----- show/hide/remove ----- //
1203
+
1204
+ // remove element from DOM
1205
+ proto.removeElem = function () {
1206
+ this.element.parentNode.removeChild(this.element);
1207
+ // remove display: none
1208
+ this.css({ display: '' });
1209
+ this.emitEvent('remove', [this]);
1210
+ };
1211
+
1212
+ proto.remove = function () {
1213
+ // just remove element if no transition support or no transition
1214
+ if (
1215
+ !transitionProperty ||
1216
+ !parseFloat(this.layout.options.transitionDuration)
1217
+ ) {
1218
+ this.removeElem();
1219
+ return;
1220
+ }
1221
+
1222
+ // start transition
1223
+ this.once('transitionEnd', function () {
1224
+ this.removeElem();
1225
+ });
1226
+ this.hide();
1227
+ };
1228
+
1229
+ proto.reveal = function () {
1230
+ delete this.isHidden;
1231
+ // remove display: none
1232
+ this.css({ display: '' });
1233
+
1234
+ var options = this.layout.options;
1235
+
1236
+ var onTransitionEnd = {};
1237
+ var transitionEndProperty = this.getHideRevealTransitionEndProperty(
1238
+ 'visibleStyle',
1239
+ );
1240
+ onTransitionEnd[transitionEndProperty] = this.onRevealTransitionEnd;
1241
+
1242
+ this.transition({
1243
+ from: options.hiddenStyle,
1244
+ to: options.visibleStyle,
1245
+ isCleaning: true,
1246
+ onTransitionEnd: onTransitionEnd,
1247
+ });
1248
+ };
1249
+
1250
+ proto.onRevealTransitionEnd = function () {
1251
+ // check if still visible
1252
+ // during transition, item may have been hidden
1253
+ if (!this.isHidden) {
1254
+ this.emitEvent('reveal');
1255
+ }
1256
+ };
1257
+
1258
+ /**
1259
+ * get style property use for hide/reveal transition end
1260
+ * @param {String} styleProperty - hiddenStyle/visibleStyle
1261
+ * @returns {String}
1262
+ */
1263
+ proto.getHideRevealTransitionEndProperty = function (styleProperty) {
1264
+ var optionStyle = this.layout.options[styleProperty];
1265
+ // use opacity
1266
+ if (optionStyle.opacity) {
1267
+ return 'opacity';
1268
+ }
1269
+ // get first property
1270
+ for (var prop in optionStyle) {
1271
+ return prop;
1272
+ }
1273
+ };
1274
+
1275
+ proto.hide = function () {
1276
+ // set flag
1277
+ this.isHidden = true;
1278
+ // remove display: none
1279
+ this.css({ display: '' });
1280
+
1281
+ var options = this.layout.options;
1282
+
1283
+ var onTransitionEnd = {};
1284
+ var transitionEndProperty = this.getHideRevealTransitionEndProperty(
1285
+ 'hiddenStyle',
1286
+ );
1287
+ onTransitionEnd[transitionEndProperty] = this.onHideTransitionEnd;
1288
+
1289
+ this.transition({
1290
+ from: options.visibleStyle,
1291
+ to: options.hiddenStyle,
1292
+ // keep hidden stuff hidden
1293
+ isCleaning: true,
1294
+ onTransitionEnd: onTransitionEnd,
1295
+ });
1296
+ };
1297
+
1298
+ proto.onHideTransitionEnd = function () {
1299
+ // check if still hidden
1300
+ // during transition, item may have been un-hidden
1301
+ if (this.isHidden) {
1302
+ this.css({ display: 'none' });
1303
+ this.emitEvent('hide');
1304
+ }
1305
+ };
1306
+
1307
+ proto.destroy = function () {
1308
+ this.css({
1309
+ position: '',
1310
+ left: '',
1311
+ right: '',
1312
+ top: '',
1313
+ bottom: '',
1314
+ transition: '',
1315
+ transform: '',
1316
+ });
1317
+ };
1318
+
1319
+ return Item;
1320
+ });
1321
+
1322
+ /*!
1323
+ * Outlayer v2.1.0
1324
+ * the brains and guts of a layout library
1325
+ * MIT license
1326
+ */
1327
+
1328
+ (function (window, factory) {
1329
+ 'use strict' /* globals define, module, require */;
1330
+ // universal module definition
1331
+ /* jshint strict: false */ if (typeof define == 'function' && define.amd) {
1332
+ // AMD - RequireJS
1333
+ define('outlayer/outlayer', [
1334
+ 'ev-emitter/ev-emitter',
1335
+ 'get-size/get-size',
1336
+ 'fizzy-ui-utils/utils',
1337
+ './enviratope-item',
1338
+ ], function (EvEmitter, getSize, utils, Item) {
1339
+ return factory(window, EvEmitter, getSize, utils, Item);
1340
+ });
1341
+ } else if (typeof module == 'object' && module.exports) {
1342
+ // CommonJS - Browserify, Webpack
1343
+ module.exports = factory(
1344
+ window,
1345
+ require('ev-emitter'),
1346
+ require('get-size'),
1347
+ require('fizzy-ui-utils'),
1348
+ require('./enviratope-item.js'),
1349
+ );
1350
+ } else {
1351
+ // browser global
1352
+ window.Outlayer = factory(
1353
+ window,
1354
+ window.EvEmitter,
1355
+ window.getSize,
1356
+ window.fizzyUIUtils,
1357
+ window.Outlayer.Item,
1358
+ );
1359
+ }
1360
+ })(window, function factory(window, EvEmitter, getSize, utils, Item) {
1361
+ 'use strict';
1362
+
1363
+ // ----- vars ----- //
1364
+
1365
+ var console = window.console;
1366
+ var jQuery = window.jQuery;
1367
+ var noop = function () {};
1368
+
1369
+ // -------------------------- Outlayer -------------------------- //
1370
+
1371
+ // globally unique identifiers
1372
+ var GUID = 0;
1373
+ // internal store of all Outlayer intances
1374
+ var instances = {};
1375
+
1376
+ /**
1377
+ * @param {Element, String} element
1378
+ * @param {Object} options
1379
+ * @constructor
1380
+ */
1381
+ function Outlayer(element, options) {
1382
+ var queryElement = utils.getQueryElement(element);
1383
+ if (!queryElement) {
1384
+ if (console) {
1385
+ console.error(
1386
+ 'Bad element for ' +
1387
+ this.constructor.namespace +
1388
+ ': ' +
1389
+ (queryElement || element),
1390
+ );
1391
+ }
1392
+ return;
1393
+ }
1394
+ this.element = queryElement;
1395
+ // add jQuery
1396
+ if (jQuery) {
1397
+ this.$element = jQuery(this.element);
1398
+ }
1399
+
1400
+ // options
1401
+ this.options = utils.extend({}, this.constructor.defaults);
1402
+ this.option(options);
1403
+
1404
+ // add id for Outlayer.getFromElement
1405
+ var id = ++GUID;
1406
+ this.element.outlayerGUID = id; // expando
1407
+ instances[id] = this; // associate via id
1408
+
1409
+ // kick it off
1410
+ this._create();
1411
+
1412
+ var isInitLayout = this._getOption('initLayout');
1413
+ if (isInitLayout) {
1414
+ this.layout();
1415
+ }
1416
+ }
1417
+
1418
+ // settings are for internal use only
1419
+ Outlayer.namespace = 'outlayer';
1420
+ Outlayer.Item = Item;
1421
+
1422
+ // default options
1423
+ Outlayer.defaults = {
1424
+ containerStyle: {
1425
+ position: 'relative',
1426
+ },
1427
+ initLayout: true,
1428
+ originLeft: true,
1429
+ originTop: true,
1430
+ resize: true,
1431
+ resizeContainer: true,
1432
+ // item options
1433
+ transitionDuration: '0.4s',
1434
+ hiddenStyle: {
1435
+ opacity: 0,
1436
+ transform: 'scale(0.001)',
1437
+ },
1438
+ visibleStyle: {
1439
+ opacity: 1,
1440
+ transform: 'scale(1)',
1441
+ },
1442
+ };
1443
+
1444
+ var proto = Outlayer.prototype;
1445
+ // inherit EvEmitter
1446
+ utils.extend(proto, EvEmitter.prototype);
1447
+
1448
+ /**
1449
+ * set options
1450
+ * @param {Object} opts
1451
+ */
1452
+ proto.option = function (opts) {
1453
+ utils.extend(this.options, opts);
1454
+ };
1455
+
1456
+ /**
1457
+ * get backwards compatible option value, check old name
1458
+ */
1459
+ proto._getOption = function (option) {
1460
+ var oldOption = this.constructor.compatOptions[option];
1461
+ return oldOption && this.options[oldOption] !== undefined
1462
+ ? this.options[oldOption]
1463
+ : this.options[option];
1464
+ };
1465
+
1466
+ Outlayer.compatOptions = {
1467
+ // currentName: oldName
1468
+ initLayout: 'isInitLayout',
1469
+ horizontal: 'isHorizontal',
1470
+ layoutInstant: 'isLayoutInstant',
1471
+ originLeft: 'isOriginLeft',
1472
+ originTop: 'isOriginTop',
1473
+ resize: 'isResizeBound',
1474
+ resizeContainer: 'isResizingContainer',
1475
+ };
1476
+
1477
+ proto._create = function () {
1478
+ // get items from children
1479
+ this.reloadItems();
1480
+ // elements that affect layout, but are not laid out
1481
+ this.stamps = [];
1482
+ this.stamp(this.options.stamp);
1483
+ // set container style
1484
+ utils.extend(this.element.style, this.options.containerStyle);
1485
+
1486
+ // bind resize method
1487
+ var canBindResize = this._getOption('resize');
1488
+ if (canBindResize) {
1489
+ this.bindResize();
1490
+ }
1491
+ };
1492
+
1493
+ // goes through all children again and gets bricks in proper order
1494
+ proto.reloadItems = function () {
1495
+ // collection of item elements
1496
+ this.items = this._itemize(this.element.children);
1497
+ };
1498
+
1499
+ /**
1500
+ * turn elements into Outlayer.Items to be used in layout
1501
+ * @param {Array or NodeList or HTMLElement} elems
1502
+ * @returns {Array} items - collection of new Outlayer Items
1503
+ */
1504
+ proto._itemize = function (elems) {
1505
+ var itemElems = this._filterFindItemElements(elems);
1506
+ var Item = this.constructor.Item;
1507
+
1508
+ // create new Outlayer Items for collection
1509
+ var items = [];
1510
+ for (var i = 0; i < itemElems.length; i++) {
1511
+ var elem = itemElems[i];
1512
+ var item = new Item(elem, this);
1513
+ items.push(item);
1514
+ }
1515
+
1516
+ return items;
1517
+ };
1518
+
1519
+ /**
1520
+ * get item elements to be used in layout
1521
+ * @param {Array or NodeList or HTMLElement} elems
1522
+ * @returns {Array} items - item elements
1523
+ */
1524
+ proto._filterFindItemElements = function (elems) {
1525
+ return utils.filterFindElements(elems, this.options.itemSelector);
1526
+ };
1527
+
1528
+ /**
1529
+ * getter method for getting item elements
1530
+ * @returns {Array} elems - collection of item elements
1531
+ */
1532
+ proto.getItemElements = function () {
1533
+ return this.items.map(function (item) {
1534
+ return item.element;
1535
+ });
1536
+ };
1537
+
1538
+ // ----- init & layout ----- //
1539
+
1540
+ /**
1541
+ * lays out all items
1542
+ */
1543
+ proto.layout = function () {
1544
+ this._resetLayout();
1545
+ this._manageStamps();
1546
+
1547
+ // don't animate first layout
1548
+ var layoutInstant = this._getOption('layoutInstant');
1549
+ var isInstant =
1550
+ layoutInstant !== undefined ? layoutInstant : !this._isLayoutInited;
1551
+ this.layoutItems(this.items, isInstant);
1552
+
1553
+ // flag for initalized
1554
+ this._isLayoutInited = true;
1555
+ };
1556
+
1557
+ // _init is alias for layout
1558
+ proto._init = proto.layout;
1559
+
1560
+ /**
1561
+ * logic before any new layout
1562
+ */
1563
+ proto._resetLayout = function () {
1564
+ this.getSize();
1565
+ };
1566
+
1567
+ proto.getSize = function () {
1568
+ this.size = getSize(this.element);
1569
+ };
1570
+
1571
+ /**
1572
+ * get measurement from option, for columnWidth, rowHeight, gutter
1573
+ * if option is String -> get element from selector string, & get size of element
1574
+ * if option is Element -> get size of element
1575
+ * else use option as a number
1576
+ *
1577
+ * @param {String} measurement
1578
+ * @param {String} size - width or height
1579
+ * @private
1580
+ */
1581
+ proto._getMeasurement = function (measurement, size) {
1582
+ var option = this.options[measurement];
1583
+ var elem;
1584
+ if (!option) {
1585
+ // default to 0
1586
+ this[measurement] = 0;
1587
+ } else {
1588
+ // use option as an element
1589
+ if (typeof option == 'string') {
1590
+ elem = this.element.querySelector(option);
1591
+ } else if (option instanceof HTMLElement) {
1592
+ elem = option;
1593
+ }
1594
+ // use size of element, if element
1595
+ this[measurement] = elem ? getSize(elem)[size] : option;
1596
+ }
1597
+ };
1598
+
1599
+ /**
1600
+ * layout a collection of item elements
1601
+ * @api public
1602
+ */
1603
+ proto.layoutItems = function (items, isInstant) {
1604
+ items = this._getItemsForLayout(items);
1605
+
1606
+ this._layoutItems(items, isInstant);
1607
+
1608
+ this._postLayout();
1609
+ };
1610
+
1611
+ /**
1612
+ * get the items to be laid out
1613
+ * you may want to skip over some items
1614
+ * @param {Array} items
1615
+ * @returns {Array} items
1616
+ */
1617
+ proto._getItemsForLayout = function (items) {
1618
+ return items.filter(function (item) {
1619
+ return !item.isIgnored;
1620
+ });
1621
+ };
1622
+
1623
+ /**
1624
+ * layout items
1625
+ * @param {Array} items
1626
+ * @param {Boolean} isInstant
1627
+ */
1628
+ proto._layoutItems = function (items, isInstant) {
1629
+ this._emitCompleteOnItems('layout', items);
1630
+
1631
+ if (!items || !items.length) {
1632
+ // no items, emit event with empty array
1633
+ return;
1634
+ }
1635
+
1636
+ var queue = [];
1637
+
1638
+ items.forEach(function (item) {
1639
+ // get x/y object from method
1640
+ var position = this._getItemLayoutPosition(item);
1641
+ // enqueue
1642
+ position.item = item;
1643
+ position.isInstant = isInstant || item.isLayoutInstant;
1644
+ queue.push(position);
1645
+ }, this);
1646
+
1647
+ this._processLayoutQueue(queue);
1648
+ };
1649
+
1650
+ /**
1651
+ * get item layout position
1652
+ * @param {Outlayer.Item} item
1653
+ * @returns {Object} x and y position
1654
+ */
1655
+ proto._getItemLayoutPosition = function (/* item */) {
1656
+ return {
1657
+ x: 0,
1658
+ y: 0,
1659
+ };
1660
+ };
1661
+
1662
+ /**
1663
+ * iterate over array and position each item
1664
+ * Reason being - separating this logic prevents 'layout invalidation'
1665
+ * thx @paul_irish
1666
+ * @param {Array} queue
1667
+ */
1668
+ proto._processLayoutQueue = function (queue) {
1669
+ this.updateStagger();
1670
+ queue.forEach(function (obj, i) {
1671
+ this._positionItem(obj.item, obj.x, obj.y, obj.isInstant, i);
1672
+ }, this);
1673
+ };
1674
+
1675
+ // set stagger from option in milliseconds number
1676
+ proto.updateStagger = function () {
1677
+ var stagger = this.options.stagger;
1678
+ if (stagger === null || stagger === undefined) {
1679
+ this.stagger = 0;
1680
+ return;
1681
+ }
1682
+ this.stagger = getMilliseconds(stagger);
1683
+ return this.stagger;
1684
+ };
1685
+
1686
+ /**
1687
+ * Sets position of item in DOM
1688
+ * @param {Outlayer.Item} item
1689
+ * @param {Number} x - horizontal position
1690
+ * @param {Number} y - vertical position
1691
+ * @param {Boolean} isInstant - disables transitions
1692
+ */
1693
+ proto._positionItem = function (item, x, y, isInstant, i) {
1694
+ if (isInstant) {
1695
+ // if not transition, just set CSS
1696
+ item.goTo(x, y);
1697
+ } else {
1698
+ item.stagger(i * this.stagger);
1699
+ item.moveTo(x, y);
1700
+ }
1701
+ };
1702
+
1703
+ /**
1704
+ * Any logic you want to do after each layout,
1705
+ * i.e. size the container
1706
+ */
1707
+ proto._postLayout = function () {
1708
+ this.resizeContainer();
1709
+ };
1710
+
1711
+ proto.resizeContainer = function () {
1712
+ var isResizingContainer = this._getOption('resizeContainer');
1713
+ if (!isResizingContainer) {
1714
+ return;
1715
+ }
1716
+ var size = this._getContainerSize();
1717
+ if (size) {
1718
+ this._setContainerMeasure(size.width, true);
1719
+ this._setContainerMeasure(size.height, false);
1720
+ }
1721
+ };
1722
+
1723
+ /**
1724
+ * Sets width or height of container if returned
1725
+ * @returns {Object} size
1726
+ * @param {Number} width
1727
+ * @param {Number} height
1728
+ */
1729
+ proto._getContainerSize = noop;
1730
+
1731
+ /**
1732
+ * @param {Number} measure - size of width or height
1733
+ * @param {Boolean} isWidth
1734
+ */
1735
+ proto._setContainerMeasure = function (measure, isWidth) {
1736
+ if (measure === undefined) {
1737
+ return;
1738
+ }
1739
+
1740
+ var elemSize = this.size;
1741
+ // add padding and border width if border box
1742
+ if (elemSize.isBorderBox) {
1743
+ measure += isWidth
1744
+ ? elemSize.paddingLeft +
1745
+ elemSize.paddingRight +
1746
+ elemSize.borderLeftWidth +
1747
+ elemSize.borderRightWidth
1748
+ : elemSize.paddingBottom +
1749
+ elemSize.paddingTop +
1750
+ elemSize.borderTopWidth +
1751
+ elemSize.borderBottomWidth;
1752
+ }
1753
+
1754
+ measure = Math.max(measure, 0);
1755
+ this.element.style[isWidth ? 'width' : 'height'] = measure + 'px';
1756
+ };
1757
+
1758
+ /**
1759
+ * emit eventComplete on a collection of items events
1760
+ * @param {String} eventName
1761
+ * @param {Array} items - Outlayer.Items
1762
+ */
1763
+ proto._emitCompleteOnItems = function (eventName, items) {
1764
+ var _this = this;
1765
+ function onComplete() {
1766
+ _this.dispatchEvent(eventName + 'Complete', null, [items]);
1767
+ }
1768
+
1769
+ var count = items.length;
1770
+ if (!items || !count) {
1771
+ onComplete();
1772
+ return;
1773
+ }
1774
+
1775
+ var doneCount = 0;
1776
+ function tick() {
1777
+ doneCount++;
1778
+ if (doneCount == count) {
1779
+ onComplete();
1780
+ }
1781
+ }
1782
+
1783
+ // bind callback
1784
+ items.forEach(function (item) {
1785
+ item.once(eventName, tick);
1786
+ });
1787
+ };
1788
+
1789
+ /**
1790
+ * emits events via EvEmitter and jQuery events
1791
+ * @param {String} type - name of event
1792
+ * @param {Event} event - original event
1793
+ * @param {Array} args - extra arguments
1794
+ */
1795
+ proto.dispatchEvent = function (type, event, args) {
1796
+ // add original event to arguments
1797
+ var emitArgs = event ? [event].concat(args) : args;
1798
+ this.emitEvent(type, emitArgs);
1799
+
1800
+ if (jQuery) {
1801
+ // set this.$element
1802
+ this.$element = this.$element || jQuery(this.element);
1803
+ if (event) {
1804
+ // create jQuery event
1805
+ var $event = jQuery.Event(event);
1806
+ $event.type = type;
1807
+ this.$element.trigger($event, args);
1808
+ } else {
1809
+ // just trigger with type if no event available
1810
+ this.$element.trigger(type, args);
1811
+ }
1812
+ }
1813
+ };
1814
+
1815
+ // -------------------------- ignore & stamps -------------------------- //
1816
+
1817
+ /**
1818
+ * keep item in collection, but do not lay it out
1819
+ * ignored items do not get skipped in layout
1820
+ * @param {Element} elem
1821
+ */
1822
+ proto.ignore = function (elem) {
1823
+ var item = this.getItem(elem);
1824
+ if (item) {
1825
+ item.isIgnored = true;
1826
+ }
1827
+ };
1828
+
1829
+ /**
1830
+ * return item to layout collection
1831
+ * @param {Element} elem
1832
+ */
1833
+ proto.unignore = function (elem) {
1834
+ var item = this.getItem(elem);
1835
+ if (item) {
1836
+ delete item.isIgnored;
1837
+ }
1838
+ };
1839
+
1840
+ /**
1841
+ * adds elements to stamps
1842
+ * @param {NodeList, Array, Element, or String} elems
1843
+ */
1844
+ proto.stamp = function (elems) {
1845
+ elems = this._find(elems);
1846
+ if (!elems) {
1847
+ return;
1848
+ }
1849
+
1850
+ this.stamps = this.stamps.concat(elems);
1851
+ // ignore
1852
+ elems.forEach(this.ignore, this);
1853
+ };
1854
+
1855
+ /**
1856
+ * removes elements to stamps
1857
+ * @param {NodeList, Array, or Element} elems
1858
+ */
1859
+ proto.unstamp = function (elems) {
1860
+ elems = this._find(elems);
1861
+ if (!elems) {
1862
+ return;
1863
+ }
1864
+
1865
+ elems.forEach(function (elem) {
1866
+ // filter out removed stamp elements
1867
+ utils.removeFrom(this.stamps, elem);
1868
+ this.unignore(elem);
1869
+ }, this);
1870
+ };
1871
+
1872
+ /**
1873
+ * finds child elements
1874
+ * @param {NodeList, Array, Element, or String} elems
1875
+ * @returns {Array} elems
1876
+ */
1877
+ proto._find = function (elems) {
1878
+ if (!elems) {
1879
+ return;
1880
+ }
1881
+ // if string, use argument as selector string
1882
+ if (typeof elems == 'string') {
1883
+ elems = this.element.querySelectorAll(elems);
1884
+ }
1885
+ elems = utils.makeArray(elems);
1886
+ return elems;
1887
+ };
1888
+
1889
+ proto._manageStamps = function () {
1890
+ if (!this.stamps || !this.stamps.length) {
1891
+ return;
1892
+ }
1893
+
1894
+ this._getBoundingRect();
1895
+
1896
+ this.stamps.forEach(this._manageStamp, this);
1897
+ };
1898
+
1899
+ // update boundingLeft / Top
1900
+ proto._getBoundingRect = function () {
1901
+ // get bounding rect for container element
1902
+ var boundingRect = this.element.getBoundingClientRect();
1903
+ var size = this.size;
1904
+ this._boundingRect = {
1905
+ left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,
1906
+ top: boundingRect.top + size.paddingTop + size.borderTopWidth,
1907
+ right:
1908
+ boundingRect.right -
1909
+ (size.paddingRight + size.borderRightWidth),
1910
+ bottom:
1911
+ boundingRect.bottom -
1912
+ (size.paddingBottom + size.borderBottomWidth),
1913
+ };
1914
+ };
1915
+
1916
+ /**
1917
+ * @param {Element} stamp
1918
+ **/
1919
+ proto._manageStamp = noop;
1920
+
1921
+ /**
1922
+ * get x/y position of element relative to container element
1923
+ * @param {Element} elem
1924
+ * @returns {Object} offset - has left, top, right, bottom
1925
+ */
1926
+ proto._getElementOffset = function (elem) {
1927
+ var boundingRect = elem.getBoundingClientRect();
1928
+ var thisRect = this._boundingRect;
1929
+ var size = getSize(elem);
1930
+ var offset = {
1931
+ left: boundingRect.left - thisRect.left - size.marginLeft,
1932
+ top: boundingRect.top - thisRect.top - size.marginTop,
1933
+ right: thisRect.right - boundingRect.right - size.marginRight,
1934
+ bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom,
1935
+ };
1936
+ return offset;
1937
+ };
1938
+
1939
+ // -------------------------- resize -------------------------- //
1940
+
1941
+ // enable event handlers for listeners
1942
+ // i.e. resize -> onresize
1943
+ proto.handleEvent = utils.handleEvent;
1944
+
1945
+ /**
1946
+ * Bind layout to window resizing
1947
+ */
1948
+ proto.bindResize = function () {
1949
+ window.addEventListener('resize', this);
1950
+ this.isResizeBound = true;
1951
+ };
1952
+
1953
+ /**
1954
+ * Unbind layout to window resizing
1955
+ */
1956
+ proto.unbindResize = function () {
1957
+ window.removeEventListener('resize', this);
1958
+ this.isResizeBound = false;
1959
+ };
1960
+
1961
+ proto.onresize = function () {
1962
+ this.resize();
1963
+ };
1964
+
1965
+ utils.debounceMethod(Outlayer, 'onresize', 100);
1966
+
1967
+ proto.resize = function () {
1968
+ // don't trigger if size did not change
1969
+ // or if resize was unbound. See #9
1970
+ if (!this.isResizeBound || !this.needsResizeLayout()) {
1971
+ return;
1972
+ }
1973
+
1974
+ this.layout();
1975
+ };
1976
+
1977
+ /**
1978
+ * check if layout is needed post layout
1979
+ * @returns Boolean
1980
+ */
1981
+ proto.needsResizeLayout = function () {
1982
+ var size = getSize(this.element);
1983
+ // check that this.size and size are there
1984
+ // IE8 triggers resize on body size change, so they might not be
1985
+ var hasSizes = this.size && size;
1986
+ return hasSizes && size.innerWidth !== this.size.innerWidth;
1987
+ };
1988
+
1989
+ // -------------------------- methods -------------------------- //
1990
+
1991
+ /**
1992
+ * add items to Outlayer instance
1993
+ * @param {Array or NodeList or Element} elems
1994
+ * @returns {Array} items - Outlayer.Items
1995
+ **/
1996
+ proto.addItems = function (elems) {
1997
+ var items = this._itemize(elems);
1998
+ // add items to collection
1999
+ if (items.length) {
2000
+ this.items = this.items.concat(items);
2001
+ }
2002
+ return items;
2003
+ };
2004
+
2005
+ /**
2006
+ * Layout newly-appended item elements
2007
+ * @param {Array or NodeList or Element} elems
2008
+ */
2009
+ proto.appended = function (elems) {
2010
+ var items = this.addItems(elems);
2011
+ if (!items.length) {
2012
+ return;
2013
+ }
2014
+ // layout and reveal just the new items
2015
+ this.layoutItems(items, true);
2016
+ this.reveal(items);
2017
+ };
2018
+
2019
+ /**
2020
+ * Layout prepended elements
2021
+ * @param {Array or NodeList or Element} elems
2022
+ */
2023
+ proto.prepended = function (elems) {
2024
+ var items = this._itemize(elems);
2025
+ if (!items.length) {
2026
+ return;
2027
+ }
2028
+ // add items to beginning of collection
2029
+ var previousItems = this.items.slice(0);
2030
+ this.items = items.concat(previousItems);
2031
+ // start new layout
2032
+ this._resetLayout();
2033
+ this._manageStamps();
2034
+ // layout new stuff without transition
2035
+ this.layoutItems(items, true);
2036
+ this.reveal(items);
2037
+ // layout previous items
2038
+ this.layoutItems(previousItems);
2039
+ };
2040
+
2041
+ /**
2042
+ * reveal a collection of items
2043
+ * @param {Array of Outlayer.Items} items
2044
+ */
2045
+ proto.reveal = function (items) {
2046
+ this._emitCompleteOnItems('reveal', items);
2047
+ if (!items || !items.length) {
2048
+ return;
2049
+ }
2050
+ var stagger = this.updateStagger();
2051
+ items.forEach(function (item, i) {
2052
+ item.stagger(i * stagger);
2053
+ item.reveal();
2054
+ });
2055
+ };
2056
+
2057
+ /**
2058
+ * hide a collection of items
2059
+ * @param {Array of Outlayer.Items} items
2060
+ */
2061
+ proto.hide = function (items) {
2062
+ this._emitCompleteOnItems('hide', items);
2063
+ if (!items || !items.length) {
2064
+ return;
2065
+ }
2066
+ var stagger = this.updateStagger();
2067
+ items.forEach(function (item, i) {
2068
+ item.stagger(i * stagger);
2069
+ item.hide();
2070
+ });
2071
+ };
2072
+
2073
+ /**
2074
+ * reveal item elements
2075
+ * @param {Array}, {Element}, {NodeList} items
2076
+ */
2077
+ proto.revealItemElements = function (elems) {
2078
+ var items = this.getItems(elems);
2079
+ this.reveal(items);
2080
+ };
2081
+
2082
+ /**
2083
+ * hide item elements
2084
+ * @param {Array}, {Element}, {NodeList} items
2085
+ */
2086
+ proto.hideItemElements = function (elems) {
2087
+ var items = this.getItems(elems);
2088
+ this.hide(items);
2089
+ };
2090
+
2091
+ /**
2092
+ * get Outlayer.Item, given an Element
2093
+ * @param {Element} elem
2094
+ * @param {Function} callback
2095
+ * @returns {Outlayer.Item} item
2096
+ */
2097
+ proto.getItem = function (elem) {
2098
+ // loop through items to get the one that matches
2099
+ for (var i = 0; i < this.items.length; i++) {
2100
+ var item = this.items[i];
2101
+ if (item.element == elem) {
2102
+ // return item
2103
+ return item;
2104
+ }
2105
+ }
2106
+ };
2107
+
2108
+ /**
2109
+ * get collection of Outlayer.Items, given Elements
2110
+ * @param {Array} elems
2111
+ * @returns {Array} items - Outlayer.Items
2112
+ */
2113
+ proto.getItems = function (elems) {
2114
+ elems = utils.makeArray(elems);
2115
+ var items = [];
2116
+ elems.forEach(function (elem) {
2117
+ var item = this.getItem(elem);
2118
+ if (item) {
2119
+ items.push(item);
2120
+ }
2121
+ }, this);
2122
+
2123
+ return items;
2124
+ };
2125
+
2126
+ /**
2127
+ * remove element(s) from instance and DOM
2128
+ * @param {Array or NodeList or Element} elems
2129
+ */
2130
+ proto.remove = function (elems) {
2131
+ var removeItems = this.getItems(elems);
2132
+
2133
+ this._emitCompleteOnItems('remove', removeItems);
2134
+
2135
+ // bail if no items to remove
2136
+ if (!removeItems || !removeItems.length) {
2137
+ return;
2138
+ }
2139
+
2140
+ removeItems.forEach(function (item) {
2141
+ item.remove();
2142
+ // remove item from collection
2143
+ utils.removeFrom(this.items, item);
2144
+ }, this);
2145
+ };
2146
+
2147
+ // ----- destroy ----- //
2148
+
2149
+ // remove and disable Outlayer instance
2150
+ proto.destroy = function () {
2151
+ // clean up dynamic styles
2152
+ var style = this.element.style;
2153
+ style.height = '';
2154
+ style.position = '';
2155
+ style.width = '';
2156
+ // destroy items
2157
+ this.items.forEach(function (item) {
2158
+ item.destroy();
2159
+ });
2160
+
2161
+ this.unbindResize();
2162
+
2163
+ var id = this.element.outlayerGUID;
2164
+ delete instances[id]; // remove reference to instance by id
2165
+ delete this.element.outlayerGUID;
2166
+ // remove data for jQuery
2167
+ if (jQuery) {
2168
+ jQuery.removeData(this.element, this.constructor.namespace);
2169
+ }
2170
+ };
2171
+
2172
+ // -------------------------- data -------------------------- //
2173
+
2174
+ /**
2175
+ * get Outlayer instance from element
2176
+ * @param {Element} elem
2177
+ * @returns {Outlayer}
2178
+ */
2179
+ Outlayer.data = function (elem) {
2180
+ elem = utils.getQueryElement(elem);
2181
+ var id = elem && elem.outlayerGUID;
2182
+ return id && instances[id];
2183
+ };
2184
+
2185
+ // -------------------------- create Outlayer class -------------------------- //
2186
+
2187
+ /**
2188
+ * create a layout class
2189
+ * @param {String} namespace
2190
+ */
2191
+ Outlayer.create = function (namespace, options) {
2192
+ // sub-class Outlayer
2193
+ var Layout = subclass(Outlayer);
2194
+ // apply new options and compatOptions
2195
+ Layout.defaults = utils.extend({}, Outlayer.defaults);
2196
+ utils.extend(Layout.defaults, options);
2197
+ Layout.compatOptions = utils.extend({}, Outlayer.compatOptions);
2198
+
2199
+ Layout.namespace = namespace;
2200
+
2201
+ Layout.data = Outlayer.data;
2202
+
2203
+ // sub-class Item
2204
+ Layout.Item = subclass(Item);
2205
+
2206
+ // -------------------------- declarative -------------------------- //
2207
+
2208
+ utils.htmlInit(Layout, namespace);
2209
+
2210
+ // -------------------------- jQuery bridge -------------------------- //
2211
+
2212
+ // make into jQuery plugin
2213
+ if (jQuery && jQuery.bridget) {
2214
+ jQuery.bridget(namespace, Layout);
2215
+ }
2216
+
2217
+ return Layout;
2218
+ };
2219
+
2220
+ function subclass(Parent) {
2221
+ function SubClass() {
2222
+ Parent.apply(this, arguments);
2223
+ }
2224
+
2225
+ SubClass.prototype = Object.create(Parent.prototype);
2226
+ SubClass.prototype.constructor = SubClass;
2227
+
2228
+ return SubClass;
2229
+ }
2230
+
2231
+ // ----- helpers ----- //
2232
+
2233
+ // how many milliseconds are in each unit
2234
+ var msUnits = {
2235
+ ms: 1,
2236
+ s: 1000,
2237
+ };
2238
+
2239
+ // munge time-like parameter into millisecond number
2240
+ // '0.4s' -> 40
2241
+ function getMilliseconds(time) {
2242
+ if (typeof time == 'number') {
2243
+ return time;
2244
+ }
2245
+ var matches = time.match(/(^\d*\.?\d*)(\w*)/);
2246
+ var num = matches && matches[1];
2247
+ var unit = matches && matches[2];
2248
+ if (!num.length) {
2249
+ return 0;
2250
+ }
2251
+ num = parseFloat(num);
2252
+ var mult = msUnits[unit] || 1;
2253
+ return num * mult;
2254
+ }
2255
+
2256
+ // ----- fin ----- //
2257
+
2258
+ // back in global
2259
+ Outlayer.Item = Item;
2260
+
2261
+ return Outlayer;
2262
+ });
2263
+
2264
+ /**
2265
+ * Enviratope Item
2266
+ **/
2267
+
2268
+ (function (window, factory) {
2269
+ // universal module definition
2270
+ /* jshint strict: false */ /*globals define, module, require */
2271
+ if (typeof define == 'function' && define.amd) {
2272
+ // AMD
2273
+ define('enviratope/item', ['outlayer/outlayer'], factory);
2274
+ } else if (typeof module == 'object' && module.exports) {
2275
+ // CommonJS
2276
+ module.exports = factory(require('outlayer'));
2277
+ } else {
2278
+ // browser global
2279
+ window.Enviratope = window.Enviratope || {};
2280
+ window.Enviratope.Item = factory(window.Outlayer);
2281
+ }
2282
+ })(window, function factory(Outlayer) {
2283
+ 'use strict';
2284
+
2285
+ // -------------------------- Item -------------------------- //
2286
+
2287
+ // sub-class Outlayer Item
2288
+ function Item() {
2289
+ Outlayer.Item.apply(this, arguments);
2290
+ }
2291
+
2292
+ var proto = (Item.prototype = Object.create(Outlayer.Item.prototype));
2293
+
2294
+ var _create = proto._create;
2295
+ proto._create = function () {
2296
+ // assign id, used for original-order sorting
2297
+ this.id = this.layout.itemGUID++;
2298
+ _create.call(this);
2299
+ this.sortData = {};
2300
+ };
2301
+
2302
+ proto.updateSortData = function () {
2303
+ if (this.isIgnored) {
2304
+ return;
2305
+ }
2306
+ // default sorters
2307
+ this.sortData.id = this.id;
2308
+ // for backward compatibility
2309
+ this.sortData['original-order'] = this.id;
2310
+ this.sortData.random = Math.random();
2311
+ // go thru getSortData obj and apply the sorters
2312
+ var getSortData = this.layout.options.getSortData;
2313
+ var sorters = this.layout._sorters;
2314
+ for (var key in getSortData) {
2315
+ var sorter = sorters[key];
2316
+ this.sortData[key] = sorter(this.element, this);
2317
+ }
2318
+ };
2319
+
2320
+ var _destroy = proto.destroy;
2321
+ proto.destroy = function () {
2322
+ // call super
2323
+ _destroy.apply(this, arguments);
2324
+ // reset display, #741
2325
+ this.css({
2326
+ display: '',
2327
+ });
2328
+ };
2329
+
2330
+ return Item;
2331
+ });
2332
+
2333
+ /**
2334
+ * Enviratope LayoutMode
2335
+ */
2336
+
2337
+ (function (window, factory) {
2338
+ // universal module definition
2339
+ /* jshint strict: false */ /*globals define, module, require */
2340
+ if (typeof define == 'function' && define.amd) {
2341
+ // AMD
2342
+ define('enviratope/layout-mode', [
2343
+ 'get-size/get-size',
2344
+ 'outlayer/outlayer',
2345
+ ], factory);
2346
+ } else if (typeof module == 'object' && module.exports) {
2347
+ // CommonJS
2348
+ module.exports = factory(require('get-size'), require('outlayer'));
2349
+ } else {
2350
+ // browser global
2351
+ window.Enviratope = window.Enviratope || {};
2352
+ window.Enviratope.LayoutMode = factory(window.getSize, window.Outlayer);
2353
+ }
2354
+ })(window, function factory(getSize, Outlayer) {
2355
+ 'use strict';
2356
+
2357
+ // layout mode class
2358
+ function LayoutMode(enviratope) {
2359
+ this.enviratope = enviratope;
2360
+ // link properties
2361
+ if (enviratope) {
2362
+ this.options = enviratope.options[this.namespace];
2363
+ this.element = enviratope.element;
2364
+ this.items = enviratope.filteredItems;
2365
+ this.size = enviratope.size;
2366
+ }
2367
+ }
2368
+
2369
+ var proto = LayoutMode.prototype;
2370
+
2371
+ /**
2372
+ * some methods should just defer to default Outlayer method
2373
+ * and reference the Enviratope instance as `this`
2374
+ **/
2375
+ var facadeMethods = [
2376
+ '_resetLayout',
2377
+ '_getItemLayoutPosition',
2378
+ '_manageStamp',
2379
+ '_getContainerSize',
2380
+ '_getElementOffset',
2381
+ 'needsResizeLayout',
2382
+ '_getOption',
2383
+ ];
2384
+
2385
+ facadeMethods.forEach(function (methodName) {
2386
+ proto[methodName] = function () {
2387
+ return Outlayer.prototype[methodName].apply(
2388
+ this.enviratope,
2389
+ arguments,
2390
+ );
2391
+ };
2392
+ });
2393
+
2394
+ // ----- ----- //
2395
+
2396
+ // for horizontal layout modes, check vertical size
2397
+ proto.needsVerticalResizeLayout = function () {
2398
+ // don't trigger if size did not change
2399
+ var size = getSize(this.enviratope.element);
2400
+ // check that this.size and size are there
2401
+ // IE8 triggers resize on body size change, so they might not be
2402
+ var hasSizes = this.enviratope.size && size;
2403
+ return hasSizes && size.innerHeight != this.enviratope.size.innerHeight;
2404
+ };
2405
+
2406
+ // ----- measurements ----- //
2407
+
2408
+ proto._getMeasurement = function () {
2409
+ this.enviratope._getMeasurement.apply(this, arguments);
2410
+ };
2411
+
2412
+ proto.getColumnWidth = function () {
2413
+ this.getSegmentSize('column', 'Width');
2414
+ };
2415
+
2416
+ proto.getRowHeight = function () {
2417
+ this.getSegmentSize('row', 'Height');
2418
+ };
2419
+
2420
+ /**
2421
+ * get columnWidth or rowHeight
2422
+ * segment: 'column' or 'row'
2423
+ * size 'Width' or 'Height'
2424
+ **/
2425
+ proto.getSegmentSize = function (segment, size) {
2426
+ var segmentName = segment + size;
2427
+ var outerSize = 'outer' + size;
2428
+ // columnWidth / outerWidth // rowHeight / outerHeight
2429
+ this._getMeasurement(segmentName, outerSize);
2430
+ // got rowHeight or columnWidth, we can chill
2431
+ if (this[segmentName]) {
2432
+ return;
2433
+ }
2434
+ // fall back to item of first element
2435
+ var firstItemSize = this.getFirstItemSize();
2436
+ this[segmentName] =
2437
+ (firstItemSize && firstItemSize[outerSize]) ||
2438
+ // or size of container
2439
+ this.enviratope.size['inner' + size];
2440
+ };
2441
+
2442
+ proto.getFirstItemSize = function () {
2443
+ var firstItem = this.enviratope.filteredItems[0];
2444
+ return firstItem && firstItem.element && getSize(firstItem.element);
2445
+ };
2446
+
2447
+ // ----- methods that should reference enviratope ----- //
2448
+
2449
+ proto.layout = function () {
2450
+ this.enviratope.layout.apply(this.enviratope, arguments);
2451
+ };
2452
+
2453
+ proto.getSize = function () {
2454
+ this.enviratope.getSize();
2455
+ this.size = this.enviratope.size;
2456
+ };
2457
+
2458
+ // -------------------------- create -------------------------- //
2459
+
2460
+ LayoutMode.modes = {};
2461
+
2462
+ LayoutMode.create = function (namespace, options) {
2463
+ function Mode() {
2464
+ LayoutMode.apply(this, arguments);
2465
+ }
2466
+
2467
+ Mode.prototype = Object.create(proto);
2468
+ Mode.prototype.constructor = Mode;
2469
+
2470
+ // default options
2471
+ if (options) {
2472
+ Mode.options = options;
2473
+ }
2474
+
2475
+ Mode.prototype.namespace = namespace;
2476
+ // register in Enviratope
2477
+ LayoutMode.modes[namespace] = Mode;
2478
+
2479
+ return Mode;
2480
+ };
2481
+
2482
+ return LayoutMode;
2483
+ });
2484
+
2485
+ /*!
2486
+ * Masonry v4.1.0
2487
+ * Cascading grid layout library
2488
+ * http://masonry.desandro.com
2489
+ * MIT License
2490
+ * by David DeSandro
2491
+ */
2492
+
2493
+ (function (window, factory) {
2494
+ // universal module definition
2495
+ /* jshint strict: false */ /*globals define, module, require */
2496
+ if (typeof define == 'function' && define.amd) {
2497
+ // AMD
2498
+ define('masonry/masonry', [
2499
+ 'outlayer/outlayer',
2500
+ 'get-size/get-size',
2501
+ ], factory);
2502
+ } else if (typeof module == 'object' && module.exports) {
2503
+ // CommonJS
2504
+ module.exports = factory(require('outlayer'), require('get-size'));
2505
+ } else {
2506
+ // browser global
2507
+ window.Masonry = factory(window.Outlayer, window.getSize);
2508
+ }
2509
+ })(window, function factory(Outlayer, getSize) {
2510
+ // -------------------------- masonryDefinition -------------------------- //
2511
+
2512
+ // create an Outlayer layout class
2513
+ var Masonry = Outlayer.create('masonry');
2514
+ // isFitWidth -> fitWidth
2515
+ Masonry.compatOptions.fitWidth = 'isFitWidth';
2516
+
2517
+ Masonry.prototype._resetLayout = function () {
2518
+ this.getSize();
2519
+ this._getMeasurement('columnWidth', 'outerWidth');
2520
+ this._getMeasurement('gutter', 'outerWidth');
2521
+ this.measureColumns();
2522
+
2523
+ // reset column Y
2524
+ this.colYs = [];
2525
+ for (var i = 0; i < this.cols; i++) {
2526
+ this.colYs.push(0);
2527
+ }
2528
+
2529
+ this.maxY = 0;
2530
+ };
2531
+
2532
+ Masonry.prototype.measureColumns = function () {
2533
+ this.getContainerWidth();
2534
+ // if columnWidth is 0, default to outerWidth of first item
2535
+ if (!this.columnWidth) {
2536
+ var firstItem = this.items[0];
2537
+ var firstItemElem = firstItem && firstItem.element;
2538
+ // columnWidth fall back to item of first element
2539
+ this.columnWidth =
2540
+ (firstItemElem && getSize(firstItemElem).outerWidth) ||
2541
+ // if first elem has no width, default to size of container
2542
+ this.containerWidth;
2543
+ }
2544
+
2545
+ var columnWidth = (this.columnWidth += this.gutter);
2546
+
2547
+ // calculate columns
2548
+ var containerWidth = this.containerWidth + this.gutter;
2549
+ var cols = containerWidth / columnWidth;
2550
+ // fix rounding errors, typically with gutters
2551
+ var excess = columnWidth - (containerWidth % columnWidth);
2552
+ // if overshoot is less than a pixel, round up, otherwise floor it
2553
+ var mathMethod = excess && excess < 1 ? 'round' : 'floor';
2554
+ cols = Math[mathMethod](cols);
2555
+ this.cols = Math.max(cols, 1);
2556
+ };
2557
+
2558
+ Masonry.prototype.getContainerWidth = function () {
2559
+ // container is parent if fit width
2560
+ var isFitWidth = this._getOption('fitWidth');
2561
+ var container = isFitWidth ? this.element.parentNode : this.element;
2562
+ // check that this.size and size are there
2563
+ // IE8 triggers resize on body size change, so they might not be
2564
+ var size = getSize(container);
2565
+ this.containerWidth = size && size.innerWidth;
2566
+ };
2567
+
2568
+ Masonry.prototype._getItemLayoutPosition = function (item) {
2569
+ item.getSize();
2570
+ // how many columns does this brick span
2571
+ var remainder = item.size.outerWidth % this.columnWidth;
2572
+ var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';
2573
+ // round if off by 1 pixel, otherwise use ceil
2574
+ var colSpan = Math[mathMethod](item.size.outerWidth / this.columnWidth);
2575
+ colSpan = Math.min(colSpan, this.cols);
2576
+
2577
+ var colGroup = this._getColGroup(colSpan);
2578
+ // get the minimum Y value from the columns
2579
+ var minimumY = Math.min.apply(Math, colGroup);
2580
+ var shortColIndex = colGroup.indexOf(minimumY);
2581
+
2582
+ // position the brick
2583
+ var position = {
2584
+ x: this.columnWidth * shortColIndex,
2585
+ y: minimumY,
2586
+ };
2587
+
2588
+ // apply setHeight to necessary columns
2589
+ var setHeight = minimumY + item.size.outerHeight;
2590
+ var setSpan = this.cols + 1 - colGroup.length;
2591
+ for (var i = 0; i < setSpan; i++) {
2592
+ this.colYs[shortColIndex + i] = setHeight;
2593
+ }
2594
+
2595
+ return position;
2596
+ };
2597
+
2598
+ /**
2599
+ * @param {Number} colSpan - number of columns the element spans
2600
+ * @returns {Array} colGroup
2601
+ */
2602
+ Masonry.prototype._getColGroup = function (colSpan) {
2603
+ if (colSpan < 2) {
2604
+ // if brick spans only one column, use all the column Ys
2605
+ return this.colYs;
2606
+ }
2607
+
2608
+ var colGroup = [];
2609
+ // how many different places could this brick fit horizontally
2610
+ var groupCount = this.cols + 1 - colSpan;
2611
+ // for each group potential horizontal position
2612
+ for (var i = 0; i < groupCount; i++) {
2613
+ // make an array of colY values for that one group
2614
+ var groupColYs = this.colYs.slice(i, i + colSpan);
2615
+ // and get the max value of the array
2616
+ colGroup[i] = Math.max.apply(Math, groupColYs);
2617
+ }
2618
+ return colGroup;
2619
+ };
2620
+
2621
+ Masonry.prototype._manageStamp = function (stamp) {
2622
+ var stampSize = getSize(stamp);
2623
+ var offset = this._getElementOffset(stamp);
2624
+ // get the columns that this stamp affects
2625
+ var isOriginLeft = this._getOption('originLeft');
2626
+ var firstX = isOriginLeft ? offset.left : offset.right;
2627
+ var lastX = firstX + stampSize.outerWidth;
2628
+ var firstCol = Math.floor(firstX / this.columnWidth);
2629
+ firstCol = Math.max(0, firstCol);
2630
+ var lastCol = Math.floor(lastX / this.columnWidth);
2631
+ // lastCol should not go over if multiple of columnWidth #425
2632
+ lastCol -= lastX % this.columnWidth ? 0 : 1;
2633
+ lastCol = Math.min(this.cols - 1, lastCol);
2634
+ // set colYs to bottom of the stamp
2635
+
2636
+ var isOriginTop = this._getOption('originTop');
2637
+ var stampMaxY =
2638
+ (isOriginTop ? offset.top : offset.bottom) + stampSize.outerHeight;
2639
+ for (var i = firstCol; i <= lastCol; i++) {
2640
+ this.colYs[i] = Math.max(stampMaxY, this.colYs[i]);
2641
+ }
2642
+ };
2643
+
2644
+ Masonry.prototype._getContainerSize = function () {
2645
+ this.maxY = Math.max.apply(Math, this.colYs);
2646
+ var size = {
2647
+ height: this.maxY,
2648
+ };
2649
+
2650
+ if (this._getOption('fitWidth')) {
2651
+ size.width = this._getContainerFitWidth();
2652
+ }
2653
+
2654
+ return size;
2655
+ };
2656
+
2657
+ Masonry.prototype._getContainerFitWidth = function () {
2658
+ var unusedCols = 0;
2659
+ // count unused columns
2660
+ var i = this.cols;
2661
+ while (--i) {
2662
+ if (this.colYs[i] !== 0) {
2663
+ break;
2664
+ }
2665
+ unusedCols++;
2666
+ }
2667
+ // fit container to columns that have been used
2668
+ return (this.cols - unusedCols) * this.columnWidth - this.gutter;
2669
+ };
2670
+
2671
+ Masonry.prototype.needsResizeLayout = function () {
2672
+ var previousWidth = this.containerWidth;
2673
+ this.getContainerWidth();
2674
+ return previousWidth != this.containerWidth;
2675
+ };
2676
+
2677
+ return Masonry;
2678
+ });
2679
+
2680
+ /*!
2681
+ * Masonry layout mode
2682
+ * sub-classes Masonry
2683
+ * http://masonry.desandro.com
2684
+ */
2685
+
2686
+ (function (window, factory) {
2687
+ // universal module definition
2688
+ /* jshint strict: false */ /*globals define, module, require */
2689
+ if (typeof define == 'function' && define.amd) {
2690
+ // AMD
2691
+ define('enviratope/layout-modes/masonry', [
2692
+ '../layout-mode',
2693
+ 'masonry/masonry',
2694
+ ], factory);
2695
+ } else if (typeof module == 'object' && module.exports) {
2696
+ // CommonJS
2697
+ module.exports = factory(
2698
+ require('../layout-mode'),
2699
+ require('masonry-layout'),
2700
+ );
2701
+ } else {
2702
+ // browser global
2703
+ factory(window.Enviratope.LayoutMode, window.Masonry);
2704
+ }
2705
+ })(window, function factory(LayoutMode, Masonry) {
2706
+ 'use strict';
2707
+
2708
+ // -------------------------- masonryDefinition -------------------------- //
2709
+
2710
+ // create an Outlayer layout class
2711
+ var MasonryMode = LayoutMode.create('masonry');
2712
+
2713
+ var proto = MasonryMode.prototype;
2714
+
2715
+ var keepModeMethods = {
2716
+ _getElementOffset: true,
2717
+ layout: true,
2718
+ _getMeasurement: true,
2719
+ };
2720
+
2721
+ // inherit Masonry prototype
2722
+ for (var method in Masonry.prototype) {
2723
+ // do not inherit mode methods
2724
+ if (!keepModeMethods[method]) {
2725
+ proto[method] = Masonry.prototype[method];
2726
+ }
2727
+ }
2728
+
2729
+ var measureColumns = proto.measureColumns;
2730
+ proto.measureColumns = function () {
2731
+ // set items, used if measuring first item
2732
+ this.items = this.enviratope.filteredItems;
2733
+ measureColumns.call(this);
2734
+ };
2735
+
2736
+ // point to mode options for fitWidth
2737
+ var _getOption = proto._getOption;
2738
+ proto._getOption = function (option) {
2739
+ if (option == 'fitWidth') {
2740
+ return this.options.isFitWidth !== undefined
2741
+ ? this.options.isFitWidth
2742
+ : this.options.fitWidth;
2743
+ }
2744
+ return _getOption.apply(this.enviratope, arguments);
2745
+ };
2746
+
2747
+ return MasonryMode;
2748
+ });
2749
+
2750
+ /**
2751
+ * fitRows layout mode
2752
+ */
2753
+
2754
+ (function (window, factory) {
2755
+ // universal module definition
2756
+ /* jshint strict: false */ /*globals define, module, require */
2757
+ if (typeof define == 'function' && define.amd) {
2758
+ // AMD
2759
+ define('enviratope/layout-modes/fit-rows', ['../layout-mode'], factory);
2760
+ } else if (typeof exports == 'object') {
2761
+ // CommonJS
2762
+ module.exports = factory(require('../layout-mode'));
2763
+ } else {
2764
+ // browser global
2765
+ factory(window.Enviratope.LayoutMode);
2766
+ }
2767
+ })(window, function factory(LayoutMode) {
2768
+ 'use strict';
2769
+
2770
+ var FitRows = LayoutMode.create('fitRows');
2771
+
2772
+ var proto = FitRows.prototype;
2773
+
2774
+ proto._resetLayout = function () {
2775
+ this.x = 0;
2776
+ this.y = 0;
2777
+ this.maxY = 0;
2778
+ this._getMeasurement('gutter', 'outerWidth');
2779
+ };
2780
+
2781
+ proto._getItemLayoutPosition = function (item) {
2782
+ item.getSize();
2783
+
2784
+ var itemWidth = item.size.outerWidth + this.gutter;
2785
+ // if this element cannot fit in the current row
2786
+ var containerWidth = this.enviratope.size.innerWidth + this.gutter;
2787
+ if (this.x !== 0 && itemWidth + this.x > containerWidth) {
2788
+ this.x = 0;
2789
+ this.y = this.maxY;
2790
+ }
2791
+
2792
+ var position = {
2793
+ x: this.x,
2794
+ y: this.y,
2795
+ };
2796
+
2797
+ this.maxY = Math.max(this.maxY, this.y + item.size.outerHeight);
2798
+ this.x += itemWidth;
2799
+
2800
+ return position;
2801
+ };
2802
+
2803
+ proto._getContainerSize = function () {
2804
+ return { height: this.maxY };
2805
+ };
2806
+
2807
+ return FitRows;
2808
+ });
2809
+
2810
+ /**
2811
+ * vertical layout mode
2812
+ */
2813
+
2814
+ (function (window, factory) {
2815
+ // universal module definition
2816
+ /* jshint strict: false */ /*globals define, module, require */
2817
+ if (typeof define == 'function' && define.amd) {
2818
+ // AMD
2819
+ define('enviratope/layout-modes/vertical', ['../layout-mode'], factory);
2820
+ } else if (typeof module == 'object' && module.exports) {
2821
+ // CommonJS
2822
+ module.exports = factory(require('../layout-mode'));
2823
+ } else {
2824
+ // browser global
2825
+ factory(window.Enviratope.LayoutMode);
2826
+ }
2827
+ })(window, function factory(LayoutMode) {
2828
+ 'use strict';
2829
+
2830
+ var Vertical = LayoutMode.create('vertical', {
2831
+ horizontalAlignment: 0,
2832
+ });
2833
+
2834
+ var proto = Vertical.prototype;
2835
+
2836
+ proto._resetLayout = function () {
2837
+ this.y = 0;
2838
+ };
2839
+
2840
+ proto._getItemLayoutPosition = function (item) {
2841
+ item.getSize();
2842
+ var x =
2843
+ (this.enviratope.size.innerWidth - item.size.outerWidth) *
2844
+ this.options.horizontalAlignment;
2845
+ var y = this.y;
2846
+ this.y += item.size.outerHeight;
2847
+ return { x: x, y: y };
2848
+ };
2849
+
2850
+ proto._getContainerSize = function () {
2851
+ return { height: this.y };
2852
+ };
2853
+
2854
+ return Vertical;
2855
+ });
2856
+
2857
+ /*!
2858
+ * Enviratope v3.0.0
2859
+ *
2860
+ * Licensed GPLv3 for open source use
2861
+ * or Enviratope Commercial License for commercial use
2862
+ *
2863
+ * http://enviratope.metafizzy.co
2864
+ * Copyright 2016 Metafizzy
2865
+ */
2866
+
2867
+ (function (window, factory) {
2868
+ // universal module definition
2869
+ /* jshint strict: false */ /*globals define, module, require */
2870
+ if (typeof define == 'function' && define.amd) {
2871
+ // AMD
2872
+ define([
2873
+ 'outlayer/outlayer',
2874
+ 'get-size/get-size',
2875
+ 'desandro-matches-selector/matches-selector',
2876
+ 'fizzy-ui-utils/utils',
2877
+ './enviratope-item',
2878
+ './layout-mode',
2879
+ // include default layout modes
2880
+ './layout-modes/masonry',
2881
+ './layout-modes/fit-rows',
2882
+ './layout-modes/vertical',
2883
+ ], function (
2884
+ Outlayer,
2885
+ getSize,
2886
+ matchesSelector,
2887
+ utils,
2888
+ Item,
2889
+ LayoutMode,
2890
+ ) {
2891
+ return factory(
2892
+ window,
2893
+ Outlayer,
2894
+ getSize,
2895
+ matchesSelector,
2896
+ utils,
2897
+ Item,
2898
+ LayoutMode,
2899
+ );
2900
+ });
2901
+ } else if (typeof module == 'object' && module.exports) {
2902
+ // CommonJS
2903
+ module.exports = factory(
2904
+ window,
2905
+ require('outlayer'),
2906
+ require('get-size'),
2907
+ require('desandro-matches-selector'),
2908
+ require('fizzy-ui-utils'),
2909
+ require('./enviratope-item'),
2910
+ require('./layout-mode'),
2911
+ // include default layout modes
2912
+ require('./layout-modes/masonry'),
2913
+ require('./layout-modes/fit-rows'),
2914
+ require('./layout-modes/vertical'),
2915
+ );
2916
+ } else {
2917
+ // browser global
2918
+ window.Enviratope = factory(
2919
+ window,
2920
+ window.Outlayer,
2921
+ window.getSize,
2922
+ window.matchesSelector,
2923
+ window.fizzyUIUtils,
2924
+ window.Enviratope.Item,
2925
+ window.Enviratope.LayoutMode,
2926
+ );
2927
+ }
2928
+ })(
2929
+ window,
2930
+ function factory(
2931
+ window,
2932
+ Outlayer,
2933
+ getSize,
2934
+ matchesSelector,
2935
+ utils,
2936
+ Item,
2937
+ LayoutMode,
2938
+ ) {
2939
+ // -------------------------- vars -------------------------- //
2940
+
2941
+ var jQuery = window.jQuery;
2942
+
2943
+ // -------------------------- helpers -------------------------- //
2944
+
2945
+ var trim = String.prototype.trim
2946
+ ? function (str) {
2947
+ return str.trim();
2948
+ }
2949
+ : function (str) {
2950
+ return str.replace(/^\s+|\s+$/g, '');
2951
+ };
2952
+
2953
+ // -------------------------- enviratopeDefinition -------------------------- //
2954
+
2955
+ // create an Outlayer layout class
2956
+ var Enviratope = Outlayer.create('enviratope', {
2957
+ layoutMode: 'masonry',
2958
+ isJQueryFiltering: true,
2959
+ sortAscending: true,
2960
+ });
2961
+
2962
+ Enviratope.Item = Item;
2963
+ Enviratope.LayoutMode = LayoutMode;
2964
+
2965
+ var proto = Enviratope.prototype;
2966
+
2967
+ proto._create = function () {
2968
+ this.itemGUID = 0;
2969
+ // functions that sort items
2970
+ this._sorters = {};
2971
+ this._getSorters();
2972
+ // call super
2973
+ Outlayer.prototype._create.call(this);
2974
+
2975
+ // create layout modes
2976
+ this.modes = {};
2977
+ // start filteredItems with all items
2978
+ this.filteredItems = this.items;
2979
+ // keep of track of sortBys
2980
+ this.sortHistory = ['original-order'];
2981
+ // create from registered layout modes
2982
+ for (var name in LayoutMode.modes) {
2983
+ this._initLayoutMode(name);
2984
+ }
2985
+ };
2986
+
2987
+ proto.reloadItems = function () {
2988
+ // reset item ID counter
2989
+ this.itemGUID = 0;
2990
+ // call super
2991
+ Outlayer.prototype.reloadItems.call(this);
2992
+ };
2993
+
2994
+ proto._itemize = function () {
2995
+ var items = Outlayer.prototype._itemize.apply(this, arguments);
2996
+ // assign ID for original-order
2997
+ for (var i = 0; i < items.length; i++) {
2998
+ var item = items[i];
2999
+ item.id = this.itemGUID++;
3000
+ }
3001
+ this._updateItemsSortData(items);
3002
+ return items;
3003
+ };
3004
+
3005
+ // -------------------------- layout -------------------------- //
3006
+
3007
+ proto._initLayoutMode = function (name) {
3008
+ var Mode = LayoutMode.modes[name];
3009
+ // set mode options
3010
+ // HACK extend initial options, back-fill in default options
3011
+ var initialOpts = this.options[name] || {};
3012
+ this.options[name] = Mode.options
3013
+ ? utils.extend(Mode.options, initialOpts)
3014
+ : initialOpts;
3015
+ // init layout mode instance
3016
+ this.modes[name] = new Mode(this);
3017
+ };
3018
+
3019
+ proto.layout = function () {
3020
+ // if first time doing layout, do all magic
3021
+ if (!this._isLayoutInited && this._getOption('initLayout')) {
3022
+ this.arrange();
3023
+ return;
3024
+ }
3025
+ this._layout();
3026
+ };
3027
+
3028
+ // private method to be used in layout() & magic()
3029
+ proto._layout = function () {
3030
+ // don't animate first layout
3031
+ var isInstant = this._getIsInstant();
3032
+ // layout flow
3033
+ this._resetLayout();
3034
+ this._manageStamps();
3035
+ this.layoutItems(this.filteredItems, isInstant);
3036
+
3037
+ // flag for initalized
3038
+ this._isLayoutInited = true;
3039
+ };
3040
+
3041
+ // filter + sort + layout
3042
+ proto.arrange = function (opts) {
3043
+ // set any options pass
3044
+ this.option(opts);
3045
+ this._getIsInstant();
3046
+ // filter, sort, and layout
3047
+
3048
+ // filter
3049
+ var filtered = this._filter(this.items);
3050
+ this.filteredItems = filtered.matches;
3051
+
3052
+ this._bindArrangeComplete();
3053
+
3054
+ if (this._isInstant) {
3055
+ this._noTransition(this._hideReveal, [filtered]);
3056
+ } else {
3057
+ this._hideReveal(filtered);
3058
+ }
3059
+
3060
+ this._sort();
3061
+ this._layout();
3062
+ };
3063
+ // alias to _init for main plugin method
3064
+ proto._init = proto.arrange;
3065
+
3066
+ proto._hideReveal = function (filtered) {
3067
+ this.reveal(filtered.needReveal);
3068
+ this.hide(filtered.needHide);
3069
+ };
3070
+
3071
+ // HACK
3072
+ // Don't animate/transition first layout
3073
+ // Or don't animate/transition other layouts
3074
+ proto._getIsInstant = function () {
3075
+ var isLayoutInstant = this._getOption('layoutInstant');
3076
+ var isInstant =
3077
+ isLayoutInstant !== undefined
3078
+ ? isLayoutInstant
3079
+ : !this._isLayoutInited;
3080
+ this._isInstant = isInstant;
3081
+ return isInstant;
3082
+ };
3083
+
3084
+ // listen for layoutComplete, hideComplete and revealComplete
3085
+ // to trigger arrangeComplete
3086
+ proto._bindArrangeComplete = function () {
3087
+ // listen for 3 events to trigger arrangeComplete
3088
+ var isLayoutComplete, isHideComplete, isRevealComplete;
3089
+ var _this = this;
3090
+ function arrangeParallelCallback() {
3091
+ if (isLayoutComplete && isHideComplete && isRevealComplete) {
3092
+ _this.dispatchEvent('arrangeComplete', null, [
3093
+ _this.filteredItems,
3094
+ ]);
3095
+ }
3096
+ }
3097
+ this.once('layoutComplete', function () {
3098
+ isLayoutComplete = true;
3099
+ arrangeParallelCallback();
3100
+ });
3101
+ this.once('hideComplete', function () {
3102
+ isHideComplete = true;
3103
+ arrangeParallelCallback();
3104
+ });
3105
+ this.once('revealComplete', function () {
3106
+ isRevealComplete = true;
3107
+ arrangeParallelCallback();
3108
+ });
3109
+ };
3110
+
3111
+ // -------------------------- filter -------------------------- //
3112
+
3113
+ proto._filter = function (items) {
3114
+ var filter = this.options.filter;
3115
+ filter = filter || '*';
3116
+ var matches = [];
3117
+ var hiddenMatched = [];
3118
+ var visibleUnmatched = [];
3119
+
3120
+ var test = this._getFilterTest(filter);
3121
+
3122
+ // test each item
3123
+ for (var i = 0; i < items.length; i++) {
3124
+ var item = items[i];
3125
+ if (item.isIgnored) {
3126
+ continue;
3127
+ }
3128
+ // add item to either matched or unmatched group
3129
+ var isMatched = test(item);
3130
+ // item.isFilterMatched = isMatched;
3131
+ // add to matches if its a match
3132
+ if (isMatched) {
3133
+ matches.push(item);
3134
+ }
3135
+ // add to additional group if item needs to be hidden or revealed
3136
+ if (isMatched && item.isHidden) {
3137
+ hiddenMatched.push(item);
3138
+ } else if (!isMatched && !item.isHidden) {
3139
+ visibleUnmatched.push(item);
3140
+ }
3141
+ }
3142
+
3143
+ // return collections of items to be manipulated
3144
+ return {
3145
+ matches: matches,
3146
+ needReveal: hiddenMatched,
3147
+ needHide: visibleUnmatched,
3148
+ };
3149
+ };
3150
+
3151
+ // get a jQuery, function, or a matchesSelector test given the filter
3152
+ proto._getFilterTest = function (filter) {
3153
+ if (jQuery && this.options.isJQueryFiltering) {
3154
+ // use jQuery
3155
+ return function (item) {
3156
+ return jQuery(item.element).is(filter);
3157
+ };
3158
+ }
3159
+ if (typeof filter == 'function') {
3160
+ // use filter as function
3161
+ return function (item) {
3162
+ return filter(item.element);
3163
+ };
3164
+ }
3165
+ // default, use filter as selector string
3166
+ return function (item) {
3167
+ return matchesSelector(item.element, filter);
3168
+ };
3169
+ };
3170
+
3171
+ // -------------------------- sorting -------------------------- //
3172
+
3173
+ /**
3174
+ * @params {Array} elems
3175
+ * @public
3176
+ */
3177
+ proto.updateSortData = function (elems) {
3178
+ // get items
3179
+ var items;
3180
+ if (elems) {
3181
+ elems = utils.makeArray(elems);
3182
+ items = this.getItems(elems);
3183
+ } else {
3184
+ // update all items if no elems provided
3185
+ items = this.items;
3186
+ }
3187
+
3188
+ this._getSorters();
3189
+ this._updateItemsSortData(items);
3190
+ };
3191
+
3192
+ proto._getSorters = function () {
3193
+ var getSortData = this.options.getSortData;
3194
+ for (var key in getSortData) {
3195
+ var sorter = getSortData[key];
3196
+ this._sorters[key] = mungeSorter(sorter);
3197
+ }
3198
+ };
3199
+
3200
+ /**
3201
+ * @params {Array} items - of Enviratope.Items
3202
+ * @private
3203
+ */
3204
+ proto._updateItemsSortData = function (items) {
3205
+ // do not update if no items
3206
+ var len = items && items.length;
3207
+
3208
+ for (var i = 0; len && i < len; i++) {
3209
+ var item = items[i];
3210
+ item.updateSortData();
3211
+ }
3212
+ };
3213
+
3214
+ // ----- munge sorter ----- //
3215
+
3216
+ // encapsulate this, as we just need mungeSorter
3217
+ // other functions in here are just for munging
3218
+ var mungeSorter = (function () {
3219
+ // add a magic layer to sorters for convienent shorthands
3220
+ // `.foo-bar` will use the text of .foo-bar querySelector
3221
+ // `[foo-bar]` will use attribute
3222
+ // you can also add parser
3223
+ // `.foo-bar parseInt` will parse that as a number
3224
+ function mungeSorter(sorter) {
3225
+ // if not a string, return function or whatever it is
3226
+ if (typeof sorter != 'string') {
3227
+ return sorter;
3228
+ }
3229
+ // parse the sorter string
3230
+ var args = trim(sorter).split(' ');
3231
+ var query = args[0];
3232
+ // check if query looks like [an-attribute]
3233
+ var attrMatch = query.match(/^\[(.+)\]$/);
3234
+ var attr = attrMatch && attrMatch[1];
3235
+ var getValue = getValueGetter(attr, query);
3236
+ // use second argument as a parser
3237
+ var parser = Enviratope.sortDataParsers[args[1]];
3238
+ // parse the value, if there was a parser
3239
+ sorter = parser
3240
+ ? function (elem) {
3241
+ return elem && parser(getValue(elem));
3242
+ }
3243
+ : // otherwise just return value
3244
+ function (elem) {
3245
+ return elem && getValue(elem);
3246
+ };
3247
+
3248
+ return sorter;
3249
+ }
3250
+
3251
+ // get an attribute getter, or get text of the querySelector
3252
+ function getValueGetter(attr, query) {
3253
+ // if query looks like [foo-bar], get attribute
3254
+ if (attr) {
3255
+ return function getAttribute(elem) {
3256
+ return elem.getAttribute(attr);
3257
+ };
3258
+ }
3259
+
3260
+ // otherwise, assume its a querySelector, and get its text
3261
+ return function getChildText(elem) {
3262
+ var child = elem.querySelector(query);
3263
+ return child && child.textContent;
3264
+ };
3265
+ }
3266
+
3267
+ return mungeSorter;
3268
+ })();
3269
+
3270
+ // parsers used in getSortData shortcut strings
3271
+ Enviratope.sortDataParsers = {
3272
+ parseInt: function (val) {
3273
+ return parseInt(val, 10);
3274
+ },
3275
+ parseFloat: function (val) {
3276
+ return parseFloat(val);
3277
+ },
3278
+ };
3279
+
3280
+ // ----- sort method ----- //
3281
+
3282
+ // sort filteredItem order
3283
+ proto._sort = function () {
3284
+ var sortByOpt = this.options.sortBy;
3285
+ if (!sortByOpt) {
3286
+ return;
3287
+ }
3288
+ // concat all sortBy and sortHistory
3289
+ var sortBys = [].concat.apply(sortByOpt, this.sortHistory);
3290
+ // sort magic
3291
+ var itemSorter = getItemSorter(sortBys, this.options.sortAscending);
3292
+ this.filteredItems.sort(itemSorter);
3293
+ // keep track of sortBy History
3294
+ if (sortByOpt != this.sortHistory[0]) {
3295
+ // add to front, oldest goes in last
3296
+ this.sortHistory.unshift(sortByOpt);
3297
+ }
3298
+ };
3299
+
3300
+ // returns a function used for sorting
3301
+ function getItemSorter(sortBys, sortAsc) {
3302
+ return function sorter(itemA, itemB) {
3303
+ // cycle through all sortKeys
3304
+ for (var i = 0; i < sortBys.length; i++) {
3305
+ var sortBy = sortBys[i];
3306
+ var a = itemA.sortData[sortBy];
3307
+ var b = itemB.sortData[sortBy];
3308
+ if (a > b || a < b) {
3309
+ // if sortAsc is an object, use the value given the sortBy key
3310
+ var isAscending =
3311
+ sortAsc[sortBy] !== undefined
3312
+ ? sortAsc[sortBy]
3313
+ : sortAsc;
3314
+ var direction = isAscending ? 1 : -1;
3315
+ return (a > b ? 1 : -1) * direction;
3316
+ }
3317
+ }
3318
+ return 0;
3319
+ };
3320
+ }
3321
+
3322
+ // -------------------------- methods -------------------------- //
3323
+
3324
+ // get layout mode
3325
+ proto._mode = function () {
3326
+ var layoutMode = this.options.layoutMode;
3327
+ var mode = this.modes[layoutMode];
3328
+ if (!mode) {
3329
+ // TODO console.error
3330
+ throw new Error('No layout mode: ' + layoutMode);
3331
+ }
3332
+ // HACK sync mode's options
3333
+ // any options set after init for layout mode need to be synced
3334
+ mode.options = this.options[layoutMode];
3335
+ return mode;
3336
+ };
3337
+
3338
+ proto._resetLayout = function () {
3339
+ // trigger original reset layout
3340
+ Outlayer.prototype._resetLayout.call(this);
3341
+ this._mode()._resetLayout();
3342
+ };
3343
+
3344
+ proto._getItemLayoutPosition = function (item) {
3345
+ return this._mode()._getItemLayoutPosition(item);
3346
+ };
3347
+
3348
+ proto._manageStamp = function (stamp) {
3349
+ this._mode()._manageStamp(stamp);
3350
+ };
3351
+
3352
+ proto._getContainerSize = function () {
3353
+ return this._mode()._getContainerSize();
3354
+ };
3355
+
3356
+ proto.needsResizeLayout = function () {
3357
+ return this._mode().needsResizeLayout();
3358
+ };
3359
+
3360
+ // -------------------------- adding & removing -------------------------- //
3361
+
3362
+ // HEADS UP overwrites default Outlayer appended
3363
+ proto.appended = function (elems) {
3364
+ var items = this.addItems(elems);
3365
+ if (!items.length) {
3366
+ return;
3367
+ }
3368
+ // filter, layout, reveal new items
3369
+ var filteredItems = this._filterRevealAdded(items);
3370
+ // add to filteredItems
3371
+ this.filteredItems = this.filteredItems.concat(filteredItems);
3372
+ };
3373
+
3374
+ // HEADS UP overwrites default Outlayer prepended
3375
+ proto.prepended = function (elems) {
3376
+ var items = this._itemize(elems);
3377
+ if (!items.length) {
3378
+ return;
3379
+ }
3380
+ // start new layout
3381
+ this._resetLayout();
3382
+ this._manageStamps();
3383
+ // filter, layout, reveal new items
3384
+ var filteredItems = this._filterRevealAdded(items);
3385
+ // layout previous items
3386
+ this.layoutItems(this.filteredItems);
3387
+ // add to items and filteredItems
3388
+ this.filteredItems = filteredItems.concat(this.filteredItems);
3389
+ this.items = items.concat(this.items);
3390
+ };
3391
+
3392
+ proto._filterRevealAdded = function (items) {
3393
+ var filtered = this._filter(items);
3394
+ this.hide(filtered.needHide);
3395
+ // reveal all new items
3396
+ this.reveal(filtered.matches);
3397
+ // layout new items, no transition
3398
+ this.layoutItems(filtered.matches, true);
3399
+ return filtered.matches;
3400
+ };
3401
+
3402
+ /**
3403
+ * Filter, sort, and layout newly-appended item elements
3404
+ * @param {Array or NodeList or Element} elems
3405
+ */
3406
+ proto.insert = function (elems) {
3407
+ var items = this.addItems(elems);
3408
+ if (!items.length) {
3409
+ return;
3410
+ }
3411
+ // append item elements
3412
+ var i, item;
3413
+ var len = items.length;
3414
+ for (i = 0; i < len; i++) {
3415
+ item = items[i];
3416
+ this.element.appendChild(item.element);
3417
+ }
3418
+ // filter new stuff
3419
+ var filteredInsertItems = this._filter(items).matches;
3420
+ // set flag
3421
+ for (i = 0; i < len; i++) {
3422
+ items[i].isLayoutInstant = true;
3423
+ }
3424
+ this.arrange();
3425
+ // reset flag
3426
+ for (i = 0; i < len; i++) {
3427
+ delete items[i].isLayoutInstant;
3428
+ }
3429
+ this.reveal(filteredInsertItems);
3430
+ };
3431
+
3432
+ var _remove = proto.remove;
3433
+ proto.remove = function (elems) {
3434
+ elems = utils.makeArray(elems);
3435
+ var removeItems = this.getItems(elems);
3436
+ // do regular thing
3437
+ _remove.call(this, elems);
3438
+ // bail if no items to remove
3439
+ var len = removeItems && removeItems.length;
3440
+ // remove elems from filteredItems
3441
+ for (var i = 0; len && i < len; i++) {
3442
+ var item = removeItems[i];
3443
+ // remove item from collection
3444
+ utils.removeFrom(this.filteredItems, item);
3445
+ }
3446
+ };
3447
+
3448
+ proto.shuffle = function () {
3449
+ // update random sortData
3450
+ for (var i = 0; i < this.items.length; i++) {
3451
+ var item = this.items[i];
3452
+ item.sortData.random = Math.random();
3453
+ }
3454
+ this.options.sortBy = 'random';
3455
+ this._sort();
3456
+ this._layout();
3457
+ };
3458
+
3459
+ /**
3460
+ * trigger fn without transition
3461
+ * kind of hacky to have this in the first place
3462
+ * @param {Function} fn
3463
+ * @param {Array} args
3464
+ * @returns ret
3465
+ * @private
3466
+ */
3467
+ proto._noTransition = function (fn, args) {
3468
+ // save transitionDuration before disabling
3469
+ var transitionDuration = this.options.transitionDuration;
3470
+ // disable transition
3471
+ this.options.transitionDuration = 0;
3472
+ // do it
3473
+ var returnValue = fn.apply(this, args);
3474
+ // re-enable transition for reveal
3475
+ this.options.transitionDuration = transitionDuration;
3476
+ return returnValue;
3477
+ };
3478
+
3479
+ // ----- helper methods ----- //
3480
+
3481
+ /**
3482
+ * getter method for getting filtered item elements
3483
+ * @returns {Array} elems - collection of item elements
3484
+ */
3485
+ proto.getFilteredItemElements = function () {
3486
+ return this.filteredItems.map(function (item) {
3487
+ return item.element;
3488
+ });
3489
+ };
3490
+
3491
+ // ----- ----- //
3492
+
3493
+ return Enviratope;
3494
+ },
3495
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/lib/jquery.easing.js CHANGED
@@ -1,135 +1,135 @@
1
- // t: current time, b: begInnIng value, c: change In value, d: duration
2
- jQuery.easing['jswing'] = jQuery.easing['swing'];
3
-
4
- jQuery.extend( jQuery.easing,
5
- {
6
- def: 'easeOutQuad',
7
- swing: function (x, t, b, c, d) {
8
- //alert(jQuery.easing.default);
9
- return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
10
- },
11
- easeInQuad: function (x, t, b, c, d) {
12
- return c*(t/=d)*t + b;
13
- },
14
- easeOutQuad: function (x, t, b, c, d) {
15
- return -c *(t/=d)*(t-2) + b;
16
- },
17
- easeInOutQuad: function (x, t, b, c, d) {
18
- if ((t/=d/2) < 1) return c/2*t*t + b;
19
- return -c/2 * ((--t)*(t-2) - 1) + b;
20
- },
21
- easeInCubic: function (x, t, b, c, d) {
22
- return c*(t/=d)*t*t + b;
23
- },
24
- easeOutCubic: function (x, t, b, c, d) {
25
- return c*((t=t/d-1)*t*t + 1) + b;
26
- },
27
- easeInOutCubic: function (x, t, b, c, d) {
28
- if ((t/=d/2) < 1) return c/2*t*t*t + b;
29
- return c/2*((t-=2)*t*t + 2) + b;
30
- },
31
- easeInQuart: function (x, t, b, c, d) {
32
- return c*(t/=d)*t*t*t + b;
33
- },
34
- easeOutQuart: function (x, t, b, c, d) {
35
- return -c * ((t=t/d-1)*t*t*t - 1) + b;
36
- },
37
- easeInOutQuart: function (x, t, b, c, d) {
38
- if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
39
- return -c/2 * ((t-=2)*t*t*t - 2) + b;
40
- },
41
- easeInQuint: function (x, t, b, c, d) {
42
- return c*(t/=d)*t*t*t*t + b;
43
- },
44
- easeOutQuint: function (x, t, b, c, d) {
45
- return c*((t=t/d-1)*t*t*t*t + 1) + b;
46
- },
47
- easeInOutQuint: function (x, t, b, c, d) {
48
- if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
49
- return c/2*((t-=2)*t*t*t*t + 2) + b;
50
- },
51
- easeInSine: function (x, t, b, c, d) {
52
- return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
53
- },
54
- easeOutSine: function (x, t, b, c, d) {
55
- return c * Math.sin(t/d * (Math.PI/2)) + b;
56
- },
57
- easeInOutSine: function (x, t, b, c, d) {
58
- return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
59
- },
60
- easeInExpo: function (x, t, b, c, d) {
61
- return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
62
- },
63
- easeOutExpo: function (x, t, b, c, d) {
64
- return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
65
- },
66
- easeInOutExpo: function (x, t, b, c, d) {
67
- if (t==0) return b;
68
- if (t==d) return b+c;
69
- if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
70
- return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
71
- },
72
- easeInCirc: function (x, t, b, c, d) {
73
- return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
74
- },
75
- easeOutCirc: function (x, t, b, c, d) {
76
- return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
77
- },
78
- easeInOutCirc: function (x, t, b, c, d) {
79
- if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
80
- return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
81
- },
82
- easeInElastic: function (x, t, b, c, d) {
83
- var s=1.70158;var p=0;var a=c;
84
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
85
- if (a < Math.abs(c)) { a=c; var s=p/4; }
86
- else var s = p/(2*Math.PI) * Math.asin (c/a);
87
- return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
88
- },
89
- easeOutElastic: function (x, t, b, c, d) {
90
- var s=1.70158;var p=0;var a=c;
91
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
92
- if (a < Math.abs(c)) { a=c; var s=p/4; }
93
- else var s = p/(2*Math.PI) * Math.asin (c/a);
94
- return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
95
- },
96
- easeInOutElastic: function (x, t, b, c, d) {
97
- var s=1.70158;var p=0;var a=c;
98
- if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
99
- if (a < Math.abs(c)) { a=c; var s=p/4; }
100
- else var s = p/(2*Math.PI) * Math.asin (c/a);
101
- if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
102
- return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
103
- },
104
- easeInBack: function (x, t, b, c, d, s) {
105
- if (s == undefined) s = 1.70158;
106
- return c*(t/=d)*t*((s+1)*t - s) + b;
107
- },
108
- easeOutBack: function (x, t, b, c, d, s) {
109
- if (s == undefined) s = 1.70158;
110
- return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
111
- },
112
- easeInOutBack: function (x, t, b, c, d, s) {
113
- if (s == undefined) s = 1.70158;
114
- if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
115
- return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
116
- },
117
- easeInBounce: function (x, t, b, c, d) {
118
- return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
119
- },
120
- easeOutBounce: function (x, t, b, c, d) {
121
- if ((t/=d) < (1/2.75)) {
122
- return c*(7.5625*t*t) + b;
123
- } else if (t < (2/2.75)) {
124
- return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
125
- } else if (t < (2.5/2.75)) {
126
- return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
127
- } else {
128
- return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
129
- }
130
- },
131
- easeInOutBounce: function (x, t, b, c, d) {
132
- if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
133
- return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
134
- }
135
  });
1
+ // t: current time, b: begInnIng value, c: change In value, d: duration
2
+ jQuery.easing['jswing'] = jQuery.easing['swing'];
3
+
4
+ jQuery.extend( jQuery.easing,
5
+ {
6
+ def: 'easeOutQuad',
7
+ swing: function (x, t, b, c, d) {
8
+ //alert(jQuery.easing.default);
9
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
10
+ },
11
+ easeInQuad: function (x, t, b, c, d) {
12
+ return c*(t/=d)*t + b;
13
+ },
14
+ easeOutQuad: function (x, t, b, c, d) {
15
+ return -c *(t/=d)*(t-2) + b;
16
+ },
17
+ easeInOutQuad: function (x, t, b, c, d) {
18
+ if ((t/=d/2) < 1) return c/2*t*t + b;
19
+ return -c/2 * ((--t)*(t-2) - 1) + b;
20
+ },
21
+ easeInCubic: function (x, t, b, c, d) {
22
+ return c*(t/=d)*t*t + b;
23
+ },
24
+ easeOutCubic: function (x, t, b, c, d) {
25
+ return c*((t=t/d-1)*t*t + 1) + b;
26
+ },
27
+ easeInOutCubic: function (x, t, b, c, d) {
28
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
29
+ return c/2*((t-=2)*t*t + 2) + b;
30
+ },
31
+ easeInQuart: function (x, t, b, c, d) {
32
+ return c*(t/=d)*t*t*t + b;
33
+ },
34
+ easeOutQuart: function (x, t, b, c, d) {
35
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
36
+ },
37
+ easeInOutQuart: function (x, t, b, c, d) {
38
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
39
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
40
+ },
41
+ easeInQuint: function (x, t, b, c, d) {
42
+ return c*(t/=d)*t*t*t*t + b;
43
+ },
44
+ easeOutQuint: function (x, t, b, c, d) {
45
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
46
+ },
47
+ easeInOutQuint: function (x, t, b, c, d) {
48
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
49
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
50
+ },
51
+ easeInSine: function (x, t, b, c, d) {
52
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
53
+ },
54
+ easeOutSine: function (x, t, b, c, d) {
55
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
56
+ },
57
+ easeInOutSine: function (x, t, b, c, d) {
58
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
59
+ },
60
+ easeInExpo: function (x, t, b, c, d) {
61
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
62
+ },
63
+ easeOutExpo: function (x, t, b, c, d) {
64
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
65
+ },
66
+ easeInOutExpo: function (x, t, b, c, d) {
67
+ if (t==0) return b;
68
+ if (t==d) return b+c;
69
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
70
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
71
+ },
72
+ easeInCirc: function (x, t, b, c, d) {
73
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
74
+ },
75
+ easeOutCirc: function (x, t, b, c, d) {
76
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
77
+ },
78
+ easeInOutCirc: function (x, t, b, c, d) {
79
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
80
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
81
+ },
82
+ easeInElastic: function (x, t, b, c, d) {
83
+ var s=1.70158;var p=0;var a=c;
84
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
85
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
86
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
87
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
88
+ },
89
+ easeOutElastic: function (x, t, b, c, d) {
90
+ var s=1.70158;var p=0;var a=c;
91
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
92
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
93
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
94
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
95
+ },
96
+ easeInOutElastic: function (x, t, b, c, d) {
97
+ var s=1.70158;var p=0;var a=c;
98
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
99
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
100
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
101
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
102
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
103
+ },
104
+ easeInBack: function (x, t, b, c, d, s) {
105
+ if (s == undefined) s = 1.70158;
106
+ return c*(t/=d)*t*((s+1)*t - s) + b;
107
+ },
108
+ easeOutBack: function (x, t, b, c, d, s) {
109
+ if (s == undefined) s = 1.70158;
110
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
111
+ },
112
+ easeInOutBack: function (x, t, b, c, d, s) {
113
+ if (s == undefined) s = 1.70158;
114
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
115
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
116
+ },
117
+ easeInBounce: function (x, t, b, c, d) {
118
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
119
+ },
120
+ easeOutBounce: function (x, t, b, c, d) {
121
+ if ((t/=d) < (1/2.75)) {
122
+ return c*(7.5625*t*t) + b;
123
+ } else if (t < (2/2.75)) {
124
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
125
+ } else if (t < (2.5/2.75)) {
126
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
127
+ } else {
128
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
129
+ }
130
+ },
131
+ easeInOutBounce: function (x, t, b, c, d) {
132
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
133
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
134
+ }
135
  });
assets/js/lib/jquery.justifiedGallery.js CHANGED
@@ -1,1160 +1,1160 @@
1
- /*!
2
- * Justified Gallery - v3.6.2
3
- * http://miromannino.github.io/Justified-Gallery/
4
- * Copyright (c) 2016 Miro Mannino
5
- * Licensed under the MIT license.
6
- */
7
- (function($) {
8
-
9
- function hasScrollBar() {
10
- return $("body").height() > $(window).height();
11
- }
12
- /**
13
- * Justified Gallery controller constructor
14
- *
15
- * @param $gallery the gallery to build
16
- * @param settings the settings (the defaults are in $.fn.justifiedGallery.defaults)
17
- * @constructor
18
- */
19
- var JustifiedGallery = function ($gallery, settings) {
20
-
21
- this.settings = settings;
22
- this.checkSettings();
23
-
24
- this.imgAnalyzerTimeout = null;
25
- this.entries = null;
26
- this.buildingRow = {
27
- entriesBuff : [],
28
- width : 0,
29
- height : 0,
30
- aspectRatio : 0
31
- };
32
- this.lastAnalyzedIndex = -1;
33
- this.yield = {
34
- every : 2, // do a flush every n flushes (must be greater than 1)
35
- flushed : 0 // flushed rows without a yield
36
- };
37
- this.border = settings.border >= 0 ? settings.border : settings.margins;
38
- this.maxRowHeight = this.retrieveMaxRowHeight();
39
- this.suffixRanges = this.retrieveSuffixRanges();
40
- this.offY = this.border;
41
- this.rows = 0;
42
- this.spinner = {
43
- phase : 0,
44
- timeSlot : 150,
45
- $el : $('<div class="spinner"><span></span><span></span><span></span></div>'),
46
- intervalId : null
47
- };
48
- this.checkWidthIntervalId = null;
49
- this.galleryWidth = $gallery.width();
50
- this.$gallery = $gallery;
51
-
52
- };
53
-
54
- /** @returns {String} the best suffix given the width and the height */
55
- JustifiedGallery.prototype.getSuffix = function (width, height) {
56
- var longestSide, i;
57
- longestSide = (width > height) ? width : height;
58
- for (i = 0; i < this.suffixRanges.length; i++) {
59
- if (longestSide <= this.suffixRanges[i]) {
60
- return this.settings.sizeRangeSuffixes[this.suffixRanges[i]];
61
- }
62
- }
63
- return this.settings.sizeRangeSuffixes[this.suffixRanges[i - 1]];
64
- };
65
-
66
- /**
67
- * Remove the suffix from the string
68
- *
69
- * @returns {string} a new string without the suffix
70
- */
71
- JustifiedGallery.prototype.removeSuffix = function (str, suffix) {
72
- return str.substring(0, str.length - suffix.length);
73
- };
74
-
75
- /**
76
- * @returns {boolean} a boolean to say if the suffix is contained in the str or not
77
- */
78
- JustifiedGallery.prototype.endsWith = function (str, suffix) {
79
- return str.indexOf(suffix, str.length - suffix.length) !== -1;
80
- };
81
-
82
- /**
83
- * Get the used suffix of a particular url
84
- *
85
- * @param str
86
- * @returns {String} return the used suffix
87
- */
88
- JustifiedGallery.prototype.getUsedSuffix = function (str) {
89
- for (var si in this.settings.sizeRangeSuffixes) {
90
- if (this.settings.sizeRangeSuffixes.hasOwnProperty(si)) {
91
- if (this.settings.sizeRangeSuffixes[si].length === 0) continue;
92
- if (this.endsWith(str, this.settings.sizeRangeSuffixes[si])) return this.settings.sizeRangeSuffixes[si];
93
- }
94
- }
95
- return '';
96
- };
97
-
98
- /**
99
- * Given an image src, with the width and the height, returns the new image src with the
100
- * best suffix to show the best quality thumbnail.
101
- *
102
- * @returns {String} the suffix to use
103
- */
104
- JustifiedGallery.prototype.newSrc = function (imageSrc, imgWidth, imgHeight) {
105
- var newImageSrc;
106
-
107
- if (this.settings.thumbnailPath) {
108
- newImageSrc = this.settings.thumbnailPath(imageSrc, imgWidth, imgHeight);
109
- } else {
110
- var matchRes = imageSrc.match(this.settings.extension);
111
- var ext = (matchRes !== null) ? matchRes[0] : '';
112
- newImageSrc = imageSrc.replace(this.settings.extension, '');
113
- newImageSrc = this.removeSuffix(newImageSrc, this.getUsedSuffix(newImageSrc));
114
- newImageSrc += this.getSuffix(imgWidth, imgHeight) + ext;
115
- }
116
-
117
- return newImageSrc;
118
- };
119
-
120
- /**
121
- * Shows the images that is in the given entry
122
- *
123
- * @param $entry the entry
124
- * @param callback the callback that is called when the show animation is finished
125
- */
126
- JustifiedGallery.prototype.showImg = function ($entry, callback) {
127
- if (this.settings.cssAnimation) {
128
- $entry.addClass('entry-visible');
129
- if (callback) callback();
130
- } else {
131
- $entry.stop().fadeTo(this.settings.imagesAnimationDuration, 1.0, callback);
132
- }
133
- };
134
-
135
- /**
136
- * Extract the image src form the image, looking from the 'safe-src', and if it can't be found, from the
137
- * 'src' attribute. It saves in the image data the 'jg.originalSrc' field, with the extracted src.
138
- *
139
- * @param $image the image to analyze
140
- * @returns {String} the extracted src
141
- */
142
- JustifiedGallery.prototype.extractImgSrcFromImage = function ($image) {
143
- var imageSrc = (typeof $image.data('safe-src') !== 'undefined') ? $image.data('safe-src') : $image.attr('src');
144
- $image.data('jg.originalSrc', imageSrc);
145
- return imageSrc;
146
- };
147
-
148
- /** @returns {jQuery} the image in the given entry */
149
- JustifiedGallery.prototype.imgFromEntry = function ($entry) {
150
- var $img = $entry.find('> img');
151
- if ($img.length === 0) $img = $entry.find('> a > img');
152
- return $img.length === 0 ? null : $img;
153
- };
154
-
155
- /** @returns {jQuery} the caption in the given entry */
156
- JustifiedGallery.prototype.captionFromEntry = function ($entry) {
157
- var $caption = $entry.find('> .caption');
158
- return $caption.length === 0 ? null : $caption;
159
- };
160
-
161
- /**
162
- * Display the entry
163
- *
164
- * @param {jQuery} $entry the entry to display
165
- * @param {int} x the x position where the entry must be positioned
166
- * @param y the y position where the entry must be positioned
167
- * @param imgWidth the image width
168
- * @param imgHeight the image height
169
- * @param rowHeight the row height of the row that owns the entry
170
- */
171
- JustifiedGallery.prototype.displayEntry = function ($entry, x, y, imgWidth, imgHeight, rowHeight) {
172
- $entry.width(imgWidth);
173
- $entry.height(rowHeight);
174
- $entry.css('top', y);
175
- $entry.css('left', x);
176
-
177
- var $image = this.imgFromEntry($entry);
178
- if (