UNPKG

9.75 kBJavaScriptView Raw
1/*!
2 * lightgallery | 2.7.1 | January 11th 2023
3 * http://www.lightgalleryjs.com/
4 * Copyright (c) 2020 Sachin Neravath;
5 * @license GPLv3
6 */
7
8(function (global, factory) {
9 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
10 typeof define === 'function' && define.amd ? define(factory) :
11 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgShare = factory());
12}(this, (function () { 'use strict';
13
14 /*! *****************************************************************************
15 Copyright (c) Microsoft Corporation.
16
17 Permission to use, copy, modify, and/or distribute this software for any
18 purpose with or without fee is hereby granted.
19
20 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
21 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
22 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
23 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
24 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
25 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
26 PERFORMANCE OF THIS SOFTWARE.
27 ***************************************************************************** */
28
29 var __assign = function() {
30 __assign = Object.assign || function __assign(t) {
31 for (var s, i = 1, n = arguments.length; i < n; i++) {
32 s = arguments[i];
33 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
34 }
35 return t;
36 };
37 return __assign.apply(this, arguments);
38 };
39
40 function __spreadArrays() {
41 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
42 for (var r = Array(s), k = 0, i = 0; i < il; i++)
43 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
44 r[k] = a[j];
45 return r;
46 }
47
48 var shareSettings = {
49 share: true,
50 facebook: true,
51 facebookDropdownText: 'Facebook',
52 twitter: true,
53 twitterDropdownText: 'Twitter',
54 pinterest: true,
55 pinterestDropdownText: 'Pinterest',
56 additionalShareOptions: [],
57 sharePluginStrings: { share: 'Share' },
58 };
59
60 function getFacebookShareLink(galleryItem) {
61 var facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';
62 return (facebookBaseUrl +
63 encodeURIComponent(galleryItem.facebookShareUrl || window.location.href));
64 }
65
66 function getTwitterShareLink(galleryItem) {
67 var twitterBaseUrl = '//twitter.com/intent/tweet?text=';
68 var url = encodeURIComponent(galleryItem.twitterShareUrl || window.location.href);
69 var text = galleryItem.tweetText;
70 return twitterBaseUrl + text + '&url=' + url;
71 }
72
73 function getPinterestShareLink(galleryItem) {
74 var pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';
75 var description = galleryItem.pinterestText;
76 var media = encodeURIComponent(galleryItem.src);
77 var url = encodeURIComponent(galleryItem.pinterestShareUrl || window.location.href);
78 return (pinterestBaseUrl +
79 url +
80 '&media=' +
81 media +
82 '&description=' +
83 description);
84 }
85
86 /**
87 * List of lightGallery events
88 * All events should be documented here
89 * Below interfaces are used to build the website documentations
90 * */
91 var lGEvents = {
92 afterAppendSlide: 'lgAfterAppendSlide',
93 init: 'lgInit',
94 hasVideo: 'lgHasVideo',
95 containerResize: 'lgContainerResize',
96 updateSlides: 'lgUpdateSlides',
97 afterAppendSubHtml: 'lgAfterAppendSubHtml',
98 beforeOpen: 'lgBeforeOpen',
99 afterOpen: 'lgAfterOpen',
100 slideItemLoad: 'lgSlideItemLoad',
101 beforeSlide: 'lgBeforeSlide',
102 afterSlide: 'lgAfterSlide',
103 posterClick: 'lgPosterClick',
104 dragStart: 'lgDragStart',
105 dragMove: 'lgDragMove',
106 dragEnd: 'lgDragEnd',
107 beforeNextSlide: 'lgBeforeNextSlide',
108 beforePrevSlide: 'lgBeforePrevSlide',
109 beforeClose: 'lgBeforeClose',
110 afterClose: 'lgAfterClose',
111 rotateLeft: 'lgRotateLeft',
112 rotateRight: 'lgRotateRight',
113 flipHorizontal: 'lgFlipHorizontal',
114 flipVertical: 'lgFlipVertical',
115 autoplay: 'lgAutoplay',
116 autoplayStart: 'lgAutoplayStart',
117 autoplayStop: 'lgAutoplayStop',
118 };
119
120 var Share = /** @class */ (function () {
121 function Share(instance) {
122 this.shareOptions = [];
123 // get lightGallery core plugin instance
124 this.core = instance;
125 // extend module default settings with lightGallery core settings
126 this.settings = __assign(__assign({}, shareSettings), this.core.settings);
127 return this;
128 }
129 Share.prototype.init = function () {
130 if (!this.settings.share) {
131 return;
132 }
133 this.shareOptions = __spreadArrays(this.getDefaultShareOptions(), this.settings.additionalShareOptions);
134 this.setLgShareMarkup();
135 this.core.outer
136 .find('.lg-share .lg-dropdown')
137 .append(this.getShareListHtml());
138 this.core.LGel.on(lGEvents.afterSlide + ".share", this.onAfterSlide.bind(this));
139 };
140 Share.prototype.getShareListHtml = function () {
141 var shareHtml = '';
142 this.shareOptions.forEach(function (shareOption) {
143 shareHtml += shareOption.dropdownHTML;
144 });
145 return shareHtml;
146 };
147 Share.prototype.setLgShareMarkup = function () {
148 var _this = this;
149 this.core.$toolbar.append("<button type=\"button\" aria-label=\"" + this.settings.sharePluginStrings['share'] + "\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>");
150 this.core.outer.append('<div class="lg-dropdown-overlay"></div>');
151 var $shareButton = this.core.outer.find('.lg-share');
152 $shareButton.first().on('click.lg', function () {
153 _this.core.outer.toggleClass('lg-dropdown-active');
154 if (_this.core.outer.hasClass('lg-dropdown-active')) {
155 _this.core.outer.attr('aria-expanded', true);
156 }
157 else {
158 _this.core.outer.attr('aria-expanded', false);
159 }
160 });
161 this.core.outer
162 .find('.lg-dropdown-overlay')
163 .first()
164 .on('click.lg', function () {
165 _this.core.outer.removeClass('lg-dropdown-active');
166 _this.core.outer.attr('aria-expanded', false);
167 });
168 };
169 Share.prototype.onAfterSlide = function (event) {
170 var _this = this;
171 var index = event.detail.index;
172 var currentItem = this.core.galleryItems[index];
173 setTimeout(function () {
174 _this.shareOptions.forEach(function (shareOption) {
175 var selector = shareOption.selector;
176 _this.core.outer
177 .find(selector)
178 .attr('href', shareOption.generateLink(currentItem));
179 });
180 }, 100);
181 };
182 Share.prototype.getShareListItemHTML = function (type, text) {
183 return "<li><a class=\"lg-share-" + type + "\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">" + text + "</span></a></li>";
184 };
185 Share.prototype.getDefaultShareOptions = function () {
186 return __spreadArrays((this.settings.facebook
187 ? [
188 {
189 type: 'facebook',
190 generateLink: getFacebookShareLink,
191 dropdownHTML: this.getShareListItemHTML('facebook', this.settings.facebookDropdownText),
192 selector: '.lg-share-facebook',
193 },
194 ]
195 : []), (this.settings.twitter
196 ? [
197 {
198 type: 'twitter',
199 generateLink: getTwitterShareLink,
200 dropdownHTML: this.getShareListItemHTML('twitter', this.settings.twitterDropdownText),
201 selector: '.lg-share-twitter',
202 },
203 ]
204 : []), (this.settings.pinterest
205 ? [
206 {
207 type: 'pinterest',
208 generateLink: getPinterestShareLink,
209 dropdownHTML: this.getShareListItemHTML('pinterest', this.settings.pinterestDropdownText),
210 selector: '.lg-share-pinterest',
211 },
212 ]
213 : []));
214 };
215 Share.prototype.destroy = function () {
216 this.core.outer.find('.lg-dropdown-overlay').remove();
217 this.core.outer.find('.lg-share').remove();
218 this.core.LGel.off('.lg.share');
219 this.core.LGel.off('.share');
220 };
221 return Share;
222 }());
223
224 return Share;
225
226})));
227//# sourceMappingURL=lg-share.umd.js.map