1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
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 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
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 |
|
88 |
|
89 |
|
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 = (function () {
|
121 | function Share(instance) {
|
122 | this.shareOptions = [];
|
123 |
|
124 | this.core = instance;
|
125 |
|
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 |
|