bullframe.css 3.8.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.browserslistrc +10 -6
  2. package/.stylelintrc.json +10 -0
  3. package/CHANGELOG.md +20 -4
  4. package/LICENSE +20 -20
  5. package/README.md +28 -179
  6. package/dist/css/bullframe-classless-dark-prefers.css +357 -425
  7. package/dist/css/bullframe-classless-dark-prefers.min.css +2 -3
  8. package/dist/css/bullframe-classless-dark-prefers.min.css.map +1 -1
  9. package/dist/css/bullframe-classless-dark.css +328 -412
  10. package/dist/css/bullframe-classless-dark.min.css +2 -3
  11. package/dist/css/bullframe-classless-dark.min.css.map +1 -1
  12. package/dist/css/bullframe-classless.css +237 -293
  13. package/dist/css/bullframe-classless.min.css +2 -2
  14. package/dist/css/bullframe-classless.min.css.map +1 -1
  15. package/dist/css/bullframe-dark-prefers.css +468 -633
  16. package/dist/css/bullframe-dark-prefers.min.css +2 -2
  17. package/dist/css/bullframe-dark-prefers.min.css.map +1 -1
  18. package/dist/css/bullframe-dark.css +402 -593
  19. package/dist/css/bullframe-dark.min.css +2 -2
  20. package/dist/css/bullframe-dark.min.css.map +1 -1
  21. package/dist/css/bullframe-utilities.css +87 -125
  22. package/dist/css/bullframe-utilities.min.css +1 -1
  23. package/dist/css/bullframe-utilities.min.css.map +1 -1
  24. package/dist/css/bullframe.css +288 -455
  25. package/dist/css/bullframe.min.css +1 -1
  26. package/dist/css/bullframe.min.css.map +1 -1
  27. package/docs/test/css/style.css +130 -130
  28. package/docs/test/icons/safari-pinned-tab.svg +28 -28
  29. package/docs/test/js/vendor/html5shiv.js +335 -335
  30. package/docs/test/js/vendor/ie10-viewport-bug-workaround.js +20 -20
  31. package/gulpfile.js +5 -2
  32. package/index.html +1214 -1223
  33. package/package.json +14 -11
  34. package/src/scss/bullframe-classless-dark-prefers.scss +5 -5
  35. package/src/scss/bullframe-classless-dark.scss +5 -5
  36. package/src/scss/bullframe-classless.scss +1 -9
  37. package/src/scss/bullframe-dark-prefers.scss +4 -4
  38. package/src/scss/bullframe-dark.scss +4 -4
  39. package/src/scss/bullframe-utilities.scss +1 -1
  40. package/src/scss/bullframe.scss +0 -7
  41. package/src/scss/forms/_forms-normalization.scss +4 -2
  42. package/src/scss/forms/_forms-styling-radio-checkbox.scss +84 -85
  43. package/src/scss/forms/_forms-styling-range.scss +99 -103
  44. package/src/scss/forms/_forms-styling-select.scss +63 -63
  45. package/src/scss/forms/_forms-styling.scss +119 -121
  46. package/src/scss/miscellaneous/_misc-focus.scss +0 -1
  47. package/src/scss/miscellaneous/_misc-layout.scss +1 -24
  48. package/src/scss/mixins/_mixin-grid-flex.scss +83 -83
  49. package/src/scss/mixins/_mixin-layout.scss +42 -42
  50. package/src/scss/mixins/_mixin-texts.scss +38 -37
  51. package/src/scss/typography/_typography-blockquotes.scss +23 -23
  52. package/src/scss/typography/_typography-headings.scss +43 -43
  53. package/src/scss/typography/_typography-html-body.scss +72 -72
  54. package/src/scss/typography/_typography-misc.scss +3 -3
  55. package/src/scss/typography/_typography-monospaced-elements.scss +50 -56
  56. package/src/scss/utilities/_utility-buttons.scss +71 -71
  57. package/src/scss/utilities/_utility-embeds.scss +34 -34
  58. package/src/scss/utilities/_utility-filters.scss +24 -24
  59. package/src/scss/utilities/_utility-form-states.scss +80 -80
  60. package/src/scss/utilities/_utility-global-dark-classless.scss +157 -169
  61. package/src/scss/utilities/_utility-global-dark-prefers-classless.scss +3 -3
  62. package/src/scss/utilities/_utility-global-dark-prefers.scss +3 -3
  63. package/src/scss/utilities/_utility-global-dark-scrollbars.scss +29 -29
  64. package/src/scss/utilities/_utility-global-dark.scss +213 -224
  65. package/src/scss/utilities/_utility-grid-system.scss +204 -204
  66. package/src/scss/utilities/_utility-layout.scss +195 -196
  67. package/src/scss/utilities/_utility-lists.scss +17 -17
  68. package/src/scss/utilities/_utility-print.scss +101 -111
  69. package/src/scss/utilities/_utility-reduced-motion.scss +29 -29
  70. package/src/scss/utilities/_utility-tables.scss +40 -40
  71. package/src/scss/utilities/_utility-texts.scss +199 -199
  72. package/src/scss/utilities/_utility-z-index.scss +82 -82
  73. package/src/scss/variables/_variables-breakpoints.scss +5 -5
  74. package/src/scss/variables/_variables-colors.scss +31 -31
  75. package/src/scss/variables/_variables-spacing.scss +25 -25
  76. package/src/scss/variables/_variables-texts.scss +12 -12
  77. package/dist/css/bullframe-classless-dark-ie10+.css +0 -1321
  78. package/dist/css/bullframe-classless-dark-ie10+.min.css +0 -4
  79. package/dist/css/bullframe-classless-dark-ie10+.min.css.map +0 -1
  80. package/dist/css/bullframe-classless-dark-prefers-ie10+.css +0 -1301
  81. package/dist/css/bullframe-classless-dark-prefers-ie10+.min.css +0 -4
  82. package/dist/css/bullframe-classless-dark-prefers-ie10+.min.css.map +0 -1
  83. package/dist/css/bullframe-classless-ie10+.css +0 -1084
  84. package/dist/css/bullframe-classless-ie10+.min.css +0 -3
  85. package/dist/css/bullframe-classless-ie10+.min.css.map +0 -1
  86. package/dist/css/bullframe-dark-ie10+.css +0 -2569
  87. package/dist/css/bullframe-dark-ie10+.min.css +0 -3
  88. package/dist/css/bullframe-dark-ie10+.min.css.map +0 -1
  89. package/dist/css/bullframe-dark-prefers-ie10+.css +0 -2541
  90. package/dist/css/bullframe-dark-prefers-ie10+.min.css +0 -3
  91. package/dist/css/bullframe-dark-prefers-ie10+.min.css.map +0 -1
  92. package/dist/css/bullframe-ie10+.css +0 -2250
  93. package/dist/css/bullframe-ie10+.min.css +0 -2
  94. package/dist/css/bullframe-ie10+.min.css.map +0 -1
  95. package/docs/images-readme/browserstack-logo.png +0 -0
  96. package/src/scss/bullframe-classless-dark-ie10+.scss +0 -5
  97. package/src/scss/bullframe-classless-dark-prefers-ie10+.scss +0 -5
  98. package/src/scss/bullframe-classless-ie10+.scss +0 -43
  99. package/src/scss/bullframe-dark-ie10+.scss +0 -4
  100. package/src/scss/bullframe-dark-prefers-ie10+.scss +0 -4
  101. package/src/scss/bullframe-ie10+.scss +0 -121
  102. package/src/scss/forms/_forms-styling-ie-hacks.scss +0 -56
  103. package/src/scss/forms/_forms-styling-select-ie-hacks.scss +0 -30
