1 | "use strict";
|
2 | var __spreadArrays = (this && this.__spreadArrays) || function () {
|
3 | for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
4 | for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
5 | for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
6 | r[k] = a[j];
|
7 | return r;
|
8 | };
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.convertToData = void 0;
|
11 | var lgQuery_1 = require("./lgQuery");
|
12 | var defaultDynamicOptions = [
|
13 | 'src',
|
14 | 'sources',
|
15 | 'subHtml',
|
16 | 'subHtmlUrl',
|
17 | 'html',
|
18 | 'video',
|
19 | 'poster',
|
20 | 'slideName',
|
21 | 'responsive',
|
22 | 'srcset',
|
23 | 'sizes',
|
24 | 'iframe',
|
25 | 'downloadUrl',
|
26 | 'download',
|
27 | 'width',
|
28 | 'facebookShareUrl',
|
29 | 'tweetText',
|
30 | 'iframeTitle',
|
31 | 'twitterShareUrl',
|
32 | 'pinterestShareUrl',
|
33 | 'pinterestText',
|
34 | 'fbHtml',
|
35 | 'disqusIdentifier',
|
36 | 'disqusUrl',
|
37 | ];
|
38 |
|
39 | function convertToData(attr) {
|
40 |
|
41 | if (attr === 'href') {
|
42 | return 'src';
|
43 | }
|
44 | attr = attr.replace('data-', '');
|
45 | attr = attr.charAt(0).toLowerCase() + attr.slice(1);
|
46 | attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
|
47 | return attr;
|
48 | }
|
49 | exports.convertToData = convertToData;
|
50 | var utils = {
|
51 | |
52 |
|
53 |
|
54 | getSize: function (el, container, spacing, defaultLgSize) {
|
55 | if (spacing === void 0) { spacing = 0; }
|
56 | var LGel = lgQuery_1.$LG(el);
|
57 | var lgSize = LGel.attr('data-lg-size') || defaultLgSize;
|
58 | if (!lgSize) {
|
59 | return;
|
60 | }
|
61 | var isResponsiveSizes = lgSize.split(',');
|
62 |
|
63 | if (isResponsiveSizes[1]) {
|
64 | var wWidth = window.innerWidth;
|
65 | for (var i = 0; i < isResponsiveSizes.length; i++) {
|
66 | var size_1 = isResponsiveSizes[i];
|
67 | var responsiveWidth = parseInt(size_1.split('-')[2], 10);
|
68 | if (responsiveWidth > wWidth) {
|
69 | lgSize = size_1;
|
70 | break;
|
71 | }
|
72 |
|
73 | if (i === isResponsiveSizes.length - 1) {
|
74 | lgSize = size_1;
|
75 | }
|
76 | }
|
77 | }
|
78 | var size = lgSize.split('-');
|
79 | var width = parseInt(size[0], 10);
|
80 | var height = parseInt(size[1], 10);
|
81 | var cWidth = container.width();
|
82 | var cHeight = container.height() - spacing;
|
83 | var maxWidth = Math.min(cWidth, width);
|
84 | var maxHeight = Math.min(cHeight, height);
|
85 | var ratio = Math.min(maxWidth / width, maxHeight / height);
|
86 | return { width: width * ratio, height: height * ratio };
|
87 | },
|
88 | |
89 |
|
90 |
|
91 |
|
92 |
|
93 | getTransform: function (el, container, top, bottom, imageSize) {
|
94 | if (!imageSize) {
|
95 | return;
|
96 | }
|
97 | var LGel = lgQuery_1.$LG(el).find('img').first();
|
98 | if (!LGel.get()) {
|
99 | return;
|
100 | }
|
101 | var containerRect = container.get().getBoundingClientRect();
|
102 | var wWidth = containerRect.width;
|
103 |
|
104 | var wHeight = container.height() - (top + bottom);
|
105 | var elWidth = LGel.width();
|
106 | var elHeight = LGel.height();
|
107 | var elStyle = LGel.style();
|
108 | var x = (wWidth - elWidth) / 2 -
|
109 | LGel.offset().left +
|
110 | (parseFloat(elStyle.paddingLeft) || 0) +
|
111 | (parseFloat(elStyle.borderLeft) || 0) +
|
112 | lgQuery_1.$LG(window).scrollLeft() +
|
113 | containerRect.left;
|
114 | var y = (wHeight - elHeight) / 2 -
|
115 | LGel.offset().top +
|
116 | (parseFloat(elStyle.paddingTop) || 0) +
|
117 | (parseFloat(elStyle.borderTop) || 0) +
|
118 | lgQuery_1.$LG(window).scrollTop() +
|
119 | top;
|
120 | var scX = elWidth / imageSize.width;
|
121 | var scY = elHeight / imageSize.height;
|
122 | var transform = 'translate3d(' +
|
123 | (x *= -1) +
|
124 | 'px, ' +
|
125 | (y *= -1) +
|
126 | 'px, 0) scale3d(' +
|
127 | scX +
|
128 | ', ' +
|
129 | scY +
|
130 | ', 1)';
|
131 | return transform;
|
132 | },
|
133 | getIframeMarkup: function (iframeWidth, iframeHeight, src, iframeTitle) {
|
134 | var title = iframeTitle ? 'title="' + iframeTitle + '"' : '';
|
135 | return "<div class=\"lg-video-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; height: " + iframeHeight + "\">\n <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\" allowfullscreen=\"true\"></iframe>\n </div>";
|
136 | },
|
137 | getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {
|
138 | var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : '';
|
139 | var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : '';
|
140 | var imgMarkup = "<img " + altAttr + " " + srcsetAttr + " " + sizesAttr + " class=\"lg-object lg-image\" data-index=\"" + index + "\" src=\"" + src + "\" />";
|
141 | var sourceTag = '';
|
142 | if (sources) {
|
143 | var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;
|
144 | sourceTag = sourceObj.map(function (source) {
|
145 | var attrs = '';
|
146 | Object.keys(source).forEach(function (key) {
|
147 |
|
148 | attrs += " " + key + "=\"" + source[key] + "\"";
|
149 | });
|
150 | return "<source " + attrs + "></source>";
|
151 | });
|
152 | }
|
153 | return "" + sourceTag + imgMarkup;
|
154 | },
|
155 |
|
156 | getResponsiveSrc: function (srcItms) {
|
157 | var rsWidth = [];
|
158 | var rsSrc = [];
|
159 | var src = '';
|
160 | for (var i = 0; i < srcItms.length; i++) {
|
161 | var _src = srcItms[i].split(' ');
|
162 |
|
163 | if (_src[0] === '') {
|
164 | _src.splice(0, 1);
|
165 | }
|
166 | rsSrc.push(_src[0]);
|
167 | rsWidth.push(_src[1]);
|
168 | }
|
169 | var wWidth = window.innerWidth;
|
170 | for (var j = 0; j < rsWidth.length; j++) {
|
171 | if (parseInt(rsWidth[j], 10) > wWidth) {
|
172 | src = rsSrc[j];
|
173 | break;
|
174 | }
|
175 | }
|
176 | return src;
|
177 | },
|
178 | isImageLoaded: function (img) {
|
179 | if (!img)
|
180 | return false;
|
181 |
|
182 |
|
183 |
|
184 | if (!img.complete) {
|
185 | return false;
|
186 | }
|
187 |
|
188 |
|
189 |
|
190 | if (img.naturalWidth === 0) {
|
191 | return false;
|
192 | }
|
193 |
|
194 | return true;
|
195 | },
|
196 | getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, _isVideo) {
|
197 | var videoClass = '';
|
198 | if (_isVideo && _isVideo.youtube) {
|
199 | videoClass = 'lg-has-youtube';
|
200 | }
|
201 | else if (_isVideo && _isVideo.vimeo) {
|
202 | videoClass = 'lg-has-vimeo';
|
203 | }
|
204 | else {
|
205 | videoClass = 'lg-has-html5';
|
206 | }
|
207 | return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n <div class=\"lg-video-play-button\">\n <svg\n viewBox=\"0 0 20 20\"\n preserveAspectRatio=\"xMidYMid\"\n focusable=\"false\"\n aria-labelledby=\"Play video\"\n role=\"img\"\n class=\"lg-video-play-icon\"\n >\n <title>Play video</title>\n <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n </svg>\n <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n </svg>\n </div>\n " + (dummyImg || '') + "\n <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n </div>";
|
208 | },
|
209 | |
210 |
|
211 |
|
212 |
|
213 |
|
214 |
|
215 |
|
216 | getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {
|
217 | var dynamicElements = [];
|
218 | var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);
|
219 | [].forEach.call(items, function (item) {
|
220 | var dynamicEl = {};
|
221 | for (var i = 0; i < item.attributes.length; i++) {
|
222 | var attr = item.attributes[i];
|
223 | if (attr.specified) {
|
224 | var dynamicAttr = convertToData(attr.name);
|
225 | var label = '';
|
226 | if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {
|
227 | label = dynamicAttr;
|
228 | }
|
229 | if (label) {
|
230 | dynamicEl[label] = attr.value;
|
231 | }
|
232 | }
|
233 | }
|
234 | var currentItem = lgQuery_1.$LG(item);
|
235 | var alt = currentItem.find('img').first().attr('alt');
|
236 | var title = currentItem.attr('title');
|
237 | var thumb = exThumbImage
|
238 | ? currentItem.attr(exThumbImage)
|
239 | : currentItem.find('img').first().attr('src');
|
240 | dynamicEl.thumb = thumb;
|
241 | if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {
|
242 | dynamicEl.subHtml = title || alt || '';
|
243 | }
|
244 | dynamicEl.alt = alt || title || '';
|
245 | dynamicElements.push(dynamicEl);
|
246 | });
|
247 | return dynamicElements;
|
248 | },
|
249 | isMobile: function () {
|
250 | return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
|
251 | },
|
252 | };
|
253 | exports.default = utils;
|
254 |
|
\ | No newline at end of file |