{"version":3,"sources":["webpack:///./components/pubsub/pubsub.js","webpack:///./templates lazy ^\\.\\/.*\\.hbs$ namespace object","webpack:///./components/ajaxForm/ajaxForm.js","webpack:///./components/loader/loader.js"],"names":["define","topics","hOP","hasOwnProperty","subscribe","topic","listener","call","index","push","remove","publish","info","forEach","item","undefined","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","AjaxForm","el","this","template","targetId","targetEl","syncEls","pager","requestInProgress","supportBackButton","itemSelector","useCache","cache","_init","getAttribute","document","getElementById","querySelector","split","_loadTemplates","screenreaderText","size","storeInnerHtml","loaderString","url","ajaxUrl","method","loadingMessage","indexOf","formToQuery","innerHTML","toLowerCase","_pathchange","replace","setAttribute","getTimestamp","axios","headers","response","status","ct","_renderHtml","data","_renderJson","alert","catch","doc","DOMParser","parseFromString","newPager","newItems","querySelectorAll","i","length","appendChild","firstLink","focus","classList","add","_syncElementsHtml","pubsub","newEl","oldItems","html","pagerUrl","insertAdjacentHTML","_syncElementsJson","syncWith","objectByString","templates","loadedTemplates","tpl","_initEvents","j","obj","_loadTemplate","callback","default","hasHistorySupport","window","history","pushState","replaceState","addEventListener","event","preventDefault","_load","setTimeout"],"mappings":"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","file":"partial.ajaxForm.js","sourcesContent":["define([], function() {\n\t/**\n\t * Publish / Subscribe\n\t * A event publish/subscribe widget.\n\t * @version 2.0.0\n\t * @see {@link https://davidwalsh.name/pubsub-javascript}\n\t * @exports pubsub\n\t */\n\tvar pubsub = (function() {\n\t\tvar topics = {},\n\t\t\thOP = topics.hasOwnProperty;\n\n\t\treturn {\n\t\t\tsubscribe: function(topic, listener) {\n\t\t\t\t// Create the topic's object if not yet created\n\t\t\t\tif (!hOP.call(topics, topic)) {\n\t\t\t\t\ttopics[topic] = [];\n\t\t\t\t}\n\n\t\t\t\t// Add the listener to queue\n\t\t\t\tvar index = topics[topic].push(listener) - 1;\n\n\t\t\t\t// Provide handle back for removal of topic\n\t\t\t\treturn {\n\t\t\t\t\tremove: function() {\n\t\t\t\t\t\tdelete topics[topic][index];\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t\tpublish: function(topic, info) {\n\t\t\t\t// If the topic doesn't exist, or there's no listeners in queue, just leave\n\t\t\t\tif (!hOP.call(topics, topic)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Cycle through topics queue, fire!\n\t\t\t\ttopics[topic].forEach(function(item) {\n\t\t\t\t\titem(info !== undefined ? info : {});\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t})();\n\n\treturn pubsub;\n});\n","var map = {\n\t\"./member-filters.hbs\": [\n\t\t59,\n\t\t4\n\t],\n\t\"./member-list.hbs\": [\n\t\t60,\n\t\t5\n\t],\n\t\"./news-list.hbs\": [\n\t\t61,\n\t\t6\n\t],\n\t\"./pager-list.hbs\": [\n\t\t62,\n\t\t7\n\t],\n\t\"./search-filters.hbs\": [\n\t\t63,\n\t\t8\n\t],\n\t\"./search-list.hbs\": [\n\t\t64,\n\t\t9\n\t],\n\t\"./search-pagination.hbs\": [\n\t\t65,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 58;\nmodule.exports = webpackAsyncContext;","import {\n\tformToQuery,\n\tobjectByString,\n\tgetTimestamp,\n\thasHistorySupport,\n} from '../utilities/utilities';\nimport { loadingStart } from '../loader/loader';\nimport pubsub from '../pubsub/pubsub';\nimport axios from 'axios';\n\n/**\n * AjaxForm\n * A plugin that add ajax-request to forms.\n * @version 3.0.0\n * @exports AjaxForm\n */\nexport default class AjaxForm {\n\t/**\n\t * Constructor\n\t * @param {Object} el - A DOM node.\n\t * @public\n\t */\n\tconstructor(el) {\n\t\t/** Placeholder for base DOM element. */\n\t\tthis.el = el;\n\n\t\t/** Placeholder for template (used if this plugin is used with json). */\n\t\tthis.template = null;\n\n\t\t/** Target DOM id (the list). */\n\t\tthis.targetId = null;\n\n\t\t/** Placeholder for target DOM element (the list). */\n\t\tthis.targetEl = null;\n\n\t\t/** Placeholder for array of DOM elements that should be updated on render. */\n\t\tthis.syncEls = null;\n\n\t\t/** Placeholder for pager DOM element. */\n\t\tthis.pager = null;\n\n\t\t/** Boolean to indicate if there are any ajax-request in progress. */\n\t\tthis.requestInProgress = false;\n\n\t\t/** 1 =DOESN'T WORK CORRECTLY RIGHT NOW. back button navigates between searches. 0 = back button navigates to previous, referring page. */\n\t\tthis.supportBackButton = 0;\n\n\t\t/** Selector for items. */\n\t\tthis.itemSelector = 'article';\n\n\t\t/** Boolean indicating if to use cache (experimental). */\n\t\tthis.useCache = false;\n\n\t\t/** Array which will hold the cache. */\n\t\tthis.cache = [];\n\n\t\tthis._init();\n\t}\n\n\t/**\n\t * The initialization function for this module.\n\t * @public\n\t */\n\t_init() {\n\t\tthis.targetId = this.el.getAttribute('aria-controls');\n\t\tthis.targetEl = document.getElementById(this.targetId);\n\t\tthis.pager = document.querySelector('[data-type=\"loadMore\"]');\n\n\t\tif (this.el.getAttribute('data-cache') === 'true') {\n\t\t\tthis.useCache = true;\n\t\t}\n\n\t\tif (this.targetEl === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.el.getAttribute('data-itemselector') !== null) {\n\t\t\tthis.itemSelector = this.el.getAttribute('data-itemselector');\n\t\t}\n\n\t\tif (this.el.getAttribute('data-sync') !== null) {\n\t\t\tthis.syncEls = this.el.getAttribute('data-sync').split('|');\n\t\t}\n\n\t\tthis._loadTemplates();\n\t}\n\n\t/**\n\t * Function that loads content through ajax.\n\t * @private\n\t */\n\t_load() {\n\t\tlet url = this.el.getAttribute('action'),\n\t\t\tajaxUrl = this.el.getAttribute('data-ajaxurl'),\n\t\t\tmethod = this.el.getAttribute('method') || 'GET',\n\t\t\tloadingMessage = this.el.getAttribute('data-loading-message') || 'Laddar';\n\n\t\tif (this.requestInProgress === false) {\n\t\t\turl =\n\t\t\t\turl +\n\t\t\t\t(url.indexOf('?') !== -1\n\t\t\t\t\t? '&' + formToQuery(this.el)\n\t\t\t\t\t: '?' + formToQuery(this.el));\n\n\t\t\tif (this.useCache === true && this.cache[url] !== undefined) {\n\t\t\t\tthis.targetEl.innerHTML = this.cache[url];\n\t\t\t\tif (method.toLowerCase() === 'get') {\n\t\t\t\t\tthis._pathchange(url);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (method.toLowerCase() === 'get') {\n\t\t\t\tthis._pathchange(url);\n\t\t\t}\n\t\t\tthis.requestInProgress = true;\n\t\t\tloadingStart(this.targetEl, loadingMessage, 'large');\n\n\t\t\t// Fixes a bug in Chrome\n\t\t\turl =\n\t\t\t\turl.indexOf('?') === -1\n\t\t\t\t\t? url + '?_=' + getTimestamp()\n\t\t\t\t\t: url + '&_=' + getTimestamp();\n\n\t\t\taxios({\n\t\t\t\turl: ajaxUrl || url,\n\t\t\t\tmethod: method,\n\t\t\t\theaders: {\n\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t\t},\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.status === 200) {\n\t\t\t\t\t\tlet ct = response.headers['content-type'] || '';\n\n\t\t\t\t\t\tthis.targetEl.innerHTML = '';\n\n\t\t\t\t\t\tif (ct.indexOf('html') > -1) {\n\t\t\t\t\t\t\tthis._renderHtml(response.data, url);\n\t\t\t\t\t\t} else if (ct.indexOf('json') > -1) {\n\t\t\t\t\t\t\tthis._renderJson(response.data, url);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.requestInProgress = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert('An error occured, try again later.');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {});\n\t\t}\n\t}\n\n\t/**\n\t * Function that renders new html-data.\n\t * @param {String} data - New data as a string of html.\n\t * @param {String} url - The requested url as a string.\n\t * @private\n\t */\n\t_renderHtml(data, url) {\n\t\tlet parser = new DOMParser(),\n\t\t\tdoc = parser.parseFromString(data, 'text/html'),\n\t\t\tnewPager = doc.querySelector('[data-type=\"loadMore\"]'),\n\t\t\tnewItems = doc.querySelectorAll(\n\t\t\t\t'#' + this.targetId + ' ' + this.itemSelector\n\t\t\t);\n\n\t\tfor (let i = 0; i < newItems.length; i++) {\n\t\t\tthis.targetEl.appendChild(newItems[i]);\n\n\t\t\tif (i === 0) {\n\t\t\t\tlet firstLink = newItems[i].querySelector('a');\n\n\t\t\t\tif (firstLink !== null) {\n\t\t\t\t\tfirstLink.focus();\n\t\t\t\t} else {\n\t\t\t\t\tnewItems[i].focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.pager !== null) {\n\t\t\tif (newPager === null) {\n\t\t\t\tthis.pager.classList.add('btn--hidden');\n\t\t\t} else {\n\t\t\t\tthis.pager.classList.remove('btn--hidden');\n\t\t\t\tthis.pager.setAttribute('href', newPager.getAttribute('href'));\n\t\t\t}\n\t\t}\n\n\t\tif (this.syncEls !== null) {\n\t\t\tthis._syncElementsHtml(doc);\n\t\t}\n\n\t\tif (this.useCache === true) {\n\t\t\tthis.cache[url] = this.targetEl.innerHTML;\n\t\t}\n\n\t\tpubsub.publish('/ajaxForm/list/updated');\n\t}\n\n\t/**\n\t * Function that sync other elements after update (with HTML-data).\n\t * @param {String} data - New data as a string of json.\n\t * @private\n\t */\n\t_syncElementsHtml(doc) {\n\t\tfor (let i = 0; i < this.syncEls.length; i++) {\n\t\t\tlet el = document.getElementById(this.syncEls[i]),\n\t\t\t\tnewEl = doc.querySelector('#' + this.syncEls[i]);\n\n\t\t\tif (newEl !== null) {\n\t\t\t\tel.innerHTML = newEl.innerHTML;\n\t\t\t}\n\t\t}\n\n\t\tpubsub.publish('/ajaxForm/sync/updated');\n\t}\n\n\t/**\n\t * Function that renders new json-data.\n\t * @param {String} data - New data as a string of json.\n\t * @param {String} url - The requested url as a string.\n\t * @private\n\t */\n\t_renderJson(data, url) {\n\t\tlet html = '',\n\t\t\toldItems = null,\n\t\t\tnewItems = null,\n\t\t\tfirstLink;\n\n\t\ttry {\n\t\t\thtml = this.template(data);\n\t\t} catch (e) {}\n\n\t\tif (this.pager !== null) {\n\t\t\tif (\n\t\t\t\tdata.pager === undefined ||\n\t\t\t\tdata.pager === null ||\n\t\t\t\tdata.pager === ''\n\t\t\t) {\n\t\t\t\tthis.pager.classList.add('btn--hidden');\n\t\t\t} else {\n\t\t\t\tthis.pager.classList.remove('btn--hidden');\n\t\t\t\tthis.pager.setAttribute('href', data.pager.pagerUrl);\n\t\t\t}\n\t\t}\n\n\t\toldItems = this.targetEl.querySelectorAll(this.itemSelector);\n\t\tthis.targetEl.insertAdjacentHTML('BeforeEnd', html);\n\t\tnewItems = this.targetEl.querySelectorAll(this.itemSelector);\n\n\t\tif (this.syncEls !== null) {\n\t\t\tthis._syncElementsJson(data);\n\t\t}\n\n\t\tif (\n\t\t\tnewItems[oldItems.length] !== null &&\n\t\t\tnewItems[oldItems.length] !== undefined\n\t\t) {\n\t\t\tfirstLink = newItems[oldItems.length].querySelector('a');\n\t\t\tif (firstLink !== null) {\n\t\t\t\tfirstLink.focus();\n\t\t\t} else {\n\t\t\t\tnewItems[oldItems.length].focus();\n\t\t\t}\n\t\t}\n\n\t\tif (this.useCache === true) {\n\t\t\tthis.cache[url] = this.targetEl.innerHTML;\n\t\t}\n\n\t\tpubsub.publish('/ajaxForm/list/updated');\n\t}\n\n\t/**\n\t * Function that sync other elements after update (with JSON-data).\n\t * @param {String} data - New data as a string of json.\n\t * @private\n\t */\n\t_syncElementsJson(data) {\n\t\tfor (let i = 0; i < this.syncEls.length; i++) {\n\t\t\tlet el = document.getElementById(this.syncEls[i]),\n\t\t\t\tsyncWith = el.getAttribute('data-sync-with'),\n\t\t\t\ttemplate = el.getAttribute('data-sync-template');\n\n\t\t\tif (template !== null) {\n\t\t\t\tif (syncWith !== null) {\n\t\t\t\t\tel.innerHTML = '';\n\t\t\t\t\tel.insertAdjacentHTML(\n\t\t\t\t\t\t'BeforeEnd',\n\t\t\t\t\t\tel.template(objectByString(data, syncWith))\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tel.innerHTML = '';\n\t\t\t\t\tel.insertAdjacentHTML('BeforeEnd', el.template(data));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (syncWith !== null) {\n\t\t\t\tel.innerHTML = '';\n\t\t\t\tel.insertAdjacentHTML('BeforeEnd', objectByString(data, syncWith));\n\t\t\t}\n\t\t}\n\t\tpubsub.publish('/ajaxForm/sync/updated');\n\t}\n\n\t/**\n\t * Function that loads all template-files needed by the ajaxForm.\n\t * @private\n\t */\n\t_loadTemplates() {\n\t\tlet templates = [],\n\t\t\tloadedTemplates = 0;\n\n\t\t// Get \"base\" template for the list\n\t\tif (this.el.getAttribute('data-template') !== null) {\n\t\t\ttemplates.push({ el: this, tpl: this.el.getAttribute('data-template') });\n\t\t}\n\n\t\t// See if we have any other elements that wants to be synced with a template.\n\n if (this.el.getAttribute('data-sync-template') !== null) {\n\n\t\t\tif (this.syncEls !== null) {\n\t\t\t\tfor (let i = 0; i < this.syncEls.length; i++) {\n\t\t\t\t\tlet el = document.getElementById(this.syncEls[i]),\n\t\t\t\t\t\ttemplate = el.getAttribute('data-sync-template');\n\n\t\t\t\t\tif (template !== null) {\n\t\t\t\t\t\ttemplates.push({ el: el, tpl: template });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\t// Initiate if we have no templates, otherwise we initiate after all templates has been loaded.\n\t\tif (templates.length === 0) {\n\t\t\tthis._initEvents();\n\t\t} else {\n\t\t\tfor (let j = 0; j < templates.length; j++) {\n\t\t\t\tlet obj = templates[j];\n\n\t\t\t\tthis._loadTemplate(obj.el, obj.tpl, () => {\n\t\t\t\t\tloadedTemplates += 1;\n\n\t\t\t\t\tif (loadedTemplates === templates.length) {\n\t\t\t\t\t\tthis._initEvents();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Function that loads a single template-file for an element.\n\t * @param {Object} el - A DOM node which use the template.\n\t * @param {String} template - The template name.\n\t * @param {Object} callback - An callback function after the template has been loaded.\n\t * @private\n\t */\n\t_loadTemplate(el, template, callback) {\n\t\timport(/* webpackChunkName: \"template\" */ '../../templates/' +\n\t\t\ttemplate +\n\t\t\t'.hbs').then(tpl => {\n\t\t\tel.template = tpl.default;\n\t\t\tcallback();\n\t\t});\n\t}\n\n\t/**\n\t * Function that updates the url.\n\t * @private\n\t */\n\t_pathchange(url) {\n\t\tif (hasHistorySupport()) {\n\t\t\tif (this.supportBackButton === 1) {\n\t\t\t\twindow.history.pushState(null, null, url);\n\t\t\t} else {\n\t\t\t\twindow.history.replaceState(null, null, url);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Initiates events.\n\t * @private\n\t */\n\t_initEvents() {\n\t\tthis.el.addEventListener('submit', event => {\n\t\t\tevent.preventDefault();\n\t\t\tthis._load();\n\t\t});\n\n\t\tpubsub.subscribe('/ajaxForm/load', () => {\n\t\t\tthis._load();\n\t\t});\n\n\t\tpubsub.subscribe('/ajaxForm/sync/update/html', doc => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._syncElementsHtml(doc);\n\t\t\t}, 500);\n\t\t});\n\n\t\tpubsub.subscribe('/ajaxForm/sync/update/json', data => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._syncElementsJson(data);\n\t\t\t}, 500);\n\t\t});\n\t}\n}\n","/**\n * Loader\n * A plugin that displays a loader in a DOM node.\n * @version 3.0.0\n */\n\nconst loaderStr =\n\t'${screenreaderText}';\nconst loaderLargeStr =\n\t'${screenreaderText}';\nconst loaderSmallStr =\n\t'${screenreaderText}';\n\n/**\n * Start loading.\n * @param {Object} el - A DOM node.\n * @param {String} screenreaderText - A string containing a text for screenreaders.\n * @param {String} size - The size as a string ('large' for a large loader, 'small' för a small loader, anything else for a standard loader).\n * @public\n */\nexport const loadingStart = (el, screenreaderText, size, storeInnerHtml) => {\n\tlet loaderString = loaderStr;\n\n\tif (screenreaderText === undefined) {\n\t\tscreenreaderText = '';\n\t}\n\n\tif (size !== undefined && size === 'small') {\n\t\tloaderString = loaderSmallStr;\n\t} else if (size !== undefined && size === 'large') {\n\t\tloaderString = loaderLargeStr;\n\t}\n\n\tloaderString = loaderString.replace('${screenreaderText}', screenreaderText);\n\n\tif (storeInnerHtml !== undefined) {\n\t\tel.setAttribute('data-innerhtml', el.innerHTML);\n\t}\n\n\tel.innerHTML = loaderString;\n};\n\n/**\n * Stop loading.\n * @param {Object} el - A DOM node.\n * @public\n */\nexport const loadingEnd = el => {\n\tlet oldHtml = el.getAttribute('data-innerhtml');\n\n\tif (oldHtml !== null) {\n\t\tel.innerHTML = el.getAttribute('data-innerhtml');\n\t}\n};\n"],"sourceRoot":""}