lightgallery 2.8.0-beta.1 → 2.8.1

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.
Files changed (99) hide show
  1. package/css/lg-zoom.css +2 -2
  2. package/css/lightgallery-bundle.css +20 -4
  3. package/css/lightgallery-bundle.css.map +1 -1
  4. package/css/lightgallery-bundle.min.css +1 -1
  5. package/css/lightgallery-core.css +14 -0
  6. package/css/lightgallery-core.css.map +1 -1
  7. package/css/lightgallery.css +18 -2
  8. package/css/lightgallery.css.map +1 -1
  9. package/lg-settings.d.ts +3 -2
  10. package/lg-utils.d.ts +9 -1
  11. package/lgQuery.d.ts +1 -1
  12. package/lib/lg-settings.js.map +1 -1
  13. package/lib/lg-utils.js +28 -2
  14. package/lib/lg-utils.js.map +1 -1
  15. package/lib/lgQuery.js +6 -1
  16. package/lib/lgQuery.js.map +1 -1
  17. package/lib/lightgallery.js +25 -8
  18. package/lib/lightgallery.js.map +1 -1
  19. package/lib/plugins/thumbnail/lg-thumbnail.js +13 -10
  20. package/lib/plugins/thumbnail/lg-thumbnail.js.map +1 -1
  21. package/lib/plugins/video/lg-video-utils.js +12 -4
  22. package/lib/plugins/video/lg-video-utils.js.map +1 -1
  23. package/lib/plugins/video/lg-video.js +3 -1
  24. package/lib/plugins/video/lg-video.js.map +1 -1
  25. package/lib/plugins/zoom/lg-zoom.js +7 -1
  26. package/lib/plugins/zoom/lg-zoom.js.map +1 -1
  27. package/lightgallery.d.ts +1 -1
  28. package/lightgallery.es5.js +60 -12
  29. package/lightgallery.es5.js.map +1 -1
  30. package/lightgallery.min.js +2 -2
  31. package/lightgallery.umd.js +60 -12
  32. package/lightgallery.umd.js.map +1 -1
  33. package/lit/lightgallery.esm.js +7 -7
  34. package/lit/lightgallery.umd.js +3 -3
  35. package/package.json +1 -1
  36. package/plugins/autoplay/lg-autoplay.es5.js +1 -1
  37. package/plugins/autoplay/lg-autoplay.min.js +1 -1
  38. package/plugins/autoplay/lg-autoplay.umd.js +1 -1
  39. package/plugins/comment/lg-comment.es5.js +1 -1
  40. package/plugins/comment/lg-comment.min.js +1 -1
  41. package/plugins/comment/lg-comment.umd.js +1 -1
  42. package/plugins/fullscreen/lg-fullscreen.es5.js +1 -1
  43. package/plugins/fullscreen/lg-fullscreen.min.js +1 -1
  44. package/plugins/fullscreen/lg-fullscreen.umd.js +1 -1
  45. package/plugins/hash/lg-hash.es5.js +1 -1
  46. package/plugins/hash/lg-hash.min.js +1 -1
  47. package/plugins/hash/lg-hash.umd.js +1 -1
  48. package/plugins/mediumZoom/lg-medium-zoom.es5.js +1 -1
  49. package/plugins/mediumZoom/lg-medium-zoom.min.js +1 -1
  50. package/plugins/mediumZoom/lg-medium-zoom.umd.js +1 -1
  51. package/plugins/pager/lg-pager.es5.js +1 -1
  52. package/plugins/pager/lg-pager.min.js +1 -1
  53. package/plugins/pager/lg-pager.umd.js +1 -1
  54. package/plugins/relativeCaption/lg-relative-caption.es5.js +1 -1
  55. package/plugins/relativeCaption/lg-relative-caption.min.js +1 -1
  56. package/plugins/relativeCaption/lg-relative-caption.umd.js +1 -1
  57. package/plugins/rotate/lg-rotate.es5.js +1 -1
  58. package/plugins/rotate/lg-rotate.min.js +1 -1
  59. package/plugins/rotate/lg-rotate.umd.js +1 -1
  60. package/plugins/share/lg-share.es5.js +1 -1
  61. package/plugins/share/lg-share.min.js +1 -1
  62. package/plugins/share/lg-share.umd.js +1 -1
  63. package/plugins/thumbnail/lg-thumbnail.d.ts +1 -2
  64. package/plugins/thumbnail/lg-thumbnail.es5.js +14 -11
  65. package/plugins/thumbnail/lg-thumbnail.es5.js.map +1 -1
  66. package/plugins/thumbnail/lg-thumbnail.min.js +2 -2
  67. package/plugins/thumbnail/lg-thumbnail.umd.js +14 -11
  68. package/plugins/thumbnail/lg-thumbnail.umd.js.map +1 -1
  69. package/plugins/video/lg-video.es5.js +16 -6
  70. package/plugins/video/lg-video.es5.js.map +1 -1
  71. package/plugins/video/lg-video.min.js +2 -2
  72. package/plugins/video/lg-video.umd.js +16 -6
  73. package/plugins/video/lg-video.umd.js.map +1 -1
  74. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +1 -1
  75. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +1 -1
  76. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +1 -1
  77. package/plugins/zoom/lg-zoom.es5.js +8 -2
  78. package/plugins/zoom/lg-zoom.es5.js.map +1 -1
  79. package/plugins/zoom/lg-zoom.min.js +2 -2
  80. package/plugins/zoom/lg-zoom.umd.js +8 -2
  81. package/plugins/zoom/lg-zoom.umd.js.map +1 -1
  82. package/react/Lightgallery.es5.js +60 -12
  83. package/react/Lightgallery.es5.js.map +1 -1
  84. package/react/Lightgallery.umd.js +60 -12
  85. package/react/Lightgallery.umd.js.map +1 -1
  86. package/scss/_lg-theme-default.scss +4 -2
  87. package/scss/lg-zoom.scss +2 -2
  88. package/scss/lightgallery-core.scss +18 -0
  89. package/angular/11/README.md +0 -24
  90. package/angular/11/bundles/lightgallery-angular-11.umd.min.js +0 -2
  91. package/angular/11/bundles/lightgallery-angular-11.umd.min.js.map +0 -1
  92. package/angular/11/package.json +0 -21
  93. package/vue/LightGallery.vue.d.ts +0 -37
  94. package/vue/LightGalleryVue.common.js +0 -9290
  95. package/vue/LightGalleryVue.common.js.map +0 -1
  96. package/vue/LightGalleryVue.umd.js +0 -9300
  97. package/vue/LightGalleryVue.umd.js.map +0 -1
  98. package/vue/LightGalleryVue.umd.min.js +0 -8
  99. package/vue/LightGalleryVue.umd.min.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lg-zoom.umd.js","sources":["../../../src/plugins/zoom/lg-zoom-settings.ts","../../../src/lg-events.ts","../../../src/plugins/zoom/lg-zoom.ts"],"sourcesContent":["export interface ActualSizeIcons {\n zoomIn: 'lg-zoom-in' | 'lg-actual-size';\n zoomOut: 'lg-zoom-out' | 'lg-actual-size';\n}\n\nexport interface ZoomStrings {\n zoomIn: string;\n zoomOut: string;\n viewActualSize: string;\n}\n\nexport interface ZoomSettings {\n /**\n * Value of zoom should be incremented/decremented\n */\n scale: number;\n\n /**\n * Enable/Disable zoom option\n */\n zoom: boolean;\n\n /**\n * Enable/Disable infinite zoom\n * @description If you set this to true, you can zoom in more than the original size of the image.\n */\n infiniteZoom: boolean;\n\n /**\n * Enable actual size icon.\n */\n actualSize: boolean;\n\n /**\n * Once the slide transition is completed, how much time should take zoom plugin to activate\n * @description Some css styles will be added to the images if zoom is enabled.\n * So it might conflict if you add any custom styles to the images such as the initial transition while opening the gallery.\n * So you can delay adding zoom related styles to the images by changing the value of enableZoomAfter.\n */\n enableZoomAfter: number;\n\n /**\n * Show zoom in, zoom out icons\n */\n showZoomInOutIcons: boolean;\n\n /**\n * Actual size icons classnames.\n * Specify classnames for both ZoomIn and ZoomOut states\n * You can use `actualSizeIcons: { zoomIn: 'lg-actual-size', zoomOut: 'lg-zoom-out' }`\n * to show actual size icons instead of zoom in and zoom out icons.\n */\n actualSizeIcons: ActualSizeIcons;\n\n /**\n * Custom translation strings for aria-labels\n */\n zoomPluginStrings: ZoomStrings;\n}\n\nexport const zoomSettings: ZoomSettings = {\n scale: 1,\n zoom: true,\n infiniteZoom: true,\n actualSize: true,\n showZoomInOutIcons: false,\n actualSizeIcons: {\n zoomIn: 'lg-zoom-in',\n zoomOut: 'lg-zoom-out',\n } as ActualSizeIcons,\n enableZoomAfter: 300,\n zoomPluginStrings: {\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n viewActualSize: 'View actual size',\n } as ZoomStrings,\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 { ZoomSettings, zoomSettings } from './lg-zoom-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\n\ninterface Coords {\n x: number;\n y: number;\n}\n\ninterface DragAllowedAxises {\n allowX: boolean;\n allowY: boolean;\n}\ninterface ZoomTouchEvent {\n pageX: number;\n touches: { pageY: number; pageX: number }[];\n pageY: number;\n}\ninterface PossibleCords {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n}\n\nconst ZOOM_TRANSITION_DURATION = 500;\n\nexport default class Zoom {\n private core: LightGallery;\n private settings: ZoomSettings;\n private $LG!: LgQuery;\n private imageReset!: number | boolean;\n zoomableTimeout: any;\n positionChanged!: boolean;\n zoomInProgress!: boolean;\n pageX!: number;\n pageY!: number;\n scale!: number;\n\n containerRect!: ClientRect;\n dragAllowedAxises!: DragAllowedAxises;\n top!: number;\n left!: number;\n scrollTop!: number;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n this.settings = { ...zoomSettings, ...this.core.settings };\n\n return this;\n }\n\n // Append Zoom controls. Actual size, Zoom-in, Zoom-out\n buildTemplates(): void {\n let zoomIcons = this.settings.showZoomInOutIcons\n ? `<button id=\"${this.core.getIdName(\n 'lg-zoom-in',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['zoomIn']\n }\" class=\"lg-zoom-in lg-icon\"></button><button id=\"${this.core.getIdName(\n 'lg-zoom-out',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['zoomIn']\n }\" class=\"lg-zoom-out lg-icon\"></button>`\n : '';\n\n if (this.settings.actualSize) {\n zoomIcons += `<button id=\"${this.core.getIdName(\n 'lg-actual-size',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['viewActualSize']\n }\" class=\"${\n this.settings.actualSizeIcons.zoomIn\n } lg-icon\"></button>`;\n }\n\n this.core.outer.addClass('lg-use-transition-for-zoom');\n\n this.core.$toolbar.first().append(zoomIcons);\n }\n\n /**\n * @desc Enable zoom option only once the image is completely loaded\n * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted\n *\n * Zoom styles are defined under lg-zoomable CSS class.\n */\n enableZoom(event: CustomEvent): void {\n // delay will be 0 except first time\n let _speed = this.settings.enableZoomAfter + event.detail.delay;\n\n // set _speed value 0 if gallery opened from direct url and if it is first slide\n if (\n this.$LG('body').first().hasClass('lg-from-hash') &&\n event.detail.delay\n ) {\n // will execute only once\n _speed = 0;\n } else {\n // Remove lg-from-hash to enable starting animation.\n this.$LG('body').first().removeClass('lg-from-hash');\n }\n\n this.zoomableTimeout = setTimeout(() => {\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');\n if (event.detail.index === this.core.index) {\n this.setZoomEssentials();\n }\n }, _speed + 30);\n }\n\n enableZoomOnSlideItemLoad(): void {\n // Add zoomable class\n this.core.LGel.on(\n `${lGEvents.slideItemLoad}.zoom`,\n this.enableZoom.bind(this),\n );\n }\n\n getDragCords(e: MouseEvent): Coords {\n return {\n x: e.pageX,\n y: e.pageY,\n };\n }\n getSwipeCords(e: TouchEvent): Coords {\n const x = e.touches[0].pageX;\n const y = e.touches[0].pageY;\n return {\n x,\n y,\n };\n }\n\n getDragAllowedAxises(scale: number, scaleDiff?: number): DragAllowedAxises {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first()\n .get();\n\n let height = 0;\n let width = 0;\n const rect = $image.getBoundingClientRect();\n if (scale) {\n height = $image.offsetHeight * scale;\n width = $image.offsetWidth * scale;\n } else if (scaleDiff) {\n height = rect.height + scaleDiff * rect.height;\n width = rect.width + scaleDiff * rect.width;\n } else {\n height = rect.height;\n width = rect.width;\n }\n const allowY = height > this.containerRect.height;\n const allowX = width > this.containerRect.width;\n return {\n allowX,\n allowY,\n };\n }\n\n setZoomEssentials(): void {\n this.containerRect = this.core.$content.get().getBoundingClientRect();\n }\n\n /**\n * @desc Image zoom\n * Translate the wrap and scale the image to get better user experience\n *\n * @param {String} scale - Zoom decrement/increment value\n */\n zoomImage(\n scale: number,\n scaleDiff: number,\n reposition: boolean,\n resetToMax: boolean,\n ): void {\n if (Math.abs(scaleDiff) <= 0) return;\n\n const offsetX = this.containerRect.width / 2 + this.containerRect.left;\n\n const offsetY =\n this.containerRect.height / 2 +\n this.containerRect.top +\n this.scrollTop;\n\n let originalX;\n let originalY;\n\n if (scale === 1) {\n this.positionChanged = false;\n }\n\n const dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);\n\n const { allowY, allowX } = dragAllowedAxises;\n if (this.positionChanged) {\n originalX = this.left / (this.scale - scaleDiff);\n originalY = this.top / (this.scale - scaleDiff);\n this.pageX = offsetX - originalX;\n this.pageY = offsetY - originalY;\n\n this.positionChanged = false;\n }\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);\n\n let x;\n let y;\n let _x = offsetX - this.pageX;\n let _y = offsetY - this.pageY;\n\n if (scale - scaleDiff > 1) {\n const scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);\n _x =\n (scaleDiff < 0 ? -_x : _x) +\n this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n _y =\n (scaleDiff < 0 ? -_y : _y) +\n this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n x = _x / scaleVal;\n y = _y / scaleVal;\n } else {\n const scaleVal = (scale - scaleDiff) * scaleDiff;\n x = _x * scaleVal;\n y = _y * scaleVal;\n }\n\n if (reposition) {\n if (allowX) {\n if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {\n x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)\n ) {\n x = possibleSwipeCords.maxX;\n }\n } else {\n if (scale > 1) {\n if (x < possibleSwipeCords.minX) {\n x = possibleSwipeCords.minX;\n } else if (x > possibleSwipeCords.maxX) {\n x = possibleSwipeCords.maxX;\n }\n }\n }\n // @todo fix this\n if (allowY) {\n if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {\n y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)\n ) {\n y = possibleSwipeCords.maxY;\n }\n } else {\n // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out\n if (scale > 1) {\n //If image goes beyond viewport top, use the minim possible translate value\n if (y < possibleSwipeCords.minY) {\n y = possibleSwipeCords.minY;\n } else if (y > possibleSwipeCords.maxY) {\n y = possibleSwipeCords.maxY;\n }\n }\n }\n }\n\n this.setZoomStyles({\n x: x,\n y: y,\n scale,\n });\n\n this.left = x;\n this.top = y;\n\n if (resetToMax) {\n this.setZoomImageSize();\n }\n }\n\n resetImageTranslate(index: number): void {\n if (!this.isImageSlide(index)) {\n return;\n }\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n this.imageReset = false;\n $image.removeClass(\n 'reset-transition reset-transition-y reset-transition-x',\n );\n this.core.outer.removeClass('lg-actual-size');\n $image.css('width', 'auto').css('height', 'auto');\n setTimeout(() => {\n $image.removeClass('no-transition');\n }, 10);\n }\n\n setZoomImageSize(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n $image.addClass('no-transition');\n this.imageReset = true;\n }\n }, ZOOM_TRANSITION_DURATION);\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n const dragAllowedAxises = this.getDragAllowedAxises(this.scale);\n\n $image\n .css(\n 'width',\n ($image.get() as HTMLImageElement).naturalWidth + 'px',\n )\n .css(\n 'height',\n ($image.get() as HTMLImageElement).naturalHeight + 'px',\n );\n\n this.core.outer.addClass('lg-actual-size');\n\n if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {\n $image.addClass('reset-transition');\n } else if (\n dragAllowedAxises.allowX &&\n !dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-x');\n } else if (\n !dragAllowedAxises.allowX &&\n dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-y');\n }\n }\n }, ZOOM_TRANSITION_DURATION + 50);\n }\n\n /**\n * @desc apply scale3d to image and translate to image wrap\n * @param {style} X,Y and scale\n */\n setZoomStyles(style: { x: number; y: number; scale: number }): void {\n const $imageWrap = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const $dummyImage = this.core.outer\n .find('.lg-current .lg-dummy-img')\n .first();\n this.scale = style.scale;\n $image.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n $dummyImage.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n const transform =\n 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';\n $imageWrap.css('transform', transform);\n }\n\n /**\n * @param index - Index of the current slide\n * @param event - event will be available only if the function is called on clicking/taping the imags\n */\n setActualSize(index: number, event?: ZoomTouchEvent): void {\n if (this.zoomInProgress) {\n return;\n }\n this.zoomInProgress = true;\n const currentItem = this.core.galleryItems[this.core.index];\n this.resetImageTranslate(index);\n setTimeout(() => {\n // Allow zoom only on image\n if (\n !currentItem.src ||\n this.core.outer.hasClass('lg-first-slide-loading')\n ) {\n return;\n }\n const scale = this.getCurrentImageActualSizeScale();\n const prevScale = this.scale;\n if (this.core.outer.hasClass('lg-zoomed')) {\n this.scale = 1;\n } else {\n this.scale = this.getScale(scale);\n }\n this.setPageCords(event);\n\n this.beginZoom(this.scale);\n this.zoomImage(this.scale, this.scale - prevScale, true, true);\n }, 50);\n setTimeout(() => {\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }, 60);\n setTimeout(() => {\n this.zoomInProgress = false;\n }, ZOOM_TRANSITION_DURATION + 110);\n }\n\n getNaturalWidth(index: number): number {\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n\n const naturalWidth = this.core.galleryItems[index].width;\n return naturalWidth\n ? parseFloat(naturalWidth)\n : undefined || ($image.get() as any).naturalWidth;\n }\n\n getActualSizeScale(naturalWidth: number, width: number): number {\n let _scale;\n let scale;\n if (naturalWidth >= width) {\n _scale = naturalWidth / width;\n scale = _scale || 2;\n } else {\n scale = 1;\n }\n return scale;\n }\n\n getCurrentImageActualSizeScale(): number {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const width = $image.get().offsetWidth;\n const naturalWidth = this.getNaturalWidth(this.core.index) || width;\n return this.getActualSizeScale(naturalWidth, width);\n }\n\n getPageCords(event?: ZoomTouchEvent): Coords {\n const cords: Coords = {} as Coords;\n if (event) {\n cords.x = event.pageX || event.touches[0].pageX;\n cords.y = event.pageY || event.touches[0].pageY;\n } else {\n const containerRect = this.core.$content\n .get()\n .getBoundingClientRect();\n cords.x = containerRect.width / 2 + containerRect.left;\n cords.y =\n containerRect.height / 2 + this.scrollTop + containerRect.top;\n }\n return cords;\n }\n\n setPageCords(event?: ZoomTouchEvent): void {\n const pageCords = this.getPageCords(event);\n\n this.pageX = pageCords.x;\n this.pageY = pageCords.y;\n }\n\n manageActualPixelClassNames(): void {\n const $actualSize = this.core.getElementById('lg-actual-size');\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomIn)\n .addClass(this.settings.actualSizeIcons.zoomOut);\n }\n\n // If true, zoomed - in else zoomed out\n beginZoom(scale: number): boolean {\n this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');\n if (scale > 1) {\n this.core.outer.addClass('lg-zoomed');\n this.manageActualPixelClassNames();\n } else {\n this.resetZoom();\n }\n return scale > 1;\n }\n\n getScale(scale: number): number {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n if (scale < 1) {\n scale = 1;\n } else if (scale > actualSizeScale) {\n scale = actualSizeScale;\n }\n return scale;\n }\n\n init(): void {\n if (!this.settings.zoom) {\n return;\n }\n this.buildTemplates();\n this.enableZoomOnSlideItemLoad();\n\n let tapped: ReturnType<typeof setTimeout> | null = null;\n\n this.core.outer.on('dblclick.lg', (event) => {\n if (!this.$LG(event.target).hasClass('lg-image')) {\n return;\n }\n this.setActualSize(this.core.index, event);\n });\n\n this.core.outer.on('touchstart.lg', (event) => {\n const $target = this.$LG(event.target);\n if (event.touches.length === 1 && $target.hasClass('lg-image')) {\n if (!tapped) {\n tapped = setTimeout(() => {\n tapped = null;\n }, 300);\n } else {\n clearTimeout(tapped);\n tapped = null;\n event.preventDefault();\n this.setActualSize(this.core.index, event);\n }\n }\n });\n\n this.core.LGel.on(\n `${lGEvents.containerResize}.zoom ${lGEvents.rotateRight}.zoom ${lGEvents.rotateLeft}.zoom ${lGEvents.flipHorizontal}.zoom ${lGEvents.flipVertical}.zoom`,\n () => {\n if (\n !this.core.lgOpened ||\n !this.isImageSlide(this.core.index) ||\n this.core.touchAction\n ) {\n return;\n }\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n this.top = 0;\n this.left = 0;\n this.setZoomEssentials();\n this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });\n this.positionChanged = true;\n },\n );\n // Update zoom on resize and orientationchange\n this.$LG(window).on(`scroll.lg.zoom.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n this.scrollTop = this.$LG(window).scrollTop();\n });\n\n this.core.getElementById('lg-zoom-out').on('click.lg', () => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let timeout = 0;\n if (this.imageReset) {\n this.resetImageTranslate(this.core.index);\n timeout = 50;\n }\n setTimeout(() => {\n let scale = this.scale - this.settings.scale;\n\n if (scale < 1) {\n scale = 1;\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n -this.settings.scale,\n true,\n !this.settings.infiniteZoom,\n );\n }, timeout);\n });\n\n this.core.getElementById('lg-zoom-in').on('click.lg', () => {\n this.zoomIn();\n });\n\n this.core.getElementById('lg-actual-size').on('click.lg', () => {\n this.setActualSize(this.core.index);\n });\n\n this.core.LGel.on(`${lGEvents.beforeOpen}.zoom`, () => {\n this.core.outer.find('.lg-item').removeClass('lg-zoomable');\n });\n this.core.LGel.on(`${lGEvents.afterOpen}.zoom`, () => {\n this.scrollTop = this.$LG(window).scrollTop();\n\n // Set the initial value center\n this.pageX = this.core.outer.width() / 2;\n this.pageY = this.core.outer.height() / 2 + this.scrollTop;\n\n this.scale = 1;\n });\n\n // Reset zoom on slide change\n this.core.LGel.on(\n `${lGEvents.afterSlide}.zoom`,\n (event: CustomEvent) => {\n const { prevIndex } = event.detail;\n this.scale = 1;\n this.positionChanged = false;\n this.zoomInProgress = false;\n this.resetZoom(prevIndex);\n this.resetImageTranslate(prevIndex);\n if (this.isImageSlide(this.core.index)) {\n this.setZoomEssentials();\n }\n },\n );\n\n // Drag option after zoom\n this.zoomDrag();\n\n this.pinchZoom();\n\n this.zoomSwipe();\n\n // Store the zoomable timeout value just to clear it while closing\n this.zoomableTimeout = false;\n this.positionChanged = false;\n this.zoomInProgress = false;\n }\n\n zoomIn(): void {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let scale = this.scale + this.settings.scale;\n\n if (!this.settings.infiniteZoom) {\n scale = this.getScale(scale);\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n Math.min(this.settings.scale, scale - this.scale),\n true,\n !this.settings.infiniteZoom,\n );\n }\n\n // Reset zoom effect\n resetZoom(index?: number): void {\n this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');\n const $actualSize = this.core.getElementById('lg-actual-size');\n const $item = this.core.getSlideItem(\n index !== undefined ? index : this.core.index,\n );\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomOut)\n .addClass(this.settings.actualSizeIcons.zoomIn);\n $item.find('.lg-img-wrap').first().removeAttr('style');\n $item.find('.lg-image').first().removeAttr('style');\n this.scale = 1;\n this.left = 0;\n this.top = 0;\n\n // Reset pagx pagy values to center\n this.setPageCords();\n }\n\n getTouchDistance(e: TouchEvent): number {\n return Math.sqrt(\n (e.touches[0].pageX - e.touches[1].pageX) *\n (e.touches[0].pageX - e.touches[1].pageX) +\n (e.touches[0].pageY - e.touches[1].pageY) *\n (e.touches[0].pageY - e.touches[1].pageY),\n );\n }\n\n pinchZoom(): void {\n let startDist = 0;\n let pinchStarted = false;\n let initScale = 1;\n let prevScale = 0;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.outer.on('touchstart.lg', (e) => {\n $item = this.core.getSlideItem(this.core.index);\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n if (e.touches.length === 2) {\n e.preventDefault();\n if (this.core.outer.hasClass('lg-first-slide-loading')) {\n return;\n }\n initScale = this.scale || 1;\n this.core.outer.removeClass(\n 'lg-zoom-drag-transition lg-zoom-dragging',\n );\n\n this.setPageCords(e);\n this.resetImageTranslate(this.core.index);\n\n this.core.touchAction = 'pinch';\n\n startDist = this.getTouchDistance(e);\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 2 &&\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n const endDist = this.getTouchDistance(e);\n\n const distance = startDist - endDist;\n if (!pinchStarted && Math.abs(distance) > 5) {\n pinchStarted = true;\n }\n if (pinchStarted) {\n prevScale = this.scale;\n const _scale = Math.max(1, initScale + -distance * 0.02);\n this.scale =\n Math.round((_scale + Number.EPSILON) * 100) / 100;\n const diff = this.scale - prevScale;\n this.zoomImage(\n this.scale,\n Math.round((diff + Number.EPSILON) * 100) / 100,\n false,\n false,\n );\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n pinchStarted = false;\n startDist = 0;\n if (this.scale <= 1) {\n this.resetZoom();\n } else {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n let scaleDiff = actualSizeScale - this.scale;\n if (scaleDiff === 0) {\n scaleDiff = 0.01;\n }\n this.zoomImage(actualSizeScale, scaleDiff, false, true);\n }\n this.manageActualPixelClassNames();\n\n this.core.outer.addClass('lg-zoomed');\n }\n this.core.touchAction = undefined;\n }\n });\n }\n\n touchendZoom(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n touchDuration: number,\n ): void {\n let distanceXnew = endCoords.x - startCoords.x;\n let distanceYnew = endCoords.y - startCoords.y;\n\n let speedX = Math.abs(distanceXnew) / touchDuration + 1;\n let speedY = Math.abs(distanceYnew) / touchDuration + 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n\n if (speedY > 2) {\n speedY += 1;\n }\n\n distanceXnew = distanceXnew * speedX;\n distanceYnew = distanceYnew * speedY;\n\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const distance: Coords = {} as Coords;\n\n distance.x = this.left + distanceXnew;\n distance.y = this.top + distanceYnew;\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {\n if (allowY) {\n if (\n this.isBeyondPossibleTop(\n distance.y,\n possibleSwipeCords.minY,\n )\n ) {\n distance.y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(\n distance.y,\n possibleSwipeCords.maxY,\n )\n ) {\n distance.y = possibleSwipeCords.maxY;\n }\n }\n\n if (allowX) {\n if (\n this.isBeyondPossibleLeft(\n distance.x,\n possibleSwipeCords.minX,\n )\n ) {\n distance.x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(\n distance.x,\n possibleSwipeCords.maxX,\n )\n ) {\n distance.x = possibleSwipeCords.maxX;\n }\n }\n\n if (allowY) {\n this.top = distance.y;\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n this.left = distance.x;\n } else {\n distance.x = this.left;\n }\n\n this.setZoomSwipeStyles(_LGel, distance);\n\n this.positionChanged = true;\n }\n }\n\n getZoomSwipeCords(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n possibleSwipeCords: PossibleCords,\n ): Coords {\n const distance: Coords = {} as Coords;\n if (allowY) {\n distance.y = this.top + (endCoords.y - startCoords.y);\n if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {\n const diffMinY = possibleSwipeCords.minY - distance.y;\n distance.y = possibleSwipeCords.minY - diffMinY / 6;\n } else if (\n this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)\n ) {\n const diffMaxY = distance.y - possibleSwipeCords.maxY;\n distance.y = possibleSwipeCords.maxY + diffMaxY / 6;\n }\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n distance.x = this.left + (endCoords.x - startCoords.x);\n if (\n this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)\n ) {\n const diffMinX = possibleSwipeCords.minX - distance.x;\n distance.x = possibleSwipeCords.minX - diffMinX / 6;\n } else if (\n this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)\n ) {\n const difMaxX = distance.x - possibleSwipeCords.maxX;\n distance.x = possibleSwipeCords.maxX + difMaxX / 6;\n }\n } else {\n distance.x = this.left;\n }\n\n return distance;\n }\n\n private isBeyondPossibleLeft(x: number, minX: number) {\n return x >= minX;\n }\n private isBeyondPossibleRight(x: number, maxX: number) {\n return x <= maxX;\n }\n private isBeyondPossibleTop(y: number, minY: number) {\n return y >= minY;\n }\n private isBeyondPossibleBottom(y: number, maxY: number) {\n return y <= maxY;\n }\n\n isImageSlide(index: number): boolean {\n const currentItem = this.core.galleryItems[index];\n return this.core.getSlideType(currentItem) === 'image';\n }\n\n getPossibleSwipeDragCords(scale?: number): PossibleCords {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n const { bottom } = this.core.mediaContainerPosition;\n\n const imgRect = $image.get().getBoundingClientRect();\n\n let imageHeight = imgRect.height;\n let imageWidth = imgRect.width;\n\n if (scale) {\n imageHeight = imageHeight + scale * imageHeight;\n imageWidth = imageWidth + scale * imageWidth;\n }\n\n const minY = (imageHeight - this.containerRect.height) / 2;\n const maxY = (this.containerRect.height - imageHeight) / 2 + bottom;\n\n const minX = (imageWidth - this.containerRect.width) / 2;\n\n const maxX = (this.containerRect.width - imageWidth) / 2;\n\n const possibleSwipeCords = {\n minY: minY,\n maxY: maxY,\n minX: minX,\n maxX: maxX,\n };\n return possibleSwipeCords;\n }\n\n setZoomSwipeStyles(\n LGel: lgQuery,\n distance: { x: number; y: number },\n ): void {\n LGel.css(\n 'transform',\n 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)',\n );\n }\n\n zoomSwipe(): void {\n let startCoords = {} as Coords;\n let endCoords = {} as Coords;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: Date = new Date();\n let endTime: Date = new Date();\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.$inner.on('touchstart.lg', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n $item = this.core.getSlideItem(this.core.index);\n if (\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n e.touches.length === 1 &&\n this.core.outer.hasClass('lg-zoomed')\n ) {\n e.preventDefault();\n startTime = new Date();\n this.core.touchAction = 'zoomSwipe';\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n if (allowX || allowY) {\n startCoords = this.getSwipeCords(e);\n }\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n // reset opacity and transition duration\n this.core.outer.addClass(\n 'lg-zoom-dragging lg-zoom-drag-transition',\n );\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 1 &&\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = 'zoomSwipe';\n\n endCoords = this.getSwipeCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n if (\n Math.abs(endCoords.x - startCoords.x) > 15 ||\n Math.abs(endCoords.y - startCoords.y) > 15\n ) {\n isMoved = true;\n this.setZoomSwipeStyles(_LGel, distance);\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = undefined;\n this.core.outer.removeClass('lg-zoom-dragging');\n if (!isMoved) {\n return;\n }\n isMoved = false;\n endTime = new Date();\n const touchDuration = endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n });\n }\n\n zoomDrag(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isDragging = false;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: number | Date;\n let endTime;\n\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n this.core.outer.on('mousedown.lg.zoom', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n const $item = this.core.getSlideItem(this.core.index);\n if (\n this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)\n ) {\n startTime = new Date();\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n\n if (this.core.outer.hasClass('lg-zoomed')) {\n if (\n this.$LG(e.target).hasClass('lg-object') &&\n (allowX || allowY)\n ) {\n e.preventDefault();\n startCoords = this.getDragCords(e);\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n isDragging = true;\n\n this.core.outer\n .removeClass('lg-grab')\n .addClass(\n 'lg-grabbing lg-zoom-drag-transition lg-zoom-dragging',\n );\n // reset opacity and transition duration\n }\n }\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.zoom.global${this.core.lgId}`,\n (e) => {\n if (isDragging) {\n isMoved = true;\n endCoords = this.getDragCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n this.setZoomSwipeStyles(_LGel, distance);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.zoom.global${this.core.lgId}`, (e) => {\n if (isDragging) {\n endTime = new Date();\n isDragging = false;\n this.core.outer.removeClass('lg-zoom-dragging');\n\n // Fix for chrome mouse move on click\n if (\n isMoved &&\n (startCoords.x !== endCoords.x ||\n startCoords.y !== endCoords.y)\n ) {\n endCoords = this.getDragCords(e);\n\n const touchDuration =\n endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n\n isMoved = false;\n }\n\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n });\n }\n\n closeGallery(): void {\n this.resetZoom();\n this.zoomInProgress = false;\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery zoom plugin\n this.$LG(window).off(`.lg.zoom.global${this.core.lgId}`);\n this.core.LGel.off('.lg.zoom');\n this.core.LGel.off('.zoom');\n clearTimeout(this.zoomableTimeout);\n this.zoomableTimeout = false;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lg-zoom.umd.js","sources":["../../../src/plugins/zoom/lg-zoom-settings.ts","../../../src/lg-events.ts","../../../src/plugins/zoom/lg-zoom.ts"],"sourcesContent":["export interface ActualSizeIcons {\n zoomIn: 'lg-zoom-in' | 'lg-actual-size';\n zoomOut: 'lg-zoom-out' | 'lg-actual-size';\n}\n\nexport interface ZoomStrings {\n zoomIn: string;\n zoomOut: string;\n viewActualSize: string;\n}\n\nexport interface ZoomSettings {\n /**\n * Value of zoom should be incremented/decremented\n */\n scale: number;\n\n /**\n * Enable/Disable zoom option\n */\n zoom: boolean;\n\n /**\n * Enable/Disable infinite zoom\n * @description If you set this to true, you can zoom in more than the original size of the image.\n */\n infiniteZoom: boolean;\n\n /**\n * Enable actual size icon.\n */\n actualSize: boolean;\n\n /**\n * Once the slide transition is completed, how much time should take zoom plugin to activate\n * @description Some css styles will be added to the images if zoom is enabled.\n * So it might conflict if you add any custom styles to the images such as the initial transition while opening the gallery.\n * So you can delay adding zoom related styles to the images by changing the value of enableZoomAfter.\n */\n enableZoomAfter: number;\n\n /**\n * Show zoom in, zoom out icons\n */\n showZoomInOutIcons: boolean;\n\n /**\n * Actual size icons classnames.\n * Specify classnames for both ZoomIn and ZoomOut states\n * You can use `actualSizeIcons: { zoomIn: 'lg-actual-size', zoomOut: 'lg-zoom-out' }`\n * to show actual size icons instead of zoom in and zoom out icons.\n */\n actualSizeIcons: ActualSizeIcons;\n\n /**\n * Custom translation strings for aria-labels\n */\n zoomPluginStrings: ZoomStrings;\n}\n\nexport const zoomSettings: ZoomSettings = {\n scale: 1,\n zoom: true,\n infiniteZoom: true,\n actualSize: true,\n showZoomInOutIcons: false,\n actualSizeIcons: {\n zoomIn: 'lg-zoom-in',\n zoomOut: 'lg-zoom-out',\n } as ActualSizeIcons,\n enableZoomAfter: 300,\n zoomPluginStrings: {\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n viewActualSize: 'View actual size',\n } as ZoomStrings,\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 { ZoomSettings, zoomSettings } from './lg-zoom-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\n\ninterface Coords {\n x: number;\n y: number;\n}\n\ninterface DragAllowedAxises {\n allowX: boolean;\n allowY: boolean;\n}\ninterface ZoomTouchEvent {\n pageX: number;\n touches: { pageY: number; pageX: number }[];\n pageY: number;\n}\ninterface PossibleCords {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n}\n\nconst ZOOM_TRANSITION_DURATION = 500;\n\nexport default class Zoom {\n private core: LightGallery;\n private settings: ZoomSettings;\n private $LG!: LgQuery;\n private imageReset!: number | boolean;\n zoomableTimeout: any;\n positionChanged!: boolean;\n zoomInProgress!: boolean;\n pageX!: number;\n pageY!: number;\n scale!: number;\n\n containerRect!: ClientRect;\n dragAllowedAxises!: DragAllowedAxises;\n top!: number;\n left!: number;\n scrollTop!: number;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n this.settings = { ...zoomSettings, ...this.core.settings };\n\n return this;\n }\n\n // Append Zoom controls. Actual size, Zoom-in, Zoom-out\n buildTemplates(): void {\n let zoomIcons = this.settings.showZoomInOutIcons\n ? `<button id=\"${this.core.getIdName(\n 'lg-zoom-in',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['zoomIn']\n }\" class=\"lg-zoom-in lg-icon\"></button><button id=\"${this.core.getIdName(\n 'lg-zoom-out',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['zoomOut']\n }\" class=\"lg-zoom-out lg-icon\"></button>`\n : '';\n\n if (this.settings.actualSize) {\n zoomIcons += `<button id=\"${this.core.getIdName(\n 'lg-actual-size',\n )}\" type=\"button\" aria-label=\"${\n this.settings.zoomPluginStrings['viewActualSize']\n }\" class=\"${\n this.settings.actualSizeIcons.zoomIn\n } lg-icon\"></button>`;\n }\n\n this.core.outer.addClass('lg-use-transition-for-zoom');\n\n this.core.$toolbar.first().append(zoomIcons);\n }\n\n /**\n * @desc Enable zoom option only once the image is completely loaded\n * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted\n *\n * Zoom styles are defined under lg-zoomable CSS class.\n */\n enableZoom(event: CustomEvent): void {\n // delay will be 0 except first time\n let _speed = this.settings.enableZoomAfter + event.detail.delay;\n\n // set _speed value 0 if gallery opened from direct url and if it is first slide\n if (\n this.$LG('body').first().hasClass('lg-from-hash') &&\n event.detail.delay\n ) {\n // will execute only once\n _speed = 0;\n } else {\n // Remove lg-from-hash to enable starting animation.\n this.$LG('body').first().removeClass('lg-from-hash');\n }\n\n this.zoomableTimeout = setTimeout(() => {\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');\n if (event.detail.index === this.core.index) {\n this.setZoomEssentials();\n }\n }, _speed + 30);\n }\n\n enableZoomOnSlideItemLoad(): void {\n // Add zoomable class\n this.core.LGel.on(\n `${lGEvents.slideItemLoad}.zoom`,\n this.enableZoom.bind(this),\n );\n }\n\n getDragCords(e: MouseEvent): Coords {\n return {\n x: e.pageX,\n y: e.pageY,\n };\n }\n getSwipeCords(e: TouchEvent): Coords {\n const x = e.touches[0].pageX;\n const y = e.touches[0].pageY;\n return {\n x,\n y,\n };\n }\n\n getDragAllowedAxises(scale: number, scaleDiff?: number): DragAllowedAxises {\n if (!this.containerRect) {\n return {\n allowX: false,\n allowY: false,\n };\n }\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first()\n .get();\n\n let height = 0;\n let width = 0;\n const rect = $image.getBoundingClientRect();\n if (scale) {\n height = $image.offsetHeight * scale;\n width = $image.offsetWidth * scale;\n } else if (scaleDiff) {\n height = rect.height + scaleDiff * rect.height;\n width = rect.width + scaleDiff * rect.width;\n } else {\n height = rect.height;\n width = rect.width;\n }\n const allowY = height > this.containerRect.height;\n const allowX = width > this.containerRect.width;\n return {\n allowX,\n allowY,\n };\n }\n\n setZoomEssentials(): void {\n this.containerRect = this.core.$content.get().getBoundingClientRect();\n }\n\n /**\n * @desc Image zoom\n * Translate the wrap and scale the image to get better user experience\n *\n * @param {String} scale - Zoom decrement/increment value\n */\n zoomImage(\n scale: number,\n scaleDiff: number,\n reposition: boolean,\n resetToMax: boolean,\n ): void {\n if (Math.abs(scaleDiff) <= 0) return;\n\n const offsetX = this.containerRect.width / 2 + this.containerRect.left;\n\n const offsetY =\n this.containerRect.height / 2 +\n this.containerRect.top +\n this.scrollTop;\n\n let originalX;\n let originalY;\n\n if (scale === 1) {\n this.positionChanged = false;\n }\n\n const dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);\n\n const { allowY, allowX } = dragAllowedAxises;\n if (this.positionChanged) {\n originalX = this.left / (this.scale - scaleDiff);\n originalY = this.top / (this.scale - scaleDiff);\n this.pageX = offsetX - originalX;\n this.pageY = offsetY - originalY;\n\n this.positionChanged = false;\n }\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);\n\n let x;\n let y;\n let _x = offsetX - this.pageX;\n let _y = offsetY - this.pageY;\n\n if (scale - scaleDiff > 1) {\n const scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);\n _x =\n (scaleDiff < 0 ? -_x : _x) +\n this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n _y =\n (scaleDiff < 0 ? -_y : _y) +\n this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n x = _x / scaleVal;\n y = _y / scaleVal;\n } else {\n const scaleVal = (scale - scaleDiff) * scaleDiff;\n x = _x * scaleVal;\n y = _y * scaleVal;\n }\n\n if (reposition) {\n if (allowX) {\n if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {\n x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)\n ) {\n x = possibleSwipeCords.maxX;\n }\n } else {\n if (scale > 1) {\n if (x < possibleSwipeCords.minX) {\n x = possibleSwipeCords.minX;\n } else if (x > possibleSwipeCords.maxX) {\n x = possibleSwipeCords.maxX;\n }\n }\n }\n // @todo fix this\n if (allowY) {\n if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {\n y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)\n ) {\n y = possibleSwipeCords.maxY;\n }\n } else {\n // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out\n if (scale > 1) {\n //If image goes beyond viewport top, use the minim possible translate value\n if (y < possibleSwipeCords.minY) {\n y = possibleSwipeCords.minY;\n } else if (y > possibleSwipeCords.maxY) {\n y = possibleSwipeCords.maxY;\n }\n }\n }\n }\n\n this.setZoomStyles({\n x: x,\n y: y,\n scale,\n });\n\n this.left = x;\n this.top = y;\n\n if (resetToMax) {\n this.setZoomImageSize();\n }\n }\n\n resetImageTranslate(index: number): void {\n if (!this.isImageSlide(index)) {\n return;\n }\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n this.imageReset = false;\n $image.removeClass(\n 'reset-transition reset-transition-y reset-transition-x',\n );\n this.core.outer.removeClass('lg-actual-size');\n $image.css('width', 'auto').css('height', 'auto');\n setTimeout(() => {\n $image.removeClass('no-transition');\n }, 10);\n }\n\n setZoomImageSize(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n $image.addClass('no-transition');\n this.imageReset = true;\n }\n }, ZOOM_TRANSITION_DURATION);\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n const dragAllowedAxises = this.getDragAllowedAxises(this.scale);\n\n $image\n .css(\n 'width',\n ($image.get() as HTMLImageElement).naturalWidth + 'px',\n )\n .css(\n 'height',\n ($image.get() as HTMLImageElement).naturalHeight + 'px',\n );\n\n this.core.outer.addClass('lg-actual-size');\n\n if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {\n $image.addClass('reset-transition');\n } else if (\n dragAllowedAxises.allowX &&\n !dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-x');\n } else if (\n !dragAllowedAxises.allowX &&\n dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-y');\n }\n }\n }, ZOOM_TRANSITION_DURATION + 50);\n }\n\n /**\n * @desc apply scale3d to image and translate to image wrap\n * @param {style} X,Y and scale\n */\n setZoomStyles(style: { x: number; y: number; scale: number }): void {\n const $imageWrap = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const $dummyImage = this.core.outer\n .find('.lg-current .lg-dummy-img')\n .first();\n this.scale = style.scale;\n $image.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n $dummyImage.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n const transform =\n 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';\n $imageWrap.css('transform', transform);\n }\n\n /**\n * @param index - Index of the current slide\n * @param event - event will be available only if the function is called on clicking/taping the imags\n */\n setActualSize(index: number, event?: ZoomTouchEvent): void {\n if (this.zoomInProgress) {\n return;\n }\n this.zoomInProgress = true;\n const currentItem = this.core.galleryItems[this.core.index];\n this.resetImageTranslate(index);\n setTimeout(() => {\n // Allow zoom only on image\n if (\n !currentItem.src ||\n this.core.outer.hasClass('lg-first-slide-loading')\n ) {\n return;\n }\n const scale = this.getCurrentImageActualSizeScale();\n const prevScale = this.scale;\n if (this.core.outer.hasClass('lg-zoomed')) {\n this.scale = 1;\n } else {\n this.scale = this.getScale(scale);\n }\n this.setPageCords(event);\n\n this.beginZoom(this.scale);\n this.zoomImage(this.scale, this.scale - prevScale, true, true);\n }, 50);\n setTimeout(() => {\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }, 60);\n setTimeout(() => {\n this.zoomInProgress = false;\n }, ZOOM_TRANSITION_DURATION + 110);\n }\n\n getNaturalWidth(index: number): number {\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n\n const naturalWidth = this.core.galleryItems[index].width;\n return naturalWidth\n ? parseFloat(naturalWidth)\n : undefined || ($image.get() as any).naturalWidth;\n }\n\n getActualSizeScale(naturalWidth: number, width: number): number {\n let _scale;\n let scale;\n if (naturalWidth >= width) {\n _scale = naturalWidth / width;\n scale = _scale || 2;\n } else {\n scale = 1;\n }\n return scale;\n }\n\n getCurrentImageActualSizeScale(): number {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const width = $image.get().offsetWidth;\n const naturalWidth = this.getNaturalWidth(this.core.index) || width;\n return this.getActualSizeScale(naturalWidth, width);\n }\n\n getPageCords(event?: ZoomTouchEvent): Coords {\n const cords: Coords = {} as Coords;\n if (event) {\n cords.x = event.pageX || event.touches[0].pageX;\n cords.y = event.pageY || event.touches[0].pageY;\n } else {\n const containerRect = this.core.$content\n .get()\n .getBoundingClientRect();\n cords.x = containerRect.width / 2 + containerRect.left;\n cords.y =\n containerRect.height / 2 + this.scrollTop + containerRect.top;\n }\n return cords;\n }\n\n setPageCords(event?: ZoomTouchEvent): void {\n const pageCords = this.getPageCords(event);\n\n this.pageX = pageCords.x;\n this.pageY = pageCords.y;\n }\n\n manageActualPixelClassNames(): void {\n const $actualSize = this.core.getElementById('lg-actual-size');\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomIn)\n .addClass(this.settings.actualSizeIcons.zoomOut);\n }\n\n // If true, zoomed - in else zoomed out\n beginZoom(scale: number): boolean {\n this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');\n if (scale > 1) {\n this.core.outer.addClass('lg-zoomed');\n this.manageActualPixelClassNames();\n } else {\n this.resetZoom();\n }\n return scale > 1;\n }\n\n getScale(scale: number): number {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n if (scale < 1) {\n scale = 1;\n } else if (scale > actualSizeScale) {\n scale = actualSizeScale;\n }\n return scale;\n }\n\n init(): void {\n if (!this.settings.zoom) {\n return;\n }\n this.buildTemplates();\n this.enableZoomOnSlideItemLoad();\n\n let tapped: ReturnType<typeof setTimeout> | null = null;\n\n this.core.outer.on('dblclick.lg', (event) => {\n if (!this.$LG(event.target).hasClass('lg-image')) {\n return;\n }\n this.setActualSize(this.core.index, event);\n });\n\n this.core.outer.on('touchstart.lg', (event) => {\n const $target = this.$LG(event.target);\n if (event.touches.length === 1 && $target.hasClass('lg-image')) {\n if (!tapped) {\n tapped = setTimeout(() => {\n tapped = null;\n }, 300);\n } else {\n clearTimeout(tapped);\n tapped = null;\n event.preventDefault();\n this.setActualSize(this.core.index, event);\n }\n }\n });\n\n this.core.LGel.on(\n `${lGEvents.containerResize}.zoom ${lGEvents.rotateRight}.zoom ${lGEvents.rotateLeft}.zoom ${lGEvents.flipHorizontal}.zoom ${lGEvents.flipVertical}.zoom`,\n () => {\n if (\n !this.core.lgOpened ||\n !this.isImageSlide(this.core.index) ||\n this.core.touchAction\n ) {\n return;\n }\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n this.top = 0;\n this.left = 0;\n this.setZoomEssentials();\n this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });\n this.positionChanged = true;\n },\n );\n // Update zoom on resize and orientationchange\n this.$LG(window).on(`scroll.lg.zoom.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n this.scrollTop = this.$LG(window).scrollTop();\n });\n\n this.core.getElementById('lg-zoom-out').on('click.lg', () => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let timeout = 0;\n if (this.imageReset) {\n this.resetImageTranslate(this.core.index);\n timeout = 50;\n }\n setTimeout(() => {\n let scale = this.scale - this.settings.scale;\n\n if (scale < 1) {\n scale = 1;\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n -this.settings.scale,\n true,\n !this.settings.infiniteZoom,\n );\n }, timeout);\n });\n\n this.core.getElementById('lg-zoom-in').on('click.lg', () => {\n this.zoomIn();\n });\n\n this.core.getElementById('lg-actual-size').on('click.lg', () => {\n this.setActualSize(this.core.index);\n });\n\n this.core.LGel.on(`${lGEvents.beforeOpen}.zoom`, () => {\n this.core.outer.find('.lg-item').removeClass('lg-zoomable');\n });\n this.core.LGel.on(`${lGEvents.afterOpen}.zoom`, () => {\n this.scrollTop = this.$LG(window).scrollTop();\n\n // Set the initial value center\n this.pageX = this.core.outer.width() / 2;\n this.pageY = this.core.outer.height() / 2 + this.scrollTop;\n\n this.scale = 1;\n });\n\n // Reset zoom on slide change\n this.core.LGel.on(\n `${lGEvents.afterSlide}.zoom`,\n (event: CustomEvent) => {\n const { prevIndex } = event.detail;\n this.scale = 1;\n this.positionChanged = false;\n this.zoomInProgress = false;\n this.resetZoom(prevIndex);\n this.resetImageTranslate(prevIndex);\n if (this.isImageSlide(this.core.index)) {\n this.setZoomEssentials();\n }\n },\n );\n\n // Drag option after zoom\n this.zoomDrag();\n\n this.pinchZoom();\n\n this.zoomSwipe();\n\n // Store the zoomable timeout value just to clear it while closing\n this.zoomableTimeout = false;\n this.positionChanged = false;\n this.zoomInProgress = false;\n }\n\n zoomIn(): void {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let scale = this.scale + this.settings.scale;\n\n if (!this.settings.infiniteZoom) {\n scale = this.getScale(scale);\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n Math.min(this.settings.scale, scale - this.scale),\n true,\n !this.settings.infiniteZoom,\n );\n }\n\n // Reset zoom effect\n resetZoom(index?: number): void {\n this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');\n const $actualSize = this.core.getElementById('lg-actual-size');\n const $item = this.core.getSlideItem(\n index !== undefined ? index : this.core.index,\n );\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomOut)\n .addClass(this.settings.actualSizeIcons.zoomIn);\n $item.find('.lg-img-wrap').first().removeAttr('style');\n $item.find('.lg-image').first().removeAttr('style');\n this.scale = 1;\n this.left = 0;\n this.top = 0;\n\n // Reset pagx pagy values to center\n this.setPageCords();\n }\n\n getTouchDistance(e: TouchEvent): number {\n return Math.sqrt(\n (e.touches[0].pageX - e.touches[1].pageX) *\n (e.touches[0].pageX - e.touches[1].pageX) +\n (e.touches[0].pageY - e.touches[1].pageY) *\n (e.touches[0].pageY - e.touches[1].pageY),\n );\n }\n\n pinchZoom(): void {\n let startDist = 0;\n let pinchStarted = false;\n let initScale = 1;\n let prevScale = 0;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.outer.on('touchstart.lg', (e) => {\n $item = this.core.getSlideItem(this.core.index);\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n if (e.touches.length === 2) {\n e.preventDefault();\n if (this.core.outer.hasClass('lg-first-slide-loading')) {\n return;\n }\n initScale = this.scale || 1;\n this.core.outer.removeClass(\n 'lg-zoom-drag-transition lg-zoom-dragging',\n );\n\n this.setPageCords(e);\n this.resetImageTranslate(this.core.index);\n\n this.core.touchAction = 'pinch';\n\n startDist = this.getTouchDistance(e);\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 2 &&\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n const endDist = this.getTouchDistance(e);\n\n const distance = startDist - endDist;\n if (!pinchStarted && Math.abs(distance) > 5) {\n pinchStarted = true;\n }\n if (pinchStarted) {\n prevScale = this.scale;\n const _scale = Math.max(1, initScale + -distance * 0.02);\n this.scale =\n Math.round((_scale + Number.EPSILON) * 100) / 100;\n const diff = this.scale - prevScale;\n this.zoomImage(\n this.scale,\n Math.round((diff + Number.EPSILON) * 100) / 100,\n false,\n false,\n );\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n pinchStarted = false;\n startDist = 0;\n if (this.scale <= 1) {\n this.resetZoom();\n } else {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n let scaleDiff = actualSizeScale - this.scale;\n if (scaleDiff === 0) {\n scaleDiff = 0.01;\n }\n this.zoomImage(actualSizeScale, scaleDiff, false, true);\n }\n this.manageActualPixelClassNames();\n\n this.core.outer.addClass('lg-zoomed');\n }\n this.core.touchAction = undefined;\n }\n });\n }\n\n touchendZoom(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n touchDuration: number,\n ): void {\n let distanceXnew = endCoords.x - startCoords.x;\n let distanceYnew = endCoords.y - startCoords.y;\n\n let speedX = Math.abs(distanceXnew) / touchDuration + 1;\n let speedY = Math.abs(distanceYnew) / touchDuration + 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n\n if (speedY > 2) {\n speedY += 1;\n }\n\n distanceXnew = distanceXnew * speedX;\n distanceYnew = distanceYnew * speedY;\n\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const distance: Coords = {} as Coords;\n\n distance.x = this.left + distanceXnew;\n distance.y = this.top + distanceYnew;\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {\n if (allowY) {\n if (\n this.isBeyondPossibleTop(\n distance.y,\n possibleSwipeCords.minY,\n )\n ) {\n distance.y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(\n distance.y,\n possibleSwipeCords.maxY,\n )\n ) {\n distance.y = possibleSwipeCords.maxY;\n }\n }\n\n if (allowX) {\n if (\n this.isBeyondPossibleLeft(\n distance.x,\n possibleSwipeCords.minX,\n )\n ) {\n distance.x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(\n distance.x,\n possibleSwipeCords.maxX,\n )\n ) {\n distance.x = possibleSwipeCords.maxX;\n }\n }\n\n if (allowY) {\n this.top = distance.y;\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n this.left = distance.x;\n } else {\n distance.x = this.left;\n }\n\n this.setZoomSwipeStyles(_LGel, distance);\n\n this.positionChanged = true;\n }\n }\n\n getZoomSwipeCords(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n possibleSwipeCords: PossibleCords,\n ): Coords {\n const distance: Coords = {} as Coords;\n if (allowY) {\n distance.y = this.top + (endCoords.y - startCoords.y);\n if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {\n const diffMinY = possibleSwipeCords.minY - distance.y;\n distance.y = possibleSwipeCords.minY - diffMinY / 6;\n } else if (\n this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)\n ) {\n const diffMaxY = distance.y - possibleSwipeCords.maxY;\n distance.y = possibleSwipeCords.maxY + diffMaxY / 6;\n }\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n distance.x = this.left + (endCoords.x - startCoords.x);\n if (\n this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)\n ) {\n const diffMinX = possibleSwipeCords.minX - distance.x;\n distance.x = possibleSwipeCords.minX - diffMinX / 6;\n } else if (\n this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)\n ) {\n const difMaxX = distance.x - possibleSwipeCords.maxX;\n distance.x = possibleSwipeCords.maxX + difMaxX / 6;\n }\n } else {\n distance.x = this.left;\n }\n\n return distance;\n }\n\n private isBeyondPossibleLeft(x: number, minX: number) {\n return x >= minX;\n }\n private isBeyondPossibleRight(x: number, maxX: number) {\n return x <= maxX;\n }\n private isBeyondPossibleTop(y: number, minY: number) {\n return y >= minY;\n }\n private isBeyondPossibleBottom(y: number, maxY: number) {\n return y <= maxY;\n }\n\n isImageSlide(index: number): boolean {\n const currentItem = this.core.galleryItems[index];\n return this.core.getSlideType(currentItem) === 'image';\n }\n\n getPossibleSwipeDragCords(scale?: number): PossibleCords {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n const { bottom } = this.core.mediaContainerPosition;\n\n const imgRect = $image.get().getBoundingClientRect();\n\n let imageHeight = imgRect.height;\n let imageWidth = imgRect.width;\n\n if (scale) {\n imageHeight = imageHeight + scale * imageHeight;\n imageWidth = imageWidth + scale * imageWidth;\n }\n\n const minY = (imageHeight - this.containerRect.height) / 2;\n const maxY = (this.containerRect.height - imageHeight) / 2 + bottom;\n\n const minX = (imageWidth - this.containerRect.width) / 2;\n\n const maxX = (this.containerRect.width - imageWidth) / 2;\n\n const possibleSwipeCords = {\n minY: minY,\n maxY: maxY,\n minX: minX,\n maxX: maxX,\n };\n return possibleSwipeCords;\n }\n\n setZoomSwipeStyles(\n LGel: lgQuery,\n distance: { x: number; y: number },\n ): void {\n LGel.css(\n 'transform',\n 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)',\n );\n }\n\n zoomSwipe(): void {\n let startCoords = {} as Coords;\n let endCoords = {} as Coords;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: Date = new Date();\n let endTime: Date = new Date();\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.$inner.on('touchstart.lg', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n $item = this.core.getSlideItem(this.core.index);\n if (\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n e.touches.length === 1 &&\n this.core.outer.hasClass('lg-zoomed')\n ) {\n e.preventDefault();\n startTime = new Date();\n this.core.touchAction = 'zoomSwipe';\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n if (allowX || allowY) {\n startCoords = this.getSwipeCords(e);\n }\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n // reset opacity and transition duration\n this.core.outer.addClass(\n 'lg-zoom-dragging lg-zoom-drag-transition',\n );\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 1 &&\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = 'zoomSwipe';\n\n endCoords = this.getSwipeCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n if (\n Math.abs(endCoords.x - startCoords.x) > 15 ||\n Math.abs(endCoords.y - startCoords.y) > 15\n ) {\n isMoved = true;\n this.setZoomSwipeStyles(_LGel, distance);\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = undefined;\n this.core.outer.removeClass('lg-zoom-dragging');\n if (!isMoved) {\n return;\n }\n isMoved = false;\n endTime = new Date();\n const touchDuration = endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n });\n }\n\n zoomDrag(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isDragging = false;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: number | Date;\n let endTime;\n\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n this.core.outer.on('mousedown.lg.zoom', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n const $item = this.core.getSlideItem(this.core.index);\n if (\n this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)\n ) {\n startTime = new Date();\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n\n if (this.core.outer.hasClass('lg-zoomed')) {\n if (\n this.$LG(e.target).hasClass('lg-object') &&\n (allowX || allowY)\n ) {\n e.preventDefault();\n startCoords = this.getDragCords(e);\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n isDragging = true;\n\n this.core.outer\n .removeClass('lg-grab')\n .addClass(\n 'lg-grabbing lg-zoom-drag-transition lg-zoom-dragging',\n );\n // reset opacity and transition duration\n }\n }\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.zoom.global${this.core.lgId}`,\n (e) => {\n if (isDragging) {\n isMoved = true;\n endCoords = this.getDragCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n this.setZoomSwipeStyles(_LGel, distance);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.zoom.global${this.core.lgId}`, (e) => {\n if (isDragging) {\n endTime = new Date();\n isDragging = false;\n this.core.outer.removeClass('lg-zoom-dragging');\n\n // Fix for chrome mouse move on click\n if (\n isMoved &&\n (startCoords.x !== endCoords.x ||\n startCoords.y !== endCoords.y)\n ) {\n endCoords = this.getDragCords(e);\n\n const touchDuration =\n endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n\n isMoved = false;\n }\n\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n });\n }\n\n closeGallery(): void {\n this.resetZoom();\n this.zoomInProgress = false;\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery zoom plugin\n this.$LG(window).off(`.lg.zoom.global${this.core.lgId}`);\n this.core.LGel.off('.lg.zoom');\n this.core.LGel.off('.zoom');\n clearTimeout(this.zoomableTimeout);\n this.zoomableTimeout = false;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ function __rest(s, e) {
28
28
  }
