{"version":3,"file":"lg-thumbnail.umd.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. Applicable only if animateThumb is false.\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 * Demo\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};\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 Methods\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 * First time when an item is loaded lightGallery adds some delay for showing the completed item\n * to show transition effect on item load\n * Respect the delay when you use this event\n */\n delay: number;\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 sub-html content (ex : title/ description) has been appended into the slide.\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 *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\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 // extend module default settings with lightGallery core settings\n this.settings = {\n ...thumbnailsSettings,\n ...this.core.settings,\n };\n\n this.init();\n\n return this;\n }\n\n init(): void {\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 && this.core.galleryItems.length > 1) {\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 = `
\n
\n
\n
`;\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 `
\n \n
`;\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 '',\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 && this.core.galleryItems.length > 1) {\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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"}