@@ -1,335 +1,335 @@
1
- /**
2
- * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3
- */
4
- (function(window, document) {
5
- /*jshint evil:true */
6
- /** version */
7
- var version = "3.7.3-pre";
8
-
9
- /** Preset options */
10
- var options = window.html5 || {};
11
-
12
- /** Used to skip problem elements */
13
- var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
14
-
15
- /** Not all elements can be cloned in IE **/
16
- var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
17
-
18
- /** Detect whether the browser supports default html5 styles */
19
- var supportsHtml5Styles;
20
-
21
- /** Name of the expando, to work with multiple documents or to re-shiv one document */
22
- var expando = "_html5shiv";
23
-
24
- /** The id for the the documents expando */
25
- var expanID = 0;
26
-
27
- /** Cached data for each document */
28
- var expandoData = {};
29
-
30
- /** Detect whether the browser supports unknown elements */
31
- var supportsUnknownElements;
32
-
33
- (function() {
34
- try {
35
- var a = document.createElement("a");
36
- a.innerHTML = "<xyz></xyz>";
37
- //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
38
- supportsHtml5Styles = "hidden" in a;
39
-
40
- supportsUnknownElements =
41
- a.childNodes.length == 1 ||
42
- (function() {
43
- // assign a false positive if unable to shiv
44
- document.createElement("a");
45
- var frag = document.createDocumentFragment();
46
- return (
47
- typeof frag.cloneNode == "undefined" ||
48
- typeof frag.createDocumentFragment == "undefined" ||
49
- typeof frag.createElement == "undefined"
50
- );
51
- })();
52
- } catch (e) {
53
- // assign a false positive if detection fails => unable to shiv
54
- supportsHtml5Styles = true;
55
- supportsUnknownElements = true;
56
- }
57
- })();
58
-
59
- /*--------------------------------------------------------------------------*/
60
-
61
- /**
62
- * Creates a style sheet with the given CSS text and adds it to the document.
63
- * @private
64
- * @param {Document} ownerDocument The document.
65
- * @param {String} cssText The CSS text.
66
- * @returns {StyleSheet} The style element.
67
- */
68
- function addStyleSheet(ownerDocument, cssText) {
69
- var p = ownerDocument.createElement("p"),
70
- parent =
71
- ownerDocument.getElementsByTagName("head")[0] ||
72
- ownerDocument.documentElement;
73
-
74
- p.innerHTML = "x<style>" + cssText + "</style>";
75
- return parent.insertBefore(p.lastChild, parent.firstChild);
76
- }
77
-
78
- /**
79
- * Returns the value of `html5.elements` as an array.
80
- * @private
81
- * @returns {Array} An array of shived element node names.
82
- */
83
- function getElements() {
84
- var elements = html5.elements;
85
- return typeof elements == "string" ? elements.split(" ") : elements;
86
- }
87
-
88
- /**
89
- * Extends the built-in list of html5 elements
90
- * @memberOf html5
91
- * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
92
- * @param {Document} ownerDocument The context document.
93
- */
94
- function addElements(newElements, ownerDocument) {
95
- var elements = html5.elements;
96
- if (typeof elements != "string") {
97
- elements = elements.join(" ");
98
- }
99
- if (typeof newElements != "string") {
100
- newElements = newElements.join(" ");
101
- }
102
- html5.elements = elements + " " + newElements;
103
- shivDocument(ownerDocument);
104
- }
105
-
106
- /**
107
- * Returns the data associated to the given document
108
- * @private
109
- * @param {Document} ownerDocument The document.
110
- * @returns {Object} An object of data.
111
- */
112
- function getExpandoData(ownerDocument) {
113
- var data = expandoData[ownerDocument[expando]];
114
- if (!data) {
115
- data = {};
116
- expanID++;
117
- ownerDocument[expando] = expanID;
118
- expandoData[expanID] = data;
119
- }
120
- return data;
121
- }
122
-
123
- /**
124
- * returns a shived element for the given nodeName and document
125
- * @memberOf html5
126
- * @param {String} nodeName name of the element
127
- * @param {Document} ownerDocument The context document.
128
- * @returns {Object} The shived element.
129
- */
130
- function createElement(nodeName, ownerDocument, data) {
131
- if (!ownerDocument) {
132
- ownerDocument = document;
133
- }
134
- if (supportsUnknownElements) {
135
- return ownerDocument.createElement(nodeName);
136
- }
137
- if (!data) {
138
- data = getExpandoData(ownerDocument);
139
- }
140
- var node;
141
-
142
- if (data.cache[nodeName]) {
143
- node = data.cache[nodeName].cloneNode();
144
- } else if (saveClones.test(nodeName)) {
145
- node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
146
- } else {
147
- node = data.createElem(nodeName);
148
- }
149
-
150
- // Avoid adding some elements to fragments in IE < 9 because
151
- // * Attributes like `name` or `type` cannot be set/changed once an element
152
- // is inserted into a document/fragment
153
- // * Link elements with `src` attributes that are inaccessible, as with
154
- // a 403 response, will cause the tab/window to crash
155
- // * Script elements appended to fragments will execute when their `src`
156
- // or `text` property is set
157
- return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn
158
- ? data.frag.appendChild(node)
159
- : node;
160
- }
161
-
162
- /**
163
- * returns a shived DocumentFragment for the given document
164
- * @memberOf html5
165
- * @param {Document} ownerDocument The context document.
166
- * @returns {Object} The shived DocumentFragment.
167
- */
168
- function createDocumentFragment(ownerDocument, data) {
169
- if (!ownerDocument) {
170
- ownerDocument = document;
171
- }
172
- if (supportsUnknownElements) {
173
- return ownerDocument.createDocumentFragment();
174
- }
175
- data = data || getExpandoData(ownerDocument);
176
- var clone = data.frag.cloneNode(),
177
- i = 0,
178
- elems = getElements(),
179
- l = elems.length;
180
- for (; i < l; i++) {
181
- clone.createElement(elems[i]);
182
- }
183
- return clone;
184
- }
185
-
186
- /**
187
- * Shivs the `createElement` and `createDocumentFragment` methods of the document.
188
- * @private
189
- * @param {Document|DocumentFragment} ownerDocument The document.
190
- * @param {Object} data of the document.
191
- */
192
- function shivMethods(ownerDocument, data) {
193
- if (!data.cache) {
194
- data.cache = {};
195
- data.createElem = ownerDocument.createElement;
196
- data.createFrag = ownerDocument.createDocumentFragment;
197
- data.frag = data.createFrag();
198
- }
199
-
200
- ownerDocument.createElement = function(nodeName) {
201
- //abort shiv
202
- if (!html5.shivMethods) {
203
- return data.createElem(nodeName);
204
- }
205
- return createElement(nodeName, ownerDocument, data);
206
- };
207
-
208
- ownerDocument.createDocumentFragment = Function(
209
- "h,f",
210
- "return function(){" +
211
- "var n=f.cloneNode(),c=n.createElement;" +
212
- "h.shivMethods&&(" +
213
- // unroll the `createElement` calls
214
- getElements()
215
- .join()
216
- .replace(/[\w\-:]+/g, function(nodeName) {
217
- data.createElem(nodeName);
218
- data.frag.createElement(nodeName);
219
- return 'c("' + nodeName + '")';
220
- }) +
221
- ");return n}"
222
- )(html5, data.frag);
223
- }
224
-
225
- /*--------------------------------------------------------------------------*/
226
-
227
- /**
228
- * Shivs the given document.
229
- * @memberOf html5
230
- * @param {Document} ownerDocument The document to shiv.
231
- * @returns {Document} The shived document.
232
- */
233
- function shivDocument(ownerDocument) {
234
- if (!ownerDocument) {
235
- ownerDocument = document;
236
- }
237
- var data = getExpandoData(ownerDocument);
238
-
239
- if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
240
- data.hasCSS = !!addStyleSheet(
241
- ownerDocument,
242
- // corrects block display not defined in IE6/7/8/9
243
- "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}" +
244
- // adds styling not present in IE6/7/8/9
245
- "mark{background:#FF0;color:#000}" +
246
- // hides non-rendered elements
247
- "template{display:none}"
248
- );
249
- }
250
- if (!supportsUnknownElements) {
251
- shivMethods(ownerDocument, data);
252
- }
253
- return ownerDocument;
254
- }
255
-
256
- /*--------------------------------------------------------------------------*/
257
-
258
- /**
259
- * The `html5` object is exposed so that more elements can be shived and
260
- * existing shiving can be detected on iframes.
261
- * @type Object
262
- * @example
263
- *
264
- * // options can be changed before the script is included
265
- * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
266
- */
267
- var html5 = {
268
- /**
269
- * An array or space separated string of node names of the elements to shiv.
270
- * @memberOf html5
271
- * @type Array|String
272
- */
273
- elements:
274
- options.elements ||
275
- "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",
276
-
277
- /**
278
- * current version of html5shiv
279
- */
280
- version: version,
281
-
282
- /**
283
- * A flag to indicate that the HTML5 style sheet should be inserted.
284
- * @memberOf html5
285
- * @type Boolean
286
- */
287
- shivCSS: options.shivCSS !== false,
288
-
289
- /**
290
- * Is equal to true if a browser supports creating unknown/HTML5 elements
291
- * @memberOf html5
292
- * @type boolean
293
- */
294
- supportsUnknownElements: supportsUnknownElements,
295
-
296
- /**
297
- * A flag to indicate that the document's `createElement` and `createDocumentFragment`
298
- * methods should be overwritten.
299
- * @memberOf html5
300
- * @type Boolean
301
- */
302
- shivMethods: options.shivMethods !== false,
303
-
304
- /**
305
- * A string to describe the type of `html5` object ("default" or "default print").
306
- * @memberOf html5
307
- * @type String
308
- */
309
- type: "default",
310
-
311
- // shivs the document according to the specified `html5` object options
312
- shivDocument: shivDocument,
313
-
314
- //creates a shived element
315
- createElement: createElement,
316
-
317
- //creates a shived documentFragment
318
- createDocumentFragment: createDocumentFragment,
319
-
320
- //extends list of elements
321
- addElements: addElements
322
- };
323
-
324
- /*--------------------------------------------------------------------------*/
325
-
326
- // expose html5
327
- window.html5 = html5;
328
-
329
- // shiv the document
330
- shivDocument(document);
331
-
332
- if (typeof module == "object" && module.exports) {
333
- module.exports = html5;
334
- }
335
- })(typeof window !== "undefined" ? window : this, document);
1
+ /**
2
+ * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3
+ */
4
+ (function(window, document) {
5
+ /*jshint evil:true */
6
+ /** version */
7
+ var version = "3.7.3-pre";
8
+
9
+ /** Preset options */
10
+ var options = window.html5 || {};
11
+
12
+ /** Used to skip problem elements */
13
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
14
+
15
+ /** Not all elements can be cloned in IE **/
16
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
17
+
18
+ /** Detect whether the browser supports default html5 styles */
19
+ var supportsHtml5Styles;
20
+
21
+ /** Name of the expando, to work with multiple documents or to re-shiv one document */
22
+ var expando = "_html5shiv";
23
+
24
+ /** The id for the the documents expando */
25
+ var expanID = 0;
26
+
27
+ /** Cached data for each document */
28
+ var expandoData = {};
29
+
30
+ /** Detect whether the browser supports unknown elements */
31
+ var supportsUnknownElements;
32
+
33
+ (function() {
34
+ try {
35
+ var a = document.createElement("a");
36
+ a.innerHTML = "<xyz></xyz>";
37
+ //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
38
+ supportsHtml5Styles = "hidden" in a;
39
+
40
+ supportsUnknownElements =
41
+ a.childNodes.length == 1 ||
42
+ (function() {
43
+ // assign a false positive if unable to shiv
44
+ document.createElement("a");
45
+ var frag = document.createDocumentFragment();
46
+ return (
47
+ typeof frag.cloneNode == "undefined" ||
48
+ typeof frag.createDocumentFragment == "undefined" ||
49
+ typeof frag.createElement == "undefined"
50
+ );
51
+ })();
52
+ } catch (e) {
53
+ // assign a false positive if detection fails => unable to shiv
54
+ supportsHtml5Styles = true;
55
+ supportsUnknownElements = true;
56
+ }
57
+ })();
58
+
59
+ /*--------------------------------------------------------------------------*/
60
+
61
+ /**
62
+ * Creates a style sheet with the given CSS text and adds it to the document.
63
+ * @private
64
+ * @param {Document} ownerDocument The document.
65
+ * @param {String} cssText The CSS text.
66
+ * @returns {StyleSheet} The style element.
67
+ */
68
+ function addStyleSheet(ownerDocument, cssText) {
69
+ var p = ownerDocument.createElement("p"),
70
+ parent =
71
+ ownerDocument.getElementsByTagName("head")[0] ||
72
+ ownerDocument.documentElement;
73
+
74
+ p.innerHTML = "x<style>" + cssText + "</style>";
75
+ return parent.insertBefore(p.lastChild, parent.firstChild);
76
+ }
77
+
78
+ /**
79
+ * Returns the value of `html5.elements` as an array.
80
+ * @private
81
+ * @returns {Array} An array of shived element node names.
82
+ */
83
+ function getElements() {
84
+ var elements = html5.elements;
85
+ return typeof elements == "string" ? elements.split(" ") : elements;
86
+ }
87
+
88
+ /**
89
+ * Extends the built-in list of html5 elements
90
+ * @memberOf html5
91
+ * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
92
+ * @param {Document} ownerDocument The context document.
93
+ */
94
+ function addElements(newElements, ownerDocument) {
95
+ var elements = html5.elements;
96
+ if (typeof elements != "string") {
97
+ elements = elements.join(" ");
98
+ }
99
+ if (typeof newElements != "string") {
100
+ newElements = newElements.join(" ");
101
+ }
102
+ html5.elements = elements + " " + newElements;
103
+ shivDocument(ownerDocument);
104
+ }
105
+
106
+ /**
107
+ * Returns the data associated to the given document
108
+ * @private
109
+ * @param {Document} ownerDocument The document.
110
+ * @returns {Object} An object of data.
111
+ */
112
+ function getExpandoData(ownerDocument) {
113
+ var data = expandoData[ownerDocument[expando]];
114
+ if (!data) {
115
+ data = {};
116
+ expanID++;
117
+ ownerDocument[expando] = expanID;
118
+ expandoData[expanID] = data;
119
+ }
120
+ return data;
121
+ }
122
+
123
+ /**
124
+ * returns a shived element for the given nodeName and document
125
+ * @memberOf html5
126
+ * @param {String} nodeName name of the element
127
+ * @param {Document} ownerDocument The context document.
128
+ * @returns {Object} The shived element.
129
+ */
130
+ function createElement(nodeName, ownerDocument, data) {
131
+ if (!ownerDocument) {
132
+ ownerDocument = document;
133
+ }
134
+ if (supportsUnknownElements) {
135
+ return ownerDocument.createElement(nodeName);
136
+ }
137
+ if (!data) {
138
+ data = getExpandoData(ownerDocument);
139
+ }
140
+ var node;
141
+
142
+ if (data.cache[nodeName]) {
143
+ node = data.cache[nodeName].cloneNode();
144
+ } else if (saveClones.test(nodeName)) {
145
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
146
+ } else {
147
+ node = data.createElem(nodeName);
148
+ }
149
+
150
+ // Avoid adding some elements to fragments in IE < 9 because
151
+ // * Attributes like `name` or `type` cannot be set/changed once an element
152
+ // is inserted into a document/fragment
153
+ // * Link elements with `src` attributes that are inaccessible, as with
154
+ // a 403 response, will cause the tab/window to crash
155
+ // * Script elements appended to fragments will execute when their `src`
156
+ // or `text` property is set
157
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn
158
+ ? data.frag.appendChild(node)
159
+ : node;
160
+ }
161
+
162
+ /**
163
+ * returns a shived DocumentFragment for the given document
164
+ * @memberOf html5
165
+ * @param {Document} ownerDocument The context document.
166
+ * @returns {Object} The shived DocumentFragment.
167
+ */
168
+ function createDocumentFragment(ownerDocument, data) {
169
+ if (!ownerDocument) {
170
+ ownerDocument = document;
171
+ }
172
+ if (supportsUnknownElements) {
173
+ return ownerDocument.createDocumentFragment();
174
+ }
175
+ data = data || getExpandoData(ownerDocument);
176
+ var clone = data.frag.cloneNode(),
177
+ i = 0,
178
+ elems = getElements(),
179
+ l = elems.length;
180
+ for (; i < l; i++) {
181
+ clone.createElement(elems[i]);
182
+ }
183
+ return clone;
184
+ }
185
+
186
+ /**
187
+ * Shivs the `createElement` and `createDocumentFragment` methods of the document.
188
+ * @private
189
+ * @param {Document|DocumentFragment} ownerDocument The document.
190
+ * @param {Object} data of the document.
191
+ */
192
+ function shivMethods(ownerDocument, data) {
193
+ if (!data.cache) {
194
+ data.cache = {};
195
+ data.createElem = ownerDocument.createElement;
196
+ data.createFrag = ownerDocument.createDocumentFragment;
197
+ data.frag = data.createFrag();
198
+ }
199
+
200
+ ownerDocument.createElement = function(nodeName) {
201
+ //abort shiv
202
+ if (!html5.shivMethods) {
203
+ return data.createElem(nodeName);
204
+ }
205
+ return createElement(nodeName, ownerDocument, data);
206
+ };
207
+
208
+ ownerDocument.createDocumentFragment = Function(
209
+ "h,f",
210
+ "return function(){" +
211
+ "var n=f.cloneNode(),c=n.createElement;" +
212
+ "h.shivMethods&&(" +
213
+ // unroll the `createElement` calls
214
+ getElements()
215
+ .join()
216
+ .replace(/[\w\-:]+/g, function(nodeName) {
217
+ data.createElem(nodeName);
218
+ data.frag.createElement(nodeName);
219
+ return 'c("' + nodeName + '")';
220
+ }) +
221
+ ");return n}"
222
+ )(html5, data.frag);
223
+ }
224
+
225
+ /*--------------------------------------------------------------------------*/
226
+
227
+ /**
228
+ * Shivs the given document.
229
+ * @memberOf html5
230
+ * @param {Document} ownerDocument The document to shiv.
231
+ * @returns {Document} The shived document.
232
+ */
233
+ function shivDocument(ownerDocument) {
234
+ if (!ownerDocument) {
235
+ ownerDocument = document;
236
+ }
237
+ var data = getExpandoData(ownerDocument);
238
+
239
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
240
+ data.hasCSS = !!addStyleSheet(
241
+ ownerDocument,
242
+ // corrects block display not defined in IE6/7/8/9
243
+ "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}" +
244
+ // adds styling not present in IE6/7/8/9
245
+ "mark{background:#FF0;color:#000}" +
246
+ // hides non-rendered elements
247
+ "template{display:none}"
248
+ );
249
+ }
250
+ if (!supportsUnknownElements) {
251
+ shivMethods(ownerDocument, data);
252
+ }
253
+ return ownerDocument;
254
+ }
255
+
256
+ /*--------------------------------------------------------------------------*/
257
+
258
+ /**
259
+ * The `html5` object is exposed so that more elements can be shived and
260
+ * existing shiving can be detected on iframes.
261
+ * @type Object
262
+ * @example
263
+ *
264
+ * // options can be changed before the script is included
265
+ * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
266
+ */
267
+ var html5 = {
268
+ /**
269
+ * An array or space separated string of node names of the elements to shiv.
270
+ * @memberOf html5
271
+ * @type Array|String
272
+ */
273
+ elements:
274
+ options.elements ||
275
+ "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",
276
+
277
+ /**
278
+ * current version of html5shiv
279
+ */
280
+ version: version,
281
+
282
+ /**
283
+ * A flag to indicate that the HTML5 style sheet should be inserted.
284
+ * @memberOf html5
285
+ * @type Boolean
286
+ */
287
+ shivCSS: options.shivCSS !== false,
288
+
289
+ /**
290
+ * Is equal to true if a browser supports creating unknown/HTML5 elements
291
+ * @memberOf html5
292
+ * @type boolean
293
+ */
294
+ supportsUnknownElements: supportsUnknownElements,
295
+
296
+ /**
297
+ * A flag to indicate that the document's `createElement` and `createDocumentFragment`
298
+ * methods should be overwritten.
299
+ * @memberOf html5
300
+ * @type Boolean
301
+ */
302
+ shivMethods: options.shivMethods !== false,
303
+
304
+ /**
305
+ * A string to describe the type of `html5` object ("default" or "default print").
306
+ * @memberOf html5
307
+ * @type String
308
+ */
309
+ type: "default",
310
+
311
+ // shivs the document according to the specified `html5` object options
312
+ shivDocument: shivDocument,
313
+
314
+ //creates a shived element
315
+ createElement: createElement,
316
+
317
+ //creates a shived documentFragment
318
+ createDocumentFragment: createDocumentFragment,
319
+
320
+ //extends list of elements
321
+ addElements: addElements
322
+ };
323
+
324
+ /*--------------------------------------------------------------------------*/
325
+
326
+ // expose html5
327
+ window.html5 = html5;
328
+
329
+ // shiv the document
330
+ shivDocument(document);
331
+
332
+ if (typeof module == "object" && module.exports) {
333
+ module.exports = html5;
334
+ }
335
+ })(typeof window !== "undefined" ? window : this, document);