UNPKG

22.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"lg-autoplay.umd.js","sources":["../../../src/lg-events.ts","../../../src/plugins/autoplay/lg-autoplay-settings.ts","../../../src/plugins/autoplay/lg-autoplay.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 autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\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/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","export interface AutoplayStrings {\n toggleAutoplay: string;\n}\n\nexport interface AutoplaySettings {\n /**\n * Enable autoplay plugin\n */\n autoplay: boolean;\n\n /**\n * Enable slideshow autoplay\n */\n slideShowAutoplay: boolean;\n\n /**\n * The time (in ms) between each auto transition.\n */\n slideShowInterval: number;\n\n /**\n * Show autoplay progressBar\n */\n progressBar: boolean;\n\n /**\n * If false autoplay will be stopped after first user action\n */\n forceSlideShowAutoplay: boolean;\n\n /**\n * Show/hide autoplay controls.\n */\n autoplayControls: boolean;\n\n /**\n * Specify where the autoplay controls should be appended.\n */\n appendAutoplayControlsTo: string;\n\n /**\n * Custom translation strings for aria-labels\n */\n autoplayPluginStrings: AutoplayStrings;\n}\nexport const autoplaySettings: AutoplaySettings = {\n autoplay: true,\n slideShowAutoplay: false,\n slideShowInterval: 5000,\n progressBar: true,\n forceSlideShowAutoplay: false,\n autoplayControls: true,\n appendAutoplayControlsTo: '.lg-toolbar',\n autoplayPluginStrings: {\n toggleAutoplay: 'Toggle Autoplay',\n } as AutoplayStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LightGallery } from '../../lightgallery';\nimport { AutoplaySettings, autoplaySettings } from './lg-autoplay-settings';\n\n/**\n * Creates the autoplay plugin.\n * @param {object} element - lightGallery element\n */\nexport default class Autoplay {\n core: LightGallery;\n settings: AutoplaySettings;\n interval!: any;\n fromAuto!: boolean;\n pausedOnTouchDrag!: boolean;\n pausedOnSlideChange!: boolean;\n\n constructor(instance: LightGallery) {\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...autoplaySettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n if (!this.settings.autoplay) {\n return;\n }\n\n this.interval = false;\n\n // Identify if slide happened from autoplay\n this.fromAuto = true;\n\n // Identify if autoplay canceled from touch/drag\n this.pausedOnTouchDrag = false;\n\n this.pausedOnSlideChange = false;\n\n // append autoplay controls\n if (this.settings.autoplayControls) {\n this.controls();\n }\n\n // Create progress bar\n if (this.settings.progressBar) {\n this.core.outer.append(\n '<div class=\"lg-progress-bar\"><div class=\"lg-progress\"></div></div>',\n );\n }\n\n // Start autoplay\n if (this.settings.slideShowAutoplay) {\n this.core.LGel.once(`${lGEvents.slideItemLoad}.autoplay`, () => {\n this.startAutoPlay();\n });\n }\n\n // cancel interval on touchstart and dragstart\n this.core.LGel.on(\n `${lGEvents.dragStart}.autoplay touchstart.lg.autoplay`,\n () => {\n if (this.interval) {\n this.stopAutoPlay();\n this.pausedOnTouchDrag = true;\n }\n },\n );\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(\n `${lGEvents.dragEnd}.autoplay touchend.lg.autoplay`,\n () => {\n if (!this.interval && this.pausedOnTouchDrag) {\n this.startAutoPlay();\n this.pausedOnTouchDrag = false;\n }\n },\n );\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.autoplay`, () => {\n this.showProgressBar();\n if (!this.fromAuto && this.interval) {\n this.stopAutoPlay();\n this.pausedOnSlideChange = true;\n } else {\n this.pausedOnSlideChange = false;\n }\n this.fromAuto = false;\n });\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n this.core.LGel.on(`${lGEvents.afterSlide}.autoplay`, () => {\n if (\n this.pausedOnSlideChange &&\n !this.interval &&\n this.settings.forceSlideShowAutoplay\n ) {\n this.startAutoPlay();\n this.pausedOnSlideChange = false;\n }\n });\n\n // set progress\n this.showProgressBar();\n }\n\n private showProgressBar() {\n if (this.settings.progressBar && this.fromAuto) {\n const _$progressBar = this.core.outer.find('.lg-progress-bar');\n const _$progress = this.core.outer.find('.lg-progress');\n if (this.interval) {\n _$progress.removeAttr('style');\n _$progressBar.removeClass('lg-start');\n setTimeout(() => {\n _$progress.css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n _$progressBar.addClass('lg-start');\n }, 20);\n }\n }\n }\n\n // Manage autoplay via play/stop buttons\n private controls() {\n const _html = `<button aria-label=\"${this.settings.autoplayPluginStrings['toggleAutoplay']}\" type=\"button\" class=\"lg-autoplay-button lg-icon\"></button>`;\n\n // Append autoplay controls\n this.core.outer\n .find(this.settings.appendAutoplayControlsTo)\n .append(_html);\n\n this.core.outer\n .find('.lg-autoplay-button')\n .first()\n .on('click.lg.autoplay', () => {\n if (this.core.outer.hasClass('lg-show-autoplay')) {\n this.stopAutoPlay();\n } else {\n if (!this.interval) {\n this.startAutoPlay();\n }\n }\n });\n }\n\n // Autostart gallery\n public startAutoPlay(): void {\n this.core.outer\n .find('.lg-progress')\n .css(\n 'transition',\n 'width ' +\n (this.core.settings.speed +\n this.settings.slideShowInterval) +\n 'ms ease 0s',\n );\n this.core.outer.addClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').addClass('lg-start');\n this.core.LGel.trigger(lGEvents.autoplayStart, {\n index: this.core.index,\n });\n\n this.interval = setInterval(() => {\n if (this.core.index + 1 < this.core.galleryItems.length) {\n this.core.index++;\n } else {\n this.core.index = 0;\n }\n\n this.core.LGel.trigger(lGEvents.autoplay, {\n index: this.core.index,\n });\n\n this.fromAuto = true;\n this.core.slide(this.core.index, false, false, 'next');\n }, this.core.settings.speed + this.settings.slideShowInterval);\n }\n\n // cancel Autostart\n public stopAutoPlay(): void {\n if (this.interval) {\n this.core.LGel.trigger(lGEvents.autoplayStop, {\n index: this.core.index,\n });\n this.core.outer.find('.lg-progress').removeAttr('style');\n this.core.outer.removeClass('lg-show-autoplay');\n this.core.outer.find('.lg-progress-bar').removeClass('lg-start');\n }\n clearInterval(this.interval);\n this.interval = false;\n }\n\n public closeGallery(): void {\n this.stopAutoPlay();\n }\n public destroy(): void {\n if (this.settings.autoplay) {\n this.core.outer.find('.lg-progress-bar').remove();\n }\n // Remove all event listeners added by autoplay plugin\n this.core.LGel.off('.lg.autoplay');\n this.core.LGel.off('.autoplay');\n }\n}\n"],"names":[],"mappings":"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"}
\No newline at end of file