UNPKG

@glimmer/node

Version:
3 lines (2 loc) 2.14 kB
import{DOMTreeConstruction as e,ConcreteBounds as t,NewElementBuilder as n}from"@glimmer/runtime";import s from"@simple-dom/document";class l extends e{constructor(e){super(e||s())}setupUselessElement(){}insertHTMLBefore(e,n,s){let l=this.document.createRawHTMLSection(s);return e.insertBefore(l,n),new t(e,l,l)}createElement(e){return this.document.createElement(e)}setAttribute(e,t,n){e.setAttribute(t,n)}}const r=new WeakMap;class i extends n{serializeBlockDepth=0;__openBlock(){let{tagName:e}=this.element;if("TITLE"!==e&&"SCRIPT"!==e&&"STYLE"!==e){let e=this.serializeBlockDepth++;this.__appendComment(`%+b:${e}%`)}super.__openBlock()}__closeBlock(){let{tagName:e}=this.element;if(super.__closeBlock(),"TITLE"!==e&&"SCRIPT"!==e&&"STYLE"!==e){let e=--this.serializeBlockDepth;this.__appendComment(`%-b:${e}%`)}}__appendHTML(e){let{tagName:n}=this.element;if("TITLE"===n||"SCRIPT"===n||"STYLE"===n)return super.__appendHTML(e);let s=this.__appendComment("%glmr%");if("TABLE"===n){let t=e.indexOf("<");if(t>-1){"tr"===e.slice(t+1,t+3)&&(e=`<tbody>${e}</tbody>`)}}""===e?this.__appendComment("% %"):super.__appendHTML(e);let l=this.__appendComment("%glmr%");return new t(this.element,s,l)}__appendText(e){let{tagName:t}=this.element,n=function(e){let{element:t,nextSibling:n}=e;return null===n?t.lastChild:n.previousSibling}(this);return"TITLE"===t||"SCRIPT"===t||"STYLE"===t?super.__appendText(e):""===e?this.__appendComment("% %"):(n&&3===n.nodeType&&this.__appendComment("%|%"),super.__appendText(e))}closeElement(){return r.has(this.element)&&(r.delete(this.element),super.closeElement()),super.closeElement()}openElement(e){return"tr"===e&&"TBODY"!==this.element.tagName&&"THEAD"!==this.element.tagName&&"TFOOT"!==this.element.tagName&&(this.openElement("tbody"),r.set(this.constructing,!0),this.flushElement(null)),super.openElement(e)}pushRemoteElement(e,t,n=null){let{dom:s}=this,l=s.createElement("script");return l.setAttribute("glmr",t),s.insertBefore(e,l,n),super.pushRemoteElement(e,t,n)}}function m(e,t){return i.forInitialRender(e,t)}export{l as NodeDOMTreeConstruction,m as serializeBuilder}; //# sourceMappingURL=index.js.map