{"version":3,"sources":["_blog.js","_jsModule.js","_moduleContent.js","_moduleProductsFilter.js","_privacyCookie.js","_searchBar.js","_smoothScroll.js","theme.js"],"names":["blog","$","pub","_toggleFilters","on","e","preventDefault","this","parent","toggleClass","jQuery","jsModule","_moduleContent","readMoreList","length","next","toggle","_moduleProductsFilter","productFilterElement","document","getElementById","productsDefaultRestUrl","window","location","origin","primaryTaxonomy","dataset","primaryTermID","primaryTermId","secondaryTaxonomy","secondaryTermID","secondaryTermId","Vue","el","data","dropdownFilter","options","text","restSort","selected","isLoading","displayedProductAmount","totalPages","currentPage","products","productLayoutList","taxonomies","restTaxQueryParams","featured","watch","dropdownFilter.selected.restSort","resetPageAndFetchData","dropdownFilter.selected.text","fetchData","scrollIntoView","methods","_this","initializeTaxonomies","arguments","undefined","pagedAPIFetch","join","axios","get","then","response","pages","total_matching_products","updateTaxonomyTermCounts","catch","reason","console","log","newTaxonomyList","_this2","Object","keys","forEach","taxonomy","allTermsCount","totalParentTerms","terms","term","taxonomyTermObject","count","children","termChild","updateTaxQueries","oldQueryString","newQueryString","currentQueryString","indexOf","splice","push","resetFilters","created","mounted","_this3","$root","$on","newPage","component","props","name","String","resetTerms","Boolean","menuOpen","showMoreOpen","moreTerms","selectedTaxTerms","taxonomyList","updateSelectedTaxTerms","termData","_this4","values","activeTermIDs","termID","includes","removeTermIDs","termPosition","$emit","_this5","value","comparison","sort","a","b","slug","template","resetTerm","visible","mainFilterActive","componentTerm","allTermIDs","allTermChildIDs","activeChildTermIDs","flaggedIDsForRemoval","childTermsList","_this6","child","$set","term_id","concat","updateFilter","deactivateChildren","updateChildFilter","childTermObject","active","childPosition","_this7","computed","mainTermVisible","childListVisible","childrenTermCount","product","productImage","image","has_image","sizes","medium","productLanguages","additional_data","languages","map","lang","page","Number","checkForPageChange","config","devtools","privacyCookie","eastViewAcceptedCookie","xClick","cookie","cookies","split","i","searchBar","searchBarElement","searchToggle","calculatedWidth","width","isActive","css","stopPropagation","hasClass","removeClass","addClass","focus","click","target","id","parents","smoothScroll","_anchorScroll","_loadScroll","not","event","pathname","replace","hostname","hash","slice","_scrollAnimate","navObject","navHeight","height","navOffset","position","top","targetScrollTop","offset","animate","scrollTop","$target","is","attr","init"],"mappings":"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","file":"theme.min.js","sourcesContent":["const blog = (function ($) {\n\n var pub = {};\n\n pub.init = function () {\n pub._toggleFilters();\n };\n\n pub._toggleFilters = function () {\n $('.module__blog').on('click', '.taxonomy__name', function(e) {\n e.preventDefault();\n $(this).parent().toggleClass('taxonomy--open');\n });\n };\n\n return pub;\n\n})(jQuery);\n","/**\n * Initialize jsModule\n *\n * Example Javascript module with self-contained object interface.\n */\nvar jsModule = (function () {\n\n var pub = {}; // public facing functions\n\n pub.init = function () {\n\n };\n\n return pub;\n\n}());\n","/**\n * Initialize jsModule\n */\nvar _moduleContent = (function () {\n\n const readMoreList = jQuery('.module__read-more');\n\n if (readMoreList.length > 0) {\n readMoreList.on('click', function() {\n jQuery(this).next('.module__field-content').toggleClass('module__field-content--hidden');\n jQuery('span', this).toggle();\n });\n }\n\n var pub = {}; // public facing functions\n\n pub.init = function () {\n\n };\n\n return pub;\n\n}());\n","/**\n * Initialize jsModule\n */\n\nvar _moduleProductsFilter = (function () {\n const productFilterElement = document.getElementById('product-filter');\n\n if (!productFilterElement) {\n return;\n }\n\n // Setup API URL\n let productsDefaultRestUrl = window.location.origin;\n productsDefaultRestUrl += '/wp-json/product-filter/v2/params?';\n\n // Check for primary taxonomy and tax term id setup in DOM element attributes\n // then update API URL with corresponding query params\n const primaryTaxonomy = productFilterElement.dataset.primaryTaxonomy;\n const primaryTermID = productFilterElement.dataset.primaryTermId;\n if (primaryTaxonomy && primaryTermID) {\n productsDefaultRestUrl += '&primary_taxonomy=' + primaryTaxonomy;\n productsDefaultRestUrl += '&product_' + primaryTaxonomy + '=' + primaryTermID;\n }\n\n // Check for secondary taxonomy as above\n const secondaryTaxonomy = productFilterElement.dataset.secondaryTaxonomy;\n const secondaryTermID = productFilterElement.dataset.secondaryTermId;\n if (secondaryTaxonomy && secondaryTermID) {\n productsDefaultRestUrl += '&secondary_taxonomy=' + secondaryTaxonomy;\n productsDefaultRestUrl += '&product_' + secondaryTaxonomy + '=' + secondaryTermID;\n }\n\n /* eslint-disable no-new */\n new Vue({\n el: '#product-filter',\n data: {\n dropdownFilter: {\n options: [\n {\n text: 'Featured Only',\n restSort: '&meta_key=featured&orderby=meta_value&order=asc'\n },\n {\n text: 'Title A-Z',\n restSort: '&orderby=title&order=asc'\n },\n {\n text: 'Title Z-A',\n restSort: '&orderby=title&order=desc'\n },\n {\n text: 'Newer Years First',\n restSort: '&meta_key=years&orderby=meta_value_num&order=desc'\n },\n {\n text: 'Older Years First',\n restSort: '&meta_key=years&orderby=meta_value_num&order=asc'\n }\n ],\n selected: {\n text: 'Title A-Z',\n restSort: '&orderby=title&order=asc'\n }\n },\n isLoading: false, // DISPLAY: loading panel\n displayedProductAmount: 'Loading...', // DISPLAY: current product filter amount string\n totalPages: 1, // from REST: total pages\n currentPage: 1, // current page for pagination and to REST query\n products: [], // from REST: products\n productLayoutList: false, // LAYOUT: (false) show tiles (true) show table list\n taxonomies: [], // from WP: all taxonomies and used terms.\n restTaxQueryParams: [], // to REST: taxonomies and terms in query string format\n featured: false\n },\n watch: {\n 'dropdownFilter.selected.restSort'() {\n this.resetPageAndFetchData();\n },\n 'dropdownFilter.selected.text'() {\n this.featured = this.dropdownFilter.selected.text === 'Featured Only' ? true : false;\n },\n currentPage() {\n this.fetchData();\n document.getElementById('product-filter').scrollIntoView(true);\n },\n restTaxQueryParams() {\n this.resetPageAndFetchData();\n }\n },\n methods: {\n fetchData(initializeTaxonomies = false) {\n this.displayedProductAmount = 'Loading...';\n this.isLoading = true;\n\n let pagedAPIFetch = productsDefaultRestUrl + '&per_page=15&page=' + this.currentPage;\n pagedAPIFetch += this.dropdownFilter.selected.restSort;\n pagedAPIFetch += this.restTaxQueryParams.join('');\n\n axios\n .get(pagedAPIFetch)\n .then(response => {\n this.products = response.data.products;\n this.totalPages = response.data.pages;\n this.displayedProductAmount = response.data.total_matching_products + ' Results';\n\n // Get tax and terms from WP on first page load.\n if (initializeTaxonomies) {\n this.taxonomies = response.data.taxonomies;\n } else {\n this.updateTaxonomyTermCounts(response.data.taxonomies);\n }\n this.isLoading = false;\n })\n .catch(reason => {\n console.log('Failed to fetch products: ' + reason);\n this.displayedProductAmount = 'No matching products';\n this.isLoading = false;\n });\n },\n updateTaxonomyTermCounts(newTaxonomyList) {\n // Updates this.taxonomies term counts against fetched taxonomy data\n Object.keys(this.taxonomies).forEach(taxonomy => {\n this.taxonomies[taxonomy].allTermsCount = newTaxonomyList[taxonomy].allTermsCount;\n this.taxonomies[taxonomy].totalParentTerms = newTaxonomyList[taxonomy].totalParentTerms;\n Object.keys(this.taxonomies[taxonomy].terms).forEach(term => {\n const taxonomyTermObject = this.taxonomies[taxonomy].terms[term];\n // Update root level counts\n if (newTaxonomyList[taxonomy]\n && newTaxonomyList[taxonomy].terms[term]) {\n taxonomyTermObject.count = newTaxonomyList[taxonomy].terms[term].count;\n } else {\n taxonomyTermObject.count = 0;\n }\n // Update child level counts for this term's iteration\n Object.keys(taxonomyTermObject.children).forEach(termChild => {\n if (newTaxonomyList[taxonomy]\n && newTaxonomyList[taxonomy].terms[term]\n && newTaxonomyList[taxonomy].terms[term].children[termChild]) {\n taxonomyTermObject.children[termChild].count\n = newTaxonomyList[taxonomy].terms[term].children[termChild].count;\n } else {\n taxonomyTermObject.children[termChild].count = 0;\n }\n });\n });\n });\n },\n resetPageAndFetchData() {\n if (this.currentPage === 1) {\n this.fetchData();\n } else {\n this.currentPage = 1;\n }\n },\n updateTaxQueries(oldQueryString, newQueryString) {\n const currentQueryString = this.restTaxQueryParams.indexOf(oldQueryString);\n if (currentQueryString > -1 || newQueryString.length === 0) {\n this.restTaxQueryParams.splice(currentQueryString, 1);\n }\n if (newQueryString.length > 0) {\n this.restTaxQueryParams.push(newQueryString);\n }\n },\n resetFilters() {\n this.restTaxQueryParams = [];\n }\n },\n created() {\n this.fetchData(true);\n },\n mounted() {\n // Listen for pagination change from component\n this.$root.$on('paginationChanged', (newPage) => {\n this.currentPage = newPage;\n });\n }\n });\n\n\n // Single taxonomy filter component\n Vue.component('tax-term-list', {\n props: {\n name: String,\n taxonomy: Object,\n resetTerms: Boolean\n },\n data() {\n return {\n menuOpen: true, // State of whether tax menu is open\n showMoreOpen: false, // State of 'more' button and additional terms visibility\n moreTerms: 6, // Number of terms to show before \"more\" appears\n selectedTaxTerms: [], // This taxonomy's currently selected terms used with API query\n oldQueryString: '', // Old q string to compare with in parent\n newQueryString: '', // New q string to compare with in parent\n taxonomyList: [] // Array version of taxonomy prop obj for sortability\n };\n },\n methods: {\n updateSelectedTaxTerms(termData) {\n // Handle adding ids to selectedTaxTerms\n Object.values(termData.activeTermIDs).forEach(termID => {\n if (!this.selectedTaxTerms.includes(termID)) {\n this.selectedTaxTerms.push(termID);\n }\n });\n // Handle removing ids from selectedTaxTerms\n Object.values(termData.removeTermIDs).forEach(termID => {\n const termPosition = this.selectedTaxTerms.indexOf(termID);\n this.selectedTaxTerms.splice(termPosition, 1);\n });\n // Update query string\n if (this.selectedTaxTerms.length > 0) {\n this.newQueryString = '&product_' + this.name + '=' + this.selectedTaxTerms.join(',');\n } else {\n this.newQueryString = '';\n }\n this.$emit('tax-filter-updated', this.oldQueryString, this.newQueryString);\n this.oldQueryString = this.newQueryString;\n }\n },\n watch: {\n resetTerms() {\n if (this.resetTerms) {\n // Reset selectedTaxTerms list\n this.oldQueryString = '';\n this.selectedTaxTerms = [];\n }\n }\n },\n created() {\n // Create terms list array from object for sorting\n Object.values(this.taxonomy.terms).forEach((value) => {\n this.taxonomyList.push(value);\n });\n // Order the taxonomy terms alphabetically\n let comparison = 0;\n this.taxonomyList.sort((a, b) => {\n if (a.slug > b.slug) {\n comparison = 1;\n } else if (a.slug < b.slug) {\n comparison = -1;\n }\n return comparison;\n });\n },\n template: `\n
0\" class=\"col-xs-12 col-sm-4 col-md-12\">\n
\n
\n \n
\n \n moreTerms && menuOpen\"\n @click=\"showMoreOpen = !showMoreOpen\">\n More\n Less\n \n
\n
\n `\n });\n\n\n // Taxonomy filter section list item component\n Vue.component('tax-term-list-item', {\n props: {\n term: Object,\n resetTerm: Boolean,\n visible: Boolean\n },\n data() {\n return {\n mainFilterActive: false,\n componentTerm: this.term,\n allTermIDs: [],\n allTermChildIDs: [],\n activeChildTermIDs: [],\n flaggedIDsForRemoval: [],\n childTermsList: []\n };\n },\n created() {\n Object.values(this.componentTerm.children).forEach(child => {\n this.$set(child, 'active', false);\n this.allTermChildIDs.push(child.term_id);\n });\n this.allTermIDs.concat(this.allTermChildIDs).push(this.term.term_id);\n // Create child terms list array from object for sorting\n Object.values(this.term.children).forEach((value) => {\n this.childTermsList.push(value);\n });\n // Order the terms alphabetically\n let comparison = 0;\n this.childTermsList.sort((a, b) => {\n if (a.slug > b.slug) {\n comparison = 1;\n } else if (a.slug < b.slug) {\n comparison = -1;\n }\n return comparison;\n });\n },\n methods: {\n updateFilter() {\n this.mainFilterActive = !this.mainFilterActive;\n this.$emit('term-filter-updated', {\n 'activeTermIDs': this.mainFilterActive ? [this.term.term_id] : [],\n 'removeTermIDs': this.mainFilterActive ? this.activeChildTermIDs : [this.term.term_id]\n });\n this.deactivateChildren();\n },\n updateChildFilter(childTermObject) {\n if (this.mainFilterActive === true) {\n this.mainFilterActive = false;\n this.flaggedIDsForRemoval.push(this.term.term_id);\n }\n childTermObject.active = !childTermObject.active;\n if (!this.activeChildTermIDs.includes(childTermObject.term_id)) {\n this.activeChildTermIDs.push(childTermObject.term_id);\n } else {\n const childPosition = this.activeChildTermIDs.indexOf(childTermObject.term_id);\n this.activeChildTermIDs.splice(childPosition, 1);\n }\n if (childTermObject.active === false) {\n this.flaggedIDsForRemoval.push(childTermObject.term_id);\n }\n this.$emit('term-filter-updated', {\n 'activeTermIDs': this.activeChildTermIDs,\n 'removeTermIDs': this.flaggedIDsForRemoval\n });\n this.flaggedIDsForRemoval = [];\n },\n deactivateChildren() {\n Object.values(this.componentTerm.children).forEach(child => {\n child.active = false;\n this.activeChildTermIDs = [];\n });\n }\n },\n watch: {\n resetTerm() {\n if (this.resetTerm) {\n this.mainFilterActive = false;\n this.deactivateChildren();\n }\n }\n },\n computed: {\n mainTermVisible() {\n return this.visible && this.term.count > 0;\n },\n childListVisible() {\n return this.term.childrenTermCount > 0\n && (this.mainFilterActive || this.activeChildTermIDs.length > 0);\n }\n },\n template: `\n
  • \n {{ term.name }}\n \n
  • \n `\n });\n\n\n // Product component\n Vue.component('product-item', {\n props: {\n product: Object\n },\n computed: {\n productImage() {\n return this.product.image.has_image ? this.product.image.sizes.medium : '';\n },\n productLanguages() {\n return this.product.additional_data.languages.map(lang => lang.name).join(', ');\n }\n },\n template: `\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n });\n\n\n // Pagination button component\n Vue.component('pagination-link', {\n props: {\n page: Number,\n currentPage: Number\n },\n methods: {\n checkForPageChange(page, currentPage) {\n if (page !== currentPage) {\n this.$root.$emit('paginationChanged', page);\n }\n }\n },\n template: `\n \n \n `\n });\n\n Vue.config.devtools = true;\n\n var pub = { }; // public facing functions\n\n pub.init = function () { };\n\n return pub;\n\n}());\n","/**\n * Initialize privacy cookie and message display\n *\n * Example Javascript module with self-contained object interface.\n */\nvar privacyCookie = (function () {\n\n // Show privacy cookie message if cookie not set.\n // Hide message then set privacy cookie if message box x/close is clicked.\n\n /* eslint-disable no-new */\n new Vue({\n el: '#cookieMessage',\n data: {\n eastViewAcceptedCookie: false\n },\n methods: {\n xClick() {\n document.cookie = 'eastViewAcceptedCookie=true';\n this.eastViewAcceptedCookie = true;\n }\n },\n created() {\n const cookies = document.cookie.split('; ');\n\n for (let i = 0; i < cookies.length; i++) {\n const thisCookie = cookies[i].split('=');\n\n if (thisCookie[0] === 'eastViewAcceptedCookie') {\n this.eastViewAcceptedCookie = true;\n }\n }\n }\n });\n\n var pub = {}; // public facing functions\n\n pub.init = function () {\n\n };\n\n return pub;\n\n}());\n","/**\n * Initialize searchBar\n *\n * All scripts for the search bar functionality\n */\nvar searchBar = (function ($) {\n\n var pub = {}; // public facing functions\n\n pub.init = function () {\n const searchBarElement = $('.search-container'),\n searchToggle = $('.search-toggle'),\n siteNavElementWidth = $('.site-navigation > .container > .row > .navbar-default').width(),\n shopButtonWidth = $('.shop-button-container').width(),\n calculatedWidth = siteNavElementWidth - shopButtonWidth;\n\n let isActive = false;\n\n searchBarElement.css({\n 'width': calculatedWidth + 'px'\n });\n\n searchToggle.on('click', function(e) {\n e.stopPropagation();\n\n if (searchToggle.hasClass('active') && searchBarElement.hasClass('active')) {\n searchToggle.removeClass('active');\n searchBarElement.removeClass('active');\n isActive = false;\n } else {\n searchToggle.addClass('active');\n searchBarElement.addClass('active');\n isActive = true;\n $('input.form-control').focus();\n $('.menu-item').removeClass('open');\n }\n });\n\n // Close the search bar if clicking anywhere else on the page\n $(document).click(function(e) {\n if (e.target.id === 'search-container' || $(e.target).parents('#search-container').length) {\n return;\n } else if (isActive === true) {\n searchToggle.removeClass('active');\n searchBarElement.removeClass('active');\n isActive = false;\n }\n });\n\n //Close search bar if clicking anywhere in menu\n $('.dropdown').on('show.bs.dropdown', function(){\n if (searchToggle.hasClass('active') && searchBarElement.hasClass('active')) {\n searchToggle.removeClass('active');\n searchBarElement.removeClass('active');\n isActive = false;\n }\n })\n\n };\n\n return pub;\n\n}(jQuery));\n","const smoothScroll = (function ($) {\n\n const pub = {};\n\n pub.init = function () {\n pub._anchorScroll();\n pub._loadScroll();\n };\n\n /**\n * Handle clicking of anchor tags with hash\n * Only proceed to animate if meets criteria\n */\n pub._anchorScroll = function () {\n $('a[href*=\"#\"]')\n // Remove links that don't actually link to anything\n .not('[href=\"#\"]')\n .not('[href=\"#0\"]')\n .not('[data-toggle]')\n .click(function (event) {\n // On-page links only\n if (\n location.pathname.replace(/^\\//, '') === this.pathname.replace(/^\\//, '')\n &&\n location.hostname === this.hostname\n ) {\n // Figure out element to scroll to\n let target = $(this.hash);\n target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');\n\n if (target.length) {\n event.preventDefault();\n pub._scrollAnimate(target);\n }\n }\n });\n };\n\n /**\n * Handle page load of page with hash\n */\n pub._loadScroll = function () {\n if (!window.location.hash) {\n return false;\n }\n\n pub._scrollAnimate($(window.location.hash));\n };\n\n /**\n * Handle animation to specified target on page\n *\n * @param {object} target \n */\n pub._scrollAnimate = function(target) {\n if (!target.length) {\n return false;\n }\n\n // Figure out scrollTop amount\n const navObject = $('.site-navigation');\n const navHeight = navObject.height();\n const navOffset = navObject.position().top;\n const targetScrollTop = target.offset().top - navHeight - navOffset;\n\n $('html, body').animate({\n scrollTop: targetScrollTop\n }, 500, function () {\n // Callback after animation\n // Must change focus!\n const $target = $(target);\n $target.focus();\n if ($target.is(\":focus\")) { // Checking if the target was focused\n return false;\n } else {\n $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable\n $target.focus(); // Set focus again\n };\n });\n };\n\n return pub;\n\n})(jQuery);\n","/**\n * Custom JS Scripts\n *\n * @package AD Starter\\App\n */\n\n(function () {\n\n // Initialize Javascript modules here.\n searchBar.init();\n blog.init();\n smoothScroll.init();\n\n})();\n"]}