11/**
2- * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
2+ * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
33*/
4- ! function ( a , b ) { function c ( a , b ) { var c = a . createElement ( "p" ) , d = a . getElementsByTagName ( "head" ) [ 0 ] || a . documentElement ; return c . innerHTML = "x<style>" + b + "</style>" , d . insertBefore ( c . lastChild , d . firstChild ) } function d ( ) { var a = t . elements ; return "string" == typeof a ?a . split ( " " ) :a } function e ( a , b ) { var c = t . elements ; "string" != typeof c && ( c = c . join ( " " ) ) , "string" != typeof a && ( a = a . join ( " " ) ) , t . elements = c + " " + a , j ( b ) } function f ( a ) { var b = s [ a [ q ] ] ; return b || ( b = { } , r ++ , a [ q ] = r , s [ r ] = b ) , b } function g ( a , c , d ) { if ( c || ( c = b ) , l ) return c . createElement ( a ) ; d || ( d = f ( c ) ) ; var e ; return e = d . cache [ a ] ?d . cache [ a ] . cloneNode ( ) :p . test ( a ) ?( d . cache [ a ] = d . createElem ( a ) ) . cloneNode ( ) :d . createElem ( a ) , ! e . canHaveChildren || o . test ( a ) || e . tagUrn ?e :d . frag . appendChild ( e ) } function h ( a , c ) { if ( a || ( a = b ) , l ) return a . createDocumentFragment ( ) ; c = c || f ( a ) ; for ( var e = c . frag . cloneNode ( ) , g = 0 , h = d ( ) , i = h . length ; i > g ; g ++ ) e . createElement ( h [ g ] ) ; return e } function i ( a , b ) { b . cache || ( b . cache = { } , b . createElem = a . createElement , b . createFrag = a . createDocumentFragment , b . frag = b . createFrag ( ) ) , a . createElement = function ( c ) { return t . shivMethods ?g ( c , a , b ) :b . createElem ( c ) } , a . createDocumentFragment = Function ( "h,f" , "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + d ( ) . join ( ) . replace ( / [ \w \- : ] + / g, function ( a ) { return b . createElem ( a ) , b . frag . createElement ( a ) , 'c("' + a + '")' } ) + ");return n}" ) ( t , b . frag ) } function j ( a ) { a || ( a = b ) ; var d = f ( a ) ; return ! t . shivCSS || k || d . hasCSS || ( d . hasCSS = ! ! c ( a , "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}" ) ) , l || i ( a , d ) , a } var k , l , m = "3.7.2" , n = a . html5 || { } , o = / ^ < | ^ (?: b u t t o n | m a p | s e l e c t | t e x t a r e a | o b j e c t | i f r a m e | o p t i o n | o p t g r o u p ) $ / i, p = / ^ (?: a | b | c o d e | d i v | f i e l d s e t | h 1 | h 2 | h 3 | h 4 | h 5 | h 6 | i | l a b e l | l i | o l | p | q | s p a n | s t r o n g | s t y l e | t a b l e | t b o d y | t d | t h | t r | u l ) $ / i, q = "_html5shiv" , r = 0 , s = { } ; ! function ( ) { try { var a = b . createElement ( "a" ) ; a . innerHTML = "<xyz></xyz>" , k = "hidden" in a , l = 1 == a . childNodes . length || function ( ) { b . createElement ( "a" ) ; var a = b . createDocumentFragment ( ) ; return "undefined" == typeof a . cloneNode || "undefined" == typeof a . createDocumentFragment || "undefined" == typeof a . createElement } ( ) } catch ( c ) { k = ! 0 , l = ! 0 } } ( ) ; var t = { elements :n . elements || "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" , version :m , shivCSS :n . shivCSS !== ! 1 , supportsUnknownElements :l , shivMethods :n . shivMethods !== ! 1 , type :"default" , shivDocument :j , createElement :g , createDocumentFragment :h , addElements :e } ; a . html5 = t , j ( b ) } ( this , document ) ;
4+ ; ( function ( window , document ) {
5+ /*jshint evil:true */
6+ /** version */
7+ var version = '3.7.3' ;
8+
9+ /** Preset options */
10+ var options = window . html5 || { } ;
11+
12+ /** Used to skip problem elements */
13+ var reSkip = / ^ < | ^ (?: b u t t o n | m a p | s e l e c t | t e x t a r e a | o b j e c t | i f r a m e | o p t i o n | o p t g r o u p ) $ / i;
14+
15+ /** Not all elements can be cloned in IE **/
16+ var saveClones = / ^ (?: a | b | c o d e | d i v | f i e l d s e t | h 1 | h 2 | h 3 | h 4 | h 5 | h 6 | i | l a b e l | l i | o l | p | q | s p a n | s t r o n g | s t y l e | t a b l e | t b o d y | t d | t h | t r | u l ) $ / 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 = a . childNodes . length == 1 || ( function ( ) {
41+ // assign a false positive if unable to shiv
42+ ( document . createElement ) ( 'a' ) ;
43+ var frag = document . createDocumentFragment ( ) ;
44+ return (
45+ typeof frag . cloneNode == 'undefined' ||
46+ typeof frag . createDocumentFragment == 'undefined' ||
47+ typeof frag . createElement == 'undefined'
48+ ) ;
49+ } ( ) ) ;
50+ } catch ( e ) {
51+ // assign a false positive if detection fails => unable to shiv
52+ supportsHtml5Styles = true ;
53+ supportsUnknownElements = true ;
54+ }
55+
56+ } ( ) ) ;
57+
58+ /*--------------------------------------------------------------------------*/
59+
60+ /**
61+ * Creates a style sheet with the given CSS text and adds it to the document.
62+ * @private
63+ * @param {Document } ownerDocument The document.
64+ * @param {String } cssText The CSS text.
65+ * @returns {StyleSheet } The style element.
66+ */
67+ function addStyleSheet ( ownerDocument , cssText ) {
68+ var p = ownerDocument . createElement ( 'p' ) ,
69+ parent = ownerDocument . getElementsByTagName ( 'head' ) [ 0 ] || ownerDocument . documentElement ;
70+
71+ p . innerHTML = 'x<style>' + cssText + '</style>' ;
72+ return parent . insertBefore ( p . lastChild , parent . firstChild ) ;
73+ }
74+
75+ /**
76+ * Returns the value of `html5.elements` as an array.
77+ * @private
78+ * @returns {Array } An array of shived element node names.
79+ */
80+ function getElements ( ) {
81+ var elements = html5 . elements ;
82+ return typeof elements == 'string' ? elements . split ( ' ' ) : elements ;
83+ }
84+
85+ /**
86+ * Extends the built-in list of html5 elements
87+ * @memberOf html5
88+ * @param {String|Array } newElements whitespace separated list or array of new element names to shiv
89+ * @param {Document } ownerDocument The context document.
90+ */
91+ function addElements ( newElements , ownerDocument ) {
92+ var elements = html5 . elements ;
93+ if ( typeof elements != 'string' ) {
94+ elements = elements . join ( ' ' ) ;
95+ }
96+ if ( typeof newElements != 'string' ) {
97+ newElements = newElements . join ( ' ' ) ;
98+ }
99+ html5 . elements = elements + ' ' + newElements ;
100+ shivDocument ( ownerDocument ) ;
101+ }
102+
103+ /**
104+ * Returns the data associated to the given document
105+ * @private
106+ * @param {Document } ownerDocument The document.
107+ * @returns {Object } An object of data.
108+ */
109+ function getExpandoData ( ownerDocument ) {
110+ var data = expandoData [ ownerDocument [ expando ] ] ;
111+ if ( ! data ) {
112+ data = { } ;
113+ expanID ++ ;
114+ ownerDocument [ expando ] = expanID ;
115+ expandoData [ expanID ] = data ;
116+ }
117+ return data ;
118+ }
119+
120+ /**
121+ * returns a shived element for the given nodeName and document
122+ * @memberOf html5
123+ * @param {String } nodeName name of the element
124+ * @param {Document|DocumentFragment } ownerDocument The context document.
125+ * @returns {Object } The shived element.
126+ */
127+ function createElement ( nodeName , ownerDocument , data ) {
128+ if ( ! ownerDocument ) {
129+ ownerDocument = document ;
130+ }
131+ if ( supportsUnknownElements ) {
132+ return ownerDocument . createElement ( nodeName ) ;
133+ }
134+ if ( ! data ) {
135+ data = getExpandoData ( ownerDocument ) ;
136+ }
137+ var node ;
138+
139+ if ( data . cache [ nodeName ] ) {
140+ node = data . cache [ nodeName ] . cloneNode ( ) ;
141+ } else if ( saveClones . test ( nodeName ) ) {
142+ node = ( data . cache [ nodeName ] = data . createElem ( nodeName ) ) . cloneNode ( ) ;
143+ } else {
144+ node = data . createElem ( nodeName ) ;
145+ }
146+
147+ // Avoid adding some elements to fragments in IE < 9 because
148+ // * Attributes like `name` or `type` cannot be set/changed once an element
149+ // is inserted into a document/fragment
150+ // * Link elements with `src` attributes that are inaccessible, as with
151+ // a 403 response, will cause the tab/window to crash
152+ // * Script elements appended to fragments will execute when their `src`
153+ // or `text` property is set
154+ return node . canHaveChildren && ! reSkip . test ( nodeName ) && ! node . tagUrn ? data . frag . appendChild ( node ) : node ;
155+ }
156+
157+ /**
158+ * returns a shived DocumentFragment for the given document
159+ * @memberOf html5
160+ * @param {Document } ownerDocument The context document.
161+ * @returns {Object } The shived DocumentFragment.
162+ */
163+ function createDocumentFragment ( ownerDocument , data ) {
164+ if ( ! ownerDocument ) {
165+ ownerDocument = document ;
166+ }
167+ if ( supportsUnknownElements ) {
168+ return ownerDocument . createDocumentFragment ( ) ;
169+ }
170+ data = data || getExpandoData ( ownerDocument ) ;
171+ var clone = data . frag . cloneNode ( ) ,
172+ i = 0 ,
173+ elems = getElements ( ) ,
174+ l = elems . length ;
175+ for ( ; i < l ; i ++ ) {
176+ clone . createElement ( elems [ i ] ) ;
177+ }
178+ return clone ;
179+ }
180+
181+ /**
182+ * Shivs the `createElement` and `createDocumentFragment` methods of the document.
183+ * @private
184+ * @param {Document|DocumentFragment } ownerDocument The document.
185+ * @param {Object } data of the document.
186+ */
187+ function shivMethods ( ownerDocument , data ) {
188+ if ( ! data . cache ) {
189+ data . cache = { } ;
190+ data . createElem = ownerDocument . createElement ;
191+ data . createFrag = ownerDocument . createDocumentFragment ;
192+ data . frag = data . createFrag ( ) ;
193+ }
194+
195+
196+ ownerDocument . createElement = function ( nodeName ) {
197+ //abort shiv
198+ if ( ! html5 . shivMethods ) {
199+ return data . createElem ( nodeName ) ;
200+ }
201+ return createElement ( nodeName , ownerDocument , data ) ;
202+ } ;
203+
204+ ownerDocument . createDocumentFragment = Function ( 'h,f' , 'return function(){' +
205+ 'var n=f.cloneNode(),c=n.createElement;' +
206+ 'h.shivMethods&&(' +
207+ // unroll the `createElement` calls
208+ getElements ( ) . join ( ) . replace ( / [ \w \- : ] + / g, function ( nodeName ) {
209+ data . createElem ( nodeName ) ;
210+ data . frag . createElement ( nodeName ) ;
211+ return 'c("' + nodeName + '")' ;
212+ } ) +
213+ ');return n}'
214+ ) ( html5 , data . frag ) ;
215+ }
216+
217+ /*--------------------------------------------------------------------------*/
218+
219+ /**
220+ * Shivs the given document.
221+ * @memberOf html5
222+ * @param {Document } ownerDocument The document to shiv.
223+ * @returns {Document } The shived document.
224+ */
225+ function shivDocument ( ownerDocument ) {
226+ if ( ! ownerDocument ) {
227+ ownerDocument = document ;
228+ }
229+ var data = getExpandoData ( ownerDocument ) ;
230+
231+ if ( html5 . shivCSS && ! supportsHtml5Styles && ! data . hasCSS ) {
232+ data . hasCSS = ! ! addStyleSheet ( ownerDocument ,
233+ // corrects block display not defined in IE6/7/8/9
234+ 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
235+ // adds styling not present in IE6/7/8/9
236+ 'mark{background:#FF0;color:#000}' +
237+ // hides non-rendered elements
238+ 'template{display:none}'
239+ ) ;
240+ }
241+ if ( ! supportsUnknownElements ) {
242+ shivMethods ( ownerDocument , data ) ;
243+ }
244+ return ownerDocument ;
245+ }
246+
247+ /*--------------------------------------------------------------------------*/
248+
249+ /**
250+ * The `html5` object is exposed so that more elements can be shived and
251+ * existing shiving can be detected on iframes.
252+ * @type Object
253+ * @example
254+ *
255+ * // options can be changed before the script is included
256+ * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
257+ */
258+ var html5 = {
259+
260+ /**
261+ * An array or space separated string of node names of the elements to shiv.
262+ * @memberOf html5
263+ * @type Array|String
264+ */
265+ 'elements' : options . elements || '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' ,
266+
267+ /**
268+ * current version of html5shiv
269+ */
270+ 'version' : version ,
271+
272+ /**
273+ * A flag to indicate that the HTML5 style sheet should be inserted.
274+ * @memberOf html5
275+ * @type Boolean
276+ */
277+ 'shivCSS' : ( options . shivCSS !== false ) ,
278+
279+ /**
280+ * Is equal to true if a browser supports creating unknown/HTML5 elements
281+ * @memberOf html5
282+ * @type boolean
283+ */
284+ 'supportsUnknownElements' : supportsUnknownElements ,
285+
286+ /**
287+ * A flag to indicate that the document's `createElement` and `createDocumentFragment`
288+ * methods should be overwritten.
289+ * @memberOf html5
290+ * @type Boolean
291+ */
292+ 'shivMethods' : ( options . shivMethods !== false ) ,
293+
294+ /**
295+ * A string to describe the type of `html5` object ("default" or "default print").
296+ * @memberOf html5
297+ * @type String
298+ */
299+ 'type' : 'default' ,
300+
301+ // shivs the document according to the specified `html5` object options
302+ 'shivDocument' : shivDocument ,
303+
304+ //creates a shived element
305+ createElement : createElement ,
306+
307+ //creates a shived documentFragment
308+ createDocumentFragment : createDocumentFragment ,
309+
310+ //extends list of elements
311+ addElements : addElements
312+ } ;
313+
314+ /*--------------------------------------------------------------------------*/
315+
316+ // expose html5
317+ window . html5 = html5 ;
318+
319+ // shiv the document
320+ shivDocument ( document ) ;
321+
322+ if ( typeof module == 'object' && module . exports ) {
323+ module . exports = html5 ;
324+ }
325+
326+ } ( typeof window !== "undefined" ? window : this , document ) ) ;
0 commit comments