1/* 2* Fancybox wrapper 3* @version: 2.0.0 (Mon, 25 Nov 2019) 4* @requires: jQuery v3.0 or later, fancybox v3.5.7 5* @author: HtmlStream 6* @event-namespace: .HSCore.components.HSFancyBox 7* @license: Htmlstream Libraries (https://htmlstream.com/licenses) 8* Copyright 2020 Htmlstream 9*/ 10 11;(function ($) { 12 'use strict'; 13 14 $.HSCore.components.HSFancyBox = { 15 defaults: { 16 parentEl: 'html', 17 baseClass: 'fancybox-theme', 18 slideClass: 'fancybox-slide', 19 speed: 2000, 20 animationEffect: 'fade', 21 slideSpeedCoefficient: 1, 22 infobar: false, 23 slideShow: { 24 autoStart: false, 25 speed: 2000 26 }, 27 transitionEffect: 'slide', 28 baseTpl: '<div class="fancybox-container" role="dialog" tabindex="-1">' + 29 '<div class="fancybox-bg"></div>' + 30 ' <div class="fancybox-inner">' + 31 ' <div class="fancybox-infobar">' + 32 ' <span data-fancybox-index></span> / <span data-fancybox-count></span>' + 33 ' </div>' + 34 ' <div class="fancybox-toolbar">{{buttons}}</div>' + 35 ' <div class="fancybox-navigation">{{arrows}}</div>' + 36 ' <div class="fancybox-slider-wrap">' + 37 ' <div class="fancybox-stage"></div>' + 38 ' </div>' + 39 ' <div class="fancybox-caption-wrap">' + 40 ' <div class="fancybox-caption">' + 41 ' <div class="fancybox-caption__body"></div>' + 42 ' </div>' + 43 ' </div>' + 44 ' </div>' + 45 '</div>' 46 }, 47 48 init: function (el, options) { 49 if (!el.length) return; 50 51 var context = this, 52 $el = $(el), 53 defaults = Object.assign({}, context.defaults), 54 dataSettings = $el.attr('data-hs-fancybox-options') ? JSON.parse($el.attr('data-hs-fancybox-options')) : {}, 55 settings = { 56 beforeShow: function (instance) { 57 var $fancyOverlay = $(instance.$refs.bg[0]), 58 $fancySlide = $(instance.current.$slide), 59 dataSettings = instance.current.opts.$orig[0].dataset.hsFancyboxOptions ? JSON.parse(instance.current.opts.$orig[0].dataset.hsFancyboxOptions) : {}, 60 transitionEffectCustom = dataSettings.transitionEffectCustom ? dataSettings.transitionEffectCustom : false, 61 overlayBG = dataSettings.overlayBg, 62 overlayBlurBG = dataSettings.overlayBlurBg; 63 64 if (transitionEffectCustom) { 65 $fancySlide.css('visibility', 'hidden'); 66 } 67 68 if (overlayBG) { 69 $fancyOverlay.css({ 70 backgroundColor: overlayBG 71 }); 72 } 73 74 if (overlayBlurBG) { 75 $('body').addClass('blur-30'); 76 } 77 }, 78 afterShow: function (instance) { 79 var $fancySlide = $(instance.current.$slide), 80 $fancyPrevSlide = $(instance.group[instance.prevPos].$slide) ? $(instance.group[instance.prevPos].$slide) : null, 81 dataSettings = instance.current.opts.$orig[0].dataset.hsFancyboxOptions ? JSON.parse(instance.current.opts.$orig[0].dataset.hsFancyboxOptions) : {}, 82 transitionEffectCustom = dataSettings.transitionEffectCustom ? dataSettings.transitionEffectCustom : false; 83 84 if (transitionEffectCustom) { 85 $fancySlide.css('visibility', 'visible'); 86 87 if (!$fancySlide.hasClass('animated')) { 88 $fancySlide.addClass('animated'); 89 } 90 91 if ($fancyPrevSlide && !$fancyPrevSlide.hasClass('animated')) { 92 $fancyPrevSlide.addClass('animated'); 93 } 94 95 if (!$('body').hasClass('fancybox-opened')) { 96 $fancySlide.addClass(transitionEffectCustom.onShow); 97 98 $fancySlide.on('animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function (e) { 99 $fancySlide.removeClass(transitionEffectCustom.onShow); 100 101 $('body').addClass('fancybox-opened'); 102 }); 103 } else { 104 $fancySlide.addClass(transitionEffectCustom.onShow); 105 106 $fancySlide.on('animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function (e) { 107 $fancySlide.removeClass(transitionEffectCustom.onShow); 108 }); 109 110 if($fancyPrevSlide) { 111 $fancyPrevSlide.addClass(transitionEffectCustom.onHide); 112 113 $fancyPrevSlide.on('animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function (e) { 114 $fancyPrevSlide.removeClass(transitionEffectCustom.onHide); 115 }); 116 } 117 } 118 } 119 }, 120 beforeClose: function (instance) { 121 var $fancySlide = $(instance.current.$slide), 122 dataSettings = instance.current.opts.$orig[0].dataset.hsFancyboxOptions ? JSON.parse(instance.current.opts.$orig[0].dataset.hsFancyboxOptions) : {}, 123 transitionEffectCustom = dataSettings.transitionEffectCustom ? dataSettings.transitionEffectCustom : false, 124 overlayBlurBG = dataSettings.overlayBlurBg; 125 126 if (transitionEffectCustom) { 127 $fancySlide.removeClass(transitionEffectCustom.onShow).addClass(transitionEffectCustom.onHide); 128 129 $('body').removeClass('fancybox-opened'); 130 } 131 132 if (overlayBlurBG) { 133 $('body').removeClass('blur-30'); 134 } 135 } 136 }; 137 settings = $.extend(true, defaults, settings, dataSettings, options); 138 139 /* Start : Init */ 140 141 var newFancybox = el.fancybox(settings); 142 143 /* End : Init */ 144 145 return newFancybox; 146 } 147 148 }; 149 150})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.