lightgallery 2.9.0 → 3.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +690 -0
- package/README.md +31 -21
- package/dist/README.md +229 -0
- package/{css → dist/css}/lg-autoplay.css +7 -4
- package/{css → dist/css}/lg-autoplay.css.map +1 -1
- package/{css → dist/css}/lg-comments.css +0 -6
- package/{css → dist/css}/lg-comments.css.map +1 -1
- package/dist/css/lg-fullscreen.css +11 -0
- package/dist/css/lg-fullscreen.css.map +1 -0
- package/dist/css/lg-justified.css +37 -0
- package/dist/css/lg-justified.css.map +1 -0
- package/{css → dist/css}/lg-pager.css.map +1 -1
- package/{css → dist/css}/lg-rotate.css +0 -16
- package/{css → dist/css}/lg-rotate.css.map +1 -1
- package/dist/css/lg-rtl.css +94 -0
- package/dist/css/lg-rtl.css.map +1 -0
- package/{css → dist/css}/lg-share.css +4 -32
- package/dist/css/lg-share.css.map +1 -0
- package/{css → dist/css}/lg-thumbnail.css +7 -3
- package/dist/css/lg-thumbnail.css.map +1 -0
- package/{css → dist/css}/lg-transitions.css +10 -0
- package/dist/css/lg-transitions.css.map +1 -0
- package/{css → dist/css}/lg-zoom.css +20 -9
- package/dist/css/lg-zoom.css.map +1 -0
- package/{css → dist/css}/lightgallery-bundle.css +150 -118
- package/dist/css/lightgallery-bundle.css.map +1 -0
- package/dist/css/lightgallery-bundle.min.css +1 -0
- package/{css → dist/css}/lightgallery-core.css +49 -7
- package/dist/css/lightgallery-core.css.map +1 -0
- package/{css → dist/css}/lightgallery.css +105 -44
- package/dist/css/lightgallery.css.map +1 -0
- package/dist/lightgallery.es5.js +3797 -0
- package/dist/lightgallery.es5.js.map +1 -0
- package/dist/lightgallery.min.js +1 -0
- package/dist/lightgallery.umd.js +3800 -0
- package/dist/lightgallery.umd.js.map +1 -0
- package/dist/package.json +33 -0
- package/dist/plugins/autoplay/lg-autoplay.es5.js +193 -0
- package/dist/plugins/autoplay/lg-autoplay.es5.js.map +1 -0
- package/dist/plugins/autoplay/lg-autoplay.min.js +1 -0
- package/dist/plugins/autoplay/lg-autoplay.umd.js +196 -0
- package/dist/plugins/autoplay/lg-autoplay.umd.js.map +1 -0
- package/dist/plugins/autoplay/package.json +7 -0
- package/dist/plugins/comment/lg-comment.es5.js +136 -0
- package/dist/plugins/comment/lg-comment.es5.js.map +1 -0
- package/dist/plugins/comment/lg-comment.min.js +1 -0
- package/dist/plugins/comment/lg-comment.umd.js +139 -0
- package/dist/plugins/comment/lg-comment.umd.js.map +1 -0
- package/dist/plugins/comment/package.json +7 -0
- package/dist/plugins/fullscreen/lg-fullscreen.es5.js +114 -0
- package/dist/plugins/fullscreen/lg-fullscreen.es5.js.map +1 -0
- package/dist/plugins/fullscreen/lg-fullscreen.min.js +1 -0
- package/dist/plugins/fullscreen/lg-fullscreen.umd.js +117 -0
- package/dist/plugins/fullscreen/lg-fullscreen.umd.js.map +1 -0
- package/dist/plugins/fullscreen/package.json +7 -0
- package/dist/plugins/hash/lg-hash.es5.js +207 -0
- package/dist/plugins/hash/lg-hash.es5.js.map +1 -0
- package/dist/plugins/hash/lg-hash.min.js +1 -0
- package/dist/plugins/hash/lg-hash.umd.js +210 -0
- package/dist/plugins/hash/lg-hash.umd.js.map +1 -0
- package/dist/plugins/hash/package.json +7 -0
- package/dist/plugins/justified/lg-justified.es5.js +415 -0
- package/dist/plugins/justified/lg-justified.es5.js.map +1 -0
- package/dist/plugins/justified/lg-justified.min.js +1 -0
- package/dist/plugins/justified/lg-justified.umd.js +418 -0
- package/dist/plugins/justified/lg-justified.umd.js.map +1 -0
- package/dist/plugins/justified/package.json +7 -0
- package/dist/plugins/mediumZoom/lg-medium-zoom.es5.js +95 -0
- package/dist/plugins/mediumZoom/lg-medium-zoom.es5.js.map +1 -0
- package/dist/plugins/mediumZoom/lg-medium-zoom.min.js +1 -0
- package/dist/plugins/mediumZoom/lg-medium-zoom.umd.js +98 -0
- package/dist/plugins/mediumZoom/lg-medium-zoom.umd.js.map +1 -0
- package/dist/plugins/mediumZoom/package.json +7 -0
- package/dist/plugins/originCrop/lg-origin-crop.es5.js +622 -0
- package/dist/plugins/originCrop/lg-origin-crop.es5.js.map +1 -0
- package/dist/plugins/originCrop/lg-origin-crop.min.js +1 -0
- package/dist/plugins/originCrop/lg-origin-crop.umd.js +625 -0
- package/dist/plugins/originCrop/lg-origin-crop.umd.js.map +1 -0
- package/dist/plugins/pager/lg-pager.es5.js +96 -0
- package/dist/plugins/pager/lg-pager.es5.js.map +1 -0
- package/dist/plugins/pager/lg-pager.min.js +1 -0
- package/dist/plugins/pager/lg-pager.umd.js +99 -0
- package/dist/plugins/pager/lg-pager.umd.js.map +1 -0
- package/dist/plugins/pager/package.json +7 -0
- package/dist/plugins/relativeCaption/lg-relative-caption.es5.js +98 -0
- package/dist/plugins/relativeCaption/lg-relative-caption.es5.js.map +1 -0
- package/dist/plugins/relativeCaption/lg-relative-caption.min.js +1 -0
- package/dist/plugins/relativeCaption/lg-relative-caption.umd.js +101 -0
- package/dist/plugins/relativeCaption/lg-relative-caption.umd.js.map +1 -0
- package/dist/plugins/relativeCaption/package.json +7 -0
- package/dist/plugins/rotate/lg-rotate.es5.js +226 -0
- package/dist/plugins/rotate/lg-rotate.es5.js.map +1 -0
- package/dist/plugins/rotate/lg-rotate.min.js +1 -0
- package/dist/plugins/rotate/lg-rotate.umd.js +229 -0
- package/dist/plugins/rotate/lg-rotate.umd.js.map +1 -0
- package/dist/plugins/rotate/package.json +7 -0
- package/dist/plugins/share/lg-share.es5.js +309 -0
- package/dist/plugins/share/lg-share.es5.js.map +1 -0
- package/dist/plugins/share/lg-share.min.js +1 -0
- package/dist/plugins/share/lg-share.umd.js +312 -0
- package/dist/plugins/share/lg-share.umd.js.map +1 -0
- package/dist/plugins/share/package.json +7 -0
- package/dist/plugins/thumbnail/lg-thumbnail.es5.js +792 -0
- package/dist/plugins/thumbnail/lg-thumbnail.es5.js.map +1 -0
- package/dist/plugins/thumbnail/lg-thumbnail.min.js +1 -0
- package/dist/plugins/thumbnail/lg-thumbnail.umd.js +795 -0
- package/dist/plugins/thumbnail/lg-thumbnail.umd.js.map +1 -0
- package/dist/plugins/thumbnail/package.json +7 -0
- package/dist/plugins/video/lg-video.es5.js +518 -0
- package/dist/plugins/video/lg-video.es5.js.map +1 -0
- package/dist/plugins/video/lg-video.min.js +1 -0
- package/dist/plugins/video/lg-video.umd.js +521 -0
- package/dist/plugins/video/lg-video.umd.js.map +1 -0
- package/dist/plugins/video/package.json +7 -0
- package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +72 -0
- package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map +1 -0
- package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +1 -0
- package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +75 -0
- package/dist/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map +1 -0
- package/dist/plugins/vimeoThumbnail/package.json +7 -0
- package/dist/plugins/zoom/lg-zoom.es5.js +1412 -0
- package/dist/plugins/zoom/lg-zoom.es5.js.map +1 -0
- package/dist/plugins/zoom/lg-zoom.min.js +1 -0
- package/dist/plugins/zoom/lg-zoom.umd.js +1415 -0
- package/dist/plugins/zoom/lg-zoom.umd.js.map +1 -0
- package/dist/plugins/zoom/package.json +7 -0
- package/{scss → dist/scss}/_lg-theme-default.scss +68 -18
- package/{scss → dist/scss}/_lg-variables.scss +0 -1
- package/{scss → dist/scss}/lg-autoplay.scss +10 -4
- package/{scss → dist/scss}/lg-comments.scss +0 -8
- package/dist/scss/lg-fullscreen.scss +15 -0
- package/dist/scss/lg-justified.scss +63 -0
- package/{scss → dist/scss}/lg-rotate.scss +0 -24
- package/dist/scss/lg-rtl.scss +145 -0
- package/{scss → dist/scss}/lg-share.scss +6 -33
- package/{scss → dist/scss}/lg-thumbnail.scss +16 -5
- package/{scss → dist/scss}/lg-zoom.scss +46 -9
- package/{scss → dist/scss}/lightgallery-bundle.scss +0 -1
- package/{scss → dist/scss}/lightgallery-core.scss +73 -6
- package/{scss → dist/scss}/lightgallery.scss +0 -1
- package/{scss → dist/scss}/transitions/_lg-scale-up.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-slide-circular-vertical.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-slide-circular.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-soft-zoom.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-in-big.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-in-out.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-in.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-out-big.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-out-in.scss +6 -0
- package/{scss → dist/scss}/transitions/_lg-zoom-out.scss +6 -0
- package/dist/types/headless/announce.d.ts +22 -0
- package/dist/types/headless/emitter.d.ts +14 -0
- package/dist/types/headless/gestures.d.ts +128 -0
- package/dist/types/headless/hash-driver.d.ts +77 -0
- package/dist/types/headless/icons.d.ts +56 -0
- package/dist/types/headless/index.d.ts +34 -0
- package/dist/types/headless/items.d.ts +92 -0
- package/dist/types/headless/justified-layout.d.ts +71 -0
- package/dist/types/headless/license.d.ts +35 -0
- package/dist/types/headless/origin-crop.d.ts +135 -0
- package/dist/types/headless/origin.d.ts +65 -0
- package/dist/types/headless/plugin-slices.d.ts +64 -0
- package/dist/types/headless/preload.d.ts +36 -0
- package/dist/types/headless/responsive.d.ts +90 -0
- package/dist/types/headless/settings.d.ts +268 -0
- package/dist/types/headless/share-urls.d.ts +60 -0
- package/dist/types/headless/spring.d.ts +42 -0
- package/dist/types/headless/state.d.ts +63 -0
- package/dist/types/headless/thumb-math.d.ts +85 -0
- package/dist/types/headless/toolbar-overflow.d.ts +61 -0
- package/dist/types/headless/transition.d.ts +33 -0
- package/dist/types/headless/velocity.d.ts +31 -0
- package/dist/types/headless/video-urls.d.ts +64 -0
- package/dist/types/headless/zoom-math.d.ts +89 -0
- package/{index.d.ts → dist/types/index.d.ts} +9 -4
- package/{lg-events.d.ts → dist/types/lg-events.d.ts} +300 -300
- package/dist/types/lg-icons.d.ts +27 -0
- package/{lg-plugin.d.ts → dist/types/lg-plugin.d.ts} +7 -7
- package/{lg-settings.d.ts → dist/types/lg-settings.d.ts} +549 -425
- package/dist/types/lg-spring-runner.d.ts +14 -0
- package/dist/types/lg-toolbar-overflow.d.ts +36 -0
- package/{lg-utils.d.ts → dist/types/lg-utils.d.ts} +236 -228
- package/{lgQuery.d.ts → dist/types/lgQuery.d.ts} +56 -56
- package/{lightgallery.d.ts → dist/types/lightgallery.d.ts} +384 -305
- package/{plugins → dist/types/plugins}/autoplay/lg-autoplay-settings.d.ts +41 -38
- package/{plugins → dist/types/plugins}/autoplay/lg-autoplay.d.ts +22 -22
- package/{plugins → dist/types/plugins}/comment/lg-comment-settings.d.ts +36 -33
- package/{plugins → dist/types/plugins}/comment/lg-comment.d.ts +25 -25
- package/{plugins → dist/types/plugins}/fullscreen/lg-fullscreen-settings.d.ts +17 -14
- package/{plugins → dist/types/plugins}/fullscreen/lg-fullscreen.d.ts +16 -16
- package/dist/types/plugins/hash/lg-hash-settings.d.ts +28 -0
- package/{plugins → dist/types/plugins}/hash/lg-hash.d.ts +25 -23
- package/dist/types/plugins/justified/lg-justified-settings.d.ts +42 -0
- package/dist/types/plugins/justified/lg-justified.d.ts +55 -0
- package/{plugins → dist/types/plugins}/mediumZoom/lg-medium-zoom-settings.d.ts +16 -16
- package/{plugins → dist/types/plugins}/mediumZoom/lg-medium-zoom.d.ts +12 -12
- package/dist/types/plugins/originCrop/lg-origin-crop-settings.d.ts +12 -0
- package/dist/types/plugins/originCrop/lg-origin-crop.d.ts +79 -0
- package/{plugins → dist/types/plugins}/pager/lg-pager-settings.d.ts +7 -7
- package/{plugins → dist/types/plugins}/pager/lg-pager.d.ts +13 -13
- package/{plugins → dist/types/plugins}/relativeCaption/lg-relative-caption-settings.d.ts +7 -7
- package/{plugins → dist/types/plugins}/relativeCaption/lg-relative-caption.d.ts +14 -14
- package/{plugins → dist/types/plugins}/rotate/lg-rotate-settings.d.ts +47 -45
- package/{plugins → dist/types/plugins}/rotate/lg-rotate.d.ts +25 -24
- package/{plugins → dist/types/plugins}/share/lg-fb-share-utils.d.ts +2 -2
- package/{plugins → dist/types/plugins}/share/lg-pinterest-share-utils.d.ts +2 -2
- package/{plugins → dist/types/plugins}/share/lg-share-settings.d.ts +71 -56
- package/dist/types/plugins/share/lg-share.d.ts +33 -0
- package/dist/types/plugins/share/lg-twitter-share-utils.d.ts +4 -0
- package/{plugins → dist/types/plugins}/share/types.d.ts +6 -6
- package/{plugins → dist/types/plugins}/thumbnail/lg-thumbnail-settings.d.ts +85 -70
- package/dist/types/plugins/thumbnail/lg-thumbnail.d.ts +88 -0
- package/{plugins → dist/types/plugins}/video/lg-video-settings.d.ts +94 -71
- package/{plugins → dist/types/plugins}/video/lg-video.d.ts +116 -104
- package/{plugins → dist/types/plugins}/video/types.d.ts +8 -8
- package/{plugins → dist/types/plugins}/vimeoThumbnail/lg-vimeo-thumbnail-settings.d.ts +11 -11
- package/{plugins → dist/types/plugins}/vimeoThumbnail/lg-vimeo-thumbnail.d.ts +14 -14
- package/{plugins → dist/types/plugins}/zoom/lg-zoom-settings.d.ts +54 -51
- package/{plugins → dist/types/plugins}/zoom/lg-zoom.d.ts +145 -108
- package/{types.d.ts → dist/types/types.d.ts} +40 -40
- package/package.json +222 -8
- package/angular/10/README.md +0 -24
- package/angular/10/bundles/lightgallery-angular-10.umd.js +0 -289
- package/angular/10/bundles/lightgallery-angular-10.umd.js.map +0 -1
- package/angular/10/bundles/lightgallery-angular-10.umd.min.js +0 -2
- package/angular/10/bundles/lightgallery-angular-10.umd.min.js.map +0 -1
- package/angular/10/esm2015/lib/lightgallery-angular.component.js +0 -225
- package/angular/10/esm2015/lib/lightgallery-angular.module.js +0 -17
- package/angular/10/esm2015/lib/lightgallery-angular.service.js +0 -14
- package/angular/10/esm2015/lightgallery-angular-10.js +0 -5
- package/angular/10/esm2015/public-api.js +0 -7
- package/angular/10/fesm2015/lightgallery-angular-10.js +0 -261
- package/angular/10/fesm2015/lightgallery-angular-10.js.map +0 -1
- package/angular/10/lib/lightgallery-angular.component.d.ts +0 -39
- package/angular/10/lib/lightgallery-angular.component.d.ts.map +0 -1
- package/angular/10/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/10/lib/lightgallery-angular.module.d.ts.map +0 -1
- package/angular/10/lib/lightgallery-angular.service.d.ts +0 -7
- package/angular/10/lib/lightgallery-angular.service.d.ts.map +0 -1
- package/angular/10/lightgallery-angular-10.d.ts +0 -6
- package/angular/10/lightgallery-angular-10.d.ts.map +0 -1
- package/angular/10/package.json +0 -21
- package/angular/10/public-api.d.ts +0 -4
- package/angular/10/public-api.d.ts.map +0 -1
- package/angular/11/README.md +0 -24
- package/angular/11/bundles/lightgallery-angular-11.umd.js +0 -290
- package/angular/11/bundles/lightgallery-angular-11.umd.js.map +0 -1
- package/angular/11/bundles/lightgallery-angular-11.umd.min.js +0 -2
- package/angular/11/bundles/lightgallery-angular-11.umd.min.js.map +0 -1
- package/angular/11/esm2015/lib/lightgallery-angular.component.js +0 -225
- package/angular/11/esm2015/lib/lightgallery-angular.module.js +0 -18
- package/angular/11/esm2015/lib/lightgallery-angular.service.js +0 -14
- package/angular/11/esm2015/lightgallery-angular-11.js +0 -5
- package/angular/11/esm2015/public-api.js +0 -7
- package/angular/11/fesm2015/lightgallery-angular-11.js +0 -262
- package/angular/11/fesm2015/lightgallery-angular-11.js.map +0 -1
- package/angular/11/lib/lightgallery-angular.component.d.ts +0 -39
- package/angular/11/lib/lightgallery-angular.component.d.ts.map +0 -1
- package/angular/11/lib/lightgallery-angular.module.d.ts +0 -8
- package/angular/11/lib/lightgallery-angular.module.d.ts.map +0 -1
- package/angular/11/lib/lightgallery-angular.service.d.ts +0 -7
- package/angular/11/lib/lightgallery-angular.service.d.ts.map +0 -1
- package/angular/11/lightgallery-angular-11.d.ts +0 -6
- package/angular/11/lightgallery-angular-11.d.ts.map +0 -1
- package/angular/11/package.json +0 -21
- package/angular/11/public-api.d.ts +0 -4
- package/angular/11/public-api.d.ts.map +0 -1
- package/angular/12/README.md +0 -24
- package/angular/12/bundles/lightgallery-angular-12.umd.js +0 -296
- package/angular/12/bundles/lightgallery-angular-12.umd.js.map +0 -1
- package/angular/12/esm2015/lib/lightgallery-angular.component.js +0 -221
- package/angular/12/esm2015/lib/lightgallery-angular.module.js +0 -17
- package/angular/12/esm2015/lib/lightgallery-angular.service.js +0 -14
- package/angular/12/esm2015/lightgallery-angular-12.js +0 -5
- package/angular/12/esm2015/public-api.js +0 -7
- package/angular/12/fesm2015/lightgallery-angular-12.js +0 -258
- package/angular/12/fesm2015/lightgallery-angular-12.js.map +0 -1
- package/angular/12/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/12/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/12/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/12/lightgallery-angular-12.d.ts +0 -5
- package/angular/12/package.json +0 -18
- package/angular/12/public-api.d.ts +0 -3
- package/angular/13/README.md +0 -24
- package/angular/13/esm2020/lib/lightgallery-angular.component.mjs +0 -221
- package/angular/13/esm2020/lib/lightgallery-angular.module.mjs +0 -17
- package/angular/13/esm2020/lib/lightgallery-angular.service.mjs +0 -14
- package/angular/13/esm2020/lightgallery-angular-13.mjs +0 -5
- package/angular/13/esm2020/public-api.mjs +0 -7
- package/angular/13/fesm2015/lightgallery-angular-13.mjs +0 -258
- package/angular/13/fesm2015/lightgallery-angular-13.mjs.map +0 -1
- package/angular/13/fesm2020/lightgallery-angular-13.mjs +0 -258
- package/angular/13/fesm2020/lightgallery-angular-13.mjs.map +0 -1
- package/angular/13/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/13/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/13/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/13/lightgallery-angular-13.d.ts +0 -5
- package/angular/13/package.json +0 -31
- package/angular/13/public-api.d.ts +0 -3
- package/angular/14/README.md +0 -24
- package/angular/14/esm2020/lib/lightgallery-angular.component.mjs +0 -217
- package/angular/14/esm2020/lib/lightgallery-angular.module.mjs +0 -17
- package/angular/14/esm2020/lib/lightgallery-angular.service.mjs +0 -14
- package/angular/14/esm2020/lightgallery-angular-14.mjs +0 -5
- package/angular/14/esm2020/public-api.mjs +0 -7
- package/angular/14/fesm2015/lightgallery-angular-14.mjs +0 -254
- package/angular/14/fesm2015/lightgallery-angular-14.mjs.map +0 -1
- package/angular/14/fesm2020/lightgallery-angular-14.mjs +0 -254
- package/angular/14/fesm2020/lightgallery-angular-14.mjs.map +0 -1
- package/angular/14/index.d.ts +0 -5
- package/angular/14/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/14/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/14/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/14/package.json +0 -31
- package/angular/14/public-api.d.ts +0 -3
- package/angular/15/README.md +0 -24
- package/angular/15/esm2022/lib/lightgallery-angular.component.mjs +0 -218
- package/angular/15/esm2022/lib/lightgallery-angular.module.mjs +0 -18
- package/angular/15/esm2022/lib/lightgallery-angular.service.mjs +0 -15
- package/angular/15/esm2022/lightgallery-angular-15.mjs +0 -5
- package/angular/15/esm2022/public-api.mjs +0 -7
- package/angular/15/fesm2022/lightgallery-angular-15.mjs +0 -254
- package/angular/15/fesm2022/lightgallery-angular-15.mjs.map +0 -1
- package/angular/15/index.d.ts +0 -5
- package/angular/15/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/15/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/15/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/15/package.json +0 -25
- package/angular/15/public-api.d.ts +0 -3
- package/angular/16/README.md +0 -24
- package/angular/16/esm2022/lib/lightgallery-angular.component.mjs +0 -218
- package/angular/16/esm2022/lib/lightgallery-angular.module.mjs +0 -18
- package/angular/16/esm2022/lib/lightgallery-angular.service.mjs +0 -15
- package/angular/16/esm2022/lightgallery-angular-16.mjs +0 -5
- package/angular/16/esm2022/public-api.mjs +0 -7
- package/angular/16/fesm2022/lightgallery-angular-16.mjs +0 -254
- package/angular/16/fesm2022/lightgallery-angular-16.mjs.map +0 -1
- package/angular/16/index.d.ts +0 -5
- package/angular/16/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/16/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/16/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/16/package.json +0 -25
- package/angular/16/public-api.d.ts +0 -3
- package/angular/9/README.md +0 -24
- package/angular/9/bundles/lightgallery-angular-9.umd.js +0 -271
- package/angular/9/bundles/lightgallery-angular-9.umd.js.map +0 -1
- package/angular/9/bundles/lightgallery-angular-9.umd.min.js +0 -2
- package/angular/9/bundles/lightgallery-angular-9.umd.min.js.map +0 -1
- package/angular/9/esm2015/lib/lightgallery-angular.component.js +0 -225
- package/angular/9/esm2015/lib/lightgallery-angular.module.js +0 -17
- package/angular/9/esm2015/lib/lightgallery-angular.service.js +0 -14
- package/angular/9/esm2015/lightgallery-angular-9.js +0 -5
- package/angular/9/esm2015/public-api.js +0 -7
- package/angular/9/esm5/lib/lightgallery-angular.component.js +0 -228
- package/angular/9/esm5/lib/lightgallery-angular.module.js +0 -21
- package/angular/9/esm5/lib/lightgallery-angular.service.js +0 -17
- package/angular/9/esm5/lightgallery-angular-9.js +0 -5
- package/angular/9/esm5/public-api.js +0 -7
- package/angular/9/fesm2015/lightgallery-angular-9.js +0 -261
- package/angular/9/fesm2015/lightgallery-angular-9.js.map +0 -1
- package/angular/9/fesm5/lightgallery-angular-9.js +0 -268
- package/angular/9/fesm5/lightgallery-angular-9.js.map +0 -1
- package/angular/9/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/9/lib/lightgallery-angular.module.d.ts +0 -6
- package/angular/9/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/9/lightgallery-angular-9.d.ts +0 -5
- package/angular/9/package.json +0 -23
- package/angular/9/public-api.d.ts +0 -3
- package/angular/README.md +0 -24
- package/angular/esm2022/lib/lightgallery-angular.component.mjs +0 -218
- package/angular/esm2022/lib/lightgallery-angular.module.mjs +0 -18
- package/angular/esm2022/lib/lightgallery-angular.service.mjs +0 -15
- package/angular/esm2022/lightgallery-angular.mjs +0 -5
- package/angular/esm2022/public-api.mjs +0 -7
- package/angular/fesm2022/lightgallery-angular.mjs +0 -254
- package/angular/fesm2022/lightgallery-angular.mjs.map +0 -1
- package/angular/index.d.ts +0 -5
- package/angular/lib/lightgallery-angular.component.d.ts +0 -38
- package/angular/lib/lightgallery-angular.module.d.ts +0 -7
- package/angular/lib/lightgallery-angular.service.d.ts +0 -6
- package/angular/package.json +0 -25
- package/angular/public-api.d.ts +0 -3
- package/css/lg-fullscreen.css +0 -8
- package/css/lg-fullscreen.css.map +0 -1
- package/css/lg-share.css.map +0 -1
- package/css/lg-thumbnail.css.map +0 -1
- package/css/lg-transitions.css.map +0 -1
- package/css/lg-zoom.css.map +0 -1
- package/css/lightgallery-bundle.css.map +0 -1
- package/css/lightgallery-bundle.min.css +0 -1
- package/css/lightgallery-core.css.map +0 -1
- package/css/lightgallery.css.map +0 -1
- package/fonts/lg.svg +0 -54
- package/fonts/lg.ttf +0 -0
- package/fonts/lg.woff +0 -0
- package/fonts/lg.woff2 +0 -0
- package/lib/index.js +0 -8
- package/lib/index.js.map +0 -1
- package/lib/lg-events.js +0 -37
- package/lib/lg-events.js.map +0 -1
- package/lib/lg-plugin.js +0 -13
- package/lib/lg-plugin.js.map +0 -1
- package/lib/lg-settings.js +0 -83
- package/lib/lg-settings.js.map +0 -1
- package/lib/lg-utils.js +0 -328
- package/lib/lg-utils.js.map +0 -1
- package/lib/lgQuery.js +0 -385
- package/lib/lgQuery.js.map +0 -1
- package/lib/lightgallery.js +0 -1949
- package/lib/lightgallery.js.map +0 -1
- package/lib/plugins/autoplay/lg-autoplay-settings.js +0 -16
- package/lib/plugins/autoplay/lg-autoplay-settings.js.map +0 -1
- package/lib/plugins/autoplay/lg-autoplay.js +0 -184
- package/lib/plugins/autoplay/lg-autoplay.js.map +0 -1
- package/lib/plugins/comment/lg-comment-settings.js +0 -17
- package/lib/plugins/comment/lg-comment-settings.js.map +0 -1
- package/lib/plugins/comment/lg-comment.js +0 -140
- package/lib/plugins/comment/lg-comment.js.map +0 -1
- package/lib/plugins/fullscreen/lg-fullscreen-settings.js +0 -10
- package/lib/plugins/fullscreen/lg-fullscreen-settings.js.map +0 -1
- package/lib/plugins/fullscreen/lg-fullscreen.js +0 -108
- package/lib/plugins/fullscreen/lg-fullscreen.js.map +0 -1
- package/lib/plugins/hash/lg-hash-settings.js +0 -9
- package/lib/plugins/hash/lg-hash-settings.js.map +0 -1
- package/lib/plugins/hash/lg-hash.js +0 -139
- package/lib/plugins/hash/lg-hash.js.map +0 -1
- package/lib/plugins/mediumZoom/lg-medium-zoom-settings.js +0 -9
- package/lib/plugins/mediumZoom/lg-medium-zoom-settings.js.map +0 -1
- package/lib/plugins/mediumZoom/lg-medium-zoom.js +0 -73
- package/lib/plugins/mediumZoom/lg-medium-zoom.js.map +0 -1
- package/lib/plugins/pager/lg-pager-settings.js +0 -7
- package/lib/plugins/pager/lg-pager-settings.js.map +0 -1
- package/lib/plugins/pager/lg-pager.js +0 -82
- package/lib/plugins/pager/lg-pager.js.map +0 -1
- package/lib/plugins/relativeCaption/lg-relative-caption-settings.js +0 -7
- package/lib/plugins/relativeCaption/lg-relative-caption-settings.js.map +0 -1
- package/lib/plugins/relativeCaption/lg-relative-caption.js +0 -97
- package/lib/plugins/relativeCaption/lg-relative-caption.js.map +0 -1
- package/lib/plugins/rotate/lg-rotate-settings.js +0 -18
- package/lib/plugins/rotate/lg-rotate-settings.js.map +0 -1
- package/lib/plugins/rotate/lg-rotate.js +0 -206
- package/lib/plugins/rotate/lg-rotate.js.map +0 -1
- package/lib/plugins/share/lg-fb-share-utils.js +0 -10
- package/lib/plugins/share/lg-fb-share-utils.js.map +0 -1
- package/lib/plugins/share/lg-pinterest-share-utils.js +0 -17
- package/lib/plugins/share/lg-pinterest-share-utils.js.map +0 -1
- package/lib/plugins/share/lg-share-settings.js +0 -15
- package/lib/plugins/share/lg-share-settings.js.map +0 -1
- package/lib/plugins/share/lg-share.js +0 -130
- package/lib/plugins/share/lg-share.js.map +0 -1
- package/lib/plugins/share/lg-twitter-share-utils.js +0 -11
- package/lib/plugins/share/lg-twitter-share-utils.js.map +0 -1
- package/lib/plugins/share/types.js +0 -3
- package/lib/plugins/share/types.js.map +0 -1
- package/lib/plugins/thumbnail/lg-thumbnail-settings.js +0 -23
- package/lib/plugins/thumbnail/lg-thumbnail-settings.js.map +0 -1
- package/lib/plugins/thumbnail/lg-thumbnail.js +0 -414
- package/lib/plugins/thumbnail/lg-thumbnail.js.map +0 -1
- package/lib/plugins/video/lg-video-settings.js +0 -15
- package/lib/plugins/video/lg-video-settings.js.map +0 -1
- package/lib/plugins/video/lg-video-utils.js +0 -84
- package/lib/plugins/video/lg-video-utils.js.map +0 -1
- package/lib/plugins/video/lg-video.js +0 -411
- package/lib/plugins/video/lg-video.js.map +0 -1
- package/lib/plugins/video/types.js +0 -3
- package/lib/plugins/video/types.js.map +0 -1
- package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js +0 -8
- package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js.map +0 -1
- package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js +0 -122
- package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js.map +0 -1
- package/lib/plugins/zoom/lg-zoom-settings.js +0 -21
- package/lib/plugins/zoom/lg-zoom-settings.js.map +0 -1
- package/lib/plugins/zoom/lg-zoom.js +0 -909
- package/lib/plugins/zoom/lg-zoom.js.map +0 -1
- package/lib/types.js +0 -3
- package/lib/types.js.map +0 -1
- package/lightgallery-2.9.0.tgz +0 -0
- package/lightgallery.es5.js +0 -2786
- package/lightgallery.es5.js.map +0 -1
- package/lightgallery.min.js +0 -8
- package/lightgallery.umd.js +0 -2794
- package/lightgallery.umd.js.map +0 -1
- package/lit/custom-elements.json +0 -82
- package/lit/lightgallery.esm.js +0 -59
- package/lit/lightgallery.umd.js +0 -37
- package/lit/package.json +0 -8
- package/plugins/autoplay/lg-autoplay.es5.js +0 -250
- package/plugins/autoplay/lg-autoplay.es5.js.map +0 -1
- package/plugins/autoplay/lg-autoplay.min.js +0 -8
- package/plugins/autoplay/lg-autoplay.umd.js +0 -258
- package/plugins/autoplay/lg-autoplay.umd.js.map +0 -1
- package/plugins/autoplay/package.json +0 -7
- package/plugins/comment/lg-comment.es5.js +0 -205
- package/plugins/comment/lg-comment.es5.js.map +0 -1
- package/plugins/comment/lg-comment.min.js +0 -8
- package/plugins/comment/lg-comment.umd.js +0 -213
- package/plugins/comment/lg-comment.umd.js.map +0 -1
- package/plugins/comment/package.json +0 -7
- package/plugins/fullscreen/lg-fullscreen.es5.js +0 -135
- package/plugins/fullscreen/lg-fullscreen.es5.js.map +0 -1
- package/plugins/fullscreen/lg-fullscreen.min.js +0 -8
- package/plugins/fullscreen/lg-fullscreen.umd.js +0 -143
- package/plugins/fullscreen/lg-fullscreen.umd.js.map +0 -1
- package/plugins/fullscreen/package.json +0 -7
- package/plugins/hash/lg-hash-settings.d.ts +0 -16
- package/plugins/hash/lg-hash.es5.js +0 -198
- package/plugins/hash/lg-hash.es5.js.map +0 -1
- package/plugins/hash/lg-hash.min.js +0 -8
- package/plugins/hash/lg-hash.umd.js +0 -206
- package/plugins/hash/lg-hash.umd.js.map +0 -1
- package/plugins/hash/package.json +0 -7
- package/plugins/mediumZoom/lg-medium-zoom.es5.js +0 -132
- package/plugins/mediumZoom/lg-medium-zoom.es5.js.map +0 -1
- package/plugins/mediumZoom/lg-medium-zoom.min.js +0 -8
- package/plugins/mediumZoom/lg-medium-zoom.umd.js +0 -140
- package/plugins/mediumZoom/lg-medium-zoom.umd.js.map +0 -1
- package/plugins/mediumZoom/package.json +0 -7
- package/plugins/pager/lg-pager.es5.js +0 -139
- package/plugins/pager/lg-pager.es5.js.map +0 -1
- package/plugins/pager/lg-pager.min.js +0 -8
- package/plugins/pager/lg-pager.umd.js +0 -147
- package/plugins/pager/lg-pager.umd.js.map +0 -1
- package/plugins/pager/package.json +0 -7
- package/plugins/relativeCaption/lg-relative-caption.es5.js +0 -154
- package/plugins/relativeCaption/lg-relative-caption.es5.js.map +0 -1
- package/plugins/relativeCaption/lg-relative-caption.min.js +0 -8
- package/plugins/relativeCaption/lg-relative-caption.umd.js +0 -162
- package/plugins/relativeCaption/lg-relative-caption.umd.js.map +0 -1
- package/plugins/relativeCaption/package.json +0 -7
- package/plugins/rotate/lg-rotate.es5.js +0 -274
- package/plugins/rotate/lg-rotate.es5.js.map +0 -1
- package/plugins/rotate/lg-rotate.min.js +0 -8
- package/plugins/rotate/lg-rotate.umd.js +0 -282
- package/plugins/rotate/lg-rotate.umd.js.map +0 -1
- package/plugins/rotate/package.json +0 -7
- package/plugins/share/lg-share.d.ts +0 -15
- package/plugins/share/lg-share.es5.js +0 -219
- package/plugins/share/lg-share.es5.js.map +0 -1
- package/plugins/share/lg-share.min.js +0 -8
- package/plugins/share/lg-share.umd.js +0 -227
- package/plugins/share/lg-share.umd.js.map +0 -1
- package/plugins/share/lg-twitter-share-utils.d.ts +0 -2
- package/plugins/share/package.json +0 -7
- package/plugins/thumbnail/lg-thumbnail.d.ts +0 -48
- package/plugins/thumbnail/lg-thumbnail.es5.js +0 -487
- package/plugins/thumbnail/lg-thumbnail.es5.js.map +0 -1
- package/plugins/thumbnail/lg-thumbnail.min.js +0 -8
- package/plugins/thumbnail/lg-thumbnail.umd.js +0 -495
- package/plugins/thumbnail/lg-thumbnail.umd.js.map +0 -1
- package/plugins/thumbnail/package.json +0 -7
- package/plugins/video/lg-video-utils.d.ts +0 -10
- package/plugins/video/lg-video.es5.js +0 -545
- package/plugins/video/lg-video.es5.js.map +0 -1
- package/plugins/video/lg-video.min.js +0 -8
- package/plugins/video/lg-video.umd.js +0 -553
- package/plugins/video/lg-video.umd.js.map +0 -1
- package/plugins/video/package.json +0 -7
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +0 -182
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map +0 -1
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +0 -8
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +0 -190
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map +0 -1
- package/plugins/vimeoThumbnail/package.json +0 -7
- package/plugins/zoom/lg-zoom.es5.js +0 -980
- package/plugins/zoom/lg-zoom.es5.js.map +0 -1
- package/plugins/zoom/lg-zoom.min.js +0 -8
- package/plugins/zoom/lg-zoom.umd.js +0 -988
- package/plugins/zoom/lg-zoom.umd.js.map +0 -1
- package/plugins/zoom/package.json +0 -7
- package/react/Lightgallery.d.ts +0 -33
- package/react/Lightgallery.es5.js +0 -2988
- package/react/Lightgallery.es5.js.map +0 -1
- package/react/Lightgallery.umd.js +0 -2994
- package/react/Lightgallery.umd.js.map +0 -1
- package/react/package.json +0 -7
- package/scss/_lg-fonts.scss +0 -27
- package/scss/lg-fullscreen.scss +0 -9
- package/vue/LightGallery.vue.d.ts +0 -37
- package/vue/LightGalleryVue.common.js +0 -9343
- package/vue/LightGalleryVue.common.js.map +0 -1
- package/vue/LightGalleryVue.umd.js +0 -9353
- package/vue/LightGalleryVue.umd.js.map +0 -1
- package/vue/LightGalleryVue.umd.min.js +0 -8
- package/vue/LightGalleryVue.umd.min.js.map +0 -1
- package/vue/package.json +0 -7
- /package/{css → dist/css}/lg-medium-zoom.css +0 -0
- /package/{css → dist/css}/lg-medium-zoom.css.map +0 -0
- /package/{css → dist/css}/lg-pager.css +0 -0
- /package/{css → dist/css}/lg-relative-caption.css +0 -0
- /package/{css → dist/css}/lg-relative-caption.css.map +0 -0
- /package/{css → dist/css}/lg-video.css +0 -0
- /package/{css → dist/css}/lg-video.css.map +0 -0
- /package/{images → dist/images}/loading.gif +0 -0
- /package/{scss → dist/scss}/_lg-mixins.scss +0 -0
- /package/{scss → dist/scss}/lg-medium-zoom.scss +0 -0
- /package/{scss → dist/scss}/lg-pager.scss +0 -0
- /package/{scss → dist/scss}/lg-relative-caption.scss +0 -0
- /package/{scss → dist/scss}/lg-transitions.scss +0 -0
- /package/{scss → dist/scss}/lg-video.scss +0 -0
- /package/{scss → dist/scss}/transitions/_index.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-lollipop-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-lollipop.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-rotate-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-rotate.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-cross-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-cross.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-y-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-only-y.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-only.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-cross-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-cross.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver-rev.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew-ver.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-skew.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-vertical-growth.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-slide-vertical.scss +0 -0
- /package/{scss → dist/scss}/transitions/_lg-tube.scss +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lg-share.es5.js","sources":["../../../packages/headless/src/icons.ts","../../../packages/headless/src/toolbar-overflow.ts","../../../packages/headless/src/share-urls.ts","../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["/**\n * Built-in UI icon set: inline SVG strings, one per icon name, grouped\n * by the feature that renders them so bundlers ship only the groups a\n * consumer's plugins import. Pure string data — safe in this DOM-free\n * package. Runtimes render these when the consumer supplies no custom\n * icon for a name.\n *\n * The artwork is lightGallery's own icon set, carried over from the\n * 2.x icon font: each glyph's vector outline extracted from the font\n * and re-baselined onto a square viewBox (font ascent 960 on a 1024\n * em). Same shapes the library has always shipped — now crisp inline\n * SVGs that follow `currentColor`.\n */\n\n/** The icon-name contract shared by every runtime and plugin. */\nexport type LgIconName =\n | 'close'\n | 'prev'\n | 'next'\n | 'download'\n | 'maximize'\n | 'minimize'\n | 'more'\n | 'zoomIn'\n | 'zoomOut'\n | 'actualSize'\n | 'rotateLeft'\n | 'rotateRight'\n | 'flipHorizontal'\n | 'flipVertical'\n | 'share'\n | 'shareFacebook'\n | 'shareX'\n | 'sharePinterest'\n | 'autoplayPlay'\n | 'autoplayPause'\n | 'fullscreen'\n | 'fullscreenExit'\n | 'comment'\n | 'commentClose'\n | 'toggleThumbnails';\n\nexport const coreDefaultIcons = {\n close: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M810 664.667l-238-238 238-238-60-60-238 238-238-238-60 60 238 238-238 238 60 60 238-238 238 238z\"/></svg>',\n // Three dots for the toolbar's More options menu button.\n more: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><circle cx=\"232\" cy=\"512\" r=\"80\"/><circle cx=\"512\" cy=\"512\" r=\"80\"/><circle cx=\"792\" cy=\"512\" r=\"80\"/></svg>',\n prev: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M426.667 768q17.667 0 30.167-12.5t12.5-30.167q0-18-12.667-30.333l-225.667-225.667h665q17.667 0 30.167-12.5t12.5-30.167-12.5-30.167-30.167-12.5h-665l225.667-225.667q12.667-12.333 12.667-30.333 0-17.667-12.5-30.167t-30.167-12.5q-18 0-30.333 12.333l-298.667 298.667q-12.333 13-12.333 30.333t12.333 30.333l298.667 298.667q12.667 12.333 30.333 12.333z\"/></svg>',\n next: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M597.333 768q18 0 30.333-12.333l298.667-298.667q12.333-12.333 12.333-30.333t-12.333-30.333l-298.667-298.667q-12.333-12.333-30.333-12.333-18.333 0-30.5 12.167t-12.167 30.5q0 18 12.333 30.333l226 225.667h-665q-17.667 0-30.167 12.5t-12.5 30.167 12.5 30.167 30.167 12.5h665l-226 225.667q-12.333 12.333-12.333 30.333 0 18.333 12.167 30.5t30.5 12.167z\"/></svg>',\n download:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M170 128.667h684v-86h-684v86zM682 384.667l-170-172-170 172h128v426h84v-426h128z\"/></svg>',\n maximize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M793.003 768l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-3.925 3.925-8.619 7.083-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667zM230.997 85.334l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-23.552 19.115-42.667 42.667-42.667h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667z\"/></svg>',\n minimize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M700.331 554.667l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-5.803 1.152-11.307 3.243-16.341s5.163-9.728 9.216-13.781c0.043-0.043 0.043-0.043 0.085-0.085 3.925-3.925 8.619-7.083 13.781-9.216 5.035-2.091 10.539-3.243 16.341-3.243h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667zM158.165 12.502l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-4.096 4.053-8.789 7.125-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667h153.003l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0z\"/></svg>',\n} as const;\n\nexport const zoomDefaultIcons = {\n zoomIn: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 512.667h-86v-86h-42v86h-86v42h86v86h42v-86h86v-42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z\"/></svg>',\n zoomOut:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M298 554.667h214v-42h-214v42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z\"/></svg>',\n actualSize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M384 853.334h426.667q53 0 90.5-37.5t37.5-90.5v-426.667q0-53-37.5-90.5t-90.5-37.5h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 53 37.5 90.5t90.5 37.5zM170.667 675.334v-547.333q0-17.667 12.5-30.167t30.167-12.5h547.333q-13.333-37.667-46.333-61.5t-74.333-23.833h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 41.333 23.833 74.333t61.5 46.333zM810.667 768h-426.667q-17.667 0-30.167-12.5t-12.5-30.167v-426.667q0-17.667 12.5-30.167t30.167-12.5h426.667q17.667 0 30.167 12.5t12.5 30.167v426.667q0 17.667-12.5 30.167t-30.167 12.5z\"/></svg>',\n} as const;\n\nexport const rotateDefaultIcons = {\n rotateLeft:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M554 764.667q126-16 213-112t87-226-87-226-213-112v86q92 16 153 87t61 165-61 165-153 87v-166l-194 190 194 194v-132zM302 156.667l62 62q46-34 106-44v-86q-96 12-168 68zM260 384.667q10-58 42-106l-60-60q-56 74-68 166h86zM304 574.667q-36-52-44-106h-86q12 90 70 166z\"/></svg>',\n rotateRight:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M720 278.667q34 46 44 106h86q-12-92-68-166zM554 174.667q60 10 106 44l62-62q-72-56-168-68v86zM850 468.667h-86q-10 60-44 106l62 60q58-72 68-166zM664 702.667l-194-190v166q-92-16-153-87t-61-165 61-165 153-87v-86q-126 16-213 112t-87 226 87 226 213 112v132z\"/></svg>',\n flipHorizontal:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M896 554.667l-170-170v128h-300v84h300v128zM298 468.667v-128h300v-84h-300v-128l-170 170z\"/></svg>',\n flipVertical:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M384 810.667l170-170h-128v-300h-84v300h-128zM682 212.667h128l-170-170-170 170h128v300h84v-300z\"/></svg>',\n} as const;\n\nexport const shareDefaultIcons = {\n share: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z\"/></svg>',\n shareFacebook:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z\"/></svg>',\n shareX: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><circle cx=\"512\" cy=\"512\" r=\"491.52\"/><path fill=\"#fff\" transform=\"translate(227 224) scale(24)\" d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"/></svg>',\n sharePinterest:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z\"/></svg>',\n} as const;\n\nexport const autoplayDefaultIcons = {\n autoplayPlay:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM426 234.667v384l256-192z\"/></svg>',\n autoplayPause:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M554 256.667v340h86v-340h-86zM512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM384 256.667v340h86v-340h-86z\"/></svg>',\n} as const;\n\nexport const fullscreenDefaultIcons = {\n fullscreen:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M598 724.667h212v-212h-84v128h-128v84zM726 212.667v128h84v-212h-212v84h128zM214 512.667v212h212v-84h-128v-128h-84zM298 340.667v-128h128v-84h-212v212h84z\"/></svg>',\n fullscreenExit:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M682 596.667h128v-84h-212v212h84v-128zM598 128.667v212h212v-84h-128v-128h-84zM342 596.667v128h84v-212h-212v84h128zM214 256.667v84h212v-212h-84v128h-128z\"/></svg>',\n} as const;\n\nexport const commentDefaultIcons = {\n comment:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M938.667 448.128v21.205c0 0.725-0.043 1.621-0.085 2.475-5.803 99.755-47.488 190.336-112.725 258.176-68.352 71.125-162.731 117.419-268.843 123.264-0.683 0.043-1.536 0.085-2.347 0.085h-20.864c-59.947 0.683-122.965-13.227-181.931-43.008-52.181-26.496-97.749-63.488-133.931-108.16-56.405-69.717-89.899-158.080-89.941-253.696-0.597-54.4 10.795-111.36 35.157-165.419l-75.605-226.859c-2.816-8.363-3.072-17.835 0-26.965 7.467-22.357 31.616-34.432 53.973-26.965l226.731 75.563c49.493-22.485 105.984-35.243 165.376-35.115 58.539 0.384 115.797 13.141 168.149 36.949 81.579 37.163 151.040 101.248 193.749 186.667 27.477 53.291 43.307 115.84 43.136 181.803zM853.333 447.872c0.128-52.267-12.459-101.333-33.664-142.464-34.176-68.352-88.832-118.827-153.259-148.139-41.387-18.859-86.827-28.971-133.376-29.269-52.096-0.128-101.163 12.459-142.293 33.664-10.624 5.504-22.528 6.059-33.067 2.56l-162.261-54.101 54.101 162.261c3.755 11.221 2.56 22.912-2.389 32.725-23.552 46.677-34.304 96.171-33.792 142.421 0.043 76.331 26.411 145.92 70.955 200.917 28.629 35.371 64.768 64.725 106.24 85.76 46.592 23.552 96.085 34.304 142.336 33.792h19.456c83.712-4.565 158.037-41.003 212.011-97.152 51.285-53.376 84.139-124.416 89.003-202.795z\"/></svg>',\n commentClose:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M810 664.667l-238-238 238-238-60-60-238 238-238-238-60 60 238 238-238 238 60 60 238-238 238 238z\"/></svg>',\n} as const;\n\nexport const thumbnailDefaultIcons = {\n toggleThumbnails:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M682 84.667v172h172v-172h-172zM682 340.667v172h172v-172h-172zM426 596.667v172h172v-172h-172zM682 768.667h172v-172h-172v172zM426 340.667v172h172v-172h-172zM170 340.667v172h172v-172h-172zM170 84.667v172h172v-172h-172zM426 84.667v172h172v-172h-172zM170 596.667v172h172v-172h-172z\"/></svg>',\n} as const;\n","/**\n * Toolbar overflow: when the toolbar's icon buttons do not fit on one row\n * beside the counter, the lowest-priority buttons move into a \"More\n * options\" menu. Pure layout arithmetic over measured widths; each runtime\n * measures its own DOM, applies the result and renders the menu.\n */\n\n/** Priority of a button that never moves into the menu (close). */\nexport const TOOLBAR_PINNED = Number.POSITIVE_INFINITY;\n\n/** Priority of a button the table does not know (custom plugin buttons). */\nexport const TOOLBAR_DEFAULT_PRIORITY = 20;\n\n/**\n * Higher stays in the row longer. Keyed by the class each button carries\n * in every runtime; the first matching class wins.\n */\nconst PRIORITY_BY_CLASS: ReadonlyArray<readonly [string, number]> = [\n ['lg-close', TOOLBAR_PINNED],\n ['lg-share', 30],\n ['lg-autoplay-button', 30],\n ['lg-download', 30],\n ['lg-fullscreen', 20],\n ['lg-toggle-thumb', 20],\n ['lg-comment-toggle', 20],\n ['lg-maximize', 10],\n ['lg-rotate-left', 10],\n ['lg-rotate-right', 10],\n ['lg-flip-hor', 10],\n ['lg-flip-ver', 10],\n // Gesture duplicates go first: pinch and double-tap do the same.\n ['lg-zoom-in', 0],\n ['lg-zoom-out', 0],\n ['lg-actual-size', 0],\n];\n\n/** Overflow priority of a toolbar button from its class names. */\nexport function getToolbarItemPriority(classList: Iterable<string>): number {\n const classes = new Set(classList);\n for (const [className, priority] of PRIORITY_BY_CLASS) {\n if (classes.has(className)) {\n return priority;\n }\n }\n return TOOLBAR_DEFAULT_PRIORITY;\n}\n\nexport interface ToolbarOverflowItem {\n /** Measured width, px. */\n width: number;\n /** From {@link getToolbarItemPriority}; higher stays longer. */\n priority: number;\n}\n\nexport interface ToolbarOverflowInput {\n /** Width of the toolbar row, px. */\n available: number;\n /** Width taken by content that never moves (the counter), px. */\n reserved: number;\n /** Width of the More button, px. */\n moreWidth: number;\n /** The toolbar's icon buttons, in DOM order. */\n items: readonly ToolbarOverflowItem[];\n}\n\n/**\n * Indices (in DOM order) of the buttons that move into the menu; empty\n * when everything fits, or when the toolbar has no width yet (not laid\n * out). Lowest priority moves first; among equals, the button later in\n * DOM order goes first, which is the one furthest from the close button.\n * The More button's own width is paid as soon as anything moves.\n */\nexport function getToolbarOverflow({\n available,\n reserved,\n moreWidth,\n items,\n}: ToolbarOverflowInput): number[] {\n if (available <= 0) {\n return [];\n }\n const total = items.reduce((sum, item) => sum + item.width, 0);\n if (reserved + total <= available) {\n return [];\n }\n const candidates = items\n .map((item, index) => ({ ...item, index }))\n .filter((item) => item.priority !== TOOLBAR_PINNED)\n .sort((a, b) => a.priority - b.priority || b.index - a.index);\n let used = reserved + moreWidth + total;\n const moved: number[] = [];\n for (const item of candidates) {\n if (used <= available) {\n break;\n }\n moved.push(item.index);\n used -= item.width;\n }\n return moved.sort((a, b) => a - b);\n}\n\n/**\n * Whether a click's event path runs through the toolbar. Clicks there are\n * controls, not a tap on the backdrop: Medium zoom closes on the latter\n * only. The path (`event.composedPath()`) still lists a More menu item the\n * click already removed from the document.\n */\nexport function isToolbarEventPath(path: readonly unknown[]): boolean {\n return path.some(\n (node) =>\n !!(\n node as { classList?: { contains(name: string): boolean } }\n ).classList?.contains('lg-toolbar'),\n );\n}\n\n/**\n * Class names of the backdrop around the slide, where a tap closes the\n * gallery (`closeOnTap`) and a drag starts a swipe.\n */\nconst BACKDROP_CLASS_NAMES = [\n 'lg-outer',\n 'lg-item',\n 'lg-img-wrap',\n 'lg-img-rotate',\n];\n\n/** What the dismissal of a toolbar menu reads from the dismissing press. */\nexport interface MenuDismissEvent {\n target: unknown;\n preventDefault(): void;\n stopPropagation(): void;\n}\n\n/**\n * A press outside an open toolbar menu (the More options menu, the share\n * dropdown) dismisses it. A press on a control passes through, so one\n * click on another toolbar button both dismisses the menu and runs the\n * button. A press on the backdrop around the slide is consumed instead:\n * there the gallery's own tap-to-close and drag would fire, and\n * dismissing a menu must not also close the gallery. Cancelling the\n * pointerdown suppresses the compatibility mouse events the vanilla\n * runtime listens to; stopping it keeps the pointer-driven runtimes'\n * handlers from arming. Returns whether the press was consumed.\n */\nexport function consumeBackdropPress(event: MenuDismissEvent): boolean {\n const classList = (\n event.target as {\n classList?: { contains(name: string): boolean };\n } | null\n )?.classList;\n if (\n !classList ||\n !BACKDROP_CLASS_NAMES.some((name) => classList.contains(name))\n ) {\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n}\n","/**\n * Share link builders + Web Share payload logic for the share plugin. The\n * URL builders are ported from the 2.x `lg-*-share-utils` files as pure\n * functions — the page URL fallback is a parameter instead of\n * `window.location.href`. The Web Share helpers are pure too: the runtime\n * hands in a structural `navigator` so nothing here touches the DOM.\n */\n\n/**\n * Structural slice of a gallery item the share builders read — kept\n * narrow so any runtime's item shape (including the 2.x vanilla one)\n * satisfies it without casts.\n */\nexport interface ShareItemFields {\n src?: string;\n alt?: string;\n title?: string;\n shareUrl?: string;\n facebookShareUrl?: string;\n tweetText?: string;\n twitterShareUrl?: string;\n pinterestShareUrl?: string;\n pinterestText?: string;\n}\n\nexport function getFacebookShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n return (\n '//www.facebook.com/sharer/sharer.php?u=' +\n encodeURIComponent(item.facebookShareUrl || currentUrl)\n );\n}\n\n/**\n * X (formerly Twitter) intent URL. The 2.x `tweetText`/`twitterShareUrl`\n * item fields (and their `data-tweet-text` style attributes) keep working —\n * only the target changed. Unlike the 2.x builder the text is URL-encoded.\n */\nexport function getXShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n const url = encodeURIComponent(item.twitterShareUrl || currentUrl);\n const text = encodeURIComponent(item.tweetText ?? '');\n return `//x.com/intent/post?text=${text}&url=${url}`;\n}\n\n/** @deprecated Renamed — use {@link getXShareLink} (X intent URL). */\nexport const getTwitterShareLink = getXShareLink;\n\nexport function getPinterestShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n const media = encodeURIComponent(item.src ?? '');\n const url = encodeURIComponent(item.pinterestShareUrl || currentUrl);\n const description = item.pinterestText ?? '';\n return `//www.pinterest.com/pin/create/button/?url=${url}&media=${media}&description=${description}`;\n}\n\n/**\n * Data handed to `navigator.share`. URL-sharing only by design: attaching\n * the image itself would require fetching cross-origin bytes (a proxy),\n * which the share plugin will not do.\n */\nexport interface SharePayload {\n title?: string;\n text?: string;\n url: string;\n}\n\n/**\n * Build the Web Share payload for a slide. The per-item `shareUrl` wins,\n * then the network-specific share URLs, then the page URL; text falls back\n * from the tweet text to the Pinterest description.\n */\nexport function getSharePayload(\n item: ShareItemFields,\n currentUrl: string,\n): SharePayload {\n const payload: SharePayload = {\n url:\n item.shareUrl ||\n item.twitterShareUrl ||\n item.facebookShareUrl ||\n currentUrl,\n };\n const title = item.title || item.alt;\n if (title) {\n payload.title = title;\n }\n const text = item.tweetText || item.pinterestText;\n if (text) {\n payload.text = text;\n }\n return payload;\n}\n\n/** Structural slice of `navigator` the Web Share decision needs. */\nexport interface NativeShareNavigator {\n share?: (data: SharePayload) => Promise<void>;\n canShare?: (data: SharePayload) => boolean;\n}\n\n/**\n * True when the runtime can hand this payload to the OS share sheet.\n * Feature-detected and never load-bearing: no `navigator.share` (or a\n * `canShare` veto) simply keeps the branded dropdown menu.\n */\nexport function canNativeShare(\n nav: NativeShareNavigator | undefined | null,\n payload: SharePayload,\n): boolean {\n if (!nav || typeof nav.share !== 'function') {\n return false;\n }\n if (typeof nav.canShare === 'function') {\n return nav.canShare(payload);\n }\n return true;\n}\n","import { ShareOption } from './types';\n\nexport interface ShareStrings {\n share: string;\n}\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Prefer the OS share sheet (`navigator.share`) over the dropdown menu\n * when the browser supports it. The share button then opens the native\n * sheet with the slide's URL (per-item `shareUrl`, falling back to the\n * network share URLs, then the page URL); the dropdown remains as the\n * automatic fallback. URL-sharing only, the image file itself is never\n * attached.\n * @description Defaults to true on touch devices and false on desktop,\n * where the branded dropdown is kept for consistency.\n * See <a href=\"/docs/web-share/\">Web Share</a>.\n * @version V3.0.0\n */\n preferNativeShare?: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n\n /**\n * Custom translation strings for aria-labels\n * @deprecated Set these labels on the core `strings` object instead,\n * every user-facing string lives in that one contract. An explicitly set\n * key here still wins (alias).\n */\n sharePluginStrings?: Partial<ShareStrings>;\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'X',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { getFacebookShareLink as buildFacebookShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n return buildFacebookShareLink(galleryItem, window.location.href);\n}\n","import { getXShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\n/** X (formerly Twitter) intent link; the file name is kept for 2.x import\n * compatibility, `tweetText`/`twitterShareUrl` fields keep working. */\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n return getXShareLink(galleryItem, window.location.href);\n}\n","import { getPinterestShareLink as buildPinterestShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n return buildPinterestShareLink(galleryItem, window.location.href);\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 {\n canNativeShare,\n consumeBackdropPress,\n getSharePayload,\n shareDefaultIcons,\n} from '@lightgallery/headless';\n\nimport { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\n\n/** Web Share default: the OS sheet is where sharing shines on touch devices. */\nfunction isTouchDevice(): boolean {\n return (\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || 'ontouchstart' in window)\n );\n}\n\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n private listening = false;\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n this.core.registerDefaultIcons(shareDefaultIcons);\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share-outer .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n this.core.LGel.on(`${lGEvents.beforeClose}.share`, () => {\n this.setDropdownOpen(false);\n });\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n /**\n * True when the button should try the OS share sheet first. The\n * dropdown stays rendered as the automatic fallback (a `canShare`\n * veto or share failure at click time falls back to the menu).\n */\n private prefersNativeShare(): boolean {\n const preferNative = this.settings.preferNativeShare ?? isTouchDevice();\n return (\n preferNative &&\n typeof navigator !== 'undefined' &&\n typeof navigator.share === 'function'\n );\n }\n\n setLgShareMarkup(): void {\n const popupAttrs = this.prefersNativeShare()\n ? ''\n : 'aria-haspopup=\"true\" aria-expanded=\"false\"';\n this.core.$toolbar.append(\n `<div class=\"lg-share-outer\"><button type=\"button\" aria-label=\"${\n this.settings.sharePluginStrings?.share ??\n this.core.settings.strings.share\n }\" ${popupAttrs} class=\"lg-share lg-icon\"></button>\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></div>`,\n );\n\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n if (this.prefersNativeShare()) {\n const payload = getSharePayload(\n this.core.galleryItems[this.core.index],\n window.location.href,\n );\n if (canNativeShare(navigator, payload)) {\n // Rejection = the user dismissed the sheet (AbortError)\n // or the OS refused, nothing to clean up either way.\n navigator.share(payload).catch(() => undefined);\n return;\n }\n }\n this.setDropdownOpen(\n !this.core.outer.hasClass('lg-dropdown-active'),\n );\n });\n }\n\n /**\n * Open state lives on the outer element, which outlives a close, so an\n * open dropdown would still be open on the next open. While open, the\n * dropdown dismisses like the More options menu: on a press anywhere\n * outside it, on Escape (the gallery stays open) and when focus tabs\n * out of it.\n */\n private setDropdownOpen(open: boolean): void {\n if (open) {\n this.core.outer.addClass('lg-dropdown-active');\n } else {\n this.core.outer.removeClass('lg-dropdown-active');\n }\n this.core.outer\n .find('.lg-share')\n .first()\n .attr('aria-expanded', open ? 'true' : 'false');\n this.listenOutside(open);\n }\n\n private listenOutside(on: boolean): void {\n if (on === this.listening) {\n return;\n }\n this.listening = on;\n if (on) {\n document.addEventListener(\n 'pointerdown',\n this.onDocumentPointerDown,\n true,\n );\n document.addEventListener('keydown', this.onDocumentKeydown, true);\n } else {\n document.removeEventListener(\n 'pointerdown',\n this.onDocumentPointerDown,\n true,\n );\n document.removeEventListener(\n 'keydown',\n this.onDocumentKeydown,\n true,\n );\n }\n }\n\n private readonly onDocumentPointerDown = (event: Event): void => {\n const target = event.target as Node | null;\n const shareOuter = this.core.outer.find('.lg-share-outer').get();\n if (target && shareOuter && shareOuter.contains(target)) {\n return;\n }\n consumeBackdropPress(event);\n this.setDropdownOpen(false);\n };\n\n private readonly onDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n // The dropdown is the topmost layer: Escape closes it, not\n // the gallery behind it.\n event.preventDefault();\n event.stopPropagation();\n this.setDropdownOpen(false);\n this.core.outer.find('.lg-share').get()?.focus();\n return;\n }\n if (event.key !== 'Tab') {\n return;\n }\n // Tabbing between the button and its links keeps the dropdown;\n // tabbing out of it closes it.\n const shareOuter = this.core.outer.find('.lg-share-outer').get();\n const focusable = shareOuter\n ? Array.from(\n shareOuter.querySelectorAll<HTMLElement>('button, a[href]'),\n )\n : [];\n const index = focusable.indexOf(document.activeElement as HTMLElement);\n if (\n index !== -1 &&\n (event.shiftKey ? index === 0 : index === focusable.length - 1)\n ) {\n this.setDropdownOpen(false);\n }\n };\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n return `<li><a class=\"lg-share-${type}\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">${text}</span></a></li>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.listenOutside(false);\n this.core.outer.find('.lg-share-outer').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":["getFacebookShareLink","getPinterestShareLink","buildFacebookShareLink","buildPinterestShareLink"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgShare=t()}(this,function(){"use strict";const e={share:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z"/></svg>',shareFacebook:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z"/></svg>',shareX:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><circle cx="512" cy="512" r="491.52"/><path fill="#fff" transform="translate(227 224) scale(24)" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>',sharePinterest:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z"/></svg>'},t=["lg-outer","lg-item","lg-img-wrap","lg-img-rotate"];const r={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"X",pinterest:!0,pinterestDropdownText:"Pinterest",additionalShareOptions:[]};function o(e){return t=e,r=window.location.href,"//www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(t.facebookShareUrl||r);var t,r}function n(e){return function(e,t){var r;const o=encodeURIComponent(e.twitterShareUrl||t);return`//x.com/intent/post?text=${encodeURIComponent(null!=(r=e.tweetText)?r:"")}&url=${o}`}(e,window.location.href)}function s(e){return function(e,t){var r,o;const n=encodeURIComponent(null!=(r=e.src)?r:"");return`//www.pinterest.com/pin/create/button/?url=${encodeURIComponent(e.pinterestShareUrl||t)}&media=${n}&description=${null!=(o=e.pinterestText)?o:""}`}(e,window.location.href)}const i="lgAfterSlide",a="lgBeforeClose";var l=Object.defineProperty,h=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,d=(e,t,r)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))c.call(t,r)&&d(e,r,t[r]);if(h)for(var r of h(t))p.call(t,r)&&d(e,r,t[r]);return e};return class{constructor(e){return this.shareOptions=[],this.listening=!1,this.onDocumentPointerDown=e=>{const r=e.target,o=this.core.outer.find(".lg-share-outer").get();r&&o&&o.contains(r)||(!function(e){var r;const o=null==(r=e.target)?void 0:r.classList;!o||!t.some(e=>o.contains(e))||(e.preventDefault(),e.stopPropagation())}(e),this.setDropdownOpen(!1))},this.onDocumentKeydown=e=>{var t;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),this.setDropdownOpen(!1),void(null==(t=this.core.outer.find(".lg-share").get())||t.focus());if("Tab"!==e.key)return;const r=this.core.outer.find(".lg-share-outer").get(),o=r?Array.from(r.querySelectorAll("button, a[href]")):[],n=o.indexOf(document.activeElement);-1!==n&&(e.shiftKey?0===n:n===o.length-1)&&this.setDropdownOpen(!1)},this.core=e,this.settings=u(u({},r),this.core.settings),this}init(){this.core.registerDefaultIcons(e),this.settings.share&&(this.shareOptions=[...this.getDefaultShareOptions(),...this.settings.additionalShareOptions],this.setLgShareMarkup(),this.core.outer.find(".lg-share-outer .lg-dropdown").append(this.getShareListHtml()),this.core.LGel.on(`${i}.share`,this.onAfterSlide.bind(this)),this.core.LGel.on(`${a}.share`,()=>{this.setDropdownOpen(!1)}))}getShareListHtml(){let e="";return this.shareOptions.forEach(t=>{e+=t.dropdownHTML}),e}prefersNativeShare(){var e;return(null!=(e=this.settings.preferNativeShare)?e:"undefined"!=typeof window&&(navigator.maxTouchPoints>0||"ontouchstart"in window))&&"undefined"!=typeof navigator&&"function"==typeof navigator.share}setLgShareMarkup(){var e,t;const r=this.prefersNativeShare()?"":'aria-haspopup="true" aria-expanded="false"';this.core.$toolbar.append(`<div class="lg-share-outer"><button type="button" aria-label="${null!=(t=null==(e=this.settings.sharePluginStrings)?void 0:e.share)?t:this.core.settings.strings.share}" ${r} class="lg-share lg-icon"></button>\n <ul class="lg-dropdown" style="position: absolute;"></ul></div>`);this.core.outer.find(".lg-share").first().on("click.lg",()=>{if(this.prefersNativeShare()){const e=function(e,t){const r={url:e.shareUrl||e.twitterShareUrl||e.facebookShareUrl||t},o=e.title||e.alt;o&&(r.title=o);const n=e.tweetText||e.pinterestText;return n&&(r.text=n),r}(this.core.galleryItems[this.core.index],window.location.href);if(function(e,t){return!(!e||"function"!=typeof e.share)&&("function"!=typeof e.canShare||e.canShare(t))}(navigator,e))return void navigator.share(e).catch(()=>{})}this.setDropdownOpen(!this.core.outer.hasClass("lg-dropdown-active"))})}setDropdownOpen(e){e?this.core.outer.addClass("lg-dropdown-active"):this.core.outer.removeClass("lg-dropdown-active"),this.core.outer.find(".lg-share").first().attr("aria-expanded",e?"true":"false"),this.listenOutside(e)}listenOutside(e){e!==this.listening&&(this.listening=e,e?(document.addEventListener("pointerdown",this.onDocumentPointerDown,!0),document.addEventListener("keydown",this.onDocumentKeydown,!0)):(document.removeEventListener("pointerdown",this.onDocumentPointerDown,!0),document.removeEventListener("keydown",this.onDocumentKeydown,!0)))}onAfterSlide(e){const{index:t}=e.detail,r=this.core.galleryItems[t];setTimeout(()=>{this.shareOptions.forEach(e=>{const t=e.selector;this.core.outer.find(t).attr("href",e.generateLink(r))})},100)}getShareListItemHTML(e,t){return`<li><a class="lg-share-${e}" rel="noopener" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">${t}</span></a></li>`}getDefaultShareOptions(){return[...this.settings.facebook?[{type:"facebook",generateLink:o,dropdownHTML:this.getShareListItemHTML("facebook",this.settings.facebookDropdownText),selector:".lg-share-facebook"}]:[],...this.settings.twitter?[{type:"twitter",generateLink:n,dropdownHTML:this.getShareListItemHTML("twitter",this.settings.twitterDropdownText),selector:".lg-share-twitter"}]:[],...this.settings.pinterest?[{type:"pinterest",generateLink:s,dropdownHTML:this.getShareListItemHTML("pinterest",this.settings.pinterestDropdownText),selector:".lg-share-pinterest"}]:[]]}destroy(){this.listenOutside(!1),this.core.outer.find(".lg-share-outer").remove(),this.core.LGel.off(".lg.share"),this.core.LGel.off(".share")}}});
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
(function(global, factory) {
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.lgShare = factory());
|
|
3
|
+
})(this, function() {
|
|
4
|
+
"use strict";/*!
|
|
5
|
+
* lightgallery | 3.0.0-beta.3 | October 1st 2026
|
|
6
|
+
* http://www.lightgalleryjs.com/
|
|
7
|
+
* Copyright (c) 2020 Sachin Neravath;
|
|
8
|
+
* @license GPLv3
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const shareDefaultIcons = {
|
|
12
|
+
share: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z"/></svg>',
|
|
13
|
+
shareFacebook: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z"/></svg>',
|
|
14
|
+
shareX: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><circle cx="512" cy="512" r="491.52"/><path fill="#fff" transform="translate(227 224) scale(24)" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>',
|
|
15
|
+
sharePinterest: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path transform="translate(0, 960) scale(1, -1)" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z"/></svg>'
|
|
16
|
+
};
|
|
17
|
+
const BACKDROP_CLASS_NAMES = [
|
|
18
|
+
"lg-outer",
|
|
19
|
+
"lg-item",
|
|
20
|
+
"lg-img-wrap",
|
|
21
|
+
"lg-img-rotate"
|
|
22
|
+
];
|
|
23
|
+
function consumeBackdropPress(event) {
|
|
24
|
+
var _a;
|
|
25
|
+
const classList = (_a = event.target) == null ? void 0 : _a.classList;
|
|
26
|
+
if (!classList || !BACKDROP_CLASS_NAMES.some((name) => classList.contains(name))) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
event.stopPropagation();
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
function getFacebookShareLink$1(item, currentUrl) {
|
|
34
|
+
return "//www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(item.facebookShareUrl || currentUrl);
|
|
35
|
+
}
|
|
36
|
+
function getXShareLink(item, currentUrl) {
|
|
37
|
+
var _a;
|
|
38
|
+
const url = encodeURIComponent(item.twitterShareUrl || currentUrl);
|
|
39
|
+
const text = encodeURIComponent((_a = item.tweetText) != null ? _a : "");
|
|
40
|
+
return `//x.com/intent/post?text=${text}&url=${url}`;
|
|
41
|
+
}
|
|
42
|
+
function getPinterestShareLink$1(item, currentUrl) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
const media = encodeURIComponent((_a = item.src) != null ? _a : "");
|
|
45
|
+
const url = encodeURIComponent(item.pinterestShareUrl || currentUrl);
|
|
46
|
+
const description = (_b = item.pinterestText) != null ? _b : "";
|
|
47
|
+
return `//www.pinterest.com/pin/create/button/?url=${url}&media=${media}&description=${description}`;
|
|
48
|
+
}
|
|
49
|
+
function getSharePayload(item, currentUrl) {
|
|
50
|
+
const payload = {
|
|
51
|
+
url: item.shareUrl || item.twitterShareUrl || item.facebookShareUrl || currentUrl
|
|
52
|
+
};
|
|
53
|
+
const title = item.title || item.alt;
|
|
54
|
+
if (title) {
|
|
55
|
+
payload.title = title;
|
|
56
|
+
}
|
|
57
|
+
const text = item.tweetText || item.pinterestText;
|
|
58
|
+
if (text) {
|
|
59
|
+
payload.text = text;
|
|
60
|
+
}
|
|
61
|
+
return payload;
|
|
62
|
+
}
|
|
63
|
+
function canNativeShare(nav, payload) {
|
|
64
|
+
if (!nav || typeof nav.share !== "function") {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (typeof nav.canShare === "function") {
|
|
68
|
+
return nav.canShare(payload);
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
const shareSettings = {
|
|
73
|
+
share: true,
|
|
74
|
+
facebook: true,
|
|
75
|
+
facebookDropdownText: "Facebook",
|
|
76
|
+
twitter: true,
|
|
77
|
+
twitterDropdownText: "X",
|
|
78
|
+
pinterest: true,
|
|
79
|
+
pinterestDropdownText: "Pinterest",
|
|
80
|
+
additionalShareOptions: []
|
|
81
|
+
};
|
|
82
|
+
function getFacebookShareLink(galleryItem) {
|
|
83
|
+
return getFacebookShareLink$1(galleryItem, window.location.href);
|
|
84
|
+
}
|
|
85
|
+
function getTwitterShareLink(galleryItem) {
|
|
86
|
+
return getXShareLink(galleryItem, window.location.href);
|
|
87
|
+
}
|
|
88
|
+
function getPinterestShareLink(galleryItem) {
|
|
89
|
+
return getPinterestShareLink$1(galleryItem, window.location.href);
|
|
90
|
+
}
|
|
91
|
+
const lGEvents = {
|
|
92
|
+
afterSlide: "lgAfterSlide",
|
|
93
|
+
beforeClose: "lgBeforeClose"
|
|
94
|
+
};
|
|
95
|
+
var __defProp = Object.defineProperty;
|
|
96
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
97
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
98
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
99
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
100
|
+
var __spreadValues = (a, b) => {
|
|
101
|
+
for (var prop in b || (b = {}))
|
|
102
|
+
if (__hasOwnProp.call(b, prop))
|
|
103
|
+
__defNormalProp(a, prop, b[prop]);
|
|
104
|
+
if (__getOwnPropSymbols)
|
|
105
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
106
|
+
if (__propIsEnum.call(b, prop))
|
|
107
|
+
__defNormalProp(a, prop, b[prop]);
|
|
108
|
+
}
|
|
109
|
+
return a;
|
|
110
|
+
};
|
|
111
|
+
function isTouchDevice() {
|
|
112
|
+
return typeof window !== "undefined" && (navigator.maxTouchPoints > 0 || "ontouchstart" in window);
|
|
113
|
+
}
|
|
114
|
+
class Share {
|
|
115
|
+
constructor(instance) {
|
|
116
|
+
this.shareOptions = [];
|
|
117
|
+
this.listening = false;
|
|
118
|
+
this.onDocumentPointerDown = (event) => {
|
|
119
|
+
const target = event.target;
|
|
120
|
+
const shareOuter = this.core.outer.find(".lg-share-outer").get();
|
|
121
|
+
if (target && shareOuter && shareOuter.contains(target)) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
consumeBackdropPress(event);
|
|
125
|
+
this.setDropdownOpen(false);
|
|
126
|
+
};
|
|
127
|
+
this.onDocumentKeydown = (event) => {
|
|
128
|
+
var _a;
|
|
129
|
+
if (event.key === "Escape") {
|
|
130
|
+
event.preventDefault();
|
|
131
|
+
event.stopPropagation();
|
|
132
|
+
this.setDropdownOpen(false);
|
|
133
|
+
(_a = this.core.outer.find(".lg-share").get()) == null ? void 0 : _a.focus();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (event.key !== "Tab") {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const shareOuter = this.core.outer.find(".lg-share-outer").get();
|
|
140
|
+
const focusable = shareOuter ? Array.from(
|
|
141
|
+
shareOuter.querySelectorAll("button, a[href]")
|
|
142
|
+
) : [];
|
|
143
|
+
const index = focusable.indexOf(document.activeElement);
|
|
144
|
+
if (index !== -1 && (event.shiftKey ? index === 0 : index === focusable.length - 1)) {
|
|
145
|
+
this.setDropdownOpen(false);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this.core = instance;
|
|
149
|
+
this.settings = __spreadValues(__spreadValues({}, shareSettings), this.core.settings);
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
init() {
|
|
153
|
+
this.core.registerDefaultIcons(shareDefaultIcons);
|
|
154
|
+
if (!this.settings.share) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.shareOptions = [
|
|
158
|
+
...this.getDefaultShareOptions(),
|
|
159
|
+
...this.settings.additionalShareOptions
|
|
160
|
+
];
|
|
161
|
+
this.setLgShareMarkup();
|
|
162
|
+
this.core.outer.find(".lg-share-outer .lg-dropdown").append(this.getShareListHtml());
|
|
163
|
+
this.core.LGel.on(
|
|
164
|
+
`${lGEvents.afterSlide}.share`,
|
|
165
|
+
this.onAfterSlide.bind(this)
|
|
166
|
+
);
|
|
167
|
+
this.core.LGel.on(`${lGEvents.beforeClose}.share`, () => {
|
|
168
|
+
this.setDropdownOpen(false);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
getShareListHtml() {
|
|
172
|
+
let shareHtml = "";
|
|
173
|
+
this.shareOptions.forEach((shareOption) => {
|
|
174
|
+
shareHtml += shareOption.dropdownHTML;
|
|
175
|
+
});
|
|
176
|
+
return shareHtml;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* True when the button should try the OS share sheet first. The
|
|
180
|
+
* dropdown stays rendered as the automatic fallback (a `canShare`
|
|
181
|
+
* veto or share failure at click time falls back to the menu).
|
|
182
|
+
*/
|
|
183
|
+
prefersNativeShare() {
|
|
184
|
+
var _a;
|
|
185
|
+
const preferNative = (_a = this.settings.preferNativeShare) != null ? _a : isTouchDevice();
|
|
186
|
+
return preferNative && typeof navigator !== "undefined" && typeof navigator.share === "function";
|
|
187
|
+
}
|
|
188
|
+
setLgShareMarkup() {
|
|
189
|
+
var _a, _b;
|
|
190
|
+
const popupAttrs = this.prefersNativeShare() ? "" : 'aria-haspopup="true" aria-expanded="false"';
|
|
191
|
+
this.core.$toolbar.append(
|
|
192
|
+
`<div class="lg-share-outer"><button type="button" aria-label="${(_b = (_a = this.settings.sharePluginStrings) == null ? void 0 : _a.share) != null ? _b : this.core.settings.strings.share}" ${popupAttrs} class="lg-share lg-icon"></button>
|
|
193
|
+
<ul class="lg-dropdown" style="position: absolute;"></ul></div>`
|
|
194
|
+
);
|
|
195
|
+
const $shareButton = this.core.outer.find(".lg-share");
|
|
196
|
+
$shareButton.first().on("click.lg", () => {
|
|
197
|
+
if (this.prefersNativeShare()) {
|
|
198
|
+
const payload = getSharePayload(
|
|
199
|
+
this.core.galleryItems[this.core.index],
|
|
200
|
+
window.location.href
|
|
201
|
+
);
|
|
202
|
+
if (canNativeShare(navigator, payload)) {
|
|
203
|
+
navigator.share(payload).catch(() => void 0);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
this.setDropdownOpen(
|
|
208
|
+
!this.core.outer.hasClass("lg-dropdown-active")
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Open state lives on the outer element, which outlives a close, so an
|
|
214
|
+
* open dropdown would still be open on the next open. While open, the
|
|
215
|
+
* dropdown dismisses like the More options menu: on a press anywhere
|
|
216
|
+
* outside it, on Escape (the gallery stays open) and when focus tabs
|
|
217
|
+
* out of it.
|
|
218
|
+
*/
|
|
219
|
+
setDropdownOpen(open) {
|
|
220
|
+
if (open) {
|
|
221
|
+
this.core.outer.addClass("lg-dropdown-active");
|
|
222
|
+
} else {
|
|
223
|
+
this.core.outer.removeClass("lg-dropdown-active");
|
|
224
|
+
}
|
|
225
|
+
this.core.outer.find(".lg-share").first().attr("aria-expanded", open ? "true" : "false");
|
|
226
|
+
this.listenOutside(open);
|
|
227
|
+
}
|
|
228
|
+
listenOutside(on) {
|
|
229
|
+
if (on === this.listening) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
this.listening = on;
|
|
233
|
+
if (on) {
|
|
234
|
+
document.addEventListener(
|
|
235
|
+
"pointerdown",
|
|
236
|
+
this.onDocumentPointerDown,
|
|
237
|
+
true
|
|
238
|
+
);
|
|
239
|
+
document.addEventListener("keydown", this.onDocumentKeydown, true);
|
|
240
|
+
} else {
|
|
241
|
+
document.removeEventListener(
|
|
242
|
+
"pointerdown",
|
|
243
|
+
this.onDocumentPointerDown,
|
|
244
|
+
true
|
|
245
|
+
);
|
|
246
|
+
document.removeEventListener(
|
|
247
|
+
"keydown",
|
|
248
|
+
this.onDocumentKeydown,
|
|
249
|
+
true
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
onAfterSlide(event) {
|
|
254
|
+
const { index } = event.detail;
|
|
255
|
+
const currentItem = this.core.galleryItems[index];
|
|
256
|
+
setTimeout(() => {
|
|
257
|
+
this.shareOptions.forEach((shareOption) => {
|
|
258
|
+
const selector = shareOption.selector;
|
|
259
|
+
this.core.outer.find(selector).attr("href", shareOption.generateLink(currentItem));
|
|
260
|
+
});
|
|
261
|
+
}, 100);
|
|
262
|
+
}
|
|
263
|
+
getShareListItemHTML(type, text) {
|
|
264
|
+
return `<li><a class="lg-share-${type}" rel="noopener" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">${text}</span></a></li>`;
|
|
265
|
+
}
|
|
266
|
+
getDefaultShareOptions() {
|
|
267
|
+
return [
|
|
268
|
+
...this.settings.facebook ? [
|
|
269
|
+
{
|
|
270
|
+
type: "facebook",
|
|
271
|
+
generateLink: getFacebookShareLink,
|
|
272
|
+
dropdownHTML: this.getShareListItemHTML(
|
|
273
|
+
"facebook",
|
|
274
|
+
this.settings.facebookDropdownText
|
|
275
|
+
),
|
|
276
|
+
selector: ".lg-share-facebook"
|
|
277
|
+
}
|
|
278
|
+
] : [],
|
|
279
|
+
...this.settings.twitter ? [
|
|
280
|
+
{
|
|
281
|
+
type: "twitter",
|
|
282
|
+
generateLink: getTwitterShareLink,
|
|
283
|
+
dropdownHTML: this.getShareListItemHTML(
|
|
284
|
+
"twitter",
|
|
285
|
+
this.settings.twitterDropdownText
|
|
286
|
+
),
|
|
287
|
+
selector: ".lg-share-twitter"
|
|
288
|
+
}
|
|
289
|
+
] : [],
|
|
290
|
+
...this.settings.pinterest ? [
|
|
291
|
+
{
|
|
292
|
+
type: "pinterest",
|
|
293
|
+
generateLink: getPinterestShareLink,
|
|
294
|
+
dropdownHTML: this.getShareListItemHTML(
|
|
295
|
+
"pinterest",
|
|
296
|
+
this.settings.pinterestDropdownText
|
|
297
|
+
),
|
|
298
|
+
selector: ".lg-share-pinterest"
|
|
299
|
+
}
|
|
300
|
+
] : []
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
destroy() {
|
|
304
|
+
this.listenOutside(false);
|
|
305
|
+
this.core.outer.find(".lg-share-outer").remove();
|
|
306
|
+
this.core.LGel.off(".lg.share");
|
|
307
|
+
this.core.LGel.off(".share");
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return Share;
|
|
311
|
+
});
|
|
312
|
+
//# sourceMappingURL=lg-share.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lg-share.umd.js","sources":["../../../packages/headless/src/icons.ts","../../../packages/headless/src/toolbar-overflow.ts","../../../packages/headless/src/share-urls.ts","../../../src/plugins/share/lg-share-settings.ts","../../../src/plugins/share/lg-fb-share-utils.ts","../../../src/plugins/share/lg-twitter-share-utils.ts","../../../src/plugins/share/lg-pinterest-share-utils.ts","../../../src/lg-events.ts","../../../src/plugins/share/lg-share.ts"],"sourcesContent":["/**\n * Built-in UI icon set: inline SVG strings, one per icon name, grouped\n * by the feature that renders them so bundlers ship only the groups a\n * consumer's plugins import. Pure string data — safe in this DOM-free\n * package. Runtimes render these when the consumer supplies no custom\n * icon for a name.\n *\n * The artwork is lightGallery's own icon set, carried over from the\n * 2.x icon font: each glyph's vector outline extracted from the font\n * and re-baselined onto a square viewBox (font ascent 960 on a 1024\n * em). Same shapes the library has always shipped — now crisp inline\n * SVGs that follow `currentColor`.\n */\n\n/** The icon-name contract shared by every runtime and plugin. */\nexport type LgIconName =\n | 'close'\n | 'prev'\n | 'next'\n | 'download'\n | 'maximize'\n | 'minimize'\n | 'more'\n | 'zoomIn'\n | 'zoomOut'\n | 'actualSize'\n | 'rotateLeft'\n | 'rotateRight'\n | 'flipHorizontal'\n | 'flipVertical'\n | 'share'\n | 'shareFacebook'\n | 'shareX'\n | 'sharePinterest'\n | 'autoplayPlay'\n | 'autoplayPause'\n | 'fullscreen'\n | 'fullscreenExit'\n | 'comment'\n | 'commentClose'\n | 'toggleThumbnails';\n\nexport const coreDefaultIcons = {\n close: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M810 664.667l-238-238 238-238-60-60-238 238-238-238-60 60 238 238-238 238 60 60 238-238 238 238z\"/></svg>',\n // Three dots for the toolbar's More options menu button.\n more: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><circle cx=\"232\" cy=\"512\" r=\"80\"/><circle cx=\"512\" cy=\"512\" r=\"80\"/><circle cx=\"792\" cy=\"512\" r=\"80\"/></svg>',\n prev: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M426.667 768q17.667 0 30.167-12.5t12.5-30.167q0-18-12.667-30.333l-225.667-225.667h665q17.667 0 30.167-12.5t12.5-30.167-12.5-30.167-30.167-12.5h-665l225.667-225.667q12.667-12.333 12.667-30.333 0-17.667-12.5-30.167t-30.167-12.5q-18 0-30.333 12.333l-298.667 298.667q-12.333 13-12.333 30.333t12.333 30.333l298.667 298.667q12.667 12.333 30.333 12.333z\"/></svg>',\n next: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M597.333 768q18 0 30.333-12.333l298.667-298.667q12.333-12.333 12.333-30.333t-12.333-30.333l-298.667-298.667q-12.333-12.333-30.333-12.333-18.333 0-30.5 12.167t-12.167 30.5q0 18 12.333 30.333l226 225.667h-665q-17.667 0-30.167 12.5t-12.5 30.167 12.5 30.167 30.167 12.5h665l-226 225.667q-12.333 12.333-12.333 30.333 0 18.333 12.167 30.5t30.5 12.167z\"/></svg>',\n download:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M170 128.667h684v-86h-684v86zM682 384.667l-170-172-170 172h128v426h84v-426h128z\"/></svg>',\n maximize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M793.003 768l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-3.925 3.925-8.619 7.083-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667zM230.997 85.334l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-23.552 19.115-42.667 42.667-42.667h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667z\"/></svg>',\n minimize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M700.331 554.667l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-5.803 1.152-11.307 3.243-16.341s5.163-9.728 9.216-13.781c0.043-0.043 0.043-0.043 0.085-0.085 3.925-3.925 8.619-7.083 13.781-9.216 5.035-2.091 10.539-3.243 16.341-3.243h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667zM158.165 12.502l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-4.096 4.053-8.789 7.125-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667h153.003l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0z\"/></svg>',\n} as const;\n\nexport const zoomDefaultIcons = {\n zoomIn: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 512.667h-86v-86h-42v86h-86v42h86v86h42v-86h86v-42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z\"/></svg>',\n zoomOut:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M298 554.667h214v-42h-214v42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z\"/></svg>',\n actualSize:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M384 853.334h426.667q53 0 90.5-37.5t37.5-90.5v-426.667q0-53-37.5-90.5t-90.5-37.5h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 53 37.5 90.5t90.5 37.5zM170.667 675.334v-547.333q0-17.667 12.5-30.167t30.167-12.5h547.333q-13.333-37.667-46.333-61.5t-74.333-23.833h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 41.333 23.833 74.333t61.5 46.333zM810.667 768h-426.667q-17.667 0-30.167-12.5t-12.5-30.167v-426.667q0-17.667 12.5-30.167t30.167-12.5h426.667q17.667 0 30.167 12.5t12.5 30.167v426.667q0 17.667-12.5 30.167t-30.167 12.5z\"/></svg>',\n} as const;\n\nexport const rotateDefaultIcons = {\n rotateLeft:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M554 764.667q126-16 213-112t87-226-87-226-213-112v86q92 16 153 87t61 165-61 165-153 87v-166l-194 190 194 194v-132zM302 156.667l62 62q46-34 106-44v-86q-96 12-168 68zM260 384.667q10-58 42-106l-60-60q-56 74-68 166h86zM304 574.667q-36-52-44-106h-86q12 90 70 166z\"/></svg>',\n rotateRight:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M720 278.667q34 46 44 106h86q-12-92-68-166zM554 174.667q60 10 106 44l62-62q-72-56-168-68v86zM850 468.667h-86q-10 60-44 106l62 60q58-72 68-166zM664 702.667l-194-190v166q-92-16-153-87t-61-165 61-165 153-87v-86q-126 16-213 112t-87 226 87 226 213 112v132z\"/></svg>',\n flipHorizontal:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M896 554.667l-170-170v128h-300v84h300v128zM298 468.667v-128h300v-84h-300v-128l-170 170z\"/></svg>',\n flipVertical:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M384 810.667l170-170h-128v-300h-84v300h-128zM682 212.667h128l-170-170-170 170h128v300h84v-300z\"/></svg>',\n} as const;\n\nexport const shareDefaultIcons = {\n share: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z\"/></svg>',\n shareFacebook:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z\"/></svg>',\n shareX: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><circle cx=\"512\" cy=\"512\" r=\"491.52\"/><path fill=\"#fff\" transform=\"translate(227 224) scale(24)\" d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"/></svg>',\n sharePinterest:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z\"/></svg>',\n} as const;\n\nexport const autoplayDefaultIcons = {\n autoplayPlay:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM426 234.667v384l256-192z\"/></svg>',\n autoplayPause:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M554 256.667v340h86v-340h-86zM512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM384 256.667v340h86v-340h-86z\"/></svg>',\n} as const;\n\nexport const fullscreenDefaultIcons = {\n fullscreen:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M598 724.667h212v-212h-84v128h-128v84zM726 212.667v128h84v-212h-212v84h128zM214 512.667v212h212v-84h-128v-128h-84zM298 340.667v-128h128v-84h-212v212h84z\"/></svg>',\n fullscreenExit:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M682 596.667h128v-84h-212v212h84v-128zM598 128.667v212h212v-84h-128v-128h-84zM342 596.667v128h84v-212h-212v84h128zM214 256.667v84h212v-212h-84v128h-128z\"/></svg>',\n} as const;\n\nexport const commentDefaultIcons = {\n comment:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M938.667 448.128v21.205c0 0.725-0.043 1.621-0.085 2.475-5.803 99.755-47.488 190.336-112.725 258.176-68.352 71.125-162.731 117.419-268.843 123.264-0.683 0.043-1.536 0.085-2.347 0.085h-20.864c-59.947 0.683-122.965-13.227-181.931-43.008-52.181-26.496-97.749-63.488-133.931-108.16-56.405-69.717-89.899-158.080-89.941-253.696-0.597-54.4 10.795-111.36 35.157-165.419l-75.605-226.859c-2.816-8.363-3.072-17.835 0-26.965 7.467-22.357 31.616-34.432 53.973-26.965l226.731 75.563c49.493-22.485 105.984-35.243 165.376-35.115 58.539 0.384 115.797 13.141 168.149 36.949 81.579 37.163 151.040 101.248 193.749 186.667 27.477 53.291 43.307 115.84 43.136 181.803zM853.333 447.872c0.128-52.267-12.459-101.333-33.664-142.464-34.176-68.352-88.832-118.827-153.259-148.139-41.387-18.859-86.827-28.971-133.376-29.269-52.096-0.128-101.163 12.459-142.293 33.664-10.624 5.504-22.528 6.059-33.067 2.56l-162.261-54.101 54.101 162.261c3.755 11.221 2.56 22.912-2.389 32.725-23.552 46.677-34.304 96.171-33.792 142.421 0.043 76.331 26.411 145.92 70.955 200.917 28.629 35.371 64.768 64.725 106.24 85.76 46.592 23.552 96.085 34.304 142.336 33.792h19.456c83.712-4.565 158.037-41.003 212.011-97.152 51.285-53.376 84.139-124.416 89.003-202.795z\"/></svg>',\n commentClose:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M810 664.667l-238-238 238-238-60-60-238 238-238-238-60 60 238 238-238 238 60 60 238-238 238 238z\"/></svg>',\n} as const;\n\nexport const thumbnailDefaultIcons = {\n toggleThumbnails:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\" fill=\"currentColor\"><path transform=\"translate(0, 960) scale(1, -1)\" d=\"M682 84.667v172h172v-172h-172zM682 340.667v172h172v-172h-172zM426 596.667v172h172v-172h-172zM682 768.667h172v-172h-172v172zM426 340.667v172h172v-172h-172zM170 340.667v172h172v-172h-172zM170 84.667v172h172v-172h-172zM426 84.667v172h172v-172h-172zM170 596.667v172h172v-172h-172z\"/></svg>',\n} as const;\n","/**\n * Toolbar overflow: when the toolbar's icon buttons do not fit on one row\n * beside the counter, the lowest-priority buttons move into a \"More\n * options\" menu. Pure layout arithmetic over measured widths; each runtime\n * measures its own DOM, applies the result and renders the menu.\n */\n\n/** Priority of a button that never moves into the menu (close). */\nexport const TOOLBAR_PINNED = Number.POSITIVE_INFINITY;\n\n/** Priority of a button the table does not know (custom plugin buttons). */\nexport const TOOLBAR_DEFAULT_PRIORITY = 20;\n\n/**\n * Higher stays in the row longer. Keyed by the class each button carries\n * in every runtime; the first matching class wins.\n */\nconst PRIORITY_BY_CLASS: ReadonlyArray<readonly [string, number]> = [\n ['lg-close', TOOLBAR_PINNED],\n ['lg-share', 30],\n ['lg-autoplay-button', 30],\n ['lg-download', 30],\n ['lg-fullscreen', 20],\n ['lg-toggle-thumb', 20],\n ['lg-comment-toggle', 20],\n ['lg-maximize', 10],\n ['lg-rotate-left', 10],\n ['lg-rotate-right', 10],\n ['lg-flip-hor', 10],\n ['lg-flip-ver', 10],\n // Gesture duplicates go first: pinch and double-tap do the same.\n ['lg-zoom-in', 0],\n ['lg-zoom-out', 0],\n ['lg-actual-size', 0],\n];\n\n/** Overflow priority of a toolbar button from its class names. */\nexport function getToolbarItemPriority(classList: Iterable<string>): number {\n const classes = new Set(classList);\n for (const [className, priority] of PRIORITY_BY_CLASS) {\n if (classes.has(className)) {\n return priority;\n }\n }\n return TOOLBAR_DEFAULT_PRIORITY;\n}\n\nexport interface ToolbarOverflowItem {\n /** Measured width, px. */\n width: number;\n /** From {@link getToolbarItemPriority}; higher stays longer. */\n priority: number;\n}\n\nexport interface ToolbarOverflowInput {\n /** Width of the toolbar row, px. */\n available: number;\n /** Width taken by content that never moves (the counter), px. */\n reserved: number;\n /** Width of the More button, px. */\n moreWidth: number;\n /** The toolbar's icon buttons, in DOM order. */\n items: readonly ToolbarOverflowItem[];\n}\n\n/**\n * Indices (in DOM order) of the buttons that move into the menu; empty\n * when everything fits, or when the toolbar has no width yet (not laid\n * out). Lowest priority moves first; among equals, the button later in\n * DOM order goes first, which is the one furthest from the close button.\n * The More button's own width is paid as soon as anything moves.\n */\nexport function getToolbarOverflow({\n available,\n reserved,\n moreWidth,\n items,\n}: ToolbarOverflowInput): number[] {\n if (available <= 0) {\n return [];\n }\n const total = items.reduce((sum, item) => sum + item.width, 0);\n if (reserved + total <= available) {\n return [];\n }\n const candidates = items\n .map((item, index) => ({ ...item, index }))\n .filter((item) => item.priority !== TOOLBAR_PINNED)\n .sort((a, b) => a.priority - b.priority || b.index - a.index);\n let used = reserved + moreWidth + total;\n const moved: number[] = [];\n for (const item of candidates) {\n if (used <= available) {\n break;\n }\n moved.push(item.index);\n used -= item.width;\n }\n return moved.sort((a, b) => a - b);\n}\n\n/**\n * Whether a click's event path runs through the toolbar. Clicks there are\n * controls, not a tap on the backdrop: Medium zoom closes on the latter\n * only. The path (`event.composedPath()`) still lists a More menu item the\n * click already removed from the document.\n */\nexport function isToolbarEventPath(path: readonly unknown[]): boolean {\n return path.some(\n (node) =>\n !!(\n node as { classList?: { contains(name: string): boolean } }\n ).classList?.contains('lg-toolbar'),\n );\n}\n\n/**\n * Class names of the backdrop around the slide, where a tap closes the\n * gallery (`closeOnTap`) and a drag starts a swipe.\n */\nconst BACKDROP_CLASS_NAMES = [\n 'lg-outer',\n 'lg-item',\n 'lg-img-wrap',\n 'lg-img-rotate',\n];\n\n/** What the dismissal of a toolbar menu reads from the dismissing press. */\nexport interface MenuDismissEvent {\n target: unknown;\n preventDefault(): void;\n stopPropagation(): void;\n}\n\n/**\n * A press outside an open toolbar menu (the More options menu, the share\n * dropdown) dismisses it. A press on a control passes through, so one\n * click on another toolbar button both dismisses the menu and runs the\n * button. A press on the backdrop around the slide is consumed instead:\n * there the gallery's own tap-to-close and drag would fire, and\n * dismissing a menu must not also close the gallery. Cancelling the\n * pointerdown suppresses the compatibility mouse events the vanilla\n * runtime listens to; stopping it keeps the pointer-driven runtimes'\n * handlers from arming. Returns whether the press was consumed.\n */\nexport function consumeBackdropPress(event: MenuDismissEvent): boolean {\n const classList = (\n event.target as {\n classList?: { contains(name: string): boolean };\n } | null\n )?.classList;\n if (\n !classList ||\n !BACKDROP_CLASS_NAMES.some((name) => classList.contains(name))\n ) {\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n}\n","/**\n * Share link builders + Web Share payload logic for the share plugin. The\n * URL builders are ported from the 2.x `lg-*-share-utils` files as pure\n * functions — the page URL fallback is a parameter instead of\n * `window.location.href`. The Web Share helpers are pure too: the runtime\n * hands in a structural `navigator` so nothing here touches the DOM.\n */\n\n/**\n * Structural slice of a gallery item the share builders read — kept\n * narrow so any runtime's item shape (including the 2.x vanilla one)\n * satisfies it without casts.\n */\nexport interface ShareItemFields {\n src?: string;\n alt?: string;\n title?: string;\n shareUrl?: string;\n facebookShareUrl?: string;\n tweetText?: string;\n twitterShareUrl?: string;\n pinterestShareUrl?: string;\n pinterestText?: string;\n}\n\nexport function getFacebookShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n return (\n '//www.facebook.com/sharer/sharer.php?u=' +\n encodeURIComponent(item.facebookShareUrl || currentUrl)\n );\n}\n\n/**\n * X (formerly Twitter) intent URL. The 2.x `tweetText`/`twitterShareUrl`\n * item fields (and their `data-tweet-text` style attributes) keep working —\n * only the target changed. Unlike the 2.x builder the text is URL-encoded.\n */\nexport function getXShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n const url = encodeURIComponent(item.twitterShareUrl || currentUrl);\n const text = encodeURIComponent(item.tweetText ?? '');\n return `//x.com/intent/post?text=${text}&url=${url}`;\n}\n\n/** @deprecated Renamed — use {@link getXShareLink} (X intent URL). */\nexport const getTwitterShareLink = getXShareLink;\n\nexport function getPinterestShareLink(\n item: ShareItemFields,\n currentUrl: string,\n): string {\n const media = encodeURIComponent(item.src ?? '');\n const url = encodeURIComponent(item.pinterestShareUrl || currentUrl);\n const description = item.pinterestText ?? '';\n return `//www.pinterest.com/pin/create/button/?url=${url}&media=${media}&description=${description}`;\n}\n\n/**\n * Data handed to `navigator.share`. URL-sharing only by design: attaching\n * the image itself would require fetching cross-origin bytes (a proxy),\n * which the share plugin will not do.\n */\nexport interface SharePayload {\n title?: string;\n text?: string;\n url: string;\n}\n\n/**\n * Build the Web Share payload for a slide. The per-item `shareUrl` wins,\n * then the network-specific share URLs, then the page URL; text falls back\n * from the tweet text to the Pinterest description.\n */\nexport function getSharePayload(\n item: ShareItemFields,\n currentUrl: string,\n): SharePayload {\n const payload: SharePayload = {\n url:\n item.shareUrl ||\n item.twitterShareUrl ||\n item.facebookShareUrl ||\n currentUrl,\n };\n const title = item.title || item.alt;\n if (title) {\n payload.title = title;\n }\n const text = item.tweetText || item.pinterestText;\n if (text) {\n payload.text = text;\n }\n return payload;\n}\n\n/** Structural slice of `navigator` the Web Share decision needs. */\nexport interface NativeShareNavigator {\n share?: (data: SharePayload) => Promise<void>;\n canShare?: (data: SharePayload) => boolean;\n}\n\n/**\n * True when the runtime can hand this payload to the OS share sheet.\n * Feature-detected and never load-bearing: no `navigator.share` (or a\n * `canShare` veto) simply keeps the branded dropdown menu.\n */\nexport function canNativeShare(\n nav: NativeShareNavigator | undefined | null,\n payload: SharePayload,\n): boolean {\n if (!nav || typeof nav.share !== 'function') {\n return false;\n }\n if (typeof nav.canShare === 'function') {\n return nav.canShare(payload);\n }\n return true;\n}\n","import { ShareOption } from './types';\n\nexport interface ShareStrings {\n share: string;\n}\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Prefer the OS share sheet (`navigator.share`) over the dropdown menu\n * when the browser supports it. The share button then opens the native\n * sheet with the slide's URL (per-item `shareUrl`, falling back to the\n * network share URLs, then the page URL); the dropdown remains as the\n * automatic fallback. URL-sharing only, the image file itself is never\n * attached.\n * @description Defaults to true on touch devices and false on desktop,\n * where the branded dropdown is kept for consistency.\n * See <a href=\"/docs/web-share/\">Web Share</a>.\n * @version V3.0.0\n */\n preferNativeShare?: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n * <a href=\"/demos/share/\">Demo</a>\n */\n additionalShareOptions: ShareOption[];\n\n /**\n * Custom translation strings for aria-labels\n * @deprecated Set these labels on the core `strings` object instead,\n * every user-facing string lives in that one contract. An explicitly set\n * key here still wins (alias).\n */\n sharePluginStrings?: Partial<ShareStrings>;\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'X',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n};\n","import { getFacebookShareLink as buildFacebookShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n return buildFacebookShareLink(galleryItem, window.location.href);\n}\n","import { getXShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\n/** X (formerly Twitter) intent link; the file name is kept for 2.x import\n * compatibility, `tweetText`/`twitterShareUrl` fields keep working. */\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n return getXShareLink(galleryItem, window.location.href);\n}\n","import { getPinterestShareLink as buildPinterestShareLink } from '@lightgallery/headless';\n\nimport { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n return buildPinterestShareLink(galleryItem, window.location.href);\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 {\n canNativeShare,\n consumeBackdropPress,\n getSharePayload,\n shareDefaultIcons,\n} from '@lightgallery/headless';\n\nimport { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\n\n/** Web Share default: the OS sheet is where sharing shines on touch devices. */\nfunction isTouchDevice(): boolean {\n return (\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || 'ontouchstart' in window)\n );\n}\n\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n private listening = false;\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n this.core.registerDefaultIcons(shareDefaultIcons);\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share-outer .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n this.core.LGel.on(`${lGEvents.beforeClose}.share`, () => {\n this.setDropdownOpen(false);\n });\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n /**\n * True when the button should try the OS share sheet first. The\n * dropdown stays rendered as the automatic fallback (a `canShare`\n * veto or share failure at click time falls back to the menu).\n */\n private prefersNativeShare(): boolean {\n const preferNative = this.settings.preferNativeShare ?? isTouchDevice();\n return (\n preferNative &&\n typeof navigator !== 'undefined' &&\n typeof navigator.share === 'function'\n );\n }\n\n setLgShareMarkup(): void {\n const popupAttrs = this.prefersNativeShare()\n ? ''\n : 'aria-haspopup=\"true\" aria-expanded=\"false\"';\n this.core.$toolbar.append(\n `<div class=\"lg-share-outer\"><button type=\"button\" aria-label=\"${\n this.settings.sharePluginStrings?.share ??\n this.core.settings.strings.share\n }\" ${popupAttrs} class=\"lg-share lg-icon\"></button>\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></div>`,\n );\n\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n if (this.prefersNativeShare()) {\n const payload = getSharePayload(\n this.core.galleryItems[this.core.index],\n window.location.href,\n );\n if (canNativeShare(navigator, payload)) {\n // Rejection = the user dismissed the sheet (AbortError)\n // or the OS refused, nothing to clean up either way.\n navigator.share(payload).catch(() => undefined);\n return;\n }\n }\n this.setDropdownOpen(\n !this.core.outer.hasClass('lg-dropdown-active'),\n );\n });\n }\n\n /**\n * Open state lives on the outer element, which outlives a close, so an\n * open dropdown would still be open on the next open. While open, the\n * dropdown dismisses like the More options menu: on a press anywhere\n * outside it, on Escape (the gallery stays open) and when focus tabs\n * out of it.\n */\n private setDropdownOpen(open: boolean): void {\n if (open) {\n this.core.outer.addClass('lg-dropdown-active');\n } else {\n this.core.outer.removeClass('lg-dropdown-active');\n }\n this.core.outer\n .find('.lg-share')\n .first()\n .attr('aria-expanded', open ? 'true' : 'false');\n this.listenOutside(open);\n }\n\n private listenOutside(on: boolean): void {\n if (on === this.listening) {\n return;\n }\n this.listening = on;\n if (on) {\n document.addEventListener(\n 'pointerdown',\n this.onDocumentPointerDown,\n true,\n );\n document.addEventListener('keydown', this.onDocumentKeydown, true);\n } else {\n document.removeEventListener(\n 'pointerdown',\n this.onDocumentPointerDown,\n true,\n );\n document.removeEventListener(\n 'keydown',\n this.onDocumentKeydown,\n true,\n );\n }\n }\n\n private readonly onDocumentPointerDown = (event: Event): void => {\n const target = event.target as Node | null;\n const shareOuter = this.core.outer.find('.lg-share-outer').get();\n if (target && shareOuter && shareOuter.contains(target)) {\n return;\n }\n consumeBackdropPress(event);\n this.setDropdownOpen(false);\n };\n\n private readonly onDocumentKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n // The dropdown is the topmost layer: Escape closes it, not\n // the gallery behind it.\n event.preventDefault();\n event.stopPropagation();\n this.setDropdownOpen(false);\n this.core.outer.find('.lg-share').get()?.focus();\n return;\n }\n if (event.key !== 'Tab') {\n return;\n }\n // Tabbing between the button and its links keeps the dropdown;\n // tabbing out of it closes it.\n const shareOuter = this.core.outer.find('.lg-share-outer').get();\n const focusable = shareOuter\n ? Array.from(\n shareOuter.querySelectorAll<HTMLElement>('button, a[href]'),\n )\n : [];\n const index = focusable.indexOf(document.activeElement as HTMLElement);\n if (\n index !== -1 &&\n (event.shiftKey ? index === 0 : index === focusable.length - 1)\n ) {\n this.setDropdownOpen(false);\n }\n };\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n return `<li><a class=\"lg-share-${type}\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">${text}</span></a></li>`;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.listenOutside(false);\n this.core.outer.find('.lg-share-outer').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n"],"names":["getFacebookShareLink","getPinterestShareLink","buildFacebookShareLink","buildPinterestShareLink"],"mappings":"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"}
|