UNPKG

6.84 kBJavaScriptView Raw
1/*!
2 * lightgallery | 2.2.1 | September 4th 2021
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.lgRelativeCaption = 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 /**
41 * List of lightGallery events
42 * All events should be documented here
43 * Below interfaces are used to build the website documentations
44 * */
45 var lGEvents = {
46 afterAppendSlide: 'lgAfterAppendSlide',
47 init: 'lgInit',
48 hasVideo: 'lgHasVideo',
49 containerResize: 'lgContainerResize',
50 updateSlides: 'lgUpdateSlides',
51 afterAppendSubHtml: 'lgAfterAppendSubHtml',
52 beforeOpen: 'lgBeforeOpen',
53 afterOpen: 'lgAfterOpen',
54 slideItemLoad: 'lgSlideItemLoad',
55 beforeSlide: 'lgBeforeSlide',
56 afterSlide: 'lgAfterSlide',
57 posterClick: 'lgPosterClick',
58 dragStart: 'lgDragStart',
59 dragMove: 'lgDragMove',
60 dragEnd: 'lgDragEnd',
61 beforeNextSlide: 'lgBeforeNextSlide',
62 beforePrevSlide: 'lgBeforePrevSlide',
63 beforeClose: 'lgBeforeClose',
64 afterClose: 'lgAfterClose',
65 rotateLeft: 'lgRotateLeft',
66 rotateRight: 'lgRotateRight',
67 flipHorizontal: 'lgFlipHorizontal',
68 flipVertical: 'lgFlipVertical',
69 };
70
71 var relativeCaptionSettings = {
72 relativeCaption: false,
73 };
74
75 /**
76 * lightGallery caption for placing captions relative to the image
77 */
78 var RelativeCaption = /** @class */ (function () {
79 function RelativeCaption(instance) {
80 // get lightGallery core plugin instance
81 this.core = instance;
82 // Override some of lightGallery default settings
83 var defaultSettings = {
84 addClass: this.core.settings.addClass + ' lg-relative-caption',
85 };
86 this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings);
87 // extend module default settings with lightGallery core settings
88 this.settings = __assign(__assign(__assign({}, relativeCaptionSettings), this.core.settings), defaultSettings);
89 return this;
90 }
91 RelativeCaption.prototype.init = function () {
92 var _this = this;
93 if (!this.settings.relativeCaption) {
94 return;
95 }
96 this.core.LGel.on(lGEvents.slideItemLoad + ".caption", function (event) {
97 var _a = event.detail, index = _a.index, delay = _a.delay;
98 setTimeout(function () {
99 if (index === _this.core.index) {
100 _this.setRelativeCaption(index);
101 }
102 }, delay);
103 });
104 this.core.LGel.on(lGEvents.afterSlide + ".caption", function (event) {
105 var index = event.detail.index;
106 setTimeout(function () {
107 var slide = _this.core.getSlideItem(index);
108 if (slide.hasClass('lg-complete')) {
109 _this.setRelativeCaption(index);
110 }
111 });
112 });
113 this.core.LGel.on(lGEvents.beforeSlide + ".caption", function (event) {
114 var index = event.detail.index;
115 setTimeout(function () {
116 var slide = _this.core.getSlideItem(index);
117 slide.removeClass('lg-show-caption');
118 });
119 });
120 this.core.LGel.on(lGEvents.containerResize + ".caption", function (event) {
121 _this.setRelativeCaption(_this.core.index);
122 });
123 };
124 RelativeCaption.prototype.setCaptionStyle = function (index, rect, slideWrapRect) {
125 var $subHtmlInner = this.core
126 .getSlideItem(index)
127 .find('.lg-relative-caption-item');
128 var $subHtml = this.core.getSlideItem(index).find('.lg-sub-html');
129 $subHtml.css('width', rect.width + "px").css('left', rect.left + "px");
130 var subHtmlRect = $subHtmlInner.get().getBoundingClientRect();
131 var bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height;
132 $subHtml.css('top', "auto").css('bottom', Math.max(bottom, 0) + "px");
133 };
134 RelativeCaption.prototype.setRelativeCaption = function (index) {
135 var slide = this.core.getSlideItem(index);
136 if (slide.hasClass('lg-current')) {
137 var rect = this.core
138 .getSlideItem(index)
139 .find('.lg-object')
140 .get()
141 .getBoundingClientRect();
142 var slideWrapRect = this.core
143 .getSlideItem(index)
144 .get()
145 .getBoundingClientRect();
146 this.setCaptionStyle(index, rect, slideWrapRect);
147 slide.addClass('lg-show-caption');
148 }
149 };
150 RelativeCaption.prototype.destroy = function () {
151 this.core.LGel.off('.caption');
152 };
153 return RelativeCaption;
154 }());
155
156 return RelativeCaption;
157
158})));
159//# sourceMappingURL=lg-relative-caption.umd.js.map