/* Minification failed. Returning unminified contents.
(470,65-66): run-time error JS1195: Expected expression: >
(472,18-19): run-time error JS1004: Expected ';': )
(474,75-76): run-time error JS1195: Expected expression: )
(474,77-78): run-time error JS1004: Expected ';': {
(493,18-19): run-time error JS1195: Expected expression: )
(500,13-14): run-time error JS1002: Syntax error: }
(507,9-10): run-time error JS1002: Syntax error: }
(510,38-39): run-time error JS1004: Expected ';': {
(583,65-66): run-time error JS1195: Expected expression: >
(585,18-19): run-time error JS1004: Expected ';': )
(858,1-2): run-time error JS1002: Syntax error: }
(859,53-54): run-time error JS1004: Expected ';': {
(1070,430-431): run-time error JS1195: Expected expression: .
(1070,431-432): run-time error JS1010: Expected identifier: .
(1070,432-433): run-time error JS1010: Expected identifier: .
(1070,434-435): run-time error JS1004: Expected ';': ]
(1070,436-437): run-time error JS1197: Too many errors. The file might not be a JavaScript file: [
(859,9054-9063): run-time error JS1018: 'return' statement outside of function: return at
(857,5-19): run-time error JS1018: 'return' statement outside of function: return _export
 */
