govuk_publishing_components 34.6.0 → 34.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +2 -1
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +6 -4
  4. data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +6 -3
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +6 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +1 -1
  7. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_tables.scss +12 -0
  8. data/app/views/govuk_publishing_components/components/_document_list.html.erb +1 -0
  9. data/app/views/govuk_publishing_components/components/docs/document_list.yml +18 -1
  10. data/app/views/govuk_publishing_components/components/docs/govspeak.yml +22 -1
  11. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +0 -7
  12. data/lib/govuk_publishing_components/version.rb +1 -1
  13. data/node_modules/govuk-frontend/govuk/all.js +4029 -3792
  14. data/node_modules/govuk-frontend/govuk/all.js.map +1 -0
  15. data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +52 -51
  16. data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js.map +1 -0
  17. data/node_modules/govuk-frontend/govuk/common/index.js +153 -145
  18. data/node_modules/govuk-frontend/govuk/common/index.js.map +1 -0
  19. data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +324 -321
  20. data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js.map +1 -0
  21. data/node_modules/govuk-frontend/govuk/common.js +154 -146
  22. data/node_modules/govuk-frontend/govuk/common.js.map +1 -0
  23. data/node_modules/govuk-frontend/govuk/components/_all.scss +1 -1
  24. data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +23 -4
  25. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +2059 -1654
  26. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js.map +1 -0
  27. data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +11 -11
  28. data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +1 -1
  29. data/node_modules/govuk-frontend/govuk/components/back-link/_index.scss +19 -19
  30. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +21 -10
  31. data/node_modules/govuk-frontend/govuk/components/button/button.js +927 -917
  32. data/node_modules/govuk-frontend/govuk/components/button/button.js.map +1 -0
  33. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +2050 -2040
  34. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js.map +1 -0
  35. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +1155 -1147
  36. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js.map +1 -0
  37. data/node_modules/govuk-frontend/govuk/components/cookie-banner/fixtures.json +23 -23
  38. data/node_modules/govuk-frontend/govuk/components/cookie-banner/template.njk +1 -1
  39. data/node_modules/govuk-frontend/govuk/components/details/details.js +800 -799
  40. data/node_modules/govuk-frontend/govuk/components/details/details.js.map +1 -0
  41. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +1058 -1045
  42. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js.map +1 -0
  43. data/node_modules/govuk-frontend/govuk/components/header/_index.scss +6 -0
  44. data/node_modules/govuk-frontend/govuk/components/header/header.js +646 -998
  45. data/node_modules/govuk-frontend/govuk/components/header/header.js.map +1 -0
  46. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +760 -752
  47. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js.map +1 -0
  48. data/node_modules/govuk-frontend/govuk/components/pagination/fixtures.json +61 -0
  49. data/node_modules/govuk-frontend/govuk/components/pagination/template.njk +1 -1
  50. data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +1 -1
  51. data/node_modules/govuk-frontend/govuk/components/radios/radios.js +1110 -1107
  52. data/node_modules/govuk-frontend/govuk/components/radios/radios.js.map +1 -0
  53. data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +1017 -1014
  54. data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js.map +1 -0
  55. data/node_modules/govuk-frontend/govuk/components/summary-list/_index.scss +107 -0
  56. data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +318 -23
  57. data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +110 -0
  58. data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +72 -28
  59. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +1392 -1264
  60. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js.map +1 -0
  61. data/node_modules/govuk-frontend/govuk/i18n.js +363 -364
  62. data/node_modules/govuk-frontend/govuk/i18n.js.map +1 -0
  63. data/node_modules/govuk-frontend/govuk/settings/_measurements.scss +5 -5
  64. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +242 -241
  65. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js.map +1 -0
  66. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +13 -12
  67. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js.map +1 -0
  68. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +17 -16
  69. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js.map +1 -0
  70. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +547 -546
  71. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js.map +1 -0
  72. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +37 -36
  73. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js.map +1 -0
  74. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +251 -250
  75. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js.map +1 -0
  76. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +21 -20
  77. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js.map +1 -0
  78. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +198 -197
  79. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js.map +1 -0
  80. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +198 -197
  81. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js.map +1 -0
  82. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +106 -105
  83. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js.map +1 -0
  84. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +400 -399
  85. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js.map +1 -0
  86. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +239 -238
  87. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js.map +1 -0
  88. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +72 -71
  89. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js.map +1 -0
  90. data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +14 -13
  91. data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js.map +1 -0
  92. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +17 -16
  93. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js.map +1 -0
  94. data/node_modules/govuk-frontend/govuk-esm/all.mjs +2 -2
  95. data/node_modules/govuk-frontend/govuk-esm/common/index.mjs +17 -10
  96. data/node_modules/govuk-frontend/govuk-esm/common/normalise-dataset.mjs +3 -1
  97. data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +135 -52
  98. data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs +11 -9
  99. data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs +10 -7
  100. data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs +24 -18
  101. data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +23 -16
  102. data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs +15 -11
  103. data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +3 -2
  104. data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs +3 -4
  105. data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs +10 -9
  106. data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs +5 -3
  107. data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs +165 -38
  108. data/node_modules/govuk-frontend/govuk-esm/i18n.mjs +9 -11
  109. data/node_modules/govuk-frontend/package.json +1 -1
  110. metadata +35 -3
