UNPKG

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