function ArtistArtworksGalleryModule(elem) {
    var self = this;
    self.gridObj = null;
    self._elem = $(elem);
    $(window).scroll(pageScroll);
    $(window).scroll(stickyFilters);
    $(window).resize(windowResized);
    $(window).scroll(showHideFilters);
    window.addEventListener('scroll', onFilterPageScroll, { passive: true });

    document.addEventListener("click", function () {
        var withinBoundaries = event.composedPath().includes(document.querySelector('.grid'));
        if (!withinBoundaries) {
            $('.grid-item').removeClass('active');
        }
    });

    var init = function () {
        self.page = 0;
        self.sticky = 0;
        self.currentTop = 0;
        self.isLoading = false;
        self.totalRowCount = 0;
        self.currentFilters = [];
        self.currentRowCount = 0;
        self.isFakeClick = false;
        self.isShowRegPopup = false;
        $('.filter-summary').hide();
        self.artworkFilterTop = isMobile() ? 40 : 105;
        self.autoLoadHeight = $("#footer").height() + 10;
        self.filters = self._elem.find(".filter-selector");
        $('.filter-summary').on('click', expandCollapseFilters);
        self.hasBroadMediaFilter = $('.broadmedia').length > 0;
        self.hasYearSliderFilter = $('.year-filter').length > 0;
        self.hasArtworkSizeFilter = $('.artworksize').length > 0;
        self.isJumpToMenu = $('#jump_to_menu_parent').length > 0;
        self.masonryGrid = self._elem.find("#artworkmasonrygrid");
        self.filterSummary = self._elem.find('.collapsed-filter-result');
        self.filterSection = self._elem.find(".artwork-filters-container");
        self._elem.on('click', ".filter-selector a[data-target]", onClickSortType);
        self.prevPage = 0;
        self._resizedFinished = null;
        self.slickSettings = {
            arrows: true,
            infinite: false,
            slidesToShow: 5,
            slidesToScroll: 1,
            centerMode: true,
            centerPadding: 0,
            swipeToSlide: true,
            focusOnSelect: true,
            variableWidth: true,
            prevArrow: "<span class='slicks-left slick-arrow'><i class='m-icon-keyboard_arrow_left'></i></span>",
            nextArrow: "<span class='slicks-right slick-arrow'><i class='m-icon-keyboard_arrow_right'></i></span>",
            responsive: [
                {
                    breakpoint: 1440,
                    settings: {
                        slidesToShow: 5,
                        slidesToScroll: 2,
                    }
                },
                {
                    breakpoint: 1280,
                    settings: {
                        slidesToShow: 4,
                        slidesToScroll: 2,
                    }
                },
                {
                    breakpoint: 1024,
                    settings: {
                        slidesToShow: 4,
                        slidesToScroll: 2
                    }
                },
                {
                    breakpoint: 768,
                    settings: {
                        slidesToShow: 3,
                        slidesToScroll: 1
                    }
                }, {
                    breakpoint: 600,
                    settings: {
                        slidesToShow: 2,
                        slidesToScroll: 1
                    }
                },
                {
                    breakpoint: 480,
                    settings: {
                        slidesToShow: 1,
                        slidesToScroll: 1
                    }
                }
            ]
        };

        initFilters();
        scrollToMasonryGrid();
        getArtistArtworks(getFilters(), onLoadGallery, onGalleryError,true);
        return _export;
    };

    $.fn.masonryImagesReveal = function ($items) {
        var msnry = this.data('masonry');

        if (msnry) {
            var itemSelector = msnry.options.itemSelector;
            // hide by default
            $items.hide();
            // append to container
            this.append($items);
            $items.children('.grid-item').imagesLoaded().progress(function (imgLoad, image) {
                // get item
                // image is imagesLoaded class, not <img>, <img> is image.img
                var $item = $(image.img).parents(itemSelector);
                // un-hide item
                $item.show();
                // masonry does its thing
                msnry.appended($item);
            });
        }

        self.isLoading = false;
        return this;
    };

    $(".artwork-filters-container *").click(function (e) {
        if (self.isLoading && !self.isFakeClick) {
            e.stopPropagation();
        }
    });

    $("#modalhovercard").click(function (event) {
        var sender = $(event.target).parents('#modalhovercard');
        if (sender) {
            window.open($(sender).data('href'), '_blank').focus();
            event.stopPropagation();
        }
        return true;
    });

    if (self.hasBroadMediaFilter) {
        $('.broadmedia').on('afterChange', function (event, slick, currentSlide) {
            if ($('.broadmedia a:first').offset().left < $('.broadmedia > .slicks-left').offset().left) {
                $('.broadmedia > .slicks-left').addClass('active');
            }
            else {
                $('.broadmedia > .slicks-left').removeClass('active');
            }

            if (($('.broadmedia a:last').offset().left + $('.broadmedia a:last').width()) < $('.broadmedia > .slicks-right').offset().left) {
                $('.broadmedia > .slicks-right').removeClass('active');
            }
            else {
                $('.broadmedia > .slicks-right').addClass('active');
            }
        });
    }

    function adjustSlickCenter() {
        if (self.hasBroadMediaFilter) {
            var broadSlider = $('.broadmedia').slick('getSlick');
            if (broadSlider.slideCount <= broadSlider.options.slidesToShow) {
                broadSlider.unslick();
            }
        }
    }

    function bindClickEvents() {
        $('.grid-item').off('click').on('click', showArtworkDetails);
    }

    function onFilterPageScroll() {
        if (window.scrollY > 600) {
            $("#jumpToTop").fadeIn(200);
        } else {
            $("#jumpToTop").fadeOut(200);
        }
    }

    function getFilters() {
        var data = {};
        data.page = self.page;
        data.artistId = self.artistId;
        data.filters = self.currentFilters;
        return data;
    }

    function initFilters() {
        if ($('.main-filters').length > 0) {
            self.isLoading = true;
            self.isFakeClick = true;
            var filterNames = getFilterNames();
            self.sticky = $('.main-filters')[0].offsetTop;

            if (self.hasBroadMediaFilter) {
                self.broadMediaSlick = $('.broadmedia').slick(self.slickSettings);

                if (!self.broadMediaFilter) {
                    self.broadMediaFilter = new TagSelectorModule("#flt-category", onFilterAction);
                }
            }

            if (self.hasYearSliderFilter) {
                $('.display-wrapper').css('margin-left', ($(".main-filters").offset().left * -1) + 'px');

                if (!self.yearSelectorFilter) {
                    self.yearSelectorFilter = new CreatedDateModule("#yearSlider", onFilterAction, true);
                }
            }

            if (self.hasArtworkSizeFilter) {
                if (!self.artworkSizeFilter) {
                    self.artworkSizeFilter = new TagSelectorModule("#flt-sizes", onFilterAction);
                }
            }

            jQuery.each(filterNames, function (index, filter) {
                var fltValue = getParameterByName(filter);

                if (fltValue) {
                    fltValue = fltValue.replace(/[^0-9a-z\-]/gi, '');
                    var curFlt = $('.filters div[data-name="' + filter + '"]');
                    self.currentFilters.push({ name: filter, value: fltValue });

                    if (curFlt) {
                        $(curFlt).show();
                        $(curFlt).find('[data-value="' + fltValue + '"]').trigger('click');
                        $('.flex > a[data-target="#' + curFlt.attr("id") + '"]').addClass('active');
                        $(curFlt).find('[data-value="' + fltValue + '"]').find('span').trigger('click');
                    }
                }
            });

            loadBroadMediaSlick();
            self.isLoading = false;
            self.isFakeClick = false;
            showHideAdditionalFilters();
        }
        else {
            $('.masonry-grid').addClass('pt-xl');
        }
    }

    function loadBroadMediaSlick() {
        if (self.hasBroadMediaFilter) {
            $('.broadmedia').slick('setPosition');
            adjustSlickCenter();
        }
    }

    function refreshSlicks() {
        if (self.hasBroadMediaFilter) {
            $('.broadmedia').slick('refresh');
            adjustSlickCenter();
        }
    }

    function getFilterNames() {
        var filters = [];
        var objects = $('.filters > [data-name]');

        jQuery.each(objects, function (index, obj) {
            filters.push($(obj).data('name'));
        });

        return filters;
    }

    function removeQueryString() {
        var uri = window.location.href.toString();
        if (uri.indexOf("?") > 0) {
            var clean_uri = uri.substring(0, uri.indexOf("?"));
            window.history.replaceState({}, document.title, clean_uri);
        }
    }

    function updateUrlParameter() {
        removeQueryString();
        return window.location.href + '?' + encodeURI(jQuery.param(self.currentFilters, true));
    }

    function stickyFilters() {
        if (!self.isLoading) {
            if (window.pageYOffset + 10 > self.sticky) {
                toggleFiltersView(true);
                toggleFiltersButtons(false);
                self.filterSection.addClass("sticky");
            } else {
                toggleFiltersView(false);
                toggleFiltersButtons(true);
                self.filterSection.removeClass("sticky");
            }
        }
        else if (window.pageYOffset < $('.masonry-grid').offset().top) {
            toggleFiltersView(false);
            toggleFiltersButtons(true);
        }
        $('.filter-summary').removeClass('expanded');
    }

    function expandCollapseFilters(e) {
        if (!$('.filter-summary').hasClass('expanded')) {
            $('.main-filters').show();
            toggleFiltersButtons(true);
            $('.filter-summary').show();
            $('.filter-summary').addClass('expanded');
        }
        else {
            toggleFiltersView(true);
            toggleFiltersButtons(false);
            $('.filter-summary').removeClass('expanded');
        }
    }

    function showHideFilters() {
        if ((self.currentTop + window.pageYOffset + $(self.filterSection).height()) > $('#footer').offset().top) {
            self.filterSection.hide();
        }
        else {
            self.filterSection.show();
        }
    }

    function pageScroll() {
        getCurrentTop();
        if (!self.isLoading) {
            if (($(document).height() - $(this).height() - self.autoLoadHeight) < $(this).scrollTop()) {
                if (self.currentRowCount < self.totalRowCount) {
                    //to show registration pop up if user not logged in and scrolls to page more than 7 times.
                    if (!self.isShowRegPopup) {
                        if (showRegistrationPopup(self.page, 7)) {
                            self.isShowRegPopup = true;
                            return;
                        }
                        else {
                            startLoader();
                            self.page += 1;
                            self.isLoading = true;
                            toggleFiltersButtons(false);
                            getArtistArtworks(getFilters(), onUpdateGallery, onGalleryError,false);
                        }
                    }
                }
            }
        }
    }

    function windowResized() {
        if (self.hasYearSliderFilter) {
            $('.display-wrapper').css('margin-left', ($(".main-filters").offset().left * -1) + 'px');
        }

        $(self.masonryGrid).one('layoutComplete', function () {
            clearTimeout(self._resizedFinished);
            self._resizedFinished = setTimeout(function () {
                rearrangeGrid();
            }, 100);
        });
    }

    function rearrangeGrid() {
        $(self.masonryGrid).masonry('layout');
    }

    function updateCollapsedFiltees() {
        var fltText = '';
        var seperator = ' - ';
        self.filterSummary.empty();

        if (self.currentFilters.length > 0) {
            fltText = fltText + '<span class="results-collapsed">' + self.totalRowCount.toString() + ' Results</span>';

            jQuery.each(self.currentFilters, function (index, filter) {
                fltText += seperator + '<span class="results-collapsed">' + $('.filters div[data-name="' + filter.name + '"] [data-value="' + filter.value + '"]').data('filtertext') + '</span>';
            });
        }
        else {
            fltText = '<span class="results-collapsed">' + self.totalRowCount.toString() + ' Artworks</span>';
        }

        self.filterSummary.append(fltText);
    }

    function getArtwork(artwork) {
        return getArtworkClickElement(artwork);
    }

    function getArtworkClickElement(artwork) {
        var eventData = 'data-gtm="event,artwork,click on image"';
        var mediumText = artwork.mediumText ? '<div class="artist-artwork-desc-block" data-cta="' + ctaname + '">' + truncateString(artwork.mediumText) + '</div>' : '';

        if (artwork.isForSale) {
            return '<div  class="grid-item-container"><span class="for-sale"><img src="/img/artworks/triangle.svg" class="tag-icon" /><span>AVAILABLE FOR SALE</span></span><div  class="grid-item" data-link="' + artwork.url + '" data-cta="' + ctaname + '"><div class="hover-card"><img title="' + artwork.image.title + '" ' + eventData + ' alt="' + artwork.image.text + '" src="' + artwork.image.url + '" data-cta="' + ctaname + '"><div class="hover-details" data-cta="' + ctaname + '"><p>' + truncateString(artwork.name + artwork.creationDate) + '</p>' + mediumText + '</div></div></div></div>';
        }
        else {
            return '<div  class="grid-item-container"><div  class="grid-item" data-link="' + artwork.url + '" data-cta="' + ctaname + '"><div class="hover-card"><img title="' + artwork.image.title + '" ' + eventData + ' alt="' + artwork.image.text + '" src="' + artwork.image.url + '" data-cta="' + ctaname + '"><div class="hover-details" data-cta="' + ctaname + '"><p>' + truncateString(artwork.name + artwork.creationDate) + '</p>' + mediumText + '</div></div></div></div>';
        }
    }

    function getArtworkHoverElement(artwork) {
        var eventData = 'data-gtm="event,artwork,click on image"';
        var MALotStatus = artwork.IsPostAuctionSale ? 'Post-Auction Lot for Sale' : (artwork.lotStatus + ' Lot #' + artwork.lotNumber);
        var InitialStatus = artwork.gallery != "" ? artwork.galleryPrice : MALotStatus; 
        var DetailStatusLine = artwork.gallery != "" ? '<div class="desc-block">' + artwork.galleryPrice + '</div> <div>' + artwork.gallery + '</div>' : '<div class="desc-block" >' + MALotStatus + '</div>';
        var detailSectionSecondLine = '<div class="artwork-status artist-artwork-desc-block" data-cta="' + ctaname + '">' + (artwork.lotStatus ? InitialStatus : artwork.galleryPrice) + '</div>';
        var TitleAndYear = '<div class="title-wrapper"><div class="title">' + truncateString(artwork.name) + '</div> <div class="creation-date">' + (artwork.gallery != "" && artwork.creationDate != "" ? ", " : "") + artwork.creationDate + '</div></div>';
        var detailSection = '<div class="in-detail">' + '<div>' + artwork.name  + (artwork.gallery != "" && artwork.creationDate != "" ? ", " : "") + artwork.creationDate + '</div>' + '<div>' + artwork.artist + '</div>'
            + DetailStatusLine + '</div>';
        var details = '<div class="details"> <div class="brief">' + TitleAndYear + detailSectionSecondLine + '</div>' + detailSection + '</div>';
        var isDefaultImage = isDefaultImageURL(artwork.image.url);
        var hoverDetails = '<div class="hover-details" data-cta="' + ctaname + '">' + details  + '</div>';
        var gridItem = '<div class="grid-item hover-item ' + (isDefaultImage ? "default-img" : "") + '" data-link="' + artwork.url + '" data-cta="' + ctaname + '"> <div class="hover-card"><img title="' + (isDefaultImageURL(artwork.image.url) ? artwork.image.title :'') + '" ' + eventData + ' alt="' + artwork.image.text + '" src="' + artwork.image.url + '" data-cta="' + ctaname + '"> </div> '
            + hoverDetails + ' </div>';
        if (artwork.isForSale) {
            artworkDiv = '<div class="grid-item-container"><span class="for-sale"><img src="/img/artworks/triangle.svg" class="tag-icon" /><span>AVAILABLE FOR SALE</span></span> '
                + gridItem + ' </div > ';
        }
        else {
            artworkDiv = '<div class="grid-item-container"> '+ gridItem + ' </div>';
        }
        return artworkDiv;
    }

    function isDefaultImageURL(url) {
        const defaultPattern = /Default(_artwork|_artwork_sculpt|_Artwork|_Artwork_Sculpt)?_(96|160|273|338|570)\.png$/;
        return defaultPattern.test(url);
    }

    function showHideFilteredResult() {
        if (self.currentFilters.length > 0) {
            $('.resultsSpan').removeClass('hideit');
        }
        else {
            $('.resultsSpan').addClass('hideit');
        }
    }

    function truncateString(input) {
        if (input != null && input.length > 50) {
            return input.substring(0, 50) + '...';
        }
        return input;
    }

    function showHideNoResult(artworkCount) {
        if (artworkCount == 0) {
            self._elem.find('.no-results').show();
        }
        else {
            self._elem.find('.no-results').hide();
        }
    }

    function onLoadGallery(response) {
        if (response.OK) {
            if (response.Data.Artworks) {
                self.masonryGrid.hide();
                showHideFilteredResult();
                self.totalRowCount = response.Data.TotalRowCount;
                self.currentRowCount = response.Data.CurrentRowCount;
                $('.resultsCount').text(response.Data.TotalRowCount + ' Results');

                //MAPF-6726
                GTM_Send("event", "Page Load", page_name, page_name + '_' + self.page);

                jQuery.each(response.Data.Artworks.sort((a, b) => Number(b.isForSale) - Number(a.isForSale)), function (index, artwork) {
                    self.masonryGrid.append(getArtwork(artwork));
                });

                self.gridObj = $(self.masonryGrid).imagesLoaded(function () {
                    self.masonryGrid.fadeIn(500);
                    // init Masonry after all images have loaded
                    self.gridObj.masonry({
                        gutter: 10,
                        fitWidth: true,
                        transitionDuration: '0.8s',
                        itemSelector: ".grid-item-container",
                        // nicer reveal transition
                        visibleStyle: { transform: 'translateY(0)', opacity: 1 },
                        hiddenStyle: { transform: 'translateY(100px)', opacity: 0 },
                    });


                    stopLoader();
                    addPagination(response);
                    bindClickEvents();
                    self.isLoading = false;
                    updateCollapsedFiltees();
                });
                showHideNoResult(response.Data.Artworks.length);
            }
            else {
                stopLoader();
                showHideNoResult();
                $('.resultsCount').text('No Results');
            }
        }
        else {
            stopLoader();
            showHideNoResult();
            self.filters.removeClass('hide');
            $('.resultsCount').text('No Results');
        }
    }

    function addPagination(response) {
        var searchParams = new URLSearchParams(window.location.search);
        var prevParms = new URLSearchParams(response.Data.PreviousLink);
        var nextParms = new URLSearchParams(response.Data.NextLink);
        var nextLinkParam = response.Data.NextLink;
        var prevLinkParam = response.Data.PreviousLink;
        if (searchParams.size > 0) {
            if (nextParms.has("page")) {
                var next = new URLSearchParams(window.location.search);
                next.delete('page');
                next.append("page", nextParms.get("page"));
                nextLinkParam = '?' + next.toString();
            }
            if (prevParms.has("page")) {
                var prev = new URLSearchParams(window.location.search);
                prev.delete('page');
                prev.append("page", prevParms.get("page"));
                prevLinkParam = '?' + prev.toString();
            }
        }
        var previousLink = prevLinkParam != '' ? '<a rel="previous" href="' + prevLinkParam + '" ></a>' : '';
        var nextLink = nextLinkParam != '' ? '<a rel="next" href="' + nextLinkParam + '" ></a>' : '';
        var paginationDiv = '<div class="pagination display-none">' + previousLink + nextLink + '</div>';
        self.masonryGrid.append(paginationDiv);
    }

    function showArtworkDetails(event) {
        if ($(this).hasClass('active')) {
            var link = $(this).data('link');
            if (link) {
                var newWindow = window.open(link, '_blank');
                if (newWindow) {
                    newWindow.focus();
                }
            }
        }
        else {
            $('.grid-item').removeClass('active');
            $(this).addClass('active');

            var elOffset = $(this).offset().top;
            var elHeight = $(this).height();
            var windowHeight = $(window).height();
            var offset;

            if (elHeight < windowHeight) {
                offset = elOffset - ((windowHeight / 2) - (elHeight / 2));
            }
            else {
                offset = elOffset;
            }

            $('html, body').animate({ scrollTop: offset }, 500);
        }
    }

    function scrollToMasonryGrid() {
        if (isMobile() || isIPadVertical()) {
            showHideTooltip(false);
            window.scrollTo({ top: $('.artist-artworks').offset().top, behavior: 'smooth' });
        }
    }

    function onUpdateGallery(response) {
        if (response.OK) {
            if (response.Data.Artworks && response.Data.Artworks.length) {
                var elems = [];
                self.totalRowCount = response.Data.TotalRowCount;
                self.currentRowCount += response.Data.CurrentRowCount;

                //MAPF-6726
                GTM_Send("event", "Page Load", page_name, page_name + '_' + self.page);

                jQuery.each(response.Data.Artworks.sort((a, b) => Number(b.isForSale) - Number(a.isForSale)), function (index, artwork) {
                    elems.push(getArtwork(artwork));
                });

                // Append new blocks
                updateCollapsedFiltees();
                var $items = $(elems.join(''));
                self.gridObj.masonryImagesReveal($items);
                addPagination(response);
            }
        }

        stopLoader();
        bindClickEvents();
        self.isLoading = false;
        self.filters.removeClass('hide');
    }
    function showHideTooltip(show) {
        if (isMobile() || isIPadVertical()) {
            if (show) {
                $(self.filterSection).find('.tooltip').show();
            }
            else {
                $(self.filterSection).find('.tooltip').hide();
            }
        }
    }

    function onClickSortType(e) {
        showHideTooltip(true);
        var curEle = $(this).data('target');
        if (!$(this).hasClass("active")) {
            $(this).addClass("active");
            $(curEle).show();
            refreshSlicks();
            getModuleFromTarget(curEle).setDefaultFilter();
        } else {
            $(curEle).hide();
            $(this).removeClass("active");

            self.currentFilters = self.currentFilters.filter(function (filter) {
                return filter.name != $(curEle).data("name");
            });

            onFilterAction();
        }

        showHideAdditionalFilters();
    }

    function showHideAdditionalFilters() {
        if (self.currentFilters.length > 1) {
            $('.open-filters').removeClass('hideit');
        }
        else {
            $('.open-filters').addClass('hideit');
        }
    }

    function getCurrentTop() {
        if (self.isJumpToMenu) {
            if ($('#jump_to_menu_parent').hasClass('is-pinned')) {
                self.currentTop = $("#jump_to_menu_parent").innerHeight();
            }
            else {
                self.currentTop = $("#ma-navigation").innerHeight() + $("#jump_to_menu_parent").innerHeight();
            }
        }
        else {
            if ($('#ma-navigation').hasClass('mobile-collapsed')) {
                self.currentTop = $(".menu-sticky-wrapper").innerHeight();
            }
            else {
                self.currentTop = $("#ma-navigation").innerHeight() + $(".menu-sticky-wrapper").innerHeight();
            }
        }
    }

    function setFilterSummaryTop() {
        $(self.filterSection).css({
            'top': self.currentTop - 2 + 'px'
        });
    }

    function toggleFiltersView(isCollapsed) {
        if (isCollapsed) {
            setFilterSummaryTop();
            $('.main-filters').hide();
            $('.filter-summary').show();
        }
        else {
            $('.main-filters').show();
            $('.filter-summary').hide();
        }
    }

    function toggleFiltersButtons(isExpanded) {
        if (isExpanded) {
            $('.btn-expand').addClass('hide');
            $('.btn-collapse').removeClass('hide');
        }
        else {
            $('.btn-collapse').addClass('hide');
            $('.btn-expand').removeClass('hide');
        }
    }

    function resetMasonryGrid() {
        self.page = 0;
        self.totalRowCount = 0;
        $('.grid-item-container').remove();
        self.currentRowCount = 0;
        $(self.masonryGrid).masonry().masonry('destroy');
    }

    function onFilterAction(e) {
        if (!self.isFakeClick) {
            startLoader();
            resetMasonryGrid();
            showHideNoResult();
            self.isLoading = true;
            scrollToMasonryGrid();
            toggleFiltersView(false);
            toggleFiltersButtons(false);
            self.filterSection.removeClass("sticky");

            if (e != undefined) {
                var filterName = $('.filters div[data-name]').has('[data-value="' + e.filter + '"]').data('name');

                if (self.currentFilters.length > 0) {
                    var objIndex = self.currentFilters.findIndex(function (filter) {
                        return filter.name == filterName;
                    });

                    if (objIndex > -1) {
                        self.currentFilters[objIndex].value = e.filter;
                    }
                    else {
                        self.currentFilters.push({ name: filterName, value: e.filter });
                    }
                }
                else {
                    self.currentFilters.push({ name: filterName, value: e.filter });
                }
            }

            var newPage = updateUrlParameter();
            window.history.pushState(newPage, "", newPage);
            getArtistArtworks(getFilters(), onLoadGallery, onGalleryError,false);
        }

        if (self.currentFilters.length > 0) {
            $('.filters').addClass('active');
            $('.filters-section').removeClass('active');
        }
        else {
            $('.filters').removeClass('active');
            $('.filters-section').addClass('active');
        }
    }

    function getModuleFromTarget(target) {
        switch (target) {
            case '#flt-category':
                return self.broadMediaFilter;
            case '#flt-timeline':
                return self.yearSelectorFilter;
            case '#flt-sizes':
                return self.artworkSizeFilter;
        }
    }

    function isDesktop() {
        var device = $('.masonry-grid').attr('data-device');
        if (device == "desktop" && (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 0 || navigator.platform === 'iPad')) {
            return false;
        } else if (device == "desktop") {
            return true;
        } 
        return false;
    }

    function onGalleryError(e) {
        stopLoader();
        $('.resultsCount').text('No Results');
    }

    function stopLoader() {
        $(".loader").html("");
        self.isLoading = false;
        stopLodder($('.masonry-grid'), true);
        $(document.body).css({ 'cursor': 'default' });
    }

    function startLoader() {
        self.isLoading = true;
        $(".loader").html(loading_image_html);
        $(document.body).css({ 'cursor': 'wait' });
    }

    function getArtistArtworks(_data, success, error, isInit) {
        self.isLoading = true;
        _data.artistId = artistId;
        _data.randomnessFactor = self.randomnessFactor;
        var pageParam = window.urlParams.get('page');
        if (pageParam !== null && !isNaN(pageParam) && self.prevPage != pageParam) {
            _data.page = pageParam;
            self.prevPage = pageParam;
            self.page = parseInt(pageParam);
        }
        return $.ajax('/api/artists/artworks', {
            data: _data,
            method: "POST",
            success: function (response) {
                self.randomnessFactor = response.Data.RandomnessFactor > 0 ? response.Data.RandomnessFactor : self.randomnessFactor;
                if (response.Data && response.Data.Artworks && isInit) {
                    generateArtworkSchema(response.Data.Artworks);
                }
                success(response)
            },
            error: error || DefaultErrorCallback
        });
    }
    function generateArtworkSchema(artworks) {
        var schemaList = artworks.map(function (artwork) {
            var schema = {
                "@context": "https://schema.org",
                "@type": "VisualArtwork",
                "image": artwork.image ? artwork.image.url : "",
                "name": artwork.name || "",
                "url": "https://www.mutualart.com" + artwork.url, 
                "artist": artwork.artistDisplayName || "", 
                "dateCreated": artwork.rawCreationDate || "",
                "artForm": artwork.broadMedia || "",
                "artworkSurface": artwork.mediumText || "",
                "creator": [
                    {
                        "@type": "Person",
                        "name": artwork.artistDisplayName || "",
                    }
                ],
                "width": [
                    {
                        "@type": "Distance",
                        "name": artwork.dimension_W_in + " inches" 
                    }
                ],
                "height": [
                    {
                        "@type": "Distance",
                        "name": artwork.dimension_H_in + " inches" 
                    }
                ]
            };
            if (["Sculpture", "Painting", "Photograph"].includes(artwork.broadMedia)) {
                schema["additionalType"] = artwork.broadMedia;
            }
            return schema;
        });

        // Append JSON-LD schema to the page
        var script = $('<script>', {
            type: 'application/ld+json',
            text: JSON.stringify(schemaList, null, 2)
        });

        $('head').append(script);
    }

    var _export = {
        init: init,
        startLoader: startLoader
    };

    return _export;
};
"use strict";function ArtistGalleryComponentModule(){function a(){isMobile()?($(".img-b").click(function(t){var i;if(t.target.tagName.toLowerCase()=="IMG"||t.currentTarget.classList.contains("hovered")||t.target.tagName.toLowerCase()=="span"||t.target.classList.contains("artwork-title")||t.preventDefault(),t.target.tagName.toLowerCase()!="span"&&!this.classList.contains("hovered")){$(".img-b.hovered").removeClass("hovered");ht||(ht=!0,$(".gallery-scroller .gallery-poc").css("margin-left","3.75em"));i=this.offsetWidth;$(this).addClass("hovered");$(this).width(i);var r=$(this),u=r.offset(),f=$(window).width()-r.width();n.animate({scrollLeft:"+="+(u.left-f/2),scrollTop:u.top},200)}}),$(".img-b span.close").click(function(n){n.preventDefault();$(".img-b.hovered").removeClass("hovered")})):$(".img-b").hover(function(){var n=this.offsetWidth;$(this).addClass("hovered");$(this).width(n)},function(){$(this).removeClass("hovered")})}function ct(){var h=n.scrollLeft(),i;isMobile()||(n.animate({scrollLeft:h+y},200),h+=y,n[0].clientWidth+h>=n[0].scrollWidth&&u==r&&f.removeClass("active"),h>10&&e.addClass("active"));nt();i={};i.artistId=artistId;i.page=s+1;i.pageSize=g;i.filters=t;n[0].clientWidth+h>=n[0].scrollWidth&&u<r?$.ajax("/api/artists/gallery",{data:i,method:"POST",success:function(n){r=n.TotalRowCount;u+=n.CurrentRowCount;tt(n.Artworks);s+=1},error:function(n){console.log(n)},complete:function(){o();v();a()}}):o()}function yt(){var t=n.scrollLeft();n.animate({scrollLeft:t-y},200);t-=y;n[0].clientWidth+t<n[0].scrollWidth&&f.addClass("active");t<=10&&e.removeClass("active")}function pt(){var h=n.scrollLeft(),i;if(!isMobile()&&st!=h)$(".img-b").on("click",function(n){n.preventDefault();$(".img-b").unbind("click")});isMobile()||(n[0].clientWidth+h>=n[0].scrollWidth&&u==r&&f.removeClass("active"),h>10&&e.addClass("active"));nt();n[0].clientWidth+h>=n[0].scrollWidth&&u<r?(i={},i.artistId=artistId,i.page=s+1,i.pageSize=g,i.filters=t,$.ajax("/api/artists/gallery",{data:i,method:"POST",success:function(n){r=n.TotalRowCount;u+=n.CurrentRowCount;tt(n.Artworks);s+=1},error:function(n){console.log(n)},complete:function(){o();v();a()}})):o()}function nt(){this.currentArtworksCount=$(".img-b")}function v(){$("#resultsCount")[0]&&($("#resultsCount")[0].innerText=r+" Results");r==0?$("#no-results").css("display","block"):$("#no-results").css("display","none")}function tt(n){var i=[{row:p,width:p[0].scrollWidth},{row:w,width:w[0].scrollWidth},{row:b,width:b[0].scrollWidth}],t;r>10&&!isMobile()&&i.push({row:k,width:k[0].scrollWidth});t=i[0];n.forEach(function(n){i.forEach(function(n){n.width<t.width&&(t=n)});t.row.append(bt(n.ArtworkPageUrl,n.ImageUrl,n.ArtworkTitle));t.width+=n.Width});$(".placeholder").remove()}function ft(n){var u,f,i,e,o,s,r;$(this).hasClass("active")?($(this).removeClass("active"),i=n.target.tagName=="I"?n.target.parentElement:n.target,e=i.dataset.target,$(e).hide(),o=$(i.dataset.target).data("name"),s=t.find(function(n){return n.name==o}),s.value=null,r=parseQueryParams(),h[0]&&i.id==h[0].id&&r.tags&&manager.removeQuery("tags",r.tags),l[0]&&i.id==l[0].id&&r.width&&(manager.removeQuery("width",r.width),manager.removeQuery("width_c",r.width_c)),c[0]&&i.id==c[0].id&&r.year&&manager.removeQuery("year",r.year),manager.setQuery(),it({filter:null})):($(this).addClass("active"),i=n.target.tagName=="I"?n.target.parentElement:n.target,u=i.dataset.target,$(u).show(),f=wt(i.dataset.target),f.setDefaultFilter())}function wt(n){switch(n){case"#flt-category":return rt;case"#flt-timeline":return d;case"#flt-sizes":return ut}}function bt(n,t,i){return"<a href='{0}' class='img-b'><span class='close' aria-label='Close'><\/span><img src='{1}' /><span class='artwork-title' title='{2}'>{3}<\/span><\/a>".format(n,t,i,i)}function it(n){for(var c,d,i={},e=$(".filter-selector a.active"),h=0;h<e.length;h++){var l=e.eq(h).data("target"),it=$(l),rt=it.data("name"),ut=$(l+' [data-value="'+n.filter+'"]'),y=ut.data("value");y&&(c=t.find(function(n){return n.name==rt}),c&&(c.value=y))}ii();i.artistId=artistId;i.page=1;i.pageSize=g;i.filters=t;d=manager.getOnlyQuery().replace("?","");i.queryString=d;lt();$.ajax("/api/artists/gallery",{data:i,method:"POST",success:function(n){var i,t,c;for(p.html(""),w.html(""),b.html(""),k.html(""),nt(),r=n.TotalRowCount,u=n.CurrentRowCount,tt(n.Artworks),s=1,f.addClass("active"),t=0;t<e.length;t++){var l=new URLSearchParams(window.location.search),o=l.get("sortFilterActive"),h=e.eq(t).data("target");if(o){if(!o.includes(h.replace("#",""))){i=o.split("_");for(t in i)manager.removeQuery("sortFilterActive",i[t]);c=i.join("_")+"_"+h.replace("#","");manager.setQuery("sortFilterActive="+c)}}else manager.setQuery("sortFilterActive="+h.replace("#",""))}},error:function(n){console.log(n)},complete:function(){fi();o();v();a()}})}function kt(n){switch(n.toLowerCase()){case"small":return"-21";case"medium":return"21-39";case"large":return"39-57";case"x-large":return"57-";default:return null}}function dt(n){switch(n){case"-21":return"Small";case"21-39":return"Medium";case"39-57":return"Large";case"57-":return"X-Large";default:return"Not Specified"}}function o(){setTimeout(function(){var t=n.scrollLeft();n[0].clientWidth+t>=n[0].scrollWidth&&u>=r&&f.removeClass("active");(n[0].clientWidth+t<n[0].scrollWidth||u<r)&&f.addClass("active");t>10&&e.addClass("active");t<=10&&e.removeClass("active")},50)}function et(){var n,i,e;manager.setQuery();n={};n.artistId=artistId;n.page=1;n.pageSize=g;n.filters=t;i=document.URL;e=i.split("?")[1];n.queryString=e;gt();ni();ti();$.ajax("/api/artists/gallery",{data:n,method:"POST",success:function(n){p.html("");w.html("");b.html("");k.html("");nt();r=n.TotalRowCount;u=n.CurrentRowCount;tt(n.Artworks);s=1;f.addClass("active")},error:function(n){console.log(n)},complete:function(){o();v();a()}})}function gt(){var n,i,r;h.removeClass("active");n=h[0].dataset.target;$(n).hide();i=$(n).data("name");r=t.find(function(n){return n.name==i});r.value=null}function ni(){var n,i,r;c.removeClass("active");n=c[0].dataset.target;$(n).hide();i=$(n).data("name");r=t.find(function(n){return n.name==i});r.value=null}function ti(){var n,i,r;l.removeClass("active");n=l[0].dataset.target;$(n).hide();i=$(n).data("name");r=t.find(function(n){return n.name==i});r.value=null}function ii(){for(var u,r=parseQueryParams(),i={},n=0;n<t.length;n++)t[n].name=="BroadMedia"&&(t[n].value?i.tags=t[n].value:r.tags&&(i.tags=r.tags)),t[n].name=="ArtworkSize"&&(t[n].value?(i.width=kt(t[n].value),i.width_c="0"):r.width&&(i.width=r.width,i.width_c="0")),t[n].name=="CreationYear"&&(t[n].value?i.year=t[n].value.replaceAll(" ",""):r.year&&(i.year=r.year));u=ri(i);manager.setQuery()}function ri(n){var t=ui(n).reduce(function(n,t){return n.concat("&",t.key,"=",t.value&&typeof t.value=="object"?t.value.join("_"):t.value)},"");return t.indexOf("&")==0&&(t="?".concat(t.slice(1))),t}function ui(n){var t=[];for(i in n)t.push({key:i,value:n[i]});return t}function fi(){n.find(".progress").removeClass("active");stopLodder(n,!0);ot.find(".gallery-poc").removeAttr("style")}function lt(){n.css("overflow","");ot.find(".gallery-poc").css("overflow","hidden");n.find(".progress").addClass("active");startLodder(n,!0)}function ei(){self._elem.find("[data-overlay='import']").fadeOut(150,null,function(){$(this).remove()})}var y=800,f=$("#arrow-right-gallery"),e=$("#arrow-left-gallery"),n=$("#gallery-container"),ot=$("#artworksGallery"),st,ht=!1,p=$("#top-gallery-row"),w=$("#upper-middle-gallery-row"),b=$("#lower-middle-gallery-row"),k=$("#bottom-gallery-row"),h=$("#category-filter"),c=$("#year-filter"),l=$("#size-filter"),t=[],rt=null,d=null,ut=null,r=initialTotalArtworks,u=$(".img-b").length,s=1,g=Math.round($(window).width()/100*(isMobile()?3:4)),vt=function(){return $(document).ready(function(){var s,nt,y,b,k,p,w,u,i,r,g;if(stopLodder(n,!0),s=$("#gallery-container").height(),f.css("bottom",s/2+"px"),e.css("bottom",s/2+"px"),f.click(ct),e.click(yt),isMobileByPlatform())n.addClass("touch-scroll"),n.scroll(ct);else{nt=new DragSwipe(n[0]);$(n).on("ScrollStart",function(){st=n.scrollLeft()});$(n).on("ScrollStop",pt)}for(h.click(ft),c.click(ft),l.click(ft),rt||(rt=new TagSelectorModule("#flt-category",it)),d||(d=new YearSliderModule("#yearSlider",it,!0)),ut||(ut=new TagSelectorModule("#flt-sizes",it)),y=$(".filter-selector [data-target]"),i=0;i<y.length;i++)b=$(y[i].dataset.target).data("name"),t.push({name:b,value:null});$(".action-done").on("click",et);$(".autocomplete-module").on("FilterListClick",et);$(".search-btn-container").on("click",et);if(a(),o(),v(),k=new URLSearchParams(window.location.search),p=k.get("sortFilterActive"),p){w=p.split("_");u=parseQueryParams();for(i in w)r="#"+w[i],$('a[data-target="'+r+'"]').click(),r=="#flt-category"&&(u.tags?$('a[data-value="'+u.tags+'"]').click():$(r).find('a:contains("Not specified")').click()),r=="#flt-timeline"&&(g=u.year.split("-"),d.setSelectedByValue(g.join(" - "))),r=="#flt-sizes"&&$('a[data-value="'+dt(u.width)+'"]').click()}}),at},at={init:vt,DismissImport:ei,StartLoader:lt};return at};
function CreatedDateModule(elem, callback, canClickBetweenYears) {
    if (!$(elem).length) {
        return null;
    }
    var self = this;

    self._elem = $(elem);
    self._yearDisplay = self._elem.find(".year-display");
    self._yearDisplayWrapper = self._elem.find(".display-wrapper");
    self.selectedValue = null;
    self.callback = callback;
    self.dataLength = 0;

    var childs = [];
    jQuery.each(self._yearDisplayWrapper.children(), function (index, child) {
        if (jQuery.inArray($(child).data('value'), childs) < 0) {
            self.dataLength++;
            childs.push($(child).data('value'));
        }
    });

    self._marker = self._elem.find(".slider-marker");

    self._lastMousePosition = null;

    self._yearDisplayWrapper.on('click', '[data-value] > span', onYearClick);

    if (canClickBetweenYears)
        self._yearDisplayWrapper.on('click', onYearGapClick);

    if (isMobileByPlatform()) {
        AddScriptStyleResources(false, ['https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js'], null)
        self._yearDisplay.css('overflow', 'auto');
    } else {
        self._yearDisplay.css('overflow', 'hidden');
    }

    var drag = new DragSwipe(self._yearDisplay[0], isMobileByPlatform() ? .4 : 1, true, false);
    $(drag).on('ScrollStop', onDragStop);
    $(drag).on('ScrollStart', setLastMousePosition);

    function setValue(i) {
        self.previousValue = self.selectedValue;
        self.selectedValue = $(self._yearDisplayWrapper.children()[i]).data('value');
        if (self.previousValue != self.selectedValue)
            self.callback({ filter: self.selectedValue });
    }

    function onDragStop() {
        var curWidth = self._yearDisplayWrapper.width();
        var left = self._yearDisplayWrapper.position().left * -1.0;
        if (left == curWidth)
            left = self._yearDisplayWrapper.offset().left * -1.0;
        var step = 150 //curWidth / (self.dataLength - 1);
        for (var i = 0; i < self.dataLength; i++) {
            var curStep = i * step;

            if (i == 0 && left < step) { // first
                setLeft(self._yearDisplay, (curStep + (step / 2)));
                setValue(i);
            }
            else if (left >= curStep && left < curStep + step) {
                setLeft(self._yearDisplay, (curStep + (step / 2)));
                setValue(i);
            } else if (left >= curStep + step && i == self.dataLength - 1) {
                setLeft(self._yearDisplay, (curStep + (step / 2)));
                setValue(i);
            }
        }
    }

    function adjustLeft(left) {
        if (isMobile()) {
            return left - 10;
        }
        else if (isIPadVertical()) {
            return left - 20;
        }
        else {
            return left;
        }
    }

    function setLeft(elm, _left) {
        _left = adjustLeft(_left);
        if (isMobile()) {
            elm[0].style.overflow = 'hidden';
            setTimeout(function () {
                elm[0].style.overflow = 'auto';
                elm.stop().animate({ scrollLeft: _left }, 200)
            }, 10);
        } else
            elm.stop().animate({ scrollLeft: _left }, 200);
    }

    function GetData() {
        return self.selectedValue;
    }
    function setYearByIndex(i) {
        var curWidth = self._yearDisplayWrapper.width();
        var step = 150;
        var toSel = i;
        setLeft(self._yearDisplay, (step * toSel) + (step / 2));
        setValue(toSel);
    }

    function setDefaultFilter() {
        self.previousValue = null;
        self.selectedValue = null;
        setYearByIndex(parseInt(self.dataLength / 2));
    }

    function onYearClick(e) {
        var yearText = e.target.innerText;
        var index = self._yearDisplayWrapper.find("[data-value^='{0}']".format(yearText)).index();
        index = index >= 0 ? index : self._yearDisplayWrapper.find("[data-value]").length - 2;
        setYearByIndex(index);
    }

    function setLastMousePosition(e) {
        self._lastMousePosition = e.detail.screenX;
    }

    function onYearGapClick(e) {
        var screenX = e.screenX ? e.screenX : $(e.target).offset().left;
        if (screenX != self._lastMousePosition)
            return;

        var years = $('.display-wrapper [data-value] > span');
        for (var i = 0; i < years.length; i++) {
            if (years[i].getBoundingClientRect().x < screenX)
                continue;
            if (i == 0) {
                setYearByIndex(i);
                break;
            }
            setYearByIndex(i - 1);
            break;
        }
    }

    function setSelectedByValue(value) {
        var index = self._yearDisplayWrapper.find("[data-value^='{0}']".format(value)).index();
        index = index >= 0 ? index : self._yearDisplayWrapper.find("[data-value]").length - 2;
        setYearByIndex(index);
    }

    return {
        setDefaultFilter: setDefaultFilter,
        GetData: GetData,
        Element: self._elem,
        setSelectedByValue: setSelectedByValue
    };
};
function TagSelectorModule(elem, callback) {
    var self = this;
    if (!$(elem).length) {
        return null;
    }
    self._elem = $(elem);
    self.callback = callback;
    //self.data = data;

    //for (var i in data) {
    //    self._elem.append("<a data-value='{2}'><span class='label'>{0}</span> <span class='cnt'>({1})</span></a>".format(data[i].Name, data[i].Count, data[i].Value))
    //}

    self._elem.find("a[data-value]").click(onMediaSelect);

    function onMediaSelect(e) {
        var target = e.target.tagName == "SPAN" ? e.target.parentElement : e.target;
        if (target.tagName != "A") {
            target = e.target.tagName == "I" ? e.target.parentElement : e.target;
        }
        self._elem.find("a[data-value]").removeClass("active");
        $(target).addClass("active");
        self.currentFilter = $(target).data("value");
        self.callback({ filter: self.currentFilter });
    }

    function GetData() {
        return self.currentFilter;
    }

    function setDefaultFilter() {
        var activeElm = self._elem.find("a[data-value].active");
        if (activeElm.length) {
            self.callback({ filter: self.currentFilter });
        } else {
            self._elem.find("a[data-value]").first().click();
        }
    }

    return {
        GetData: GetData,
        Element: self._elem,
        setDefaultFilter: setDefaultFilter
    };
};
/*!
 * imagesLoaded PACKAGED v5.0.0
 * JavaScript is all like "You images are done yet or what?"
 * MIT License
 */