@@ -4,501 +4,502 @@
4
4
  (factory());
5
5
  }(this, (function () { 'use strict';
6
6
 
7
- (function(undefined) {
7
+ (function(undefined) {
8
8
 
9
- // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Window/detect.js
10
- var detect = ('Window' in this);
9
+ // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Window/detect.js
10
+ var detect = ('Window' in this);
11
11
 
12
- if (detect) return
12
+ if (detect) return
13
13
 
14
- // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Window&flags=always
15
- if ((typeof WorkerGlobalScope === "undefined") && (typeof importScripts !== "function")) {
16
- (function (global) {
17
- if (global.constructor) {
18
- global.Window = global.constructor;
19
- } else {
20
- (global.Window = global.constructor = new Function('return function Window() {}')()).prototype = this;
21
- }
22
- }(this));
23
- }
14
+ // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Window&flags=always
15
+ if ((typeof WorkerGlobalScope === "undefined") && (typeof importScripts !== "function")) {
16
+ (function (global) {
17
+ if (global.constructor) {
18
+ global.Window = global.constructor;
19
+ } else {
20
+ (global.Window = global.constructor = new Function('return function Window() {}')()).prototype = this;
21
+ }
22
+ }(this));
23
+ }
24
24
 
25
- })
26
- .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
25
+ })
26
+ .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
27
27
 
28
- (function(undefined) {
28
+ (function(undefined) {
29
29
 
30
- // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Document/detect.js
31
- var detect = ("Document" in this);
30
+ // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Document/detect.js
31
+ var detect = ("Document" in this);
32
32
 
33
- if (detect) return
33
+ if (detect) return
34
34
 
35
- // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Document&flags=always
36
- if ((typeof WorkerGlobalScope === "undefined") && (typeof importScripts !== "function")) {
35
+ // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Document&flags=always
36
+ if ((typeof WorkerGlobalScope === "undefined") && (typeof importScripts !== "function")) {
37
37
 
38
- if (this.HTMLDocument) { // IE8
38
+ if (this.HTMLDocument) { // IE8
39
39
 
40
- // HTMLDocument is an extension of Document. If the browser has HTMLDocument but not Document, the former will suffice as an alias for the latter.
41
- this.Document = this.HTMLDocument;
40
+ // HTMLDocument is an extension of Document. If the browser has HTMLDocument but not Document, the former will suffice as an alias for the latter.
41
+ this.Document = this.HTMLDocument;
42
42
 
43
- } else {
43
+ } else {
44
44
 
45
- // Create an empty function to act as the missing constructor for the document object, attach the document object as its prototype. The function needs to be anonymous else it is hoisted and causes the feature detect to prematurely pass, preventing the assignments below being made.
46
- this.Document = this.HTMLDocument = document.constructor = (new Function('return function Document() {}')());
47
- this.Document.prototype = document;
45
+ // Create an empty function to act as the missing constructor for the document object, attach the document object as its prototype. The function needs to be anonymous else it is hoisted and causes the feature detect to prematurely pass, preventing the assignments below being made.
46
+ this.Document = this.HTMLDocument = document.constructor = (new Function('return function Document() {}')());
47
+ this.Document.prototype = document;
48
+ }
48
49
  }
49
- }
50
50
 
51
51
 
52
- })
53
- .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
52
+ })
53
+ .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
54
54
 
55
- (function(undefined) {
55
+ (function(undefined) {
56
56
 
57
- // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Element/detect.js
58
- var detect = ('Element' in this && 'HTMLElement' in this);
57
+ // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Element/detect.js
58
+ var detect = ('Element' in this && 'HTMLElement' in this);
59
59
 
60
- if (detect) return
60
+ if (detect) return
61
61
 
62
- // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Element&flags=always
63
- (function () {
62
+ // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Element&flags=always
63
+ (function () {
64
64
 
65
- // IE8
66
- if (window.Element && !window.HTMLElement) {
67
- window.HTMLElement = window.Element;
68
- return;
69
- }
65
+ // IE8
66
+ if (window.Element && !window.HTMLElement) {
67
+ window.HTMLElement = window.Element;
68
+ return;
69
+ }
70
70
 
71
- // create Element constructor
72
- window.Element = window.HTMLElement = new Function('return function Element() {}')();
71
+ // create Element constructor
72
+ window.Element = window.HTMLElement = new Function('return function Element() {}')();
73
73
 
74
- // generate sandboxed iframe
75
- var vbody = document.appendChild(document.createElement('body'));
76
- var frame = vbody.appendChild(document.createElement('iframe'));
74
+ // generate sandboxed iframe
75
+ var vbody = document.appendChild(document.createElement('body'));
76
+ var frame = vbody.appendChild(document.createElement('iframe'));
77
77
 
78
- // use sandboxed iframe to replicate Element functionality
79
- var frameDocument = frame.contentWindow.document;
80
- var prototype = Element.prototype = frameDocument.appendChild(frameDocument.createElement('*'));
81
- var cache = {};
78
+ // use sandboxed iframe to replicate Element functionality
79
+ var frameDocument = frame.contentWindow.document;
80
+ var prototype = Element.prototype = frameDocument.appendChild(frameDocument.createElement('*'));
81
+ var cache = {};
82
82
 
83
- // polyfill Element.prototype on an element
84
- var shiv = function (element, deep) {
85
- var
86
- childNodes = element.childNodes || [],
87
- index = -1,
88
- key, value, childNode;
83
+ // polyfill Element.prototype on an element
84
+ var shiv = function (element, deep) {
85
+ var
86
+ childNodes = element.childNodes || [],
87
+ index = -1,
88
+ key, value, childNode;
89
89
 
90
- if (element.nodeType === 1 && element.constructor !== Element) {
91
- element.constructor = Element;
90
+ if (element.nodeType === 1 && element.constructor !== Element) {
91
+ element.constructor = Element;
92
92
 
93
- for (key in cache) {
94
- value = cache[key];
95
- element[key] = value;
93
+ for (key in cache) {
94
+ value = cache[key];
95
+ element[key] = value;
96
+ }
96
97
  }
97
- }
98
98
 
99
- while (childNode = deep && childNodes[++index]) {
100
- shiv(childNode, deep);
101
- }
99
+ while (childNode = deep && childNodes[++index]) {
100
+ shiv(childNode, deep);
101
+ }
102
+
103
+ return element;
104
+ };
102
105
 
103
- return element;
104
- };
105
-
106
- var elements = document.getElementsByTagName('*');
107
- var nativeCreateElement = document.createElement;
108
- var interval;
109
- var loopLimit = 100;
110
-
111
- prototype.attachEvent('onpropertychange', function (event) {
112
- var
113
- propertyName = event.propertyName,
114
- nonValue = !cache.hasOwnProperty(propertyName),
115
- newValue = prototype[propertyName],
116
- oldValue = cache[propertyName],
117
- index = -1,
118
- element;
119
-
120
- while (element = elements[++index]) {
121
- if (element.nodeType === 1) {
122
- if (nonValue || element[propertyName] === oldValue) {
123
- element[propertyName] = newValue;
106
+ var elements = document.getElementsByTagName('*');
107
+ var nativeCreateElement = document.createElement;
108
+ var interval;
109
+ var loopLimit = 100;
110
+
111
+ prototype.attachEvent('onpropertychange', function (event) {
112
+ var
113
+ propertyName = event.propertyName,
114
+ nonValue = !cache.hasOwnProperty(propertyName),
115
+ newValue = prototype[propertyName],
116
+ oldValue = cache[propertyName],
117
+ index = -1,
118
+ element;
119
+
120
+ while (element = elements[++index]) {
121
+ if (element.nodeType === 1) {
122
+ if (nonValue || element[propertyName] === oldValue) {
123
+ element[propertyName] = newValue;
124
+ }
124
125
  }
125
126
  }
126
- }
127
127
 
128
- cache[propertyName] = newValue;
129
- });
130
-
131
- prototype.constructor = Element;
128
+ cache[propertyName] = newValue;
129
+ });
132
130
 
133
- if (!prototype.hasAttribute) {
134
- // <Element>.hasAttribute
135
- prototype.hasAttribute = function hasAttribute(name) {
136
- return this.getAttribute(name) !== null;
137
- };
138
- }
131
+ prototype.constructor = Element;
139
132
 
140
- // Apply Element prototype to the pre-existing DOM as soon as the body element appears.
141
- function bodyCheck() {
142
- if (!(loopLimit--)) clearTimeout(interval);
143
- if (document.body && !document.body.prototype && /(complete|interactive)/.test(document.readyState)) {
144
- shiv(document, true);
145
- if (interval && document.body.prototype) clearTimeout(interval);
146
- return (!!document.body.prototype);
133
+ if (!prototype.hasAttribute) {
134
+ // <Element>.hasAttribute
135
+ prototype.hasAttribute = function hasAttribute(name) {
136
+ return this.getAttribute(name) !== null;
137
+ };
147
138
  }
148
- return false;
149
- }
150
- if (!bodyCheck()) {
151
- document.onreadystatechange = bodyCheck;
152
- interval = setInterval(bodyCheck, 25);
153
- }
154
139
 
155
- // Apply to any new elements created after load
156
- document.createElement = function createElement(nodeName) {
157
- var element = nativeCreateElement(String(nodeName).toLowerCase());
158
- return shiv(element);
159
- };
160
-
161
- // remove sandboxed iframe
162
- document.removeChild(vbody);
163
- }());
164
-
165
- })
166
- .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
167
-
168
- (function(undefined) {
169
-
170
- // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Object/defineProperty/detect.js
171
- var detect = (
172
- // In IE8, defineProperty could only act on DOM elements, so full support
173
- // for the feature requires the ability to set a property on an arbitrary object
174
- 'defineProperty' in Object && (function() {
175
- try {
176
- var a = {};
177
- Object.defineProperty(a, 'test', {value:42});
178
- return true;
179
- } catch(e) {
180
- return false
181
- }
182
- }())
183
- );
184
-
185
- if (detect) return
186
-
187
- // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Object.defineProperty&flags=always
188
- (function (nativeDefineProperty) {
189
-
190
- var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__');
191
- var ERR_ACCESSORS_NOT_SUPPORTED = 'Getters & setters cannot be defined on this javascript engine';
192
- var ERR_VALUE_ACCESSORS = 'A property cannot both have accessors and be writable or have a value';
193
-
194
- Object.defineProperty = function defineProperty(object, property, descriptor) {
195
-
196
- // Where native support exists, assume it
197
- if (nativeDefineProperty && (object === window || object === document || object === Element.prototype || object instanceof Element)) {
198
- return nativeDefineProperty(object, property, descriptor);
140
+ // Apply Element prototype to the pre-existing DOM as soon as the body element appears.
141
+ function bodyCheck() {
142
+ if (!(loopLimit--)) clearTimeout(interval);
143
+ if (document.body && !document.body.prototype && /(complete|interactive)/.test(document.readyState)) {
144
+ shiv(document, true);
145
+ if (interval && document.body.prototype) clearTimeout(interval);
146
+ return (!!document.body.prototype);
147
+ }
148
+ return false;
199
149
  }
200
-
201
- if (object === null || !(object instanceof Object || typeof object === 'object')) {
202
- throw new TypeError('Object.defineProperty called on non-object');
150
+ if (!bodyCheck()) {
151
+ document.onreadystatechange = bodyCheck;
152
+ interval = setInterval(bodyCheck, 25);
203
153
  }
204
154
 
205
- if (!(descriptor instanceof Object)) {
206
- throw new TypeError('Property description must be an object');
207
- }
155
+ // Apply to any new elements created after load
156
+ document.createElement = function createElement(nodeName) {
157
+ var element = nativeCreateElement(String(nodeName).toLowerCase());
158
+ return shiv(element);
159
+ };
208
160
 
209
- var propertyString = String(property);
210
- var hasValueOrWritable = 'value' in descriptor || 'writable' in descriptor;
211
- var getterType = 'get' in descriptor && typeof descriptor.get;
212
- var setterType = 'set' in descriptor && typeof descriptor.set;
161
+ // remove sandboxed iframe
162
+ document.removeChild(vbody);
163
+ }());
213
164
 
214
- // handle descriptor.get
215
- if (getterType) {
216
- if (getterType !== 'function') {
217
- throw new TypeError('Getter must be a function');
165
+ })
166
+ .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
167
+
168
+ (function(undefined) {
169
+
170
+ // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Object/defineProperty/detect.js
171
+ var detect = (
172
+ // In IE8, defineProperty could only act on DOM elements, so full support
173
+ // for the feature requires the ability to set a property on an arbitrary object
174
+ 'defineProperty' in Object && (function() {
175
+ try {
176
+ var a = {};
177
+ Object.defineProperty(a, 'test', {value:42});
178
+ return true;
179
+ } catch(e) {
180
+ return false
181
+ }
182
+ }())
183
+ );
184
+
185
+ if (detect) return
186
+
187
+ // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Object.defineProperty&flags=always
188
+ (function (nativeDefineProperty) {
189
+
190
+ var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__');
191
+ var ERR_ACCESSORS_NOT_SUPPORTED = 'Getters & setters cannot be defined on this javascript engine';
192
+ var ERR_VALUE_ACCESSORS = 'A property cannot both have accessors and be writable or have a value';
193
+
194
+ Object.defineProperty = function defineProperty(object, property, descriptor) {
195
+
196
+ // Where native support exists, assume it
197
+ if (nativeDefineProperty && (object === window || object === document || object === Element.prototype || object instanceof Element)) {
198
+ return nativeDefineProperty(object, property, descriptor);
218
199
  }
219
- if (!supportsAccessors) {
220
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
200
+
201
+ if (object === null || !(object instanceof Object || typeof object === 'object')) {
202
+ throw new TypeError('Object.defineProperty called on non-object');
221
203
  }
222
- if (hasValueOrWritable) {
223
- throw new TypeError(ERR_VALUE_ACCESSORS);
204
+
205
+ if (!(descriptor instanceof Object)) {
206
+ throw new TypeError('Property description must be an object');
224
207
  }
225
- Object.__defineGetter__.call(object, propertyString, descriptor.get);
226
- } else {
227
- object[propertyString] = descriptor.value;
228
- }
229
208
 
230
- // handle descriptor.set
231
- if (setterType) {
232
- if (setterType !== 'function') {
233
- throw new TypeError('Setter must be a function');
209
+ var propertyString = String(property);
210
+ var hasValueOrWritable = 'value' in descriptor || 'writable' in descriptor;
211
+ var getterType = 'get' in descriptor && typeof descriptor.get;
212
+ var setterType = 'set' in descriptor && typeof descriptor.set;
213
+
214
+ // handle descriptor.get
215
+ if (getterType) {
216
+ if (getterType !== 'function') {
217
+ throw new TypeError('Getter must be a function');
218
+ }
219
+ if (!supportsAccessors) {
220
+ throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
221
+ }
222
+ if (hasValueOrWritable) {
223
+ throw new TypeError(ERR_VALUE_ACCESSORS);
224
+ }
225
+ Object.__defineGetter__.call(object, propertyString, descriptor.get);
226
+ } else {
227
+ object[propertyString] = descriptor.value;
234
228
  }
235
- if (!supportsAccessors) {
236
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
229
+
230
+ // handle descriptor.set
231
+ if (setterType) {
232
+ if (setterType !== 'function') {
233
+ throw new TypeError('Setter must be a function');
234
+ }
235
+ if (!supportsAccessors) {
236
+ throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
237
+ }
238
+ if (hasValueOrWritable) {
239
+ throw new TypeError(ERR_VALUE_ACCESSORS);
240
+ }
241
+ Object.__defineSetter__.call(object, propertyString, descriptor.set);
237
242
  }
238
- if (hasValueOrWritable) {
239
- throw new TypeError(ERR_VALUE_ACCESSORS);
243
+
244
+ // OK to define value unconditionally - if a getter has been specified as well, an error would be thrown above
245
+ if ('value' in descriptor) {
246
+ object[propertyString] = descriptor.value;
240
247
  }
241
- Object.__defineSetter__.call(object, propertyString, descriptor.set);
242
- }
243
248
 
244
- // OK to define value unconditionally - if a getter has been specified as well, an error would be thrown above
245
- if ('value' in descriptor) {
246
- object[propertyString] = descriptor.value;
247
- }
249
+ return object;
250
+ };
251
+ }(Object.defineProperty));
252
+ })
253
+ .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
254
+
255
+ (function(undefined) {
256
+
257
+ // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Event/detect.js
258
+ var detect = (
259
+ (function(global) {
260
+
261
+ if (!('Event' in global)) return false;
262
+ if (typeof global.Event === 'function') return true;
263
+
264
+ try {
265
+
266
+ // In IE 9-11, the Event object exists but cannot be instantiated
267
+ new Event('click');
268
+ return true;
269
+ } catch(e) {
270
+ return false;
271
+ }
272
+ }(this))
273
+ );
274
+
275
+ if (detect) return
276
+
277
+ // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Event&flags=always
278
+ (function () {
279
+ var unlistenableWindowEvents = {
280
+ click: 1,
281
+ dblclick: 1,
282
+ keyup: 1,
283
+ keypress: 1,
284
+ keydown: 1,
285
+ mousedown: 1,
286
+ mouseup: 1,
287
+ mousemove: 1,
288
+ mouseover: 1,
289
+ mouseenter: 1,
290
+ mouseleave: 1,
291
+ mouseout: 1,
292
+ storage: 1,
293
+ storagecommit: 1,
294
+ textinput: 1
295
+ };
248
296
 
249
- return object;
250
- };
251
- }(Object.defineProperty));
252
- })
253
- .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
254
-
255
- (function(undefined) {
256
-
257
- // Detection from https://github.com/Financial-Times/polyfill-service/blob/master/packages/polyfill-library/polyfills/Event/detect.js
258
- var detect = (
259
- (function(global) {
260
-
261
- if (!('Event' in global)) return false;
262
- if (typeof global.Event === 'function') return true;
263
-
264
- try {
265
-
266
- // In IE 9-11, the Event object exists but cannot be instantiated
267
- new Event('click');
268
- return true;
269
- } catch(e) {
270
- return false;
271
- }
272
- }(this))
273
- );
274
-
275
- if (detect) return
276
-
277
- // Polyfill from https://cdn.polyfill.io/v2/polyfill.js?features=Event&flags=always
278
- (function () {
279
- var unlistenableWindowEvents = {
280
- click: 1,
281
- dblclick: 1,
282
- keyup: 1,
283
- keypress: 1,
284
- keydown: 1,
285
- mousedown: 1,
286
- mouseup: 1,
287
- mousemove: 1,
288
- mouseover: 1,
289
- mouseenter: 1,
290
- mouseleave: 1,
291
- mouseout: 1,
292
- storage: 1,
293
- storagecommit: 1,
294
- textinput: 1
295
- };
296
-
297
- // This polyfill depends on availability of `document` so will not run in a worker
298
- // However, we asssume there are no browsers with worker support that lack proper
299
- // support for `Event` within the worker
300
- if (typeof document === 'undefined' || typeof window === 'undefined') return;
301
-
302
- function indexOf(array, element) {
303
- var
304
- index = -1,
305
- length = array.length;
306
-
307
- while (++index < length) {
308
- if (index in array && array[index] === element) {
309
- return index;
310
- }
311
- }
297
+ // This polyfill depends on availability of `document` so will not run in a worker
298
+ // However, we asssume there are no browsers with worker support that lack proper
299
+ // support for `Event` within the worker
300
+ if (typeof document === 'undefined' || typeof window === 'undefined') return;
312
301
 
313
- return -1;
314
- }
302
+ function indexOf(array, element) {
303
+ var
304
+ index = -1,
305
+ length = array.length;
306
+
307
+ while (++index < length) {
308
+ if (index in array && array[index] === element) {
309
+ return index;
310
+ }
311
+ }
315
312
 
316
- var existingProto = (window.Event && window.Event.prototype) || null;
317
- window.Event = Window.prototype.Event = function Event(type, eventInitDict) {
318
- if (!type) {
319
- throw new Error('Not enough arguments');
313
+ return -1;
320
314
  }
321
315
 
322
- var event;
323
- // Shortcut if browser supports createEvent
324
- if ('createEvent' in document) {
325
- event = document.createEvent('Event');
326
- var bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
327
- var cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;
316
+ var existingProto = (window.Event && window.Event.prototype) || null;
317
+ window.Event = Window.prototype.Event = function Event(type, eventInitDict) {
318
+ if (!type) {
319
+ throw new Error('Not enough arguments');
320
+ }
328
321
 
329
- event.initEvent(type, bubbles, cancelable);
322
+ var event;
323
+ // Shortcut if browser supports createEvent
324
+ if ('createEvent' in document) {
325
+ event = document.createEvent('Event');
326
+ var bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
327
+ var cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;
330
328
 
331
- return event;
332
- }
329
+ event.initEvent(type, bubbles, cancelable);
333
330
 
334
- event = document.createEventObject();
331
+ return event;
332
+ }
335
333
 
336
- event.type = type;
337
- event.bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
338
- event.cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;
334
+ event = document.createEventObject();
339
335
 
340
- return event;
341
- };
342
- if (existingProto) {
343
- Object.defineProperty(window.Event, 'prototype', {
344
- configurable: false,
345
- enumerable: false,
346
- writable: true,
347
- value: existingProto
348
- });
349
- }
336
+ event.type = type;
337
+ event.bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
338
+ event.cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;
350
339
 
351
- if (!('createEvent' in document)) {
352
- window.addEventListener = Window.prototype.addEventListener = Document.prototype.addEventListener = Element.prototype.addEventListener = function addEventListener() {
353
- var
354
- element = this,
355
- type = arguments[0],
356
- listener = arguments[1];
340
+ return event;
341
+ };
342
+ if (existingProto) {
343
+ Object.defineProperty(window.Event, 'prototype', {
344
+ configurable: false,
345
+ enumerable: false,
346
+ writable: true,
347
+ value: existingProto
348
+ });
349
+ }
357
350
 
358
- if (element === window && type in unlistenableWindowEvents) {
359
- throw new Error('In IE8 the event: ' + type + ' is not available on the window object. Please see https://github.com/Financial-Times/polyfill-service/issues/317 for more information.');
360
- }
351
+ if (!('createEvent' in document)) {
352
+ window.addEventListener = Window.prototype.addEventListener = Document.prototype.addEventListener = Element.prototype.addEventListener = function addEventListener() {
353
+ var
354
+ element = this,
355
+ type = arguments[0],
356
+ listener = arguments[1];
361
357
 
362
- if (!element._events) {
363
- element._events = {};
364
- }
358
+ if (element === window && type in unlistenableWindowEvents) {
359
+ throw new Error('In IE8 the event: ' + type + ' is not available on the window object. Please see https://github.com/Financial-Times/polyfill-service/issues/317 for more information.');
360
+ }
365
361
 
366
- if (!element._events[type]) {
367
- element._events[type] = function (event) {
368
- var
369
- list = element._events[event.type].list,
370
- events = list.slice(),
371
- index = -1,
372
- length = events.length,
373
- eventElement;
374
-
375
- event.preventDefault = function preventDefault() {
376
- if (event.cancelable !== false) {
377
- event.returnValue = false;
378
- }
379
- };
362
+ if (!element._events) {
363
+ element._events = {};
364
+ }
380
365
 
381
- event.stopPropagation = function stopPropagation() {
382
- event.cancelBubble = true;
383
- };
366
+ if (!element._events[type]) {
367
+ element._events[type] = function (event) {
368
+ var
369
+ list = element._events[event.type].list,
370
+ events = list.slice(),
371
+ index = -1,
372
+ length = events.length,
373
+ eventElement;
374
+
375
+ event.preventDefault = function preventDefault() {
376
+ if (event.cancelable !== false) {
377
+ event.returnValue = false;
378
+ }
379
+ };
384
380
 
385
- event.stopImmediatePropagation = function stopImmediatePropagation() {
386
- event.cancelBubble = true;
387
- event.cancelImmediate = true;
388
- };
381
+ event.stopPropagation = function stopPropagation() {
382
+ event.cancelBubble = true;
383
+ };
389
384
 
390
- event.currentTarget = element;
391
- event.relatedTarget = event.fromElement || null;
392
- event.target = event.target || event.srcElement || element;
393
- event.timeStamp = new Date().getTime();
385
+ event.stopImmediatePropagation = function stopImmediatePropagation() {
386
+ event.cancelBubble = true;
387
+ event.cancelImmediate = true;
388
+ };
394
389
 
395
- if (event.clientX) {
396
- event.pageX = event.clientX + document.documentElement.scrollLeft;
397
- event.pageY = event.clientY + document.documentElement.scrollTop;
398
- }
390
+ event.currentTarget = element;
391
+ event.relatedTarget = event.fromElement || null;
392
+ event.target = event.target || event.srcElement || element;
393
+ event.timeStamp = new Date().getTime();
399
394
 
400
- while (++index < length && !event.cancelImmediate) {
401
- if (index in events) {
402
- eventElement = events[index];
395
+ if (event.clientX) {
396
+ event.pageX = event.clientX + document.documentElement.scrollLeft;
397
+ event.pageY = event.clientY + document.documentElement.scrollTop;
398
+ }
403
399
 
404
- if (indexOf(list, eventElement) !== -1 && typeof eventElement === 'function') {
405
- eventElement.call(element, event);
400
+ while (++index < length && !event.cancelImmediate) {
401
+ if (index in events) {
402
+ eventElement = events[index];
403
+
404
+ if (indexOf(list, eventElement) !== -1 && typeof eventElement === 'function') {
405
+ eventElement.call(element, event);
406
+ }
406
407
  }
407
408
  }
408
- }
409
- };
409
+ };
410
410
 
411
- element._events[type].list = [];
411
+ element._events[type].list = [];
412
412
 
413
- if (element.attachEvent) {
414
- element.attachEvent('on' + type, element._events[type]);
413
+ if (element.attachEvent) {
414
+ element.attachEvent('on' + type, element._events[type]);
415
+ }
415
416
  }
416
- }
417
417
 
418
- element._events[type].list.push(listener);
419
- };
418
+ element._events[type].list.push(listener);
419
+ };
420
420
 
421
- window.removeEventListener = Window.prototype.removeEventListener = Document.prototype.removeEventListener = Element.prototype.removeEventListener = function removeEventListener() {
422
- var
423
- element = this,
424
- type = arguments[0],
425
- listener = arguments[1],
426
- index;
421
+ window.removeEventListener = Window.prototype.removeEventListener = Document.prototype.removeEventListener = Element.prototype.removeEventListener = function removeEventListener() {
422
+ var
423
+ element = this,
424
+ type = arguments[0],
425
+ listener = arguments[1],
426
+ index;
427
427
 
428
- if (element._events && element._events[type] && element._events[type].list) {
429
- index = indexOf(element._events[type].list, listener);
428
+ if (element._events && element._events[type] && element._events[type].list) {
429
+ index = indexOf(element._events[type].list, listener);
430
430
 
431
- if (index !== -1) {
432
- element._events[type].list.splice(index, 1);
431
+ if (index !== -1) {
432
+ element._events[type].list.splice(index, 1);
433
433
 
434
- if (!element._events[type].list.length) {
435
- if (element.detachEvent) {
436
- element.detachEvent('on' + type, element._events[type]);
434
+ if (!element._events[type].list.length) {
435
+ if (element.detachEvent) {
436
+ element.detachEvent('on' + type, element._events[type]);
437
+ }
438
+ delete element._events[type];
437
439
  }
438
- delete element._events[type];
439
440
  }
440
441
  }
441
- }
442
- };
442
+ };
443
443
 
444
- window.dispatchEvent = Window.prototype.dispatchEvent = Document.prototype.dispatchEvent = Element.prototype.dispatchEvent = function dispatchEvent(event) {
445
- if (!arguments.length) {
446
- throw new Error('Not enough arguments');
447
- }
448
-
449
- if (!event || typeof event.type !== 'string') {
450
- throw new Error('DOM Events Exception 0');
451
- }
444
+ window.dispatchEvent = Window.prototype.dispatchEvent = Document.prototype.dispatchEvent = Element.prototype.dispatchEvent = function dispatchEvent(event) {
445
+ if (!arguments.length) {
446
+ throw new Error('Not enough arguments');
447
+ }
452
448
 
453
- var element = this, type = event.type;
449
+ if (!event || typeof event.type !== 'string') {
450
+ throw new Error('DOM Events Exception 0');
451
+ }
454
452
 
455
- try {
456
- if (!event.bubbles) {
457
- event.cancelBubble = true;
453
+ var element = this, type = event.type;
458
454
 
459
- var cancelBubbleEvent = function (event) {
455
+ try {
456
+ if (!event.bubbles) {
460
457
  event.cancelBubble = true;
461
458
 
462
- (element || window).detachEvent('on' + type, cancelBubbleEvent);
463
- };
459
+ var cancelBubbleEvent = function (event) {
460
+ event.cancelBubble = true;
464
461
 
465
- this.attachEvent('on' + type, cancelBubbleEvent);
466
- }
462
+ (element || window).detachEvent('on' + type, cancelBubbleEvent);
463
+ };
467
464
 
468
- this.fireEvent('on' + type, event);
469
- } catch (error) {
470
- event.target = element;
465
+ this.attachEvent('on' + type, cancelBubbleEvent);
466
+ }
471
467
 
472
- do {
473
- event.currentTarget = element;
468
+ this.fireEvent('on' + type, event);
469
+ } catch (error) {
470
+ event.target = element;
474
471
 
475
- if ('_events' in element && typeof element._events[type] === 'function') {
476
- element._events[type].call(element, event);
477
- }
472
+ do {
473
+ event.currentTarget = element;
478
474
 
479
- if (typeof element['on' + type] === 'function') {
480
- element['on' + type].call(element, event);
481
- }
475
+ if ('_events' in element && typeof element._events[type] === 'function') {
476
+ element._events[type].call(element, event);
477
+ }
482
478
 
483
- element = element.nodeType === 9 ? element.parentWindow : element.parentNode;
484
- } while (element && !event.cancelBubble);
485
- }
479
+ if (typeof element['on' + type] === 'function') {
480
+ element['on' + type].call(element, event);
481
+ }
486
482
 
487
- return true;
488
- };
483
+ element = element.nodeType === 9 ? element.parentWindow : element.parentNode;
484
+ } while (element && !event.cancelBubble);
485
+ }
489
486
 
490
- // Add the DOMContentLoaded Event
491
- document.attachEvent('onreadystatechange', function() {
492
- if (document.readyState === 'complete') {
493
- document.dispatchEvent(new Event('DOMContentLoaded', {
494
- bubbles: true
495
- }));
496
- }
497
- });
498
- }
499
- }());
487
+ return true;
488
+ };
489
+
490
+ // Add the DOMContentLoaded Event
491
+ document.attachEvent('onreadystatechange', function() {
492
+ if (document.readyState === 'complete') {
493
+ document.dispatchEvent(new Event('DOMContentLoaded', {
494
+ bubbles: true
495
+ }));
496
+ }
497
+ });
498
+ }
499
+ }());
500
500
 
501
- })
502
- .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
501
+ })
502
+ .call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
503
503
 
504
504
  })));
505
+ //# sourceMappingURL=Event.js.map