29
29
 
30
30
  /*!
31
- * lightgallery | 2.8.0-beta.1 | November 27th 2023
31
+ * lightgallery | 2.8.1 | November 13th 2024
32
32
  * http://www.lightgalleryjs.com/
33
33
  * Copyright (c) 2020 Sachin Neravath;
34
34
  * @license GPLv3
@@ -471,7 +471,12 @@ var lgQuery = /** @class */ (function () {
471
471
  };
472
472
  lgQuery.prototype.prepend = function (html) {
473
473
  this._each(function (el) {
474
- el.insertAdjacentHTML('afterbegin', html);
474
+ if (typeof html === 'string') {
475
+ el.insertAdjacentHTML('afterbegin', html);
476
+ }
477
+ else if (html instanceof HTMLElement) {
478
+ el.insertBefore(html.cloneNode(true), el.firstChild);
479
+ }
475
480
  });
476
481
  return this;
477
482
  };
@@ -595,6 +600,27 @@ function convertToData(attr) {
595
600
  return attr;
596
601
  }
597
602
  var utils = {
603
+ /**
604
+ * Fetches HTML content from a given URL and inserts it into a specified element.
605
+ *
606
+ * @param url - The URL to fetch the HTML content from.
607
+ * @param element - The DOM element (jQuery object) to insert the HTML content into.
608
+ * @param insertMethod - The method to insert the HTML ('append' or 'replace').
609
+ */
610
+ fetchCaptionFromUrl: function (url, element, insertMethod) {
611
+ // Fetch content from the URL
612
+ fetch(url)
613
+ .then(function (response) { return response.text(); })
614
+ .then(function (htmlContent) {
615
+ if (insertMethod === 'append') {
616
+ var contentDiv = "<div class=\"lg-sub-html\">" + htmlContent + "</div>";
617
+ element.append(contentDiv);
618
+ }
619
+ else {
620
+ element.html(htmlContent);
621
+ }
622
+ });
623
+ },
598
624
  /**
599
625
  * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option
600
626
  */
@@ -679,7 +705,7 @@ var utils = {
679
705
  },
680
706
  getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {
681
707
  var title = iframeTitle ? 'title="' + iframeTitle + '"' : '';
682
- return "<div class=\"lg-video-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; max-width:" + iframeMaxWidth + "; height: " + iframeHeight + "; max-height:" + iframeMaxHeight + "\">\n <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\" allowfullscreen=\"true\"></iframe>\n </div>";
708
+ return "<div class=\"lg-media-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; max-width:" + iframeMaxWidth + "; height: " + iframeHeight + "; max-height:" + iframeMaxHeight + "\">\n <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\" allowfullscreen=\"true\"></iframe>\n </div>";
683
709
  },
684
710
  getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {
685
711
  var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : '';
@@ -751,7 +777,11 @@ var utils = {
751
777
  else {
752
778
  videoClass = 'lg-has-html5';
753
779
  }
754
- return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n <div class=\"lg-video-play-button\">\n <svg\n viewBox=\"0 0 20 20\"\n preserveAspectRatio=\"xMidYMid\"\n focusable=\"false\"\n aria-labelledby=\"" + playVideoString + "\"\n role=\"img\"\n class=\"lg-video-play-icon\"\n >\n <title>" + playVideoString + "</title>\n <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n </svg>\n <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n </svg>\n </div>\n " + (dummyImg || '') + "\n <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n </div>";
780
+ var _dummy = dummyImg;
781
+ if (typeof dummyImg !== 'string') {
782
+ _dummy = dummyImg.outerHTML;
783
+ }
784
+ return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n <div class=\"lg-video-play-button\">\n <svg\n viewBox=\"0 0 20 20\"\n preserveAspectRatio=\"xMidYMid\"\n focusable=\"false\"\n aria-labelledby=\"" + playVideoString + "\"\n role=\"img\"\n class=\"lg-video-play-icon\"\n >\n <title>" + playVideoString + "</title>\n <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n </svg>\n <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n </svg>\n </div>\n " + _dummy + "\n <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n </div>";
755
785
  },
756
786
  getFocusableElements: function (container) {
757
787
  var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
@@ -799,6 +829,7 @@ var utils = {
799
829
  dynamicEl.alt = alt || title || '';
800
830
  dynamicElements.push(dynamicEl);
801
831
  });
832
+ console.log(dynamicElements, 'dynamicElements');
802
833
  return dynamicElements;
803
834
  },
804
835
  isMobile: function () {
@@ -918,7 +949,17 @@ var LightGallery = /** @class */ (function () {
918
949
  if (this.settings.dynamic) {
919
950
  this.zoomFromOrigin = false;
920
951
  }
921
- if (!this.settings.container) {
952
+ if (this.settings.container) {
953
+ var container = this.settings.container;
954
+ if (typeof container === 'function') {
955
+ this.settings.container = container();
956
+ }
957
+ else if (typeof container === 'string') {
958
+ var el = document.querySelector(container);
959
+ this.settings.container = el !== null && el !== void 0 ? el : document.body;
960
+ }
961
+ }
962
+ else {
922
963
  this.settings.container = document.body;
923
964
  }
924
965
  // settings.preload should not be grater than $item.length
@@ -1457,7 +1498,7 @@ var LightGallery = /** @class */ (function () {
1457
1498
  }
1458
1499
  if (this.settings.appendSubHtmlTo !== '.lg-item') {
1459
1500
  if (subHtmlUrl) {
1460
- this.outer.find('.lg-sub-html').load(subHtmlUrl);
1501
+ utils.fetchCaptionFromUrl(subHtmlUrl, this.outer.find('.lg-sub-html'), 'replace');
1461
1502
  }
1462
1503
  else {
1463
1504
  this.outer.find('.lg-sub-html').html(subHtml);
@@ -1466,7 +1507,7 @@ var LightGallery = /** @class */ (function () {
1466
1507
  else {
1467
1508
  var currentSlide = $LG(this.getSlideItemId(index));
1468
1509
  if (subHtmlUrl) {
1469
- currentSlide.load(subHtmlUrl);
1510
+ utils.fetchCaptionFromUrl(subHtmlUrl, currentSlide, 'append');
1470
1511
  }
1471
1512
  else {
1472
1513
  currentSlide.append("<div class=\"lg-sub-html\">" + subHtml + "</div>");
@@ -1534,10 +1575,14 @@ var LightGallery = /** @class */ (function () {
1534
1575
  if (!_dummyImgSrc)
1535
1576
  return '';
1536
1577
  var imgStyle = this.getDummyImgStyles(this.currentImageSize);
1537
- var dummyImgContent = "<img " + alt + " style=\"" + imgStyle + "\" class=\"lg-dummy-img\" src=\"" + _dummyImgSrc + "\" />";
1578
+ var dummyImgContentImg = document.createElement('img');
1579
+ dummyImgContentImg.alt = alt || '';
1580
+ dummyImgContentImg.src = _dummyImgSrc;
1581
+ dummyImgContentImg.className = "lg-dummy-img";
1582
+ dummyImgContentImg.style.cssText = imgStyle;
1538
1583
  $currentSlide.addClass('lg-first-slide');
1539
1584
  this.outer.addClass('lg-first-slide-loading');
1540
- return dummyImgContent;
1585
+ return dummyImgContentImg;
1541
1586
  }
1542
1587
  return '';
1543
1588
  };
@@ -1554,8 +1599,10 @@ var LightGallery = /** @class */ (function () {
1554
1599
  else {
1555
1600
  imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);
1556
1601
  }
1557
- var imgMarkup = "<picture class=\"lg-img-wrap\"> " + imgContent + "</picture>";
1558
- $currentSlide.prepend(imgMarkup);
1602
+ var picture = document.createElement('picture');
1603
+ picture.className = 'lg-img-wrap';
1604
+ $LG(picture).append(imgContent);
1605
+ $currentSlide.prepend(picture);
1559
1606
  };
1560
1607
  LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {
1561
1608
  var mediaObject = $slide.find('.lg-object').first();
@@ -2485,7 +2532,8 @@ var LightGallery = /** @class */ (function () {
2485
2532
  LightGallery.prototype.isSlideElement = function (target) {
2486
2533
  return (target.hasClass('lg-outer') ||
2487
2534
  target.hasClass('lg-item') ||
2488
- target.hasClass('lg-img-wrap'));
2535
+ target.hasClass('lg-img-wrap') ||
2536
+ target.hasClass('lg-img-rotate'));
2489
2537
  };
2490
2538
  LightGallery.prototype.isPosterElement = function (target) {
2491
2539
  var playButton = this.getSlideItem(this.index)