1/*! 2 * jQuery Once v2.2.3 - http://github.com/robloach/jquery-once 3 * @license MIT, GPL-2.0 4 * http://opensource.org/licenses/MIT 5 * http://opensource.org/licenses/GPL-2.0 6 */ 7(function(e){"use strict";if(typeof exports==="object"&&typeof exports.nodeName!=="string"){e(require("jquery"))}else if(typeof define==="function"&&define.amd){define(["jquery"],e)}else{e(jQuery)}})(function(t){"use strict";var r=function(e){e=e||"once";if(typeof e!=="string"){throw new TypeError("The jQuery Once id parameter must be a string")}return e};t.fn.once=function(e){var n="jquery-once-"+r(e);return this.filter(function(){return t(this).data(n)!==true}).data(n,true)};t.fn.removeOnce=function(e){return this.findOnce(e).removeData("jquery-once-"+r(e))};t.fn.findOnce=function(e){var n="jquery-once-"+r(e);return this.filter(function(){return t(this).data(n)===true})}}); 8 9/** 10* DO NOT EDIT THIS FILE. 11* See the following change record for more information, 12* https://www.drupal.org/node/2815083 13* @preserve 14**/ 15 16(function () { 17 var settingsElement = document.querySelector('head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]'); 18 19 window.drupalSettings = {}; 20 21 if (settingsElement !== null) { 22 window.drupalSettings = JSON.parse(settingsElement.textContent); 23 } 24})();; 25window.drupalTranslations = {"strings":{"":{"Home":"Startseite","Next":"Weiter","closed":"geschlossen","Cancel":"Abbrechen","Disabled":"Deaktiviert","Enabled":"Aktiviert","Edit":"Bearbeiten","Link":"Link","Image":"Bild","Save":"Speichern","Open":"Ge\u00f6ffnet","Sunday":"Sonntag","Monday":"Montag","Tuesday":"Dienstag","Wednesday":"Mittwoch","Thursday":"Donnerstag","Friday":"Freitag","Saturday":"Samstag","Add":"Hinzuf\u00fcgen","Continue":"Weiter","Done":"Fertig","OK":"OK","Prev":"Vorheriges","Mon":"Mo.","Tue":"Di.","Wed":"Mi.","Thu":"Do.","Fri":"Fr.","Sat":"Sa.","Sun":"So.","May":"Mai","Close":"Schlie\u00dfen","Add group":"Gruppe hinzuf\u00fcgen","Show":"Anzeigen","Select all rows in this table":"Alle Zeilen dieser Tabelle ausw\u00e4hlen","Deselect all rows in this table":"Alle Zeilen dieser Tabelle abw\u00e4hlen","Today":"Heute","Jan":"Jan.","Feb":"Febr.","Mar":"M\u00e4rz","Apr":"Apr.","Jun":"Juni","Jul":"Juli","Aug":"Aug.","Sep":"Sep","Oct":"Okt.","Nov":"Nov.","Dec":"Dez.","Caption":"Beschriftung","Extend":"Erweitern","Su":"So","Mo":"Mo","Tu":"Di","We":"Mi","Th":"Do","Fr":"Fr","Sa":"Sa","Changed":"Ge\u00e4ndert","Not published":"Nicht ver\u00f6ffentlicht","Loading...":"Wird geladen...","Apply":"Anwenden","Please wait...":"Bitte warten...","Hide":"Ausblenden","Unlink":"Link entfernen","Not promoted":"nicht auf der Startseite","mm\/dd\/yy":"dd.mm.yy","Quick edit":"Direktbearbeitungsmodus","button":"Button","Edit Link":"Link bearbeiten","Remove group":"Gruppe entfernen","By @name on @date":"Von @name am @date","By @name":"Von @name","Not in menu":"Nicht im Men\u00fc","Alias: @alias":"Alias: @alias","No alias":"Kein Alias","@label":"@label","New revision":"Neue Revision","Drag to re-order":"Ziehen, um die Reihenfolge zu \u00e4ndern","Changes made in this table will not be saved until the form is submitted.":"\u00c4nderungen in dieser Tabelle werden nicht gespeichert, bis dieses Formular abgesendet wurde.","Discard changes":"\u00c4nderungen verwerfen","Show description":"Beschreibung anzeigen","New group":"Neue Gruppe","Saving":"Wird gespeichert","This permission is inherited from the authenticated user role.":"Diese Berechtigung wird von der Rolle \u201aAuthentifizierte Benutzer\u2018 ererbt.","No revision":"Keine Revision","Requires a title":"Ben\u00f6tigt einen Titel","Not restricted":"Uneingeschr\u00e4nkt","(active tab)":"(aktiver Reiter)","An AJAX HTTP error occurred.":"Ein AJAX-HTTP-Fehler ist aufgetreten.","HTTP Result Code: !status":"HTTP-R\u00fcckgabe-Code: !status","An AJAX HTTP request terminated abnormally.":"Eine AJAX-Anfrage ist abnormal beendet worden.","Debugging information follows.":"Im Folgenden finden Sie Debugging-Informationen.","Path: !uri":"Pfad: !uri","StatusText: !statusText":"Statustext: !statusText","ResponseText: !responseText":"Antworttext: !responseText","ReadyState: !readyState":"ReadyState: !readyState","Restricted to certain pages":"Auf bestimmte Seiten eingeschr\u00e4nkt","The block cannot be placed in this region.":"Der Block kann nicht in dieser Region abgelegt werden.","Hide summary":"Zusammenfassung ausblenden","Edit summary":"Zusammenfassung bearbeiten","Don\u0027t display post information":"Beitragsinformationen nicht anzeigen","Collapse":"Zusammenklappen","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"Die ausgew\u00e4hlte Datei %filename konnte nicht hochgeladen werden. Nur Dateien mit den folgenden Erweiterungen sind zul\u00e4ssig: %extensions.","Show row weights":"Zeilenreihenfolge anzeigen","Hide row weights":"Zeilenreihenfolge ausblenden","Apply (all displays)":"Anwenden (alle Anzeigen)","Apply (this display)":"Anwenden (diese Anzeige)","Revert to default":"Auf Standardwert zur\u00fccksetzen","Hide description":"Beschreibung ausblenden","You have unsaved changes":"Es gibt ungespeicherte \u00c4nderungen","Needs to be updated":"Aktualisierung erforderlich","Does not need to be updated":"Keine Aktualisierung erforderlich","Show all columns":"Alle Spalten zeigen","Show table cells that were hidden to make the table fit within a small screen.":"Zeige die Tabellenzellen, die ausgeblendet wurden, um die Tabelle auf kleinen Bildschirmen anzeigen zu k\u00f6nnen.","List additional actions":"Weitere Aktionen auflisten","Flag other translations as outdated":"Andere \u00dcbersetzungen als veraltet kennzeichnen","Do not flag other translations as outdated":"Andere \u00dcbersetzungen nicht als veraltet kennzeichnen","opened":"ge\u00f6ffnet","Horizontal orientation":"Horizontale Ausrichtung","Vertical orientation":"Vertikale Ausrichtung","Tray orientation changed to @orientation.":"Ausrichtung der aufklappbaren Einstellungsleiste in @orientation ge\u00e4ndert.","You have unsaved changes.":"Es sind nicht gespeicherte \u00c4nderungen vorhanden.","No styles configured":"Keine Stile konfiguriert","@count styles configured":"@count Stile konfiguriert","@action @title configuration options":"@action @title Konfigurationseinstellungen","Tabbing is no longer constrained by the C
25ontextual module.":"Das Verwenden der Tabulatortaste wird nicht l\u00e4nger vom Contextual-Modul eingeschr\u00e4nkt.","Tabbing is constrained to a set of @contextualsCount and the edit mode toggle.":"Tabulatornavigation ist auf eine Gruppe von @contextualsCount und den Bearbeitungsmodusumschalter beschr\u00e4nkt.","Press the esc key to exit.":"Zum Beenden die Escape-Taste dr\u00fccken.","@count contextual link\u0003@count contextual links":"@count Kontextlink\u0003@count Kontextlinks","Based on the text editor configuration, these tags have automatically been added: \u003Cstrong\u003E@tag-list\u003C\/strong\u003E.":"Diese Tags wurden basierend auf der Konfiguration des Texteditors hinzugef\u00fcgt: \u003Cstrong\u003E@tag-list\u003C\/strong\u003E.","!tour_item of !total":"!tour_item von !total","End tour":"Tour beenden","Uploads disabled":"Uploads deaktiviert","Uploads enabled, max size: @size @dimensions":"Hochladen erlaubt, maximale Gr\u00f6\u00dfe: @size @dimensions","Discard changes?":"\u00c4nderungen verwerfen?","The toolbar cannot be set to a horizontal orientation when it is locked.":"Die Toolbar kann nicht horizontal angeordnet werden, wenn Sie gesperrt ist.","Enter caption here":"Beschriftung hinzuf\u00fcgen","Could not load the form for \u003Cq\u003E@field-label\u003C\/q\u003E, either due to a website problem or a network connection problem.\u003Cbr\u003EPlease try again.":"Das Formular f\u00fcr das Feld \u003Cq\u003E@field-label\u003C\/q\u003E kann entweder wegen eines Problems auf der Website oder wegen einem Problem mit Ihrer Netzwerkverbindung nicht geladen werden. Bitte versuchen Sie es noch einmal.","Your changes to \u003Cq\u003E@entity-title\u003C\/q\u003E could not be saved, either due to a website problem or a network connection problem.\u003Cbr\u003EPlease try again.":"Die \u00c4nderungen an \u003Cq\u003E@entity-title\u003C\/q\u003E konnten nicht gespeichert werden, entweder durch ein Website-Problem oder ein Problem mit der Netzwerkverbindung.\u003Cbr\u003EBitte versuchen Sie es erneut.","Hide group names":"Gruppennamen ausblenden","Show group names":"Gruppennamen anzeigen","@groupName button group in position @position of @positionCount in row @row of @rowCount.":"@groupName Button-Gruppe in Position @position von @positionCount in Zeile @row von @rowCount.","Press the down arrow key to create a new row.":"Pfeil-nach-unten-Taste benutzen um eine neue Zeile zu erzeugen.","@name @type.":"@name @type.","Press the down arrow key to activate.":"Zum Aktivieren Pfeil-nach-Unten-Taste benutzen.","@name @type in position @position of @positionCount in @groupName button group in row @row of @rowCount.":"@name @type in position @position of @positionCount in @groupName button group in row @row of @rowCount.","Press the down arrow key to create a new button group in a new row.":"Pfeil-nach-unten-Taste benutzen, um eine neue Schaltfl\u00e4chengruppe in einer neuen Zeile zu erzeugen.","This is the last group. Move the button forward to create a new group.":"Dies ist die letzte Gruppe. Pfeil-nach-Rechts-Taste benutzen um eine neue Gruppe zu erzeugen.","The \u0022@name\u0022 button is currently enabled.":"Der Button \u201e@name\u201c ist derzeit aktiviert.","Use the keyboard arrow keys to change the position of this button.":"Verwenden Sie die Pfeiltasten der Tastatur, um die Position dieses Buttons zu \u00e4ndern.","Press the up arrow key on the top row to disable the button.":"In der obersten Zeile kann mit einem Druck auf den Pfeil nach oben die Schaltfl\u00e4che deaktiviert werden.","The \u0022@name\u0022 button is currently disabled.":"Der Button \u201e@name\u201c ist derzeit deaktiviert.","Use the down arrow key to move this button into the active toolbar.":"Benutzen Sie die \u201ePfeil nach unten\u201c -Taste um die Schaltfl\u00e4che in die aktive Werkzeugleiste zu verschieben.","This @name is currently enabled.":"Dieser @name ist momentan aktiv.","Use the keyboard arrow keys to change the position of this separator.":"Pfeil-Tasten benutzen um die Position dieses Seperators zu \u00e4ndern.","Separators are used to visually split individual buttons.":"Trennzeichen werden verwendet, um Buttons grafisch voneinander abzusetzen.","This @name is currently disabled.":"Dieser @n
25ame ist momentan inaktiv.","Use the down arrow key to move this separator into the active toolbar.":"Benutzen Sie die \u201ePfeil nach unten\u201c -Taste um den Separator in die aktive Werkzeugleiste zu verschieben.","You may add multiple separators to each button group.":"Sie k\u00f6nnen mehrere Separatoren zu jeder Schaltfl\u00e4chengruppe hinzuf\u00fcgen.","Please provide a name for the button group.":"Bitte einen Namen f\u00fcr die Button-Gruppe eingeben.","Button group name":"Button-Gruppen-Name","Editing the name of the new button group in a dialog.":"Namen der Button-Gruppe in einem Dialogfenster bearbeiten.","Editing the name of the \u0022@groupName\u0022 button group in a dialog.":"Namen der Button-Gruppe \u0022@groupName\u0022 in einem Dialogfenster bearbeiten.","Place a button to create a new button group.":"Einen Button hinzuf\u00fcgen, um eine neue Button-Gruppe zu erstellen.","Add a CKEditor button group to the end of this row.":"Eine CKEditor-Button-Gruppe am Ende dieser Zeile hinzuf\u00fcgen.","Changing the text format to %text_format will permanently remove content that is not allowed in that text format.\u003Cbr\u003E\u003Cbr\u003ESave your changes before switching the text format to avoid losing data.":"Das \u00c4ndern des Textformats in %text_format entfernt dauerhaft Inhalt, der in diesem Textformat nicht erlaubt ist.\u003Cbr\u003E\u003Cbr\u003ESpeichern Sie Ihre \u00c4nderungen bevor Sie das Textformat umstellen, um Datenverlust zu vermeiden.","Change text format?":"Textformat \u00e4ndern?","Rich Text Editor, !label field":"Rich-Text-Editor, !label Feld","Leave preview?":"Vorschau verlassen?","Leave preview":"Vorschau verlassen","Leaving the preview will cause unsaved changes to be lost. Are you sure you want to leave the preview?":"Wenn Sie die Vorschau verlassen, gehen nicht gespeicherte \u00c4nderungen verloren. M\u00f6chten Sie die Vorschau wirklich verlassen?","CTRL+Left click will prevent this dialog from showing and proceed to the clicked link.":"Strg-Linkklick verhindert dass dieser Dialog angezeigt wird und geht auf den angeklickten Link.","Tray \u0022@tray\u0022 @action.":"Aufklappbare Einstellungsleiste \u201e@tray\u201c @action.","Tray @action.":"Aufklappbare Einstellungsleiste @action.","Hide lower priority columns":"Niedrig priorisierte Spalten ausblenden","!modules modules are available in the modified list.":"!modules Module sind in der Modulfeldlsite verf\u00fcgbar.","The response failed verification so will not be processed.":"Die Verifizierung der Antwort ist fehlgeschlagen, deshalb wird die Verarbeitung nicht fortgef\u00fchrt.","The callback URL is not local and not trusted: !url":"Die Callback-URL ist nicht lokal und nicht vertrauensw\u00fcrdig: !url","CustomMessage: !customMessage":"Benutzerdefinierte Nachricht: !customMessage","Network problem!":"Netzwerkproblem!","Authored on @date":"Bearbeitet am @date","1 block is available in the modified list.\u0003@count blocks are available in the modified list.":"1 Block ist in der \u00fcberarbeiteten Liste verf\u00fcgbar.\u0003@count Bl\u00f6cke sind in der \u00fcberarbeiteten Liste verf\u00fcgbar.","Zero items selected":"Es wurde kein Eintrag ausgew\u00e4hlt","All @count items selected":"Alle @count Eintr\u00e4ge ausgew\u00e4hlt","Select all media":"Alle Medien ausw\u00e4hlen","Show media item weights":"Reihenfolge\/Gewichtung f\u00fcr Medieneintr\u00e4ge anzeigen","Hide media item weights":"Reihenfolge der Medieneintr\u00e4ge ausblenden","Embedded media":"Eingebettete Medien","Insert from Media Library":"Aus der Medienbibliothek einf\u00fcgen","Automatic alias":"Automatisches Alias","Insert this token into your form":"Dieses Token in Ihr Formular einf\u00fcgen","First click a text field to insert your tokens into.":"Klicken Sie zun\u00e4chst auf ein Textfeld, um Ihr Token einzuf\u00fcgen.","Collapse all":"Alle einklappen","item":"Element","Expand all":"Alle au
25sklappen","Select date":"Datum ausw\u00e4hlen","items":"Elemente","Toggle details widget state.":"Zeigt den Steuerelement-Status an.","Please avoid using the reserved word \u0027@key\u0027 as the element\u0027s key.":"Vermeiden Sie bitte, den reservierten Begriff \u0027@key\u0027 als Elementschl\u00fcssel zu verwenden.","All details have been expanded.":"Alle Details wurden ausgeklappt.","All details have been collapsed.":"Alle Details wurden eingeklappt."},"Long month name":{"January":"Januar","February":"Februar","March":"M\u00e4rz","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Dezember"}},"pluralFormula":{"1":0,"default":1}};; 26/** 27* DO NOT EDIT THIS FILE. 28* See the following change record for more information, 29* https://www.drupal.org/node/2815083 30* @preserve 31**/ 32 33window.Drupal = { behaviors: {}, locale: {} }; 34 35(function (Drupal, drupalSettings, drupalTranslations, console, Proxy, Reflect) { 36 Drupal.throwError = function (error) { 37 setTimeout(function () { 38 throw error; 39 }, 0); 40 }; 41 42 Drupal.attachBehaviors = function (context, settings) { 43 context = context || document; 44 settings = settings || drupalSettings; 45 var behaviors = Drupal.behaviors; 46 47 Object.keys(behaviors || {}).forEach(function (i) { 48 if (typeof behaviors[i].attach === 'function') { 49 try { 50 behaviors[i].attach(context, settings); 51 } catch (e) { 52 Drupal.throwError(e); 53 } 54 } 55 }); 56 }; 57 58 Drupal.detachBehaviors = function (context, settings, trigger) { 59 context = context || document; 60 settings = settings || drupalSettings; 61 trigger = trigger || 'unload'; 62 var behaviors = Drupal.behaviors; 63 64 Object.keys(behaviors || {}).forEach(function (i) { 65 if (typeof behaviors[i].detach === 'function') { 66 try { 67 behaviors[i].detach(context, settings, trigger); 68 } catch (e) { 69 Drupal.throwError(e); 70 } 71 } 72 }); 73 }; 74 75 Drupal.checkPlain = function (str) { 76 str = str.toString().replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); 77 return str; 78 }; 79 80 Drupal.formatString = function (str, args) { 81 var processedArgs = {}; 82 83 Object.keys(args || {}).forEach(function (key) { 84 switch (key.charAt(0)) { 85 case '@': 86 processedArgs[key] = Drupal.checkPlain(args[key]); 87 break; 88 89 case '!': 90 processedArgs[key] = args[key]; 91 break; 92 93 default: 94 processedArgs[key] = Drupal.theme('placeholder', args[key]); 95 break; 96 } 97 }); 98 99 return Drupal.stringReplace(str, processedArgs, null); 100 }; 101 102 Drupal.stringReplace = function (str, args, keys) { 103 if (str.length === 0) { 104 return str; 105 } 106 107 if (!Array.isArray(keys)) { 108 keys = Object.keys(args || {}); 109 110 keys.sort(function (a, b) { 111 return a.length - b.length; 112 }); 113 } 114 115 if (keys.length === 0) { 116 return str; 117 } 118 119 var key = keys.pop(); 120 var fragments = str.split(key); 121 122 if (keys.length) { 123 for (var i = 0; i < fragments.length; i++) { 124 fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0)); 125 } 126 } 127 128 return fragments.join(args[key]); 129 }; 130 131 Drupal.t = function (str, args, options) { 132 options = options || {}; 133 options.context = options.context || ''; 134 135 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) { 136 str = drupalTranslations.strings[options.context][str]; 137 } 138 139 if (args) { 140 str = Drupal.formatString(str, args); 141 } 142 return str; 143 }; 144 145 Drupal.url = function (path) { 146 return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path; 147 }; 148 149 Drupal.url.toAbsolute = function (url) { 150 var urlParsingNode = document.createElement('a'); 151 152 try { 153 url = decodeURIComponent(url); 154 } catch (e) {} 155 156 urlParsingNode.setAttribute('href', url); 157 158 return urlParsingNode.cloneNode(false).href; 159 }; 160 161 Drupal.url.isLocal = function (url) { 162 var absoluteUrl = Drupal.url.toAbsolute(url); 163 var protocol = window.location.protocol; 164 165 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) { 166 protocol = 'https:'; 167 } 168 var baseUrl = protocol + '//' + window.location.host + drupalSettings.path.baseUrl.slice(0, -1); 169 170 try { 171 absoluteUrl = decodeURIComponent(absoluteUrl); 172 } catch (e) {} 173 try { 174 baseUrl = decodeURIComponent(baseUrl); 175 } catch (e) {} 176 177 return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0; 178 }; 179 180 Drupal.formatPlural = function (count, singular, plural, args, options) { 181 args = args || {}; 182 args['@count'] = count; 183 184 var pluralDelimiter = drupalSettings.pluralDelimiter; 185 var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter); 186 var index = 0; 187 188 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) { 189 index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default; 190 } else if (args['@count'] !== 1) { 191 index = 1; 192 } 193 194 return translations[index]; 195 }; 196 197 Drupal.encodePath = function (item) { 198 return window.encodeURIComponent(item).replace(/%2F/g, '/'); 199 }; 200 201 Drupal.deprecationError = function (_ref) { 202 var message = _ref.message; 203 204 if (drupalSettings.suppressDeprecationErrors === false && typeof console !== 'undefined' && console.warn) { 205 console.warn('[Deprecation] ' + message); 206 } 207 }; 208 209 Drupal.deprecatedProperty = function (_ref2) { 210 var target = _ref2.target, 211 deprecatedProperty = _ref2.deprecatedProperty, 212 message = _ref2.message; 213 214 if (!Proxy || !Reflect) { 215 return target; 216 } 217 218 return new Proxy(target, { 219 get: function get(target, key) { 220 for (var _len = arguments.length, rest = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { 221 rest[_key - 2] = arguments[_key]; 222 } 223 224 if (key === deprecatedProperty) { 225 Drupal.deprecationError({ message: message }); 226 } 227 return Reflect.get.apply(Reflect, [target, key].concat(rest)); 228 } 229 }); 230 }; 231 232 Drupal.theme = function (func) { 233 if (func in Drupal.theme) { 234 var _Drupal$theme; 235 236 for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 237 args[_key2 - 1] = arguments[_key2]; 238 } 239
240 return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args); 241 } 242 }; 243 244 Drupal.theme.placeholder = function (str) { 245 return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>'; 246 }; 247})(Drupal, window.drupalSettings, window.drupalTranslations, window.console, window.Proxy, window.Reflect);; 248/** 249* DO NOT EDIT THIS FILE. 250* See the following change record for more information, 251* https://www.drupal.org/node/2815083 252* @preserve 253**/ 254 255if (window.jQuery) { 256 jQuery.noConflict(); 257} 258 259document.documentElement.className += ' js'; 260 261(function (Drupal, drupalSettings) { 262 var domReady = function domReady(callback) { 263 if (document.readyState !== 'loading') { 264 callback(); 265 } else { 266 var listener = function listener() { 267 callback(); 268 document.removeEventListener('DOMContentLoaded', listener); 269 }; 270 document.addEventListener('DOMContentLoaded', listener); 271 } 272 }; 273 274 domReady(function () { 275 Drupal.attachBehaviors(document, drupalSettings); 276 }); 277})(Drupal, window.drupalSettings);; 278(function () { 279 280 'use strict'; 281 282 Drupal.behaviors.quicklink = { 283 attach: function attachQuicklink(context, settings) { 284 var debug = settings.quicklink.debug; 285 286 function hydrateQuicklinkConfig() { 287 settings.quicklink.quicklinkConfig = settings.quicklink.quicklinkConfig || {}; 288 settings.quicklink.ignoredLinks = settings.quicklink.ignoredLinks || []; 289 290 var quicklinkConfig = settings.quicklink.quicklinkConfig; 291 292 quicklinkConfig.ignores = []; 293 294 // Loop through all the patterns to ignore, and generate rules to ignore URL patterns. 295 for (var i = 0; i < settings.quicklink.url_patterns_to_ignore.length; i++) { 296 var pattern = settings.quicklink.url_patterns_to_ignore[i]; 297 298 (function (i, pattern) { 299 if (pattern.length) { 300 quicklinkConfig.ignores.push(function (uri, elem) { 301 var ruleName = 'Pattern found in href. See ignored URL patterns log.'; 302 var ruleFunc = uri.includes(pattern); 303 304 outputDebugInfo(ruleFunc, ruleName, uri, elem, pattern); 305 306 return ruleFunc; 307 }); 308 } 309 })(i, pattern); 310 } 311 312 // Loop through all the "ignore selectors", and generate rules. 313 if (settings.quicklink.ignore_selectors) { 314 for (var i = 0; i < settings.quicklink.ignore_selectors.length; i++) { 315 var pattern = settings.quicklink.ignore_selectors[i]; 316 317 (function (i, pattern) { 318 if (pattern.length) { 319 quicklinkConfig.ignores.push(function (uri, elem) { 320 var ruleName = 'Element matches custom selectors within "ignore selectors" array. See log.'; 321 var ruleFunc = elem.matches(pattern); 322 323 outputDebugInfo(ruleFunc, ruleName, uri, elem, pattern); 324 325 return ruleFunc; 326 }); 327 } 328 })(i, pattern); 329 } 330 } 331 332 if (settings.quicklink.ignore_admin_paths) { 333 var adminLinkContainerPatterns = settings.quicklink.admin_link_container_patterns.join(); 334 335 quicklinkConfig.ignores.push(function (uri, elem) { 336 var ruleName = 'Exists in admin element container.'; 337 var ruleFunc = elem.matches(adminLinkContainerPatterns); 338 339 outputDebugInfo(ruleFunc, ruleName, uri, elem); 340 341 return ruleFunc; 342 }); 343 } 344 345 if (settings.quicklink.ignore_ajax_links) { 346 quicklinkConfig.ignores.push(function (uri, elem) { 347 var ruleName = 'Link has "use-ajax" CSS class.'; 348 var ruleFunc = elem.classList.contains('use-ajax'); 349 350 outputDebugInfo(ruleFunc, ruleName, uri, elem); 351 352 return ruleFunc; 353 }); 354 355 quicklinkConfig.ignores.push(function (uri, elem) { 356 var ruleName = 'Link has "/ajax" in url.'; 357 var ruleFunc = uri.includes('/ajax'); 358 359 outputDebugInfo(ruleFunc, ruleName, uri, elem); 360 361 return ruleFunc; 362 }); 363 } 364 365 if (settings.quicklink.ignore_file_ext) { 366 quicklinkConfig.ignores.push(function (uri, elem) { 367 var ruleName = 'Contains file extension at end of href.'; 368 var ruleFunc = uri.match(/(\.[^\/]{1,5}\?)|(\.[^\/]{1,5}$)/); 369 370 outputDebugInfo(ruleFunc, ruleName, uri, elem); 371 372 return ruleFunc; 373 }); 374 } 375 376 if (settings.quicklink.total_request_limit) { 377 quicklinkConfig.limit = parseInt(settings.quicklink.total_request_limit); 378 } 379 380 if (settings.quicklink.concurrency_throttle_limit) { 381 quicklinkConfig.throttle = parseInt(settings.quicklink.concurrency_throttle_limit); 382 } 383 384 if (settings.quicklink.idle_wait_timeout) { 385 quicklinkConfig.timeout = parseInt(settings.quicklink.idle_wait_timeout); 386 } 387 388 if (settings.quicklink.viewport_delay) { 389 quicklinkConfig.delay = parseInt(settings.quicklink.viewport_delay); 390 } 391 392 quicklinkConfig.ignores.push(function (uri, elem) {
393 var ruleName = 'Contains noprefetch attribute.'; 394 var ruleFunc = elem.hasAttribute('noprefetch'); 395 396 outputDebugInfo(ruleFunc, ruleName, uri, elem); 397 398 return ruleFunc; 399 }); 400 401 quicklinkConfig.ignores.push(function (uri, elem) { 402 var ruleName = 'Contains download attribute.'; 403 var ruleFunc = elem.hasAttribute('download'); 404 405 outputDebugInfo(ruleFunc, ruleName, uri, elem); 406 407 return ruleFunc; 408 }); 409 410 quicklinkConfig.origins = (settings.quicklink.allowed_domains) ? settings.quicklink.allowed_domains : false; 411 } 412 413 function outputDebugInfo(ruleFunc, ruleName, uri, elem, pattern) { 414 if (debug && ruleFunc) { 415 var debugMessage = ruleName + ' Link ignored.'; 416 var thisLog = {}; 417 var urlPattern = pattern || false; 418 419 elem.classList.add('quicklink-ignore'); 420 elem.textContent += 'ð«'; 421 elem.dataset.quicklinkMatch = debugMessage; 422 423 thisLog.ruleName = ruleName; 424 thisLog.uri = uri; 425 thisLog.elem = elem; 426 thisLog.message = debugMessage; 427 428 if (urlPattern) { 429 thisLog.urlPattern = urlPattern; 430 } 431 432 (function (thisLog) { 433 settings.quicklink.ignoredLinks.push(thisLog); 434 })(thisLog); 435 } 436 } 437 438 function loadQuicklink() { 439 var urlParams = new URLSearchParams(window.location.search); 440 var noprefetch = urlParams.get('noprefetch') !== null || window.location.hash === '#noprefetch' ; 441 442 if (noprefetch && debug) { 443 // eslint-disable-next-line no-console 444 console.info('The "noprefetch" parameter or hash exists in the URL. Quicklink library not loaded.'); 445 } 446 447 return window.quicklink && !noprefetch; 448 } 449 450 if (!settings.quicklink.quicklinkConfig) { 451 hydrateQuicklinkConfig(); 452 } 453 454 settings.quicklink.quicklinkConfig.el = (settings.quicklink.selector) ? context.querySelector(settings.quicklink.selector) : context; 455 456 if (loadQuicklink()) { 457 if (settings.quicklink.prefetch_only_paths) { 458 quicklink.prefetch(settings.quicklink.prefetch_only_paths); 459 } 460 else { 461 try { 462 quicklink.listen(settings.quicklink.quicklinkConfig); 463 } 464 catch(err) { 465 console.error('quicklink.listen is not found. Please verify you are running version 2 of the Quicklink library.', err); 466 } 467 } 468 } 469 470 if (debug) { 471 console.info('Quicklink config object', settings.quicklink.quicklinkConfig); // eslint-disable-line no-console 472 console.info('Quicklink module debug log', settings.quicklink.debug_log); // eslint-disable-line no-console 473 console.info('Quicklink ignored links', settings.quicklink.ignoredLinks); // eslint-disable-line no-console 474 } 475 } 476 }; 477})(); 478; 479/*! js-cookie v3.0.0-rc.0 | MIT */ 480!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var r=e.Cookies,n=e.Cookies=t();n.noConflict=function(){return e.Cookies=r,n}}())}(this,function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)e[n]=r[n]}return e}var t={read:function(e){return e.replace(/%3B/g,";")},write:function(e){return e.replace(/;/g,"%3B")}};return function r(n,i){function o(r,o,u){if("undefined"!=typeof document){"number"==typeof(u=e({},i,u)).expires&&(u.expires=new Date(Date.now()+864e5*u.expires)),u.expires&&(u.expires=u.expires.toUTCString()),r=t.write(r).replace(/=/g,"%3D"),o=n.write(String(o),r);var c="";for(var f in u)u[f]&&(c+="; "+f,!0!==u[f]&&(c+="="+u[f].split(";")[0]));return document.cookie=r+"="+o+c}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var r=document.cookie?document.cookie.split("; "):[],i={},o=0;o<r.length;o++){var u=r[o].split("="),c=u.slice(1).join("="),f=t.read(u[0]).replace(/%3D/g,"=");if(i[f]=n.read(c,f),e===f)break}return e?i[e]:i}},remove:function(t,r){o(t,"",e({},r,{expires:-1}))},withAttributes:function(t){return r(this.converter,e({},this.attributes,t))},withConverter:function(t){return r(e({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(n)}})}(t,{path:"/"})}); 481; 482/** 483* DO NOT EDIT THIS FILE. 484* See the following change record for more information, 485* https://www.drupal.org/node/2815083 486* @preserve 487**/ 488 489(function ($, Drupal, cookies) { 490 var isFunction = function isFunction(obj) { 491 return Object.prototype.toString.call(obj) === '[object Function]'; 492 }; 493 494 var parseCookieValue = function parseCookieValue(value, parseJson) { 495 if (value.indexOf('"') === 0) { 496 value = value.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 497 } 498 499 try { 500 value = decodeURIComponent(value.replace(/\+/g, ' ')); 501 return parseJson ? JSON.parse(value) : value; 502 } catch (e) {} 503 }; 504 505 var reader = function reader(cookieValue, cookieName, converter, readUnsanitized, parseJson) { 506 var value = readUnsanitized ? cookieValue : parseCookieValue(cookieValue, parseJson); 507 508 if (converter !== undefined && isFunction(converter)) { 509 return converter(value, cookieName); 510 } 511 512 return value; 513 }; 514 515 $.cookie = function (key) { 516 var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; 517 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; 518 519 key = key && !$.cookie.raw ? encodeURIComponent(key) : key; 520 if (value !== undefined && !isFunction(value)) { 521 var attributes = Object.assign({}, $.cookie.defaults, options); 522 523 if (typeof attributes.expires === 'string' && attributes.expires !== '') { 524 attributes.expires = new Date(attributes.expires); 525 } 526 527 var cookieSetter = cookies.withConverter({ 528 write: function write(cookieValue) { 529 return encodeURIComponent(cookieValue); 530 } 531 }); 532 533 value = $.cookie.json && !$.cookie.raw ? JSON.stringify(value) : String(value); 534 535 return cookieSetter.set(key, value, attributes); 536 } 537 538 var userProvidedConverter = value; 539 var cookiesShim = cookies.withConverter({ 540 read: function read(cookieValue, cookieName) { 541 return reader(cookieValue, cookieName, userProvidedConverter, $.cookie.raw, $.cookie.json); 542 } 543 }); 544 545 if (key !== undefined) { 546 return cookiesShim.get(key); 547 } 548 549 var results = cookiesShim.get();
550 Object.keys(results).forEach(function (resultKey) { 551 if (results[resultKey] === undefined) { 552 delete results[resultKey]; 553 } 554 }); 555 556 return results; 557 }; 558 559 $.cookie.defaults = Object.assign({ path: '' }, cookies.defaults); 560 561 $.cookie.json = false; 562 563 $.cookie.raw = false; 564 565 $.removeCookie = function (key, options) { 566 cookies.remove(key, Object.assign({}, $.cookie.defaults, options)); 567 return !cookies.get(key); 568 }; 569})(jQuery, Drupal, window.Cookies);;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.