@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,145 +1,160 @@
|
|
|
1
1
|
import { ParentNodeBase } from "./ParentNodeBase.js";
|
|
2
2
|
import { DOCUMENT_NODE } from "./Node.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { NodeListOf } from "./collection/NodeListOf.js";
|
|
7
|
-
import { ElementFactory } from "../factory/index.js";
|
|
8
|
-
import { NodeIterator, NodeFilter } from "./NodeIterator.js";
|
|
3
|
+
import { HTMLCollectionOfImp } from "./collection/HTMLCollectionOfImp.js";
|
|
4
|
+
import { NodeListOfImp } from "./collection/NodeListOfImp.js";
|
|
5
|
+
import { ElementFactory } from "../factory/ElementFactory.js";
|
|
9
6
|
class DocumentBase extends ParentNodeBase {
|
|
10
7
|
constructor() {
|
|
11
8
|
super(DOCUMENT_NODE, "#document");
|
|
12
|
-
|
|
13
|
-
this._eventListeners = [];
|
|
14
|
-
this._readyState = "uninitialized";
|
|
9
|
+
this._readyState = "loading";
|
|
15
10
|
this._window = null;
|
|
16
|
-
|
|
17
|
-
// Properties
|
|
18
|
-
this.URL = "about:blank";
|
|
19
|
-
this.alinkColor = "";
|
|
20
|
-
this.all = null;
|
|
21
|
-
this.anchors = new HTMLCollectionOf([]);
|
|
22
|
-
this.applets = new HTMLCollection([]);
|
|
23
|
-
this.bgColor = "";
|
|
24
|
-
this.body = null;
|
|
25
|
-
this.characterSet = "UTF-8";
|
|
26
|
-
this.charset = "UTF-8";
|
|
27
|
-
this.compatMode = "CSS1Compat";
|
|
28
|
-
this.contentType = "text/html";
|
|
11
|
+
this._title = "";
|
|
29
12
|
this.cookie = "";
|
|
30
|
-
this.currentScript = null;
|
|
31
|
-
this.defaultView = null;
|
|
32
13
|
this.designMode = "off";
|
|
33
|
-
this.dir = "";
|
|
34
|
-
this.doctype = null;
|
|
35
|
-
this.documentElement = null;
|
|
36
|
-
this.documentURI = "about:blank";
|
|
14
|
+
this.dir = "ltr";
|
|
37
15
|
this.domain = "";
|
|
38
|
-
this.embeds = new HTMLCollectionOf([]);
|
|
39
|
-
this.fgColor = "";
|
|
40
|
-
this.forms = new HTMLCollectionOf([]);
|
|
41
|
-
this.fragmentDirective = null;
|
|
42
|
-
this.fullscreen = false;
|
|
43
|
-
this.fullscreenEnabled = false;
|
|
44
|
-
this.head = null;
|
|
45
|
-
this.hidden = false;
|
|
46
|
-
this.images = new HTMLCollectionOf([]);
|
|
47
|
-
this.implementation = null;
|
|
48
|
-
this.inputEncoding = "UTF-8";
|
|
49
|
-
this.lastModified = (/* @__PURE__ */ new Date()).toString();
|
|
50
|
-
this.linkColor = "";
|
|
51
|
-
this.links = new HTMLCollectionOf([]);
|
|
52
|
-
// Location property - simple implementation for Document
|
|
53
|
-
this._location = {
|
|
54
|
-
href: "about:blank",
|
|
55
|
-
protocol: "about:",
|
|
56
|
-
host: "",
|
|
57
|
-
hostname: "",
|
|
58
|
-
port: "",
|
|
59
|
-
pathname: "blank",
|
|
60
|
-
search: "",
|
|
61
|
-
hash: "",
|
|
62
|
-
origin: "null",
|
|
63
|
-
assign: (url) => {
|
|
64
|
-
this._location.href = url;
|
|
65
|
-
},
|
|
66
|
-
replace: (url) => {
|
|
67
|
-
this._location.href = url;
|
|
68
|
-
},
|
|
69
|
-
reload: () => {
|
|
70
|
-
},
|
|
71
|
-
toString: () => this._location.href
|
|
72
|
-
};
|
|
73
|
-
// Event handlers
|
|
74
|
-
this.onfullscreenchange = null;
|
|
75
|
-
this.onfullscreenerror = null;
|
|
76
|
-
this.onpointerlockchange = null;
|
|
77
|
-
this.onpointerlockerror = null;
|
|
78
|
-
this.onreadystatechange = null;
|
|
79
|
-
this.onvisibilitychange = null;
|
|
80
|
-
this.pictureInPictureEnabled = false;
|
|
81
|
-
this.plugins = new HTMLCollectionOf([]);
|
|
82
16
|
this.referrer = "";
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.body = body;
|
|
99
|
-
}
|
|
100
|
-
get location() {
|
|
101
|
-
return this._location;
|
|
102
|
-
}
|
|
103
|
-
set location(href) {
|
|
104
|
-
this._location.href = href;
|
|
105
|
-
try {
|
|
106
|
-
const url = new URL(href);
|
|
107
|
-
this._location.protocol = url.protocol;
|
|
108
|
-
this._location.host = url.host;
|
|
109
|
-
this._location.hostname = url.hostname;
|
|
110
|
-
this._location.port = url.port;
|
|
111
|
-
this._location.pathname = url.pathname;
|
|
112
|
-
this._location.search = url.search;
|
|
113
|
-
this._location.hash = url.hash;
|
|
114
|
-
this._location.origin = url.origin;
|
|
115
|
-
} catch (e) {
|
|
17
|
+
this._ownerDocument = this;
|
|
18
|
+
}
|
|
19
|
+
get title() {
|
|
20
|
+
const titleEl = this.querySelector("title");
|
|
21
|
+
return titleEl ? titleEl.textContent || "" : this._title || "";
|
|
22
|
+
}
|
|
23
|
+
set title(value) {
|
|
24
|
+
this._title = value;
|
|
25
|
+
let titleEl = this.querySelector("title");
|
|
26
|
+
if (!titleEl && this.head) {
|
|
27
|
+
titleEl = this.createElement("title");
|
|
28
|
+
this.head.appendChild(titleEl);
|
|
29
|
+
}
|
|
30
|
+
if (titleEl) {
|
|
31
|
+
titleEl.textContent = value;
|
|
116
32
|
}
|
|
117
33
|
}
|
|
34
|
+
get URL() {
|
|
35
|
+
return this.location?.href || "";
|
|
36
|
+
}
|
|
37
|
+
get alinkColor() {
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
set alinkColor(_) {
|
|
41
|
+
}
|
|
42
|
+
get all() {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
get anchors() {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
get applets() {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
get bgColor() {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
set bgColor(_) {
|
|
55
|
+
}
|
|
56
|
+
get characterSet() {
|
|
57
|
+
return "UTF-8";
|
|
58
|
+
}
|
|
59
|
+
get charset() {
|
|
60
|
+
return "UTF-8";
|
|
61
|
+
}
|
|
62
|
+
get compatMode() {
|
|
63
|
+
return "CSS1Compat";
|
|
64
|
+
}
|
|
65
|
+
get contentType() {
|
|
66
|
+
return "text/html";
|
|
67
|
+
}
|
|
68
|
+
get currentScript() {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
get defaultView() {
|
|
72
|
+
return this._window;
|
|
73
|
+
}
|
|
74
|
+
get doctype() {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
get documentURI() {
|
|
78
|
+
return this.URL;
|
|
79
|
+
}
|
|
80
|
+
get embeds() {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
get fgColor() {
|
|
84
|
+
return "";
|
|
85
|
+
}
|
|
86
|
+
set fgColor(_) {
|
|
87
|
+
}
|
|
88
|
+
get forms() {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
get fragmentDirective() {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
get fullscreen() {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
get fullscreenEnabled() {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
get hidden() {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
get images() {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
get implementation() {
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
get inputEncoding() {
|
|
110
|
+
return "UTF-8";
|
|
111
|
+
}
|
|
112
|
+
get lastModified() {
|
|
113
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
114
|
+
}
|
|
115
|
+
get linkColor() {
|
|
116
|
+
return "";
|
|
117
|
+
}
|
|
118
|
+
set linkColor(_) {
|
|
119
|
+
}
|
|
120
|
+
get links() {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
118
123
|
get ownerDocument() {
|
|
119
124
|
return null;
|
|
120
125
|
}
|
|
126
|
+
get pictureInPictureEnabled() {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
get plugins() {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
121
132
|
get readyState() {
|
|
122
133
|
return this._readyState;
|
|
123
134
|
}
|
|
124
|
-
get
|
|
125
|
-
|
|
126
|
-
return titleElement ? titleElement.textContent || "" : "";
|
|
135
|
+
get rootElement() {
|
|
136
|
+
return null;
|
|
127
137
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
get scripts() {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
get scrollingElement() {
|
|
142
|
+
return this.body;
|
|
143
|
+
}
|
|
144
|
+
get timeline() {
|
|
145
|
+
return {};
|
|
146
|
+
}
|
|
147
|
+
get visibilityState() {
|
|
148
|
+
return "visible";
|
|
149
|
+
}
|
|
150
|
+
get vlinkColor() {
|
|
151
|
+
return "";
|
|
152
|
+
}
|
|
153
|
+
set vlinkColor(_) {
|
|
138
154
|
}
|
|
139
155
|
get textContent() {
|
|
140
156
|
return null;
|
|
141
157
|
}
|
|
142
|
-
// Methods
|
|
143
158
|
adoptNode(node) {
|
|
144
159
|
node._ownerDocument = this;
|
|
145
160
|
return node;
|
|
@@ -157,30 +172,33 @@ class DocumentBase extends ParentNodeBase {
|
|
|
157
172
|
close() {
|
|
158
173
|
}
|
|
159
174
|
createAttribute(localName) {
|
|
160
|
-
return { name: localName, value: "" };
|
|
175
|
+
return { name: localName, value: "", nodeType: 2 };
|
|
161
176
|
}
|
|
162
|
-
createAttributeNS(
|
|
163
|
-
return
|
|
177
|
+
createAttributeNS(_ns, qualifiedName) {
|
|
178
|
+
return this.createAttribute(qualifiedName);
|
|
164
179
|
}
|
|
165
180
|
createCDATASection(data) {
|
|
166
181
|
return { data, nodeType: 4 };
|
|
167
182
|
}
|
|
168
183
|
createComment(data) {
|
|
184
|
+
const { Comment } = require("./Comment");
|
|
169
185
|
return new Comment(data, this);
|
|
170
186
|
}
|
|
171
187
|
createDocumentFragment() {
|
|
188
|
+
const { DocumentFragmentBase } = require("./DocumentFragmentBase");
|
|
172
189
|
return new DocumentFragmentBase(this);
|
|
173
190
|
}
|
|
174
|
-
createElement(tagName,
|
|
175
|
-
return ElementFactory.createElement(tagName, this);
|
|
191
|
+
createElement(tagName, options) {
|
|
192
|
+
return ElementFactory.createElement(tagName, this, options);
|
|
176
193
|
}
|
|
177
|
-
createElementNS(
|
|
178
|
-
return
|
|
194
|
+
createElementNS(_ns, qualifiedName, options) {
|
|
195
|
+
return this.createElement(qualifiedName, options);
|
|
179
196
|
}
|
|
180
197
|
createEvent(_eventInterface) {
|
|
181
|
-
return {};
|
|
198
|
+
return { type: _eventInterface };
|
|
182
199
|
}
|
|
183
|
-
createNodeIterator(root, whatToShow =
|
|
200
|
+
createNodeIterator(root, whatToShow = 4294967295, filter = null) {
|
|
201
|
+
const { NodeIterator } = require("./NodeIterator");
|
|
184
202
|
return new NodeIterator(root, whatToShow, filter);
|
|
185
203
|
}
|
|
186
204
|
createProcessingInstruction(target, data) {
|
|
@@ -193,8 +211,9 @@ class DocumentBase extends ParentNodeBase {
|
|
|
193
211
|
const { TextBase } = require("./TextBase");
|
|
194
212
|
return new TextBase(data, this);
|
|
195
213
|
}
|
|
196
|
-
createTreeWalker(
|
|
197
|
-
|
|
214
|
+
createTreeWalker(root, whatToShow = 4294967295, filter = null) {
|
|
215
|
+
const { TreeWalker } = require("./TreeWalker");
|
|
216
|
+
return new TreeWalker(root, whatToShow, filter);
|
|
198
217
|
}
|
|
199
218
|
execCommand(_commandId, _showUI, _value) {
|
|
200
219
|
return false;
|
|
@@ -213,17 +232,19 @@ class DocumentBase extends ParentNodeBase {
|
|
|
213
232
|
}
|
|
214
233
|
getElementsByClassName(classNames) {
|
|
215
234
|
const elements = this.querySelectorAll(`.${classNames.split(" ").join(".")}`);
|
|
216
|
-
return new
|
|
235
|
+
return new HTMLCollectionOfImp(Array.from(elements));
|
|
217
236
|
}
|
|
237
|
+
// @ts-ignore
|
|
218
238
|
getElementsByName(elementName) {
|
|
219
239
|
const elements = this.querySelectorAll(`[name="${elementName}"]`);
|
|
220
|
-
return new
|
|
240
|
+
return new NodeListOfImp(Array.from(elements));
|
|
221
241
|
}
|
|
222
242
|
getElementsByTagName(qualifiedName) {
|
|
223
243
|
const elements = this.querySelectorAll(qualifiedName);
|
|
224
|
-
return new
|
|
244
|
+
return new HTMLCollectionOfImp(Array.from(elements));
|
|
225
245
|
}
|
|
226
|
-
|
|
246
|
+
// @ts-ignore
|
|
247
|
+
getElementsByTagNameNS(_ns, localName) {
|
|
227
248
|
return this.getElementsByTagName(localName);
|
|
228
249
|
}
|
|
229
250
|
getSelection() {
|
|
@@ -240,27 +261,15 @@ class DocumentBase extends ParentNodeBase {
|
|
|
240
261
|
cloned._ownerDocument = this;
|
|
241
262
|
return cloned;
|
|
242
263
|
}
|
|
243
|
-
open(
|
|
244
|
-
|
|
245
|
-
return this;
|
|
246
|
-
}
|
|
247
|
-
return null;
|
|
264
|
+
open(_unused1, _unused2) {
|
|
265
|
+
return this;
|
|
248
266
|
}
|
|
249
267
|
queryCommandEnabled(_commandId) {
|
|
250
268
|
return false;
|
|
251
269
|
}
|
|
252
|
-
queryCommandIndeterm(_commandId) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
queryCommandState(_commandId) {
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
270
|
queryCommandSupported(_commandId) {
|
|
259
271
|
return false;
|
|
260
272
|
}
|
|
261
|
-
queryCommandValue(_commandId) {
|
|
262
|
-
return "";
|
|
263
|
-
}
|
|
264
273
|
releaseEvents() {
|
|
265
274
|
}
|
|
266
275
|
requestStorageAccess() {
|
|
@@ -276,81 +285,39 @@ class DocumentBase extends ParentNodeBase {
|
|
|
276
285
|
this.write(...text, "\n");
|
|
277
286
|
}
|
|
278
287
|
addEventListener(type, listener, options) {
|
|
279
|
-
|
|
280
|
-
this._eventListeners.push({
|
|
281
|
-
type,
|
|
282
|
-
listener: typeof listener === "function" ? listener : listener.handleEvent,
|
|
283
|
-
options
|
|
284
|
-
});
|
|
285
|
-
}
|
|
288
|
+
this._eventListeners.push({ type, listener, options });
|
|
286
289
|
}
|
|
287
290
|
removeEventListener(type, listener, options) {
|
|
288
|
-
|
|
289
|
-
const targetListener = typeof listener === "function" ? listener : listener.handleEvent;
|
|
290
|
-
this._eventListeners = this._eventListeners.filter(
|
|
291
|
-
(eventListener) => !(eventListener.type === type && eventListener.listener === targetListener)
|
|
292
|
-
);
|
|
293
|
-
}
|
|
291
|
+
this._eventListeners = this._eventListeners.filter((l) => !(l.type === type && l.listener === listener));
|
|
294
292
|
}
|
|
295
|
-
dispatchEvent(event) {
|
|
296
|
-
const eventListeners = this._eventListeners.filter((listener) => listener.type === event.type);
|
|
297
|
-
for (const eventListener of eventListeners) {
|
|
298
|
-
try {
|
|
299
|
-
eventListener.listener.call(this, event);
|
|
300
|
-
if (eventListener.options && typeof eventListener.options === "object" && eventListener.options.once) {
|
|
301
|
-
this.removeEventListener(event.type, eventListener.listener);
|
|
302
|
-
}
|
|
303
|
-
} catch (error) {
|
|
304
|
-
console.error("Error in document event listener:", error);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
return true;
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Set window reference for load event dispatching
|
|
311
|
-
*/
|
|
312
293
|
setWindow(window) {
|
|
313
294
|
this._window = window;
|
|
314
295
|
}
|
|
315
|
-
/**
|
|
316
|
-
* Change document ready state and dispatch events
|
|
317
|
-
*/
|
|
318
296
|
setReadyState(state) {
|
|
319
297
|
if (this._readyState === state) return;
|
|
320
298
|
this._readyState = state;
|
|
321
|
-
this.dispatchEvent({
|
|
322
|
-
type: "readystatechange",
|
|
323
|
-
target: this,
|
|
324
|
-
readyState: state
|
|
325
|
-
});
|
|
299
|
+
this.dispatchEvent({ type: "readystatechange", target: this });
|
|
326
300
|
if (state === "interactive") {
|
|
327
|
-
this.dispatchEvent({
|
|
328
|
-
type: "DOMContentLoaded",
|
|
329
|
-
target: this
|
|
330
|
-
});
|
|
301
|
+
this.dispatchEvent({ type: "DOMContentLoaded", target: this });
|
|
331
302
|
}
|
|
332
303
|
if (state === "complete" && this._window) {
|
|
333
304
|
setTimeout(() => {
|
|
334
305
|
if (this._window && this._window.dispatchEvent) {
|
|
335
|
-
this._window.dispatchEvent({
|
|
336
|
-
type: "load",
|
|
337
|
-
target: this._window
|
|
338
|
-
});
|
|
306
|
+
this._window.dispatchEvent({ type: "load", target: this._window });
|
|
339
307
|
}
|
|
340
308
|
}, 0);
|
|
341
309
|
}
|
|
342
310
|
}
|
|
343
|
-
/**
|
|
344
|
-
* Simulate document loading process
|
|
345
|
-
*/
|
|
346
311
|
simulateLoading() {
|
|
347
|
-
this.setReadyState("loading");
|
|
348
312
|
setTimeout(() => {
|
|
349
313
|
this.setReadyState("interactive");
|
|
350
314
|
setTimeout(() => {
|
|
351
315
|
this.setReadyState("complete");
|
|
352
316
|
}, 10);
|
|
353
|
-
},
|
|
317
|
+
}, 10);
|
|
318
|
+
}
|
|
319
|
+
setLocation(location) {
|
|
320
|
+
this.location = location;
|
|
354
321
|
}
|
|
355
322
|
}
|
|
356
323
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/node/DocumentBase.ts"],
|
|
4
|
-
"sourcesContent": ["import {ParentNodeBase} from './ParentNodeBase';\nimport {DOCUMENT_NODE, Node} from './Node';\nimport {Document, ElementCreationOptions, DocumentReadyState, DocumentVisibilityState, ImportNodeOptions, CaretPositionFromPointOptions, StartViewTransitionOptions, ViewTransitionUpdateCallback} from './Document';\nimport {Comment} from './Comment';\nimport {Text} from './Text';\nimport {DocumentFragment} from './DocumentFragment';\nimport {DocumentFragmentBase} from './DocumentFragmentBase';\nimport {Element} from './elements/Element';\nimport {HTMLElement} from './elements/HTMLElement';\nimport {HTMLCollection, HTMLCollectionOf} from './collection';\nimport {HTMLElementTagNameMap, SVGElementTagNameMap, MathMLElementTagNameMap, HTMLElementDeprecatedTagNameMap} from './elements';\nimport {NodeListOf} from './collection/NodeListOf';\nimport {ElementFactory} from '../factory';\nimport {NodeIterator, NodeFilter} from './NodeIterator';\n\n// Document event listener interface\ninterface DocumentEventListener {\n type: string;\n listener: (event: any) => void;\n options?: boolean | AddEventListenerOptions;\n}\n\n/**\n * The **`DocumentBase`** class is the concrete implementation of the Document interface.\n */\nexport class DocumentBase extends ParentNodeBase implements Document {\n // Event system\n private _eventListeners: DocumentEventListener[] = [];\n private _readyState: DocumentReadyState = 'uninitialized' as any;\n private _window: any = null; // Reference to window for load event\n // Properties\n readonly URL: string = 'about:blank';\n alinkColor: string = '';\n readonly all: any = null;\n readonly anchors: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n readonly applets: HTMLCollection = new HTMLCollection([]);\n bgColor: string = '';\n body: HTMLElement = null as any;\n readonly characterSet: string = 'UTF-8';\n readonly charset: string = 'UTF-8';\n readonly compatMode: string = 'CSS1Compat';\n readonly contentType: string = 'text/html';\n cookie: string = '';\n readonly currentScript: any = null;\n readonly defaultView: any = null;\n designMode: string = 'off';\n dir: string = '';\n readonly doctype: any = null;\n readonly documentElement: HTMLElement = null as any;\n readonly documentURI: string = 'about:blank';\n domain: string = '';\n readonly embeds: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n fgColor: string = '';\n readonly forms: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n readonly fragmentDirective: any = null;\n readonly fullscreen: boolean = false;\n readonly fullscreenEnabled: boolean = false;\n readonly head: any = null;\n readonly hidden: boolean = false;\n readonly images: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n readonly implementation: any = null;\n readonly inputEncoding: string = 'UTF-8';\n readonly lastModified: string = new Date().toString();\n linkColor: string = '';\n readonly links: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n \n // Location property - simple implementation for Document\n private _location: any = {\n href: 'about:blank',\n protocol: 'about:',\n host: '',\n hostname: '',\n port: '',\n pathname: 'blank',\n search: '',\n hash: '',\n origin: 'null',\n assign: (url: string) => { this._location.href = url; },\n replace: (url: string) => { this._location.href = url; },\n reload: () => {},\n toString: () => this._location.href\n };\n \n get location(): any {\n return this._location;\n }\n \n set location(href: string) {\n this._location.href = href;\n // Simple URL parsing for document location\n try {\n const url = new URL(href);\n this._location.protocol = url.protocol;\n this._location.host = url.host;\n this._location.hostname = url.hostname;\n this._location.port = url.port;\n this._location.pathname = url.pathname;\n this._location.search = url.search;\n this._location.hash = url.hash;\n this._location.origin = url.origin;\n } catch (e) {\n // Keep defaults for invalid URLs\n }\n }\n \n // Event handlers\n onfullscreenchange: ((this: Document, ev: Event) => any) | null = null;\n onfullscreenerror: ((this: Document, ev: Event) => any) | null = null;\n onpointerlockchange: ((this: Document, ev: Event) => any) | null = null;\n onpointerlockerror: ((this: Document, ev: Event) => any) | null = null;\n onreadystatechange: ((this: Document, ev: Event) => any) | null = null;\n onvisibilitychange: ((this: Document, ev: Event) => any) | null = null;\n \n get ownerDocument(): null {\n return null;\n }\n readonly pictureInPictureEnabled: boolean = false;\n readonly plugins: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n get readyState(): DocumentReadyState {\n return this._readyState;\n }\n readonly referrer: string = '';\n readonly rootElement: any = null;\n readonly scripts: HTMLCollectionOf<any> = new HTMLCollectionOf([]);\n readonly scrollingElement: Element | null = null;\n readonly timeline: any = null;\n get title(): string {\n const titleElement = this.querySelector('title');\n return titleElement ? titleElement.textContent || '' : '';\n }\n \n set title(value: string) {\n let titleElement = this.querySelector('title');\n if (!titleElement) {\n // Create title element if it doesn't exist\n titleElement = this.createElement('title');\n const head = this.head || this.querySelector('head');\n if (head) {\n head.appendChild(titleElement);\n }\n }\n titleElement.textContent = value;\n }\n readonly visibilityState: DocumentVisibilityState = 'visible';\n vlinkColor: string = '';\n\n constructor() {\n super(DOCUMENT_NODE, '#document');\n this._ownerDocument = null;\n\n // Create basic document structure\n const documentElement = this.createElement('html') as HTMLElement;\n const head = this.createElement('head') as HTMLElement;\n const body = this.createElement('body') as HTMLElement;\n\n documentElement.appendChild(head);\n documentElement.appendChild(body);\n this.appendChild(documentElement);\n\n // Set readonly properties\n (this as any).documentElement = documentElement;\n (this as any).head = head;\n this.body = body;\n }\n\n get textContent(): null {\n return null;\n }\n\n // Methods\n adoptNode<T extends Node>(node: T): T {\n (node as any)._ownerDocument = this;\n return node;\n }\n\n captureEvents(): void {}\n\n caretPositionFromPoint(_x: number, _y: number, _options?: CaretPositionFromPointOptions): any {\n return null;\n }\n\n caretRangeFromPoint(_x: number, _y: number): any {\n return null;\n }\n\n clear(): void {}\n\n close(): void {}\n\n createAttribute(localName: string): any {\n return { name: localName, value: '' };\n }\n\n createAttributeNS(_namespace: string | null, qualifiedName: string): any {\n return { name: qualifiedName, value: '' };\n }\n\n createCDATASection(data: string): any {\n return { data, nodeType: 4 };\n }\n\n createComment(data: string): Comment {\n return new Comment(data, this);\n }\n\n createDocumentFragment(): DocumentFragment {\n return new DocumentFragmentBase(this);\n }\n\n createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, _options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, _options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\n createElement(tagName: string, _options?: ElementCreationOptions): HTMLElement;\n createElement(tagName: string, _options?: ElementCreationOptions): HTMLElement {\n return ElementFactory.createElement(tagName, this);\n }\n\n createElementNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", qualifiedName: string): HTMLElement;\n createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: K): SVGElementTagNameMap[K];\n createElementNS(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: string): any;\n createElementNS<K extends keyof MathMLElementTagNameMap>(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: K): MathMLElementTagNameMap[K];\n createElementNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: string): any;\n createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\n createElementNS(_namespace: string | null, qualifiedName: string, _options?: string | ElementCreationOptions): Element;\n createElementNS(_namespaceURI: string | null, qualifiedName: string, _options?: ElementCreationOptions | string): Element {\n return ElementFactory.createElement(qualifiedName, this);\n }\n\n createEvent(_eventInterface: string): any {\n return {};\n }\n\n createNodeIterator(root: Node, whatToShow: number = NodeFilter.SHOW_ALL, filter: NodeFilter | null = null): NodeIterator {\n return new NodeIterator(root, whatToShow, filter);\n }\n\n createProcessingInstruction(target: string, data: string): any {\n return { target, data, nodeType: 7 };\n }\n\n createRange(): any {\n return {};\n }\n\n createTextNode(data: string): Text {\n const { TextBase } = require('./TextBase');\n return new TextBase(data, this);\n }\n\n createTreeWalker(_root: Node, _whatToShow?: number, _filter?: any): any {\n return {};\n }\n\n execCommand(_commandId: string, _showUI?: boolean, _value?: string): boolean {\n return false;\n }\n\n exitFullscreen(): Promise<void> {\n return Promise.resolve();\n }\n\n exitPictureInPicture(): Promise<void> {\n return Promise.resolve();\n }\n\n exitPointerLock(): void {}\n\n getElementById(elementId: string): HTMLElement | null {\n const elements = this.querySelectorAll(`#${elementId}`);\n return elements.length > 0 ? elements[0] as HTMLElement : null;\n }\n\n getElementsByClassName(classNames: string): HTMLCollectionOf<Element> {\n const elements = this.querySelectorAll(`.${classNames.split(' ').join('.')}`);\n return new HTMLCollectionOf(Array.from(elements));\n }\n\n getElementsByName(elementName: string): NodeListOf<HTMLElement> {\n const elements = this.querySelectorAll(`[name=\"${elementName}\"]`);\n return new NodeListOf(Array.from(elements) as HTMLElement[]);\n }\n\n getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;\n getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;\n getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;\n getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element> {\n const elements = this.querySelectorAll<Element>(qualifiedName);\n return new HTMLCollectionOf(Array.from(elements));\n }\n\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf<HTMLElement>;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf<any>;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf<any>;\n getElementsByTagNameNS(_namespace: string | null, localName: string): HTMLCollectionOf<Element>;\n getElementsByTagNameNS(_namespace: string | null, localName: string): HTMLCollectionOf<Element> {\n return this.getElementsByTagName(localName);\n }\n\n getSelection(): any {\n return null;\n }\n\n hasFocus(): boolean {\n return false;\n }\n\n hasStorageAccess(): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n importNode<T extends Node>(node: T, _options?: boolean | ImportNodeOptions): T {\n const cloned = (node as any).cloneNode(typeof _options === 'boolean' ? _options : _options?.deep);\n (cloned as any)._ownerDocument = this;\n return cloned;\n }\n\n open(_unused1?: string, _unused2?: string): Document;\n open(_url: string | URL, _name: string, _features: string): any;\n open(_arg1?: string | URL, _arg2?: string, _arg3?: string): Document | any {\n if (arguments.length <= 2) {\n return this;\n }\n return null;\n }\n\n queryCommandEnabled(_commandId: string): boolean {\n return false;\n }\n\n queryCommandIndeterm(_commandId: string): boolean {\n return false;\n }\n\n queryCommandState(_commandId: string): boolean {\n return false;\n }\n\n queryCommandSupported(_commandId: string): boolean {\n return false;\n }\n\n queryCommandValue(_commandId: string): string {\n return '';\n }\n\n releaseEvents(): void {}\n\n requestStorageAccess(): Promise<void> {\n return Promise.resolve();\n }\n\n startViewTransition(_callbackOptions?: ViewTransitionUpdateCallback | StartViewTransitionOptions): any {\n return {};\n }\n\n write(...text: string[]): void {\n console.log('Document.write:', text.join(''));\n }\n\n writeln(...text: string[]): void {\n this.write(...text, '\\n');\n }\n\n addEventListener(type: string, listener: any, options?: boolean | any): void {\n // Support DOMContentLoaded and readystatechange events\n if (type === 'DOMContentLoaded' || type === 'readystatechange') {\n this._eventListeners.push({\n type,\n listener: typeof listener === 'function' ? listener : listener.handleEvent,\n options\n });\n }\n }\n\n removeEventListener(type: string, listener: any, options?: boolean | any): void {\n if (type === 'DOMContentLoaded' || type === 'readystatechange') {\n const targetListener = typeof listener === 'function' ? listener : listener.handleEvent;\n this._eventListeners = this._eventListeners.filter(\n eventListener => !(eventListener.type === type && eventListener.listener === targetListener)\n );\n }\n }\n\n dispatchEvent(event: any): boolean {\n const eventListeners = this._eventListeners.filter(listener => listener.type === event.type);\n \n for (const eventListener of eventListeners) {\n try {\n eventListener.listener.call(this, event);\n \n // Handle 'once' option\n if (eventListener.options && typeof eventListener.options === 'object' && eventListener.options.once) {\n this.removeEventListener(event.type, eventListener.listener);\n }\n } catch (error) {\n console.error('Error in document event listener:', error);\n }\n }\n \n return true;\n }\n\n /**\n * Set window reference for load event dispatching\n */\n setWindow(window: any): void {\n this._window = window;\n }\n\n /**\n * Change document ready state and dispatch events\n */\n setReadyState(state: DocumentReadyState): void {\n if (this._readyState === state) return;\n \n this._readyState = state;\n \n // Dispatch readystatechange event\n this.dispatchEvent({\n type: 'readystatechange',\n target: this,\n readyState: state\n });\n \n // Dispatch DOMContentLoaded when interactive\n if (state === 'interactive') {\n this.dispatchEvent({\n type: 'DOMContentLoaded',\n target: this\n });\n }\n \n // Dispatch load event on window when complete\n if (state === 'complete' && this._window) {\n // Use setTimeout to ensure it's dispatched after current execution\n setTimeout(() => {\n if (this._window && this._window.dispatchEvent) {\n this._window.dispatchEvent({\n type: 'load',\n target: this._window\n });\n }\n }, 0);\n }\n }\n\n /**\n * Simulate document loading process\n */\n simulateLoading(): void {\n // Start with loading state\n this.setReadyState('loading');\n \n // Simulate DOM parsing completion\n setTimeout(() => {\n this.setReadyState('interactive');\n \n // Simulate resource loading completion\n setTimeout(() => {\n this.setReadyState('complete');\n }, 10);\n }, 5);\n }\n}"],
|
|
5
|
-
"mappings": "AAAA,
|
|
4
|
+
"sourcesContent": ["import { ParentNodeBase } from './ParentNodeBase';\nimport { DOCUMENT_NODE } from './Node';\nimport { HTMLCollectionOfImp } from './collection/HTMLCollectionOfImp';\nimport { NodeListOfImp } from './collection/NodeListOfImp';\nimport { ElementFactory } from '../factory/ElementFactory';\n\nexport class DocumentBase extends ParentNodeBase implements Document {\n [key: string]: any;\n private _readyState: DocumentReadyState = 'loading';\n private _window: any = null;\n public head!: any;\n public body!: any;\n public documentElement!: any;\n public location: any;\n get title(): string {\n const titleEl = this.querySelector('title');\n return titleEl ? titleEl.textContent || '' : this._title || '';\n }\n\n set title(value: string) {\n this._title = value;\n let titleEl = this.querySelector('title');\n if (!titleEl && this.head) {\n titleEl = this.createElement('title');\n this.head.appendChild(titleEl);\n }\n if (titleEl) {\n titleEl.textContent = value;\n }\n }\n\n private _title: string = '';\n public cookie: string = '';\n public designMode: string = 'off';\n public dir: string = 'ltr';\n public domain: string = '';\n public referrer: string = '';\n\n constructor() {\n super(DOCUMENT_NODE, '#document');\n this._ownerDocument = this as any;\n }\n\n get URL(): string {\n return this.location?.href || '';\n }\n get alinkColor(): string {\n return '';\n }\n set alinkColor(_: string) {}\n get all(): any {\n return [];\n }\n get anchors(): any {\n return [];\n }\n get applets(): any {\n return [];\n }\n get bgColor(): string {\n return '';\n }\n set bgColor(_: string) {}\n get characterSet(): string {\n return 'UTF-8';\n }\n get charset(): string {\n return 'UTF-8';\n }\n get compatMode(): string {\n return 'CSS1Compat';\n }\n get contentType(): string {\n return 'text/html';\n }\n get currentScript(): any {\n return null;\n }\n get defaultView(): any {\n return this._window;\n }\n get doctype(): any {\n return null;\n }\n get documentURI(): string {\n return this.URL;\n }\n get embeds(): any {\n return [];\n }\n get fgColor(): string {\n return '';\n }\n set fgColor(_: string) {}\n get forms(): any {\n return [];\n }\n get fragmentDirective(): any {\n return {};\n }\n get fullscreen(): boolean {\n return false;\n }\n get fullscreenEnabled(): boolean {\n return false;\n }\n get hidden(): boolean {\n return false;\n }\n get images(): any {\n return [];\n }\n get implementation(): any {\n return {};\n }\n get inputEncoding(): string {\n return 'UTF-8';\n }\n get lastModified(): string {\n return new Date().toISOString();\n }\n get linkColor(): string {\n return '';\n }\n set linkColor(_: string) {}\n get links(): any {\n return [];\n }\n get ownerDocument(): null {\n return null;\n }\n get pictureInPictureEnabled(): boolean {\n return false;\n }\n get plugins(): any {\n return [];\n }\n get readyState(): DocumentReadyState {\n return this._readyState;\n }\n get rootElement(): any {\n return null;\n }\n get scripts(): any {\n return [];\n }\n get scrollingElement(): any {\n return this.body;\n }\n get timeline(): any {\n return {};\n }\n get visibilityState(): any {\n return 'visible';\n }\n get vlinkColor(): string {\n return '';\n }\n set vlinkColor(_: string) {}\n get textContent(): null {\n return null;\n }\n\n adoptNode<T extends Node>(node: T): T {\n (node as any)._ownerDocument = this;\n return node;\n }\n\n captureEvents(): void {}\n\n caretPositionFromPoint(_x: number, _y: number, _options?: CaretPositionFromPointOptions): any {\n return null;\n }\n\n caretRangeFromPoint(_x: number, _y: number): any {\n return null;\n }\n\n clear(): void {}\n\n close(): void {}\n\n createAttribute(localName: string): any {\n return { name: localName, value: '', nodeType: 2 };\n }\n\n createAttributeNS(_ns: string | null, qualifiedName: string): any {\n return this.createAttribute(qualifiedName);\n }\n\n createCDATASection(data: string): any {\n return { data, nodeType: 4 };\n }\n\n createComment(data: string): any {\n const { Comment } = require('./Comment');\n return new Comment(data, this);\n }\n\n createDocumentFragment(): any {\n const { DocumentFragmentBase } = require('./DocumentFragmentBase');\n return new DocumentFragmentBase(this);\n }\n\n createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement {\n return ElementFactory.createElement(tagName, this, options) as any;\n }\n\n createElementNS(_ns: string | null, qualifiedName: string, options?: ElementCreationOptions): any {\n return this.createElement(qualifiedName as any, options);\n }\n\n createEvent(_eventInterface: string): any {\n return { type: _eventInterface };\n }\n\n createNodeIterator(root: Node, whatToShow: number = 0xffffffff, filter: any = null): any {\n const { NodeIterator } = require('./NodeIterator');\n return new NodeIterator(root, whatToShow, filter);\n }\n\n createProcessingInstruction(target: string, data: string): any {\n return { target, data, nodeType: 7 };\n }\n\n createRange(): any {\n return {};\n }\n\n createTextNode(data: string): any {\n const { TextBase } = require('./TextBase');\n return new TextBase(data, this);\n }\n\n createTreeWalker(root: Node, whatToShow: number = 0xffffffff, filter: any = null): any {\n const { TreeWalker } = require('./TreeWalker');\n return new TreeWalker(root, whatToShow, filter);\n }\n\n execCommand(_commandId: string, _showUI?: boolean, _value?: string): boolean {\n return false;\n }\n\n exitFullscreen(): Promise<void> {\n return Promise.resolve();\n }\n\n exitPictureInPicture(): Promise<void> {\n return Promise.resolve();\n }\n\n exitPointerLock(): void {}\n\n getElementById(elementId: string): HTMLElement | null {\n const elements = this.querySelectorAll(`#${elementId}`);\n return elements.length > 0 ? (elements[0] as HTMLElement) : null;\n }\n\n getElementsByClassName(classNames: string): HTMLCollectionOf<Element> {\n const elements = this.querySelectorAll(`.${classNames.split(' ').join('.')}`);\n return new HTMLCollectionOfImp(Array.from(elements)) as unknown as HTMLCollectionOf<Element>;\n }\n\n // @ts-ignore\n getElementsByName(elementName: string): NodeListOfImp<HTMLElement> {\n const elements = this.querySelectorAll(`[name=\"${elementName}\"]`);\n return new NodeListOfImp<HTMLElement>(Array.from(elements) as unknown as HTMLElement[]) as unknown as NodeListOfImp<HTMLElement>;\n }\n\n // @ts-ignore\n getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOfImp<Element>;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOfImp<Element> {\n const elements = this.querySelectorAll<Element>(qualifiedName);\n return new HTMLCollectionOfImp(Array.from(elements));\n }\n\n // @ts-ignore\n getElementsByTagNameNS(_ns: string | null, localName: string): HTMLCollectionOf<Element> {\n return this.getElementsByTagName(localName) as unknown as HTMLCollectionOf<Element>;\n }\n\n getSelection(): any {\n return null;\n }\n\n hasFocus(): boolean {\n return false;\n }\n\n hasStorageAccess(): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n importNode<T extends Node>(node: T, _options?: boolean | ImportNodeOptions): T {\n const cloned = (node as any).cloneNode(typeof _options === 'boolean' ? _options : (_options as any)?.deep);\n (cloned as any)._ownerDocument = this;\n return cloned;\n }\n\n open(_unused1?: string, _unused2?: string): any {\n return this;\n }\n\n queryCommandEnabled(_commandId: string): boolean {\n return false;\n }\n\n queryCommandSupported(_commandId: string): boolean {\n return false;\n }\n\n releaseEvents(): void {}\n\n requestStorageAccess(): Promise<void> {\n return Promise.resolve();\n }\n\n startViewTransition(_callbackOptions?: ViewTransitionUpdateCallback | StartViewTransitionOptions): any {\n return {};\n }\n\n write(...text: string[]): void {\n console.log('Document.write:', text.join(''));\n }\n\n writeln(...text: string[]): void {\n this.write(...text, '\\n');\n }\n\n addEventListener(type: string, listener: any, options?: any): void {\n this._eventListeners.push({ type, listener, options });\n }\n\n removeEventListener(type: string, listener: any, options?: any): void {\n this._eventListeners = this._eventListeners.filter(l => !(l.type === type && l.listener === listener));\n }\n\n setWindow(window: any): void {\n this._window = window;\n }\n\n setReadyState(state: DocumentReadyState): void {\n if (this._readyState === state) return;\n this._readyState = state;\n this.dispatchEvent({ type: 'readystatechange', target: this });\n if (state === 'interactive') {\n this.dispatchEvent({ type: 'DOMContentLoaded', target: this });\n }\n if (state === 'complete' && this._window) {\n setTimeout(() => {\n if (this._window && this._window.dispatchEvent) {\n this._window.dispatchEvent({ type: 'load', target: this._window });\n }\n }, 0);\n }\n }\n\n simulateLoading(): void {\n // Start with a small delay to allow test listeners to be added\n setTimeout(() => {\n this.setReadyState('interactive');\n setTimeout(() => {\n this.setReadyState('complete');\n }, 10);\n }, 10);\n }\n\n setLocation(location: any): void {\n this.location = location;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/node/DocumentFragmentBase.ts"],
|
|
4
|
-
"sourcesContent": ["import { ParentNodeBase } from './ParentNodeBase';\nimport {
|
|
5
|
-
"mappings": "AAAA,SAAS,sBAAsB;
|
|
4
|
+
"sourcesContent": ["import { ParentNodeBase } from './ParentNodeBase';\nimport {DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE} from './Node';\nimport { NodeBase } from './NodeBase';\nimport { NodeListOfImp } from './collection/NodeListOfImp';\n\n/**\n * The **`DocumentFragmentBase`** class is the concrete implementation of the DocumentFragment interface.\n * \n * DocumentFragment is a minimal document object that has no parent. It is used as a lightweight version of Document\n * that stores a segment of a document structure comprised of nodes just like a standard document.\n */\nexport class DocumentFragmentBase extends ParentNodeBase implements DocumentFragment {\n constructor(ownerDocument?: Document) {\n super(DOCUMENT_FRAGMENT_NODE, '#document-fragment', ownerDocument); // DOCUMENT_FRAGMENT_NODE = 11\n }\n\n /**\n * Returns the number of child elements of this DocumentFragment.\n */\n get childElementCount(): number {\n let count = 0;\n for (const child of this._childNodesInternal) {\n if (child && child.nodeType === ELEMENT_NODE) { // ELEMENT_NODE\n count++;\n }\n }\n return count;\n }\n\n /**\n * Returns the first Element node within the DocumentFragment that matches the specified selectors.\n */\n querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;\n querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;\n querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;\n querySelector<E extends Element = Element>(selectors: string): E | null;\n querySelector(selectors: string): Element | null;\n querySelector(selectors: string): Element | null {\n const elements = this.querySelectorAll(selectors);\n return elements.length > 0 ? elements.item(0) : null;\n }\n\n /**\n * Returns all Element nodes within the DocumentFragment that match the specified selectors.\n */\n querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;\n querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;\n querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;\n querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;\n querySelectorAll(selectors: string): NodeListOf<Element>;\n querySelectorAll(selectors: string): NodeListOf<Element> {\n // Use the inherited querySelectorAll from ParentNodeBase\n return super.querySelectorAll(selectors);\n }\n\n /**\n * Returns the Element within the DocumentFragment that has the specified ID.\n */\n getElementById(elementId: string): HTMLElement | null {\n const element = this.querySelector(`#${elementId}`);\n return element as HTMLElement | null;\n }\n\n /**\n * Override cloneNode to return DocumentFragment\n */\n cloneNode(deep?: boolean): DocumentFragment {\n const clone = new DocumentFragmentBase(this._ownerDocument as Document) as unknown as DocumentFragment;\n \n if (deep) {\n for (const child of this._childNodesInternal) {\n if (child && 'cloneNode' in child) {\n clone.appendChild((child as any).cloneNode(true));\n }\n }\n }\n \n return clone;\n }\n\n /**\n * Override appendChild to handle DocumentFragment behavior\n * When a DocumentFragment is appended to another node, its children are moved, not the fragment itself\n */\n appendChild<T extends Node>(node: T): T {\n // If the node being appended is a DocumentFragment, move its children instead\n if (node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n const fragment = node as any;\n \n // Move all children from fragment to this node\n while (fragment._childNodesInternal && fragment._childNodesInternal.length > 0) {\n const child = fragment._childNodesInternal[0];\n if (child) {\n fragment.removeChild(child);\n super.appendChild(child);\n }\n }\n \n return node;\n }\n \n return super.appendChild(node);\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAS,sBAAsB;AAC/B,SAAQ,wBAAwB,oBAAmB;AAU5C,MAAM,6BAA6B,eAA2C;AAAA,EACjF,YAAY,eAA0B;AAClC,UAAM,wBAAwB,sBAAsB,aAAa;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,oBAA4B;AAC5B,QAAI,QAAQ;AACZ,eAAW,SAAS,KAAK,qBAAqB;AAC1C,UAAI,SAAS,MAAM,aAAa,cAAc;AAC1C;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAUA,cAAc,WAAmC;AAC7C,UAAM,WAAW,KAAK,iBAAiB,SAAS;AAChD,WAAO,SAAS,SAAS,IAAI,SAAS,KAAK,CAAC,IAAI;AAAA,EACpD;AAAA,EAUA,iBAAiB,WAAwC;AAErD,WAAO,MAAM,iBAAiB,SAAS;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,WAAuC;AAClD,UAAM,UAAU,KAAK,cAAc,IAAI,SAAS,EAAE;AAClD,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,MAAkC;AACxC,UAAM,QAAQ,IAAI,qBAAqB,KAAK,cAA0B;AAEtE,QAAI,MAAM;AACN,iBAAW,SAAS,KAAK,qBAAqB;AAC1C,YAAI,SAAS,eAAe,OAAO;AAC/B,gBAAM,YAAa,MAAc,UAAU,IAAI,CAAC;AAAA,QACpD;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA4B,MAAY;AAEpC,QAAI,KAAK,aAAa,wBAAwB;AAC1C,YAAM,WAAW;AAGjB,aAAO,SAAS,uBAAuB,SAAS,oBAAoB,SAAS,GAAG;AAC5E,cAAM,QAAQ,SAAS,oBAAoB,CAAC;AAC5C,YAAI,OAAO;AACP,mBAAS,YAAY,KAAK;AAC1B,gBAAM,YAAY,KAAK;AAAA,QAC3B;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,MAAM,YAAY,IAAI;AAAA,EACjC;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|