{"version":3,"file":"gob.cl.js","sources":["../../src/js/core/Plugin.js","../../src/js/plugins/Toolbar.js","../../src/js/plugins/PseudoBackground.js","../../src/js/core/functions/accent-fold.js","../../src/js/plugins/Search.js","../../src/js/plugins/Contingency.js","../../src/js/plugins/Onboarding.js","../../src/js/behaviors/smooth-scroll.js","../../src/js/behaviors/cover-background.js","../../src/js/behaviors/redirecting.js","../../src/js/context/create-inifinite-scroll.js","../../src/js/context/create-context.js","../../src/js/app.js"],"sourcesContent":["/**\n * Plugin base class\n * @flow\n */\nexport interface PluginBehaviors {\n init(): void;\n}\n\nexport default class Plugin {\n $element: JQuery;\n options: Object;\n\n static code: string;\n static key: string = '';\n static defaults: Object = {};\n\n constructor(element: string, options: Object) {\n this.$element = $(element);\n\n this.options = {\n ...this.constructor.defaults,\n ...options,\n ...this.$element.data()\n };\n\n this.init();\n }\n\n // eslint-disable-next-line class-methods-use-this\n init() {\n throw new Error('You have to implement the method init!');\n }\n\n // eslint-disable-next-line class-methods-use-this\n update() {}\n\n setOptions(options: Object) {\n this.options = {\n ...this.options,\n ...options\n };\n this.update();\n }\n}\n\nexport const register = (Descendant: Class) => {\n $.fn[Descendant.code] = function pluginGenerator(options) {\n return this.each(function elementFinder() {\n if (!$.data(this, Descendant.key)) {\n $.data(this, Descendant.key, new Descendant(this, options));\n } else {\n $.data(this, Descendant.key).setOptions(options);\n }\n });\n };\n};\n","/**\n * JQuery Plugin (Toolbar a11Y).\n * Handle A- A+\n *\n * Singleton widget.\n * @flow\n */\nimport Plugin, { register } from '../core/Plugin';\nimport type { PluginBehaviors } from '../core/Plugin';\n\nclass Toolbar extends Plugin implements PluginBehaviors {\n static code = 'toolbar';\n static key = 'gl.toolbar';\n\n static instance: Toolbar;\n\n static defaults = {\n value: '16px',\n index: 0,\n values: ['16px', '20px', '24px'],\n classes: ['a11y-font-0', 'a11y-font-1', 'a11y-font-2'],\n contrast: 'a11y-contrast'\n };\n\n static storageKey = 'gob.cl:toolbar';\n static changeEvent = 'change.gl.toolbar';\n\n static buttons = {\n contrast: '.toolbar-behavior-contrast',\n decrease: '.toolbar-behavior-decrease',\n increase: '.toolbar-behavior-increase',\n toggler: '.toolbar-toggler'\n };\n\n static defaultExpand = 'navbar-expand-lg';\n\n static storageKeyPaths = {\n contrast: `${Toolbar.storageKey}.contrast`,\n index: `${Toolbar.storageKey}.index`,\n expand: `${Toolbar.storageKey}.expand`\n };\n\n constructor(element: string, options: Object) {\n if (!Toolbar.instance) {\n super(element, options);\n Toolbar.instance = this;\n }\n return Toolbar.instance;\n }\n\n init() {\n this.options.index = this.getIndex(); // get index from the current value.\n\n this.update(); // and update UI.\n\n const $html = $('html');\n const $toolbar = $('.toolbar'); // Use this.$element for non global behavior\n\n const $prev = $(Toolbar.buttons.decrease); // Use this.$element.find for non global behavior\n const $next = $(Toolbar.buttons.increase); // Use this.$element.find for non global behavior\n const $contrast = $(Toolbar.buttons.contrast); // Use this.$element.find for non global behavior\n const $toggle = $(Toolbar.buttons.toggler); // Use this.$element.find for non global behavior\n\n const storedContrast = !!localStorage.getItem(Toolbar.storageKeyPaths.contrast);\n\n $html.toggleClass(this.options.contrast, storedContrast);\n\n $contrast.on('click', (e) => {\n e.preventDefault();\n $(e.currentTarget).toggleClass('active');\n $html.toggleClass(this.options.contrast);\n if ($html.hasClass(this.options.contrast)) {\n localStorage.setItem(Toolbar.storageKeyPaths.contrast, 'active');\n } else {\n localStorage.removeItem(Toolbar.storageKeyPaths.contrast);\n }\n });\n\n // show / hide - mobile\n $toggle.on('click', (e) => {\n e.preventDefault();\n $toolbar.toggleClass('active');\n });\n\n $prev.on('click', (e) => {\n e.preventDefault();\n if (!$prev.hasClass('disabled') && this.options.index > 0) {\n this.options.index = this.getIndex() - 1;\n this.options.value = this.options.values[this.options.index];\n\n this.update();\n this.$element.trigger(Toolbar.changeEvent, this.options.value);\n }\n });\n\n $next.on('click', (e) => {\n e.preventDefault();\n if (!$next.hasClass('disabled') && this.options.index < this.options.values.length) {\n this.options.index = this.getIndex() + 1;\n this.options.value = this.options.values[this.options.index];\n\n this.update();\n this.$element.trigger(Toolbar.changeEvent, this.options.value);\n }\n });\n }\n\n // #\n getIndex() {\n return (this.options.values || []).indexOf(this.options.value);\n }\n\n // #\n update() {\n $('html')\n .css({\n fontSize: this.options.value\n })\n .removeClass(this.options.classes.join(' '))\n .addClass(this.options.classes[this.options.index]);\n\n localStorage.setItem(Toolbar.storageKeyPaths.index, this.options.index);\n\n const $prev = $(Toolbar.buttons.decrease); // Use this.$element.find for non global behavior\n const $next = $(Toolbar.buttons.increase); // Use this.$element.find for non global behavior\n\n $prev.removeClass('disabled');\n $next.removeClass('disabled');\n\n if (this.options.index === 0) {\n $prev.addClass('disabled');\n }\n\n if (this.options.index === this.options.values.length - 1) {\n $next.addClass('disabled');\n }\n\n this.updateNavbar();\n }\n\n updateNavbar() {\n const $nav = $('.navbar');\n\n let navbarExpandClass = localStorage.getItem(Toolbar.storageKeyPaths.expand);\n if (!navbarExpandClass) {\n navbarExpandClass = $nav\n .attr('class')\n .split(' ')\n .find(item => /navbar-expand-*/.test(item)) || Toolbar.defaultExpand;\n\n localStorage\n .setItem(Toolbar.storageKeyPaths.expand, navbarExpandClass);\n }\n\n if (this.options.index === 0) {\n $nav.addClass(localStorage.getItem(Toolbar.storageKeyPaths.expand) || Toolbar.defaultExpand);\n }\n\n if (this.options.index > 0) {\n $nav.removeClass(navbarExpandClass);\n }\n }\n}\n\nregister(Toolbar);\n\nif (!window.rsConf) {\n window.rsConf = {\n general: {\n usePost: true\n },\n ui: {}\n };\n}\n\n// TODO: refactor this.\n\nif (!window.rsConf.ui) { window.rsConf.ui = {}; }\nwindow.rsConf.ui.rsbtnClass = 'rsbtn-gobcl-skin';\nwindow.rsConf.ui.player = [\n '',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ''\n];\n","/**\n * JQuery Plugin (Pseudo Background).\n * @flow\n */\nimport Plugin, { register } from '../core/Plugin';\nimport type { PluginBehaviors } from '../core/Plugin';\n\nclass PseudoBackground extends Plugin implements PluginBehaviors {\n static code = 'pseudoBackground';\n static key = 'gl.pseudo-background';\n\n init() {\n const $source = this.$element.find('.pseudo-src').addClass('d-none');\n\n this.$element.css('background-image', `url(\"${$source.attr('src')}\")`);\n }\n}\n\nregister(PseudoBackground);\n","/* eslint-disable quote-props */\nconst accentMap = {\n 'ẚ': 'a',\n 'Á': 'a',\n 'á': 'a',\n 'À': 'a',\n 'à': 'a',\n 'Ă': 'a',\n 'ă': 'a',\n 'Ắ': 'a',\n 'ắ': 'a',\n 'Ằ': 'a',\n 'ằ': 'a',\n 'Ẵ': 'a',\n 'ẵ': 'a',\n 'Ẳ': 'a',\n 'ẳ': 'a',\n 'Â': 'a',\n 'â': 'a',\n 'Ấ': 'a',\n 'ấ': 'a',\n 'Ầ': 'a',\n 'ầ': 'a',\n 'Ẫ': 'a',\n 'ẫ': 'a',\n 'Ẩ': 'a',\n 'ẩ': 'a',\n 'Ǎ': 'a',\n 'ǎ': 'a',\n 'Å': 'a',\n 'å': 'a',\n 'Ǻ': 'a',\n 'ǻ': 'a',\n 'Ä': 'a',\n 'ä': 'a',\n 'Ǟ': 'a',\n 'ǟ': 'a',\n 'Ã': 'a',\n 'ã': 'a',\n 'Ȧ': 'a',\n 'ȧ': 'a',\n 'Ǡ': 'a',\n 'ǡ': 'a',\n 'Ą': 'a',\n 'ą': 'a',\n 'Ā': 'a',\n 'ā': 'a',\n 'Ả': 'a',\n 'ả': 'a',\n 'Ȁ': 'a',\n 'ȁ': 'a',\n 'Ȃ': 'a',\n 'ȃ': 'a',\n 'Ạ': 'a',\n 'ạ': 'a',\n 'Ặ': 'a',\n 'ặ': 'a',\n 'Ậ': 'a',\n 'ậ': 'a',\n 'Ḁ': 'a',\n 'ḁ': 'a',\n 'Ⱥ': 'a',\n 'ⱥ': 'a',\n 'Ǽ': 'a',\n 'ǽ': 'a',\n 'Ǣ': 'a',\n 'ǣ': 'a',\n 'Ḃ': 'b',\n 'ḃ': 'b',\n 'Ḅ': 'b',\n 'ḅ': 'b',\n 'Ḇ': 'b',\n 'ḇ': 'b',\n 'Ƀ': 'b',\n 'ƀ': 'b',\n 'ᵬ': 'b',\n 'Ɓ': 'b',\n 'ɓ': 'b',\n 'Ƃ': 'b',\n 'ƃ': 'b',\n 'Ć': 'c',\n 'ć': 'c',\n 'Ĉ': 'c',\n 'ĉ': 'c',\n 'Č': 'c',\n 'č': 'c',\n 'Ċ': 'c',\n 'ċ': 'c',\n 'Ç': 'c',\n 'ç': 'c',\n 'Ḉ': 'c',\n 'ḉ': 'c',\n 'Ȼ': 'c',\n 'ȼ': 'c',\n 'Ƈ': 'c',\n 'ƈ': 'c',\n 'ɕ': 'c',\n 'Ď': 'd',\n 'ď': 'd',\n 'Ḋ': 'd',\n 'ḋ': 'd',\n 'Ḑ': 'd',\n 'ḑ': 'd',\n 'Ḍ': 'd',\n 'ḍ': 'd',\n 'Ḓ': 'd',\n 'ḓ': 'd',\n 'Ḏ': 'd',\n 'ḏ': 'd',\n 'Đ': 'd',\n 'đ': 'd',\n 'ᵭ': 'd',\n 'Ɖ': 'd',\n 'ɖ': 'd',\n 'Ɗ': 'd',\n 'ɗ': 'd',\n 'Ƌ': 'd',\n 'ƌ': 'd',\n 'ȡ': 'd',\n 'ð': 'd',\n 'É': 'e',\n 'Ə': 'e',\n 'Ǝ': 'e',\n 'ǝ': 'e',\n 'é': 'e',\n 'È': 'e',\n 'è': 'e',\n 'Ĕ': 'e',\n 'ĕ': 'e',\n 'Ê': 'e',\n 'ê': 'e',\n 'Ế': 'e',\n 'ế': 'e',\n 'Ề': 'e',\n 'ề': 'e',\n 'Ễ': 'e',\n 'ễ': 'e',\n 'Ể': 'e',\n 'ể': 'e',\n 'Ě': 'e',\n 'ě': 'e',\n 'Ë': 'e',\n 'ë': 'e',\n 'Ẽ': 'e',\n 'ẽ': 'e',\n 'Ė': 'e',\n 'ė': 'e',\n 'Ȩ': 'e',\n 'ȩ': 'e',\n 'Ḝ': 'e',\n 'ḝ': 'e',\n 'Ę': 'e',\n 'ę': 'e',\n 'Ē': 'e',\n 'ē': 'e',\n 'Ḗ': 'e',\n 'ḗ': 'e',\n 'Ḕ': 'e',\n 'ḕ': 'e',\n 'Ẻ': 'e',\n 'ẻ': 'e',\n 'Ȅ': 'e',\n 'ȅ': 'e',\n 'Ȇ': 'e',\n 'ȇ': 'e',\n 'Ẹ': 'e',\n 'ẹ': 'e',\n 'Ệ': 'e',\n 'ệ': 'e',\n 'Ḙ': 'e',\n 'ḙ': 'e',\n 'Ḛ': 'e',\n 'ḛ': 'e',\n 'Ɇ': 'e',\n 'ɇ': 'e',\n 'ɚ': 'e',\n 'ɝ': 'e',\n 'Ḟ': 'f',\n 'ḟ': 'f',\n 'ᵮ': 'f',\n 'Ƒ': 'f',\n 'ƒ': 'f',\n 'Ǵ': 'g',\n 'ǵ': 'g',\n 'Ğ': 'g',\n 'ğ': 'g',\n 'Ĝ': 'g',\n 'ĝ': 'g',\n 'Ǧ': 'g',\n 'ǧ': 'g',\n 'Ġ': 'g',\n 'ġ': 'g',\n 'Ģ': 'g',\n 'ģ': 'g',\n 'Ḡ': 'g',\n 'ḡ': 'g',\n 'Ǥ': 'g',\n 'ǥ': 'g',\n 'Ɠ': 'g',\n 'ɠ': 'g',\n 'Ĥ': 'h',\n 'ĥ': 'h',\n 'Ȟ': 'h',\n 'ȟ': 'h',\n 'Ḧ': 'h',\n 'ḧ': 'h',\n 'Ḣ': 'h',\n 'ḣ': 'h',\n 'Ḩ': 'h',\n 'ḩ': 'h',\n 'Ḥ': 'h',\n 'ḥ': 'h',\n 'Ḫ': 'h',\n 'ḫ': 'h',\n 'H': 'h',\n '̱': 'h',\n 'ẖ': 'h',\n 'Ħ': 'h',\n 'ħ': 'h',\n 'Ⱨ': 'h',\n 'ⱨ': 'h',\n 'Í': 'i',\n 'í': 'i',\n 'Ì': 'i',\n 'ì': 'i',\n 'Ĭ': 'i',\n 'ĭ': 'i',\n 'Î': 'i',\n 'î': 'i',\n 'Ǐ': 'i',\n 'ǐ': 'i',\n 'Ï': 'i',\n 'ï': 'i',\n 'Ḯ': 'i',\n 'ḯ': 'i',\n 'Ĩ': 'i',\n 'ĩ': 'i',\n 'İ': 'i',\n 'i': 'i',\n 'Į': 'i',\n 'į': 'i',\n 'Ī': 'i',\n 'ī': 'i',\n 'Ỉ': 'i',\n 'ỉ': 'i',\n 'Ȉ': 'i',\n 'ȉ': 'i',\n 'Ȋ': 'i',\n 'ȋ': 'i',\n 'Ị': 'i',\n 'ị': 'i',\n 'Ḭ': 'i',\n 'ḭ': 'i',\n 'I': 'i',\n 'ı': 'i',\n 'Ɨ': 'i',\n 'ɨ': 'i',\n 'Ĵ': 'j',\n 'ĵ': 'j',\n 'J': 'j',\n '̌': 'j',\n 'ǰ': 'j',\n 'ȷ': 'j',\n 'Ɉ': 'j',\n 'ɉ': 'j',\n 'ʝ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'Ḱ': 'k',\n 'ḱ': 'k',\n 'Ǩ': 'k',\n 'ǩ': 'k',\n 'Ķ': 'k',\n 'ķ': 'k',\n 'Ḳ': 'k',\n 'ḳ': 'k',\n 'Ḵ': 'k',\n 'ḵ': 'k',\n 'Ƙ': 'k',\n 'ƙ': 'k',\n 'Ⱪ': 'k',\n 'ⱪ': 'k',\n 'Ĺ': 'a',\n 'ĺ': 'l',\n 'Ľ': 'l',\n 'ľ': 'l',\n 'Ļ': 'l',\n 'ļ': 'l',\n 'Ḷ': 'l',\n 'ḷ': 'l',\n 'Ḹ': 'l',\n 'ḹ': 'l',\n 'Ḽ': 'l',\n 'ḽ': 'l',\n 'Ḻ': 'l',\n 'ḻ': 'l',\n 'ł': 'l',\n 'Ł': 'l',\n '̣': 'l',\n 'Ŀ': 'l',\n 'ŀ': 'l',\n 'Ƚ': 'l',\n 'ƚ': 'l',\n 'Ⱡ': 'l',\n 'ⱡ': 'l',\n 'Ɫ': 'l',\n 'ɫ': 'l',\n 'ɬ': 'l',\n 'ɭ': 'l',\n 'ȴ': 'l',\n 'Ḿ': 'm',\n 'ḿ': 'm',\n 'Ṁ': 'm',\n 'ṁ': 'm',\n 'Ṃ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'Ń': 'n',\n 'ń': 'n',\n 'Ǹ': 'n',\n 'ǹ': 'n',\n 'Ň': 'n',\n 'ň': 'n',\n 'Ñ': 'n',\n 'ñ': 'n',\n 'Ṅ': 'n',\n 'ṅ': 'n',\n 'Ņ': 'n',\n 'ņ': 'n',\n 'Ṇ': 'n',\n 'ṇ': 'n',\n 'Ṋ': 'n',\n 'ṋ': 'n',\n 'Ṉ': 'n',\n 'ṉ': 'n',\n 'Ɲ': 'n',\n 'ɲ': 'n',\n 'Ƞ': 'n',\n 'ƞ': 'n',\n 'ɳ': 'n',\n 'ȵ': 'n',\n 'N': 'n',\n '̈': 'n',\n 'n': 'n',\n 'Ó': 'o',\n 'ó': 'o',\n 'Ò': 'o',\n 'ò': 'o',\n 'Ŏ': 'o',\n 'ŏ': 'o',\n 'Ô': 'o',\n 'ô': 'o',\n 'Ố': 'o',\n 'ố': 'o',\n 'Ồ': 'o',\n 'ồ': 'o',\n 'Ỗ': 'o',\n 'ỗ': 'o',\n 'Ổ': 'o',\n 'ổ': 'o',\n 'Ǒ': 'o',\n 'ǒ': 'o',\n 'Ö': 'o',\n 'ö': 'o',\n 'Ȫ': 'o',\n 'ȫ': 'o',\n 'Ő': 'o',\n 'ő': 'o',\n 'Õ': 'o',\n 'õ': 'o',\n 'Ṍ': 'o',\n 'ṍ': 'o',\n 'Ṏ': 'o',\n 'ṏ': 'o',\n 'Ȭ': 'o',\n 'ȭ': 'o',\n 'Ȯ': 'o',\n 'ȯ': 'o',\n 'Ȱ': 'o',\n 'ȱ': 'o',\n 'Ø': 'o',\n 'ø': 'o',\n 'Ǿ': 'o',\n 'ǿ': 'o',\n 'Ǫ': 'o',\n 'ǫ': 'o',\n 'Ǭ': 'o',\n 'ǭ': 'o',\n 'Ō': 'o',\n 'ō': 'o',\n 'Ṓ': 'o',\n 'ṓ': 'o',\n 'Ṑ': 'o',\n 'ṑ': 'o',\n 'Ỏ': 'o',\n 'ỏ': 'o',\n 'Ȍ': 'o',\n 'ȍ': 'o',\n 'Ȏ': 'o',\n 'ȏ': 'o',\n 'Ơ': 'o',\n 'ơ': 'o',\n 'Ớ': 'o',\n 'ớ': 'o',\n 'Ờ': 'o',\n 'ờ': 'o',\n 'Ỡ': 'o',\n 'ỡ': 'o',\n 'Ở': 'o',\n 'ở': 'o',\n 'Ợ': 'o',\n 'ợ': 'o',\n 'Ọ': 'o',\n 'ọ': 'o',\n 'Ộ': 'o',\n 'ộ': 'o',\n 'Ɵ': 'o',\n 'ɵ': 'o',\n 'Ṕ': 'p',\n 'ṕ': 'p',\n 'Ṗ': 'p',\n 'ṗ': 'p',\n 'Ᵽ': 'p',\n 'Ƥ': 'p',\n 'ƥ': 'p',\n 'P': 'p',\n '̃': 'p',\n 'p': 'p',\n 'ʠ': 'q',\n 'Ɋ': 'q',\n 'ɋ': 'q',\n 'Ŕ': 'r',\n 'ŕ': 'r',\n 'Ř': 'r',\n 'ř': 'r',\n 'Ṙ': 'r',\n 'ṙ': 'r',\n 'Ŗ': 'r',\n 'ŗ': 'r',\n 'Ȑ': 'r',\n 'ȑ': 'r',\n 'Ȓ': 'r',\n 'ȓ': 'r',\n 'Ṛ': 'r',\n 'ṛ': 'r',\n 'Ṝ': 'r',\n 'ṝ': 'r',\n 'Ṟ': 'r',\n 'ṟ': 'r',\n 'Ɍ': 'r',\n 'ɍ': 'r',\n 'ᵲ': 'r',\n 'ɼ': 'r',\n 'Ɽ': 'r',\n 'ɽ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ß': 's',\n 'Ś': 's',\n 'ś': 's',\n 'Ṥ': 's',\n 'ṥ': 's',\n 'Ŝ': 's',\n 'ŝ': 's',\n 'Š': 's',\n 'š': 's',\n 'Ṧ': 's',\n 'ṧ': 's',\n 'Ṡ': 's',\n 'ṡ': 's',\n 'ẛ': 's',\n 'Ş': 's',\n 'ş': 's',\n 'Ṣ': 's',\n 'ṣ': 's',\n 'Ṩ': 's',\n 'ṩ': 's',\n 'Ș': 's',\n 'ș': 's',\n 'ʂ': 's',\n 'S': 's',\n '̩': 's',\n 's': 's',\n 'Þ': 't',\n 'þ': 't',\n 'Ť': 't',\n 'ť': 't',\n 'T': 't',\n 'ẗ': 't',\n 'Ṫ': 't',\n 'ṫ': 't',\n 'Ţ': 't',\n 'ţ': 't',\n 'Ṭ': 't',\n 'ṭ': 't',\n 'Ț': 't',\n 'ț': 't',\n 'Ṱ': 't',\n 'ṱ': 't',\n 'Ṯ': 't',\n 'ṯ': 't',\n 'Ŧ': 't',\n 'ŧ': 't',\n 'Ⱦ': 't',\n 'ⱦ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'Ƭ': 't',\n 'ƭ': 't',\n 'Ʈ': 't',\n 'ʈ': 't',\n 'ȶ': 't',\n 'Ú': 'u',\n 'ú': 'u',\n 'Ù': 'u',\n 'ù': 'u',\n 'Ŭ': 'u',\n 'ŭ': 'u',\n 'Û': 'u',\n 'û': 'u',\n 'Ǔ': 'u',\n 'ǔ': 'u',\n 'Ů': 'u',\n 'ů': 'u',\n 'Ü': 'u',\n 'ü': 'u',\n 'Ǘ': 'u',\n 'ǘ': 'u',\n 'Ǜ': 'u',\n 'ǜ': 'u',\n 'Ǚ': 'u',\n 'ǚ': 'u',\n 'Ǖ': 'u',\n 'ǖ': 'u',\n 'Ű': 'u',\n 'ű': 'u',\n 'Ũ': 'u',\n 'ũ': 'u',\n 'Ṹ': 'u',\n 'ṹ': 'u',\n 'Ų': 'u',\n 'ų': 'u',\n 'Ū': 'u',\n 'ū': 'u',\n 'Ṻ': 'u',\n 'ṻ': 'u',\n 'Ủ': 'u',\n 'ủ': 'u',\n 'Ȕ': 'u',\n 'ȕ': 'u',\n 'Ȗ': 'u',\n 'ȗ': 'u',\n 'Ư': 'u',\n 'ư': 'u',\n 'Ứ': 'u',\n 'ứ': 'u',\n 'Ừ': 'u',\n 'ừ': 'u',\n 'Ữ': 'u',\n 'ữ': 'u',\n 'Ử': 'u',\n 'ử': 'u',\n 'Ự': 'u',\n 'ự': 'u',\n 'Ụ': 'u',\n 'ụ': 'u',\n 'Ṳ': 'u',\n 'ṳ': 'u',\n 'Ṷ': 'u',\n 'ṷ': 'u',\n 'Ṵ': 'u',\n 'ṵ': 'u',\n 'Ʉ': 'u',\n 'ʉ': 'u',\n 'Ṽ': 'v',\n 'ṽ': 'v',\n 'Ṿ': 'v',\n 'ṿ': 'v',\n 'Ʋ': 'v',\n 'ʋ': 'v',\n 'Ẃ': 'w',\n 'ẃ': 'w',\n 'Ẁ': 'w',\n 'ẁ': 'w',\n 'Ŵ': 'w',\n 'ŵ': 'w',\n 'W': 'w',\n '̊': 'w',\n 'ẘ': 'w',\n 'Ẅ': 'w',\n 'ẅ': 'w',\n 'Ẇ': 'w',\n 'ẇ': 'w',\n 'Ẉ': 'w',\n 'ẉ': 'w',\n 'Ẍ': 'x',\n 'ẍ': 'x',\n 'Ẋ': 'x',\n 'ẋ': 'x',\n 'Ý': 'y',\n 'ý': 'y',\n 'Ỳ': 'y',\n 'ỳ': 'y',\n 'Ŷ': 'y',\n 'ŷ': 'y',\n 'Y': 'y',\n 'ẙ': 'y',\n 'Ÿ': 'y',\n 'ÿ': 'y',\n 'Ỹ': 'y',\n 'ỹ': 'y',\n 'Ẏ': 'y',\n 'ẏ': 'y',\n 'Ȳ': 'y',\n 'ȳ': 'y',\n 'Ỷ': 'y',\n 'ỷ': 'y',\n 'Ỵ': 'y',\n 'ỵ': 'y',\n 'ʏ': 'y',\n 'Ɏ': 'y',\n 'ɏ': 'y',\n 'Ƴ': 'y',\n 'ƴ': 'y',\n 'Ź': 'z',\n 'ź': 'z',\n 'Ẑ': 'z',\n 'ẑ': 'z',\n 'Ž': 'z',\n 'ž': 'z',\n 'Ż': 'z',\n 'ż': 'z',\n 'Ẓ': 'z',\n 'ẓ': 'z',\n 'Ẕ': 'z',\n 'ẕ': 'z',\n 'Ƶ': 'z',\n 'ƶ': 'z',\n 'Ȥ': 'z',\n 'ȥ': 'z',\n 'ʐ': 'z',\n 'ʑ': 'z',\n 'Ⱬ': 'z',\n 'ⱬ': 'z',\n 'Ǯ': 'z',\n 'ǯ': 'z',\n 'ƺ': 'z',\n\n // Roman fullwidth ascii equivalents: 0xff00 to 0xff5e\n '2': '2',\n '6': '6',\n 'B': 'B',\n 'F': 'F',\n 'J': 'J',\n 'N': 'N',\n 'R': 'R',\n 'V': 'V',\n 'Z': 'Z',\n 'b': 'b',\n 'f': 'f',\n 'j': 'j',\n 'n': 'n',\n 'r': 'r',\n 'v': 'v',\n 'z': 'z',\n '1': '1',\n '5': '5',\n '9': '9',\n 'A': 'A',\n 'E': 'E',\n 'I': 'I',\n 'M': 'M',\n 'Q': 'Q',\n 'U': 'U',\n 'Y': 'Y',\n 'a': 'a',\n 'e': 'e',\n 'i': 'i',\n 'm': 'm',\n 'q': 'q',\n 'u': 'u',\n 'y': 'y',\n '0': '0',\n '4': '4',\n '8': '8',\n 'D': 'D',\n 'H': 'H',\n 'L': 'L',\n 'P': 'P',\n 'T': 'T',\n 'X': 'X',\n 'd': 'd',\n 'h': 'h',\n 'l': 'l',\n 'p': 'p',\n 't': 't',\n 'x': 'x',\n '3': '3',\n '7': '7',\n 'C': 'C',\n 'G': 'G',\n 'K': 'K',\n 'O': 'O',\n 'S': 'S',\n 'W': 'W',\n 'c': 'c',\n 'g': 'g',\n 'k': 'k',\n 'o': 'o',\n 's': 's',\n 'w': 'w'\n};\n\nexport default (s) => {\n if (!s) { return ''; }\n let ret = '';\n for (let i = 0; i < s.length; i += 1) {\n ret += accentMap[s.charAt(i)] || s.charAt(i);\n }\n return ret;\n};\n","/**\n * JQuery Plugin (Search Field)\n * @flow\n */\nimport Plugin, { register } from '../core/Plugin';\nimport type { PluginBehaviors } from '../core/Plugin';\n\nimport accentFold from '../core/functions/accent-fold';\n\nclass Search extends Plugin implements PluginBehaviors {\n static code = 'domSearch';\n static key = 'gl.search';\n\n static defaults = {\n scrappingValue: 'search-value',\n scrappingClass: '.searchable',\n groups: [],\n isSimple: false\n };\n\n static buttons = {\n cancel: '.dom-search-behavior-cancel',\n search: '.dom-search-behavior-search'\n };\n\n init() {\n const $input = this.$element.find('.form-control');\n const $cancel = this.$element.find(Search.buttons.cancel);\n\n $cancel.addClass('d-none');\n\n if ($input.val()) {\n $cancel.removeClass('d-none');\n }\n\n $input.on('input', () => {\n if ($input.val()) {\n $cancel.removeClass('d-none');\n } else {\n $cancel.addClass('d-none');\n }\n });\n\n $cancel.on('click', () => {\n $input.val('');\n $cancel.addClass('d-none');\n });\n\n if (!this.options.isSimple) {\n this.configureViewFilterBehavior();\n }\n }\n\n configureViewFilterBehavior() {\n this.$element\n .find('.form-control')\n .on('input', (event) => {\n const value = accentFold($(event.currentTarget).val());\n $(this.options.scrappingClass)\n .each((index, element) => {\n const $element = $(element);\n $element.removeClass('d-none');\n\n if (accentFold($element.data(this.options.scrappingValue)).search(new RegExp(value, 'gi')) === -1) {\n $element.addClass('d-none');\n }\n });\n this.groupBehavior();\n })\n .end()\n .find(Search.buttons.cancel)\n .on('click', () => {\n $(this.options.scrappingClass).each((index, element) => {\n $(element).removeClass('d-none');\n this.groupBehavior();\n });\n });\n }\n\n groupBehavior() {\n this.options.groups.forEach((group) => {\n $(`.search-not-found.not-found-${group.substr(1)}`)\n .toggleClass(\n 'not-found',\n ($(`${this.options.scrappingClass}${group}`).length\n === $(`${this.options.scrappingClass}${group}.d-none`).length)\n );\n });\n }\n}\n\nregister(Search);\n","/**\n * JQuery Plugin (Contingency Widget).\n * @flow\n */\nimport Plugin, { register } from '../core/Plugin';\nimport type { PluginBehaviors } from '../core/Plugin';\n\nclass Contingency extends Plugin implements PluginBehaviors {\n static code = 'contingency';\n static key = 'gl.contingency';\n\n static storageKey = 'gob.cl:contingency';\n\n static storageKeyPaths = {\n state: `${Contingency.storageKey}.state`,\n current: `${Contingency.storageKey}.current`\n };\n\n static defaults = {\n current: '.contingency-1'\n };\n\n init() {\n this.update();\n\n const $body = $('body');\n\n const $close = this.$element.find('.contingency-behavior-close');\n\n $close.on('click', () => {\n localStorage.setItem(Contingency.storageKeyPaths.state, 'active');\n $body.addClass('contingency-closed');\n });\n\n $(document).on('click', '.contingency-behavior-open', () => {\n localStorage.removeItem(Contingency.storageKeyPaths.state);\n $body.removeClass('contingency-closed');\n\n this.setOptions({\n active: true\n });\n });\n\n $(document).on('click', '.contingency-behavior-change', (e: JQueryEventObject) => {\n e.preventDefault();\n const $index = $(e.currentTarget);\n this.internalUpdate($index.data('target'));\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n internalUpdate(target: string) {\n $('.contingency-item').addClass('d-none');\n $(target).removeClass('d-none');\n\n $('.contingency-index .contingency-item').removeClass('d-none');\n $(`.contingency-index ${target}`).addClass('d-none');\n\n localStorage.setItem(Contingency.storageKeyPaths.current, target);\n }\n\n update() {\n const $body = $('body');\n\n if (this.options.active) {\n $body\n .addClass('contingency-active')\n .toggleClass('contingency-closed', !!localStorage.getItem(Contingency.storageKeyPaths.state));\n\n this.internalUpdate(\n localStorage.getItem(Contingency.storageKeyPaths.current) || Contingency.defaults.current\n );\n } else {\n $body\n .removeClass('contingency-active');\n }\n }\n}\n\nregister(Contingency);\n","/**\n * JQuery Plugin (Onboarding Widget).\n * @flow\n */\nimport Plugin, { register } from '../core/Plugin';\nimport type { PluginBehaviors } from '../core/Plugin';\n\nclass Onboarding extends Plugin implements PluginBehaviors {\n static code = 'onboarding';\n static key = 'gl.onboarding';\n\n static storageKey = 'gob.cl:onboarding';\n\n init() {\n this.update();\n\n const $body = $('body');\n\n const $dismiss = this.$element.find('.onboarding-behavior-dismiss');\n\n $dismiss.on('click', () => {\n localStorage.setItem(Onboarding.storageKey, 'active');\n $body.addClass('onboarding-closed');\n });\n }\n\n update() {\n const $body = $('body');\n\n if (this.options.active && !localStorage.getItem(Onboarding.storageKey)) {\n $body\n .addClass('onboarding-active');\n } else {\n $body\n .removeClass('onboarding-active');\n }\n }\n}\n\nregister(Onboarding);\n","/**\n * Smooth Scroll\n */\nexport default () => {\n const $body = $('body');\n\n $('a[href*=\"#\"]')\n // Remove links that don't actually link to anything\n .not('[href=\"#\"]')\n .not('[href=\"#0\"]')\n .not('.not-smooth')\n .click((event) => {\n // On-page links\n if (\n window.location.pathname.replace(/^\\//, '') === event.currentTarget.pathname.replace(/^\\//, '')\n && window.location.hostname === event.currentTarget.hostname\n ) {\n // Figure out element to scroll to\n let $target = $(event.currentTarget.hash);\n $target = $target.length ? $target : $(`[name=${event.currentTarget.hash.slice(1)}]`);\n // Does a scroll target exist?\n if ($target.length) {\n // Only prevent default if animation is actually gonna happen\n const scrollMemory = $(document).scrollTop();\n window.location.hash = event.currentTarget.hash;\n $(document).scrollTop(scrollMemory);\n\n $('.scroll-item').each((i, item) => {\n const $scrollItem = $(item);\n if ($scrollItem.data('active')) {\n if ($scrollItem.data('active') === 'parent') {\n $scrollItem.parent().removeClass('active');\n } else {\n $($scrollItem.data('active')).removeClass('active');\n }\n } else {\n $(item).removeClass('active');\n }\n });\n\n const selector = `.scroll-item[href*='${window.location.hash}']`;\n const $scrollItem = $(selector);\n if ($scrollItem.data('active')) {\n if ($scrollItem.data('active') === 'parent') {\n $scrollItem.parent().addClass('active');\n } else {\n $($scrollItem.data('active')).addClass('active');\n }\n } else {\n $scrollItem.addClass('active');\n }\n\n $('html, body').stop().animate({\n scrollTop: $target.offset().top\n - parseInt($($body.data('main') ? $body.data('main') : 'body').css('margin-top'), 10)\n - parseInt($body.data('offset') || 10, 10)\n }, 500, () => {\n // Callback after animation\n // Must change focus!\n const $realTarget = $($target);\n $realTarget.focus();\n if ($target.is(':focus')) { // Checking if the target was focused\n return false;\n }\n\n $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable\n $target.focus(); // Set focus again\n $target.addClass('active');\n return true;\n });\n }\n }\n });\n\n if (window.location.hash && window.location.hash !== '#') {\n let $target = $(window.location.hash);\n $target = $target.length ? $target : $(`[name=${window.location.hash.slice(1)}]`);\n\n if ($target.length) {\n $('.scroll-item').each((i, item) => {\n const $scrollItem = $(item);\n if ($scrollItem.data('active')) {\n if ($scrollItem.data('active') === 'parent') {\n $scrollItem.parent().removeClass('active');\n } else {\n $($scrollItem.data('active')).removeClass('active');\n }\n } else {\n $(item).removeClass('active');\n }\n });\n\n const selector = `.scroll-item[href*='${window.location.hash}']`;\n const $scrollItem = $(selector);\n if ($scrollItem.data('active')) {\n if ($scrollItem.data('active') === 'parent') {\n $scrollItem.parent().addClass('active');\n } else {\n $($scrollItem.data('active')).addClass('active');\n }\n } else {\n $scrollItem.addClass('active');\n }\n\n $('html, body').stop().animate({\n scrollTop: $target.offset().top\n - parseInt($($body.data('main') ? $body.data('main') : 'body').css('margin-top'), 10)\n }, 500, () => {\n // Callback after animation\n // Must change focus!\n const $realTarget = $($target);\n $realTarget.focus();\n if ($target.is(':focus')) { // Checking if the target was focused\n return false;\n }\n\n $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable\n $target.focus(); // Set focus again\n return true;\n });\n }\n }\n};\n","/**\n * cover background support with data-attribute data-background.\n */\nexport default () => {\n $('[data-background]').each((i, item) => {\n if (!$(item).data('background-video')) {\n const $background = $('
')\n .addClass('contain-cover-background');\n\n if ($(item).data('background')) {\n if ($(item).data('opacity') || !($(item).data('inline'))) {\n $background\n .css('background-image', `url(\"${$(item).data('background')}\")`);\n } else {\n $(item)\n .css('background-image', `url(\"${$(item).data('background')}\")`);\n }\n } else {\n $(item)\n .addClass('none');\n }\n\n if ($(item).data('opacity')) {\n $(item)\n .append($background)\n .addClass('contain-cover contain-cover-opacity');\n\n if ($(item).data('hover-disabled')) {\n $(item).addClass('hover-disabled');\n }\n } else if ($(item).data('inline')) {\n $(item)\n .addClass('contain-cover contain-cover-background');\n\n if ($(item).data('background')) {\n $(item).css('background-image', `url(\"${$(item).data('background')}\")`);\n } else {\n $(item)\n .addClass('none');\n }\n } else {\n $(item)\n .append($background)\n .addClass('contain-cover');\n }\n } else {\n const $video = $('