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 for (var i in behaviors) {
23 if (behaviors.hasOwnProperty(i) && 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 for (var i in behaviors) {
40 if (behaviors.hasOwnProperty(i) && 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 for (var key in args) {
59 if (args.hasOwnProperty(key)) {
60 switch (key.charAt(0)) {
62 processedArgs[key] = Drupal.checkPlain(args[key]);
66 processedArgs[key] = args[key];
70 processedArgs[key] = Drupal.theme('placeholder', args[key]);
76 return Drupal.stringReplace(str, processedArgs, null);
79 Drupal.stringReplace = function (str, args, keys) {
80 if (str.length === 0) {
84 if (!Array.isArray(keys)) {
87 if (args.hasOwnProperty(k)) {
92 keys.sort(function (a, b) {
93 return a.length - b.length;
97 if (keys.length === 0) {
101 var key = keys.pop();
102 var fragments = str.split(key);
105 for (var i = 0; i < fragments.length; i++) {
106 fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
110 return fragments.join(args[key]);
113 Drupal.t = function (str, args, options) {
114 options = options || {};
115 options.context = options.context || '';
117 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) {
118 str = drupalTranslations.strings[options.context][str];
122 str = Drupal.formatString(str, args);
127 Drupal.url = function (path) {
128 return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
131 Drupal.url.toAbsolute = function (url) {
132 var urlParsingNode = document.createElement('a');
135 url = decodeURIComponent(url);
138 urlParsingNode.setAttribute('href', url);
140 return urlParsingNode.cloneNode(false).href;
143 Drupal.url.isLocal = function (url) {
144 var absoluteUrl = Drupal.url.toAbsolute(url);
145 var protocol = location.protocol;
147 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
150 var baseUrl = protocol + '//' + location.host + drupalSettings.path.baseUrl.slice(0, -1);
153 absoluteUrl = decodeURIComponent(absoluteUrl);
156 baseUrl = decodeURIComponent(baseUrl);
159 return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0;
162 Drupal.formatPlural = function (count, singular, plural, args, options) {
164 args['@count'] = count;
166 var pluralDelimiter = drupalSettings.pluralDelimiter;
167 var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter);
170 if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) {
171 index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default;
172 } else if (args['@count'] !== 1) {
176 return translations[index];
179 Drupal.encodePath = function (item) {
180 return window.encodeURIComponent(item).replace(/%2F/g, '/');
183 Drupal.theme = function (func) {
184 var args = Array.prototype.slice.apply(arguments, [1]);
185 if (func in Drupal.theme) {
186 return Drupal.theme[func].apply(this, args);
190 Drupal.theme.placeholder = function (str) {
191 return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>';
193 })(Drupal, window.drupalSettings, window.drupalTranslations);