UNPKG

lightgallery

Version:

lightGallery is a feature-rich, modular JavaScript gallery plugin for building beautiful image and video galleries for the web and the mobile

2 lines (1 loc) • 7.83 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgShare=t()}(this,function(){"use strict";const e={share:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z"/></svg>',shareFacebook:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z"/></svg>',shareX:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><circle cx="512" cy="512" r="491.52"/><path fill="#fff" transform="translate(227 224) scale(24)" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>',sharePinterest:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z"/></svg>'},t=["lg-outer","lg-item","lg-img-wrap","lg-img-rotate"];const r={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"X",pinterest:!0,pinterestDropdownText:"Pinterest",additionalShareOptions:[]};function o(e){return t=e,r=window.location.href,"//www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(t.facebookShareUrl||r);var t,r}function n(e){return function(e,t){var r;const o=encodeURIComponent(e.twitterShareUrl||t);return`//x.com/intent/post?text=${encodeURIComponent(null!=(r=e.tweetText)?r:"")}&url=${o}`}(e,window.location.href)}function s(e){return function(e,t){var r,o;const n=encodeURIComponent(null!=(r=e.src)?r:"");return`//www.pinterest.com/pin/create/button/?url=${encodeURIComponent(e.pinterestShareUrl||t)}&media=${n}&description=${null!=(o=e.pinterestText)?o:""}`}(e,window.location.href)}const i="lgAfterSlide",a="lgBeforeClose";var l=Object.defineProperty,h=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,d=(e,t,r)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))c.call(t,r)&&d(e,r,t[r]);if(h)for(var r of h(t))p.call(t,r)&&d(e,r,t[r]);return e};return class{constructor(e){return this.shareOptions=[],this.listening=!1,this.onDocumentPointerDown=e=>{const r=e.target,o=this.core.outer.find(".lg-share-outer").get();r&&o&&o.contains(r)||(!function(e){var r;const o=null==(r=e.target)?void 0:r.classList;!o||!t.some(e=>o.contains(e))||(e.preventDefault(),e.stopPropagation())}(e),this.setDropdownOpen(!1))},this.onDocumentKeydown=e=>{var t;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),this.setDropdownOpen(!1),void(null==(t=this.core.outer.find(".lg-share").get())||t.focus());if("Tab"!==e.key)return;const r=this.core.outer.find(".lg-share-outer").get(),o=r?Array.from(r.querySelectorAll("button, a[href]")):[],n=o.indexOf(document.activeElement);-1!==n&&(e.shiftKey?0===n:n===o.length-1)&&this.setDropdownOpen(!1)},this.core=e,this.settings=u(u({},r),this.core.settings),this}init(){this.core.registerDefaultIcons(e),this.settings.share&&(this.shareOptions=[...this.getDefaultShareOptions(),...this.settings.additionalShareOptions],this.setLgShareMarkup(),this.core.outer.find(".lg-share-outer .lg-dropdown").append(this.getShareListHtml()),this.core.LGel.on(`${i}.share`,this.onAfterSlide.bind(this)),this.core.LGel.on(`${a}.share`,()=>{this.setDropdownOpen(!1)}))}getShareListHtml(){let e="";return this.shareOptions.forEach(t=>{e+=t.dropdownHTML}),e}prefersNativeShare(){var e;return(null!=(e=this.settings.preferNativeShare)?e:"undefined"!=typeof window&&(navigator.maxTouchPoints>0||"ontouchstart"in window))&&"undefined"!=typeof navigator&&"function"==typeof navigator.share}setLgShareMarkup(){var e,t;const r=this.prefersNativeShare()?"":'aria-haspopup="true" aria-expanded="false"';this.core.$toolbar.append(`<div class="lg-share-outer"><button type="button" aria-label="${null!=(t=null==(e=this.settings.sharePluginStrings)?void 0:e.share)?t:this.core.settings.strings.share}" ${r} class="lg-share lg-icon"></button>\n <ul class="lg-dropdown" style="position: absolute;"></ul></div>`);this.core.outer.find(".lg-share").first().on("click.lg",()=>{if(this.prefersNativeShare()){const e=function(e,t){const r={url:e.shareUrl||e.twitterShareUrl||e.facebookShareUrl||t},o=e.title||e.alt;o&&(r.title=o);const n=e.tweetText||e.pinterestText;return n&&(r.text=n),r}(this.core.galleryItems[this.core.index],window.location.href);if(function(e,t){return!(!e||"function"!=typeof e.share)&&("function"!=typeof e.canShare||e.canShare(t))}(navigator,e))return void navigator.share(e).catch(()=>{})}this.setDropdownOpen(!this.core.outer.hasClass("lg-dropdown-active"))})}setDropdownOpen(e){e?this.core.outer.addClass("lg-dropdown-active"):this.core.outer.removeClass("lg-dropdown-active"),this.core.outer.find(".lg-share").first().attr("aria-expanded",e?"true":"false"),this.listenOutside(e)}listenOutside(e){e!==this.listening&&(this.listening=e,e?(document.addEventListener("pointerdown",this.onDocumentPointerDown,!0),document.addEventListener("keydown",this.onDocumentKeydown,!0)):(document.removeEventListener("pointerdown",this.onDocumentPointerDown,!0),document.removeEventListener("keydown",this.onDocumentKeydown,!0)))}onAfterSlide(e){const{index:t}=e.detail,r=this.core.galleryItems[t];setTimeout(()=>{this.shareOptions.forEach(e=>{const t=e.selector;this.core.outer.find(t).attr("href",e.generateLink(r))})},100)}getShareListItemHTML(e,t){return`<li><a class="lg-share-${e}" rel="noopener" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">${t}</span></a></li>`}getDefaultShareOptions(){return[...this.settings.facebook?[{type:"facebook",generateLink:o,dropdownHTML:this.getShareListItemHTML("facebook",this.settings.facebookDropdownText),selector:".lg-share-facebook"}]:[],...this.settings.twitter?[{type:"twitter",generateLink:n,dropdownHTML:this.getShareListItemHTML("twitter",this.settings.twitterDropdownText),selector:".lg-share-twitter"}]:[],...this.settings.pinterest?[{type:"pinterest",generateLink:s,dropdownHTML:this.getShareListItemHTML("pinterest",this.settings.pinterestDropdownText),selector:".lg-share-pinterest"}]:[]]}destroy(){this.listenOutside(!1),this.core.outer.find(".lg-share-outer").remove(),this.core.LGel.off(".lg.share"),this.core.LGel.off(".share")}}});