Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / misc / drupal.js
1 /**
2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
5 * @preserve
6 **/
7
8 window.Drupal = { behaviors: {}, locale: {} };
9
10 (function (Drupal, drupalSettings, drupalTranslations) {
11   Drupal.throwError = function (error) {
12     setTimeout(function () {
13       throw error;
14     }, 0);
15   };
16
17   Drupal.attachBehaviors = function (context, settings) {
18     context = context || document;
19     settings = settings || drupalSettings;
20     var behaviors = Drupal.behaviors;
21
22     Object.keys(behaviors || {}).forEach(function (i) {
23       if (typeof behaviors[i].attach === 'function') {
24         try {
25           behaviors[i].attach(context, settings);
26         } catch (e) {
27           Drupal.throwError(e);
28         }
29       }
30     });
31   };
32
33   Drupal.detachBehaviors = function (context, settings, trigger) {
34     context = context || document;
35     settings = settings || drupalSettings;
36     trigger = trigger || 'unload';
37     var behaviors = Drupal.behaviors;
38
39     Object.keys(behaviors || {}).forEach(function (i) {
40       if (typeof behaviors[i].detach === 'function') {
41         try {
42           behaviors[i].detach(context, settings, trigger);
43         } catch (e) {
44           Drupal.throwError(e);
45         }
46       }
47     });
48   };
49
50   Drupal.checkPlain = function (str) {
51     str = str.toString().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
52     return str;
53   };
54
55   Drupal.formatString = function (str, args) {
56     var processedArgs = {};
57
58     Object.keys(args || {}).forEach(function (key) {
59       switch (key.charAt(0)) {
60         case '@':
61           processedArgs[key] = Drupal.checkPlain(args[key]);
62           break;
63
64         case '!':
65           processedArgs[key] = args[key];
66           break;
67
68         default:
69           processedArgs[key] = Drupal.theme('placeholder', args[key]);
70           break;
71       }
72     });
73
74     return Drupal.stringReplace(str, processedArgs, null);
75   };
76
77   Drupal.stringReplace = function (str, args, keys) {
78     if (str.length === 0) {
79       return str;
80     }
81
82     if (!Array.isArray(keys)) {
83       keys = Object.keys(args || {});
84
85       keys.sort(function (a, b) {
86         return a.length - b.length;
87       });
88     }
89
90     if (keys.length === 0) {
91       return str;
92     }
93
94     var key = keys.pop();
95     var fragments = str.split(key);
96
97     if (keys.length) {
98       for (var i = 0; i < fragments.length; i++) {
99         fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
100       }
101     }
102
103     return fragments.join(args[key]);
104   };
105
106   Drupal.t = function (str, args, options) {
107     options = options || {};
108     options.context = options.context || '';
109
110     if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) {
111       str = drupalTranslations.strings[options.context][str];
112     }
113
114     if (args) {
115       str = Drupal.formatString(str, args);
116     }
117     return str;
118   };
119
120   Drupal.url = function (path) {
121     return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
122   };
123
124   Drupal.url.toAbsolute = function (url) {
125     var urlParsingNode = document.createElement('a');
126
127     try {
128       url = decodeURIComponent(url);
129     } catch (e) {}
130
131     urlParsingNode.setAttribute('href', url);
132
133     return urlParsingNode.cloneNode(false).href;
134   };
135
136   Drupal.url.isLocal = function (url) {
137     var absoluteUrl = Drupal.url.toAbsolute(url);
138     var protocol = window.location.protocol;
139
140     if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
141       protocol = 'https:';
142     }
143     var baseUrl = protocol + '//' + window.location.host + drupalSettings.path.baseUrl.slice(0, -1);
144
145     try {
146       absoluteUrl = decodeURIComponent(absoluteUrl);
147     } catch (e) {}
148     try {
149       baseUrl = decodeURIComponent(baseUrl);
150     } catch (e) {}
151
152     return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0;
153   };
154
155   Drupal.formatPlural = function (count, singular, plural, args, options) {
156     args = args || {};
157     args['@count'] = count;
158
159     var pluralDelimiter = drupalSettings.pluralDelimiter;
160     var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter);
161     var index = 0;
162
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) {
166       index = 1;
167     }
168
169     return translations[index];
170   };
171
172   Drupal.encodePath = function (item) {
173     return window.encodeURIComponent(item).replace(/%2F/g, '/');
174   };
175
176   Drupal.theme = function (func) {
177     if (func in Drupal.theme) {
178       var _Drupal$theme;
179
180       for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
181         args[_key - 1] = arguments[_key];
182       }
183
184       return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args);
185     }
186   };
187
188   Drupal.theme.placeholder = function (str) {
189     return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>';
190   };
191 })(Drupal, window.drupalSettings, window.drupalTranslations);