{"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: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n"],"names":["wretch","options","headers","addon","QueryStringAddon","form","document","querySelector","generateUrl","params","arguments","length","undefined","query","qs","filter","_","value","queryStr","action","handleFilterChange","e","preventDefault","searchTerm","selectedCategories","Array","from","querySelectorAll","selectedAudiences","selectedDate","currentParams","window","location","search","ignoreQueryPrefix","categories","map","x","join","audiences","date","replace","view","url","history","replaceState","updateResults","async","pageContent","selectedFilters","NProgress","classList","add","res","ajax","get","href","json","innerHTML","page","remove","populateFilterState","filters","JSON","parse","dataset","forEach","type","field","checked","flatpickr","dateFormat","altInput","altFormat","disableMobile","monthSelectorType","minDate","Date","mode","position","matchMedia","matches","onChange","__","instance","isOpen","onClose","selectedDates","setTimeout","setDate","parent","on","targetFilter","currentTarget","target","dateField","_flatpickr","clear","targetCheckbox","toggles","groupedDates","selectedView","disabled","setAttribute","documentElement","initial","current","Settings","settings","minimum","easing","positionUsing","speed","trickle","trickleRate","trickleSpeed","showSpinner","barSelector","spinnerSelector","template","clamp","n","min","max","toBarPerc","configure","key","hasOwnProperty","this","status","set","started","isStarted","progress","render","bar","ease","offsetWidth","queue","next","getPositioningCSS","css","barCSS","transform","transition","barPositionCSS","opacity","start","work","done","force","inc","Math","random","amount","promise","$promise","state","always","fromStart","isRendered","getElementById","addClass","createElement","id","spinner","perc","removeElement","body","appendChild","removeClass","bodyStyle","style","vendorPrefix","pending","fn","shift","push","cssPrefixes","cssProps","getStyleProp","name","match","letter","toUpperCase","vendorName","i","capName","charAt","slice","getVendorProp","applyCss","element","prop","properties","args","hasClass","indexOf","oldList","newList","className","substring","parentNode","removeChild"],"sourceRoot":""}