@dooboostore/dom-parser 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DomParser.js +43 -13
- package/dist/cjs/DomParser.js.map +2 -2
- package/dist/cjs/factory/ElementFactory.js +27 -6
- package/dist/cjs/factory/ElementFactory.js.map +2 -2
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/node/CharacterData.js.map +1 -1
- package/dist/cjs/node/ChildNode.js +0 -15
- package/dist/cjs/node/ChildNode.js.map +3 -3
- package/dist/cjs/node/ChildNodeBase.js +20 -0
- package/dist/cjs/node/ChildNodeBase.js.map +2 -2
- package/dist/cjs/node/Comment.js.map +2 -2
- package/dist/cjs/node/Document.js +0 -27
- package/dist/cjs/node/Document.js.map +4 -4
- package/dist/cjs/node/DocumentBase.js +169 -202
- package/dist/cjs/node/DocumentBase.js.map +2 -2
- package/dist/cjs/node/DocumentFragment.js +0 -15
- package/dist/cjs/node/DocumentFragment.js.map +3 -3
- package/dist/cjs/node/DocumentFragmentBase.js.map +2 -2
- package/dist/cjs/node/Node.js.map +1 -1
- package/dist/cjs/node/NodeBase.js +44 -2
- package/dist/cjs/node/NodeBase.js.map +2 -2
- package/dist/cjs/node/NodeFilter.js +43 -0
- package/dist/cjs/node/NodeFilter.js.map +7 -0
- package/dist/cjs/node/NodeIterator.js +1 -28
- package/dist/cjs/node/NodeIterator.js.map +2 -2
- package/dist/cjs/node/ParentNode.js +0 -15
- package/dist/cjs/node/ParentNode.js.map +3 -3
- package/dist/cjs/node/ParentNodeBase.js +10 -10
- package/dist/cjs/node/ParentNodeBase.js.map +3 -3
- package/dist/cjs/node/ShadowRootBase.js +79 -0
- package/dist/cjs/node/ShadowRootBase.js.map +7 -0
- package/dist/cjs/node/Text.js +0 -15
- package/dist/cjs/node/Text.js.map +3 -3
- package/dist/cjs/node/TextBase.js +0 -3
- package/dist/cjs/node/TextBase.js.map +2 -2
- package/dist/cjs/node/TreeWalker.js +272 -0
- package/dist/cjs/node/TreeWalker.js.map +7 -0
- package/dist/cjs/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +7 -6
- package/dist/cjs/node/collection/HTMLCollectionImp.js.map +7 -0
- package/dist/cjs/node/collection/HTMLCollectionOfImp.js +26 -0
- package/dist/cjs/node/collection/HTMLCollectionOfImp.js.map +7 -0
- package/dist/cjs/node/collection/NodeList.js.map +1 -1
- package/dist/cjs/node/collection/{NodeListOf.js → NodeListOfImp.js} +6 -6
- package/dist/cjs/node/collection/NodeListOfImp.js.map +7 -0
- package/dist/cjs/node/collection/StylePropertyMapImpl.js +65 -0
- package/dist/cjs/node/collection/StylePropertyMapImpl.js.map +7 -0
- package/dist/cjs/node/collection/index.js +6 -6
- package/dist/cjs/node/collection/index.js.map +2 -2
- package/dist/cjs/node/elements/Element.js +0 -15
- package/dist/cjs/node/elements/Element.js.map +3 -3
- package/dist/cjs/node/elements/ElementBase.js +164 -322
- package/dist/cjs/node/elements/ElementBase.js.map +3 -3
- package/dist/cjs/node/elements/HTMLAreaElement.js.map +2 -2
- package/dist/cjs/node/{collection/HTMLCollectionOf.js → elements/HTMLAudioElement.js} +9 -16
- package/dist/cjs/node/elements/HTMLAudioElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLButtonElement.js +1 -1
- package/dist/cjs/node/elements/HTMLButtonElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLDListElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDListElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLDataElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDataElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLDataListElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDataListElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLDetailsElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDetailsElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLDialogElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDialogElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLElement.js +10 -0
- package/dist/cjs/node/elements/HTMLElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLElementBase.js +153 -3
- package/dist/cjs/node/elements/HTMLElementBase.js.map +2 -2
- package/dist/cjs/node/elements/HTMLEmbedElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLFieldSetElement.js +29 -0
- package/dist/cjs/node/elements/HTMLFieldSetElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLHRElement.js +29 -0
- package/dist/cjs/node/elements/HTMLHRElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLIFrameElement.js +29 -0
- package/dist/cjs/node/elements/HTMLIFrameElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLLabelElement.js +29 -0
- package/dist/cjs/node/elements/HTMLLabelElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLLegendElement.js +29 -0
- package/dist/cjs/node/elements/HTMLLegendElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLMapElement.js +29 -0
- package/dist/cjs/node/elements/HTMLMapElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLMeterElement.js +29 -0
- package/dist/cjs/node/elements/HTMLMeterElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLModElement.js +29 -0
- package/dist/cjs/node/elements/HTMLModElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLObjectElement.js +29 -0
- package/dist/cjs/node/elements/HTMLObjectElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLOptGroupElement.js +29 -0
- package/dist/cjs/node/elements/HTMLOptGroupElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLOptionElement.js +29 -0
- package/dist/cjs/node/elements/HTMLOptionElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLOutputElement.js +29 -0
- package/dist/cjs/node/elements/HTMLOutputElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLParamElement.js +29 -0
- package/dist/cjs/node/elements/HTMLParamElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLPictureElement.js +29 -0
- package/dist/cjs/node/elements/HTMLPictureElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLPreElement.js +29 -0
- package/dist/cjs/node/elements/HTMLPreElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLProgressElement.js +29 -0
- package/dist/cjs/node/elements/HTMLProgressElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLQuoteElement.js +29 -0
- package/dist/cjs/node/elements/HTMLQuoteElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLSelectElement.js +29 -0
- package/dist/cjs/node/elements/HTMLSelectElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLSlotElement.js +29 -0
- package/dist/cjs/node/elements/HTMLSlotElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLSourceElement.js +29 -0
- package/dist/cjs/node/elements/HTMLSourceElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTableElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTbodyElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTdElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTemplateElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTextAreaElement.js +29 -0
- package/dist/cjs/node/elements/HTMLTextAreaElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTfootElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTheadElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTimeElement.js +29 -0
- package/dist/cjs/node/elements/HTMLTimeElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTrElement.js.map +2 -2
- package/dist/cjs/node/elements/HTMLTrackElement.js +29 -0
- package/dist/cjs/node/elements/HTMLTrackElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLVideoElement.js +29 -0
- package/dist/cjs/node/elements/HTMLVideoElement.js.map +7 -0
- package/dist/cjs/node/elements/index.js +181 -92
- package/dist/cjs/node/elements/index.js.map +2 -2
- package/dist/cjs/node/index.js +6 -16
- package/dist/cjs/node/index.js.map +2 -2
- package/dist/cjs/utils/CSSSelector.js.map +2 -2
- package/dist/cjs/window/CustomElementRegistryImp.js +105 -0
- package/dist/cjs/window/CustomElementRegistryImp.js.map +7 -0
- package/dist/cjs/window/Window.js +0 -15
- package/dist/cjs/window/Window.js.map +3 -3
- package/dist/cjs/window/WindowBase.js +233 -515
- package/dist/cjs/window/WindowBase.js.map +2 -2
- package/dist/cjs/window/index.js +0 -5
- package/dist/cjs/window/index.js.map +2 -2
- package/dist/esm/DomParser.js +43 -13
- package/dist/esm/DomParser.js.map +2 -2
- package/dist/esm/factory/ElementFactory.js +27 -6
- package/dist/esm/factory/ElementFactory.js.map +2 -2
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/node/ChildNodeBase.js +20 -0
- package/dist/esm/node/ChildNodeBase.js.map +2 -2
- package/dist/esm/node/Comment.js.map +2 -2
- package/dist/esm/node/Document.js +0 -8
- package/dist/esm/node/Document.js.map +4 -4
- package/dist/esm/node/DocumentBase.js +166 -199
- package/dist/esm/node/DocumentBase.js.map +2 -2
- package/dist/esm/node/DocumentFragmentBase.js.map +2 -2
- package/dist/esm/node/Node.js.map +1 -1
- package/dist/esm/node/NodeBase.js +45 -22
- package/dist/esm/node/NodeBase.js.map +2 -2
- package/dist/esm/node/NodeFilter.js +24 -0
- package/dist/esm/node/NodeFilter.js.map +7 -0
- package/dist/esm/node/NodeIterator.js +1 -28
- package/dist/esm/node/NodeIterator.js.map +2 -2
- package/dist/esm/node/ParentNodeBase.js +4 -4
- package/dist/esm/node/ParentNodeBase.js.map +2 -2
- package/dist/esm/node/ShadowRootBase.js +60 -0
- package/dist/esm/node/ShadowRootBase.js.map +7 -0
- package/dist/esm/node/TextBase.js +0 -3
- package/dist/esm/node/TextBase.js.map +2 -2
- package/dist/esm/node/TreeWalker.js +253 -0
- package/dist/esm/node/TreeWalker.js.map +7 -0
- package/dist/esm/node/collection/{HTMLCollection.js → HTMLCollectionImp.js} +4 -3
- package/dist/esm/node/collection/HTMLCollectionImp.js.map +7 -0
- package/dist/esm/node/collection/HTMLCollectionOfImp.js +7 -0
- package/dist/esm/node/collection/HTMLCollectionOfImp.js.map +7 -0
- package/dist/esm/node/collection/NodeList.js.map +1 -1
- package/dist/esm/node/collection/{NodeListOf.js → NodeListOfImp.js} +3 -3
- package/dist/esm/node/collection/NodeListOfImp.js.map +7 -0
- package/dist/esm/node/collection/StylePropertyMapImpl.js +46 -0
- package/dist/esm/node/collection/StylePropertyMapImpl.js.map +7 -0
- package/dist/esm/node/collection/index.js +6 -6
- package/dist/esm/node/collection/index.js.map +2 -2
- package/dist/esm/node/elements/ElementBase.js +164 -322
- package/dist/esm/node/elements/ElementBase.js.map +3 -3
- package/dist/esm/node/elements/HTMLAreaElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLAudioElement.js +10 -0
- package/dist/esm/node/elements/HTMLAudioElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLButtonElement.js +1 -1
- package/dist/esm/node/elements/HTMLButtonElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLDListElement.js +10 -0
- package/dist/esm/node/elements/HTMLDListElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLDataElement.js +10 -0
- package/dist/esm/node/elements/HTMLDataElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLDataListElement.js +10 -0
- package/dist/esm/node/elements/HTMLDataListElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLDetailsElement.js +10 -0
- package/dist/esm/node/elements/HTMLDetailsElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLDialogElement.js +10 -0
- package/dist/esm/node/elements/HTMLDialogElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLElement.js +6 -0
- package/dist/esm/node/elements/HTMLElement.js.map +3 -3
- package/dist/esm/node/elements/HTMLElementBase.js +153 -3
- package/dist/esm/node/elements/HTMLElementBase.js.map +2 -2
- package/dist/esm/node/elements/HTMLEmbedElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLFieldSetElement.js +10 -0
- package/dist/esm/node/elements/HTMLFieldSetElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLHRElement.js +10 -0
- package/dist/esm/node/elements/HTMLHRElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLIFrameElement.js +10 -0
- package/dist/esm/node/elements/HTMLIFrameElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLLabelElement.js +10 -0
- package/dist/esm/node/elements/HTMLLabelElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLLegendElement.js +10 -0
- package/dist/esm/node/elements/HTMLLegendElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLMapElement.js +10 -0
- package/dist/esm/node/elements/HTMLMapElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLMeterElement.js +10 -0
- package/dist/esm/node/elements/HTMLMeterElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLModElement.js +10 -0
- package/dist/esm/node/elements/HTMLModElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLObjectElement.js +10 -0
- package/dist/esm/node/elements/HTMLObjectElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLOptGroupElement.js +10 -0
- package/dist/esm/node/elements/HTMLOptGroupElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLOptionElement.js +10 -0
- package/dist/esm/node/elements/HTMLOptionElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLOutputElement.js +10 -0
- package/dist/esm/node/elements/HTMLOutputElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLParamElement.js +10 -0
- package/dist/esm/node/elements/HTMLParamElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLPictureElement.js +10 -0
- package/dist/esm/node/elements/HTMLPictureElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLPreElement.js +10 -0
- package/dist/esm/node/elements/HTMLPreElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLProgressElement.js +10 -0
- package/dist/esm/node/elements/HTMLProgressElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLQuoteElement.js +10 -0
- package/dist/esm/node/elements/HTMLQuoteElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLSelectElement.js +10 -0
- package/dist/esm/node/elements/HTMLSelectElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLSlotElement.js +10 -0
- package/dist/esm/node/elements/HTMLSlotElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLSourceElement.js +10 -0
- package/dist/esm/node/elements/HTMLSourceElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTableElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTbodyElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTdElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTemplateElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTextAreaElement.js +10 -0
- package/dist/esm/node/elements/HTMLTextAreaElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTfootElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTheadElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTimeElement.js +10 -0
- package/dist/esm/node/elements/HTMLTimeElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTrElement.js.map +2 -2
- package/dist/esm/node/elements/HTMLTrackElement.js +10 -0
- package/dist/esm/node/elements/HTMLTrackElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLVideoElement.js +10 -0
- package/dist/esm/node/elements/HTMLVideoElement.js.map +7 -0
- package/dist/esm/node/elements/index.js +182 -93
- package/dist/esm/node/elements/index.js.map +2 -2
- package/dist/esm/node/index.js +7 -17
- package/dist/esm/node/index.js.map +2 -2
- package/dist/esm/utils/CSSSelector.js.map +2 -2
- package/dist/esm/window/CustomElementRegistryImp.js +86 -0
- package/dist/esm/window/CustomElementRegistryImp.js.map +7 -0
- package/dist/esm/window/WindowBase.js +282 -499
- package/dist/esm/window/WindowBase.js.map +2 -2
- package/dist/esm/window/index.js +0 -5
- package/dist/esm/window/index.js.map +2 -2
- package/dist/esm-bundle/dooboostore-dom-parser.esm.js +3755 -3548
- package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
- package/dist/types/DomParser.d.ts +4 -0
- package/dist/types/DomParser.d.ts.map +1 -1
- package/dist/types/factory/ElementFactory.d.ts +1 -1
- package/dist/types/factory/ElementFactory.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/node/CharacterData.d.ts +0 -2
- package/dist/types/node/CharacterData.d.ts.map +1 -1
- package/dist/types/node/ChildNode.d.ts +0 -38
- package/dist/types/node/ChildNode.d.ts.map +1 -1
- package/dist/types/node/ChildNodeBase.d.ts +6 -4
- package/dist/types/node/ChildNodeBase.d.ts.map +1 -1
- package/dist/types/node/Comment.d.ts +1 -1
- package/dist/types/node/Comment.d.ts.map +1 -1
- package/dist/types/node/Document.d.ts +0 -856
- package/dist/types/node/Document.d.ts.map +1 -1
- package/dist/types/node/DocumentBase.d.ts +68 -108
- package/dist/types/node/DocumentBase.d.ts.map +1 -1
- package/dist/types/node/DocumentFragment.d.ts +0 -38
- package/dist/types/node/DocumentFragment.d.ts.map +1 -1
- package/dist/types/node/DocumentFragmentBase.d.ts +1 -8
- package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -1
- package/dist/types/node/Node.d.ts +0 -213
- package/dist/types/node/Node.d.ts.map +1 -1
- package/dist/types/node/NodeBase.d.ts +11 -8
- package/dist/types/node/NodeBase.d.ts.map +1 -1
- package/dist/types/node/NodeFilter.d.ts +25 -0
- package/dist/types/node/NodeFilter.d.ts.map +1 -0
- package/dist/types/node/NodeIterator.d.ts +0 -34
- package/dist/types/node/NodeIterator.d.ts.map +1 -1
- package/dist/types/node/ParentNode.d.ts +0 -84
- package/dist/types/node/ParentNode.d.ts.map +1 -1
- package/dist/types/node/ParentNodeBase.d.ts +0 -5
- package/dist/types/node/ParentNodeBase.d.ts.map +1 -1
- package/dist/types/node/ShadowRootBase.d.ts +36 -0
- package/dist/types/node/ShadowRootBase.d.ts.map +1 -0
- package/dist/types/node/Text.d.ts +0 -24
- package/dist/types/node/Text.d.ts.map +1 -1
- package/dist/types/node/TextBase.d.ts +2 -3
- package/dist/types/node/TextBase.d.ts.map +1 -1
- package/dist/types/node/TreeWalker.d.ts +48 -0
- package/dist/types/node/TreeWalker.d.ts.map +1 -0
- package/dist/types/node/collection/{HTMLCollection.d.ts → HTMLCollectionImp.d.ts} +2 -3
- package/dist/types/node/collection/HTMLCollectionImp.d.ts.map +1 -0
- package/dist/types/node/collection/HTMLCollectionOfImp.d.ts +9 -0
- package/dist/types/node/collection/HTMLCollectionOfImp.d.ts.map +1 -0
- package/dist/types/node/collection/NodeList.d.ts +0 -1
- package/dist/types/node/collection/NodeList.d.ts.map +1 -1
- package/dist/types/node/collection/{NodeListOf.d.ts → NodeListOfImp.d.ts} +3 -4
- package/dist/types/node/collection/NodeListOfImp.d.ts.map +1 -0
- package/dist/types/node/collection/StylePropertyMapImpl.d.ts +20 -0
- package/dist/types/node/collection/StylePropertyMapImpl.d.ts.map +1 -0
- package/dist/types/node/collection/index.d.ts +3 -3
- package/dist/types/node/collection/index.d.ts.map +1 -1
- package/dist/types/node/elements/Element.d.ts +0 -686
- package/dist/types/node/elements/Element.d.ts.map +1 -1
- package/dist/types/node/elements/ElementBase.d.ts +97 -73
- package/dist/types/node/elements/ElementBase.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLAreaElement.d.ts +0 -1
- package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLAudioElement.d.ts +8 -0
- package/dist/types/node/elements/HTMLAudioElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLButtonElement.d.ts +1 -1
- package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLDListElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLDListElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLDataElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLDataElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLDataListElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLDataListElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLDetailsElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLDetailsElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLDialogElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLDialogElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLElement.d.ts +2 -88
- package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLElementBase.d.ts +133 -3
- package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLEmbedElement.d.ts +0 -1
- package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLFieldSetElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLFieldSetElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLHRElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLHRElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLIFrameElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLIFrameElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLLabelElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLLabelElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLLegendElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLLegendElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLMapElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLMapElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLMeterElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLMeterElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLModElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLModElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLObjectElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLObjectElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLOptGroupElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLOptGroupElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLOptionElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLOptionElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLOutputElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLOutputElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLParamElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLParamElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLPictureElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLPictureElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLPreElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLPreElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLProgressElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLProgressElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLQuoteElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLQuoteElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLSelectElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLSelectElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLSlotElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLSlotElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLSourceElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLSourceElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTableElement.d.ts +3 -4
- package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTbodyElement.d.ts +2 -3
- package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTemplateElement.d.ts +0 -1
- package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTextAreaElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLTextAreaElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTfootElement.d.ts +2 -3
- package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTheadElement.d.ts +2 -3
- package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTimeElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLTimeElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTrElement.d.ts +2 -3
- package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLTrackElement.d.ts +5 -0
- package/dist/types/node/elements/HTMLTrackElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLVideoElement.d.ts +8 -0
- package/dist/types/node/elements/HTMLVideoElement.d.ts.map +1 -0
- package/dist/types/node/elements/index.d.ts +106 -52
- package/dist/types/node/elements/index.d.ts.map +1 -1
- package/dist/types/node/index.d.ts +4 -7
- package/dist/types/node/index.d.ts.map +1 -1
- package/dist/types/utils/CSSSelector.d.ts +0 -1
- package/dist/types/utils/CSSSelector.d.ts.map +1 -1
- package/dist/types/window/CustomElementRegistryImp.d.ts +18 -0
- package/dist/types/window/CustomElementRegistryImp.d.ts.map +1 -0
- package/dist/types/window/Window.d.ts +0 -619
- package/dist/types/window/Window.d.ts.map +1 -1
- package/dist/types/window/WindowBase.d.ts +261 -284
- package/dist/types/window/WindowBase.d.ts.map +1 -1
- package/dist/types/window/index.d.ts +0 -1
- package/dist/types/window/index.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-dom-parser.umd.js +3765 -3558
- package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
- package/package.json +1 -1
- package/src/DomParser.ts +458 -429
- package/src/factory/ElementFactory.ts +79 -53
- package/src/index.ts +11 -10
- package/src/node/CharacterData.ts +0 -2
- package/src/node/ChildNode.ts +42 -42
- package/src/node/ChildNodeBase.ts +60 -39
- package/src/node/Comment.ts +60 -60
- package/src/node/Document.ts +129 -882
- package/src/node/DocumentBase.ts +371 -462
- package/src/node/DocumentFragment.ts +38 -44
- package/src/node/DocumentFragmentBase.ts +4 -9
- package/src/node/Node.ts +231 -224
- package/src/node/NodeBase.ts +469 -443
- package/src/node/NodeFilter.ts +50 -0
- package/src/node/NodeIterator.ts +117 -172
- package/src/node/ParentNode.ts +93 -93
- package/src/node/ParentNodeBase.ts +7 -10
- package/src/node/ShadowRootBase.ts +87 -0
- package/src/node/Text.ts +30 -30
- package/src/node/TextBase.ts +92 -94
- package/src/node/TreeWalker.ts +280 -0
- package/src/node/collection/{HTMLCollection.ts → HTMLCollectionImp.ts} +3 -2
- package/src/node/collection/HTMLCollectionOfImp.ts +12 -0
- package/src/node/collection/NodeList.ts +1 -1
- package/src/node/collection/{NodeListOf.ts → NodeListOfImp.ts} +3 -3
- package/src/node/collection/StylePropertyMapImpl.ts +60 -0
- package/src/node/collection/index.ts +3 -3
- package/src/node/elements/Element.ts +212 -771
- package/src/node/elements/ElementBase.ts +840 -1195
- package/src/node/elements/HTMLAreaElement.ts +0 -1
- package/src/node/elements/HTMLAudioElement.ts +10 -0
- package/src/node/elements/HTMLButtonElement.ts +63 -63
- package/src/node/elements/HTMLDListElement.ts +2 -0
- package/src/node/elements/HTMLDataElement.ts +6 -0
- package/src/node/elements/HTMLDataListElement.ts +2 -0
- package/src/node/elements/HTMLDetailsElement.ts +2 -0
- package/src/node/elements/HTMLDialogElement.ts +2 -0
- package/src/node/elements/HTMLElement.ts +2 -102
- package/src/node/elements/HTMLElementBase.ts +453 -156
- package/src/node/elements/HTMLEmbedElement.ts +0 -1
- package/src/node/elements/HTMLFieldSetElement.ts +2 -0
- package/src/node/elements/HTMLHRElement.ts +2 -0
- package/src/node/elements/HTMLIFrameElement.ts +2 -0
- package/src/node/elements/HTMLLabelElement.ts +2 -0
- package/src/node/elements/HTMLLegendElement.ts +2 -0
- package/src/node/elements/HTMLMapElement.ts +2 -0
- package/src/node/elements/HTMLMeterElement.ts +2 -0
- package/src/node/elements/HTMLModElement.ts +2 -0
- package/src/node/elements/HTMLObjectElement.ts +2 -0
- package/src/node/elements/HTMLOptGroupElement.ts +2 -0
- package/src/node/elements/HTMLOptionElement.ts +2 -0
- package/src/node/elements/HTMLOutputElement.ts +2 -0
- package/src/node/elements/HTMLParamElement.ts +2 -0
- package/src/node/elements/HTMLPictureElement.ts +2 -0
- package/src/node/elements/HTMLPreElement.ts +2 -0
- package/src/node/elements/HTMLProgressElement.ts +2 -0
- package/src/node/elements/HTMLQuoteElement.ts +2 -0
- package/src/node/elements/HTMLSelectElement.ts +2 -0
- package/src/node/elements/HTMLSlotElement.ts +2 -0
- package/src/node/elements/HTMLSourceElement.ts +2 -0
- package/src/node/elements/HTMLTableElement.ts +3 -7
- package/src/node/elements/HTMLTbodyElement.ts +2 -3
- package/src/node/elements/HTMLTdElement.ts +1 -1
- package/src/node/elements/HTMLTemplateElement.ts +3 -6
- package/src/node/elements/HTMLTextAreaElement.ts +2 -0
- package/src/node/elements/HTMLTfootElement.ts +2 -3
- package/src/node/elements/HTMLTheadElement.ts +2 -3
- package/src/node/elements/HTMLTimeElement.ts +2 -0
- package/src/node/elements/HTMLTrElement.ts +3 -4
- package/src/node/elements/HTMLTrackElement.ts +2 -0
- package/src/node/elements/HTMLVideoElement.ts +10 -0
- package/src/node/elements/index.ts +226 -149
- package/src/node/index.ts +8 -8
- package/src/utils/CSSSelector.ts +0 -1
- package/src/window/CustomElementRegistryImp.ts +120 -0
- package/src/window/Window.ts +716 -715
- package/src/window/WindowBase.ts +842 -998
- package/src/window/index.ts +0 -1
- package/tsconfig.json +1 -0
- package/dist/cjs/node/collection/HTMLCollection.js.map +0 -7
- package/dist/cjs/node/collection/HTMLCollectionOf.js.map +0 -7
- package/dist/cjs/node/collection/NodeListOf.js.map +0 -7
- package/dist/esm/node/collection/HTMLCollection.js.map +0 -7
- package/dist/esm/node/collection/HTMLCollectionOf.js +0 -17
- package/dist/esm/node/collection/HTMLCollectionOf.js.map +0 -7
- package/dist/esm/node/collection/NodeListOf.js.map +0 -7
- package/dist/types/node/collection/HTMLCollection.d.ts.map +0 -1
- package/dist/types/node/collection/HTMLCollectionOf.d.ts +0 -14
- package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +0 -1
- package/dist/types/node/collection/NodeListOf.d.ts.map +0 -1
- package/src/node/collection/HTMLCollectionOf.ts +0 -26
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ParentNodeBase } from "../ParentNodeBase.js";
|
|
2
|
-
import {
|
|
3
|
-
import { ElementFactory } from "../../factory/ElementFactory.js";
|
|
2
|
+
import { HTMLCollectionImp, HTMLCollectionOfImp } from "../collection/index.js";
|
|
4
3
|
import { ELEMENT_NODE, TEXT_NODE, ATTRIBUTE_NODE } from "../Node.js";
|
|
5
4
|
import { CSSSelector } from "../../utils/CSSSelector.js";
|
|
6
5
|
import { NodeBase } from "../NodeBase.js";
|
|
6
|
+
import { ShadowRootBase } from "../ShadowRootBase.js";
|
|
7
7
|
class DOMException extends Error {
|
|
8
8
|
constructor(message, name = "DOMException") {
|
|
9
9
|
super(message);
|
|
@@ -11,16 +11,23 @@ class DOMException extends Error {
|
|
|
11
11
|
this.name = name;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
class
|
|
15
|
-
constructor(_tagName, ownerDocument) {
|
|
14
|
+
const _ElementBase = class _ElementBase extends ParentNodeBase {
|
|
15
|
+
constructor(_tagName = "DIV", ownerDocument) {
|
|
16
16
|
super(ELEMENT_NODE, _tagName.toUpperCase(), ownerDocument);
|
|
17
17
|
this._tagName = _tagName;
|
|
18
18
|
this._id = "";
|
|
19
19
|
this._className = "";
|
|
20
20
|
this._attributes = /* @__PURE__ */ new Map();
|
|
21
|
+
this._shadowRoot = null;
|
|
21
22
|
this.onfullscreenchange = null;
|
|
22
23
|
this.onfullscreenerror = null;
|
|
23
24
|
}
|
|
25
|
+
animate(keyframes, options) {
|
|
26
|
+
throw new Error("Method not implemented.");
|
|
27
|
+
}
|
|
28
|
+
getAnimations(options) {
|
|
29
|
+
throw new Error("Method not implemented.");
|
|
30
|
+
}
|
|
24
31
|
get tagName() {
|
|
25
32
|
return this._tagName.toUpperCase();
|
|
26
33
|
}
|
|
@@ -66,10 +73,12 @@ class ElementBase extends ParentNodeBase {
|
|
|
66
73
|
if (value !== null && value !== void 0) {
|
|
67
74
|
const stringValue = String(value);
|
|
68
75
|
const escapedValue = this.escapeHTMLEntities(stringValue);
|
|
69
|
-
const { TextBase } =
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
const { TextBase } = _ElementBase.dependencies;
|
|
77
|
+
if (TextBase) {
|
|
78
|
+
const textNode = new TextBase(escapedValue, this._ownerDocument);
|
|
79
|
+
this._childNodesInternal.push(textNode);
|
|
80
|
+
textNode._parentNodeInternal = this;
|
|
81
|
+
}
|
|
73
82
|
}
|
|
74
83
|
}
|
|
75
84
|
set innerHTML(value) {
|
|
@@ -88,13 +97,16 @@ class ElementBase extends ParentNodeBase {
|
|
|
88
97
|
*/
|
|
89
98
|
generateChildElementHTML(element) {
|
|
90
99
|
const tagName = element.tagName.toLowerCase();
|
|
91
|
-
const attrs = Array.from(element._attributes?.entries() || []).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${value.replace(/"/g, """)}"`).join("");
|
|
100
|
+
const attrs = Array.from(element._attributes?.entries() || []).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${String(value).replace(/"/g, """)}"`).join("");
|
|
92
101
|
const selfClosingTags = ["img", "input", "br", "hr", "meta", "link", "area", "base", "col", "embed", "source", "track", "wbr"];
|
|
93
102
|
const isSelfClosing = selfClosingTags.includes(tagName);
|
|
94
103
|
if (isSelfClosing) {
|
|
95
104
|
return `<${tagName}${attrs} />`;
|
|
96
105
|
} else {
|
|
97
106
|
let childHTML = "";
|
|
107
|
+
if (element.shadowRoot) {
|
|
108
|
+
childHTML += `<template shadowrootmode="${element.shadowRoot.mode}">${element.shadowRoot.innerHTML}</template>`;
|
|
109
|
+
}
|
|
98
110
|
for (const child of element._childNodesInternal || []) {
|
|
99
111
|
if (child.nodeType === TEXT_NODE) {
|
|
100
112
|
childHTML += child._nodeValue || "";
|
|
@@ -110,8 +122,12 @@ class ElementBase extends ParentNodeBase {
|
|
|
110
122
|
/**
|
|
111
123
|
* Improved HTML parser for innerHTML using a stack-based approach
|
|
112
124
|
*/
|
|
113
|
-
parseAndAppendHTML(html) {
|
|
114
|
-
const
|
|
125
|
+
parseAndAppendHTML(html, targetNode = this) {
|
|
126
|
+
const { ElementFactory, TextBase, Comment } = _ElementBase.dependencies;
|
|
127
|
+
if (!ElementFactory) {
|
|
128
|
+
console.error("SWC DOM Parser: ElementFactory dependency not injected.");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
115
131
|
let i = 0;
|
|
116
132
|
const length = html.length;
|
|
117
133
|
while (i < length) {
|
|
@@ -120,18 +136,14 @@ class ElementBase extends ParentNodeBase {
|
|
|
120
136
|
let text = html.substring(i).trim();
|
|
121
137
|
if (text) {
|
|
122
138
|
text = this.fixBrokenClosingTags(text);
|
|
123
|
-
|
|
124
|
-
const textNode = new TextBase(text, this._ownerDocument);
|
|
125
|
-
this.appendChild(textNode);
|
|
139
|
+
if (TextBase) targetNode.appendChild(new TextBase(text, this._ownerDocument));
|
|
126
140
|
}
|
|
127
141
|
break;
|
|
128
142
|
} else if (nextTagStart > i) {
|
|
129
143
|
let text = html.substring(i, nextTagStart).trim();
|
|
130
144
|
if (text) {
|
|
131
145
|
text = this.fixBrokenClosingTags(text);
|
|
132
|
-
|
|
133
|
-
const textNode = new TextBase(text, this._ownerDocument);
|
|
134
|
-
this.appendChild(textNode);
|
|
146
|
+
if (TextBase) targetNode.appendChild(new TextBase(text, this._ownerDocument));
|
|
135
147
|
}
|
|
136
148
|
}
|
|
137
149
|
i = nextTagStart;
|
|
@@ -142,9 +154,7 @@ class ElementBase extends ParentNodeBase {
|
|
|
142
154
|
const commentEnd = html.indexOf("-->", i);
|
|
143
155
|
if (commentEnd !== -1) {
|
|
144
156
|
const commentContent = html.substring(i + 4, commentEnd);
|
|
145
|
-
|
|
146
|
-
const commentNode = new Comment(commentContent, this._ownerDocument);
|
|
147
|
-
this.appendChild(commentNode);
|
|
157
|
+
if (Comment) targetNode.appendChild(new Comment(commentContent, this._ownerDocument));
|
|
148
158
|
i = commentEnd + 3;
|
|
149
159
|
continue;
|
|
150
160
|
}
|
|
@@ -153,17 +163,15 @@ class ElementBase extends ParentNodeBase {
|
|
|
153
163
|
const parts2 = tagContent.slice(0, -1).trim().split(/\s+/);
|
|
154
164
|
const tagName2 = parts2[0];
|
|
155
165
|
const attributeString2 = tagContent.slice(tagName2.length, -1).trim();
|
|
156
|
-
const element =
|
|
166
|
+
const element = ElementFactory.createElement(tagName2, this._ownerDocument);
|
|
157
167
|
this.parseAttributes(element, attributeString2);
|
|
158
|
-
|
|
168
|
+
targetNode.appendChild(element);
|
|
159
169
|
i = tagEnd + 1;
|
|
160
170
|
continue;
|
|
161
171
|
}
|
|
162
172
|
if (tagContent.startsWith("/")) {
|
|
163
173
|
const closingTagText = `<${tagContent}>`;
|
|
164
|
-
|
|
165
|
-
const textNode = new TextBase(closingTagText, this._ownerDocument);
|
|
166
|
-
this.appendChild(textNode);
|
|
174
|
+
if (TextBase) targetNode.appendChild(new TextBase(closingTagText, this._ownerDocument));
|
|
167
175
|
i = tagEnd + 1;
|
|
168
176
|
continue;
|
|
169
177
|
}
|
|
@@ -171,44 +179,38 @@ class ElementBase extends ParentNodeBase {
|
|
|
171
179
|
const tagName = parts[0];
|
|
172
180
|
const attributeString = tagContent.slice(tagName.length).trim();
|
|
173
181
|
if (tagName === "style" || tagName === "script") {
|
|
174
|
-
const
|
|
175
|
-
const closingTagIndex2 = html.indexOf(
|
|
182
|
+
const closingTag = `</${tagName}>`;
|
|
183
|
+
const closingTagIndex2 = html.indexOf(closingTag, tagEnd + 1);
|
|
176
184
|
if (closingTagIndex2 !== -1) {
|
|
177
|
-
const element =
|
|
185
|
+
const element = ElementFactory.createElement(tagName, this._ownerDocument);
|
|
178
186
|
this.parseAttributes(element, attributeString);
|
|
179
187
|
const content = html.substring(tagEnd + 1, closingTagIndex2);
|
|
180
|
-
if (content) {
|
|
181
|
-
|
|
182
|
-
const textNode = new TextBase(content, this._ownerDocument);
|
|
183
|
-
element.appendChild(textNode);
|
|
188
|
+
if (content && TextBase) {
|
|
189
|
+
element.appendChild(new TextBase(content, this._ownerDocument));
|
|
184
190
|
}
|
|
185
|
-
|
|
186
|
-
i = closingTagIndex2 +
|
|
191
|
+
targetNode.appendChild(element);
|
|
192
|
+
i = closingTagIndex2 + closingTag.length;
|
|
187
193
|
continue;
|
|
188
194
|
}
|
|
189
195
|
}
|
|
190
|
-
const closingTag = `</${tagName}>`;
|
|
191
196
|
const closingTagIndex = this.findMatchingClosingTag(html, tagName, tagEnd + 1);
|
|
192
197
|
if (closingTagIndex !== -1) {
|
|
193
|
-
const element =
|
|
198
|
+
const element = ElementFactory.createElement(tagName, this._ownerDocument);
|
|
194
199
|
this.parseAttributes(element, attributeString);
|
|
195
200
|
const content = html.substring(tagEnd + 1, closingTagIndex);
|
|
196
201
|
if (content.trim()) {
|
|
197
202
|
element.innerHTML = content;
|
|
198
203
|
}
|
|
199
|
-
|
|
200
|
-
i = closingTagIndex +
|
|
204
|
+
targetNode.appendChild(element);
|
|
205
|
+
i = closingTagIndex + (tagName.length + 3);
|
|
201
206
|
} else {
|
|
202
|
-
const element =
|
|
207
|
+
const element = ElementFactory.createElement(tagName, this._ownerDocument);
|
|
203
208
|
this.parseAttributes(element, attributeString);
|
|
204
|
-
|
|
209
|
+
targetNode.appendChild(element);
|
|
205
210
|
i = tagEnd + 1;
|
|
206
211
|
}
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
|
-
/**
|
|
210
|
-
* Find the real end of a tag, considering quoted attributes
|
|
211
|
-
*/
|
|
212
214
|
findTagEnd(html, startIndex) {
|
|
213
215
|
let i = startIndex + 1;
|
|
214
216
|
let inQuotes = false;
|
|
@@ -219,9 +221,7 @@ class ElementBase extends ParentNodeBase {
|
|
|
219
221
|
if (char === '"' || char === "'") {
|
|
220
222
|
inQuotes = true;
|
|
221
223
|
quoteChar = char;
|
|
222
|
-
} else if (char === ">")
|
|
223
|
-
return i;
|
|
224
|
-
}
|
|
224
|
+
} else if (char === ">") return i;
|
|
225
225
|
} else {
|
|
226
226
|
if (char === quoteChar) {
|
|
227
227
|
inQuotes = false;
|
|
@@ -232,16 +232,9 @@ class ElementBase extends ParentNodeBase {
|
|
|
232
232
|
}
|
|
233
233
|
return -1;
|
|
234
234
|
}
|
|
235
|
-
/**
|
|
236
|
-
* Fix broken closing tags in text content
|
|
237
|
-
* Converts patterns like "/div>" to "</div>"
|
|
238
|
-
*/
|
|
239
235
|
fixBrokenClosingTags(text) {
|
|
240
236
|
return text.replace(/\/(\w+)>/g, "</$1>");
|
|
241
237
|
}
|
|
242
|
-
/**
|
|
243
|
-
* Find the matching closing tag, accounting for nested tags of the same type
|
|
244
|
-
*/
|
|
245
238
|
findMatchingClosingTag(html, tagName, startIndex) {
|
|
246
239
|
const openTag = `<${tagName}`;
|
|
247
240
|
const closeTag = `</${tagName}>`;
|
|
@@ -250,135 +243,70 @@ class ElementBase extends ParentNodeBase {
|
|
|
250
243
|
while (i < html.length && depth > 0) {
|
|
251
244
|
const nextOpen = html.indexOf(openTag, i);
|
|
252
245
|
const nextClose = html.indexOf(closeTag, i);
|
|
253
|
-
if (nextClose === -1)
|
|
254
|
-
return -1;
|
|
255
|
-
}
|
|
246
|
+
if (nextClose === -1) return -1;
|
|
256
247
|
if (nextOpen !== -1 && nextOpen < nextClose) {
|
|
257
248
|
const afterTag = html.charAt(nextOpen + openTag.length);
|
|
258
|
-
if (afterTag === " " || afterTag === ">" || afterTag === "/")
|
|
259
|
-
depth++;
|
|
260
|
-
}
|
|
249
|
+
if (afterTag === " " || afterTag === ">" || afterTag === "/") depth++;
|
|
261
250
|
i = nextOpen + openTag.length;
|
|
262
251
|
} else {
|
|
263
252
|
depth--;
|
|
264
|
-
if (depth === 0)
|
|
265
|
-
return nextClose;
|
|
266
|
-
}
|
|
253
|
+
if (depth === 0) return nextClose;
|
|
267
254
|
i = nextClose + closeTag.length;
|
|
268
255
|
}
|
|
269
256
|
}
|
|
270
257
|
return -1;
|
|
271
258
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Parse attributes from attribute string
|
|
274
|
-
*/
|
|
275
259
|
parseAttributes(element, attributeString) {
|
|
276
260
|
let position = 0;
|
|
277
261
|
const length = attributeString.length;
|
|
278
262
|
while (position < length) {
|
|
279
|
-
while (position < length && /\s/.test(attributeString[position]))
|
|
280
|
-
position++;
|
|
281
|
-
}
|
|
263
|
+
while (position < length && /\s/.test(attributeString[position])) position++;
|
|
282
264
|
if (position >= length) break;
|
|
283
265
|
const nameStart = position;
|
|
284
|
-
while (position < length && /[\w:-]/.test(attributeString[position]))
|
|
285
|
-
position++;
|
|
286
|
-
}
|
|
266
|
+
while (position < length && /[\w:-]/.test(attributeString[position])) position++;
|
|
287
267
|
if (position === nameStart) {
|
|
288
268
|
position++;
|
|
289
269
|
continue;
|
|
290
270
|
}
|
|
291
271
|
const name = attributeString.substring(nameStart, position);
|
|
292
|
-
while (position < length && /\s/.test(attributeString[position]))
|
|
293
|
-
position++;
|
|
294
|
-
}
|
|
272
|
+
while (position < length && /\s/.test(attributeString[position])) position++;
|
|
295
273
|
let value = "";
|
|
296
274
|
if (position < length && attributeString[position] === "=") {
|
|
297
275
|
position++;
|
|
298
|
-
while (position < length && /\s/.test(attributeString[position]))
|
|
299
|
-
position++;
|
|
300
|
-
}
|
|
276
|
+
while (position < length && /\s/.test(attributeString[position])) position++;
|
|
301
277
|
if (position < length) {
|
|
302
278
|
const quote = attributeString[position];
|
|
303
279
|
if (quote === '"' || quote === "'") {
|
|
304
280
|
position++;
|
|
305
281
|
const valueStart = position;
|
|
306
|
-
while (position < length && attributeString[position] !== quote)
|
|
307
|
-
position++;
|
|
308
|
-
}
|
|
282
|
+
while (position < length && attributeString[position] !== quote) position++;
|
|
309
283
|
value = attributeString.substring(valueStart, position);
|
|
310
|
-
if (position < length && attributeString[position] === quote)
|
|
311
|
-
position++;
|
|
312
|
-
}
|
|
284
|
+
if (position < length && attributeString[position] === quote) position++;
|
|
313
285
|
} else {
|
|
314
286
|
const valueStart = position;
|
|
315
|
-
while (position < length && !/\s/.test(attributeString[position]))
|
|
316
|
-
position++;
|
|
317
|
-
}
|
|
287
|
+
while (position < length && !/\s/.test(attributeString[position])) position++;
|
|
318
288
|
value = attributeString.substring(valueStart, position);
|
|
319
289
|
}
|
|
320
290
|
}
|
|
321
291
|
}
|
|
322
|
-
|
|
323
|
-
element.setAttribute(name, value);
|
|
292
|
+
element.setAttribute(name, this.decodeHTMLEntities(value));
|
|
324
293
|
}
|
|
325
294
|
}
|
|
326
|
-
/**
|
|
327
|
-
* Escape HTML entities in a string to prevent XSS
|
|
328
|
-
*/
|
|
329
295
|
escapeHTMLEntities(str) {
|
|
330
|
-
const entityMap = {
|
|
331
|
-
|
|
332
|
-
"<": "<",
|
|
333
|
-
">": ">",
|
|
334
|
-
'"': """,
|
|
335
|
-
"'": "'"
|
|
336
|
-
};
|
|
337
|
-
return str.replace(/[&<>"']/g, (char) => {
|
|
338
|
-
return entityMap[char] || char;
|
|
339
|
-
});
|
|
296
|
+
const entityMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" };
|
|
297
|
+
return str.replace(/[&<>"']/g, (char) => entityMap[char] || char);
|
|
340
298
|
}
|
|
341
|
-
/**
|
|
342
|
-
* Decode HTML entities in a string
|
|
343
|
-
*/
|
|
344
299
|
decodeHTMLEntities(str) {
|
|
345
|
-
const entityMap = {
|
|
346
|
-
"&": "&",
|
|
347
|
-
"<": "<",
|
|
348
|
-
">": ">",
|
|
349
|
-
""": '"',
|
|
350
|
-
"'": "'",
|
|
351
|
-
""": '"',
|
|
352
|
-
"'": "'",
|
|
353
|
-
"©": "\xA9",
|
|
354
|
-
"®": "\xAE",
|
|
355
|
-
"™": "\u2122",
|
|
356
|
-
" ": " ",
|
|
357
|
-
"…": "\u2026",
|
|
358
|
-
"—": "\u2014",
|
|
359
|
-
"–": "\u2013",
|
|
360
|
-
"‘": "\u2018",
|
|
361
|
-
"’": "\u2019",
|
|
362
|
-
"“": '"',
|
|
363
|
-
"”": '"'
|
|
364
|
-
};
|
|
300
|
+
const entityMap = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'", """: '"', "'": "'", "©": "\xA9", "®": "\xAE", "™": "\u2122", " ": " ", "…": "\u2026", "—": "\u2014", "–": "\u2013", "‘": "\u2018", "’": "\u2019", "“": '"', "”": '"' };
|
|
365
301
|
return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {
|
|
366
|
-
if (entityMap[entity])
|
|
367
|
-
return entityMap[entity];
|
|
368
|
-
}
|
|
302
|
+
if (entityMap[entity]) return entityMap[entity];
|
|
369
303
|
if (entity.startsWith("&#") && entity.endsWith(";")) {
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
if (!isNaN(num)) {
|
|
373
|
-
return String.fromCharCode(num);
|
|
374
|
-
}
|
|
304
|
+
const num = parseInt(entity.slice(2, -1), 10);
|
|
305
|
+
return isNaN(num) ? entity : String.fromCharCode(num);
|
|
375
306
|
}
|
|
376
307
|
if (entity.startsWith("&#x") && entity.endsWith(";")) {
|
|
377
|
-
const
|
|
378
|
-
|
|
379
|
-
if (!isNaN(num)) {
|
|
380
|
-
return String.fromCharCode(num);
|
|
381
|
-
}
|
|
308
|
+
const num = parseInt(entity.slice(3, -1), 16);
|
|
309
|
+
return isNaN(num) ? entity : String.fromCharCode(num);
|
|
382
310
|
}
|
|
383
311
|
return entity;
|
|
384
312
|
});
|
|
@@ -387,11 +315,7 @@ class ElementBase extends ParentNodeBase {
|
|
|
387
315
|
const attrs = Array.from(this._attributes.entries()).map(([name, value]) => value === "" ? ` ${name}` : ` ${name}="${value.replace(/"/g, """)}"`).join("");
|
|
388
316
|
const selfClosingTags = ["img", "input", "br", "hr", "meta", "link", "area", "base", "col", "embed", "source", "track", "wbr"];
|
|
389
317
|
const isSelfClosing = selfClosingTags.includes(this.tagName.toLowerCase());
|
|
390
|
-
|
|
391
|
-
return `<${this.tagName.toLowerCase()}${attrs} />`;
|
|
392
|
-
} else {
|
|
393
|
-
return `<${this.tagName.toLowerCase()}${attrs}>${this.innerHTML}</${this.tagName.toLowerCase()}>`;
|
|
394
|
-
}
|
|
318
|
+
return isSelfClosing ? `<${this.tagName.toLowerCase()}${attrs} />` : `<${this.tagName.toLowerCase()}${attrs}>${this.innerHTML}</${this.tagName.toLowerCase()}>`;
|
|
395
319
|
}
|
|
396
320
|
get namespaceURI() {
|
|
397
321
|
return "http://www.w3.org/1999/xhtml";
|
|
@@ -399,28 +323,20 @@ class ElementBase extends ParentNodeBase {
|
|
|
399
323
|
get prefix() {
|
|
400
324
|
return null;
|
|
401
325
|
}
|
|
402
|
-
// Attribute methods
|
|
403
326
|
getAttribute(qualifiedName) {
|
|
404
|
-
|
|
405
|
-
return value !== void 0 ? value : null;
|
|
327
|
+
return this._attributes.get(qualifiedName.toLowerCase()) ?? null;
|
|
406
328
|
}
|
|
407
329
|
setAttribute(qualifiedName, value) {
|
|
408
330
|
const name = qualifiedName.toLowerCase();
|
|
409
331
|
this._attributes.set(name, value);
|
|
410
|
-
if (name === "id")
|
|
411
|
-
|
|
412
|
-
} else if (name === "class") {
|
|
413
|
-
this._className = value;
|
|
414
|
-
}
|
|
332
|
+
if (name === "id") this._id = value;
|
|
333
|
+
else if (name === "class") this._className = value;
|
|
415
334
|
}
|
|
416
335
|
removeAttribute(qualifiedName) {
|
|
417
336
|
const name = qualifiedName.toLowerCase();
|
|
418
337
|
this._attributes.delete(name);
|
|
419
|
-
if (name === "id")
|
|
420
|
-
|
|
421
|
-
} else if (name === "class") {
|
|
422
|
-
this._className = "";
|
|
423
|
-
}
|
|
338
|
+
if (name === "id") this._id = "";
|
|
339
|
+
else if (name === "class") this._className = "";
|
|
424
340
|
}
|
|
425
341
|
hasAttribute(qualifiedName) {
|
|
426
342
|
return this._attributes.has(qualifiedName.toLowerCase());
|
|
@@ -428,82 +344,74 @@ class ElementBase extends ParentNodeBase {
|
|
|
428
344
|
closest(selectors) {
|
|
429
345
|
let element = this;
|
|
430
346
|
while (element) {
|
|
431
|
-
if (element.matches && element.matches(selectors))
|
|
432
|
-
return element;
|
|
433
|
-
}
|
|
347
|
+
if (element.matches && element.matches(selectors)) return element;
|
|
434
348
|
element = element.parentElement;
|
|
435
349
|
}
|
|
436
350
|
return null;
|
|
437
351
|
}
|
|
438
|
-
/**
|
|
439
|
-
* Returns true if the element would be selected by the specified CSS selector; otherwise, returns false.
|
|
440
|
-
*
|
|
441
|
-
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)
|
|
442
|
-
*/
|
|
443
352
|
matches(selectors) {
|
|
444
353
|
return CSSSelector.matches(this, selectors);
|
|
445
354
|
}
|
|
446
|
-
// ChildNode methods are inherited from ParentNodeBase -> ChildNodeBase
|
|
447
|
-
// Additional Element properties and methods - Not implemented yet
|
|
448
355
|
get attributes() {
|
|
449
356
|
return new NamedNodeMapImpl(this._attributes);
|
|
450
357
|
}
|
|
451
358
|
get clientHeight() {
|
|
452
|
-
|
|
359
|
+
return 0;
|
|
453
360
|
}
|
|
454
361
|
get clientLeft() {
|
|
455
|
-
|
|
362
|
+
return 0;
|
|
456
363
|
}
|
|
457
364
|
get clientTop() {
|
|
458
|
-
|
|
365
|
+
return 0;
|
|
459
366
|
}
|
|
460
367
|
get clientWidth() {
|
|
461
|
-
|
|
368
|
+
return 0;
|
|
462
369
|
}
|
|
463
370
|
get currentCSSZoom() {
|
|
464
|
-
|
|
371
|
+
return 1;
|
|
465
372
|
}
|
|
466
373
|
get part() {
|
|
467
|
-
|
|
374
|
+
return { length: 0, value: "", add: () => {
|
|
375
|
+
}, remove: () => {
|
|
376
|
+
}, contains: () => false, toggle: () => false, replace: () => false, item: () => null };
|
|
468
377
|
}
|
|
469
378
|
get scrollHeight() {
|
|
470
|
-
|
|
379
|
+
return 0;
|
|
471
380
|
}
|
|
472
381
|
get scrollLeft() {
|
|
473
|
-
|
|
382
|
+
return 0;
|
|
474
383
|
}
|
|
475
|
-
set scrollLeft(
|
|
476
|
-
throw new Error("Element.scrollLeft setter is not implemented yet");
|
|
384
|
+
set scrollLeft(_) {
|
|
477
385
|
}
|
|
478
386
|
get scrollTop() {
|
|
479
|
-
|
|
387
|
+
return 0;
|
|
480
388
|
}
|
|
481
|
-
set scrollTop(
|
|
482
|
-
throw new Error("Element.scrollTop setter is not implemented yet");
|
|
389
|
+
set scrollTop(_) {
|
|
483
390
|
}
|
|
484
391
|
get scrollWidth() {
|
|
485
|
-
|
|
392
|
+
return 0;
|
|
486
393
|
}
|
|
487
394
|
get shadowRoot() {
|
|
488
|
-
|
|
395
|
+
return this._shadowRoot;
|
|
489
396
|
}
|
|
490
397
|
get slot() {
|
|
491
|
-
|
|
398
|
+
return this.getAttribute("slot") || "";
|
|
492
399
|
}
|
|
493
400
|
set slot(value) {
|
|
494
|
-
|
|
401
|
+
this.setAttribute("slot", value);
|
|
495
402
|
}
|
|
496
|
-
// Methods - Not implemented yet
|
|
497
403
|
attachShadow(init) {
|
|
498
|
-
throw new
|
|
404
|
+
if (this._shadowRoot) throw new DOMException("Shadow root already attached", "NotSupportedError");
|
|
405
|
+
this._shadowRoot = new ShadowRootBase(this, init, this._ownerDocument);
|
|
406
|
+
return this._shadowRoot;
|
|
499
407
|
}
|
|
500
|
-
checkVisibility(
|
|
501
|
-
|
|
408
|
+
checkVisibility(_options) {
|
|
409
|
+
return true;
|
|
502
410
|
}
|
|
503
411
|
computedStyleMap() {
|
|
504
|
-
|
|
412
|
+
return /* @__PURE__ */ new Map();
|
|
505
413
|
}
|
|
506
|
-
getAttributeNS(
|
|
414
|
+
getAttributeNS(_ns, localName) {
|
|
507
415
|
return this.getAttribute(localName);
|
|
508
416
|
}
|
|
509
417
|
getAttributeNames() {
|
|
@@ -511,19 +419,17 @@ class ElementBase extends ParentNodeBase {
|
|
|
511
419
|
}
|
|
512
420
|
getAttributeNode(qualifiedName) {
|
|
513
421
|
const value = this.getAttribute(qualifiedName);
|
|
514
|
-
|
|
515
|
-
return new AttrImpl(qualifiedName, value);
|
|
516
|
-
}
|
|
517
|
-
return null;
|
|
422
|
+
return value !== null ? new AttrImpl(qualifiedName, value) : null;
|
|
518
423
|
}
|
|
519
|
-
getAttributeNodeNS(
|
|
424
|
+
getAttributeNodeNS(_ns, localName) {
|
|
520
425
|
return this.getAttributeNode(localName);
|
|
521
426
|
}
|
|
522
427
|
getBoundingClientRect() {
|
|
523
|
-
|
|
428
|
+
return { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0, x: 0, y: 0, toJSON: () => ({}) };
|
|
524
429
|
}
|
|
525
430
|
getClientRects() {
|
|
526
|
-
|
|
431
|
+
return { length: 0, item: () => null, [Symbol.iterator]: function* () {
|
|
432
|
+
} };
|
|
527
433
|
}
|
|
528
434
|
getElementsByClassName(classNames) {
|
|
529
435
|
const result = [];
|
|
@@ -533,55 +439,37 @@ class ElementBase extends ParentNodeBase {
|
|
|
533
439
|
return classes.every((cls) => elementClasses.includes(cls));
|
|
534
440
|
};
|
|
535
441
|
const traverse = (node) => {
|
|
536
|
-
if (node.nodeType === ELEMENT_NODE)
|
|
537
|
-
|
|
538
|
-
if (hasAllClasses(element, classNameList)) {
|
|
539
|
-
result.push(element);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
for (let i = 0; i < node.childNodes.length; i++) {
|
|
543
|
-
traverse(node.childNodes[i]);
|
|
544
|
-
}
|
|
442
|
+
if (node.nodeType === ELEMENT_NODE && hasAllClasses(node, classNameList)) result.push(node);
|
|
443
|
+
for (let i = 0; i < node.childNodes.length; i++) traverse(node.childNodes[i]);
|
|
545
444
|
};
|
|
546
|
-
for (let i = 0; i < this.childNodes.length; i++)
|
|
547
|
-
|
|
548
|
-
}
|
|
549
|
-
return new HTMLCollection(result);
|
|
445
|
+
for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
|
|
446
|
+
return new HTMLCollectionOfImp(result);
|
|
550
447
|
}
|
|
551
448
|
getElementsByTagName(qualifiedName) {
|
|
552
449
|
const result = [];
|
|
553
450
|
const tagName = qualifiedName.toLowerCase();
|
|
554
451
|
const isWildcard = tagName === "*";
|
|
555
452
|
const traverse = (node) => {
|
|
556
|
-
if (node.nodeType === ELEMENT_NODE)
|
|
557
|
-
|
|
558
|
-
if (isWildcard || element.localName === tagName) {
|
|
559
|
-
result.push(element);
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
for (let i = 0; i < node.childNodes.length; i++) {
|
|
563
|
-
traverse(node.childNodes[i]);
|
|
564
|
-
}
|
|
453
|
+
if (node.nodeType === ELEMENT_NODE && (isWildcard || node.localName === tagName)) result.push(node);
|
|
454
|
+
for (let i = 0; i < node.childNodes.length; i++) traverse(node.childNodes[i]);
|
|
565
455
|
};
|
|
566
|
-
for (let i = 0; i < this.childNodes.length; i++)
|
|
567
|
-
|
|
568
|
-
}
|
|
569
|
-
return new HTMLCollection(result);
|
|
456
|
+
for (let i = 0; i < this.childNodes.length; i++) traverse(this.childNodes[i]);
|
|
457
|
+
return new HTMLCollectionImp(result);
|
|
570
458
|
}
|
|
571
|
-
getElementsByTagNameNS(
|
|
459
|
+
getElementsByTagNameNS(_ns, localName) {
|
|
572
460
|
return this.getElementsByTagName(localName);
|
|
573
461
|
}
|
|
574
|
-
getHTML(
|
|
575
|
-
|
|
462
|
+
getHTML(_options) {
|
|
463
|
+
return this.outerHTML;
|
|
576
464
|
}
|
|
577
|
-
hasAttributeNS(
|
|
465
|
+
hasAttributeNS(_ns, localName) {
|
|
578
466
|
return this.hasAttribute(localName);
|
|
579
467
|
}
|
|
580
468
|
hasAttributes() {
|
|
581
469
|
return this._attributes.size > 0;
|
|
582
470
|
}
|
|
583
|
-
hasPointerCapture(
|
|
584
|
-
|
|
471
|
+
hasPointerCapture(_id) {
|
|
472
|
+
return false;
|
|
585
473
|
}
|
|
586
474
|
insertAdjacentElement(where, element) {
|
|
587
475
|
const position = where.toLowerCase();
|
|
@@ -593,22 +481,16 @@ class ElementBase extends ParentNodeBase {
|
|
|
593
481
|
}
|
|
594
482
|
return null;
|
|
595
483
|
case "afterbegin":
|
|
596
|
-
if (this.firstChild)
|
|
597
|
-
|
|
598
|
-
} else {
|
|
599
|
-
this.appendChild(element);
|
|
600
|
-
}
|
|
484
|
+
if (this.firstChild) this.insertBefore(element, this.firstChild);
|
|
485
|
+
else this.appendChild(element);
|
|
601
486
|
return element;
|
|
602
487
|
case "beforeend":
|
|
603
488
|
this.appendChild(element);
|
|
604
489
|
return element;
|
|
605
490
|
case "afterend":
|
|
606
491
|
if (this.parentNode) {
|
|
607
|
-
if (this.nextSibling)
|
|
608
|
-
|
|
609
|
-
} else {
|
|
610
|
-
this.parentNode.appendChild(element);
|
|
611
|
-
}
|
|
492
|
+
if (this.nextSibling) this.parentNode.insertBefore(element, this.nextSibling);
|
|
493
|
+
else this.parentNode.appendChild(element);
|
|
612
494
|
return element;
|
|
613
495
|
}
|
|
614
496
|
return null;
|
|
@@ -621,32 +503,22 @@ class ElementBase extends ParentNodeBase {
|
|
|
621
503
|
const tempDiv = this._ownerDocument.createElement("div");
|
|
622
504
|
tempDiv.innerHTML = html;
|
|
623
505
|
const fragment = this._ownerDocument.createDocumentFragment();
|
|
624
|
-
while (tempDiv.firstChild)
|
|
625
|
-
fragment.appendChild(tempDiv.firstChild);
|
|
626
|
-
}
|
|
506
|
+
while (tempDiv.firstChild) fragment.appendChild(tempDiv.firstChild);
|
|
627
507
|
switch (pos) {
|
|
628
508
|
case "beforebegin":
|
|
629
|
-
if (this.parentNode)
|
|
630
|
-
this.parentNode.insertBefore(fragment, this);
|
|
631
|
-
}
|
|
509
|
+
if (this.parentNode) this.parentNode.insertBefore(fragment, this);
|
|
632
510
|
break;
|
|
633
511
|
case "afterbegin":
|
|
634
|
-
if (this.firstChild)
|
|
635
|
-
|
|
636
|
-
} else {
|
|
637
|
-
this.appendChild(fragment);
|
|
638
|
-
}
|
|
512
|
+
if (this.firstChild) this.insertBefore(fragment, this.firstChild);
|
|
513
|
+
else this.appendChild(fragment);
|
|
639
514
|
break;
|
|
640
515
|
case "beforeend":
|
|
641
516
|
this.appendChild(fragment);
|
|
642
517
|
break;
|
|
643
518
|
case "afterend":
|
|
644
519
|
if (this.parentNode) {
|
|
645
|
-
if (this.nextSibling)
|
|
646
|
-
|
|
647
|
-
} else {
|
|
648
|
-
this.parentNode.appendChild(fragment);
|
|
649
|
-
}
|
|
520
|
+
if (this.nextSibling) this.parentNode.insertBefore(fragment, this.nextSibling);
|
|
521
|
+
else this.parentNode.appendChild(fragment);
|
|
650
522
|
}
|
|
651
523
|
break;
|
|
652
524
|
default:
|
|
@@ -658,36 +530,28 @@ class ElementBase extends ParentNodeBase {
|
|
|
658
530
|
const textNode = this._ownerDocument.createTextNode(data);
|
|
659
531
|
switch (position) {
|
|
660
532
|
case "beforebegin":
|
|
661
|
-
if (this.parentNode)
|
|
662
|
-
this.parentNode.insertBefore(textNode, this);
|
|
663
|
-
}
|
|
533
|
+
if (this.parentNode) this.parentNode.insertBefore(textNode, this);
|
|
664
534
|
break;
|
|
665
535
|
case "afterbegin":
|
|
666
|
-
if (this.firstChild)
|
|
667
|
-
|
|
668
|
-
} else {
|
|
669
|
-
this.appendChild(textNode);
|
|
670
|
-
}
|
|
536
|
+
if (this.firstChild) this.insertBefore(textNode, this.firstChild);
|
|
537
|
+
else this.appendChild(textNode);
|
|
671
538
|
break;
|
|
672
539
|
case "beforeend":
|
|
673
540
|
this.appendChild(textNode);
|
|
674
541
|
break;
|
|
675
542
|
case "afterend":
|
|
676
543
|
if (this.parentNode) {
|
|
677
|
-
if (this.nextSibling)
|
|
678
|
-
|
|
679
|
-
} else {
|
|
680
|
-
this.parentNode.appendChild(textNode);
|
|
681
|
-
}
|
|
544
|
+
if (this.nextSibling) this.parentNode.insertBefore(textNode, this.nextSibling);
|
|
545
|
+
else this.parentNode.appendChild(textNode);
|
|
682
546
|
}
|
|
683
547
|
break;
|
|
684
548
|
default:
|
|
685
549
|
throw new DOMException(`Invalid position: ${where}`, "SyntaxError");
|
|
686
550
|
}
|
|
687
551
|
}
|
|
688
|
-
releasePointerCapture(
|
|
552
|
+
releasePointerCapture(_id) {
|
|
689
553
|
}
|
|
690
|
-
removeAttributeNS(
|
|
554
|
+
removeAttributeNS(_ns, localName) {
|
|
691
555
|
this.removeAttribute(localName);
|
|
692
556
|
}
|
|
693
557
|
removeAttributeNode(attr) {
|
|
@@ -698,21 +562,21 @@ class ElementBase extends ParentNodeBase {
|
|
|
698
562
|
}
|
|
699
563
|
throw new DOMException("The attribute node is not an attribute of this element", "NotFoundError");
|
|
700
564
|
}
|
|
701
|
-
requestFullscreen(
|
|
702
|
-
|
|
565
|
+
requestFullscreen(_opt) {
|
|
566
|
+
return Promise.resolve();
|
|
703
567
|
}
|
|
704
|
-
requestPointerLock(
|
|
705
|
-
|
|
568
|
+
requestPointerLock(_opt) {
|
|
569
|
+
return Promise.resolve();
|
|
706
570
|
}
|
|
707
|
-
scroll(
|
|
571
|
+
scroll(_x, _y) {
|
|
708
572
|
}
|
|
709
|
-
scrollBy(
|
|
573
|
+
scrollBy(_x, _y) {
|
|
710
574
|
}
|
|
711
|
-
scrollIntoView(
|
|
575
|
+
scrollIntoView(_arg) {
|
|
712
576
|
}
|
|
713
|
-
scrollTo(
|
|
577
|
+
scrollTo(_x, _y) {
|
|
714
578
|
}
|
|
715
|
-
setAttributeNS(
|
|
579
|
+
setAttributeNS(_ns, qualifiedName, value) {
|
|
716
580
|
this.setAttribute(qualifiedName, value);
|
|
717
581
|
}
|
|
718
582
|
setAttributeNode(attr) {
|
|
@@ -724,8 +588,9 @@ class ElementBase extends ParentNodeBase {
|
|
|
724
588
|
return this.setAttributeNode(attr);
|
|
725
589
|
}
|
|
726
590
|
setHTMLUnsafe(html) {
|
|
591
|
+
this.innerHTML = html;
|
|
727
592
|
}
|
|
728
|
-
setPointerCapture(
|
|
593
|
+
setPointerCapture(_id) {
|
|
729
594
|
}
|
|
730
595
|
toggleAttribute(qualifiedName, force) {
|
|
731
596
|
const hasAttr = this.hasAttribute(qualifiedName);
|
|
@@ -739,31 +604,31 @@ class ElementBase extends ParentNodeBase {
|
|
|
739
604
|
return hasAttr;
|
|
740
605
|
}
|
|
741
606
|
webkitMatchesSelector(selectors) {
|
|
742
|
-
return
|
|
607
|
+
return this.matches(selectors);
|
|
743
608
|
}
|
|
744
|
-
// EventTarget methods - Not implemented yet
|
|
745
609
|
addEventListener(type, listener, options) {
|
|
746
610
|
}
|
|
747
611
|
removeEventListener(type, listener, options) {
|
|
748
612
|
}
|
|
749
|
-
dispatchEvent(
|
|
613
|
+
dispatchEvent(_event) {
|
|
750
614
|
return true;
|
|
751
615
|
}
|
|
752
616
|
cloneNode(deep) {
|
|
617
|
+
const { ElementFactory } = _ElementBase.dependencies;
|
|
753
618
|
const clone = ElementFactory.createElement(this.tagName, this._ownerDocument);
|
|
754
|
-
for (const [name, value] of this._attributes)
|
|
755
|
-
clone.setAttribute(name, value);
|
|
756
|
-
}
|
|
619
|
+
for (const [name, value] of this._attributes) clone.setAttribute(name, value);
|
|
757
620
|
if (deep) {
|
|
758
|
-
for (const child of this._childNodesInternal)
|
|
759
|
-
if (child && "cloneNode" in child) {
|
|
760
|
-
clone.appendChild(child.cloneNode(true));
|
|
761
|
-
}
|
|
762
|
-
}
|
|
621
|
+
for (const child of this._childNodesInternal) if (child && "cloneNode" in child) clone.appendChild(child.cloneNode(true));
|
|
763
622
|
}
|
|
764
623
|
return clone;
|
|
765
624
|
}
|
|
766
|
-
}
|
|
625
|
+
};
|
|
626
|
+
/**
|
|
627
|
+
* Static dependencies to break circular references without using 'require' or 'global'.
|
|
628
|
+
* These are injected by the main DomParser entry point.
|
|
629
|
+
*/
|
|
630
|
+
_ElementBase.dependencies = {};
|
|
631
|
+
let ElementBase = _ElementBase;
|
|
767
632
|
class DOMTokenListImpl {
|
|
768
633
|
constructor(element) {
|
|
769
634
|
this.element = element;
|
|
@@ -779,16 +644,12 @@ class DOMTokenListImpl {
|
|
|
779
644
|
}
|
|
780
645
|
add(...tokens) {
|
|
781
646
|
const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
|
|
782
|
-
|
|
783
|
-
classes.add(token);
|
|
784
|
-
}
|
|
647
|
+
tokens.forEach((t) => classes.add(t));
|
|
785
648
|
this.element.className = Array.from(classes).join(" ");
|
|
786
649
|
}
|
|
787
650
|
remove(...tokens) {
|
|
788
651
|
const classes = new Set(this.element.className.split(/\s+/).filter((c) => c.length > 0));
|
|
789
|
-
|
|
790
|
-
classes.delete(token);
|
|
791
|
-
}
|
|
652
|
+
tokens.forEach((t) => classes.delete(t));
|
|
792
653
|
this.element.className = Array.from(classes).join(" ");
|
|
793
654
|
}
|
|
794
655
|
contains(token) {
|
|
@@ -842,16 +703,12 @@ class NamedNodeMapImpl {
|
|
|
842
703
|
const value = this.attributes.get(qualifiedName.toLowerCase());
|
|
843
704
|
return value !== void 0 ? new AttrImpl(qualifiedName, value) : null;
|
|
844
705
|
}
|
|
845
|
-
getNamedItemNS(
|
|
706
|
+
getNamedItemNS(_ns, localName) {
|
|
846
707
|
return this.getNamedItem(localName);
|
|
847
708
|
}
|
|
848
709
|
item(index) {
|
|
849
710
|
const keys = Array.from(this.attributes.keys());
|
|
850
|
-
if (index >= 0 && index < keys.length)
|
|
851
|
-
const key = keys[index];
|
|
852
|
-
const value = this.attributes.get(key);
|
|
853
|
-
return new AttrImpl(key, value);
|
|
854
|
-
}
|
|
711
|
+
if (index >= 0 && index < keys.length) return new AttrImpl(keys[index], this.attributes.get(keys[index]));
|
|
855
712
|
return null;
|
|
856
713
|
}
|
|
857
714
|
removeNamedItem(qualifiedName) {
|
|
@@ -862,7 +719,7 @@ class NamedNodeMapImpl {
|
|
|
862
719
|
}
|
|
863
720
|
throw new DOMException("The attribute is not found", "NotFoundError");
|
|
864
721
|
}
|
|
865
|
-
removeNamedItemNS(
|
|
722
|
+
removeNamedItemNS(_ns, localName) {
|
|
866
723
|
return this.removeNamedItem(localName);
|
|
867
724
|
}
|
|
868
725
|
setNamedItem(attr) {
|
|
@@ -873,42 +730,27 @@ class NamedNodeMapImpl {
|
|
|
873
730
|
setNamedItemNS(attr) {
|
|
874
731
|
return this.setNamedItem(attr);
|
|
875
732
|
}
|
|
876
|
-
// Iterator implementation
|
|
877
733
|
*[Symbol.iterator]() {
|
|
878
|
-
const
|
|
879
|
-
for (const key of keys) {
|
|
880
|
-
const value = this.attributes.get(key);
|
|
881
|
-
yield new AttrImpl(key, value);
|
|
882
|
-
}
|
|
734
|
+
for (const [key, value] of this.attributes) yield new AttrImpl(key, value);
|
|
883
735
|
}
|
|
884
|
-
// Additional iterator methods for compatibility
|
|
885
736
|
keys() {
|
|
886
737
|
return this.attributes.keys();
|
|
887
738
|
}
|
|
888
739
|
values() {
|
|
889
740
|
const self = this;
|
|
890
741
|
return function* () {
|
|
891
|
-
for (const [key, value] of self.attributes)
|
|
892
|
-
yield new AttrImpl(key, value);
|
|
893
|
-
}
|
|
742
|
+
for (const [key, value] of self.attributes) yield new AttrImpl(key, value);
|
|
894
743
|
}();
|
|
895
744
|
}
|
|
896
745
|
entries() {
|
|
897
746
|
const self = this;
|
|
898
747
|
return function* () {
|
|
899
|
-
for (const [key, value] of self.attributes)
|
|
900
|
-
yield [key, new AttrImpl(key, value)];
|
|
901
|
-
}
|
|
748
|
+
for (const [key, value] of self.attributes) yield [key, new AttrImpl(key, value)];
|
|
902
749
|
}();
|
|
903
750
|
}
|
|
904
|
-
// forEach method for compatibility
|
|
905
751
|
forEach(callback, thisArg) {
|
|
906
752
|
const keys = Array.from(this.attributes.keys());
|
|
907
|
-
keys.forEach((key, index) =>
|
|
908
|
-
const value = this.attributes.get(key);
|
|
909
|
-
const attr = new AttrImpl(key, value);
|
|
910
|
-
callback.call(thisArg, attr, index, this);
|
|
911
|
-
});
|
|
753
|
+
keys.forEach((key, index) => callback.call(thisArg, new AttrImpl(key, this.attributes.get(key)), index, this));
|
|
912
754
|
}
|
|
913
755
|
}
|
|
914
756
|
export {
|