{"version":3,"file":"sections-calendar.d908a07e6a2d27a45b5f.js","mappings":"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","sources":["webpack://silverstripe-base/./themes/app/src/scripts/common/ajax.js","webpack://silverstripe-base/./themes/app/src/sections/calendar.js","webpack://silverstripe-base/./node_modules/nprogress/nprogress.js"],"sourcesContent":["import wretch from 'wretch'\nimport QueryStringAddon from 'wretch/addons/queryString'\n\nwretch.options({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n\nexport default wretch().addon(QueryStringAddon)\n","import { on } from 'delegated-events'\nimport qs from 'qs'\nimport flatpickr from 'flatpickr'\nimport 'flatpickr/dist/flatpickr.css'\nimport '@styles/components/datepicker.css'\nimport NProgress from 'nprogress'\nimport ajax from '@common/ajax'\n\nconst form = document.querySelector('.filter-form')\n\nconst setupCalendarField = () => {\n flatpickr(form.querySelector('.filter-date'), {\n dateFormat: 'Y-m-d',\n altInput: true,\n altFormat: 'M J',\n disableMobile: true,\n monthSelectorType: 'static',\n minDate: new Date(),\n mode: 'range',\n position: window.matchMedia('(min-width: 768px)').matches ? 'auto right' : 'auto left',\n onChange: (_, __, instance) => {\n if (!instance.isOpen) {\n handleFilterChange()\n }\n },\n onClose: (selectedDates, __, instance) => {\n if (selectedDates.length === 1) {\n setTimeout(() => {\n instance.setDate(selectedDates[0], true)\n }, 0)\n }\n },\n })\n}\n\nconst populateFilterState = () => {\n const filters = JSON.parse(form.dataset.selectedFilters)\n\n const types = ['exhibitions', 'categories', 'audiences']\n\n types.forEach((type) => {\n if (type in filters) {\n filters[type].forEach((value) => {\n const field = form.querySelector(`[value=\"${value}\"]`)\n\n if (field) {\n field.checked = true\n }\n })\n }\n })\n}\n\nconst generateUrl = (params = {}) => {\n const query = qs.stringify(params, { filter: (_, value) => value || undefined })\n const queryStr = query ? `?${query}` : ''\n\n return `${form.action}${queryStr}`\n}\n\nconst handleFilterChange = (e) => {\n e && e.preventDefault()\n\n const searchTerm = form.querySelector('.filter-search').value\n const selectedCategories = Array.from(form.querySelectorAll('.filter-category:checked'))\n const selectedAudiences = Array.from(form.querySelectorAll('.filter-audience:checked'))\n const selectedDate = form.querySelector('.filter-date[type=\"hidden\"]').value\n\n const currentParams = qs.parse(window.location.search, { ignoreQueryPrefix: true })\n\n const params = {}\n\n params.search = searchTerm\n params.categories = selectedCategories.map((x) => x.value).join('_')\n params.audiences = selectedAudiences.map((x) => x.value).join('_')\n params.date = selectedDate.replace(' to ', '_')\n\n if (currentParams.view) {\n params.view = currentParams.view\n }\n\n const url = generateUrl(params)\n\n window.history.replaceState({}, '', url)\n\n updateResults()\n}\n\nconst handleFilterClear = (e) => {\n const targetFilter = e.currentTarget.dataset.target\n\n if (targetFilter === '_all_') {\n form.querySelectorAll('input[type=\"checkbox\"]').forEach((x) => (x.checked = false))\n form.querySelectorAll('input[type=\"search\"]').forEach((x) => (x.value = null))\n\n const dateField = form.querySelector('.filter-date')\n\n if (dateField) {\n dateField._flatpickr.clear()\n }\n\n handleFilterChange()\n\n return\n }\n\n if (targetFilter === '_date_') {\n const dateField = form.querySelector('.filter-date')\n\n if (dateField) {\n dateField._flatpickr.clear()\n }\n\n handleFilterChange()\n }\n\n const targetCheckbox = form.querySelector(`input[type=\"checkbox\"][value=\"${targetFilter}\"]`)\n\n if (targetCheckbox) {\n targetCheckbox.checked = false\n handleFilterChange()\n }\n}\n\nconst handleViewToggle = (e) => {\n const toggles = document.querySelectorAll('.view-toggle')\n const groupedDates = document.querySelector('.event-grouped-dates')\n const selectedView = e.currentTarget.dataset.view\n\n groupedDates.classList.remove('as-grid', 'as-list')\n groupedDates.classList.add(`as-${selectedView}`)\n\n toggles.forEach((x) => {\n x.disabled = false\n x.setAttribute('aria-pressed', 'false')\n })\n\n e.currentTarget.setAttribute('aria-pressed', 'true')\n e.currentTarget.disabled = true\n\n const currentParams = qs.parse(window.location.search, { ignoreQueryPrefix: true })\n currentParams.view = selectedView\n\n const url = generateUrl(currentParams)\n\n window.history.replaceState({}, '', url)\n}\n\nconst updateResults = async () => {\n const pageContent = document.querySelector('[data-page-content]')\n const selectedFilters = document.querySelector('[data-page-selected-filters]')\n\n if (pageContent) {\n NProgress.start()\n pageContent.classList.add('is-loading')\n\n const res = await ajax.get(window.location.href).json()\n\n NProgress.done()\n selectedFilters.innerHTML = res.selectedFilters\n pageContent.innerHTML = res.page\n pageContent.classList.remove('is-loading')\n }\n}\n\nconst init = () => {\n populateFilterState()\n setupCalendarField()\n\n NProgress.configure({ parent: '.calendar-loading-progress' })\n\n on('change', '.filter-form input:not([type=hidden]):not([type=search])', handleFilterChange)\n on('submit', '.filter-form', handleFilterChange)\n on('click', '.clear-filter-btn', handleFilterClear)\n on('click', '.view-toggle:not([disabled])', handleViewToggle)\n on('click', '.show-filters-btn', () => {\n document.documentElement.classList.add('overflow-hidden')\n document.querySelector('.calendar-filters').classList.add('is-active')\n })\n on('click', '.hide-filters-btn', () => {\n document.documentElement.classList.remove('overflow-hidden')\n document.querySelector('.calendar-filters').classList.remove('is-active')\n })\n}\n\ninit()\n","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '