lightgallery 2.3.0-beta.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/lightgallery-bundle.css +19 -26
- package/css/lightgallery-bundle.min.css +1 -1
- package/css/lightgallery-core.css +0 -19
- package/css/lightgallery.css +19 -26
- package/lg-events.d.ts +0 -4
- package/lg-settings.d.ts +17 -8
- package/lg-utils.d.ts +25 -4
- package/lib/lg-settings.js +4 -2
- package/lib/lg-settings.js.map +1 -1
- package/lib/lg-utils.js +45 -5
- package/lib/lg-utils.js.map +1 -1
- package/lib/lgQuery.js +31 -20
- package/lib/lgQuery.js.map +1 -1
- package/lib/lightgallery.js +113 -119
- package/lib/lightgallery.js.map +1 -1
- package/lib/plugins/video/lg-video-settings.js.map +1 -1
- package/lib/plugins/video/lg-video-utils.js +24 -0
- package/lib/plugins/video/lg-video-utils.js.map +1 -0
- package/lib/plugins/video/lg-video.js +37 -31
- package/lib/plugins/video/lg-video.js.map +1 -1
- package/lib/plugins/zoom/lg-zoom.js +7 -8
- package/lib/plugins/zoom/lg-zoom.js.map +1 -1
- package/lightgallery.d.ts +18 -10
- package/lightgallery.es5.js +194 -147
- package/lightgallery.es5.js.map +1 -1
- package/lightgallery.min.js +2 -2
- package/lightgallery.umd.js +194 -147
- package/lightgallery.umd.js.map +1 -1
- package/lit/lightgallery.esm.js +7 -7
- package/lit/lightgallery.umd.js +3 -3
- package/package.json +1 -1
- package/plugins/autoplay/lg-autoplay.es5.js +1 -1
- package/plugins/autoplay/lg-autoplay.es5.js.map +1 -1
- package/plugins/autoplay/lg-autoplay.min.js +1 -1
- package/plugins/autoplay/lg-autoplay.umd.js +1 -1
- package/plugins/autoplay/lg-autoplay.umd.js.map +1 -1
- package/plugins/comment/lg-comment.es5.js +1 -1
- package/plugins/comment/lg-comment.es5.js.map +1 -1
- package/plugins/comment/lg-comment.min.js +1 -1
- package/plugins/comment/lg-comment.umd.js +1 -1
- package/plugins/comment/lg-comment.umd.js.map +1 -1
- package/plugins/fullscreen/lg-fullscreen.es5.js +1 -1
- package/plugins/fullscreen/lg-fullscreen.min.js +1 -1
- package/plugins/fullscreen/lg-fullscreen.umd.js +1 -1
- package/plugins/hash/lg-hash.es5.js +1 -1
- package/plugins/hash/lg-hash.es5.js.map +1 -1
- package/plugins/hash/lg-hash.min.js +1 -1
- package/plugins/hash/lg-hash.umd.js +1 -1
- package/plugins/hash/lg-hash.umd.js.map +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.es5.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.es5.js.map +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.min.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.umd.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.umd.js.map +1 -1
- package/plugins/pager/lg-pager.es5.js +1 -1
- package/plugins/pager/lg-pager.es5.js.map +1 -1
- package/plugins/pager/lg-pager.min.js +1 -1
- package/plugins/pager/lg-pager.umd.js +1 -1
- package/plugins/pager/lg-pager.umd.js.map +1 -1
- package/plugins/relativeCaption/lg-relative-caption.es5.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.es5.js.map +1 -1
- package/plugins/relativeCaption/lg-relative-caption.min.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.umd.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.umd.js.map +1 -1
- package/plugins/rotate/lg-rotate.es5.js +1 -1
- package/plugins/rotate/lg-rotate.es5.js.map +1 -1
- package/plugins/rotate/lg-rotate.min.js +1 -1
- package/plugins/rotate/lg-rotate.umd.js +1 -1
- package/plugins/rotate/lg-rotate.umd.js.map +1 -1
- package/plugins/share/lg-share.es5.js +1 -1
- package/plugins/share/lg-share.es5.js.map +1 -1
- package/plugins/share/lg-share.min.js +1 -1
- package/plugins/share/lg-share.umd.js +1 -1
- package/plugins/share/lg-share.umd.js.map +1 -1
- package/plugins/thumbnail/lg-thumbnail.es5.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.es5.js.map +1 -1
- package/plugins/thumbnail/lg-thumbnail.min.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.umd.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.umd.js.map +1 -1
- package/plugins/video/lg-video-settings.d.ts +2 -1
- package/plugins/video/lg-video-utils.d.ts +6 -0
- package/plugins/video/lg-video.d.ts +6 -1
- package/plugins/video/lg-video.es5.js +56 -30
- package/plugins/video/lg-video.es5.js.map +1 -1
- package/plugins/video/lg-video.min.js +2 -2
- package/plugins/video/lg-video.umd.js +56 -30
- package/plugins/video/lg-video.umd.js.map +1 -1
- package/plugins/zoom/lg-zoom.es5.js +8 -9
- package/plugins/zoom/lg-zoom.es5.js.map +1 -1
- package/plugins/zoom/lg-zoom.min.js +2 -2
- package/plugins/zoom/lg-zoom.umd.js +8 -9
- package/plugins/zoom/lg-zoom.umd.js.map +1 -1
- package/react/Lightgallery.es5.js +194 -147
- package/react/Lightgallery.es5.js.map +1 -1
- package/react/Lightgallery.umd.js +194 -147
- package/react/Lightgallery.umd.js.map +1 -1
- package/scss/_lg-theme-default.scss +17 -10
- package/scss/lightgallery-core.scss +0 -24
- package/vue/LightGalleryVue.common.js +188 -150
- package/vue/LightGalleryVue.common.js.map +1 -1
- package/vue/LightGalleryVue.umd.js +188 -150
- package/vue/LightGalleryVue.umd.js.map +1 -1
- package/vue/LightGalleryVue.umd.min.js +2 -2
- package/vue/LightGalleryVue.umd.min.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lg-rotate.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/rotate/lg-rotate-settings.ts","../../../src/plugins/rotate/lg-rotate.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n\n /**\n * True for first slide\n */\n isFirstSlide: boolean;\n}\n","export interface RotateSettings {\n /**\n * Enable/Disable rotate option\n */\n rotate: boolean;\n\n /**\n * Rotate speed in milliseconds\n */\n rotateSpeed: number;\n\n /**\n * Enable rotate left.\n */\n rotateLeft: boolean;\n\n /**\n * Enable rotate right.\n */\n rotateRight: boolean;\n\n /**\n * Enable flip horizontal.\n */\n flipHorizontal: boolean;\n\n /**\n * Enable flip vertical.\n */\n flipVertical: boolean;\n}\nexport const rotateSettings = {\n rotate: true,\n rotateSpeed: 400,\n rotateLeft: true,\n rotateRight: true,\n flipHorizontal: true,\n flipVertical: true,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { rotateSettings, RotateSettings } from './lg-rotate-settings';\n\nexport default class Rotate {\n core: LightGallery;\n settings: RotateSettings;\n rotateValuesList!: {\n [key: string]: any;\n };\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...rotateSettings, ...this.core.settings };\n\n return this;\n }\n buildTemplates(): void {\n let rotateIcons = '';\n if (this.settings.flipVertical) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-flip-ver\" aria-label=\"flip vertical\" class=\"lg-flip-ver lg-icon\"></button>';\n }\n if (this.settings.flipHorizontal) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-flip-hor\" aria-label=\"Flip horizontal\" class=\"lg-flip-hor lg-icon\"></button>';\n }\n if (this.settings.rotateLeft) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-rotate-left\" aria-label=\"Rotate left\" class=\"lg-rotate-left lg-icon\"></button>';\n }\n if (this.settings.rotateRight) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-rotate-right\" aria-label=\"Rotate right\" class=\"lg-rotate-right lg-icon\"></button>';\n }\n this.core.$toolbar.append(rotateIcons);\n }\n\n init(): void {\n if (!this.settings.rotate) {\n return;\n }\n this.buildTemplates();\n\n // Save rotate config for each item to persist its rotate, flip values\n // even after navigating to diferent slides\n this.rotateValuesList = {};\n\n // event triggered after appending slide content\n this.core.LGel.on(`${lGEvents.afterAppendSlide}.rotate`, (event) => {\n const { index } = event.detail;\n const imageWrap = this.core\n .getSlideItem(index)\n .find('.lg-img-wrap')\n .first();\n\n imageWrap.wrap('lg-img-rotate');\n this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .css('transition-duration', this.settings.rotateSpeed + 'ms');\n });\n\n this.core.outer\n .find('#lg-rotate-left')\n .first()\n .on('click.lg', this.rotateLeft.bind(this));\n\n this.core.outer\n .find('#lg-rotate-right')\n .first()\n .on('click.lg', this.rotateRight.bind(this));\n\n this.core.outer\n .find('#lg-flip-hor')\n .first()\n .on('click.lg', this.flipHorizontal.bind(this));\n\n this.core.outer\n .find('#lg-flip-ver')\n .first()\n .on('click.lg', this.flipVertical.bind(this));\n\n // Reset rotate on slide change\n this.core.LGel.on(`${lGEvents.beforeSlide}.rotate`, (event) => {\n if (!this.rotateValuesList[event.detail.index]) {\n this.rotateValuesList[event.detail.index] = {\n rotate: 0,\n flipHorizontal: 1,\n flipVertical: 1,\n };\n }\n });\n }\n\n applyStyles(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first();\n\n $image.css(\n 'transform',\n 'rotate(' +\n this.rotateValuesList[this.core.index].rotate +\n 'deg)' +\n ' scale3d(' +\n this.rotateValuesList[this.core.index].flipHorizontal +\n ', ' +\n this.rotateValuesList[this.core.index].flipVertical +\n ', 1)',\n );\n }\n\n rotateLeft(): void {\n this.rotateValuesList[this.core.index].rotate -= 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateLeft, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n rotateRight(): void {\n this.rotateValuesList[this.core.index].rotate += 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateRight, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n getCurrentRotation(el: HTMLElement): number {\n if (!el) {\n return 0;\n }\n const st = this.$LG(el).style();\n const tm =\n st.getPropertyValue('-webkit-transform') ||\n st.getPropertyValue('-moz-transform') ||\n st.getPropertyValue('-ms-transform') ||\n st.getPropertyValue('-o-transform') ||\n st.getPropertyValue('transform') ||\n 'none';\n if (tm !== 'none') {\n const values = tm.split('(')[1].split(')')[0].split(',') as any;\n if (values) {\n const angle = Math.round(\n Math.atan2(values[1], values[0]) * (180 / Math.PI),\n );\n return angle < 0 ? angle + 360 : angle;\n }\n }\n return 0;\n }\n\n flipHorizontal(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipHorizontal';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipVertical';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n this.applyStyles();\n this.triggerEvents(lGEvents.flipHorizontal, {\n flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n flipVertical(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipVertical';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipHorizontal';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n\n this.applyStyles();\n\n this.triggerEvents(lGEvents.flipVertical, {\n flipVertical: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n triggerEvents(event: string, detail: any): void {\n setTimeout(() => {\n this.core.LGel.trigger(event, detail);\n }, this.settings.rotateSpeed + 10);\n }\n\n isImageOrientationChanged(): boolean {\n const rotateValue = this.rotateValuesList[this.core.index];\n const isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;\n const ifFlippedHor = rotateValue.flipHorizontal < 0;\n const ifFlippedVer = rotateValue.flipVertical < 0;\n return isRotated || ifFlippedHor || ifFlippedVer;\n }\n\n closeGallery(): void {\n if (this.isImageOrientationChanged()) {\n this.core.getSlideItem(this.core.index).css('opacity', 0);\n }\n this.rotateValuesList = {};\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery rotate plugin\n this.core.LGel.off('.lg.rotate');\n this.core.LGel.off('.rotate');\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGA;;;;;IAKO,IAAM,QAAQ,GAEjB;QACA,gBAAgB,EAAE,oBAAoB;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,mBAAmB;QACpC,YAAY,EAAE,gBAAgB;QAC9B,kBAAkB,EAAE,sBAAsB;QAC1C,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,aAAa;QACxB,aAAa,EAAE,iBAAiB;QAChC,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,WAAW;QACpB,eAAe,EAAE,mBAAmB;QACpC,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,eAAe;QAC5B,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,gBAAgB;KACjC;;ICHM,IAAM,cAAc,GAAG;QAC1B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,IAAI;KACrB;;;QC1BG,gBAAY,QAAsB,EAAE,GAAY;;YAE5C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;YAEf,IAAI,CAAC,QAAQ,yBAAQ,cAAc,GAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC;YAE7D,OAAO,IAAI,CAAC;SACf;QACD,+BAAc,GAAd;YACI,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAC5B,WAAW;oBACP,yGAAyG,CAAC;aACjH;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;gBAC9B,WAAW;oBACP,2GAA2G,CAAC;aACnH;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAC1B,WAAW;oBACP,6GAA6G,CAAC;aACrH;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC3B,WAAW;oBACP,gHAAgH,CAAC;aACxH;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC1C;QAED,qBAAI,GAAJ;YAAA,iBAuDC;YAtDG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACvB,OAAO;aACV;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;;;YAItB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;;YAG3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,gBAAgB,YAAS,EAAE,UAAC,KAAK;gBACnD,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;gBAC/B,IAAM,SAAS,GAAG,KAAI,CAAC,IAAI;qBACtB,YAAY,CAAC,KAAK,CAAC;qBACnB,IAAI,CAAC,cAAc,CAAC;qBACpB,KAAK,EAAE,CAAC;gBAEb,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAChC,KAAI,CAAC,IAAI;qBACJ,YAAY,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC7B,IAAI,CAAC,gBAAgB,CAAC;qBACtB,GAAG,CAAC,qBAAqB,EAAE,KAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;aACrE,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,KAAK;iBACV,IAAI,CAAC,iBAAiB,CAAC;iBACvB,KAAK,EAAE;iBACP,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhD,IAAI,CAAC,IAAI,CAAC,KAAK;iBACV,IAAI,CAAC,kBAAkB,CAAC;iBACxB,KAAK,EAAE;iBACP,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,IAAI,CAAC,IAAI,CAAC,KAAK;iBACV,IAAI,CAAC,cAAc,CAAC;iBACpB,KAAK,EAAE;iBACP,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAI,CAAC,KAAK;iBACV,IAAI,CAAC,cAAc,CAAC;iBACpB,KAAK,EAAE;iBACP,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;YAGlD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAI,QAAQ,CAAC,WAAW,YAAS,EAAE,UAAC,KAAK;gBACtD,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC5C,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;wBACxC,MAAM,EAAE,CAAC;wBACT,cAAc,EAAE,CAAC;wBACjB,YAAY,EAAE,CAAC;qBAClB,CAAC;iBACL;aACJ,CAAC,CAAC;SACN;QAED,4BAAW,GAAX;YACI,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI;iBACnB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,gBAAgB,CAAC;iBACtB,KAAK,EAAE,CAAC;YAEb,MAAM,CAAC,GAAG,CACN,WAAW,EACX,SAAS;gBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC7C,MAAM;gBACN,WAAW;gBACX,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc;gBACrD,IAAI;gBACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY;gBACnD,MAAM,CACb,CAAC;SACL;QAED,2BAAU,GAAV;YACI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACpC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;aACxD,CAAC,CAAC;SACN;QAED,4BAAW,GAAX;YACI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;aACxD,CAAC,CAAC;SACN;QAED,mCAAkB,GAAlB,UAAmB,EAAe;YAC9B,IAAI,CAAC,EAAE,EAAE;gBACL,OAAO,CAAC,CAAC;aACZ;YACD,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAChC,IAAM,EAAE,GACJ,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;gBACxC,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;gBACrC,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBACpC,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC;gBACnC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAChC,MAAM,CAAC;YACX,IAAI,EAAE,KAAK,MAAM,EAAE;gBACf,IAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAQ,CAAC;gBAChE,IAAI,MAAM,EAAE;oBACR,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CACrD,CAAC;oBACF,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;iBAC1C;aACJ;YACD,OAAO,CAAC,CAAC;SACZ;QAED,+BAAc,GAAd;YACI,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;iBACrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,gBAAgB,CAAC;iBACtB,KAAK,EAAE;iBACP,GAAG,EAAE,CAAC;YACX,IAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,UAAU,GAAG,gBAAgB,CAAC;YAClC,IAAI,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,GAAG,EAAE;gBACnD,UAAU,GAAG,cAAc,CAAC;aAC/B;YACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE;gBACxC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;aACrE,CAAC,CAAC;SACN;QAED,6BAAY,GAAZ;YACI,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;iBACrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,gBAAgB,CAAC;iBACtB,KAAK,EAAE;iBACP,GAAG,EAAE,CAAC;YACX,IAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,UAAU,GAAG,cAAc,CAAC;YAChC,IAAI,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,GAAG,EAAE;gBACnD,UAAU,GAAG,gBAAgB,CAAC;aACjC;YACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE;gBACtC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;aACnE,CAAC,CAAC;SACN;QAED,8BAAa,GAAb,UAAc,KAAa,EAAE,MAAW;YAAxC,iBAIC;YAHG,UAAU,CAAC;gBACP,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACzC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;SACtC;QAED,0CAAyB,GAAzB;YACI,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAC3D,IAAM,YAAY,GAAG,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;YACpD,IAAM,YAAY,GAAG,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC;YAClD,OAAO,SAAS,IAAI,YAAY,IAAI,YAAY,CAAC;SACpD;QAED,6BAAY,GAAZ;YACI,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC7D;YACD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;SAC9B;QAED,wBAAO,GAAP;;YAEI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACjC;QACL,aAAC;IAAD,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"lg-rotate.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/rotate/lg-rotate-settings.ts","../../../src/plugins/rotate/lg-rotate.ts"],"sourcesContent":["import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n","export interface RotateSettings {\n /**\n * Enable/Disable rotate option\n */\n rotate: boolean;\n\n /**\n * Rotate speed in milliseconds\n */\n rotateSpeed: number;\n\n /**\n * Enable rotate left.\n */\n rotateLeft: boolean;\n\n /**\n * Enable rotate right.\n */\n rotateRight: boolean;\n\n /**\n * Enable flip horizontal.\n */\n flipHorizontal: boolean;\n\n /**\n * Enable flip vertical.\n */\n flipVertical: boolean;\n}\nexport const rotateSettings = {\n rotate: true,\n rotateSpeed: 400,\n rotateLeft: true,\n rotateRight: true,\n flipHorizontal: true,\n flipVertical: true,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { rotateSettings, RotateSettings } from './lg-rotate-settings';\n\nexport default class Rotate {\n core: LightGallery;\n settings: RotateSettings;\n rotateValuesList!: {\n [key: string]: any;\n };\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n // extend module default settings with lightGallery core settings\n this.settings = { ...rotateSettings, ...this.core.settings };\n\n return this;\n }\n buildTemplates(): void {\n let rotateIcons = '';\n if (this.settings.flipVertical) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-flip-ver\" aria-label=\"flip vertical\" class=\"lg-flip-ver lg-icon\"></button>';\n }\n if (this.settings.flipHorizontal) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-flip-hor\" aria-label=\"Flip horizontal\" class=\"lg-flip-hor lg-icon\"></button>';\n }\n if (this.settings.rotateLeft) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-rotate-left\" aria-label=\"Rotate left\" class=\"lg-rotate-left lg-icon\"></button>';\n }\n if (this.settings.rotateRight) {\n rotateIcons +=\n '<button type=\"button\" id=\"lg-rotate-right\" aria-label=\"Rotate right\" class=\"lg-rotate-right lg-icon\"></button>';\n }\n this.core.$toolbar.append(rotateIcons);\n }\n\n init(): void {\n if (!this.settings.rotate) {\n return;\n }\n this.buildTemplates();\n\n // Save rotate config for each item to persist its rotate, flip values\n // even after navigating to diferent slides\n this.rotateValuesList = {};\n\n // event triggered after appending slide content\n this.core.LGel.on(`${lGEvents.afterAppendSlide}.rotate`, (event) => {\n const { index } = event.detail;\n const imageWrap = this.core\n .getSlideItem(index)\n .find('.lg-img-wrap')\n .first();\n\n imageWrap.wrap('lg-img-rotate');\n this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .css('transition-duration', this.settings.rotateSpeed + 'ms');\n });\n\n this.core.outer\n .find('#lg-rotate-left')\n .first()\n .on('click.lg', this.rotateLeft.bind(this));\n\n this.core.outer\n .find('#lg-rotate-right')\n .first()\n .on('click.lg', this.rotateRight.bind(this));\n\n this.core.outer\n .find('#lg-flip-hor')\n .first()\n .on('click.lg', this.flipHorizontal.bind(this));\n\n this.core.outer\n .find('#lg-flip-ver')\n .first()\n .on('click.lg', this.flipVertical.bind(this));\n\n // Reset rotate on slide change\n this.core.LGel.on(`${lGEvents.beforeSlide}.rotate`, (event) => {\n if (!this.rotateValuesList[event.detail.index]) {\n this.rotateValuesList[event.detail.index] = {\n rotate: 0,\n flipHorizontal: 1,\n flipVertical: 1,\n };\n }\n });\n }\n\n applyStyles(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first();\n\n $image.css(\n 'transform',\n 'rotate(' +\n this.rotateValuesList[this.core.index].rotate +\n 'deg)' +\n ' scale3d(' +\n this.rotateValuesList[this.core.index].flipHorizontal +\n ', ' +\n this.rotateValuesList[this.core.index].flipVertical +\n ', 1)',\n );\n }\n\n rotateLeft(): void {\n this.rotateValuesList[this.core.index].rotate -= 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateLeft, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n rotateRight(): void {\n this.rotateValuesList[this.core.index].rotate += 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateRight, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n getCurrentRotation(el: HTMLElement): number {\n if (!el) {\n return 0;\n }\n const st = this.$LG(el).style();\n const tm =\n st.getPropertyValue('-webkit-transform') ||\n st.getPropertyValue('-moz-transform') ||\n st.getPropertyValue('-ms-transform') ||\n st.getPropertyValue('-o-transform') ||\n st.getPropertyValue('transform') ||\n 'none';\n if (tm !== 'none') {\n const values = tm.split('(')[1].split(')')[0].split(',') as any;\n if (values) {\n const angle = Math.round(\n Math.atan2(values[1], values[0]) * (180 / Math.PI),\n );\n return angle < 0 ? angle + 360 : angle;\n }\n }\n return 0;\n }\n\n flipHorizontal(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipHorizontal';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipVertical';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n this.applyStyles();\n this.triggerEvents(lGEvents.flipHorizontal, {\n flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n flipVertical(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipVertical';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipHorizontal';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n\n this.applyStyles();\n\n this.triggerEvents(lGEvents.flipVertical, {\n flipVertical: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n triggerEvents(event: string, detail: any): void {\n setTimeout(() => {\n this.core.LGel.trigger(event, detail);\n }, this.settings.rotateSpeed + 10);\n }\n\n isImageOrientationChanged(): boolean {\n const rotateValue = this.rotateValuesList[this.core.index];\n const isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;\n const ifFlippedHor = rotateValue.flipHorizontal < 0;\n const ifFlippedVer = rotateValue.flipVertical < 0;\n return isRotated || ifFlippedHor || ifFlippedVer;\n }\n\n closeGallery(): void {\n if (this.isImageOrientationChanged()) {\n this.core.getSlideItem(this.core.index).css('opacity', 0);\n }\n this.rotateValuesList = {};\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery rotate plugin\n this.core.LGel.off('.lg.rotate');\n this.core.LGel.off('.rotate');\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lg-share.es5.js","sources":["../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["import { ShareOption } from './types';\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n\n /**\n * True for first slide\n */\n isFirstSlide: boolean;\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n `<button type=\"button\" aria-label=\"Share\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>`,\n );\n\n this.core.outer.append('<div class=\"lg-dropdown-overlay\"></div>');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n 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>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDO,IAAM,aAAa,GAAG;IACzB,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,oBAAoB,EAAE,UAAU;IAChC,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,SAAS;IAC9B,SAAS,EAAE,IAAI;IACf,qBAAqB,EAAE,WAAW;IAClC,sBAAsB,EAAE,EAAE;CAC7B;;SCvDe,oBAAoB,CAAC,WAAwB;IACzD,IAAM,eAAe,GAAG,yCAAyC,CAAC;IAClE,QACI,eAAe;QACf,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC1E;AACN;;SCNgB,mBAAmB,CAAC,WAAwB;IACxD,IAAM,cAAc,GAAG,kCAAkC,CAAC;IAC1D,IAAM,GAAG,GAAG,kBAAkB,CAC1B,WAAW,CAAC,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CACtD,CAAC;IACF,IAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC;IACnC,OAAO,cAAc,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;AACjD;;SCPgB,qBAAqB,CAAC,WAAwB;IAC1D,IAAM,gBAAgB,GAAG,kDAAkD,CAAC;IAC5E,IAAM,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC;IAC9C,IAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAa,CAAC,CAAC;IAC5D,IAAM,GAAG,GAAG,kBAAkB,CAC1B,WAAW,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CACxD,CAAC;IACF,QACI,gBAAgB;QAChB,GAAG;QACH,SAAS;QACT,KAAK;QACL,eAAe;QACf,WAAW,EACb;AACN;;ACdA;;;;;AAKO,IAAM,QAAQ,GAEjB;IACA,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,YAAY;IACtB,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,gBAAgB;IAC9B,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,aAAa;IACxB,aAAa,EAAE,iBAAiB;IAChC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,WAAW;IACpB,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,cAAc,EAAE,kBAAkB;IAClC,YAAY,EAAE,gBAAgB;CACjC;;;ICnBG,eAAY,QAAsB;QAD1B,iBAAY,GAAkB,EAAE,CAAC;;QAGrC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;;QAErB,IAAI,CAAC,QAAQ,yBAAQ,aAAa,GAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;KACf;IAEM,oBAAI,GAAX;QACI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACtB,OAAO;SACV;QACD,IAAI,CAAC,YAAY,kBACV,IAAI,CAAC,sBAAsB,EAAE,EAC7B,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAC1C,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK;aACV,IAAI,CAAC,wBAAwB,CAAC;aAC9B,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,QAAQ,CAAC,UAAU,WAAQ,EAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;KACL;IAEO,gCAAgB,GAAxB;QACI,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,WAAW;YAClC,SAAS,IAAI,WAAW,CAAC,YAAY,CAAC;SACzC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KACpB;IAED,gCAAgB,GAAhB;QAAA,iBAwBC;QAvBG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrB,iNACuE,CAC1E,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAClE,IAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE;YAChC,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YAClD,IAAI,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;gBAChD,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;aAC/C;iBAAM;gBACH,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;aAChD;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,KAAK;aACV,IAAI,CAAC,sBAAsB,CAAC;aAC5B,KAAK,EAAE;aACP,EAAE,CAAC,UAAU,EAAE;YACZ,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YAClD,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SAChD,CAAC,CAAC;KACV;IAEO,4BAAY,GAApB,UAAqB,KAAkB;QAAvC,iBAWC;QAVW,IAAA,KAAK,GAAK,KAAK,CAAC,MAAM,MAAjB,CAAkB;QAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,UAAU,CAAC;YACP,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,WAAW;gBAClC,IAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;gBACtC,KAAI,CAAC,IAAI,CAAC,KAAK;qBACV,IAAI,CAAC,QAAQ,CAAC;qBACd,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;aAC5D,CAAC,CAAC;SACN,EAAE,GAAG,CAAC,CAAC;KACX;IAEO,oCAAoB,GAA5B,UAA6B,IAAY,EAAE,IAAY;QACnD,OAAO,6BAA0B,IAAI,8GAAgG,IAAI,qBAAkB,CAAC;KAC/J;IAEO,sCAAsB,GAA9B;QACI,uBACQ,IAAI,CAAC,QAAQ,CAAC,QAAQ;cACpB;gBACI;oBACI,IAAI,EAAE,UAAU;oBAChB,YAAY,EAAE,oBAAoB;oBAClC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CACnC,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CACrC;oBACD,QAAQ,EAAE,oBAAoB;iBACjC;aACJ;cACD,EAAE,IACJ,IAAI,CAAC,QAAQ,CAAC,OAAO;cACnB;gBACI;oBACI,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,mBAAmB;oBACjC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CACnC,SAAS,EACT,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CACpC;oBACD,QAAQ,EAAE,mBAAmB;iBAChC;aACJ;cACD,EAAE,IACJ,IAAI,CAAC,QAAQ,CAAC,SAAS;cACrB;gBACI;oBACI,IAAI,EAAE,WAAW;oBACjB,YAAY,EAAE,qBAAqB;oBACnC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CACnC,WAAW,EACX,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACtC;oBACD,QAAQ,EAAE,qBAAqB;iBAClC;aACJ;cACD,EAAE,GACV;KACL;IAEM,uBAAO,GAAd;QACI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAChC;IACL,YAAC;AAAD,CAAC;;"}
|
|
1
|
+
{"version":3,"file":"lg-share.es5.js","sources":["../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["import { ShareOption } from './types';\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n `<button type=\"button\" aria-label=\"Share\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>`,\n );\n\n this.core.outer.append('<div class=\"lg-dropdown-overlay\"></div>');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n 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>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lg-share.umd.js","sources":["../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["import { ShareOption } from './types';\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n\n /**\n * True for first slide\n */\n isFirstSlide: boolean;\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n `<button type=\"button\" aria-label=\"Share\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>`,\n );\n\n this.core.outer.append('<div class=\"lg-dropdown-overlay\"></div>');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n 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>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lg-share.umd.js","sources":["../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["import { ShareOption } from './types';\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n `<button type=\"button\" aria-label=\"Share\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>`,\n );\n\n this.core.outer.append('<div class=\"lg-dropdown-overlay\"></div>');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n 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>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lg-thumbnail.es5.js","sources":["../../../src/plugins/thumbnail/lg-thumbnail-settings.ts","../../../src/lg-events.ts","../../../src/plugins/thumbnail/lg-thumbnail.ts"],"sourcesContent":["export interface ThumbnailsSettings {\n /**\n * Enable thumbnails for the gallery\n */\n thumbnail: boolean;\n\n /*\n * Enable thumbnail animation.\n */\n animateThumb: boolean;\n\n /**\n * Position of selected thumbnail.\n */\n currentPagerPosition: 'left' | 'middle' | 'right';\n\n /**\n * Position of thumbnails.\n */\n alignThumbnails: 'left' | 'middle' | 'right';\n\n /**\n * Width of each thumbnails.\n */\n thumbWidth: number;\n\n /**\n * Height of each thumbnails.\n */\n thumbHeight: string;\n\n /**\n * Spacing between each thumbnails\n */\n thumbMargin: number;\n\n /**\n * control where the thumbnails should be appended.\n * By default, thumbnails are appended to '.lg-components' which has inbuilt open close transitions\n * If you don't want initial thumbnails transitions, or want to do more customization,\n * you can append thumbnails to the lightGalley outer div -\n * <a href=\"/demos/thumbnails/#static-thumbnails\">Demo</a>\n */\n appendThumbnailsTo: '.lg-outer' | '.lg-components';\n\n /**\n * Enable toggle captions and thumbnails.\n * @description not applicable if allowMediaOverlap is false\n */\n toggleThumb: boolean;\n\n /**\n * Enables desktop mouse drag support for thumbnails.\n */\n enableThumbDrag: boolean;\n\n /**\n * Enables thumbnail touch/swipe support for touch devices\n */\n enableThumbSwipe: boolean;\n\n /**\n * By setting the thumbnailSwipeThreshold (in px) you can set how far the user must swipe for the next/prev slide.\n */\n thumbnailSwipeThreshold: number;\n\n /**\n * You can automatically load thumbnails for YouTube videos from YouTube by setting loadYouTubeThumbnail true\n */\n loadYouTubeThumbnail: boolean;\n\n /**\n * You can specify the thumbnail size by setting respective number.\n */\n //@todo add demo\n youTubeThumbSize: number;\n}\n\nexport const thumbnailsSettings: ThumbnailsSettings = {\n thumbnail: true,\n\n animateThumb: true,\n currentPagerPosition: 'middle',\n alignThumbnails: 'middle',\n\n thumbWidth: 100,\n thumbHeight: '80px',\n thumbMargin: 5,\n\n appendThumbnailsTo: '.lg-components',\n toggleThumb: false,\n\n enableThumbDrag: true,\n enableThumbSwipe: true,\n thumbnailSwipeThreshold: 10,\n\n loadYouTubeThumbnail: true,\n youTubeThumbSize: 1,\n};\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n\n /**\n * True for first slide\n */\n isFirstSlide: boolean;\n}\n","import {\n ThumbnailsSettings,\n thumbnailsSettings,\n} from './lg-thumbnail-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { GalleryItem } from '../../lg-utils';\nimport { lGEvents } from '../../lg-events';\ninterface ThumbDragUtils {\n cords: {\n startX: number;\n endX: number;\n };\n isMoved: boolean;\n newTranslateX: number;\n startTime: Date;\n endTime: Date;\n touchMoveTime: number;\n}\ninterface ThumbnailGalleryItem extends GalleryItem {\n thumb: string;\n}\nexport default class Thumbnail {\n private core: LightGallery;\n private $thumbOuter!: lgQuery;\n private $lgThumb!: lgQuery;\n private thumbOuterWidth = 0;\n private thumbTotalWidth = 0;\n private translateX = 0;\n private thumbClickable = false;\n private settings!: ThumbnailsSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n return this;\n }\n\n init(): void {\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...thumbnailsSettings,\n ...this.core.settings,\n };\n this.thumbOuterWidth = 0;\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n\n // Thumbnail animation value\n this.translateX = 0;\n\n this.setAnimateThumbStyles();\n\n if (!this.core.settings.allowMediaOverlap) {\n this.settings.toggleThumb = false;\n }\n\n if (this.settings.thumbnail) {\n this.build();\n if (this.settings.animateThumb) {\n if (this.settings.enableThumbDrag) {\n this.enableThumbDrag();\n }\n\n if (this.settings.enableThumbSwipe) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggleThumbBar();\n this.thumbKeyPress();\n }\n }\n\n build(): void {\n this.setThumbMarkup();\n this.manageActiveClassOnSlideChange();\n this.$lgThumb.first().on('click.lg touchend.lg', (e: CustomEvent) => {\n const $target = this.$LG(e.target);\n if (!$target.hasAttribute('data-lg-item-id')) {\n return;\n }\n setTimeout(() => {\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (this.thumbClickable && !this.core.lgBusy) {\n const index = parseInt($target.attr('data-lg-item-id'));\n this.core.slide(index, false, true, false);\n }\n }, 50);\n });\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.thumb`, (event) => {\n const { index } = event.detail;\n this.animateThumb(index);\n });\n this.core.LGel.on(`${lGEvents.beforeOpen}.thumb`, () => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n });\n\n this.core.LGel.on(`${lGEvents.updateSlides}.thumb`, () => {\n this.rebuildThumbnails();\n });\n this.core.LGel.on(`${lGEvents.containerResize}.thumb`, () => {\n if (!this.core.lgOpened) return;\n setTimeout(() => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n this.animateThumb(this.core.index);\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n }, 50);\n });\n }\n\n setThumbMarkup(): void {\n let thumbOuterClassNames = 'lg-thumb-outer ';\n\n if (this.settings.alignThumbnails) {\n thumbOuterClassNames += `lg-thumb-align-${this.settings.alignThumbnails}`;\n }\n\n const html = `<div class=\"${thumbOuterClassNames}\">\n <div class=\"lg-thumb lg-group\">\n </div>\n </div>`;\n\n this.core.outer.addClass('lg-has-thumb');\n\n if (this.settings.appendThumbnailsTo === '.lg-components') {\n this.core.$lgComponents.append(html);\n } else {\n this.core.outer.append(html);\n }\n\n this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();\n this.$lgThumb = this.core.outer.find('.lg-thumb').first();\n\n if (this.settings.animateThumb) {\n this.core.outer\n .find('.lg-thumb')\n .css('transition-duration', this.core.settings.speed + 'ms')\n .css('width', this.thumbTotalWidth + 'px')\n .css('position', 'relative');\n }\n\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n }\n\n enableThumbDrag(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n let isDragging = false;\n\n this.$thumbOuter.addClass('lg-grab');\n\n this.core.outer\n .find('.lg-thumb')\n .first()\n .on('mousedown.lg.thumb', (e) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n thumbDragUtils.cords.startX = e.pageX;\n\n thumbDragUtils.startTime = new Date();\n this.thumbClickable = false;\n\n isDragging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n this.core.outer.get().scrollLeft += 1;\n this.core.outer.get().scrollLeft -= 1;\n\n // *\n this.$thumbOuter\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.thumb.global${this.core.lgId}`,\n (e) => {\n if (!this.core.lgOpened) return;\n if (isDragging) {\n thumbDragUtils.cords.endX = e.pageX;\n\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.thumb.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n\n if (isDragging) {\n isDragging = false;\n this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n\n enableThumbSwipe(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n this.$lgThumb.on('touchstart.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.startX = e.targetTouches[0].pageX;\n this.thumbClickable = false;\n thumbDragUtils.startTime = new Date();\n }\n });\n\n this.$lgThumb.on('touchmove.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.endX = e.targetTouches[0].pageX;\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n });\n\n this.$lgThumb.on('touchend.lg', () => {\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n });\n }\n\n // Rebuild thumbnails\n rebuildThumbnails(): void {\n // Remove transitions\n this.$thumbOuter.addClass('lg-rebuilding-thumbnails');\n setTimeout(() => {\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n this.$lgThumb.css('width', this.thumbTotalWidth + 'px');\n this.$lgThumb.empty();\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n this.animateThumb(this.core.index);\n }, 50);\n setTimeout(() => {\n this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');\n }, 200);\n }\n\n // @ts-check\n\n setTranslate(value: number): void {\n this.$lgThumb.css(\n 'transform',\n 'translate3d(-' + value + 'px, 0px, 0px)',\n );\n }\n\n getPossibleTransformX(left: number): number {\n if (left > this.thumbTotalWidth - this.thumbOuterWidth) {\n left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (left < 0) {\n left = 0;\n }\n return left;\n }\n\n animateThumb(index: number): void {\n this.$lgThumb.css(\n 'transition-duration',\n this.core.settings.speed + 'ms',\n );\n if (this.settings.animateThumb) {\n let position = 0;\n switch (this.settings.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position =\n this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.settings.thumbWidth;\n }\n this.translateX =\n (this.settings.thumbWidth + this.settings.thumbMargin) * index -\n 1 -\n position;\n if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.translateX < 0) {\n this.translateX = 0;\n }\n\n this.setTranslate(this.translateX);\n }\n }\n\n onThumbTouchMove(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.newTranslateX = this.translateX;\n thumbDragUtils.isMoved = true;\n\n thumbDragUtils.touchMoveTime = new Date().valueOf();\n\n thumbDragUtils.newTranslateX -=\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n\n thumbDragUtils.newTranslateX = this.getPossibleTransformX(\n thumbDragUtils.newTranslateX,\n );\n\n // move current slide\n this.setTranslate(thumbDragUtils.newTranslateX);\n this.$thumbOuter.addClass('lg-dragging');\n\n return thumbDragUtils;\n }\n\n onThumbTouchEnd(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.isMoved = false;\n thumbDragUtils.endTime = new Date();\n this.$thumbOuter.removeClass('lg-dragging');\n\n const touchDuration =\n thumbDragUtils.endTime.valueOf() -\n thumbDragUtils.startTime.valueOf();\n let distanceXnew =\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n let speedX = Math.abs(distanceXnew) / touchDuration;\n // Some magical numbers\n // Can be improved\n if (\n speedX > 0.15 &&\n thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30\n ) {\n speedX += 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n speedX =\n speedX +\n speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);\n this.$lgThumb.css(\n 'transition-duration',\n Math.min(speedX - 1, 2) + 'settings',\n );\n\n distanceXnew = distanceXnew * speedX;\n\n this.translateX = this.getPossibleTransformX(\n this.translateX - distanceXnew,\n );\n this.setTranslate(this.translateX);\n } else {\n this.translateX = thumbDragUtils.newTranslateX;\n }\n if (\n Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <\n this.settings.thumbnailSwipeThreshold\n ) {\n this.thumbClickable = true;\n }\n\n return thumbDragUtils;\n }\n\n getThumbHtml(thumb: string, index: number): string {\n const slideVideoInfo =\n this.core.galleryItems[index].__slideVideoInfo || {};\n let thumbImg;\n\n if (slideVideoInfo.youtube) {\n if (this.settings.loadYouTubeThumbnail) {\n thumbImg =\n '//img.youtube.com/vi/' +\n slideVideoInfo.youtube[1] +\n '/' +\n this.settings.youTubeThumbSize +\n '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else {\n thumbImg = thumb;\n }\n\n return `<div data-lg-item-id=\"${index}\" class=\"lg-thumb-item ${\n index === this.core.index ? ' active' : ''\n }\" \n style=\"width:${this.settings.thumbWidth}px; height: ${\n this.settings.thumbHeight\n };\n margin-right: ${this.settings.thumbMargin}px;\">\n <img data-lg-item-id=\"${index}\" src=\"${thumbImg}\" />\n </div>`;\n }\n\n getThumbItemHtml(items: ThumbnailGalleryItem[]): string {\n let thumbList = '';\n for (let i = 0; i < items.length; i++) {\n thumbList += this.getThumbHtml(items[i].thumb, i);\n }\n\n return thumbList;\n }\n\n setThumbItemHtml(items: ThumbnailGalleryItem[]): void {\n const thumbList = this.getThumbItemHtml(items);\n this.$lgThumb.html(thumbList);\n }\n\n setAnimateThumbStyles(): void {\n if (this.settings.animateThumb) {\n this.core.outer.addClass('lg-animate-thumb');\n }\n }\n\n // Manage thumbnail active calss\n manageActiveClassOnSlideChange(): void {\n // manage active class for thumbnail\n this.core.LGel.on(\n `${lGEvents.beforeSlide}.thumb`,\n (event: CustomEvent) => {\n const $thumb = this.core.outer.find('.lg-thumb-item');\n const { index } = event.detail;\n $thumb.removeClass('active');\n $thumb.eq(index).addClass('active');\n },\n );\n }\n\n // Toggle thumbnail bar\n toggleThumbBar(): void {\n if (this.settings.toggleThumb) {\n this.core.outer.addClass('lg-can-toggle');\n this.core.$toolbar.append(\n '<button type=\"button\" aria-label=\"Toggle thumbnails\" class=\"lg-toggle-thumb lg-icon\"></button>',\n );\n this.core.outer\n .find('.lg-toggle-thumb')\n .first()\n .on('click.lg', () => {\n this.core.outer.toggleClass('lg-components-open');\n });\n }\n }\n\n thumbKeyPress(): void {\n this.$LG(window).on(`keydown.lg.thumb.global${this.core.lgId}`, (e) => {\n if (!this.core.lgOpened || !this.settings.toggleThumb) return;\n\n if (e.keyCode === 38) {\n e.preventDefault();\n this.core.outer.addClass('lg-components-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n this.core.outer.removeClass('lg-components-open');\n }\n });\n }\n\n destroy(): void {\n if (this.settings.thumbnail) {\n this.$LG(window).off(`.lg.thumb.global${this.core.lgId}`);\n this.core.LGel.off('.lg.thumb');\n this.core.LGel.off('.thumb');\n this.$thumbOuter.remove();\n this.core.outer.removeClass('lg-has-thumb');\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lg-thumbnail.es5.js","sources":["../../../src/plugins/thumbnail/lg-thumbnail-settings.ts","../../../src/lg-events.ts","../../../src/plugins/thumbnail/lg-thumbnail.ts"],"sourcesContent":["export interface ThumbnailsSettings {\n /**\n * Enable thumbnails for the gallery\n */\n thumbnail: boolean;\n\n /*\n * Enable thumbnail animation.\n */\n animateThumb: boolean;\n\n /**\n * Position of selected thumbnail.\n */\n currentPagerPosition: 'left' | 'middle' | 'right';\n\n /**\n * Position of thumbnails.\n */\n alignThumbnails: 'left' | 'middle' | 'right';\n\n /**\n * Width of each thumbnails.\n */\n thumbWidth: number;\n\n /**\n * Height of each thumbnails.\n */\n thumbHeight: string;\n\n /**\n * Spacing between each thumbnails\n */\n thumbMargin: number;\n\n /**\n * control where the thumbnails should be appended.\n * By default, thumbnails are appended to '.lg-components' which has inbuilt open close transitions\n * If you don't want initial thumbnails transitions, or want to do more customization,\n * you can append thumbnails to the lightGalley outer div -\n * <a href=\"/demos/thumbnails/#static-thumbnails\">Demo</a>\n */\n appendThumbnailsTo: '.lg-outer' | '.lg-components';\n\n /**\n * Enable toggle captions and thumbnails.\n * @description not applicable if allowMediaOverlap is false\n */\n toggleThumb: boolean;\n\n /**\n * Enables desktop mouse drag support for thumbnails.\n */\n enableThumbDrag: boolean;\n\n /**\n * Enables thumbnail touch/swipe support for touch devices\n */\n enableThumbSwipe: boolean;\n\n /**\n * By setting the thumbnailSwipeThreshold (in px) you can set how far the user must swipe for the next/prev slide.\n */\n thumbnailSwipeThreshold: number;\n\n /**\n * You can automatically load thumbnails for YouTube videos from YouTube by setting loadYouTubeThumbnail true\n */\n loadYouTubeThumbnail: boolean;\n\n /**\n * You can specify the thumbnail size by setting respective number.\n */\n //@todo add demo\n youTubeThumbSize: number;\n}\n\nexport const thumbnailsSettings: ThumbnailsSettings = {\n thumbnail: true,\n\n animateThumb: true,\n currentPagerPosition: 'middle',\n alignThumbnails: 'middle',\n\n thumbWidth: 100,\n thumbHeight: '80px',\n thumbMargin: 5,\n\n appendThumbnailsTo: '.lg-components',\n toggleThumb: false,\n\n enableThumbDrag: true,\n enableThumbSwipe: true,\n thumbnailSwipeThreshold: 10,\n\n loadYouTubeThumbnail: true,\n youTubeThumbSize: 1,\n};\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n};\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see <a href=\"/docs/methods\">Methods<a>\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n * <p>\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n * </p>\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n","import {\n ThumbnailsSettings,\n thumbnailsSettings,\n} from './lg-thumbnail-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { GalleryItem } from '../../lg-utils';\nimport { lGEvents } from '../../lg-events';\ninterface ThumbDragUtils {\n cords: {\n startX: number;\n endX: number;\n };\n isMoved: boolean;\n newTranslateX: number;\n startTime: Date;\n endTime: Date;\n touchMoveTime: number;\n}\ninterface ThumbnailGalleryItem extends GalleryItem {\n thumb: string;\n}\nexport default class Thumbnail {\n private core: LightGallery;\n private $thumbOuter!: lgQuery;\n private $lgThumb!: lgQuery;\n private thumbOuterWidth = 0;\n private thumbTotalWidth = 0;\n private translateX = 0;\n private thumbClickable = false;\n private settings!: ThumbnailsSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n return this;\n }\n\n init(): void {\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...thumbnailsSettings,\n ...this.core.settings,\n };\n this.thumbOuterWidth = 0;\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n\n // Thumbnail animation value\n this.translateX = 0;\n\n this.setAnimateThumbStyles();\n\n if (!this.core.settings.allowMediaOverlap) {\n this.settings.toggleThumb = false;\n }\n\n if (this.settings.thumbnail) {\n this.build();\n if (this.settings.animateThumb) {\n if (this.settings.enableThumbDrag) {\n this.enableThumbDrag();\n }\n\n if (this.settings.enableThumbSwipe) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggleThumbBar();\n this.thumbKeyPress();\n }\n }\n\n build(): void {\n this.setThumbMarkup();\n this.manageActiveClassOnSlideChange();\n this.$lgThumb.first().on('click.lg touchend.lg', (e: CustomEvent) => {\n const $target = this.$LG(e.target);\n if (!$target.hasAttribute('data-lg-item-id')) {\n return;\n }\n setTimeout(() => {\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (this.thumbClickable && !this.core.lgBusy) {\n const index = parseInt($target.attr('data-lg-item-id'));\n this.core.slide(index, false, true, false);\n }\n }, 50);\n });\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.thumb`, (event) => {\n const { index } = event.detail;\n this.animateThumb(index);\n });\n this.core.LGel.on(`${lGEvents.beforeOpen}.thumb`, () => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n });\n\n this.core.LGel.on(`${lGEvents.updateSlides}.thumb`, () => {\n this.rebuildThumbnails();\n });\n this.core.LGel.on(`${lGEvents.containerResize}.thumb`, () => {\n if (!this.core.lgOpened) return;\n setTimeout(() => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n this.animateThumb(this.core.index);\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n }, 50);\n });\n }\n\n setThumbMarkup(): void {\n let thumbOuterClassNames = 'lg-thumb-outer ';\n\n if (this.settings.alignThumbnails) {\n thumbOuterClassNames += `lg-thumb-align-${this.settings.alignThumbnails}`;\n }\n\n const html = `<div class=\"${thumbOuterClassNames}\">\n <div class=\"lg-thumb lg-group\">\n </div>\n </div>`;\n\n this.core.outer.addClass('lg-has-thumb');\n\n if (this.settings.appendThumbnailsTo === '.lg-components') {\n this.core.$lgComponents.append(html);\n } else {\n this.core.outer.append(html);\n }\n\n this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();\n this.$lgThumb = this.core.outer.find('.lg-thumb').first();\n\n if (this.settings.animateThumb) {\n this.core.outer\n .find('.lg-thumb')\n .css('transition-duration', this.core.settings.speed + 'ms')\n .css('width', this.thumbTotalWidth + 'px')\n .css('position', 'relative');\n }\n\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n }\n\n enableThumbDrag(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n let isDragging = false;\n\n this.$thumbOuter.addClass('lg-grab');\n\n this.core.outer\n .find('.lg-thumb')\n .first()\n .on('mousedown.lg.thumb', (e) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n thumbDragUtils.cords.startX = e.pageX;\n\n thumbDragUtils.startTime = new Date();\n this.thumbClickable = false;\n\n isDragging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n this.core.outer.get().scrollLeft += 1;\n this.core.outer.get().scrollLeft -= 1;\n\n // *\n this.$thumbOuter\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.thumb.global${this.core.lgId}`,\n (e) => {\n if (!this.core.lgOpened) return;\n if (isDragging) {\n thumbDragUtils.cords.endX = e.pageX;\n\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.thumb.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n\n if (isDragging) {\n isDragging = false;\n this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n\n enableThumbSwipe(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n this.$lgThumb.on('touchstart.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.startX = e.targetTouches[0].pageX;\n this.thumbClickable = false;\n thumbDragUtils.startTime = new Date();\n }\n });\n\n this.$lgThumb.on('touchmove.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.endX = e.targetTouches[0].pageX;\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n });\n\n this.$lgThumb.on('touchend.lg', () => {\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n });\n }\n\n // Rebuild thumbnails\n rebuildThumbnails(): void {\n // Remove transitions\n this.$thumbOuter.addClass('lg-rebuilding-thumbnails');\n setTimeout(() => {\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n this.$lgThumb.css('width', this.thumbTotalWidth + 'px');\n this.$lgThumb.empty();\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n this.animateThumb(this.core.index);\n }, 50);\n setTimeout(() => {\n this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');\n }, 200);\n }\n\n // @ts-check\n\n setTranslate(value: number): void {\n this.$lgThumb.css(\n 'transform',\n 'translate3d(-' + value + 'px, 0px, 0px)',\n );\n }\n\n getPossibleTransformX(left: number): number {\n if (left > this.thumbTotalWidth - this.thumbOuterWidth) {\n left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (left < 0) {\n left = 0;\n }\n return left;\n }\n\n animateThumb(index: number): void {\n this.$lgThumb.css(\n 'transition-duration',\n this.core.settings.speed + 'ms',\n );\n if (this.settings.animateThumb) {\n let position = 0;\n switch (this.settings.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position =\n this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.settings.thumbWidth;\n }\n this.translateX =\n (this.settings.thumbWidth + this.settings.thumbMargin) * index -\n 1 -\n position;\n if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.translateX < 0) {\n this.translateX = 0;\n }\n\n this.setTranslate(this.translateX);\n }\n }\n\n onThumbTouchMove(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.newTranslateX = this.translateX;\n thumbDragUtils.isMoved = true;\n\n thumbDragUtils.touchMoveTime = new Date().valueOf();\n\n thumbDragUtils.newTranslateX -=\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n\n thumbDragUtils.newTranslateX = this.getPossibleTransformX(\n thumbDragUtils.newTranslateX,\n );\n\n // move current slide\n this.setTranslate(thumbDragUtils.newTranslateX);\n this.$thumbOuter.addClass('lg-dragging');\n\n return thumbDragUtils;\n }\n\n onThumbTouchEnd(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.isMoved = false;\n thumbDragUtils.endTime = new Date();\n this.$thumbOuter.removeClass('lg-dragging');\n\n const touchDuration =\n thumbDragUtils.endTime.valueOf() -\n thumbDragUtils.startTime.valueOf();\n let distanceXnew =\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n let speedX = Math.abs(distanceXnew) / touchDuration;\n // Some magical numbers\n // Can be improved\n if (\n speedX > 0.15 &&\n thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30\n ) {\n speedX += 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n speedX =\n speedX +\n speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);\n this.$lgThumb.css(\n 'transition-duration',\n Math.min(speedX - 1, 2) + 'settings',\n );\n\n distanceXnew = distanceXnew * speedX;\n\n this.translateX = this.getPossibleTransformX(\n this.translateX - distanceXnew,\n );\n this.setTranslate(this.translateX);\n } else {\n this.translateX = thumbDragUtils.newTranslateX;\n }\n if (\n Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <\n this.settings.thumbnailSwipeThreshold\n ) {\n this.thumbClickable = true;\n }\n\n return thumbDragUtils;\n }\n\n getThumbHtml(thumb: string, index: number): string {\n const slideVideoInfo =\n this.core.galleryItems[index].__slideVideoInfo || {};\n let thumbImg;\n\n if (slideVideoInfo.youtube) {\n if (this.settings.loadYouTubeThumbnail) {\n thumbImg =\n '//img.youtube.com/vi/' +\n slideVideoInfo.youtube[1] +\n '/' +\n this.settings.youTubeThumbSize +\n '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else {\n thumbImg = thumb;\n }\n\n return `<div data-lg-item-id=\"${index}\" class=\"lg-thumb-item ${\n index === this.core.index ? ' active' : ''\n }\" \n style=\"width:${this.settings.thumbWidth}px; height: ${\n this.settings.thumbHeight\n };\n margin-right: ${this.settings.thumbMargin}px;\">\n <img data-lg-item-id=\"${index}\" src=\"${thumbImg}\" />\n </div>`;\n }\n\n getThumbItemHtml(items: ThumbnailGalleryItem[]): string {\n let thumbList = '';\n for (let i = 0; i < items.length; i++) {\n thumbList += this.getThumbHtml(items[i].thumb, i);\n }\n\n return thumbList;\n }\n\n setThumbItemHtml(items: ThumbnailGalleryItem[]): void {\n const thumbList = this.getThumbItemHtml(items);\n this.$lgThumb.html(thumbList);\n }\n\n setAnimateThumbStyles(): void {\n if (this.settings.animateThumb) {\n this.core.outer.addClass('lg-animate-thumb');\n }\n }\n\n // Manage thumbnail active calss\n manageActiveClassOnSlideChange(): void {\n // manage active class for thumbnail\n this.core.LGel.on(\n `${lGEvents.beforeSlide}.thumb`,\n (event: CustomEvent) => {\n const $thumb = this.core.outer.find('.lg-thumb-item');\n const { index } = event.detail;\n $thumb.removeClass('active');\n $thumb.eq(index).addClass('active');\n },\n );\n }\n\n // Toggle thumbnail bar\n toggleThumbBar(): void {\n if (this.settings.toggleThumb) {\n this.core.outer.addClass('lg-can-toggle');\n this.core.$toolbar.append(\n '<button type=\"button\" aria-label=\"Toggle thumbnails\" class=\"lg-toggle-thumb lg-icon\"></button>',\n );\n this.core.outer\n .find('.lg-toggle-thumb')\n .first()\n .on('click.lg', () => {\n this.core.outer.toggleClass('lg-components-open');\n });\n }\n }\n\n thumbKeyPress(): void {\n this.$LG(window).on(`keydown.lg.thumb.global${this.core.lgId}`, (e) => {\n if (!this.core.lgOpened || !this.settings.toggleThumb) return;\n\n if (e.keyCode === 38) {\n e.preventDefault();\n this.core.outer.addClass('lg-components-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n this.core.outer.removeClass('lg-components-open');\n }\n });\n }\n\n destroy(): void {\n if (this.settings.thumbnail) {\n this.$LG(window).off(`.lg.thumb.global${this.core.lgId}`);\n this.core.LGel.off('.lg.thumb');\n this.core.LGel.off('.thumb');\n this.$thumbOuter.remove();\n this.core.outer.removeClass('lg-has-thumb');\n }\n }\n}\n"],"names":[],"mappings":"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"}
|