UNPKG

@fnxone/ngx-photoswipe

Version:

[![Npm package version](https://img.shields.io/badge/npm-1.0.11-blue)](https://www.npmjs.com/package/@fnxone/ngx-photoswipe) [![Npm package yearly downloads](https://img.shields.io/badge/downloads-600%2Fyear-green)](https://www.npmjs.com/package/@fnxone/n

159 lines (148 loc) 16.4 kB
import * as i0 from '@angular/core'; import { Injectable, Component, ViewChild, Input, NgModule } from '@angular/core'; import * as PhotoSwipe from 'photoswipe'; import * as PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default'; import { CommonModule } from '@angular/common'; /* eslint-disable @typescript-eslint/ban-types */ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions function ngxPhotoSwipeFactory() { return new DefaultLightboxAdapter(); } class LightboxAdapter { } LightboxAdapter.ɵprov = i0.ɵɵdefineInjectable({ factory: ngxPhotoSwipeFactory, token: LightboxAdapter, providedIn: "root" }); LightboxAdapter.decorators = [ { type: Injectable, args: [{ providedIn: 'root', useFactory: ngxPhotoSwipeFactory },] } ]; class DefaultLightboxAdapter extends LightboxAdapter { constructor() { super(...arguments); this.allowPanToNext = true; this.spacing = 0.12; this.bgOpacity = 1.0; this.mouseUsed = false; this.loop = true; this.pinchToClose = true; this.closeOnScroll = true; this.closeOnVerticalDrag = true; this.hideAnimationDuration = 333; this.showAnimationDuration = 333; this.showHideOpacity = false; this.escKey = true; this.arrowKeys = true; } } DefaultLightboxAdapter.decorators = [ { type: Injectable } ]; class NgxPhotoswipeService { } NgxPhotoswipeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgxPhotoswipeService_Factory() { return new NgxPhotoswipeService(); }, token: NgxPhotoswipeService, providedIn: "root" }); NgxPhotoswipeService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; class LightboxComponent { constructor(ngxPhotoswipeService) { this.ngxPhotoswipeService = ngxPhotoswipeService; } ngAfterContentInit() { this.ngxPhotoswipeService.lightboxElement = this.el; } } LightboxComponent.decorators = [ { type: Component, args: [{ selector: 'ngxps-lightbox', template: "<div class=\"pswp\" #ngxLightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"pswp__bg\"></div>\n <div class=\"pswp__scroll-wrap\">\n <div class=\"pswp__container\">\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n </div>\n <div class=\"pswp__ui pswp__ui--hidden\">\n <div class=\"pswp__top-bar\">\n <div class=\"pswp__counter\"></div>\n <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n <div class=\"pswp__preloader\">\n <div class=\"pswp__preloader__icn\">\n <div class=\"pswp__preloader__cut\">\n <div class=\"pswp__preloader__donut\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n <div class=\"pswp__share-tooltip\"></div>\n </div>\n <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\">\n </button>\n <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\">\n </button>\n <div class=\"pswp__caption\">\n <div class=\"pswp__caption__center\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pswp{display:none;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;touch-action:none;z-index:1500;-webkit-text-size-adjust:100%;-webkit-backface-visibility:hidden;outline:none}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;will-change:opacity;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--dragging .pswp__img{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp__bg{position:absolute;left:0;top:0;width:100%;height:100%;background:#000;opacity:0;transform:translateZ(0);-webkit-backface-visibility:hidden;will-change:opacity}.pswp__scroll-wrap{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden}.pswp__container,.pswp__zoom-wrap{touch-action:none;position:absolute;left:0;right:0;top:0;bottom:0}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;transform-origin:left top;transition:transform 333ms cubic-bezier(.4,0,.22,1)}.pswp__bg{will-change:opacity;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__container,.pswp__zoom-wrap{-webkit-backface-visibility:hidden}.pswp__item{position:absolute;left:0;right:0;top:0;bottom:0;overflow:hidden}.pswp__img{position:absolute;width:auto;height:auto;top:0;left:0}.pswp__img--placeholder{-webkit-backface-visibility:hidden}.pswp__img--placeholder--blank{background:#222}.pswp--ie .pswp__img{width:100%!important;height:auto!important;left:0;top:0}.pswp__error-msg{position:absolute;left:0;top:50%;width:100%;text-align:center;font-size:14px;line-height:16px;margin-top:-8px;color:#ccc}.pswp__error-msg a{color:#ccc;text-decoration:underline}.pswp__button{width:44px;height:44px;position:relative;background:none;cursor:pointer;overflow:visible;-webkit-appearance:none;display:block;border:0;padding:0;margin:0;float:right;opacity:.75;transition:opacity .2s;box-shadow:none}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{background:url(/assets/media/default-skin.png) 0 0 no-repeat;background-size:264px 88px;width:44px;height:44px}@media (-webkit-min-device-pixel-ratio: 1.1),(-webkit-min-device-pixel-ratio: 1.09375),(min-resolution: 105dpi),(min-resolution: 1.1dppx){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(/assets/media/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{background:none;top:50%;margin-top:-50px;width:70px;height:100px;position:absolute}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{content:\"\";top:35px;background-color:#0000004d;height:30px;width:32px;position:absolute}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter,.pswp__share-modal{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__share-modal{display:block;background:rgba(0,0,0,.5);width:100%;height:100%;top:0;left:0;padding:10px;position:absolute;z-index:1600;opacity:0;transition:opacity .25s ease-out;-webkit-backface-visibility:hidden;will-change:opacity}.pswp__share-modal--hidden{display:none}.pswp__share-tooltip{z-index:1620;position:absolute;background:#FFF;top:56px;border-radius:2px;display:block;width:auto;right:44px;box-shadow:0 2px 5px #00000040;transform:translateY(6px);transition:transform .25s;-webkit-backface-visibility:hidden;will-change:transform}.pswp__share-tooltip a{display:block;padding:8px 12px;color:#000;text-decoration:none;font-size:14px;line-height:18px}.pswp__share-tooltip a:hover{text-decoration:none;color:#000}.pswp__share-tooltip a:first-child{border-radius:2px 2px 0 0}.pswp__share-tooltip a:last-child{border-radius:0 0 2px 2px}.pswp__share-modal--fade-in{opacity:1}.pswp__share-modal--fade-in .pswp__share-tooltip{transform:translateY(0)}.pswp--touch .pswp__share-tooltip a{padding:16px 12px}a.pswp__share--facebook:before{content:\"\";display:block;width:0;height:0;position:absolute;top:-12px;right:15px;border:6px solid rgba(0,0,0,0);border-bottom-color:#fff;-webkit-pointer-events:none;-moz-pointer-events:none;pointer-events:none}a.pswp__share--facebook:hover{background:#3E5C9A;color:#fff}a.pswp__share--facebook:hover:before{border-bottom-color:#3e5c9a}a.pswp__share--twitter:hover{background:#55ACEE;color:#fff}a.pswp__share--pinterest:hover{background:#CCC;color:#ce272d}a.pswp__share--download:hover{background:#DDD}.pswp__counter{position:absolute;left:0;top:0;height:44px;font-size:13px;line-height:44px;color:#fff;opacity:.75;padding:0 10px}.pswp__caption{position:absolute;left:0;bottom:0;width:100%;min-height:44px}.pswp__caption small{font-size:11px;color:#bbb}.pswp__caption__center{text-align:left;max-width:420px;margin:0 auto;font-size:13px;padding:10px;line-height:20px;color:#ccc}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{width:44px;height:44px;position:absolute;top:0;left:50%;margin-left:-22px;opacity:0;transition:opacity .25s ease-out;will-change:opacity;direction:ltr}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(/assets/media/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{-webkit-animation:clockwise .5s linear infinite;animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{-webkit-animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite;animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{background:none;opacity:.75;width:14px;height:14px;position:absolute;left:15px;top:15px;margin:0}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{box-sizing:border-box;width:14px;height:14px;border:2px solid #FFF;border-radius:50%;border-left-color:transparent;border-bottom-color:transparent;position:absolute;top:0;left:0;background:none;margin:0}@media screen and (max-width: 1024px){.pswp__preloader{position:relative;left:auto;top:auto;margin:0;float:right}}@-webkit-keyframes clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{-webkit-font-smoothing:auto;visibility:visible;opacity:1;z-index:1550}.pswp__top-bar{position:absolute;left:0;top:0;height:44px;width:100%}.pswp__caption,.pswp__top-bar,.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{-webkit-backface-visibility:hidden;will-change:opacity;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__top-bar,.pswp__caption{background-color:#00000080}.pswp__ui--fit .pswp__top-bar,.pswp__ui--fit .pswp__caption{background-color:#0000004d}.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right{opacity:0}.pswp__ui--hidden .pswp__top-bar,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}\n"] },] } ]; LightboxComponent.ctorParameters = () => [ { type: NgxPhotoswipeService } ]; LightboxComponent.propDecorators = { el: [{ type: ViewChild, args: ['ngxLightbox', { static: true },] }] }; var GridGap; (function (GridGap) { GridGap[GridGap["GAP0"] = 0] = "GAP0"; GridGap[GridGap["GAP1"] = 1] = "GAP1"; GridGap[GridGap["GAP2"] = 2] = "GAP2"; GridGap[GridGap["GAP3"] = 3] = "GAP3"; GridGap[GridGap["GAP4"] = 4] = "GAP4"; GridGap[GridGap["GAP5"] = 5] = "GAP5"; })(GridGap || (GridGap = {})); class GalleryComponent { constructor(ngxPhotoswipeService, adapter) { this.ngxPhotoswipeService = ngxPhotoswipeService; this.adapter = adapter; this.gridGap = GridGap.GAP1; } onClickImage(data, index) { data.id = index; this.openPhotoSwipe(data); return false; } openPhotoSwipe(image) { this.adapter.galleryUID = Number(this.galleryElement.nativeElement.getAttribute('data-pswp-uid')); this.adapter.index = image.id; const PSWP = this.ngxPhotoswipeService.lightboxElement .nativeElement; this.pswp = new PhotoSwipe(PSWP, PhotoSwipeUI_Default, this.getImagesAsPhotoSwipe(), this.adapter); this.pswp.init(); return false; } getImagesAsPhotoSwipe() { return this.images.map((image) => ({ src: image.img, w: image.width != null ? image.width : 4934, h: image.height != null ? image.height : 3296, pid: image.id, title: image.description, })); } } GalleryComponent.decorators = [ { type: Component, args: [{ selector: 'ngxps-gallery', template: "<div class=\"d-grid ngx-gallery\" [ngClass]=\"'gap-'+gridGap\" #ngxpsGallery>\n <figure class=\"m-0 p-0\" *ngFor=\"let image of images; let idx = index\">\n <a [href]=\"image.img\" data-size=\"4934x3296\" (click)=\"onClickImage(image, idx)\">\n <img class=\"img-fluid rounded-1\" [src]=\"image.thumb\" [alt]=\"image.description\">\n </a>\n </figure>\n\n <ng-content></ng-content>\n</div>\n", styles: [".ngx-gallery{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.ngx-gallery figure img{cursor:zoom-in;transition:opacity .4s ease-in-out}.ngx-gallery figure img:hover{opacity:.8}\n"] },] } ]; GalleryComponent.ctorParameters = () => [ { type: NgxPhotoswipeService }, { type: LightboxAdapter } ]; GalleryComponent.propDecorators = { galleryElement: [{ type: ViewChild, args: ['ngxpsGallery', { static: true },] }], images: [{ type: Input }], gridGap: [{ type: Input }] }; class NgxPhotoswipeModule { } NgxPhotoswipeModule.decorators = [ { type: NgModule, args: [{ declarations: [LightboxComponent, GalleryComponent], imports: [CommonModule], exports: [LightboxComponent, GalleryComponent], },] } ]; class Image { constructor(img, thumb, description, width, height, id) { this.img = img; this.thumb = thumb; this.description = description; this.width = width; this.height = height; this.id = id; } } /* * Public API Surface of ngx-photoswipe */ /** * Generated bundle index. Do not edit. */ export { GalleryComponent, GridGap, Image, LightboxAdapter, NgxPhotoswipeModule, ngxPhotoSwipeFactory as ɵa, DefaultLightboxAdapter as ɵb, LightboxComponent as ɵc, NgxPhotoswipeService as ɵd }; //# sourceMappingURL=fnxone-ngx-photoswipe.js.map