UNPKG

21.6 kBSource Map (JSON)View Raw
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 ShareStrings {\n share: string;\n}\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 /**\n * Custom translation strings for aria-labels\n */\n sharePluginStrings: ShareStrings;\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 sharePluginStrings: { share: 'Share' } as ShareStrings,\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 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","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';\n\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\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=\"${this.settings.sharePluginStrings['share']}\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>`,\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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"}
\No newline at end of file