2020-11-18 04:29:03 +03:00
import { c as createCommonjsModule , g as getDefaultExportFromCjs , a as commonjsGlobal } from '../../../common/_commonjsHelpers-37fa8da4.js' ;
2021-06-05 05:47:59 +03:00
import { d as document _1 , w as window _1 , c as core } from '../../../common/core-d20ff47c.js' ;
2020-10-05 18:43:38 +03:00
2021-01-21 09:11:50 +03:00
var entityMap = {
lt : '<' ,
gt : '>' ,
amp : '&' ,
quot : '"' ,
apos : "'" ,
Agrave : "À" ,
Aacute : "Á" ,
Acirc : "Â" ,
Atilde : "Ã" ,
Auml : "Ä" ,
Aring : "Å" ,
AElig : "Æ" ,
Ccedil : "Ç" ,
Egrave : "È" ,
Eacute : "É" ,
Ecirc : "Ê" ,
Euml : "Ë" ,
Igrave : "Ì" ,
Iacute : "Í" ,
Icirc : "Î" ,
Iuml : "Ï" ,
ETH : "Ð" ,
Ntilde : "Ñ" ,
Ograve : "Ò" ,
Oacute : "Ó" ,
Ocirc : "Ô" ,
Otilde : "Õ" ,
Ouml : "Ö" ,
Oslash : "Ø" ,
Ugrave : "Ù" ,
Uacute : "Ú" ,
Ucirc : "Û" ,
Uuml : "Ü" ,
Yacute : "Ý" ,
THORN : "Þ" ,
szlig : "ß" ,
agrave : "à" ,
aacute : "á" ,
acirc : "â" ,
atilde : "ã" ,
auml : "ä" ,
aring : "å" ,
aelig : "æ" ,
ccedil : "ç" ,
egrave : "è" ,
eacute : "é" ,
ecirc : "ê" ,
euml : "ë" ,
igrave : "ì" ,
iacute : "í" ,
icirc : "î" ,
iuml : "ï" ,
eth : "ð" ,
ntilde : "ñ" ,
ograve : "ò" ,
oacute : "ó" ,
ocirc : "ô" ,
otilde : "õ" ,
ouml : "ö" ,
oslash : "ø" ,
ugrave : "ù" ,
uacute : "ú" ,
ucirc : "û" ,
uuml : "ü" ,
yacute : "ý" ,
thorn : "þ" ,
yuml : "ÿ" ,
nbsp : "\u00a0" ,
iexcl : "¡" ,
cent : "¢" ,
pound : "£" ,
curren : "¤" ,
yen : "¥" ,
brvbar : "¦" ,
sect : "§" ,
uml : "¨" ,
copy : "©" ,
ordf : "ª" ,
laquo : "«" ,
not : "¬" ,
shy : " " ,
reg : "®" ,
macr : "¯" ,
deg : "°" ,
plusmn : "±" ,
sup2 : "²" ,
sup3 : "³" ,
acute : "´ " ,
micro : "µ" ,
para : "¶" ,
middot : "·" ,
cedil : "¸ " ,
sup1 : "¹" ,
ordm : "º" ,
raquo : "»" ,
frac14 : "¼" ,
frac12 : "½" ,
frac34 : "¾" ,
iquest : "¿" ,
times : "× " ,
divide : "÷" ,
forall : "∀" ,
part : "∂" ,
exist : "∃" ,
empty : "∅" ,
nabla : "∇" ,
isin : "∈" ,
notin : "∉" ,
ni : "∋" ,
prod : "∏" ,
sum : "∑" ,
minus : "− " ,
lowast : "∗ " ,
radic : "√" ,
prop : "∝" ,
infin : "∞" ,
ang : "∠" ,
and : "∧" ,
or : "∨ " ,
cap : "∩" ,
cup : "∪ " ,
'int' : "∫" ,
there4 : "∴" ,
sim : "∼ " ,
cong : "≅" ,
asymp : "≈" ,
ne : "≠" ,
equiv : "≡" ,
le : "≤" ,
ge : "≥" ,
sub : "⊂" ,
sup : "⊃" ,
nsub : "⊄" ,
sube : "⊆" ,
supe : "⊇" ,
oplus : "⊕" ,
otimes : "⊗" ,
perp : "⊥" ,
sdot : "⋅" ,
Alpha : "Α " ,
Beta : "Β " ,
Gamma : "Γ" ,
Delta : "Δ" ,
Epsilon : "Ε " ,
Zeta : "Ζ " ,
Eta : "Η " ,
Theta : "Θ" ,
Iota : "Ι " ,
Kappa : "Κ " ,
Lambda : "Λ" ,
Mu : "Μ " ,
Nu : "Ν " ,
Xi : "Ξ" ,
Omicron : "Ο " ,
Pi : "Π" ,
Rho : "Ρ " ,
Sigma : "Σ" ,
Tau : "Τ " ,
Upsilon : "Υ " ,
Phi : "Φ" ,
Chi : "Χ " ,
Psi : "Ψ" ,
Omega : "Ω" ,
alpha : "α " ,
beta : "β" ,
gamma : "γ " ,
delta : "δ" ,
epsilon : "ε" ,
zeta : "ζ" ,
eta : "η" ,
theta : "θ" ,
iota : "ι " ,
kappa : "κ" ,
lambda : "λ" ,
mu : "μ" ,
nu : "ν " ,
xi : "ξ" ,
omicron : "ο " ,
pi : "π" ,
rho : "ρ " ,
sigmaf : "ς" ,
sigma : "σ " ,
tau : "τ" ,
upsilon : "υ " ,
phi : "φ" ,
chi : "χ" ,
psi : "ψ" ,
omega : "ω" ,
thetasym : "ϑ" ,
upsih : "ϒ " ,
piv : "ϖ" ,
OElig : "Œ" ,
oelig : "œ" ,
Scaron : "Š" ,
scaron : "š" ,
Yuml : "Ÿ" ,
fnof : "ƒ" ,
circ : "ˆ " ,
tilde : "˜ " ,
ensp : " " ,
emsp : " " ,
thinsp : " " ,
zwnj : " " ,
zwj : " " ,
lrm : " " ,
rlm : " " ,
ndash : "– " ,
mdash : "—" ,
lsquo : "‘ " ,
rsquo : "’ " ,
sbquo : "‚ " ,
ldquo : "“" ,
rdquo : "”" ,
bdquo : "„" ,
dagger : "†" ,
Dagger : "‡" ,
bull : "•" ,
hellip : "…" ,
permil : "‰" ,
prime : "′ " ,
Prime : "″" ,
lsaquo : "‹ " ,
rsaquo : "› " ,
oline : "‾" ,
euro : "€" ,
trade : "™" ,
larr : "←" ,
uarr : "↑" ,
rarr : "→" ,
darr : "↓" ,
harr : "↔" ,
crarr : "↵" ,
lceil : "⌈" ,
rceil : "⌉" ,
lfloor : "⌊" ,
rfloor : "⌋" ,
loz : "◊" ,
spades : "♠" ,
clubs : "♣" ,
hearts : "♥" ,
diams : "♦"
} ;
var entities = {
entityMap : entityMap
} ;
//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
//[5] Name ::= NameStartChar (NameChar)*
var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ ; //\u10000-\uEFFFF
var nameChar = new RegExp ( "[\\-\\.0-9" + nameStartChar . source . slice ( 1 , - 1 ) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]" ) ;
var tagNamePattern = new RegExp ( '^' + nameStartChar . source + nameChar . source + '*(?:\:' + nameStartChar . source + nameChar . source + '*)?$' ) ;
//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/
//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')
//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
var S _TAG = 0 ; //tag name offerring
var S _ATTR = 1 ; //attr name offerring
var S _ATTR _SPACE = 2 ; //attr name end and space offer
var S _EQ = 3 ; //=space?
var S _ATTR _NOQUOT _VALUE = 4 ; //attr value(no quot value only)
var S _ATTR _END = 5 ; //attr value end and no space(quot end)
var S _TAG _SPACE = 6 ; //(attr value end || tag end ) && (space offer)
var S _TAG _CLOSE = 7 ; //closed el<el />
2021-04-07 10:06:17 +03:00
/ * *
* Creates an error that will not be caught by XMLReader aka the SAX parser .
*
* @ param { string } message
* @ param { any ? } locator Optional , can provide details about the location in the source
* @ constructor
* /
function ParseError ( message , locator ) {
this . message = message ;
this . locator = locator ;
if ( Error . captureStackTrace ) Error . captureStackTrace ( this , ParseError ) ;
}
ParseError . prototype = new Error ( ) ;
ParseError . prototype . name = ParseError . name ;
2021-01-21 09:11:50 +03:00
function XMLReader ( ) {
}
XMLReader . prototype = {
parse : function ( source , defaultNSMap , entityMap ) {
var domBuilder = this . domBuilder ;
domBuilder . startDocument ( ) ;
_copy ( defaultNSMap , defaultNSMap = { } ) ;
parse ( source , defaultNSMap , entityMap ,
domBuilder , this . errorHandler ) ;
domBuilder . endDocument ( ) ;
}
} ;
function parse ( source , defaultNSMapCopy , entityMap , domBuilder , errorHandler ) {
function fixedFromCharCode ( code ) {
// String.prototype.fromCharCode does not supports
// > 2 bytes unicode chars directly
if ( code > 0xffff ) {
code -= 0x10000 ;
var surrogate1 = 0xd800 + ( code >> 10 )
, surrogate2 = 0xdc00 + ( code & 0x3ff ) ;
return String . fromCharCode ( surrogate1 , surrogate2 ) ;
} else {
return String . fromCharCode ( code ) ;
}
}
function entityReplacer ( a ) {
var k = a . slice ( 1 , - 1 ) ;
if ( k in entityMap ) {
return entityMap [ k ] ;
} else if ( k . charAt ( 0 ) === '#' ) {
return fixedFromCharCode ( parseInt ( k . substr ( 1 ) . replace ( 'x' , '0x' ) ) )
} else {
errorHandler . error ( 'entity not found:' + a ) ;
return a ;
}
}
function appendText ( end ) { //has some bugs
if ( end > start ) {
var xt = source . substring ( start , end ) . replace ( /&#?\w+;/g , entityReplacer ) ;
locator && position ( start ) ;
domBuilder . characters ( xt , 0 , end - start ) ;
start = end ;
}
}
function position ( p , m ) {
while ( p >= lineEnd && ( m = linePattern . exec ( source ) ) ) {
lineStart = m . index ;
lineEnd = lineStart + m [ 0 ] . length ;
locator . lineNumber ++ ;
//console.log('line++:',locator,startPos,endPos)
}
locator . columnNumber = p - lineStart + 1 ;
}
var lineStart = 0 ;
var lineEnd = 0 ;
var linePattern = /.*(?:\r\n?|\n)|.*$/g ;
var locator = domBuilder . locator ;
var parseStack = [ { currentNSMap : defaultNSMapCopy } ] ;
var closeMap = { } ;
var start = 0 ;
while ( true ) {
try {
var tagStart = source . indexOf ( '<' , start ) ;
if ( tagStart < 0 ) {
if ( ! source . substr ( start ) . match ( /^\s*$/ ) ) {
var doc = domBuilder . doc ;
var text = doc . createTextNode ( source . substr ( start ) ) ;
doc . appendChild ( text ) ;
domBuilder . currentElement = text ;
}
return ;
}
if ( tagStart > start ) {
appendText ( tagStart ) ;
}
switch ( source . charAt ( tagStart + 1 ) ) {
case '/' :
var end = source . indexOf ( '>' , tagStart + 3 ) ;
var tagName = source . substring ( tagStart + 2 , end ) ;
var config = parseStack . pop ( ) ;
if ( end < 0 ) {
tagName = source . substring ( tagStart + 2 ) . replace ( /[\s<].*/ , '' ) ;
//console.error('#@@@@@@'+tagName)
errorHandler . error ( "end tag name: " + tagName + ' is not complete:' + config . tagName ) ;
end = tagStart + 1 + tagName . length ;
} else if ( tagName . match ( /\s</ ) ) {
tagName = tagName . replace ( /[\s<].*/ , '' ) ;
errorHandler . error ( "end tag name: " + tagName + ' maybe not complete' ) ;
end = tagStart + 1 + tagName . length ;
}
//console.error(parseStack.length,parseStack)
//console.error(config);
var localNSMap = config . localNSMap ;
var endMatch = config . tagName == tagName ;
var endIgnoreCaseMach = endMatch || config . tagName && config . tagName . toLowerCase ( ) == tagName . toLowerCase ( ) ;
if ( endIgnoreCaseMach ) {
domBuilder . endElement ( config . uri , config . localName , tagName ) ;
if ( localNSMap ) {
for ( var prefix in localNSMap ) {
domBuilder . endPrefixMapping ( prefix ) ;
}
}
if ( ! endMatch ) {
2021-04-07 10:06:17 +03:00
errorHandler . fatalError ( "end tag name: " + tagName + ' is not match the current start tagName:' + config . tagName ) ; // No known test case
2021-01-21 09:11:50 +03:00
}
} else {
parseStack . push ( config ) ;
}
end ++ ;
break ;
// end elment
case '?' : // <?...?>
locator && position ( tagStart ) ;
end = parseInstruction ( source , tagStart , domBuilder ) ;
break ;
case '!' : // <!doctype,<![CDATA,<!--
locator && position ( tagStart ) ;
end = parseDCC ( source , tagStart , domBuilder , errorHandler ) ;
break ;
default :
locator && position ( tagStart ) ;
var el = new ElementAttributes ( ) ;
var currentNSMap = parseStack [ parseStack . length - 1 ] . currentNSMap ;
//elStartEnd
var end = parseElementStartPart ( source , tagStart , el , currentNSMap , entityReplacer , errorHandler ) ;
var len = el . length ;
if ( ! el . closed && fixSelfClosed ( source , end , el . tagName , closeMap ) ) {
el . closed = true ;
if ( ! entityMap . nbsp ) {
errorHandler . warning ( 'unclosed xml attribute' ) ;
}
}
if ( locator && len ) {
var locator2 = copyLocator ( locator , { } ) ;
//try{//attribute position fixed
for ( var i = 0 ; i < len ; i ++ ) {
var a = el [ i ] ;
position ( a . offset ) ;
a . locator = copyLocator ( locator , { } ) ;
}
//}catch(e){console.error('@@@@@'+e)}
domBuilder . locator = locator2 ;
if ( appendElement ( el , domBuilder , currentNSMap ) ) {
parseStack . push ( el ) ;
}
domBuilder . locator = locator ;
} else {
if ( appendElement ( el , domBuilder , currentNSMap ) ) {
parseStack . push ( el ) ;
}
}
if ( el . uri === 'http://www.w3.org/1999/xhtml' && ! el . closed ) {
end = parseHtmlSpecialContent ( source , end , el . tagName , entityReplacer , domBuilder ) ;
} else {
end ++ ;
}
}
} catch ( e ) {
2021-04-07 10:06:17 +03:00
if ( e instanceof ParseError ) {
throw e ;
}
2021-01-21 09:11:50 +03:00
errorHandler . error ( 'element parse error: ' + e ) ;
end = - 1 ;
}
if ( end > start ) {
start = end ;
} else {
//TODO: 这里有可能sax回退, 有位置错误风险
appendText ( Math . max ( tagStart , start ) + 1 ) ;
}
}
}
function copyLocator ( f , t ) {
t . lineNumber = f . lineNumber ;
t . columnNumber = f . columnNumber ;
return t ;
}
/ * *
* @ see # appendElement ( source , elStartEnd , el , selfClosed , entityReplacer , domBuilder , parseStack ) ;
* @ return end of the elementStartPart ( end of elementEndPart for selfClosed el )
* /
function parseElementStartPart ( source , start , el , currentNSMap , entityReplacer , errorHandler ) {
2021-04-07 10:06:17 +03:00
/ * *
* @ param { string } qname
* @ param { string } value
* @ param { number } startIndex
* /
function addAttribute ( qname , value , startIndex ) {
if ( qname in el . attributeNames ) errorHandler . fatalError ( 'Attribute ' + qname + ' redefined' ) ;
el . addValue ( qname , value , startIndex ) ;
}
2021-01-21 09:11:50 +03:00
var attrName ;
var value ;
var p = ++ start ;
var s = S _TAG ; //status
while ( true ) {
var c = source . charAt ( p ) ;
switch ( c ) {
case '=' :
if ( s === S _ATTR ) { //attrName
attrName = source . slice ( start , p ) ;
s = S _EQ ;
} else if ( s === S _ATTR _SPACE ) {
s = S _EQ ;
} else {
//fatalError: equal must after attrName or space after attrName
2021-04-07 10:06:17 +03:00
throw new Error ( 'attribute equal must after attrName' ) ; // No known test case
2021-01-21 09:11:50 +03:00
}
break ;
case '\'' :
case '"' :
if ( s === S _EQ || s === S _ATTR //|| s == S_ATTR_SPACE
) { //equal
if ( s === S _ATTR ) {
errorHandler . warning ( 'attribute value must after "="' ) ;
attrName = source . slice ( start , p ) ;
}
start = p + 1 ;
p = source . indexOf ( c , start ) ;
if ( p > 0 ) {
value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
2021-04-07 10:06:17 +03:00
addAttribute ( attrName , value , start - 1 ) ;
2021-01-21 09:11:50 +03:00
s = S _ATTR _END ;
} else {
//fatalError: no end quot match
throw new Error ( 'attribute value no end \'' + c + '\' match' ) ;
}
} else if ( s == S _ATTR _NOQUOT _VALUE ) {
value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
//console.log(attrName,value,start,p)
2021-04-07 10:06:17 +03:00
addAttribute ( attrName , value , start ) ;
2021-01-21 09:11:50 +03:00
//console.dir(el)
errorHandler . warning ( 'attribute "' + attrName + '" missed start quot(' + c + ')!!' ) ;
start = p + 1 ;
s = S _ATTR _END ;
} else {
//fatalError: no equal before
2021-04-07 10:06:17 +03:00
throw new Error ( 'attribute value must after "="' ) ; // No known test case
2021-01-21 09:11:50 +03:00
}
break ;
case '/' :
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ;
case S _ATTR _END :
case S _TAG _SPACE :
case S _TAG _CLOSE :
s = S _TAG _CLOSE ;
el . closed = true ;
case S _ATTR _NOQUOT _VALUE :
case S _ATTR :
case S _ATTR _SPACE :
break ;
//case S_EQ:
default :
2021-04-07 10:06:17 +03:00
throw new Error ( "attribute invalid close char('/')" ) // No known test case
2021-01-21 09:11:50 +03:00
}
break ;
case '' : //end document
errorHandler . error ( 'unexpected end of input' ) ;
if ( s == S _TAG ) {
el . setTagName ( source . slice ( start , p ) ) ;
}
return p ;
case '>' :
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ;
case S _ATTR _END :
case S _TAG _SPACE :
case S _TAG _CLOSE :
break ; //normal
case S _ATTR _NOQUOT _VALUE : //Compatible state
case S _ATTR :
value = source . slice ( start , p ) ;
if ( value . slice ( - 1 ) === '/' ) {
el . closed = true ;
value = value . slice ( 0 , - 1 ) ;
}
case S _ATTR _SPACE :
if ( s === S _ATTR _SPACE ) {
value = attrName ;
}
if ( s == S _ATTR _NOQUOT _VALUE ) {
2021-04-07 10:06:17 +03:00
errorHandler . warning ( 'attribute "' + value + '" missed quot(")!' ) ;
addAttribute ( attrName , value . replace ( /&#?\w+;/g , entityReplacer ) , start ) ;
2021-01-21 09:11:50 +03:00
} else {
if ( currentNSMap [ '' ] !== 'http://www.w3.org/1999/xhtml' || ! value . match ( /^(?:disabled|checked|selected)$/i ) ) {
errorHandler . warning ( 'attribute "' + value + '" missed value!! "' + value + '" instead!!' ) ;
}
2021-04-07 10:06:17 +03:00
addAttribute ( value , value , start ) ;
2021-01-21 09:11:50 +03:00
}
break ;
case S _EQ :
throw new Error ( 'attribute value missed!!' ) ;
}
// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName))
return p ;
/*xml space '\x20' | #x9 | #xD | #xA; */
case '\u0080' :
c = ' ' ;
default :
if ( c <= ' ' ) { //space
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ; //tagName
s = S _TAG _SPACE ;
break ;
case S _ATTR :
attrName = source . slice ( start , p ) ;
s = S _ATTR _SPACE ;
break ;
case S _ATTR _NOQUOT _VALUE :
var value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
errorHandler . warning ( 'attribute "' + value + '" missed quot(")!!' ) ;
2021-04-07 10:06:17 +03:00
addAttribute ( attrName , value , start ) ;
2021-01-21 09:11:50 +03:00
case S _ATTR _END :
s = S _TAG _SPACE ;
break ;
//case S_TAG_SPACE:
//case S_EQ:
//case S_ATTR_SPACE:
// void();break;
//case S_TAG_CLOSE:
//ignore warning
}
} else { //not space
//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
switch ( s ) {
//case S_TAG:void();break;
//case S_ATTR:void();break;
//case S_ATTR_NOQUOT_VALUE:void();break;
case S _ATTR _SPACE :
2021-01-26 21:32:07 +03:00
el . tagName ;
2021-01-21 09:11:50 +03:00
if ( currentNSMap [ '' ] !== 'http://www.w3.org/1999/xhtml' || ! attrName . match ( /^(?:disabled|checked|selected)$/i ) ) {
errorHandler . warning ( 'attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!' ) ;
}
2021-04-07 10:06:17 +03:00
addAttribute ( attrName , attrName , start ) ;
2021-01-21 09:11:50 +03:00
start = p ;
s = S _ATTR ;
break ;
case S _ATTR _END :
errorHandler . warning ( 'attribute space is required"' + attrName + '"!!' ) ;
case S _TAG _SPACE :
s = S _ATTR ;
start = p ;
break ;
case S _EQ :
s = S _ATTR _NOQUOT _VALUE ;
start = p ;
break ;
case S _TAG _CLOSE :
throw new Error ( "elements closed character '/' and '>' must be connected to" ) ;
}
}
} //end outer switch
//console.log('p++',p)
p ++ ;
}
}
/ * *
* @ return true if has new namespace define
* /
function appendElement ( el , domBuilder , currentNSMap ) {
var tagName = el . tagName ;
var localNSMap = null ;
//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
var i = el . length ;
while ( i -- ) {
var a = el [ i ] ;
var qName = a . qName ;
var value = a . value ;
var nsp = qName . indexOf ( ':' ) ;
if ( nsp > 0 ) {
var prefix = a . prefix = qName . slice ( 0 , nsp ) ;
var localName = qName . slice ( nsp + 1 ) ;
var nsPrefix = prefix === 'xmlns' && localName ;
} else {
localName = qName ;
prefix = null ;
nsPrefix = qName === 'xmlns' && '' ;
}
//can not set prefix,because prefix !== ''
a . localName = localName ;
//prefix == null for no ns prefix attribute
if ( nsPrefix !== false ) { //hack!!
if ( localNSMap == null ) {
localNSMap = { } ;
//console.log(currentNSMap,0)
_copy ( currentNSMap , currentNSMap = { } ) ;
//console.log(currentNSMap,1)
}
currentNSMap [ nsPrefix ] = localNSMap [ nsPrefix ] = value ;
a . uri = 'http://www.w3.org/2000/xmlns/' ;
domBuilder . startPrefixMapping ( nsPrefix , value ) ;
}
}
var i = el . length ;
while ( i -- ) {
a = el [ i ] ;
var prefix = a . prefix ;
if ( prefix ) { //no prefix attribute has no namespace
if ( prefix === 'xml' ) {
a . uri = 'http://www.w3.org/XML/1998/namespace' ;
} if ( prefix !== 'xmlns' ) {
a . uri = currentNSMap [ prefix || '' ] ;
//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}
}
}
}
var nsp = tagName . indexOf ( ':' ) ;
if ( nsp > 0 ) {
prefix = el . prefix = tagName . slice ( 0 , nsp ) ;
localName = el . localName = tagName . slice ( nsp + 1 ) ;
} else {
prefix = null ; //important!!
localName = el . localName = tagName ;
}
//no prefix element has default namespace
var ns = el . uri = currentNSMap [ prefix || '' ] ;
domBuilder . startElement ( ns , localName , tagName , el ) ;
//endPrefixMapping and startPrefixMapping have not any help for dom builder
//localNSMap = null
if ( el . closed ) {
domBuilder . endElement ( ns , localName , tagName ) ;
if ( localNSMap ) {
for ( prefix in localNSMap ) {
domBuilder . endPrefixMapping ( prefix ) ;
}
}
} else {
el . currentNSMap = currentNSMap ;
el . localNSMap = localNSMap ;
//parseStack.push(el);
return true ;
}
}
function parseHtmlSpecialContent ( source , elStartEnd , tagName , entityReplacer , domBuilder ) {
if ( /^(?:script|textarea)$/i . test ( tagName ) ) {
var elEndStart = source . indexOf ( '</' + tagName + '>' , elStartEnd ) ;
var text = source . substring ( elStartEnd + 1 , elEndStart ) ;
if ( /[&<]/ . test ( text ) ) {
if ( /^script$/i . test ( tagName ) ) {
//if(!/\]\]>/.test(text)){
//lexHandler.startCDATA();
domBuilder . characters ( text , 0 , text . length ) ;
//lexHandler.endCDATA();
return elEndStart ;
//}
} //}else{//text area
text = text . replace ( /&#?\w+;/g , entityReplacer ) ;
domBuilder . characters ( text , 0 , text . length ) ;
return elEndStart ;
//}
}
}
return elStartEnd + 1 ;
}
function fixSelfClosed ( source , elStartEnd , tagName , closeMap ) {
//if(tagName in closeMap){
var pos = closeMap [ tagName ] ;
if ( pos == null ) {
//console.log(tagName)
pos = source . lastIndexOf ( '</' + tagName + '>' ) ;
if ( pos < elStartEnd ) { //忘记闭合
pos = source . lastIndexOf ( '</' + tagName ) ;
}
closeMap [ tagName ] = pos ;
}
return pos < elStartEnd ;
//}
}
function _copy ( source , target ) {
for ( var n in source ) { target [ n ] = source [ n ] ; }
}
function parseDCC ( source , start , domBuilder , errorHandler ) { //sure start with '<!'
var next = source . charAt ( start + 2 ) ;
switch ( next ) {
case '-' :
if ( source . charAt ( start + 3 ) === '-' ) {
var end = source . indexOf ( '-->' , start + 4 ) ;
//append comment source.substring(4,end)//<!--
if ( end > start ) {
domBuilder . comment ( source , start + 4 , end - start - 4 ) ;
return end + 3 ;
} else {
errorHandler . error ( "Unclosed comment" ) ;
return - 1 ;
}
} else {
//error
return - 1 ;
}
default :
if ( source . substr ( start + 3 , 6 ) == 'CDATA[' ) {
var end = source . indexOf ( ']]>' , start + 9 ) ;
domBuilder . startCDATA ( ) ;
domBuilder . characters ( source , start + 9 , end - start - 9 ) ;
domBuilder . endCDATA ( ) ;
return end + 3 ;
}
//<!DOCTYPE
//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
var matchs = split ( source , start ) ;
var len = matchs . length ;
if ( len > 1 && /!doctype/i . test ( matchs [ 0 ] [ 0 ] ) ) {
var name = matchs [ 1 ] [ 0 ] ;
var pubid = false ;
var sysid = false ;
if ( len > 3 ) {
if ( /^public$/i . test ( matchs [ 2 ] [ 0 ] ) ) {
pubid = matchs [ 3 ] [ 0 ] ;
sysid = len > 4 && matchs [ 4 ] [ 0 ] ;
} else if ( /^system$/i . test ( matchs [ 2 ] [ 0 ] ) ) {
sysid = matchs [ 3 ] [ 0 ] ;
}
}
var lastMatch = matchs [ len - 1 ] ;
2021-04-07 10:06:17 +03:00
domBuilder . startDTD ( name , pubid , sysid ) ;
2021-01-21 09:11:50 +03:00
domBuilder . endDTD ( ) ;
return lastMatch . index + lastMatch [ 0 ] . length
}
}
return - 1 ;
}
function parseInstruction ( source , start , domBuilder ) {
var end = source . indexOf ( '?>' , start ) ;
if ( end ) {
var match = source . substring ( start , end ) . match ( /^<\?(\S*)\s*([\s\S]*?)\s*$/ ) ;
if ( match ) {
2021-01-26 21:32:07 +03:00
match [ 0 ] . length ;
2021-01-21 09:11:50 +03:00
domBuilder . processingInstruction ( match [ 1 ] , match [ 2 ] ) ;
return end + 2 ;
} else { //error
return - 1 ;
}
}
return - 1 ;
}
2021-04-07 10:06:17 +03:00
function ElementAttributes ( ) {
this . attributeNames = { } ;
2021-01-21 09:11:50 +03:00
}
ElementAttributes . prototype = {
setTagName : function ( tagName ) {
if ( ! tagNamePattern . test ( tagName ) ) {
throw new Error ( 'invalid tagName:' + tagName )
}
this . tagName = tagName ;
} ,
2021-04-07 10:06:17 +03:00
addValue : function ( qName , value , offset ) {
2021-01-21 09:11:50 +03:00
if ( ! tagNamePattern . test ( qName ) ) {
throw new Error ( 'invalid attribute:' + qName )
}
2021-04-07 10:06:17 +03:00
this . attributeNames [ qName ] = this . length ;
2021-01-21 09:11:50 +03:00
this [ this . length ++ ] = { qName : qName , value : value , offset : offset } ;
} ,
length : 0 ,
getLocalName : function ( i ) { return this [ i ] . localName } ,
getLocator : function ( i ) { return this [ i ] . locator } ,
getQName : function ( i ) { return this [ i ] . qName } ,
getURI : function ( i ) { return this [ i ] . uri } ,
getValue : function ( i ) { return this [ i ] . value }
// ,getIndex:function(uri, localName)){
// if(localName){
//
// }else{
// var qName = uri
// }
// },
// getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},
// getType:function(uri,localName){}
// getType:function(i){},
} ;
function split ( source , start ) {
var match ;
var buf = [ ] ;
var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g ;
reg . lastIndex = start ;
reg . exec ( source ) ; //skip <
while ( match = reg . exec ( source ) ) {
buf . push ( match ) ;
if ( match [ 1 ] ) return buf ;
}
}
2020-10-15 00:07:38 +03:00
var XMLReader _1 = XMLReader ;
2021-04-07 10:06:17 +03:00
var ParseError _1 = ParseError ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var sax = {
2021-04-07 10:06:17 +03:00
XMLReader : XMLReader _1 ,
ParseError : ParseError _1
2020-10-15 00:07:38 +03:00
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function copy ( src , dest ) {
for ( var p in src ) {
dest [ p ] = src [ p ] ;
}
}
/ * *
^ \ w + \ . prototype \ . ( [ _ \ w ] + ) \ s *= \ s * ( ( ? : . * \ { \ s * ? [ \ r \ n ] [ \ s \ S ] * ? ^ } ) | \ S . * ? ( ? = [ ; \ r \ n ] ) ) ; ?
^ \ w + \ . prototype \ . ( [ _ \ w ] + ) \ s *= \ s * ( \ S . * ? ( ? = [ ; \ r \ n ] ) ) ; ?
* /
function _extends ( Class , Super ) {
var pt = Class . prototype ;
if ( ! ( pt instanceof Super ) ) {
function t ( ) { } t . prototype = Super . prototype ;
t = new t ( ) ;
copy ( pt , t ) ;
Class . prototype = pt = t ;
}
if ( pt . constructor != Class ) {
if ( typeof Class != 'function' ) {
console . error ( "unknow Class:" + Class ) ;
}
pt . constructor = Class ;
}
}
var htmlns = 'http://www.w3.org/1999/xhtml' ;
// Node Types
var NodeType = { } ;
var ELEMENT _NODE = NodeType . ELEMENT _NODE = 1 ;
var ATTRIBUTE _NODE = NodeType . ATTRIBUTE _NODE = 2 ;
var TEXT _NODE = NodeType . TEXT _NODE = 3 ;
var CDATA _SECTION _NODE = NodeType . CDATA _SECTION _NODE = 4 ;
var ENTITY _REFERENCE _NODE = NodeType . ENTITY _REFERENCE _NODE = 5 ;
var ENTITY _NODE = NodeType . ENTITY _NODE = 6 ;
var PROCESSING _INSTRUCTION _NODE = NodeType . PROCESSING _INSTRUCTION _NODE = 7 ;
var COMMENT _NODE = NodeType . COMMENT _NODE = 8 ;
var DOCUMENT _NODE = NodeType . DOCUMENT _NODE = 9 ;
var DOCUMENT _TYPE _NODE = NodeType . DOCUMENT _TYPE _NODE = 10 ;
var DOCUMENT _FRAGMENT _NODE = NodeType . DOCUMENT _FRAGMENT _NODE = 11 ;
var NOTATION _NODE = NodeType . NOTATION _NODE = 12 ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
// ExceptionCode
var ExceptionCode = { } ;
var ExceptionMessage = { } ;
2021-01-26 21:32:07 +03:00
ExceptionCode . INDEX _SIZE _ERR = ( ( ExceptionMessage [ 1 ] = "Index size error" ) , 1 ) ;
ExceptionCode . DOMSTRING _SIZE _ERR = ( ( ExceptionMessage [ 2 ] = "DOMString size error" ) , 2 ) ;
2020-10-15 00:07:38 +03:00
var HIERARCHY _REQUEST _ERR = ExceptionCode . HIERARCHY _REQUEST _ERR = ( ( ExceptionMessage [ 3 ] = "Hierarchy request error" ) , 3 ) ;
2021-01-26 21:32:07 +03:00
ExceptionCode . WRONG _DOCUMENT _ERR = ( ( ExceptionMessage [ 4 ] = "Wrong document" ) , 4 ) ;
ExceptionCode . INVALID _CHARACTER _ERR = ( ( ExceptionMessage [ 5 ] = "Invalid character" ) , 5 ) ;
ExceptionCode . NO _DATA _ALLOWED _ERR = ( ( ExceptionMessage [ 6 ] = "No data allowed" ) , 6 ) ;
ExceptionCode . NO _MODIFICATION _ALLOWED _ERR = ( ( ExceptionMessage [ 7 ] = "No modification allowed" ) , 7 ) ;
2020-10-15 00:07:38 +03:00
var NOT _FOUND _ERR = ExceptionCode . NOT _FOUND _ERR = ( ( ExceptionMessage [ 8 ] = "Not found" ) , 8 ) ;
2021-01-26 21:32:07 +03:00
ExceptionCode . NOT _SUPPORTED _ERR = ( ( ExceptionMessage [ 9 ] = "Not supported" ) , 9 ) ;
2020-10-15 00:07:38 +03:00
var INUSE _ATTRIBUTE _ERR = ExceptionCode . INUSE _ATTRIBUTE _ERR = ( ( ExceptionMessage [ 10 ] = "Attribute in use" ) , 10 ) ;
//level2
2021-01-26 21:32:07 +03:00
ExceptionCode . INVALID _STATE _ERR = ( ( ExceptionMessage [ 11 ] = "Invalid state" ) , 11 ) ;
ExceptionCode . SYNTAX _ERR = ( ( ExceptionMessage [ 12 ] = "Syntax error" ) , 12 ) ;
ExceptionCode . INVALID _MODIFICATION _ERR = ( ( ExceptionMessage [ 13 ] = "Invalid modification" ) , 13 ) ;
ExceptionCode . NAMESPACE _ERR = ( ( ExceptionMessage [ 14 ] = "Invalid namespace" ) , 14 ) ;
ExceptionCode . INVALID _ACCESS _ERR = ( ( ExceptionMessage [ 15 ] = "Invalid access" ) , 15 ) ;
2020-10-05 18:43:38 +03:00
2021-04-07 10:06:17 +03:00
/ * *
* DOM Level 2
* Object DOMException
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html
* @ see http : //www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html
* /
2020-10-15 00:07:38 +03:00
function DOMException ( code , message ) {
if ( message instanceof Error ) {
var error = message ;
} else {
error = this ;
Error . call ( this , ExceptionMessage [ code ] ) ;
this . message = ExceptionMessage [ code ] ;
if ( Error . captureStackTrace ) Error . captureStackTrace ( this , DOMException ) ;
}
error . code = code ;
if ( message ) this . message = this . message + ": " + message ;
return error ;
} DOMException . prototype = Error . prototype ;
copy ( ExceptionCode , DOMException ) ;
/ * *
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177
* The NodeList interface provides the abstraction of an ordered collection of nodes , without defining or constraining how this collection is implemented . NodeList objects in the DOM are live .
* The items in the NodeList are accessible via an integral index , starting from 0.
* /
function NodeList ( ) {
} NodeList . prototype = {
/ * *
* The number of nodes in the list . The range of valid child node indices is 0 to length - 1 inclusive .
* @ standard level1
* /
2020-10-21 01:15:56 +03:00
length : 0 ,
2020-10-15 00:07:38 +03:00
/ * *
* Returns the indexth item in the collection . If index is greater than or equal to the number of nodes in the list , this returns null .
* @ standard level1
2020-10-21 01:15:56 +03:00
* @ param index unsigned long
2020-10-15 00:07:38 +03:00
* Index into the collection .
* @ return Node
2020-10-21 01:15:56 +03:00
* The node at the indexth position in the NodeList , or null if that is not a valid index .
2020-10-15 00:07:38 +03:00
* /
item : function ( index ) {
return this [ index ] || null ;
} ,
toString : function ( isHTML , nodeFilter ) {
for ( var buf = [ ] , i = 0 ; i < this . length ; i ++ ) {
serializeToString ( this [ i ] , buf , isHTML , nodeFilter ) ;
}
return buf . join ( '' ) ;
}
} ;
function LiveNodeList ( node , refresh ) {
this . _node = node ;
this . _refresh = refresh ;
_updateLiveList ( this ) ;
}
function _updateLiveList ( list ) {
var inc = list . _node . _inc || list . _node . ownerDocument . _inc ;
if ( list . _inc != inc ) {
var ls = list . _refresh ( list . _node ) ;
//console.log(ls.length)
_ _set _ _ ( list , 'length' , ls . length ) ;
copy ( ls , list ) ;
list . _inc = inc ;
}
}
LiveNodeList . prototype . item = function ( i ) {
_updateLiveList ( this ) ;
return this [ i ] ;
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
_extends ( LiveNodeList , NodeList ) ;
/ * *
2020-10-21 01:15:56 +03:00
*
2020-10-15 00:07:38 +03:00
* Objects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name . Note that NamedNodeMap does not inherit from NodeList ; NamedNodeMaps are not maintained in any particular order . Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index , but this is simply to allow convenient enumeration of the contents of a NamedNodeMap , and does not imply that the DOM specifies an order to these Nodes .
* NamedNodeMap objects in the DOM are live .
2020-10-21 01:15:56 +03:00
* used for attributes or DocumentType entities
2020-10-15 00:07:38 +03:00
* /
function NamedNodeMap ( ) {
}
function _findNodeIndex ( list , node ) {
var i = list . length ;
while ( i -- ) {
if ( list [ i ] === node ) { return i }
}
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _addNamedNode ( el , list , newAttr , oldAttr ) {
if ( oldAttr ) {
list [ _findNodeIndex ( list , oldAttr ) ] = newAttr ;
} else {
list [ list . length ++ ] = newAttr ;
}
if ( el ) {
newAttr . ownerElement = el ;
var doc = el . ownerDocument ;
if ( doc ) {
oldAttr && _onRemoveAttribute ( doc , el , oldAttr ) ;
_onAddAttribute ( doc , el , newAttr ) ;
}
}
}
function _removeNamedNode ( el , list , attr ) {
//console.log('remove attr:'+attr)
var i = _findNodeIndex ( list , attr ) ;
if ( i >= 0 ) {
var lastIndex = list . length - 1 ;
while ( i < lastIndex ) {
list [ i ] = list [ ++ i ] ;
}
list . length = lastIndex ;
if ( el ) {
var doc = el . ownerDocument ;
if ( doc ) {
_onRemoveAttribute ( doc , el , attr ) ;
attr . ownerElement = null ;
}
}
} else {
throw DOMException ( NOT _FOUND _ERR , new Error ( el . tagName + '@' + attr ) )
}
}
NamedNodeMap . prototype = {
length : 0 ,
item : NodeList . prototype . item ,
getNamedItem : function ( key ) {
// if(key.indexOf(':')>0 || key == 'xmlns'){
// return null;
// }
//console.log()
var i = this . length ;
while ( i -- ) {
var attr = this [ i ] ;
//console.log(attr.nodeName,key)
if ( attr . nodeName == key ) {
return attr ;
}
}
} ,
setNamedItem : function ( attr ) {
var el = attr . ownerElement ;
if ( el && el != this . _ownerElement ) {
throw new DOMException ( INUSE _ATTRIBUTE _ERR ) ;
}
var oldAttr = this . getNamedItem ( attr . nodeName ) ;
_addNamedNode ( this . _ownerElement , this , attr , oldAttr ) ;
return oldAttr ;
} ,
/* returns Node */
setNamedItemNS : function ( attr ) { // raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR
var el = attr . ownerElement , oldAttr ;
if ( el && el != this . _ownerElement ) {
throw new DOMException ( INUSE _ATTRIBUTE _ERR ) ;
}
oldAttr = this . getNamedItemNS ( attr . namespaceURI , attr . localName ) ;
_addNamedNode ( this . _ownerElement , this , attr , oldAttr ) ;
return oldAttr ;
} ,
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
/* returns Node */
removeNamedItem : function ( key ) {
var attr = this . getNamedItem ( key ) ;
_removeNamedNode ( this . _ownerElement , this , attr ) ;
return attr ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} , // raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//for level2
removeNamedItemNS : function ( namespaceURI , localName ) {
var attr = this . getNamedItemNS ( namespaceURI , localName ) ;
_removeNamedNode ( this . _ownerElement , this , attr ) ;
return attr ;
} ,
getNamedItemNS : function ( namespaceURI , localName ) {
var i = this . length ;
while ( i -- ) {
var node = this [ i ] ;
if ( node . localName == localName && node . namespaceURI == namespaceURI ) {
return node ;
}
}
return null ;
}
2020-10-05 18:43:38 +03:00
} ;
/ * *
2020-10-15 00:07:38 +03:00
* @ see http : //www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function DOMImplementation ( /* Object */ features ) {
this . _features = { } ;
if ( features ) {
for ( var feature in features ) {
this . _features = features [ feature ] ;
}
}
}
DOMImplementation . prototype = {
hasFeature : function ( /* string */ feature , /* string */ version ) {
var versions = this . _features [ feature . toLowerCase ( ) ] ;
if ( versions && ( ! version || version in versions ) ) {
return true ;
} else {
return false ;
}
} ,
// Introduced in DOM Level 2:
createDocument : function ( namespaceURI , qualifiedName , doctype ) { // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR
var doc = new Document ( ) ;
doc . implementation = this ;
doc . childNodes = new NodeList ( ) ;
doc . doctype = doctype ;
if ( doctype ) {
doc . appendChild ( doctype ) ;
}
if ( qualifiedName ) {
var root = doc . createElementNS ( namespaceURI , qualifiedName ) ;
doc . appendChild ( root ) ;
}
return doc ;
} ,
// Introduced in DOM Level 2:
createDocumentType : function ( qualifiedName , publicId , systemId ) { // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR
var node = new DocumentType ( ) ;
node . name = qualifiedName ;
node . nodeName = qualifiedName ;
node . publicId = publicId ;
node . systemId = systemId ;
// Introduced in DOM Level 2:
//readonly attribute DOMString internalSubset;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//TODO:..
// readonly attribute NamedNodeMap entities;
// readonly attribute NamedNodeMap notations;
return node ;
}
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
/ * *
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247
* /
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Node ( ) {
}
Node . prototype = {
firstChild : null ,
lastChild : null ,
previousSibling : null ,
nextSibling : null ,
attributes : null ,
parentNode : null ,
childNodes : null ,
ownerDocument : null ,
nodeValue : null ,
namespaceURI : null ,
prefix : null ,
localName : null ,
// Modified in DOM Level 2:
2020-10-21 01:15:56 +03:00
insertBefore : function ( newChild , refChild ) { //raises
2020-10-15 00:07:38 +03:00
return _insertBefore ( this , newChild , refChild ) ;
} ,
2020-10-21 01:15:56 +03:00
replaceChild : function ( newChild , oldChild ) { //raises
2020-10-15 00:07:38 +03:00
this . insertBefore ( newChild , oldChild ) ;
if ( oldChild ) {
this . removeChild ( oldChild ) ;
}
} ,
removeChild : function ( oldChild ) {
return _removeChild ( this , oldChild ) ;
} ,
appendChild : function ( newChild ) {
return this . insertBefore ( newChild , null ) ;
} ,
hasChildNodes : function ( ) {
return this . firstChild != null ;
} ,
cloneNode : function ( deep ) {
return cloneNode ( this . ownerDocument || this , this , deep ) ;
} ,
// Modified in DOM Level 2:
normalize : function ( ) {
var child = this . firstChild ;
while ( child ) {
var next = child . nextSibling ;
if ( next && next . nodeType == TEXT _NODE && child . nodeType == TEXT _NODE ) {
this . removeChild ( next ) ;
child . appendData ( next . data ) ;
} else {
child . normalize ( ) ;
child = next ;
}
}
} ,
2020-10-21 01:15:56 +03:00
// Introduced in DOM Level 2:
2020-10-15 00:07:38 +03:00
isSupported : function ( feature , version ) {
return this . ownerDocument . implementation . hasFeature ( feature , version ) ;
} ,
// Introduced in DOM Level 2:
hasAttributes : function ( ) {
2020-10-21 01:15:56 +03:00
return this . attributes . length > 0 ;
2020-10-15 00:07:38 +03:00
} ,
lookupPrefix : function ( namespaceURI ) {
2020-10-21 01:15:56 +03:00
var el = this ;
while ( el ) {
var map = el . _nsMap ;
//console.dir(map)
if ( map ) {
for ( var n in map ) {
if ( map [ n ] == namespaceURI ) {
return n ;
}
}
}
el = el . nodeType == ATTRIBUTE _NODE ? el . ownerDocument : el . parentNode ;
}
return null ;
2020-10-15 00:07:38 +03:00
} ,
// Introduced in DOM Level 3:
lookupNamespaceURI : function ( prefix ) {
2020-10-21 01:15:56 +03:00
var el = this ;
while ( el ) {
var map = el . _nsMap ;
//console.dir(map)
if ( map ) {
if ( prefix in map ) {
return map [ prefix ] ;
}
}
el = el . nodeType == ATTRIBUTE _NODE ? el . ownerDocument : el . parentNode ;
}
return null ;
2020-10-15 00:07:38 +03:00
} ,
// Introduced in DOM Level 3:
isDefaultNamespace : function ( namespaceURI ) {
2020-10-21 01:15:56 +03:00
var prefix = this . lookupPrefix ( namespaceURI ) ;
return prefix == null ;
2020-10-05 18:43:38 +03:00
}
2020-10-15 00:07:38 +03:00
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _xmlEncoder ( c ) {
return c == '<' && '<' ||
c == '>' && '>' ||
c == '&' && '&' ||
c == '"' && '"' ||
'&#' + c . charCodeAt ( ) + ';'
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
copy ( NodeType , Node ) ;
copy ( NodeType , Node . prototype ) ;
2020-10-05 18:43:38 +03:00
/ * *
2020-10-15 00:07:38 +03:00
* @ param callback return true for continue , false for break
* @ return boolean true : break visit ;
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function _visitNode ( node , callback ) {
if ( callback ( node ) ) {
return true ;
}
if ( node = node . firstChild ) {
do {
if ( _visitNode ( node , callback ) ) { return true }
} while ( node = node . nextSibling )
}
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Document ( ) {
}
function _onAddAttribute ( doc , el , newAttr ) {
doc && doc . _inc ++ ;
var ns = newAttr . namespaceURI ;
if ( ns == 'http://www.w3.org/2000/xmlns/' ) {
//update namespace
el . _nsMap [ newAttr . prefix ? newAttr . localName : '' ] = newAttr . value ;
}
}
function _onRemoveAttribute ( doc , el , newAttr , remove ) {
doc && doc . _inc ++ ;
var ns = newAttr . namespaceURI ;
if ( ns == 'http://www.w3.org/2000/xmlns/' ) {
//update namespace
delete el . _nsMap [ newAttr . prefix ? newAttr . localName : '' ] ;
}
}
function _onUpdateChild ( doc , el , newChild ) {
if ( doc && doc . _inc ) {
doc . _inc ++ ;
//update childNodes
var cs = el . childNodes ;
if ( newChild ) {
cs [ cs . length ++ ] = newChild ;
} else {
//console.log(1)
var child = el . firstChild ;
var i = 0 ;
while ( child ) {
cs [ i ++ ] = child ;
child = child . nextSibling ;
}
cs . length = i ;
}
}
}
2020-10-05 18:43:38 +03:00
/ * *
2020-10-15 00:07:38 +03:00
* attributes ;
* children ;
2020-10-21 01:15:56 +03:00
*
2020-10-15 00:07:38 +03:00
* writeable properties :
* nodeValue , Attr : value , CharacterData : data
* prefix
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function _removeChild ( parentNode , child ) {
var previous = child . previousSibling ;
var next = child . nextSibling ;
if ( previous ) {
previous . nextSibling = next ;
} else {
parentNode . firstChild = next ;
}
if ( next ) {
next . previousSibling = previous ;
} else {
parentNode . lastChild = previous ;
}
_onUpdateChild ( parentNode . ownerDocument , parentNode ) ;
return child ;
}
/ * *
* preformance key ( refChild == null )
* /
function _insertBefore ( parentNode , newChild , nextChild ) {
var cp = newChild . parentNode ;
if ( cp ) {
cp . removeChild ( newChild ) ; //remove and update
}
if ( newChild . nodeType === DOCUMENT _FRAGMENT _NODE ) {
var newFirst = newChild . firstChild ;
if ( newFirst == null ) {
return newChild ;
}
var newLast = newChild . lastChild ;
} else {
newFirst = newLast = newChild ;
}
var pre = nextChild ? nextChild . previousSibling : parentNode . lastChild ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
newFirst . previousSibling = pre ;
newLast . nextSibling = nextChild ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
if ( pre ) {
pre . nextSibling = newFirst ;
} else {
parentNode . firstChild = newFirst ;
}
if ( nextChild == null ) {
parentNode . lastChild = newLast ;
} else {
nextChild . previousSibling = newLast ;
}
do {
newFirst . parentNode = parentNode ;
} while ( newFirst !== newLast && ( newFirst = newFirst . nextSibling ) )
_onUpdateChild ( parentNode . ownerDocument || parentNode , parentNode ) ;
//console.log(parentNode.lastChild.nextSibling == null)
if ( newChild . nodeType == DOCUMENT _FRAGMENT _NODE ) {
newChild . firstChild = newChild . lastChild = null ;
}
return newChild ;
}
function _appendSingleChild ( parentNode , newChild ) {
var cp = newChild . parentNode ;
if ( cp ) {
var pre = parentNode . lastChild ;
cp . removeChild ( newChild ) ; //remove and update
var pre = parentNode . lastChild ;
}
var pre = parentNode . lastChild ;
newChild . parentNode = parentNode ;
newChild . previousSibling = pre ;
newChild . nextSibling = null ;
if ( pre ) {
pre . nextSibling = newChild ;
} else {
parentNode . firstChild = newChild ;
}
parentNode . lastChild = newChild ;
_onUpdateChild ( parentNode . ownerDocument , parentNode , newChild ) ;
return newChild ;
//console.log("__aa",parentNode.lastChild.nextSibling == null)
}
Document . prototype = {
//implementation : null,
nodeName : '#document' ,
nodeType : DOCUMENT _NODE ,
doctype : null ,
documentElement : null ,
_inc : 1 ,
2020-10-21 01:15:56 +03:00
insertBefore : function ( newChild , refChild ) { //raises
2020-10-15 00:07:38 +03:00
if ( newChild . nodeType == DOCUMENT _FRAGMENT _NODE ) {
var child = newChild . firstChild ;
while ( child ) {
var next = child . nextSibling ;
this . insertBefore ( child , refChild ) ;
child = next ;
}
return newChild ;
}
if ( this . documentElement == null && newChild . nodeType == ELEMENT _NODE ) {
this . documentElement = newChild ;
}
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
return _insertBefore ( this , newChild , refChild ) , ( newChild . ownerDocument = this ) , newChild ;
} ,
removeChild : function ( oldChild ) {
if ( this . documentElement == oldChild ) {
this . documentElement = null ;
}
return _removeChild ( this , oldChild ) ;
} ,
// Introduced in DOM Level 2:
importNode : function ( importedNode , deep ) {
return importNode ( this , importedNode , deep ) ;
} ,
// Introduced in DOM Level 2:
getElementById : function ( id ) {
var rtv = null ;
_visitNode ( this . documentElement , function ( node ) {
if ( node . nodeType == ELEMENT _NODE ) {
if ( node . getAttribute ( 'id' ) == id ) {
rtv = node ;
return true ;
}
}
} ) ;
return rtv ;
} ,
2020-10-21 01:15:56 +03:00
2021-01-21 09:11:50 +03:00
getElementsByClassName : function ( className ) {
var pattern = new RegExp ( "(^|\\s)" + className + "(\\s|$)" ) ;
return new LiveNodeList ( this , function ( base ) {
var ls = [ ] ;
_visitNode ( base . documentElement , function ( node ) {
if ( node !== base && node . nodeType == ELEMENT _NODE ) {
if ( pattern . test ( node . getAttribute ( 'class' ) ) ) {
ls . push ( node ) ;
}
}
} ) ;
return ls ;
} ) ;
} ,
2020-10-15 00:07:38 +03:00
//document factory method:
createElement : function ( tagName ) {
var node = new Element ( ) ;
node . ownerDocument = this ;
node . nodeName = tagName ;
node . tagName = tagName ;
node . childNodes = new NodeList ( ) ;
var attrs = node . attributes = new NamedNodeMap ( ) ;
attrs . _ownerElement = node ;
return node ;
} ,
createDocumentFragment : function ( ) {
var node = new DocumentFragment ( ) ;
node . ownerDocument = this ;
node . childNodes = new NodeList ( ) ;
return node ;
} ,
createTextNode : function ( data ) {
var node = new Text ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createComment : function ( data ) {
var node = new Comment ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createCDATASection : function ( data ) {
var node = new CDATASection ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createProcessingInstruction : function ( target , data ) {
var node = new ProcessingInstruction ( ) ;
node . ownerDocument = this ;
node . tagName = node . target = target ;
node . nodeValue = node . data = data ;
return node ;
} ,
createAttribute : function ( name ) {
var node = new Attr ( ) ;
node . ownerDocument = this ;
node . name = name ;
node . nodeName = name ;
node . localName = name ;
node . specified = true ;
return node ;
} ,
createEntityReference : function ( name ) {
var node = new EntityReference ( ) ;
node . ownerDocument = this ;
node . nodeName = name ;
return node ;
} ,
// Introduced in DOM Level 2:
createElementNS : function ( namespaceURI , qualifiedName ) {
var node = new Element ( ) ;
var pl = qualifiedName . split ( ':' ) ;
var attrs = node . attributes = new NamedNodeMap ( ) ;
node . childNodes = new NodeList ( ) ;
node . ownerDocument = this ;
node . nodeName = qualifiedName ;
node . tagName = qualifiedName ;
node . namespaceURI = namespaceURI ;
if ( pl . length == 2 ) {
node . prefix = pl [ 0 ] ;
node . localName = pl [ 1 ] ;
} else {
//el.prefix = null;
node . localName = qualifiedName ;
}
attrs . _ownerElement = node ;
return node ;
} ,
// Introduced in DOM Level 2:
createAttributeNS : function ( namespaceURI , qualifiedName ) {
var node = new Attr ( ) ;
var pl = qualifiedName . split ( ':' ) ;
node . ownerDocument = this ;
node . nodeName = qualifiedName ;
node . name = qualifiedName ;
node . namespaceURI = namespaceURI ;
node . specified = true ;
if ( pl . length == 2 ) {
node . prefix = pl [ 0 ] ;
node . localName = pl [ 1 ] ;
} else {
//el.prefix = null;
node . localName = qualifiedName ;
}
return node ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Document , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Element ( ) {
this . _nsMap = { } ;
} Element . prototype = {
nodeType : ELEMENT _NODE ,
hasAttribute : function ( name ) {
return this . getAttributeNode ( name ) != null ;
} ,
getAttribute : function ( name ) {
var attr = this . getAttributeNode ( name ) ;
return attr && attr . value || '' ;
} ,
getAttributeNode : function ( name ) {
return this . attributes . getNamedItem ( name ) ;
} ,
setAttribute : function ( name , value ) {
var attr = this . ownerDocument . createAttribute ( name ) ;
attr . value = attr . nodeValue = "" + value ;
this . setAttributeNode ( attr ) ;
} ,
removeAttribute : function ( name ) {
var attr = this . getAttributeNode ( name ) ;
attr && this . removeAttributeNode ( attr ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//four real opeartion method
appendChild : function ( newChild ) {
if ( newChild . nodeType === DOCUMENT _FRAGMENT _NODE ) {
return this . insertBefore ( newChild , null ) ;
} else {
return _appendSingleChild ( this , newChild ) ;
}
} ,
setAttributeNode : function ( newAttr ) {
return this . attributes . setNamedItem ( newAttr ) ;
} ,
setAttributeNodeNS : function ( newAttr ) {
return this . attributes . setNamedItemNS ( newAttr ) ;
} ,
removeAttributeNode : function ( oldAttr ) {
//console.log(this == oldAttr.ownerElement)
return this . attributes . removeNamedItem ( oldAttr . nodeName ) ;
} ,
//get real attribute name,and remove it by removeAttributeNode
removeAttributeNS : function ( namespaceURI , localName ) {
var old = this . getAttributeNodeNS ( namespaceURI , localName ) ;
old && this . removeAttributeNode ( old ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
hasAttributeNS : function ( namespaceURI , localName ) {
return this . getAttributeNodeNS ( namespaceURI , localName ) != null ;
} ,
getAttributeNS : function ( namespaceURI , localName ) {
var attr = this . getAttributeNodeNS ( namespaceURI , localName ) ;
return attr && attr . value || '' ;
} ,
setAttributeNS : function ( namespaceURI , qualifiedName , value ) {
var attr = this . ownerDocument . createAttributeNS ( namespaceURI , qualifiedName ) ;
attr . value = attr . nodeValue = "" + value ;
this . setAttributeNode ( attr ) ;
} ,
getAttributeNodeNS : function ( namespaceURI , localName ) {
return this . attributes . getNamedItemNS ( namespaceURI , localName ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
getElementsByTagName : function ( tagName ) {
return new LiveNodeList ( this , function ( base ) {
var ls = [ ] ;
_visitNode ( base , function ( node ) {
if ( node !== base && node . nodeType == ELEMENT _NODE && ( tagName === '*' || node . tagName == tagName ) ) {
ls . push ( node ) ;
}
} ) ;
return ls ;
} ) ;
} ,
getElementsByTagNameNS : function ( namespaceURI , localName ) {
return new LiveNodeList ( this , function ( base ) {
var ls = [ ] ;
_visitNode ( base , function ( node ) {
if ( node !== base && node . nodeType === ELEMENT _NODE && ( namespaceURI === '*' || node . namespaceURI === namespaceURI ) && ( localName === '*' || node . localName == localName ) ) {
ls . push ( node ) ;
}
} ) ;
return ls ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} ) ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
Document . prototype . getElementsByTagName = Element . prototype . getElementsByTagName ;
Document . prototype . getElementsByTagNameNS = Element . prototype . getElementsByTagNameNS ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
_extends ( Element , Node ) ;
function Attr ( ) {
} Attr . prototype . nodeType = ATTRIBUTE _NODE ;
_extends ( Attr , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function CharacterData ( ) {
} CharacterData . prototype = {
data : '' ,
substringData : function ( offset , count ) {
return this . data . substring ( offset , offset + count ) ;
} ,
appendData : function ( text ) {
text = this . data + text ;
this . nodeValue = this . data = text ;
this . length = text . length ;
} ,
insertData : function ( offset , text ) {
this . replaceData ( offset , 0 , text ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} ,
appendChild : function ( newChild ) {
throw new Error ( ExceptionMessage [ HIERARCHY _REQUEST _ERR ] )
} ,
deleteData : function ( offset , count ) {
this . replaceData ( offset , count , "" ) ;
} ,
replaceData : function ( offset , count , text ) {
var start = this . data . substring ( 0 , offset ) ;
var end = this . data . substring ( offset + count ) ;
text = start + text + end ;
this . nodeValue = this . data = text ;
this . length = text . length ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( CharacterData , Node ) ;
function Text ( ) {
} Text . prototype = {
nodeName : "#text" ,
nodeType : TEXT _NODE ,
splitText : function ( offset ) {
var text = this . data ;
var newText = text . substring ( offset ) ;
text = text . substring ( 0 , offset ) ;
this . data = this . nodeValue = text ;
this . length = text . length ;
var newNode = this . ownerDocument . createTextNode ( newText ) ;
if ( this . parentNode ) {
this . parentNode . insertBefore ( newNode , this . nextSibling ) ;
}
return newNode ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Text , CharacterData ) ;
function Comment ( ) {
} Comment . prototype = {
nodeName : "#comment" ,
nodeType : COMMENT _NODE
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Comment , CharacterData ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function CDATASection ( ) {
} CDATASection . prototype = {
nodeName : "#cdata-section" ,
nodeType : CDATA _SECTION _NODE
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( CDATASection , CharacterData ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function DocumentType ( ) {
} DocumentType . prototype . nodeType = DOCUMENT _TYPE _NODE ;
_extends ( DocumentType , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Notation ( ) {
} Notation . prototype . nodeType = NOTATION _NODE ;
_extends ( Notation , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Entity ( ) {
} Entity . prototype . nodeType = ENTITY _NODE ;
_extends ( Entity , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function EntityReference ( ) {
} EntityReference . prototype . nodeType = ENTITY _REFERENCE _NODE ;
_extends ( EntityReference , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function DocumentFragment ( ) {
} DocumentFragment . prototype . nodeName = "#document-fragment" ;
DocumentFragment . prototype . nodeType = DOCUMENT _FRAGMENT _NODE ;
_extends ( DocumentFragment , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function ProcessingInstruction ( ) {
}
ProcessingInstruction . prototype . nodeType = PROCESSING _INSTRUCTION _NODE ;
_extends ( ProcessingInstruction , Node ) ;
function XMLSerializer ( ) { }
XMLSerializer . prototype . serializeToString = function ( node , isHtml , nodeFilter ) {
return nodeSerializeToString . call ( node , isHtml , nodeFilter ) ;
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
Node . prototype . toString = nodeSerializeToString ;
function nodeSerializeToString ( isHtml , nodeFilter ) {
var buf = [ ] ;
2021-01-21 09:11:50 +03:00
var refNode = this . nodeType == 9 && this . documentElement || this ;
2020-10-15 00:07:38 +03:00
var prefix = refNode . prefix ;
var uri = refNode . namespaceURI ;
if ( uri && prefix == null ) {
//console.log(prefix)
var prefix = refNode . lookupPrefix ( uri ) ;
if ( prefix == null ) {
//isHTML = true;
var visibleNamespaces = [
{ namespace : uri , prefix : null }
//{namespace:uri,prefix:''}
] ;
}
}
serializeToString ( this , buf , isHtml , nodeFilter , visibleNamespaces ) ;
//console.log('###',this.nodeType,uri,prefix,buf.join(''))
return buf . join ( '' ) ;
}
function needNamespaceDefine ( node , isHTML , visibleNamespaces ) {
var prefix = node . prefix || '' ;
var uri = node . namespaceURI ;
if ( ! prefix && ! uri ) {
return false ;
}
2020-10-21 01:15:56 +03:00
if ( prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace"
2020-10-15 00:07:38 +03:00
|| uri == 'http://www.w3.org/2000/xmlns/' ) {
return false ;
}
2020-10-21 01:15:56 +03:00
var i = visibleNamespaces . length ;
2020-10-15 00:07:38 +03:00
//console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces)
while ( i -- ) {
var ns = visibleNamespaces [ i ] ;
// get namespace prefix
//console.log(node.nodeType,node.tagName,ns.prefix,prefix)
if ( ns . prefix == prefix ) {
return ns . namespace != uri ;
}
}
//console.log(isHTML,uri,prefix=='')
//if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){
// return false;
//}
//node.flag = '11111'
//console.error(3,true,node.flag,node.prefix,node.namespaceURI)
return true ;
}
function serializeToString ( node , buf , isHTML , nodeFilter , visibleNamespaces ) {
if ( nodeFilter ) {
node = nodeFilter ( node ) ;
if ( node ) {
if ( typeof node == 'string' ) {
buf . push ( node ) ;
return ;
}
} else {
return ;
}
//buf.sort.apply(attrs, attributeSorter);
}
switch ( node . nodeType ) {
case ELEMENT _NODE :
if ( ! visibleNamespaces ) visibleNamespaces = [ ] ;
2021-01-26 21:32:07 +03:00
visibleNamespaces . length ;
2020-10-15 00:07:38 +03:00
var attrs = node . attributes ;
var len = attrs . length ;
var child = node . firstChild ;
var nodeName = node . tagName ;
2020-10-21 01:15:56 +03:00
isHTML = ( htmlns === node . namespaceURI ) || isHTML ;
2020-10-15 00:07:38 +03:00
buf . push ( '<' , nodeName ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
for ( var i = 0 ; i < len ; i ++ ) {
// add namespaces for attributes
var attr = attrs . item ( i ) ;
if ( attr . prefix == 'xmlns' ) {
visibleNamespaces . push ( { prefix : attr . localName , namespace : attr . value } ) ;
} else if ( attr . nodeName == 'xmlns' ) {
visibleNamespaces . push ( { prefix : '' , namespace : attr . value } ) ;
}
}
for ( var i = 0 ; i < len ; i ++ ) {
var attr = attrs . item ( i ) ;
if ( needNamespaceDefine ( attr , isHTML , visibleNamespaces ) ) {
var prefix = attr . prefix || '' ;
var uri = attr . namespaceURI ;
var ns = prefix ? ' xmlns:' + prefix : " xmlns" ;
buf . push ( ns , '="' , uri , '"' ) ;
visibleNamespaces . push ( { prefix : prefix , namespace : uri } ) ;
}
serializeToString ( attr , buf , isHTML , nodeFilter , visibleNamespaces ) ;
}
2020-10-21 01:15:56 +03:00
// add namespace for current node
2020-10-15 00:07:38 +03:00
if ( needNamespaceDefine ( node , isHTML , visibleNamespaces ) ) {
var prefix = node . prefix || '' ;
var uri = node . namespaceURI ;
var ns = prefix ? ' xmlns:' + prefix : " xmlns" ;
buf . push ( ns , '="' , uri , '"' ) ;
visibleNamespaces . push ( { prefix : prefix , namespace : uri } ) ;
}
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
if ( child || isHTML && ! /^(?:meta|link|img|br|hr|input)$/i . test ( nodeName ) ) {
buf . push ( '>' ) ;
//if is cdata child node
if ( isHTML && /^script$/i . test ( nodeName ) ) {
while ( child ) {
if ( child . data ) {
buf . push ( child . data ) ;
} else {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
}
child = child . nextSibling ;
}
} else
{
while ( child ) {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
child = child . nextSibling ;
}
}
buf . push ( '</' , nodeName , '>' ) ;
} else {
buf . push ( '/>' ) ;
}
// remove added visible namespaces
//visibleNamespaces.length = startVisibleNamespaces;
return ;
case DOCUMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
var child = node . firstChild ;
while ( child ) {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
child = child . nextSibling ;
}
return ;
case ATTRIBUTE _NODE :
2021-04-07 10:06:17 +03:00
return buf . push ( ' ' , node . name , '="' , node . value . replace ( /[&"]/g , _xmlEncoder ) , '"' ) ;
2020-10-15 00:07:38 +03:00
case TEXT _NODE :
2021-04-07 10:06:17 +03:00
/ * *
* The ampersand character ( & ) and the left angle bracket ( < ) must not appear in their literal form ,
* except when used as markup delimiters , or within a comment , a processing instruction , or a CDATA section .
* If they are needed elsewhere , they must be escaped using either numeric character references or the strings
* ` & ` and ` < ` respectively .
* The right angle bracket ( > ) may be represented using the string " > " , and must , for compatibility ,
* be escaped using either ` > ` or a character reference when it appears in the string ` ]]> ` in content ,
* when that string is not marking the end of a CDATA section .
*
* In the content of elements , character data is any string of characters
* which does not contain the start - delimiter of any markup
* and does not include the CDATA - section - close delimiter , ` ]]> ` .
*
* @ see https : //www.w3.org/TR/xml/#NT-CharData
* /
return buf . push ( node . data
. replace ( /[<&]/g , _xmlEncoder )
. replace ( /]]>/g , ']]>' )
) ;
2020-10-15 00:07:38 +03:00
case CDATA _SECTION _NODE :
return buf . push ( '<![CDATA[' , node . data , ']]>' ) ;
case COMMENT _NODE :
return buf . push ( "<!--" , node . data , "-->" ) ;
case DOCUMENT _TYPE _NODE :
var pubid = node . publicId ;
var sysid = node . systemId ;
buf . push ( '<!DOCTYPE ' , node . name ) ;
if ( pubid ) {
2021-04-07 10:06:17 +03:00
buf . push ( ' PUBLIC ' , pubid ) ;
2020-10-15 00:07:38 +03:00
if ( sysid && sysid != '.' ) {
2021-04-07 10:06:17 +03:00
buf . push ( ' ' , sysid ) ;
2020-10-15 00:07:38 +03:00
}
2021-04-07 10:06:17 +03:00
buf . push ( '>' ) ;
2020-10-15 00:07:38 +03:00
} else if ( sysid && sysid != '.' ) {
2021-04-07 10:06:17 +03:00
buf . push ( ' SYSTEM ' , sysid , '>' ) ;
2020-10-15 00:07:38 +03:00
} else {
var sub = node . internalSubset ;
if ( sub ) {
buf . push ( " [" , sub , "]" ) ;
}
buf . push ( ">" ) ;
}
return ;
case PROCESSING _INSTRUCTION _NODE :
return buf . push ( "<?" , node . target , " " , node . data , "?>" ) ;
case ENTITY _REFERENCE _NODE :
return buf . push ( '&' , node . nodeName , ';' ) ;
//case ENTITY_NODE:
//case NOTATION_NODE:
default :
buf . push ( '??' , node . nodeName ) ;
}
}
function importNode ( doc , node , deep ) {
var node2 ;
switch ( node . nodeType ) {
case ELEMENT _NODE :
node2 = node . cloneNode ( false ) ;
node2 . ownerDocument = doc ;
//var attrs = node2.attributes;
//var len = attrs.length;
//for(var i=0;i<len;i++){
//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));
//}
case DOCUMENT _FRAGMENT _NODE :
break ;
case ATTRIBUTE _NODE :
deep = true ;
break ;
//case ENTITY_REFERENCE_NODE:
//case PROCESSING_INSTRUCTION_NODE:
////case TEXT_NODE:
//case CDATA_SECTION_NODE:
//case COMMENT_NODE:
// deep = false;
// break;
//case DOCUMENT_NODE:
//case DOCUMENT_TYPE_NODE:
//cannot be imported.
//case ENTITY_NODE:
//case NOTATION_NODE:
//can not hit in level3
//default:throw e;
}
if ( ! node2 ) {
node2 = node . cloneNode ( false ) ; //false
}
node2 . ownerDocument = doc ;
node2 . parentNode = null ;
if ( deep ) {
var child = node . firstChild ;
while ( child ) {
node2 . appendChild ( importNode ( doc , child , deep ) ) ;
child = child . nextSibling ;
}
}
return node2 ;
}
//
//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,
// attributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};
function cloneNode ( doc , node , deep ) {
var node2 = new node . constructor ( ) ;
for ( var n in node ) {
var v = node [ n ] ;
if ( typeof v != 'object' ) {
if ( v != node2 [ n ] ) {
node2 [ n ] = v ;
}
}
}
if ( node . childNodes ) {
node2 . childNodes = new NodeList ( ) ;
}
node2 . ownerDocument = doc ;
switch ( node2 . nodeType ) {
case ELEMENT _NODE :
var attrs = node . attributes ;
var attrs2 = node2 . attributes = new NamedNodeMap ( ) ;
var len = attrs . length ;
attrs2 . _ownerElement = node2 ;
for ( var i = 0 ; i < len ; i ++ ) {
node2 . setAttributeNode ( cloneNode ( doc , attrs . item ( i ) , true ) ) ;
}
break ; case ATTRIBUTE _NODE :
deep = true ;
}
if ( deep ) {
var child = node . firstChild ;
while ( child ) {
node2 . appendChild ( cloneNode ( doc , child , deep ) ) ;
child = child . nextSibling ;
}
}
return node2 ;
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _ _set _ _ ( object , key , value ) {
object [ key ] = value ;
}
//do dynamic
try {
if ( Object . defineProperty ) {
Object . defineProperty ( LiveNodeList . prototype , 'length' , {
get : function ( ) {
_updateLiveList ( this ) ;
return this . $$length ;
}
} ) ;
Object . defineProperty ( Node . prototype , 'textContent' , {
get : function ( ) {
return getTextContent ( this ) ;
} ,
set : function ( data ) {
switch ( this . nodeType ) {
case ELEMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
while ( this . firstChild ) {
this . removeChild ( this . firstChild ) ;
}
if ( data || String ( data ) ) {
this . appendChild ( this . ownerDocument . createTextNode ( data ) ) ;
}
break ;
default :
//TODO:
this . data = data ;
this . value = data ;
this . nodeValue = data ;
}
}
} ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
function getTextContent ( node ) {
switch ( node . nodeType ) {
case ELEMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
var buf = [ ] ;
node = node . firstChild ;
while ( node ) {
if ( node . nodeType !== 7 && node . nodeType !== 8 ) {
buf . push ( getTextContent ( node ) ) ;
}
node = node . nextSibling ;
}
return buf . join ( '' ) ;
default :
return node . nodeValue ;
}
}
_ _set _ _ = function ( object , key , value ) {
//console.log(value)
object [ '$$' + key ] = value ;
} ;
}
} catch ( e ) { //ie8
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
//if(typeof require == 'function'){
2021-01-21 09:11:50 +03:00
var Node _1 = Node ;
2021-04-07 10:06:17 +03:00
var DOMException _1 = DOMException ;
2020-10-15 00:07:38 +03:00
var DOMImplementation _1 = DOMImplementation ;
var XMLSerializer _1 = XMLSerializer ;
//}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var dom = {
2021-01-21 09:11:50 +03:00
Node : Node _1 ,
2021-04-07 10:06:17 +03:00
DOMException : DOMException _1 ,
2020-10-15 00:07:38 +03:00
DOMImplementation : DOMImplementation _1 ,
XMLSerializer : XMLSerializer _1
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var domParser = createCommonjsModule ( function ( module , exports ) {
2021-01-21 09:11:50 +03:00
function DOMParser ( options ) {
this . options = options || { locator : { } } ;
}
DOMParser . prototype . parseFromString = function ( source , mimeType ) {
var options = this . options ;
var sax = new XMLReader ( ) ;
var domBuilder = options . domBuilder || new DOMHandler ( ) ; //contentHandler and LexicalHandler
var errorHandler = options . errorHandler ;
var locator = options . locator ;
var defaultNSMap = options . xmlns || { } ;
var isHTML = /\/x?html?$/ . test ( mimeType ) ; //mimeType.toLowerCase().indexOf('html') > -1;
var entityMap = isHTML ? entities . entityMap : { 'lt' : '<' , 'gt' : '>' , 'amp' : '&' , 'quot' : '"' , 'apos' : "'" } ;
if ( locator ) {
domBuilder . setDocumentLocator ( locator ) ;
}
sax . errorHandler = buildErrorHandler ( errorHandler , domBuilder , locator ) ;
sax . domBuilder = options . domBuilder || domBuilder ;
if ( isHTML ) {
defaultNSMap [ '' ] = 'http://www.w3.org/1999/xhtml' ;
}
defaultNSMap . xml = defaultNSMap . xml || 'http://www.w3.org/XML/1998/namespace' ;
if ( source && typeof source === 'string' ) {
sax . parse ( source , defaultNSMap , entityMap ) ;
} else {
sax . errorHandler . error ( "invalid doc source" ) ;
}
return domBuilder . doc ;
} ;
function buildErrorHandler ( errorImpl , domBuilder , locator ) {
if ( ! errorImpl ) {
if ( domBuilder instanceof DOMHandler ) {
return domBuilder ;
}
errorImpl = domBuilder ;
}
var errorHandler = { } ;
var isCallback = errorImpl instanceof Function ;
locator = locator || { } ;
function build ( key ) {
var fn = errorImpl [ key ] ;
if ( ! fn && isCallback ) {
fn = errorImpl . length == 2 ? function ( msg ) { errorImpl ( key , msg ) ; } : errorImpl ;
}
errorHandler [ key ] = fn && function ( msg ) {
fn ( '[xmldom ' + key + ']\t' + msg + _locator ( locator ) ) ;
} || function ( ) { } ;
}
build ( 'warning' ) ;
build ( 'error' ) ;
build ( 'fatalError' ) ;
return errorHandler ;
}
//console.log('#\n\n\n\n\n\n\n####')
/ * *
* + ContentHandler + ErrorHandler
* + LexicalHandler + EntityResolver2
* - DeclHandler - DTDHandler
*
* DefaultHandler : EntityResolver , DTDHandler , ContentHandler , ErrorHandler
* DefaultHandler2 : DefaultHandler , LexicalHandler , DeclHandler , EntityResolver2
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html
* /
function DOMHandler ( ) {
this . cdata = false ;
}
function position ( locator , node ) {
node . lineNumber = locator . lineNumber ;
node . columnNumber = locator . columnNumber ;
}
/ * *
* @ see org . xml . sax . ContentHandler # startDocument
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html
* /
DOMHandler . prototype = {
startDocument : function ( ) {
this . doc = new DOMImplementation ( ) . createDocument ( null , null , null ) ;
if ( this . locator ) {
this . doc . documentURI = this . locator . systemId ;
}
} ,
startElement : function ( namespaceURI , localName , qName , attrs ) {
var doc = this . doc ;
var el = doc . createElementNS ( namespaceURI , qName || localName ) ;
var len = attrs . length ;
appendElement ( this , el ) ;
this . currentElement = el ;
this . locator && position ( this . locator , el ) ;
for ( var i = 0 ; i < len ; i ++ ) {
var namespaceURI = attrs . getURI ( i ) ;
var value = attrs . getValue ( i ) ;
var qName = attrs . getQName ( i ) ;
var attr = doc . createAttributeNS ( namespaceURI , qName ) ;
this . locator && position ( attrs . getLocator ( i ) , attr ) ;
attr . value = attr . nodeValue = value ;
el . setAttributeNode ( attr ) ;
}
} ,
endElement : function ( namespaceURI , localName , qName ) {
var current = this . currentElement ;
2021-01-26 21:32:07 +03:00
current . tagName ;
2021-01-21 09:11:50 +03:00
this . currentElement = current . parentNode ;
} ,
startPrefixMapping : function ( prefix , uri ) {
} ,
endPrefixMapping : function ( prefix ) {
} ,
processingInstruction : function ( target , data ) {
var ins = this . doc . createProcessingInstruction ( target , data ) ;
this . locator && position ( this . locator , ins ) ;
appendElement ( this , ins ) ;
} ,
ignorableWhitespace : function ( ch , start , length ) {
} ,
characters : function ( chars , start , length ) {
chars = _toString . apply ( this , arguments ) ;
//console.log(chars)
if ( chars ) {
if ( this . cdata ) {
var charNode = this . doc . createCDATASection ( chars ) ;
} else {
var charNode = this . doc . createTextNode ( chars ) ;
}
if ( this . currentElement ) {
this . currentElement . appendChild ( charNode ) ;
} else if ( /^\s*$/ . test ( chars ) ) {
this . doc . appendChild ( charNode ) ;
//process xml
}
this . locator && position ( this . locator , charNode ) ;
}
} ,
skippedEntity : function ( name ) {
} ,
endDocument : function ( ) {
this . doc . normalize ( ) ;
} ,
setDocumentLocator : function ( locator ) {
if ( this . locator = locator ) { // && !('lineNumber' in locator)){
locator . lineNumber = 0 ;
}
} ,
//LexicalHandler
comment : function ( chars , start , length ) {
chars = _toString . apply ( this , arguments ) ;
var comm = this . doc . createComment ( chars ) ;
this . locator && position ( this . locator , comm ) ;
appendElement ( this , comm ) ;
} ,
startCDATA : function ( ) {
//used in characters() methods
this . cdata = true ;
} ,
endCDATA : function ( ) {
this . cdata = false ;
} ,
startDTD : function ( name , publicId , systemId ) {
var impl = this . doc . implementation ;
if ( impl && impl . createDocumentType ) {
var dt = impl . createDocumentType ( name , publicId , systemId ) ;
this . locator && position ( this . locator , dt ) ;
appendElement ( this , dt ) ;
}
} ,
/ * *
* @ see org . xml . sax . ErrorHandler
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
* /
warning : function ( error ) {
console . warn ( '[xmldom warning]\t' + error , _locator ( this . locator ) ) ;
} ,
error : function ( error ) {
console . error ( '[xmldom error]\t' + error , _locator ( this . locator ) ) ;
} ,
fatalError : function ( error ) {
2021-04-07 10:06:17 +03:00
throw new ParseError ( error , this . locator ) ;
2021-01-21 09:11:50 +03:00
}
} ;
function _locator ( l ) {
if ( l ) {
return '\n@' + ( l . systemId || '' ) + '#[line:' + l . lineNumber + ',col:' + l . columnNumber + ']'
}
}
function _toString ( chars , start , length ) {
if ( typeof chars == 'string' ) {
return chars . substr ( start , length )
} else { //java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)")
if ( chars . length >= start + length || start ) {
return new java . lang . String ( chars , start , length ) + '' ;
}
return chars ;
}
}
/ *
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html
* used method of org . xml . sax . ext . LexicalHandler :
* # comment ( chars , start , length )
* # startCDATA ( )
* # endCDATA ( )
* # startDTD ( name , publicId , systemId )
*
*
* IGNORED method of org . xml . sax . ext . LexicalHandler :
* # endDTD ( )
* # startEntity ( name )
* # endEntity ( name )
*
*
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html
* IGNORED method of org . xml . sax . ext . DeclHandler
* # attributeDecl ( eName , aName , type , mode , value )
* # elementDecl ( name , model )
* # externalEntityDecl ( name , publicId , systemId )
* # internalEntityDecl ( name , value )
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html
* IGNORED method of org . xml . sax . EntityResolver2
* # resolveEntity ( String name , String publicId , String baseURI , String systemId )
* # resolveEntity ( publicId , systemId )
* # getExternalSubset ( name , baseURI )
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html
* IGNORED method of org . xml . sax . DTDHandler
* # notationDecl ( name , publicId , systemId ) { } ;
* # unparsedEntityDecl ( name , publicId , systemId , notationName ) { } ;
* /
"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl" . replace ( /\w+/g , function ( key ) {
DOMHandler . prototype [ key ] = function ( ) { return null } ;
} ) ;
/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */
function appendElement ( hander , node ) {
if ( ! hander . currentElement ) {
hander . doc . appendChild ( node ) ;
} else {
hander . currentElement . appendChild ( node ) ;
}
} //appendChild and setAttributeNS are preformance key
//if(typeof require == 'function'){
2021-04-07 10:06:17 +03:00
2021-01-21 09:11:50 +03:00
var XMLReader = sax . XMLReader ;
2021-04-07 10:06:17 +03:00
var ParseError = sax . ParseError ;
2021-01-21 09:11:50 +03:00
var DOMImplementation = exports . DOMImplementation = dom . DOMImplementation ;
exports . XMLSerializer = dom . XMLSerializer ;
exports . DOMParser = DOMParser ;
2021-04-07 10:06:17 +03:00
exports . _ _DOMHandler = DOMHandler ;
2020-10-15 00:07:38 +03:00
//}
} ) ;
2020-10-05 18:43:38 +03:00
var videojsHttpStreaming _min = createCommonjsModule ( function ( module , exports ) {
2021-06-05 05:47:59 +03:00
/*! @name @videojs/http-streaming @version 2.8.2 @license Apache-2.0 */
! function ( e , t ) { t ( exports , document _1 , window _1 , core , domParser ) ; } ( commonjsGlobal , ( function ( e , t , i , n , r ) { function a ( e ) { return e && "object" == typeof e && "default" in e ? e : { default : e } } var s = a ( t ) , o = a ( i ) , u = a ( n ) ; function d ( e , t , i ) { return e ( i = { path : t , exports : { } , require : function ( e , t ) { return function ( ) { throw new Error ( "Dynamic requires are not currently supported by @rollup/plugin-commonjs" ) } ( null == t && i . path ) } } , i . exports ) , i . exports } var l = d ( ( function ( e ) { e . exports = function ( e ) { if ( void 0 === e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; return e } , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 ; } ) ) , h = d ( ( function ( e ) { function t ( i , n ) { return e . exports = t = Object . setPrototypeOf || function ( e , t ) { return e . _ _proto _ _ = t , e } , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 , t ( i , n ) } e . exports = t , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 ; } ) ) , c = d ( ( function ( e ) { e . exports = function ( e , t ) { e . prototype = Object . create ( t . prototype ) , e . prototype . constructor = e , h ( e , t ) ; } , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 ; } ) ) , f = d ( ( function ( e , t ) { var i , n , r , a , s ; i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#.*)?$/ , n = /^([^\/?#]*)(.*)$/ , r = /(?:\/|^)\.(?=\/)/g , a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g , s = { buildAbsoluteURL : function ( e , t , i ) { if ( i = i || { } , e = e . trim ( ) , ! ( t = t . trim ( ) ) ) { if ( ! i . alwaysNormalize ) return e ; var r = s . parseURL ( e ) ; if ( ! r ) throw new Error ( "Error trying to parse base URL." ) ; return r . path = s . normalizePath ( r . path ) , s . buildURLFromParts ( r ) } var a = s . parseURL ( t ) ; if ( ! a ) throw new Error ( "Error trying to parse relative URL." ) ; if ( a . scheme ) return i . alwaysNormalize ? ( a . path = s . normalizePath ( a . path ) , s . buildURLFromParts ( a ) ) : t ; var o = s . parseURL ( e ) ; if ( ! o ) throw new Error ( "Error trying to parse base URL." ) ; if ( ! o . netLoc && o . path && "/" !== o . path [ 0 ] ) { var u = n . exec ( o . path ) ; o . netLoc = u [ 1 ] , o . path = u [ 2 ] ; } o . netLoc && ! o . path && ( o . path = "/" ) ; var d = { scheme : o . scheme , netLoc : a . netLoc , path : null , params : a . params , query : a . query , fragment : a . fragment } ; if ( ! a . netLoc && ( d . netLoc = o . netLoc , "/" !== a . path [ 0 ] ) ) if ( a . path ) { var l = o . path , h = l . substring ( 0 , l . lastIndexOf ( "/" ) + 1 ) + a . path ; d . path = s . normalizePath ( h ) ; } else d . path = o . path , a . params || ( d . params = o . params , a . query || ( d . query = o . query ) ) ; return null === d . path && ( d . path = i . alwaysNormalize ? s . normalizePath ( a . path ) : a . path ) , s . buildURLFromParts ( d ) } , parseURL : function ( e ) { var t = i . exec ( e ) ; return t ? { scheme : t [ 1 ] || "" , netLoc : t [ 2 ] || "" , path : t [ 3 ] || "" , params : t [ 4 ] || "" , query : t [ 5 ] || "" , fragment : t [ 6 ] || "" } : null } , normalizePath : function ( e ) { for ( e = e . split ( "" ) . reverse ( ) . join ( "" ) . replace ( r , "" ) ; e . length !== ( e = e . replace ( a , "" ) ) . length ; ) ; return e . split ( "" ) . reverse ( ) . join ( "" ) } , buildURLFromParts : function ( e ) { return e . scheme + e . netLoc + e . path + e . params + e . query + e . fragment } } , e . exports = s ; } ) ) , p = "http://example.com" , m = function ( e , t ) { if ( /^[a-z]+:/i . test ( t ) ) return t ; /^data:/ . test ( e ) && ( e = o . default . location && o . default . location . href || "" ) ; var i = "function" == typeof o . default . URL , n = /^\/\// . test ( e ) , r = ! o . default . location && ! /\/\//i . test ( e ) ; if ( i ? e = new o . default . URL ( e , o . default . location || p ) : /\/\//i . test ( e ) || ( e = f . buildAbsoluteURL ( o . default . location && o . default . location . href || "" , e ) ) , i ) { var a = new URL ( t , e ) ; return r ? a . href . slice ( p . length ) : n ? a . href . slice ( a . protocol . length ) : a . href } return f . buildAbsoluteURL ( e , t ) } , g = m , y = function ( e , t , i ) { return e && i && i . responseURL && t !== i . responseURL ? i . responseURL : t } , _ = function ( e ) { return u . default . log . debug ? u . default . log . debug . bind ( u . default , "VHS:" , e + " >" ) : function ( ) { } } , v = d ( ( function ( e ) { function t ( ) { return e . exports = t = Object . assign || function ( e ) { for ( var t = 1 ; t < arguments . length ; t ++ ) { var i = arguments [ t ] ; for ( var n in i ) Object . prototype . hasOwnProperty . call ( i , n ) && ( e [ n ] = i [ n ] ) ; } return e } , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 , t . apply ( this , arguments ) } e . exports = t , e . exports . default = e . exports , e . exports . _ _esModule = ! 0 ; } ) ) , T = function ( ) { function e ( ) { this . listeners = { } ; } var t = e . prototype ; return t . on = function ( e , t ) { this . listeners [ e ] || ( this . listeners [ e ] = [ ] ) , this . listeners [ e ] . push ( t ) ; } , t . off = function ( e , t ) { if ( ! this . listeners [ e ] ) return ! 1 ; var i = this . listeners [ e ] . indexOf ( t ) ; return this . listeners [ e ] = this . listeners [ e ] . slice ( 0 ) , this . listeners [ e ] . splice ( i , 1 ) , i > - 1 } , t . tri
2021-05-20 03:39:12 +03:00
/*! @name m3u8-parser @version 4.7.0 @license Apache-2.0 */ var S = function ( e ) { function t ( ) { var t ; return ( t = e . call ( this ) || this ) . buffer = "" , t } return c ( t , e ) , t . prototype . push = function ( e ) { var t ; for ( this . buffer += e , t = this . buffer . indexOf ( "\n" ) ; t > - 1 ; t = this . buffer . indexOf ( "\n" ) ) this . trigger ( "data" , this . buffer . substring ( 0 , t ) ) , this . buffer = this . buffer . substring ( t + 1 ) ; } , t } ( T ) , I = String . fromCharCode ( 9 ) , E = function ( e ) { var t = /([0-9.]*)?@?([0-9.]*)?/ . exec ( e || "" ) , i = { } ; return t [ 1 ] && ( i . length = parseInt ( t [ 1 ] , 10 ) ) , t [ 2 ] && ( i . offset = parseInt ( t [ 2 ] , 10 ) ) , i } , w = function ( e ) { for ( var t , i = e . split ( new RegExp ( '(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))' ) ) , n = { } , r = i . length ; r -- ; ) "" !== i [ r ] && ( ( t = /([^=]*)=(.*)/ . exec ( i [ r ] ) . slice ( 1 ) ) [ 0 ] = t [ 0 ] . replace ( /^\s+|\s+$/g , "" ) , t [ 1 ] = t [ 1 ] . replace ( /^\s+|\s+$/g , "" ) , t [ 1 ] = t [ 1 ] . replace ( /^['"](.*)['"]$/g , "$1" ) , n [ t [ 0 ] ] = t [ 1 ] ) ; return n } , A = function ( e ) { function t ( ) { var t ; return ( t = e . call ( this ) || this ) . customParsers = [ ] , t . tagMappers = [ ] , t } c ( t , e ) ; var i = t . prototype ; return i . push = function ( e ) { var t , i , n = this ; 0 !== ( e = e . trim ( ) ) . length && ( "#" === e [ 0 ] ? this . tagMappers . reduce ( ( function ( t , i ) { var n = i ( e ) ; return n === e ? t : t . concat ( [ n ] ) } ) , [ e ] ) . forEach ( ( function ( e ) { for ( var r = 0 ; r < n . customParsers . length ; r ++ ) if ( n . customParsers [ r ] . call ( n , e ) ) return ; if ( 0 === e . indexOf ( "#EXT" ) ) if ( e = e . replace ( "\r" , "" ) , t = /^#EXTM3U/ . exec ( e ) ) n . trigger ( "data" , { type : "tag" , tagType : "m3u" } ) ; else { if ( t = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/ . exec ( e ) ) return i = { type : "tag" , tagType : "inf" } , t [ 1 ] && ( i . duration = parseFloat ( t [ 1 ] ) ) , t [ 2 ] && ( i . title = t [ 2 ] ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/ . exec ( e ) ) return i = { type : "tag" , tagType : "targetduration" } , t [ 1 ] && ( i . duration = parseInt ( t [ 1 ] , 10 ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-VERSION:?([0-9.]*)?/ . exec ( e ) ) return i = { type : "tag" , tagType : "version" } , t [ 1 ] && ( i . version = parseInt ( t [ 1 ] , 10 ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/ . exec ( e ) ) return i = { type : "tag" , tagType : "media-sequence" } , t [ 1 ] && ( i . number = parseInt ( t [ 1 ] , 10 ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/ . exec ( e ) ) return i = { type : "tag" , tagType : "discontinuity-sequence" } , t [ 1 ] && ( i . number = parseInt ( t [ 1 ] , 10 ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/ . exec ( e ) ) return i = { type : "tag" , tagType : "playlist-type" } , t [ 1 ] && ( i . playlistType = t [ 1 ] ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-BYTERANGE:?(.*)?$/ . exec ( e ) ) return i = v ( E ( t [ 1 ] ) , { type : "tag" , tagType : "byterange" } ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/ . exec ( e ) ) return i = { type : "tag" , tagType : "allow-cache" } , t [ 1 ] && ( i . allowed = ! /NO/ . test ( t [ 1 ] ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-MAP:?(.*)$/ . exec ( e ) ) { if ( i = { type : "tag" , tagType : "map" } , t [ 1 ] ) { var a = w ( t [ 1 ] ) ; a . URI && ( i . uri = a . URI ) , a . BYTERANGE && ( i . byterange = E ( a . BYTERANGE ) ) ; } n . trigger ( "data" , i ) ; } else if ( t = /^#EXT-X-STREAM-INF:?(.*)$/ . exec ( e ) ) { if ( i = { type : "tag" , tagType : "stream-inf" } , t [ 1 ] ) { if ( i . attributes = w ( t [ 1 ] ) , i . attributes . RESOLUTION ) { var s = i . attributes . RESOLUTION . split ( "x" ) , o = { } ; s [ 0 ] && ( o . width = parseInt ( s [ 0 ] , 10 ) ) , s [ 1 ] && ( o . height = parseInt ( s [ 1 ] , 10 ) ) , i . attributes . RESOLUTION = o ; } i . attributes . BANDWIDTH && ( i . attributes . BANDWIDTH = parseInt ( i . attributes . BANDWIDTH , 10 ) ) , i . attributes [ "PROGRAM-ID" ] && ( i . attributes [ "PROGRAM-ID" ] = parseInt ( i . attributes [ "PROGRAM-ID" ] , 10 ) ) ; } n . trigger ( "data" , i ) ; } else { if ( t = /^#EXT-X-MEDIA:?(.*)$/ . exec ( e ) ) return i = { type : "tag" , tagType : "media" } , t [ 1 ] && ( i . attributes = w ( t [ 1 ] ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-ENDLIST/ . exec ( e ) ) n . trigger ( "data" , { type : "tag" , tagType : "endlist" } ) ; else if ( t = /^#EXT-X-DISCONTINUITY/ . exec ( e ) ) n . trigger ( "data" , { type : "tag" , tagType : "discontinuity" } ) ; else { if ( t = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/ . exec ( e ) ) return i = { type : "tag" , tagType : "program-date-time" } , t [ 1 ] && ( i . dateTimeString = t [ 1 ] , i . dateTimeObject = new Date ( t [ 1 ] ) ) , void n . trigger ( "data" , i ) ; if ( t = /^#EXT-X-KEY:?(.*)$/ . exec ( e ) ) return i = { type : "tag" , tagType : "key" } , t [ 1 ] && ( i . attributes = w ( t [ 1 ] ) , i . attributes . IV && ( "0x" === i . attributes . IV . substring ( 0 , 2 ) . toLowerCase ( ) && ( i . attributes . IV = i . attributes . IV . substring ( 2 ) ) , i . attributes . IV = i . attributes . IV . match ( /.{8}/g ) , i . attributes . IV [ 0 ] = parseInt ( i . attributes . IV [ 0 ] , 16 ) , i . attributes . IV [ 1 ] = parseInt ( i . attributes . IV [ 1 ] , 16 ) , i . attributes . IV [ 2 ] = parseI
2020-10-05 18:43:38 +03:00
/*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */
var e ;
2021-06-05 05:47:59 +03:00
/*! @name aes-decrypter @version 3.1.2 @license Apache-2.0 */ r ( null , ( e = d ) . subarray ( 0 , e . byteLength - e [ e . byteLength - 1 ] ) ) ; } ) ) ; } return e . prototype . decryptChunk _ = function ( e , t , i , n ) { return function ( ) { var r = function ( e , t , i ) { var n , r , a , o , d , l , h , c , f , p = new Int32Array ( e . buffer , e . byteOffset , e . byteLength >> 2 ) , m = new s ( Array . prototype . slice . call ( t ) ) , g = new Uint8Array ( e . byteLength ) , y = new Int32Array ( g . buffer ) ; for ( n = i [ 0 ] , r = i [ 1 ] , a = i [ 2 ] , o = i [ 3 ] , f = 0 ; f < p . length ; f += 4 ) d = u ( p [ f ] ) , l = u ( p [ f + 1 ] ) , h = u ( p [ f + 2 ] ) , c = u ( p [ f + 3 ] ) , m . decrypt ( d , l , h , c , y , f ) , y [ f ] = u ( y [ f ] ^ n ) , y [ f + 1 ] = u ( y [ f + 1 ] ^ r ) , y [ f + 2 ] = u ( y [ f + 2 ] ^ a ) , y [ f + 3 ] = u ( y [ f + 3 ] ^ o ) , n = d , r = l , a = h , o = c ; return g } ( e , t , i ) ; n . set ( r , e . byteOffset ) ; } } , t ( e , null , [ { key : "STEP" , get : function ( ) { return 32e3 } } ] ) , e } ( ) ; self . onmessage = function ( e ) { var t = e . data , i = new Uint8Array ( t . encrypted . bytes , t . encrypted . byteOffset , t . encrypted . byteLength ) , n = new Uint32Array ( t . key . bytes , t . key . byteOffset , t . key . byteLength / 4 ) , r = new Uint32Array ( t . iv . bytes , t . iv . byteOffset , t . iv . byteLength / 4 ) ; new d ( i , n , r , ( function ( e , i ) { var n , r ; self . postMessage ( ( n = { source : t . source , decrypted : i } , r = { } , Object . keys ( n ) . forEach ( ( function ( e ) { var t = n [ e ] ; ArrayBuffer . isView ( t ) ? r [ e ] = { bytes : t . buffer , byteOffset : t . byteOffset , byteLength : t . byteLength } : r [ e ] = t ; } ) ) , r ) , [ i . buffer ] ) ; } ) ) ; } ; } ) ) ) ) , yn = function ( e ) { var t = e . default ? "main" : "alternative" ; return e . characteristics && e . characteristics . indexOf ( "public.accessibility.describes-video" ) >= 0 && ( t = "main-desc" ) , t } , _n = function ( e , t ) { e . abort ( ) , e . pause ( ) , t && t . activePlaylistLoader && ( t . activePlaylistLoader . pause ( ) , t . activePlaylistLoader = null ) ; } , vn = function ( e , t ) { t . activePlaylistLoader = e , e . load ( ) ; } , Tn = { AUDIO : function ( e , t ) { return function ( ) { var i = t . segmentLoaders [ e ] , n = t . mediaTypes [ e ] , r = t . blacklistCurrentPlaylist ; _n ( i , n ) ; var a = n . activeTrack ( ) , s = n . activeGroup ( ) , o = ( s . filter ( ( function ( e ) { return e . default } ) ) [ 0 ] || s [ 0 ] ) . id , d = n . tracks [ o ] ; if ( a !== d ) { for ( var l in u . default . log . warn ( "Problem encountered loading the alternate audio track.Switching back to default." ) , n . tracks ) n . tracks [ l ] . enabled = n . tracks [ l ] === d ; n . onTrackChanged ( ) ; } else r ( { message : "Problem encountered loading the default audio track." } ) ; } } , SUBTITLES : function ( e , t ) { return function ( ) { var i = t . segmentLoaders [ e ] , n = t . mediaTypes [ e ] ; u . default . log . warn ( "Problem encountered loading the subtitle track.Disabling subtitle track." ) , _n ( i , n ) ; var r = n . activeTrack ( ) ; r && ( r . mode = "disabled" ) , n . onTrackChanged ( ) ; } } } , bn = { AUDIO : function ( e , t , i ) { if ( t ) { var n = i . tech , r = i . requestOptions , a = i . segmentLoaders [ e ] ; t . on ( "loadedmetadata" , ( function ( ) { var e = t . media ( ) ; a . playlist ( e , r ) , ( ! n . paused ( ) || e . endList && "none" !== n . preload ( ) ) && a . load ( ) ; } ) ) , t . on ( "loadedplaylist" , ( function ( ) { a . playlist ( t . media ( ) , r ) , n . paused ( ) || a . load ( ) ; } ) ) , t . on ( "error" , Tn [ e ] ( e , i ) ) ; } } , SUBTITLES : function ( e , t , i ) { var n = i . tech , r = i . requestOptions , a = i . segmentLoaders [ e ] , s = i . mediaTypes [ e ] ; t . on ( "loadedmetadata" , ( function ( ) { var e = t . media ( ) ; a . playlist ( e , r ) , a . track ( s . activeTrack ( ) ) , ( ! n . paused ( ) || e . endList && "none" !== n . preload ( ) ) && a . load ( ) ; } ) ) , t . on ( "loadedplaylist" , ( function ( ) { a . playlist ( t . media ( ) , r ) , n . paused ( ) || a . load ( ) ; } ) ) , t . on ( "error" , Tn [ e ] ( e , i ) ) ; } } , Sn = { AUDIO : function ( e , t ) { var i = t . vhs , n = t . sourceType , r = t . segmentLoaders [ e ] , a = t . requestOptions , s = t . master . mediaGroups , o = t . mediaTypes [ e ] , d = o . groups , l = o . tracks , h = o . logger _ , c = t . masterPlaylistLoader , f = Se ( c . master ) ; for ( var p in s [ e ] && 0 !== Object . keys ( s [ e ] ) . length || ( s [ e ] = { main : { default : { default : ! 0 } } } ) , s [ e ] ) for ( var m in d [ p ] || ( d [ p ] = [ ] ) , s [ e ] [ p ] ) { var g = s [ e ] [ p ] [ m ] , y = void 0 ; if ( f ? ( h ( "AUDIO group '" + p + "' label '" + m + "' is a master playlist" ) , g . isMasterPlaylist = ! 0 , y = null ) : y = "vhs-json" === n && g . playlists ? new V ( g . playlists [ 0 ] , i , a ) : g . resolvedUri ? new V ( g . resolvedUri , i , a ) : g . playlists && "dash" === n ? new ti ( g . playlists [ 0 ] , i , a , c ) : null , g = u . default . mergeOptions ( { id : m , playlistLoader : y } , g ) , bn [ e ] ( e , g . playlistLoader , t ) , d [ p ] . push ( g ) , void 0 === l [ m ] ) { var _ = new u . default . AudioTrack ( { id : m , kind : yn ( g ) , enabled : ! 1 , language : g . language , default : g . default , label : m } ) ; l [ m ] = _ ; } } r . on ( "error" , Tn [ e ] ( e , t ) ) ; } , SUBTITLES : function ( e , t ) { var i = t . tech , n = t . vhs , r = t . sourceType , a = t . segmentLoaders [ e ] , s = t . requestOptions , o = t . master . mediaGroups , d = t . mediaTypes [ e ] , l = d . groups , h = d . tracks , c = t . masterPlaylistLoader ; for ( var f in o [ e ] ) for ( var p in l [ f ]
2020-10-05 18:43:38 +03:00
} ) ;
var videojsHttpStreaming _min$1 = /*@__PURE__*/ getDefaultExportFromCjs ( videojsHttpStreaming _min ) ;
export default videojsHttpStreaming _min$1 ;