@dooboostore/dom-parser 1.0.2 → 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 +10 -1
- 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 +168 -205
- 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 +163 -331
- 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 +41 -43
- 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 +210 -613
- 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 +10 -1
- 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 +165 -202
- 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 +163 -331
- 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 +40 -42
- 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 +259 -597
- 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 +3449 -3551
- package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +4 -4
- 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 -110
- 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 -687
- package/dist/types/node/elements/Element.d.ts.map +1 -1
- package/dist/types/node/elements/ElementBase.d.ts +98 -74
- 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 -119
- package/dist/types/node/elements/HTMLElement.d.ts.map +1 -1
- package/dist/types/node/elements/HTMLElementBase.d.ts +126 -5
- 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 +253 -286
- 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 +3460 -3562
- package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +4 -4
- package/package.json +1 -1
- package/src/DomParser.ts +28 -20
- 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 -467
- 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 -772
- package/src/node/elements/ElementBase.ts +840 -1204
- 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 -137
- package/src/node/elements/HTMLElementBase.ts +466 -355
- 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 +482 -847
- 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
package/package.json
CHANGED
package/src/DomParser.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
|
-
import {DocumentBase} from './node/DocumentBase';
|
|
2
|
-
import {TextBase} from './node/TextBase';
|
|
3
|
-
import {Comment} from './node/Comment';
|
|
4
|
-
import {WindowBase} from './window/WindowBase';
|
|
1
|
+
import { DocumentBase } from './node/DocumentBase';
|
|
2
|
+
import { TextBase } from './node/TextBase';
|
|
3
|
+
import { Comment } from './node/Comment';
|
|
4
|
+
import { WindowBase } from './window/WindowBase';
|
|
5
|
+
import { ElementBase } from './node/elements/ElementBase';
|
|
6
|
+
import { ElementFactory } from './factory/ElementFactory';
|
|
7
|
+
|
|
8
|
+
// Inject dependencies into ElementBase to break circular references
|
|
9
|
+
// without using 'require' or 'global' injection magic.
|
|
10
|
+
ElementBase.dependencies = {
|
|
11
|
+
ElementFactory,
|
|
12
|
+
TextBase,
|
|
13
|
+
Comment
|
|
14
|
+
};
|
|
5
15
|
|
|
6
16
|
export interface DomParserOptions {
|
|
7
17
|
href?: string;
|
|
@@ -13,7 +23,7 @@ export class DomParser {
|
|
|
13
23
|
|
|
14
24
|
constructor(html: string, option?: DomParserOptions) {
|
|
15
25
|
// Create WindowBase instance with the document
|
|
16
|
-
const windowBase = new WindowBase({initialUrl: option?.href});
|
|
26
|
+
const windowBase = new WindowBase({ initialUrl: option?.href });
|
|
17
27
|
this._window = windowBase as unknown as Window;
|
|
18
28
|
this._document = windowBase.document as any;
|
|
19
29
|
|
|
@@ -51,7 +61,7 @@ export class DomParser {
|
|
|
51
61
|
this._window.close();
|
|
52
62
|
this._window = null;
|
|
53
63
|
}
|
|
54
|
-
|
|
64
|
+
|
|
55
65
|
this._document = null;
|
|
56
66
|
}
|
|
57
67
|
|
|
@@ -62,7 +72,7 @@ export class DomParser {
|
|
|
62
72
|
if (!this._document) {
|
|
63
73
|
throw new Error('DomParser has been destroyed');
|
|
64
74
|
}
|
|
65
|
-
|
|
75
|
+
|
|
66
76
|
// Clear current document content
|
|
67
77
|
this.clearDocument();
|
|
68
78
|
|
|
@@ -75,7 +85,7 @@ export class DomParser {
|
|
|
75
85
|
|
|
76
86
|
private clearDocument(): void {
|
|
77
87
|
if (!this._document) return;
|
|
78
|
-
|
|
88
|
+
|
|
79
89
|
// Clear document body and head content while preserving structure
|
|
80
90
|
if (this._document.head) {
|
|
81
91
|
while (this._document.head.firstChild) {
|
|
@@ -94,13 +104,18 @@ export class DomParser {
|
|
|
94
104
|
if (!this._document) {
|
|
95
105
|
throw new Error('DomParser has been destroyed');
|
|
96
106
|
}
|
|
97
|
-
|
|
107
|
+
|
|
108
|
+
// Ensure basic HTML structure if input is empty or lacks it
|
|
98
109
|
if (!html.trim()) {
|
|
99
|
-
|
|
110
|
+
html = '<html><head></head><body></body></html>';
|
|
111
|
+
} else if (!/<html/i.test(html)) {
|
|
112
|
+
// If it's just a fragment, we still need html/head/body for a full document
|
|
113
|
+
// but only if it's not explicitly intended to be a fragment?
|
|
114
|
+
// Actually, standard DOMParser.parseFromString always creates them.
|
|
115
|
+
html = `<html><head></head><body>${html}</body></html>`;
|
|
100
116
|
}
|
|
101
117
|
|
|
102
118
|
// Basic HTML parsing - this is a simplified version
|
|
103
|
-
// In a real implementation, you'd use a proper HTML parser
|
|
104
119
|
this.parseHTMLString(html, this.document);
|
|
105
120
|
}
|
|
106
121
|
|
|
@@ -204,11 +219,9 @@ export class DomParser {
|
|
|
204
219
|
attributes = attributes.slice(0, -1).trim();
|
|
205
220
|
}
|
|
206
221
|
|
|
207
|
-
|
|
208
222
|
// Create element
|
|
209
223
|
const element = this.document.createElement(tagName.toLowerCase());
|
|
210
224
|
|
|
211
|
-
|
|
212
225
|
// Parse attributes
|
|
213
226
|
if (attributes.trim()) {
|
|
214
227
|
this.parseAttributes(attributes, element);
|
|
@@ -372,7 +385,7 @@ export class DomParser {
|
|
|
372
385
|
'”': '"'
|
|
373
386
|
};
|
|
374
387
|
|
|
375
|
-
return str.replace(/&[a-zA-Z0-9#]+;/g,
|
|
388
|
+
return str.replace(/&[a-zA-Z0-9#]+;/g, entity => {
|
|
376
389
|
// Handle named entities
|
|
377
390
|
if (entityMap[entity]) {
|
|
378
391
|
return entityMap[entity];
|
|
@@ -468,7 +481,6 @@ export class DomParser {
|
|
|
468
481
|
// Choose the BODY element with content, then attributes, then first one
|
|
469
482
|
let bodyElement = null;
|
|
470
483
|
|
|
471
|
-
|
|
472
484
|
// First priority: BODY with child nodes (content)
|
|
473
485
|
for (let i = 0; i < allBodyElements.length; i++) {
|
|
474
486
|
const body = allBodyElements[i];
|
|
@@ -494,10 +506,6 @@ export class DomParser {
|
|
|
494
506
|
bodyElement = allBodyElements[0];
|
|
495
507
|
}
|
|
496
508
|
|
|
497
|
-
|
|
498
|
-
// For now, just use the elements as they are parsed
|
|
499
|
-
// TODO: Implement proper DOM structure reorganization later
|
|
500
|
-
|
|
501
509
|
// Set document references
|
|
502
510
|
if (htmlElement) {
|
|
503
511
|
(this.document as any).documentElement = htmlElement;
|
|
@@ -509,4 +517,4 @@ export class DomParser {
|
|
|
509
517
|
(this.document as any).body = bodyElement;
|
|
510
518
|
}
|
|
511
519
|
}
|
|
512
|
-
}
|
|
520
|
+
}
|
|
@@ -4,66 +4,92 @@ import { HTMLElementBase, HTMLGenericElement, htmlElements, svgElements, mathmlE
|
|
|
4
4
|
* Factory for creating HTML elements based on tag names
|
|
5
5
|
*/
|
|
6
6
|
export class ElementFactory {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Check MathML elements
|
|
28
|
-
for (const [tag, ElementClass] of Object.entries(mathmlElements)) {
|
|
29
|
-
if (tag === normalizedTagName) {
|
|
30
|
-
return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
|
|
31
|
-
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates an HTML element based on the tag name
|
|
9
|
+
*/
|
|
10
|
+
static createElement(tagName: string, ownerDocument?: any, options?: any): HTMLElementBase {
|
|
11
|
+
const normalizedTagName = tagName.toLowerCase();
|
|
12
|
+
const customElements = (ownerDocument as any)?.defaultView?.customElements;
|
|
13
|
+
|
|
14
|
+
// 1. Check for Customized Built-in Elements (is="")
|
|
15
|
+
const isAttribute = typeof options === 'string' ? options : options?.is;
|
|
16
|
+
if (isAttribute && customElements && typeof customElements.get === 'function') {
|
|
17
|
+
const CustomElementClass = customElements.get(isAttribute);
|
|
18
|
+
if (CustomElementClass) {
|
|
19
|
+
const element = new CustomElementClass() as any;
|
|
20
|
+
element._tagName = tagName.toUpperCase();
|
|
21
|
+
element.nodeName = tagName.toUpperCase();
|
|
22
|
+
element._ownerDocument = ownerDocument;
|
|
23
|
+
if (element.setAttribute) {
|
|
24
|
+
element.setAttribute('is', isAttribute);
|
|
32
25
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);
|
|
26
|
+
return element;
|
|
27
|
+
}
|
|
36
28
|
}
|
|
37
29
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
// 2. Check for Autonomous Custom Elements
|
|
31
|
+
if (normalizedTagName.includes('-') && customElements && typeof customElements.get === 'function') {
|
|
32
|
+
const CustomElementClass = customElements.get(normalizedTagName);
|
|
33
|
+
if (CustomElementClass) {
|
|
34
|
+
const element = new CustomElementClass() as any;
|
|
35
|
+
element._tagName = tagName.toUpperCase();
|
|
36
|
+
element.nodeName = tagName.toUpperCase();
|
|
37
|
+
element._ownerDocument = ownerDocument;
|
|
38
|
+
return element;
|
|
39
|
+
}
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return
|
|
42
|
+
// 3. Check HTML elements
|
|
43
|
+
|
|
44
|
+
for (const [tag, ElementClass] of Object.entries(htmlElements)) {
|
|
45
|
+
if (tag === normalizedTagName) {
|
|
46
|
+
return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
|
|
47
|
+
}
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
// Check SVG elements
|
|
51
|
+
for (const [tag, ElementClass] of Object.entries(svgElements)) {
|
|
52
|
+
if (tag === normalizedTagName) {
|
|
53
|
+
return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
|
|
54
|
+
}
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
...ElementFactory.getSupportedHTMLTagNames(),
|
|
65
|
-
...ElementFactory.getSupportedSVGTagNames(),
|
|
66
|
-
...ElementFactory.getSupportedMathMLTagNames()
|
|
67
|
-
];
|
|
57
|
+
// Check MathML elements
|
|
58
|
+
for (const [tag, ElementClass] of Object.entries(mathmlElements)) {
|
|
59
|
+
if (tag === normalizedTagName) {
|
|
60
|
+
return new ElementClass(tagName.toUpperCase(), ownerDocument) as HTMLElementBase;
|
|
61
|
+
}
|
|
68
62
|
}
|
|
69
|
-
|
|
63
|
+
|
|
64
|
+
// For unknown elements, create a generic HTMLElement
|
|
65
|
+
return new HTMLGenericElement(tagName.toUpperCase(), ownerDocument);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get all supported HTML tag names
|
|
70
|
+
*/
|
|
71
|
+
static getSupportedHTMLTagNames(): string[] {
|
|
72
|
+
return Object.keys(htmlElements);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get all supported SVG tag names
|
|
77
|
+
*/
|
|
78
|
+
static getSupportedSVGTagNames(): string[] {
|
|
79
|
+
return Object.keys(svgElements);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Get all supported MathML tag names
|
|
84
|
+
*/
|
|
85
|
+
static getSupportedMathMLTagNames(): string[] {
|
|
86
|
+
return Object.keys(mathmlElements);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Get all supported tag names
|
|
91
|
+
*/
|
|
92
|
+
static getSupportedTagNames(): string[] {
|
|
93
|
+
return [...ElementFactory.getSupportedHTMLTagNames(), ...ElementFactory.getSupportedSVGTagNames(), ...ElementFactory.getSupportedMathMLTagNames()];
|
|
94
|
+
}
|
|
95
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {DomParser, DomParserOptions} from './DomParser';
|
|
2
2
|
|
|
3
3
|
// Main exports - what users actually need
|
|
4
|
-
export {
|
|
5
|
-
|
|
4
|
+
export {DomParser};
|
|
5
|
+
export {NodeIterator} from './node/NodeIterator';
|
|
6
|
+
export {NodeFilter} from './node/NodeFilter'
|
|
6
7
|
// Utility function to parse HTML and return window object
|
|
7
8
|
export const parseHTML = (html: string, option?: DomParserOptions) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
9
|
+
const parser = new DomParser(html, option);
|
|
10
|
+
return parser.window;
|
|
11
|
+
};
|
|
11
12
|
|
|
12
13
|
// Default export
|
|
13
14
|
export default {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
15
|
+
DomParser,
|
|
16
|
+
parseHTML
|
|
17
|
+
};
|
|
17
18
|
|
|
18
19
|
// Internal exports (commented out - users don't need these)
|
|
19
20
|
// export { WindowBase } from './window/WindowBase';
|
|
@@ -25,4 +26,4 @@ export default {
|
|
|
25
26
|
// export { DocumentBase } from "./node/DocumentBase";
|
|
26
27
|
// export * from "./node/DocumentFragment";
|
|
27
28
|
// export { DocumentFragmentBase } from "./node/DocumentFragmentBase";
|
|
28
|
-
// export * from "./node/Node";
|
|
29
|
+
// export * from "./node/Node";
|
package/src/node/ChildNode.ts
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export interface ChildNode extends Node {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
1
|
+
// import {Node} from './Node';
|
|
2
|
+
//
|
|
3
|
+
// /**
|
|
4
|
+
// * The **`ChildNode`** interface contains methods and properties that are common to all types of Node objects that can have a parent.
|
|
5
|
+
// *
|
|
6
|
+
// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChildNode)
|
|
7
|
+
// */
|
|
8
|
+
// export interface ChildNode extends Node {
|
|
9
|
+
// /**
|
|
10
|
+
// * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.
|
|
11
|
+
// *
|
|
12
|
+
// * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
13
|
+
// *
|
|
14
|
+
// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/after)
|
|
15
|
+
// */
|
|
16
|
+
// after(...nodes: (Node | string)[]): void;
|
|
17
|
+
//
|
|
18
|
+
// /**
|
|
19
|
+
// * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.
|
|
20
|
+
// *
|
|
21
|
+
// * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
22
|
+
// *
|
|
23
|
+
// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/before)
|
|
24
|
+
// */
|
|
25
|
+
// before(...nodes: (Node | string)[]): void;
|
|
26
|
+
//
|
|
27
|
+
// /**
|
|
28
|
+
// * Removes node.
|
|
29
|
+
// *
|
|
30
|
+
// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/remove)
|
|
31
|
+
// */
|
|
32
|
+
// remove(): void;
|
|
33
|
+
//
|
|
34
|
+
// /**
|
|
35
|
+
// * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.
|
|
36
|
+
// *
|
|
37
|
+
// * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
38
|
+
// *
|
|
39
|
+
// * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith)
|
|
40
|
+
// */
|
|
41
|
+
// replaceWith(...nodes: (Node | string)[]): void;
|
|
42
|
+
// }
|
|
@@ -1,54 +1,75 @@
|
|
|
1
|
+
import { ELEMENT_NODE } from './Node';
|
|
1
2
|
import { NodeBase } from './NodeBase';
|
|
2
|
-
import { ChildNode } from './ChildNode';
|
|
3
|
-
// import {Text} from "./Text";
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Base implementation of the ChildNode interface
|
|
7
6
|
*/
|
|
7
|
+
// @ts-ignore
|
|
8
8
|
export abstract class ChildNodeBase extends NodeBase implements ChildNode {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const nextSibling = this.nextSibling;
|
|
15
|
-
for (const node of nodes) {
|
|
16
|
-
if (typeof node === 'string') {
|
|
17
|
-
const { TextBase } = require('./TextBase');
|
|
18
|
-
const textNode = new TextBase(node, this._ownerDocument);
|
|
19
|
-
this.parentNode.insertBefore(textNode, nextSibling);
|
|
20
|
-
} else {
|
|
21
|
-
this.parentNode.insertBefore(node, nextSibling);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
9
|
+
get nextElementSibling(): Element | null {
|
|
10
|
+
let next = this.nextSibling;
|
|
11
|
+
while (next) {
|
|
12
|
+
if (next.nodeType === ELEMENT_NODE) return next as unknown as Element;
|
|
13
|
+
next = next.nextSibling;
|
|
24
14
|
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
25
17
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const { TextBase } = require('./TextBase');
|
|
32
|
-
const textNode = new TextBase(node, this._ownerDocument);
|
|
33
|
-
this.parentNode.insertBefore(textNode, this);
|
|
34
|
-
} else {
|
|
35
|
-
this.parentNode.insertBefore(node, this);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
18
|
+
get previousElementSibling(): Element | null {
|
|
19
|
+
let prev = this.previousSibling;
|
|
20
|
+
while (prev) {
|
|
21
|
+
if (prev.nodeType === ELEMENT_NODE) return prev as unknown as Element;
|
|
22
|
+
prev = prev.previousSibling;
|
|
38
23
|
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
39
26
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
get assignedSlot(): any | null {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// ChildNode interface implementation
|
|
32
|
+
after(...nodes: (Node | string)[]): void {
|
|
33
|
+
if (!this.parentNode) return;
|
|
34
|
+
|
|
35
|
+
const nextSibling = this.nextSibling;
|
|
36
|
+
for (const node of nodes) {
|
|
37
|
+
if (typeof node === 'string') {
|
|
38
|
+
const { TextBase } = require('./TextBase');
|
|
39
|
+
const textNode = new TextBase(node, this._ownerDocument);
|
|
40
|
+
this.parentNode.insertBefore(textNode, nextSibling);
|
|
41
|
+
} else {
|
|
42
|
+
this.parentNode.insertBefore(node, nextSibling);
|
|
43
|
+
}
|
|
44
44
|
}
|
|
45
|
+
}
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
before(...nodes: (Node | string)[]): void {
|
|
48
|
+
if (!this.parentNode) return;
|
|
49
|
+
|
|
50
|
+
for (const node of nodes) {
|
|
51
|
+
if (typeof node === 'string') {
|
|
52
|
+
const { TextBase } = require('./TextBase');
|
|
53
|
+
const textNode = new TextBase(node, this._ownerDocument);
|
|
54
|
+
this.parentNode.insertBefore(textNode, this as unknown as Node);
|
|
55
|
+
} else {
|
|
56
|
+
this.parentNode.insertBefore(node, this as unknown as Node);
|
|
57
|
+
}
|
|
51
58
|
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
remove(): void {
|
|
62
|
+
if (this.parentNode) {
|
|
63
|
+
this.parentNode.removeChild(this as unknown as Node);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
replaceWith(...nodes: (Node | string)[]): void {
|
|
68
|
+
if (!this.parentNode) return;
|
|
69
|
+
|
|
70
|
+
this.before(...nodes);
|
|
71
|
+
this.remove();
|
|
72
|
+
}
|
|
52
73
|
}
|
|
53
74
|
|
|
54
|
-
// TextNode is now in a separate file
|
|
75
|
+
// TextNode is now in a separate file
|
package/src/node/Comment.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { COMMENT_NODE } from './Node';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The **`Comment`** interface represents textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Comment)
|
|
8
8
|
*/
|
|
9
9
|
// export interface Comment {
|
|
@@ -21,78 +21,78 @@ import { COMMENT_NODE } from './Node';
|
|
|
21
21
|
/**
|
|
22
22
|
* The **`CommentNode`** class represents a comment node in the DOM.
|
|
23
23
|
*/
|
|
24
|
-
export class Comment extends ChildNodeBase
|
|
25
|
-
|
|
24
|
+
export class Comment extends ChildNodeBase {
|
|
25
|
+
private _data: string;
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
constructor(data: string, ownerDocument?: any) {
|
|
28
|
+
super(COMMENT_NODE, '#comment', ownerDocument);
|
|
29
|
+
this._data = data;
|
|
30
|
+
this._nodeValue = data;
|
|
31
|
+
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
get data(): string {
|
|
34
|
+
return this._data;
|
|
35
|
+
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
set data(value: string) {
|
|
38
|
+
this._data = value;
|
|
39
|
+
this._nodeValue = value;
|
|
40
|
+
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
get length(): number {
|
|
43
|
+
return this._data.length;
|
|
44
|
+
}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
get textContent(): string | null {
|
|
47
|
+
return this._data;
|
|
48
|
+
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
set textContent(value: string | null) {
|
|
51
|
+
this._data = value || '';
|
|
52
|
+
this._nodeValue = this._data;
|
|
53
|
+
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
// CharacterData methods
|
|
56
|
+
appendData(data: string): void {
|
|
57
|
+
this._data += data;
|
|
58
|
+
this._nodeValue = this._data;
|
|
59
|
+
}
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
const endOffset = Math.min(offset + count, this._data.length);
|
|
66
|
-
this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
|
|
67
|
-
this._nodeValue = this._data;
|
|
61
|
+
deleteData(offset: number, count: number): void {
|
|
62
|
+
if (offset < 0 || offset > this._data.length) {
|
|
63
|
+
throw new Error('Index out of bounds');
|
|
68
64
|
}
|
|
65
|
+
const endOffset = Math.min(offset + count, this._data.length);
|
|
66
|
+
this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
|
|
67
|
+
this._nodeValue = this._data;
|
|
68
|
+
}
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
|
|
75
|
-
this._nodeValue = this._data;
|
|
70
|
+
insertData(offset: number, data: string): void {
|
|
71
|
+
if (offset < 0 || offset > this._data.length) {
|
|
72
|
+
throw new Error('Index out of bounds');
|
|
76
73
|
}
|
|
74
|
+
this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
|
|
75
|
+
this._nodeValue = this._data;
|
|
76
|
+
}
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
replaceData(offset: number, count: number, data: string): void {
|
|
79
|
+
this.deleteData(offset, count);
|
|
80
|
+
this.insertData(offset, data);
|
|
81
|
+
}
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
const endOffset = Math.min(offset + count, this._data.length);
|
|
88
|
-
return this._data.slice(offset, endOffset);
|
|
83
|
+
substringData(offset: number, count: number): string {
|
|
84
|
+
if (offset < 0 || offset > this._data.length) {
|
|
85
|
+
throw new Error('Index out of bounds');
|
|
89
86
|
}
|
|
87
|
+
const endOffset = Math.min(offset + count, this._data.length);
|
|
88
|
+
return this._data.slice(offset, endOffset);
|
|
89
|
+
}
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
cloneNode(deep?: boolean): Node {
|
|
92
|
+
return new Comment(this._data, this._ownerDocument) as unknown as Node;
|
|
93
|
+
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
95
|
+
toString(): string {
|
|
96
|
+
return `<!--${this._data}-->`;
|
|
97
|
+
}
|
|
98
|
+
}
|