2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
8 window.Drupal = { behaviors: {}, locale: {} };
10 (function (Drupal, drupalSettings, drupalTranslations) {
11 Drupal.throwError = function (error) {
12 setTimeout(function () {
17 Drupal.attachBehaviors = function (context, settings) {
18 context = context || document;
19 settings = settings || drupalSettings;
20 var behaviors = Drupal.behaviors;
22 Object.keys(behaviors || {}).forEach(function (i) {
23 if (typeof behaviors[i].attach === 'function') {
25 behaviors[i].attach(context, settings);
33 Drupal.detachBehaviors = function (context, settings, trigger) {
34 context = context || document;
35 settings = settings || drupalSettings;
36 trigger = trigger || 'unload';
37 var behaviors = Drupal.behaviors;
39 Object.keys(behaviors || {}).forEach(function (i) {
40 if (typeof behaviors[i].detach === 'function') {
42 behaviors[i].detach(context, settings, trigger);
50 Drupal.checkPlain = function (str) {
51 str = str.toString().replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
55 Drupal.formatString = function (str, args) {
56 var processedArgs = {};
58 Object.keys(args || {}).forEach(function (key) {
59 switch (key.charAt(0)) {
61 processedArgs[key] = Drupal.checkPlain(args[key]);
65 processedArgs[key] = args[key];
69 processedArgs[key] = Drupal.theme('placeholder', args[key]);
74 return Drupal.stringReplace(str, processedArgs, null);
77 Drupal.stringReplace = function (str, args, keys) {
78 if (str.length === 0) {
82 if (!Array.isArray(keys)) {
83 keys = Object.keys(args || {});
85 keys.sort(function (a, b) {
86 return a.length - b.length;
90 if (keys.length === 0) {
95 var fragments = str.split(key);
98 for (var i = 0; i < fragments.length; i++) {
99 fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
103 return fragments.join(args[key]);
106 Drupal.t = function (str, args, options) {
107 options = options || {};
108 options.context = options.context || '';
110 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) {
111 str = drupalTranslations.strings[options.context][str];
115 str = Drupal.formatString(str, args);
120 Drupal.url = function (path) {
121 return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
124 Drupal.url.toAbsolute = function (url) {
125 var urlParsingNode = document.createElement('a');
128 url = decodeURIComponent(url);
131 urlParsingNode.setAttribute('href', url);
133 return urlParsingNode.cloneNode(false).href;
136 Drupal.url.isLocal = function (url) {
137 var absoluteUrl = Drupal.url.toAbsolute(url);
138 var protocol = window.location.protocol;
140 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
143 var baseUrl = protocol + '//' + window.location.host + drupalSettings.path.baseUrl.slice(0, -1);
146 absoluteUrl = decodeURIComponent(absoluteUrl);
149 baseUrl = decodeURIComponent(baseUrl);
152 return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0;
155 Drupal.formatPlural = function (count, singular, plural, args, options) {
157 args['@count'] = count;
159 var pluralDelimiter = drupalSettings.pluralDelimiter;
160 var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter);
163 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) {
164 index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default;
165 } else if (args['@count'] !== 1) {
169 return translations[index];
172 Drupal.encodePath = function (item) {
173 return window.encodeURIComponent(item).replace(/%2F/g, '/');
176 Drupal.theme = function (func) {
177 if (func in Drupal.theme) {
180 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
181 args[_key - 1] = arguments[_key];
184 return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args);
188 Drupal.theme.placeholder = function (str) {
189 return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>';
191 })(Drupal, window.drupalSettings, window.drupalTranslations);