!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),
/*!
 * imagesLoaded v5.0.0
 * JavaScript is all like "You images are done yet or what?"
 * MIT License
 */
function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));;
function DragSwipe(slider, velocity, disableTracking, isMobile) {

    let isDown = false;
    let startX;
    let scrollLeft;

    slider.addEventListener('mousedown', onMouseDown);
    slider.addEventListener('touchstart', onMouseDown);
    function onMouseDown(e) {
        EmitEvent("ScrollStart", { screenX: e.screenX, screenY: e.screenY }, slider);
        isDown = true;
        if (!isMobile) {
            slider.classList.add('active');
            startX = e.pageX - slider.offsetLeft;
            scrollLeft = slider.scrollLeft;
            cancelMomentumTracking();
        }
    }


    slider.addEventListener('mouseleave', function () {
        if (isDown)
            EmitEvent("ScrollStop", null, slider);
        isDown = false;
        if (!isMobile) {
            slider.classList.remove('active');
        }
    });


    slider.addEventListener('mouseup', onMouseUp);
    slider.addEventListener('touchend', onMouseUp);
    function onMouseUp() {
        if (isDown)
            EmitEvent("ScrollStop", null, slider);
        isDown = false;
        if (!isMobile) {
            slider.classList.remove('active');
            if (!disableTracking) {
                beginMomentumTracking();
            } else {
                cancelMomentumTracking();
            }
        }
    }


    if (!isMobile) {
        slider.addEventListener('mousemove', function (e) {
            if (!isDown) return;
            e.preventDefault();
            const x = e.pageX - slider.offsetLeft;
            const walk = (x - startX) * (velocity || 2); //scroll-fast
            var prevScrollLeft = slider.scrollLeft;
            slider.scrollLeft = scrollLeft - walk;
            velX = slider.scrollLeft - prevScrollLeft;
            if (prevScrollLeft > 0 && slider.scrollLeft == 0)
                EmitEvent("OnLeftEdge", null, slider);
        });
    }

    // Momentum 

    var velX = 0;
    var momentumID;
    if (!isMobile) {
        slider.addEventListener('wheel', function (e) {
            cancelMomentumTracking();
        });
    }

    function beginMomentumTracking() {
        cancelMomentumTracking();
        momentumID = requestAnimationFrame(momentumLoop);
    }
    function cancelMomentumTracking() {
        cancelAnimationFrame(momentumID);
    }
    function momentumLoop() {
        slider.scrollLeft += velX;
        velX *= 0.95;
        if (Math.abs(velX) > 0.5) {
            momentumID = requestAnimationFrame(momentumLoop);
        }
    }

    return slider;
};
