happy-dom 8.8.0 → 9.0.0
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.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/README.md +2 -2
- package/lib/cookie/CookieJar.js +1 -1
- package/lib/cookie/CookieJar.js.map +1 -1
- package/lib/dom-token-list/DOMTokenList.js +24 -20
- package/lib/dom-token-list/DOMTokenList.js.map +1 -1
- package/lib/event/EventTarget.js +6 -3
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
- package/lib/exception/DOMExceptionNameEnum.js +4 -0
- package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
- package/lib/fetch/AbortController.d.ts +19 -0
- package/lib/fetch/AbortController.js +30 -0
- package/lib/fetch/AbortController.js.map +1 -0
- package/lib/fetch/AbortSignal.d.ts +25 -0
- package/lib/fetch/AbortSignal.js +51 -0
- package/lib/fetch/AbortSignal.js.map +1 -0
- package/lib/fetch/Fetch.d.ts +117 -0
- package/lib/fetch/Fetch.js +530 -0
- package/lib/fetch/Fetch.js.map +1 -0
- package/lib/fetch/Headers.d.ts +81 -3
- package/lib/fetch/Headers.js +139 -24
- package/lib/fetch/Headers.js.map +1 -1
- package/lib/fetch/Request.d.ts +56 -32
- package/lib/fetch/Request.js +165 -110
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/{ResourceFetchHandler.d.ts → ResourceFetch.d.ts} +1 -1
- package/lib/fetch/{ResourceFetchHandler.js → ResourceFetch.js} +5 -5
- package/lib/fetch/ResourceFetch.js.map +1 -0
- package/lib/fetch/Response.d.ts +60 -26
- package/lib/fetch/Response.js +196 -104
- package/lib/fetch/Response.js.map +1 -1
- package/lib/fetch/data-uri/DataURIParser.d.ts +20 -0
- package/lib/fetch/data-uri/DataURIParser.js +60 -0
- package/lib/fetch/data-uri/DataURIParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartFormDataParser.d.ts +40 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js +81 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartReader.d.ts +49 -0
- package/lib/fetch/multipart/MultipartReader.js +178 -0
- package/lib/fetch/multipart/MultipartReader.js.map +1 -0
- package/lib/fetch/types/IHeaders.d.ts +71 -0
- package/lib/fetch/{IHeaders.js.map → types/IHeaders.js.map} +1 -1
- package/lib/fetch/types/IHeadersInit.js.map +1 -0
- package/lib/fetch/types/IRequest.d.ts +60 -0
- package/lib/fetch/{IRequest.js.map → types/IRequest.js.map} +1 -1
- package/lib/fetch/types/IRequestBody.d.ts +7 -0
- package/lib/fetch/{IBody.js → types/IRequestBody.js} +1 -1
- package/lib/fetch/types/IRequestBody.js.map +1 -0
- package/lib/fetch/types/IRequestCredentials.d.ts +2 -0
- package/lib/fetch/types/IRequestCredentials.js +3 -0
- package/lib/fetch/types/IRequestCredentials.js.map +1 -0
- package/lib/fetch/{RequestInfo.d.ts → types/IRequestInfo.d.ts} +2 -2
- package/lib/fetch/types/IRequestInfo.js +3 -0
- package/lib/fetch/types/IRequestInfo.js.map +1 -0
- package/lib/fetch/types/IRequestInit.d.ts +21 -0
- package/lib/fetch/types/IRequestInit.js.map +1 -0
- package/lib/fetch/types/IRequestRedirect.d.ts +2 -0
- package/lib/fetch/types/IRequestRedirect.js +3 -0
- package/lib/fetch/types/IRequestRedirect.js.map +1 -0
- package/lib/fetch/types/IRequestReferrerPolicy.d.ts +2 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js +3 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js.map +1 -0
- package/lib/fetch/types/IResponse.d.ts +27 -0
- package/lib/fetch/{IResponse.js.map → types/IResponse.js.map} +1 -1
- package/lib/fetch/types/IResponseBody.d.ts +7 -0
- package/lib/fetch/types/IResponseBody.js +3 -0
- package/lib/fetch/types/IResponseBody.js.map +1 -0
- package/lib/fetch/types/IResponseInit.d.ts +9 -0
- package/lib/fetch/types/IResponseInit.js.map +1 -0
- package/lib/fetch/utilities/FetchBodyUtility.d.ts +44 -0
- package/lib/fetch/utilities/FetchBodyUtility.js +156 -0
- package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchCORSUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchCORSUtility.js +20 -0
- package/lib/fetch/utilities/FetchCORSUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js +45 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.d.ts +55 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js +194 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.d.ts +38 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js +70 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js.map +1 -0
- package/lib/file/Blob.d.ts +2 -2
- package/lib/file/Blob.js +1 -1
- package/lib/file/Blob.js.map +1 -1
- package/lib/file/File.d.ts +2 -1
- package/lib/file/File.js.map +1 -1
- package/lib/form-data/FormData.d.ts +98 -0
- package/lib/form-data/FormData.js +212 -0
- package/lib/form-data/FormData.js.map +1 -0
- package/lib/index.d.ts +14 -1
- package/lib/index.js +20 -2
- package/lib/index.js.map +1 -1
- package/lib/nodes/document/Document.d.ts +5 -17
- package/lib/nodes/document/Document.js +11 -54
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +1 -1
- package/lib/nodes/document-fragment/DocumentFragment.d.ts +3 -14
- package/lib/nodes/document-fragment/DocumentFragment.js +7 -51
- package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
- package/lib/nodes/document-fragment/IDocumentFragment.d.ts +2 -1
- package/lib/nodes/element/Element.d.ts +8 -8
- package/lib/nodes/element/Element.js +28 -45
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementUtility.d.ts +32 -0
- package/lib/nodes/element/ElementUtility.js +105 -0
- package/lib/nodes/element/ElementUtility.js.map +1 -0
- package/lib/nodes/element/HTMLCollection.d.ts +26 -3
- package/lib/nodes/element/HTMLCollection.js +51 -0
- package/lib/nodes/element/HTMLCollection.js.map +1 -1
- package/lib/nodes/element/IHTMLCollection.d.ts +9 -2
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +24 -24
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-audio-element/Audio.d.ts +15 -0
- package/lib/nodes/html-audio-element/Audio.js +27 -0
- package/lib/nodes/html-audio-element/Audio.js.map +1 -0
- package/lib/nodes/html-base-element/HTMLBaseElement.js +4 -4
- package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +79 -3
- package/lib/nodes/html-button-element/HTMLButtonElement.js +158 -10
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +28 -2
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -3
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +12 -12
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.d.ts +32 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js +58 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/HTMLFormElement.d.ts +37 -17
- package/lib/nodes/html-form-element/HTMLFormElement.js +128 -37
- package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.d.ts +25 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js +3 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +16 -6
- package/lib/nodes/html-form-element/IRadioNodeList.d.ts +15 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js +3 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js.map +1 -0
- package/lib/nodes/html-form-element/RadioNodeList.d.ts +16 -0
- package/lib/nodes/html-form-element/RadioNodeList.js +28 -0
- package/lib/nodes/html-form-element/RadioNodeList.js.map +1 -0
- package/lib/nodes/html-image-element/HTMLImageElement.js +19 -19
- package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +43 -19
- package/lib/nodes/html-input-element/HTMLInputElement.js +206 -111
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +14 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +3 -7
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +21 -21
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.js +21 -21
- package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
- package/lib/nodes/html-meta-element/HTMLMetaElement.js +8 -8
- package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js +6 -6
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +3 -4
- package/lib/nodes/html-option-element/HTMLOptionElement.js +26 -29
- package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -16
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/ScriptUtility.js +5 -5
- package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.d.ts +5 -6
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +42 -41
- package/lib/nodes/html-select-element/HTMLSelectElement.js +134 -138
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.d.ts +4 -5
- package/lib/nodes/html-select-element/IHTMLOptionsCollection.js.map +1 -0
- package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +22 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js +2 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
- package/lib/nodes/html-style-element/HTMLStyleElement.js +7 -7
- package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +55 -2
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +150 -40
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +16 -0
- package/lib/nodes/node/Node.d.ts +12 -1
- package/lib/nodes/node/Node.js +50 -4
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeList.d.ts +2 -3
- package/lib/nodes/node/NodeList.js.map +1 -1
- package/lib/nodes/parent-node/IParentNode.d.ts +4 -4
- package/lib/nodes/parent-node/ParentNodeUtility.d.ts +3 -3
- package/lib/nodes/parent-node/ParentNodeUtility.js +13 -11
- package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
- package/lib/nodes/text/Text.d.ts +13 -0
- package/lib/nodes/text/Text.js +30 -0
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/query-selector/QuerySelector.js +2 -2
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/query-selector/SelectorItem.js +2 -0
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/validity-state/ValidityState.d.ts +87 -0
- package/lib/validity-state/ValidityState.js +171 -0
- package/lib/validity-state/ValidityState.js.map +1 -0
- package/lib/window/GlobalWindow.d.ts +0 -8
- package/lib/window/GlobalWindow.js +0 -2
- package/lib/window/GlobalWindow.js.map +1 -1
- package/lib/window/INodeJSGlobal.d.ts +71 -0
- package/lib/window/INodeJSGlobal.js +2 -0
- package/lib/window/INodeJSGlobal.js.map +1 -0
- package/lib/window/IWindow.d.ts +30 -10
- package/lib/window/Window.d.ts +37 -20
- package/lib/window/Window.js +22 -10
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-http-request/XMLHttpRequest.js +20 -12
- package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
- package/lib/xml-parser/XMLParser.js +1 -1
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/package.json +2 -3
- package/src/cookie/CookieJar.ts +1 -1
- package/src/dom-token-list/DOMTokenList.ts +24 -20
- package/src/event/EventTarget.ts +7 -3
- package/src/exception/DOMExceptionNameEnum.ts +5 -1
- package/src/fetch/AbortController.ts +26 -0
- package/src/fetch/AbortSignal.ts +44 -0
- package/src/fetch/Fetch.ts +666 -0
- package/src/fetch/Headers.ts +151 -3
- package/src/fetch/Request.ts +226 -94
- package/src/fetch/{ResourceFetchHandler.ts → ResourceFetch.ts} +3 -3
- package/src/fetch/Response.ts +252 -89
- package/src/fetch/data-uri/DataURIParser.ts +66 -0
- package/src/fetch/multipart/MultipartFormDataParser.ts +113 -0
- package/src/fetch/multipart/MultipartReader.ts +217 -0
- package/src/fetch/types/IHeaders.ts +80 -0
- package/src/fetch/types/IRequest.ts +65 -0
- package/src/fetch/types/IRequestBody.ts +15 -0
- package/src/fetch/types/IRequestCredentials.ts +2 -0
- package/src/fetch/types/IRequestInfo.ts +6 -0
- package/src/fetch/types/IRequestInit.ts +21 -0
- package/src/fetch/types/IRequestRedirect.ts +3 -0
- package/src/fetch/types/IRequestReferrerPolicy.ts +11 -0
- package/src/fetch/types/IResponse.ts +27 -0
- package/src/fetch/types/IResponseBody.ts +15 -0
- package/src/fetch/types/IResponseInit.ts +10 -0
- package/src/fetch/utilities/FetchBodyUtility.ts +175 -0
- package/src/fetch/utilities/FetchCORSUtility.ts +18 -0
- package/src/fetch/utilities/FetchRequestHeaderUtility.ts +47 -0
- package/src/fetch/utilities/FetchRequestReferrerUtility.ts +241 -0
- package/src/fetch/utilities/FetchRequestValidationUtility.ts +82 -0
- package/src/file/Blob.ts +2 -2
- package/src/file/File.ts +5 -1
- package/src/form-data/FormData.ts +237 -0
- package/src/index.ts +27 -1
- package/src/nodes/document/Document.ts +23 -64
- package/src/nodes/document/IDocument.ts +1 -1
- package/src/nodes/document-fragment/DocumentFragment.ts +9 -59
- package/src/nodes/document-fragment/IDocumentFragment.ts +2 -1
- package/src/nodes/element/Element.ts +43 -56
- package/src/nodes/element/ElementUtility.ts +137 -0
- package/src/nodes/element/HTMLCollection.ts +60 -3
- package/src/nodes/element/IHTMLCollection.ts +10 -2
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +24 -24
- package/src/nodes/html-audio-element/Audio.ts +22 -0
- package/src/nodes/html-base-element/HTMLBaseElement.ts +4 -4
- package/src/nodes/html-button-element/HTMLButtonElement.ts +184 -10
- package/src/nodes/html-button-element/IHTMLButtonElement.ts +31 -2
- package/src/nodes/html-dialog-element/HTMLDialogElement.ts +3 -3
- package/src/nodes/html-element/HTMLElement.ts +12 -12
- package/src/nodes/html-form-element/HTMLFormControlsCollection.ts +76 -0
- package/src/nodes/html-form-element/HTMLFormElement.ts +147 -41
- package/src/nodes/html-form-element/IHTMLFormControlsCollection.ts +45 -0
- package/src/nodes/html-form-element/IHTMLFormElement.ts +17 -6
- package/src/nodes/html-form-element/IRadioNodeList.ts +16 -0
- package/src/nodes/html-form-element/RadioNodeList.ts +24 -0
- package/src/nodes/html-image-element/HTMLImageElement.ts +19 -19
- package/src/nodes/html-input-element/HTMLInputElement.ts +232 -113
- package/src/nodes/html-input-element/IHTMLInputElement.ts +20 -1
- package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -7
- package/src/nodes/html-link-element/HTMLLinkElement.ts +21 -21
- package/src/nodes/html-media-element/HTMLMediaElement.ts +21 -21
- package/src/nodes/html-meta-element/HTMLMetaElement.ts +8 -8
- package/src/nodes/html-opt-group-element/HTMLOptGroupElement.ts +6 -6
- package/src/nodes/html-option-element/HTMLOptionElement.ts +29 -30
- package/src/nodes/html-script-element/HTMLScriptElement.ts +16 -16
- package/src/nodes/html-script-element/ScriptUtility.ts +5 -5
- package/src/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.ts +5 -9
- package/src/nodes/html-select-element/HTMLSelectElement.ts +159 -170
- package/src/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.ts +4 -8
- package/src/nodes/html-select-element/IHTMLSelectElement.ts +25 -2
- package/src/nodes/html-slot-element/HTMLSlotElement.ts +2 -2
- package/src/nodes/html-style-element/HTMLStyleElement.ts +7 -7
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +174 -41
- package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +18 -0
- package/src/nodes/node/Node.ts +61 -6
- package/src/nodes/node/NodeList.ts +2 -3
- package/src/nodes/parent-node/IParentNode.ts +7 -4
- package/src/nodes/parent-node/ParentNodeUtility.ts +25 -15
- package/src/nodes/text/Text.ts +38 -0
- package/src/query-selector/QuerySelector.ts +2 -2
- package/src/query-selector/SelectorItem.ts +3 -0
- package/src/validity-state/ValidityState.ts +211 -0
- package/src/window/GlobalWindow.ts +0 -2
- package/src/window/INodeJSGlobal.ts +70 -0
- package/src/window/IWindow.ts +32 -10
- package/src/window/Window.ts +43 -21
- package/src/xml-http-request/XMLHttpRequest.ts +27 -26
- package/src/xml-parser/XMLParser.ts +1 -1
- package/lib/fetch/FetchHandler.d.ts +0 -18
- package/lib/fetch/FetchHandler.js +0 -83
- package/lib/fetch/FetchHandler.js.map +0 -1
- package/lib/fetch/IAbortSignal.d.ts +0 -16
- package/lib/fetch/IAbortSignal.js +0 -4
- package/lib/fetch/IAbortSignal.js.map +0 -1
- package/lib/fetch/IBody.d.ts +0 -17
- package/lib/fetch/IBody.js.map +0 -1
- package/lib/fetch/IHeaders.d.ts +0 -18
- package/lib/fetch/IHeadersInit.js.map +0 -1
- package/lib/fetch/IRequest.d.ts +0 -18
- package/lib/fetch/IRequestInit.d.ts +0 -16
- package/lib/fetch/IRequestInit.js.map +0 -1
- package/lib/fetch/IResponse.d.ts +0 -20
- package/lib/fetch/IResponseInit.d.ts +0 -9
- package/lib/fetch/IResponseInit.js.map +0 -1
- package/lib/fetch/RequestInfo.js +0 -3
- package/lib/fetch/RequestInfo.js.map +0 -1
- package/lib/fetch/ResourceFetchHandler.js.map +0 -1
- package/lib/form-data/IFormData.d.ts +0 -32
- package/lib/form-data/IFormData.js +0 -3
- package/lib/form-data/IFormData.js.map +0 -1
- package/lib/location/RelativeURL.d.ts +0 -15
- package/lib/location/RelativeURL.js +0 -19
- package/lib/location/RelativeURL.js.map +0 -1
- package/lib/nodes/element/HTMLCollectionFactory.d.ts +0 -21
- package/lib/nodes/element/HTMLCollectionFactory.js +0 -31
- package/lib/nodes/element/HTMLCollectionFactory.js.map +0 -1
- package/lib/nodes/html-option-element/IHTMLOptionsCollection.js.map +0 -1
- package/lib/nodes/node/NodeListFactory.d.ts +0 -21
- package/lib/nodes/node/NodeListFactory.js +0 -31
- package/lib/nodes/node/NodeListFactory.js.map +0 -1
- package/lib/nodes/validity-state/ValidityState.d.ts +0 -52
- package/lib/nodes/validity-state/ValidityState.js +0 -81
- package/lib/nodes/validity-state/ValidityState.js.map +0 -1
- package/src/fetch/FetchHandler.ts +0 -90
- package/src/fetch/IAbortSignal.ts +0 -34
- package/src/fetch/IBody.ts +0 -18
- package/src/fetch/IHeaders.ts +0 -18
- package/src/fetch/IRequest.ts +0 -59
- package/src/fetch/IRequestInit.ts +0 -41
- package/src/fetch/IResponse.ts +0 -22
- package/src/fetch/IResponseInit.ts +0 -10
- package/src/fetch/RequestInfo.ts +0 -6
- package/src/form-data/IFormData.ts +0 -33
- package/src/location/RelativeURL.ts +0 -17
- package/src/nodes/element/HTMLCollectionFactory.ts +0 -31
- package/src/nodes/node/NodeListFactory.ts +0 -31
- package/src/nodes/validity-state/ValidityState.ts +0 -84
- /package/lib/fetch/{IHeaders.js → types/IHeaders.js} +0 -0
- /package/lib/fetch/{IHeadersInit.d.ts → types/IHeadersInit.d.ts} +0 -0
- /package/lib/fetch/{IHeadersInit.js → types/IHeadersInit.js} +0 -0
- /package/lib/fetch/{IRequest.js → types/IRequest.js} +0 -0
- /package/lib/fetch/{IRequestInit.js → types/IRequestInit.js} +0 -0
- /package/lib/fetch/{IResponse.js → types/IResponse.js} +0 -0
- /package/lib/fetch/{IResponseInit.js → types/IResponseInit.js} +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.js +0 -0
- /package/src/fetch/{IHeadersInit.ts → types/IHeadersInit.ts} +0 -0
@@ -29,8 +29,8 @@ import IComment from '../comment/IComment';
|
|
29
29
|
import IText from '../text/IText';
|
30
30
|
import IDocumentFragment from '../document-fragment/IDocumentFragment';
|
31
31
|
import INodeList from '../node/INodeList';
|
32
|
+
import NodeList from '../node/NodeList';
|
32
33
|
import IHTMLCollection from '../element/IHTMLCollection';
|
33
|
-
import HTMLCollectionFactory from '../element/HTMLCollectionFactory';
|
34
34
|
import IHTMLLinkElement from '../html-link-element/IHTMLLinkElement';
|
35
35
|
import IHTMLStyleElement from '../html-style-element/IHTMLStyleElement';
|
36
36
|
import DocumentReadyStateEnum from './DocumentReadyStateEnum';
|
@@ -43,6 +43,8 @@ import IHTMLBaseElement from '../html-base-element/IHTMLBaseElement';
|
|
43
43
|
import IAttr from '../attr/IAttr';
|
44
44
|
import IProcessingInstruction from '../processing-instruction/IProcessingInstruction';
|
45
45
|
import ProcessingInstruction from '../processing-instruction/ProcessingInstruction';
|
46
|
+
import ElementUtility from '../element/ElementUtility';
|
47
|
+
import HTMLCollection from '../element/HTMLCollection';
|
46
48
|
import VisibilityStateEnum from './VisibilityStateEnum';
|
47
49
|
|
48
50
|
const PROCESSING_INSTRUCTION_TARGET_REGEXP = /^[a-z][a-z0-9-]+$/;
|
@@ -55,7 +57,10 @@ export default class Document extends Node implements IDocument {
|
|
55
57
|
public nodeType = Node.DOCUMENT_NODE;
|
56
58
|
public adoptedStyleSheets: CSSStyleSheet[] = [];
|
57
59
|
public implementation: DOMImplementation;
|
58
|
-
public readonly children: IHTMLCollection<IElement> =
|
60
|
+
public readonly children: IHTMLCollection<IElement, IElement> = new HTMLCollection<
|
61
|
+
IElement,
|
62
|
+
IElement
|
63
|
+
>();
|
59
64
|
public readonly readyState = DocumentReadyStateEnum.interactive;
|
60
65
|
public readonly isConnected: boolean = true;
|
61
66
|
public readonly defaultView: IWindow;
|
@@ -416,8 +421,10 @@ export default class Document extends Node implements IDocument {
|
|
416
421
|
*
|
417
422
|
* @returns Scripts.
|
418
423
|
*/
|
419
|
-
public get scripts(): IHTMLCollection<IHTMLScriptElement> {
|
420
|
-
return <IHTMLCollection<IHTMLScriptElement>>
|
424
|
+
public get scripts(): IHTMLCollection<IHTMLScriptElement, IHTMLScriptElement> {
|
425
|
+
return <IHTMLCollection<IHTMLScriptElement, IHTMLScriptElement>>(
|
426
|
+
this.getElementsByTagName('script')
|
427
|
+
);
|
421
428
|
}
|
422
429
|
|
423
430
|
/**
|
@@ -531,7 +538,7 @@ export default class Document extends Node implements IDocument {
|
|
531
538
|
* @param className Tag name.
|
532
539
|
* @returns Matching element.
|
533
540
|
*/
|
534
|
-
public getElementsByClassName(className: string): IHTMLCollection<IElement> {
|
541
|
+
public getElementsByClassName(className: string): IHTMLCollection<IElement, IElement> {
|
535
542
|
return ParentNodeUtility.getElementsByClassName(this, className);
|
536
543
|
}
|
537
544
|
|
@@ -541,7 +548,7 @@ export default class Document extends Node implements IDocument {
|
|
541
548
|
* @param tagName Tag name.
|
542
549
|
* @returns Matching element.
|
543
550
|
*/
|
544
|
-
public getElementsByTagName(tagName: string): IHTMLCollection<IElement> {
|
551
|
+
public getElementsByTagName(tagName: string): IHTMLCollection<IElement, IElement> {
|
545
552
|
return ParentNodeUtility.getElementsByTagName(this, tagName);
|
546
553
|
}
|
547
554
|
|
@@ -552,7 +559,10 @@ export default class Document extends Node implements IDocument {
|
|
552
559
|
* @param tagName Tag name.
|
553
560
|
* @returns Matching element.
|
554
561
|
*/
|
555
|
-
public getElementsByTagNameNS(
|
562
|
+
public getElementsByTagNameNS(
|
563
|
+
namespaceURI: string,
|
564
|
+
tagName: string
|
565
|
+
): IHTMLCollection<IElement, IElement> {
|
556
566
|
return ParentNodeUtility.getElementsByTagNameNS(this, namespaceURI, tagName);
|
557
567
|
}
|
558
568
|
|
@@ -577,9 +587,9 @@ export default class Document extends Node implements IDocument {
|
|
577
587
|
_parentNode: IElement | IDocumentFragment | IDocument,
|
578
588
|
_name: string
|
579
589
|
): INodeList<IElement> => {
|
580
|
-
const matches =
|
590
|
+
const matches = new NodeList<IElement>();
|
581
591
|
for (const child of _parentNode.children) {
|
582
|
-
if (
|
592
|
+
if (child.getAttributeNS(null, 'name') === _name) {
|
583
593
|
matches.push(child);
|
584
594
|
}
|
585
595
|
for (const match of _getElementsByName(<IElement>child, _name)) {
|
@@ -615,78 +625,27 @@ export default class Document extends Node implements IDocument {
|
|
615
625
|
}
|
616
626
|
|
617
627
|
/**
|
618
|
-
* Append a child node to childNodes.
|
619
|
-
*
|
620
628
|
* @override
|
621
|
-
* @param node Node to append.
|
622
|
-
* @returns Appended node.
|
623
629
|
*/
|
624
630
|
public appendChild(node: INode): INode {
|
625
|
-
|
626
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
627
|
-
if (node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
628
|
-
if (node.parentNode && node.parentNode['children']) {
|
629
|
-
const index = node.parentNode['children'].indexOf(node);
|
630
|
-
if (index !== -1) {
|
631
|
-
node.parentNode['children'].splice(index, 1);
|
632
|
-
}
|
633
|
-
}
|
634
|
-
if (node !== this && node.nodeType === Node.ELEMENT_NODE) {
|
635
|
-
this.children.push(<Element>node);
|
636
|
-
}
|
637
|
-
}
|
638
|
-
|
631
|
+
ElementUtility.appendChild(this, node);
|
639
632
|
return super.appendChild(node);
|
640
633
|
}
|
641
634
|
|
642
635
|
/**
|
643
|
-
* Remove Child element from childNodes array.
|
644
|
-
*
|
645
636
|
* @override
|
646
|
-
* @param node Node to remove.
|
647
637
|
*/
|
648
638
|
public removeChild(node: INode): INode {
|
649
|
-
|
650
|
-
const index = this.children.indexOf(<Element>node);
|
651
|
-
if (index !== -1) {
|
652
|
-
this.children.splice(index, 1);
|
653
|
-
}
|
654
|
-
}
|
655
|
-
|
639
|
+
ElementUtility.removeChild(this, node);
|
656
640
|
return super.removeChild(node);
|
657
641
|
}
|
658
642
|
|
659
643
|
/**
|
660
|
-
* Inserts a node before another.
|
661
|
-
*
|
662
644
|
* @override
|
663
|
-
* @param newNode Node to insert.
|
664
|
-
* @param [referenceNode] Node to insert before.
|
665
|
-
* @returns Inserted node.
|
666
645
|
*/
|
667
646
|
public insertBefore(newNode: INode, referenceNode?: INode): INode {
|
668
|
-
|
669
|
-
|
670
|
-
// If the type is DocumentFragment, then the child nodes of if it should be moved instead of the actual node.
|
671
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
672
|
-
if (newNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
673
|
-
if (newNode.parentNode && newNode.parentNode['children']) {
|
674
|
-
const index = newNode.parentNode['children'].indexOf(newNode);
|
675
|
-
if (index !== -1) {
|
676
|
-
newNode.parentNode['children'].splice(index, 1);
|
677
|
-
}
|
678
|
-
}
|
679
|
-
|
680
|
-
this.children.length = 0;
|
681
|
-
|
682
|
-
for (const node of this.childNodes) {
|
683
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
684
|
-
this.children.push(<IElement>node);
|
685
|
-
}
|
686
|
-
}
|
687
|
-
}
|
688
|
-
|
689
|
-
return returnValue;
|
647
|
+
ElementUtility.insertBefore(this, newNode, referenceNode);
|
648
|
+
return super.insertBefore(newNode, referenceNode);
|
690
649
|
}
|
691
650
|
|
692
651
|
/**
|
@@ -32,7 +32,7 @@ export default interface IDocument extends IParentNode {
|
|
32
32
|
readonly doctype: IDocumentType;
|
33
33
|
readonly body: IHTMLElement;
|
34
34
|
readonly head: IHTMLElement;
|
35
|
-
readonly scripts: IHTMLCollection<IHTMLScriptElement>;
|
35
|
+
readonly scripts: IHTMLCollection<IHTMLScriptElement, IHTMLScriptElement>;
|
36
36
|
readonly activeElement: IHTMLElement;
|
37
37
|
readonly styleSheets: CSSStyleSheet[];
|
38
38
|
readonly scrollingElement: IHTMLElement;
|
@@ -5,14 +5,16 @@ import ParentNodeUtility from '../parent-node/ParentNodeUtility';
|
|
5
5
|
import IDocumentFragment from './IDocumentFragment';
|
6
6
|
import INode from '../node/INode';
|
7
7
|
import IHTMLCollection from '../element/IHTMLCollection';
|
8
|
-
import
|
8
|
+
import ElementUtility from '../element/ElementUtility';
|
9
|
+
import HTMLCollection from '../element/HTMLCollection';
|
10
|
+
import INodeList from '../node/INodeList';
|
9
11
|
|
10
12
|
/**
|
11
13
|
* DocumentFragment.
|
12
14
|
*/
|
13
15
|
export default class DocumentFragment extends Node implements IDocumentFragment {
|
14
16
|
public nodeType = Node.DOCUMENT_FRAGMENT_NODE;
|
15
|
-
public readonly children: IHTMLCollection<IElement> =
|
17
|
+
public readonly children: IHTMLCollection<IElement, IElement> = new HTMLCollection();
|
16
18
|
public _rootNode: INode = this;
|
17
19
|
|
18
20
|
/**
|
@@ -104,7 +106,7 @@ export default class DocumentFragment extends Node implements IDocumentFragment
|
|
104
106
|
* @param selector CSS selector.
|
105
107
|
* @returns Matching elements.
|
106
108
|
*/
|
107
|
-
public querySelectorAll(selector: string): IElement
|
109
|
+
public querySelectorAll(selector: string): INodeList<IElement> {
|
108
110
|
return QuerySelector.querySelectorAll(this, selector);
|
109
111
|
}
|
110
112
|
|
@@ -150,78 +152,26 @@ export default class DocumentFragment extends Node implements IDocumentFragment
|
|
150
152
|
}
|
151
153
|
|
152
154
|
/**
|
153
|
-
* Append a child node to childNodes.
|
154
|
-
*
|
155
155
|
* @override
|
156
|
-
* @param node Node to append.
|
157
|
-
* @returns Appended node.
|
158
156
|
*/
|
159
157
|
public appendChild(node: INode): INode {
|
160
|
-
|
161
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
162
|
-
if (node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
163
|
-
if (node.parentNode && node.parentNode['children']) {
|
164
|
-
const index = node.parentNode['children'].indexOf(node);
|
165
|
-
if (index !== -1) {
|
166
|
-
node.parentNode['children'].splice(index, 1);
|
167
|
-
}
|
168
|
-
}
|
169
|
-
|
170
|
-
if (node !== this && node.nodeType === Node.ELEMENT_NODE) {
|
171
|
-
this.children.push(<IElement>node);
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
158
|
+
ElementUtility.appendChild(this, node);
|
175
159
|
return super.appendChild(<INode>node);
|
176
160
|
}
|
177
161
|
|
178
162
|
/**
|
179
|
-
* Remove Child element from childNodes array.
|
180
|
-
*
|
181
163
|
* @override
|
182
|
-
* @param node Node to remove.
|
183
164
|
*/
|
184
165
|
public removeChild(node: INode): INode {
|
185
|
-
|
186
|
-
const index = this.children.indexOf(<IElement>node);
|
187
|
-
if (index !== -1) {
|
188
|
-
this.children.splice(index, 1);
|
189
|
-
}
|
190
|
-
}
|
191
|
-
|
166
|
+
ElementUtility.removeChild(this, node);
|
192
167
|
return super.removeChild(<Node>node);
|
193
168
|
}
|
194
169
|
|
195
170
|
/**
|
196
|
-
* Inserts a node before another.
|
197
|
-
*
|
198
171
|
* @override
|
199
|
-
* @param newNode Node to insert.
|
200
|
-
* @param [referenceNode] Node to insert before.
|
201
|
-
* @returns Inserted node.
|
202
172
|
*/
|
203
173
|
public insertBefore(newNode: INode, referenceNode?: INode): INode {
|
204
|
-
|
205
|
-
|
206
|
-
// If the type is DocumentFragment, then the child nodes of if it should be moved instead of the actual node.
|
207
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
208
|
-
if (newNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
209
|
-
if (newNode.parentNode && newNode.parentNode['children']) {
|
210
|
-
const index = newNode.parentNode['children'].indexOf(newNode);
|
211
|
-
if (index !== -1) {
|
212
|
-
newNode.parentNode['children'].splice(index, 1);
|
213
|
-
}
|
214
|
-
}
|
215
|
-
|
216
|
-
this.children.length = 0;
|
217
|
-
|
218
|
-
for (const node of this.childNodes) {
|
219
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
220
|
-
this.children.push(<IElement>node);
|
221
|
-
}
|
222
|
-
}
|
223
|
-
}
|
224
|
-
|
225
|
-
return returnValue;
|
174
|
+
ElementUtility.insertBefore(this, newNode, referenceNode);
|
175
|
+
return super.insertBefore(newNode, referenceNode);
|
226
176
|
}
|
227
177
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import IElement from '../element/IElement';
|
2
2
|
import INode from '../node/INode';
|
3
|
+
import INodeList from '../node/INodeList';
|
3
4
|
|
4
5
|
export default interface IDocumentFragment extends INode {
|
5
6
|
readonly childElementCount: number;
|
@@ -35,7 +36,7 @@ export default interface IDocumentFragment extends INode {
|
|
35
36
|
* @param selector CSS selector.
|
36
37
|
* @returns Matching elements.
|
37
38
|
*/
|
38
|
-
querySelectorAll(selector: string): IElement
|
39
|
+
querySelectorAll(selector: string): INodeList<IElement>;
|
39
40
|
|
40
41
|
/**
|
41
42
|
* Replaces the existing children of a node with a specified new set of children.
|
@@ -21,15 +21,15 @@ import INode from '../node/INode';
|
|
21
21
|
import IDocument from '../document/IDocument';
|
22
22
|
import IHTMLCollection from './IHTMLCollection';
|
23
23
|
import INodeList from '../node/INodeList';
|
24
|
-
import HTMLCollectionFactory from './HTMLCollectionFactory';
|
25
24
|
import { TInsertAdjacentPositions } from './IElement';
|
26
25
|
import IText from '../text/IText';
|
27
26
|
import IDOMRectList from './IDOMRectList';
|
28
27
|
import DOMRectListFactory from './DOMRectListFactory';
|
29
28
|
import IAttr from '../attr/IAttr';
|
30
29
|
import INamedNodeMap from '../../named-node-map/INamedNodeMap';
|
31
|
-
|
32
30
|
import Event from '../../event/Event';
|
31
|
+
import ElementUtility from './ElementUtility';
|
32
|
+
import HTMLCollection from './HTMLCollection';
|
33
33
|
|
34
34
|
/**
|
35
35
|
* Element.
|
@@ -46,7 +46,7 @@ export default class Element extends Node implements IElement {
|
|
46
46
|
|
47
47
|
public scrollTop = 0;
|
48
48
|
public scrollLeft = 0;
|
49
|
-
public children: IHTMLCollection<IElement> =
|
49
|
+
public children: IHTMLCollection<IElement, IElement> = new HTMLCollection<IElement, IElement>();
|
50
50
|
public readonly namespaceURI: string = null;
|
51
51
|
|
52
52
|
// Events
|
@@ -298,7 +298,7 @@ export default class Element extends Node implements IElement {
|
|
298
298
|
* @param slot Slot.
|
299
299
|
*/
|
300
300
|
public set slot(title: string) {
|
301
|
-
this.
|
301
|
+
this.setAttribute('slot', title);
|
302
302
|
}
|
303
303
|
|
304
304
|
/**
|
@@ -368,21 +368,7 @@ export default class Element extends Node implements IElement {
|
|
368
368
|
* @override
|
369
369
|
*/
|
370
370
|
public override appendChild(node: INode): INode {
|
371
|
-
|
372
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
373
|
-
if (node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
374
|
-
if (node.parentNode && node.parentNode['children']) {
|
375
|
-
const index = node.parentNode['children'].indexOf(node);
|
376
|
-
if (index !== -1) {
|
377
|
-
node.parentNode['children'].splice(index, 1);
|
378
|
-
}
|
379
|
-
}
|
380
|
-
|
381
|
-
if (node !== this && node.nodeType === Node.ELEMENT_NODE) {
|
382
|
-
this.children.push(<IElement>node);
|
383
|
-
}
|
384
|
-
}
|
385
|
-
|
371
|
+
ElementUtility.appendChild(this, node);
|
386
372
|
return super.appendChild(node);
|
387
373
|
}
|
388
374
|
|
@@ -390,49 +376,23 @@ export default class Element extends Node implements IElement {
|
|
390
376
|
* @override
|
391
377
|
*/
|
392
378
|
public override removeChild(node: INode): INode {
|
393
|
-
|
394
|
-
const index = this.children.indexOf(<IElement>node);
|
395
|
-
if (index !== -1) {
|
396
|
-
this.children.splice(index, 1);
|
397
|
-
}
|
398
|
-
}
|
399
|
-
|
379
|
+
ElementUtility.removeChild(this, node);
|
400
380
|
return super.removeChild(node);
|
401
381
|
}
|
402
382
|
|
403
383
|
/**
|
404
|
-
*
|
384
|
+
* @override
|
405
385
|
*/
|
406
|
-
public
|
407
|
-
|
386
|
+
public override insertBefore(newNode: INode, referenceNode: INode | null): INode {
|
387
|
+
ElementUtility.insertBefore(this, newNode, referenceNode);
|
388
|
+
return super.insertBefore(newNode, referenceNode);
|
408
389
|
}
|
409
390
|
|
410
391
|
/**
|
411
|
-
*
|
392
|
+
* Removes the node from its parent.
|
412
393
|
*/
|
413
|
-
public
|
414
|
-
|
415
|
-
|
416
|
-
// If the type is DocumentFragment, then the child nodes of if it should be moved instead of the actual node.
|
417
|
-
// See: https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment
|
418
|
-
if (newNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
|
419
|
-
if (newNode.parentNode && newNode.parentNode['children']) {
|
420
|
-
const index = newNode.parentNode['children'].indexOf(newNode);
|
421
|
-
if (index !== -1) {
|
422
|
-
newNode.parentNode['children'].splice(index, 1);
|
423
|
-
}
|
424
|
-
}
|
425
|
-
|
426
|
-
this.children.length = 0;
|
427
|
-
|
428
|
-
for (const node of this.childNodes) {
|
429
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
430
|
-
this.children.push(<IElement>node);
|
431
|
-
}
|
432
|
-
}
|
433
|
-
}
|
434
|
-
|
435
|
-
return returnValue;
|
394
|
+
public remove(): void {
|
395
|
+
ChildNodeUtility.remove(this);
|
436
396
|
}
|
437
397
|
|
438
398
|
/**
|
@@ -818,7 +778,7 @@ export default class Element extends Node implements IElement {
|
|
818
778
|
* @param className Tag name.
|
819
779
|
* @returns Matching element.
|
820
780
|
*/
|
821
|
-
public getElementsByClassName(className: string): IHTMLCollection<IElement> {
|
781
|
+
public getElementsByClassName(className: string): IHTMLCollection<IElement, IElement> {
|
822
782
|
return ParentNodeUtility.getElementsByClassName(this, className);
|
823
783
|
}
|
824
784
|
|
@@ -828,7 +788,7 @@ export default class Element extends Node implements IElement {
|
|
828
788
|
* @param tagName Tag name.
|
829
789
|
* @returns Matching element.
|
830
790
|
*/
|
831
|
-
public getElementsByTagName(tagName: string): IHTMLCollection<IElement> {
|
791
|
+
public getElementsByTagName(tagName: string): IHTMLCollection<IElement, IElement> {
|
832
792
|
return ParentNodeUtility.getElementsByTagName(this, tagName);
|
833
793
|
}
|
834
794
|
|
@@ -839,7 +799,10 @@ export default class Element extends Node implements IElement {
|
|
839
799
|
* @param tagName Tag name.
|
840
800
|
* @returns Matching element.
|
841
801
|
*/
|
842
|
-
public getElementsByTagNameNS(
|
802
|
+
public getElementsByTagNameNS(
|
803
|
+
namespaceURI: string,
|
804
|
+
tagName: string
|
805
|
+
): IHTMLCollection<IElement, IElement> {
|
843
806
|
return ParentNodeUtility.getElementsByTagNameNS(this, namespaceURI, tagName);
|
844
807
|
}
|
845
808
|
|
@@ -868,6 +831,21 @@ export default class Element extends Node implements IElement {
|
|
868
831
|
this._classList._updateIndices();
|
869
832
|
}
|
870
833
|
|
834
|
+
if (attribute.name === 'id' || attribute.name === 'name') {
|
835
|
+
if (this.parentNode && (<IElement>this.parentNode).children && attribute.value !== oldValue) {
|
836
|
+
if (oldValue) {
|
837
|
+
(<HTMLCollection<IElement, IElement>>(
|
838
|
+
(<IElement>this.parentNode).children
|
839
|
+
))._removeNamedItem(this, oldValue);
|
840
|
+
}
|
841
|
+
if (attribute.value) {
|
842
|
+
(<HTMLCollection<IElement, IElement>>(
|
843
|
+
(<IElement>this.parentNode).children
|
844
|
+
))._appendNamedItem(this, attribute.value);
|
845
|
+
}
|
846
|
+
}
|
847
|
+
}
|
848
|
+
|
871
849
|
if (
|
872
850
|
this.attributeChangedCallback &&
|
873
851
|
(<typeof Element>this.constructor)._observedAttributes &&
|
@@ -966,6 +944,15 @@ export default class Element extends Node implements IElement {
|
|
966
944
|
this._classList._updateIndices();
|
967
945
|
}
|
968
946
|
|
947
|
+
if (attribute.name === 'id' || attribute.name === 'name') {
|
948
|
+
if (this.parentNode && (<IElement>this.parentNode).children && attribute.value) {
|
949
|
+
(<HTMLCollection<IElement, IElement>>(<IElement>this.parentNode).children)._removeNamedItem(
|
950
|
+
this,
|
951
|
+
attribute.value
|
952
|
+
);
|
953
|
+
}
|
954
|
+
}
|
955
|
+
|
969
956
|
if (
|
970
957
|
this.attributeChangedCallback &&
|
971
958
|
(<typeof Element>this.constructor)._observedAttributes &&
|
@@ -0,0 +1,137 @@
|
|
1
|
+
import NodeTypeEnum from '../node/NodeTypeEnum';
|
2
|
+
import IElement from './IElement';
|
3
|
+
import INode from '../node/INode';
|
4
|
+
import HTMLCollection from './HTMLCollection';
|
5
|
+
import IDocument from '../document/IDocument';
|
6
|
+
import IDocumentFragment from '../document-fragment/IDocumentFragment';
|
7
|
+
import IHTMLElement from '../html-element/IHTMLElement';
|
8
|
+
import Element from './Element';
|
9
|
+
|
10
|
+
const NAMED_ITEM_ATTRIBUTES = ['id', 'name'];
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Element utility.
|
14
|
+
*/
|
15
|
+
export default class ElementUtility {
|
16
|
+
/**
|
17
|
+
* Handles appending a child element to the "children" property.
|
18
|
+
*
|
19
|
+
* @param parentElement Parent element.
|
20
|
+
* @param node Node.
|
21
|
+
*/
|
22
|
+
public static appendChild(
|
23
|
+
parentElement: IElement | IDocument | IDocumentFragment,
|
24
|
+
node: INode
|
25
|
+
): void {
|
26
|
+
if (node.nodeType === NodeTypeEnum.elementNode && node !== parentElement) {
|
27
|
+
if (node.parentNode && (<IHTMLElement>node.parentNode).children) {
|
28
|
+
const index = (<IHTMLElement>node.parentNode).children.indexOf(<IHTMLElement>node);
|
29
|
+
if (index !== -1) {
|
30
|
+
for (const attribute of NAMED_ITEM_ATTRIBUTES) {
|
31
|
+
if ((<Element>node)._attributes[attribute]) {
|
32
|
+
(<HTMLCollection<IHTMLElement, IHTMLElement>>parentElement.children)._removeNamedItem(
|
33
|
+
<IHTMLElement>node,
|
34
|
+
(<Element>node)._attributes[attribute].value
|
35
|
+
);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
(<IHTMLElement>node.parentNode).children.splice(index, 1);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
for (const attribute of NAMED_ITEM_ATTRIBUTES) {
|
43
|
+
if ((<Element>node)._attributes[attribute]) {
|
44
|
+
(<HTMLCollection<IHTMLElement, IHTMLElement>>parentElement.children)._appendNamedItem(
|
45
|
+
<IHTMLElement>node,
|
46
|
+
(<Element>node)._attributes[attribute].value
|
47
|
+
);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
parentElement.children.push(<IElement>node);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Handles removing a child element from the "children" property.
|
57
|
+
*
|
58
|
+
* @param parentElement Parent element.
|
59
|
+
* @param node Node.
|
60
|
+
*/
|
61
|
+
public static removeChild(
|
62
|
+
parentElement: IElement | IDocument | IDocumentFragment,
|
63
|
+
node: INode
|
64
|
+
): void {
|
65
|
+
if (node.nodeType === NodeTypeEnum.elementNode) {
|
66
|
+
const index = parentElement.children.indexOf(<IElement>node);
|
67
|
+
if (index !== -1) {
|
68
|
+
for (const attribute of NAMED_ITEM_ATTRIBUTES) {
|
69
|
+
if ((<Element>node)._attributes[attribute]) {
|
70
|
+
(<HTMLCollection<IHTMLElement, IHTMLElement>>parentElement.children)._removeNamedItem(
|
71
|
+
<IHTMLElement>node,
|
72
|
+
(<Element>node)._attributes[attribute].value
|
73
|
+
);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
parentElement.children.splice(index, 1);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
/**
|
82
|
+
*
|
83
|
+
* Handles inserting a child element to the "children" property.
|
84
|
+
*
|
85
|
+
* @param parentElement Parent element.
|
86
|
+
* @param newNode
|
87
|
+
* @param referenceNode
|
88
|
+
*/
|
89
|
+
public static insertBefore(
|
90
|
+
parentElement: IElement | IDocument | IDocumentFragment,
|
91
|
+
newNode: INode,
|
92
|
+
referenceNode: INode | null
|
93
|
+
): void {
|
94
|
+
if (newNode.nodeType === NodeTypeEnum.elementNode) {
|
95
|
+
if (newNode.parentNode && (<IHTMLElement>newNode.parentNode).children) {
|
96
|
+
const index = (<IHTMLElement>newNode.parentNode).children.indexOf(<IHTMLElement>newNode);
|
97
|
+
if (index !== -1) {
|
98
|
+
for (const attribute of NAMED_ITEM_ATTRIBUTES) {
|
99
|
+
if ((<Element>newNode)._attributes[attribute]) {
|
100
|
+
(<HTMLCollection<IHTMLElement, IHTMLElement>>parentElement.children)._removeNamedItem(
|
101
|
+
<IHTMLElement>newNode,
|
102
|
+
(<Element>newNode)._attributes[attribute].value
|
103
|
+
);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
if (referenceNode) {
|
110
|
+
if (referenceNode.nodeType === NodeTypeEnum.elementNode) {
|
111
|
+
const index = parentElement.children.indexOf(<IElement>referenceNode);
|
112
|
+
if (index !== -1) {
|
113
|
+
parentElement.children.splice(index, 0, <IElement>newNode);
|
114
|
+
}
|
115
|
+
} else {
|
116
|
+
for (const node of parentElement.childNodes) {
|
117
|
+
if (node === referenceNode) {
|
118
|
+
parentElement.children.push(<IElement>newNode);
|
119
|
+
}
|
120
|
+
if (node.nodeType === NodeTypeEnum.elementNode) {
|
121
|
+
parentElement.children.push(<IElement>node);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
for (const attribute of NAMED_ITEM_ATTRIBUTES) {
|
127
|
+
if ((<Element>newNode)._attributes[attribute]) {
|
128
|
+
(<HTMLCollection<IHTMLElement, IHTMLElement>>parentElement.children)._appendNamedItem(
|
129
|
+
<IHTMLElement>newNode,
|
130
|
+
(<Element>newNode)._attributes[attribute].value
|
131
|
+
);
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}
|