UNPKG

angular-xml-editor

Version:
1 lines 64.1 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("@angular/core"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("angular-xml-editor",["exports","rxjs","@angular/core","@angular/common","@angular/forms"],t):t(e["angular-xml-editor"]={},e.rxjs,e.ng.core,e.ng.common,e.ng.forms)}(this,function(e,t,o,r,n){"use strict";var s=function(){function e(){this.actualCursorPosChanged$=new t.Subject,this.inputSelectionChanged$=new t.Subject}return e.prototype.setActualCursorPos=function(e){this.actualCursorPosChanged$.next(e)},e.prototype.setInputSelection=function(e){this.inputSelectionChanged$.next(e)},e.prototype.ngOnDestroy=function(){this.actualCursorPosChanged$.complete(),this.inputSelectionChanged$.complete()},e}(),c=function(){function o(){}return o.IsTextOrCommentNode=function(e){switch(e.nodeType){case Node.TEXT_NODE:case Node.COMMENT_NODE:return!0;default:return!1}},o.GetNodeDebugContext=function(e){if(null===e||e===undefined)return"NULL";if(e.nodeType===Node.TEXT_NODE)return" "===e.textContent||e.textContent===String.fromCharCode(160)?"TextContent!Parent="+o.GetNodeDebugContext(e.parentNode):"TextContent='"+e.textContent+"'";var t=e;return t===undefined?"localName: "+e.nodeName+", nodeType:"+e.nodeType:t.outerHTML},o}(),i=function(){function s(e){this.rules=e}return s.prototype.writeAllXmlAttributesToHtml=function(e,t){for(var o=e.attributes,r=0;r<o.length;++r){var n=o[r];this.writeAttributeToHtml(t,n.name,n.value)}},s.prototype.writeAttributeToHtml=function(e,t,o){var r=""+s.DataAttribPraefix+t;o&&0<o.length?e.setAttribute(r,o):e.removeAttribute(r),this.updateAttributesDescriptionInHtmlElement(e)},s.prototype.getAttributeValueFromHtml=function(e,t){for(var o=e.attributes,r=0;r<o.length;++r)if(o[r].name===""+s.DataAttribPraefix+t)return o[r].value;return undefined},s.prototype.writeAllHtmlAttributesToXml=function(e,t){for(var o=e.attributes,r=0;r<o.length;++r){var n=o[r];n.name.startsWith(s.DataAttribPraefix)&&t.setAttribute(n.name.substr(s.DataAttribPraefix.length),n.value)}},s.prototype.updateAttributesDescriptionInHtmlElement=function(e){for(var t=e.attributes,o="",r=0;r<t.length;++r){var n=t[r];n.name.startsWith(s.DataAttribPraefix)&&(o=o+" "+n.name.substr(s.DataAttribPraefix.length)+'="'+n.value+'"')}0<o.length?e.setAttribute("data-attributes",o):e.removeAttribute("data-attributes")},s.DataAttribPraefix="data-attribute-",s}(),m=function(){function l(e){this.rules=e,this.attributeWorker=new i(e)}return l.getTagNameFromNode=function(e){var t="";if(e&&(t=e.getAttribute(l.DataTagName)),t===undefined||null===t||""===t)throw new Error("node has no DataTagName attribute "+c.GetNodeDebugContext(e));return t},l.isFloatingElement=function(e){var t=e;return!(!t||!t.classList)&&t.classList.contains(l.FloatingTagClassName)},l.isNoClosingElement=function(e){var t=e;return!(!t||!t.classList)&&t.classList.contains(l.NoClosingTagClassName)},l.prototype.ToHtml=function(e){if(""===e||e===undefined||null===e)return"";e=(e=(e=(e=(e=e.replace(/\n/g,"")).replace(/\r/g,"")).replace(/[\t]+\</g,"<")).replace(/\>[\t]+\</g,"><")).replace(/\>[\t]+$/g,">");var t=(new DOMParser).parseFromString(e,"text/xml"),o=new Document;if(null===t.documentElement)return"";var r=this.GetHtmlElementFromXmlElement(t.documentElement,o);if(r&&r.nodeType===Node.ELEMENT_NODE)return r.outerHTML;throw new Error("root node "+c.GetNodeDebugContext(r)+" is no element")},l.prototype.createNewElementHtml=function(e){return this.createNewElementByName(e.tagName).outerHTML},l.prototype.createNewElementByName=function(e){var t=(new Document).createElement("div"),o=this.rules.ruleElements.get(e);return o&&!0===o.floating&&t.classList.add(l.FloatingTagClassName),o&&!0===o.empty&&t.classList.add(l.NoClosingTagClassName),t.setAttribute(l.DataTagName,e),t},l.prototype.GetHtmlElementFromXmlElement=function(e,t){switch(e.nodeType){case Node.ELEMENT_NODE:var o=e,r=o.nodeName,n=t.createElement("div"),s=this.rules.ruleElements.get(r);s&&s.floating&&n.classList.add(l.FloatingTagClassName),s&&s.empty&&n.classList.add(l.NoClosingTagClassName),n.setAttribute(l.DataTagName,r);var i=o.childNodes;if(0===i.length)n.appendChild(t.createTextNode(""));else for(var a=0;a<i.length;++a){var d=this.GetHtmlElementFromXmlElement(i[a],t);d!==undefined&&n.appendChild(d)}return this.attributeWorker.writeAllXmlAttributesToHtml(o,n),n;case Node.TEXT_NODE:var u=e.textContent;return 0<u.length?t.createTextNode(u):undefined;case Node.COMMENT_NODE:return(n=t.createElement("div")).classList.add(l.CommentTagClassName),n.setAttribute(l.DataTagName,"comment"),n.textContent=e.textContent,n;case Node.PROCESSING_INSTRUCTION_NODE:return console.warn('nodeType "PROCESSING_INSTRUCTION_NODE" '+c.GetNodeDebugContext(e)+" not implemented yet"),undefined;case Node.DOCUMENT_NODE:case Node.DOCUMENT_TYPE_NODE:throw new Error('nodeType "Node.DOCUMENT_NODE" '+c.GetNodeDebugContext(e)+" not implemented yet");case Node.DOCUMENT_FRAGMENT_NODE:throw new Error('nodeType "Node.DOCUMENT_FRAGMENT_NODE" '+c.GetNodeDebugContext(e)+" not implemented yet");case Node.ATTRIBUTE_NODE:throw new Error('nodeType "Node.ATTRIBUTE_NODE" '+c.GetNodeDebugContext(e)+" is depreached");case Node.CDATA_SECTION_NODE:throw new Error('nodeType "Node.CDATA_SECTION_NODE" '+c.GetNodeDebugContext(e)+" is depreached");case Node.ENTITY_REFERENCE_NODE:throw new Error('nodeType "Node.ENTITY_REFERENCE_NODE" '+c.GetNodeDebugContext(e)+" is depreached");case Node.ENTITY_NODE:throw new Error('nodeType "Node.ENTITY_NODE" '+c.GetNodeDebugContext(e)+" is depreached");case Node.NOTATION_NODE:throw new Error('nodeType "Node.NOTATION_NODE" '+c.GetNodeDebugContext(e)+" is depreached");default:throw new Error("unknown xmlElement nodeType "+e.nodeType+" in value: "+c.GetNodeDebugContext(e))}},l.DataTagName="data-tagname",l.NoClosingTagClassName="xmlTagNoClosing",l.FloatingTagClassName="floating",l.CommentTagClassName="comment",l}(),l=function(){function c(){}return c.IsDummyNode=function(e){var t=e;return!(!t||e.nodeType!==Node.ELEMENT_NODE)&&t.classList.contains(c.DummyNodeClassName)},c.IsBeforeFirstTagDummyNode=function(e){if(c.IsDummyNode(e)){var t=e;return!(!t||e.nodeType!==Node.ELEMENT_NODE)&&t.classList.contains(c.DummyNodeBeforeFirstTagClassName)}return!1},c.getPreviousSibling=function(e){if(!e)return undefined;for(;e;)if((e=e.previousSibling)&&!c.IsDummyNode(e))return e;return undefined},c.getNextSibling=function(e){if(!e)return undefined;for(;e;)if((e=e.nextSibling)&&!c.IsDummyNode(e))return e;return undefined},c.getChildNodeCount=function(e){if(!e)return 0;for(var t=0,o=0;o<e.childNodes.length;o++)c.IsDummyNode(e.childNodes[o])||t++;return t},c.getFirstChild=function(e){if(!e)return undefined;for(var t=e.firstChild;c.IsDummyNode(t);)t=t.nextSibling;return t},c.getLastChild=function(e){if(!e)return undefined;for(var t=e.lastChild;c.IsDummyNode(t);)t=t.previousSibling;return t},c.prototype.RemoveAllDummyNodes=function(t,o){var r=this;void 0===o&&(o=0);for(var e=[],n=0;n<t.childNodes.length;++n)e.push(t.childNodes[n]);e.forEach(function(e){c.IsDummyNode(e)&&t.removeChild(e)}),e=[];for(n=0;n<t.childNodes.length;++n)e.push(t.childNodes[n]);e.forEach(function(e){r.RemoveAllDummyNodes(e,o+1)})},c.prototype.UpdateDummyNodes=function(e,t){var o=this;void 0===t&&(t=0);for(var r=e.ownerDocument,n=e,s=[],i=0;i<e.childNodes.length;++i)s.push(e.childNodes[i]);if(n&&!c.IsDummyNode(n)&&!c.IsDummyNode(n.parentElement)){if(n.nodeType===Node.TEXT_NODE){var a=n.previousSibling;a.nodeType===Node.TEXT_NODE||c.IsDummyNode(a)||n.parentNode.insertBefore(this.createDummyNode(r),n)}if(n.nodeType===Node.ELEMENT_NODE){var d=e.firstChild;if(d||(e.appendChild(this.createDummyNode(r)),d=e.firstChild),m.isNoClosingElement(e));else{(d=e.firstChild)||(e.appendChild(this.createDummyNode(r)),d=e.firstChild),c.IsDummyNode(d)||(d?(e.insertBefore(this.createDummyNode(r),d),d=e.firstChild):e.appendChild(this.createDummyNode(r)));var u=e.lastChild;if(c.IsDummyNode(u)||(e.appendChild(this.createDummyNode(r)),u=e.lastChild),0<t&&c.IsDummyNode(d)&&!c.IsBeforeFirstTagDummyNode(d)){var l=this.createDummyNode(r);l.classList.add(c.DummyNodeBeforeFirstTagClassName),n.insertBefore(l,d)}}}}s.forEach(function(e){o.UpdateDummyNodes(e,t+1)})},c.prototype.createDummyNode=function(e,t){var o,r=e.createElement("span");return o=t===undefined?e.createTextNode(c.DummyNodeContent):e.createTextNode(t),r.classList.add(c.DummyNodeClassName),r.appendChild(o),r},c.DummyNodeClassName="dummyNode",c.DummyNodeBeforeFirstTagClassName="beforefirstTag",c.DummyNodeContent=String.fromCharCode(160),c}(),a=function(){function t(){this.ActualNode=null,this.PosAtNode=f.CursorOnCompleteNode,this.PosInTextnode=0}return t.getXmlCursorPositionDebugName=function(e){switch(e){case f.CursorOnCompleteNode:return"CursorOnCompleteNode";case f.CursorBehindNode:return"CursorBehindNode";case f.CursorInEmptyNode:return"CursorInEmptyNode";case f.CursorInsideTextNode:return"CursorInsideTextNode";case f.CursorInFrontOfNode:return"CursorInFrontOfNode";default:return"unknown cursorPos "+e}},t.getSelectionForPos=function(e){if(l.IsDummyNode(e.ActualNode))throw new Error("XmlCursorPos.getSelectionForPos: pos.AktNode "+e.getDebugDescription()+" is a dummy node!");if(l.IsDummyNode(e.ActualNode.parentElement))throw new Error("XmlCursorPos.getSelectionForPos: pos.AktNode.parentElement "+e.getDebugDescription()+" is a dummy node!");switch(e.PosAtNode){case f.CursorOnCompleteNode:var t=e.ActualNode.firstChild;return l.IsBeforeFirstTagDummyNode(t)?{node:t.firstChild,offset:0}:{node:e.ActualNode,offset:0};case f.CursorInFrontOfNode:if(e.ActualNode.nodeType===Node.TEXT_NODE){var o=e.ActualNode.previousSibling;if(l.IsDummyNode(o))return{node:o.firstChild,offset:1};throw new Error("XMLCursorPositions.CursorInFrontOfNode (1):text node: is no dummy node: "+e.getDebugDescription())}if(t=e.ActualNode.firstChild,l.IsBeforeFirstTagDummyNode(t))return{node:t.firstChild,offset:1};if(m.isNoClosingElement(e.ActualNode)&&l.IsDummyNode(t))return{node:t.firstChild,offset:1};throw new Error("XMLCursorPositions.CursorInFrontOfNode (1):no text node: dont know what to do! ");case f.CursorBehindNode:var r=e.ActualNode.nextSibling;if(l.IsDummyNode(r))return{node:r.firstChild,offset:0};throw new Error("XMLCursorPositionen.CursorBehindNode should only be set, when the element has no next sibling.");case f.CursorInEmptyNode:var n=e.ActualNode.lastChild;if(!l.IsDummyNode(t)&&!l.IsBeforeFirstTagDummyNode(t))return{node:n.firstChild,offset:0};break;case f.CursorInsideTextNode:return{node:e.ActualNode,offset:e.PosInTextnode}}throw new Error("showCursor.getSelectionForPos unknown CursorPos "+e.getDebugDescription())},t.prototype.clone=function(){var e=new t;return e.SetCursor(this.ActualNode,this.PosAtNode,this.PosInTextnode),e},t.prototype.equals=function(e){return!!e&&(e.ActualNode===this.ActualNode&&(e.PosAtNode===this.PosAtNode&&(this.PosAtNode!==f.CursorInsideTextNode||this.PosInTextnode===e.PosInTextnode)))},t.prototype.getDebugDescription=function(){return"node:"+c.GetNodeDebugContext(this.ActualNode)+", pos:"+t.getXmlCursorPositionDebugName(this.PosAtNode)+", posInText:"+this.PosInTextnode},t.prototype.SetCursor=function(e,t,o){if(void 0===o&&(o=0),!e)throw new Error("actualNode is null");e!==this.ActualNode||t!==this.PosAtNode||this.PosInTextnode,this.ActualNode=e,this.PosAtNode=t,this.PosInTextnode=o},t.prototype.setCursorBehindNodeForDefaultOrRightMovement=function(e){var t=l.getNextSibling(e);t?this.SetCursor(t,f.CursorInFrontOfNode):this.SetCursor(e,f.CursorBehindNode)},t.prototype.setCursorpBehindNodeForLeftMovement=function(e){c.IsTextOrCommentNode(e)?this.SetCursor(e,f.CursorInsideTextNode,Math.max(0,e.textContent.length-1)):0===l.getChildNodeCount(e)?m.isNoClosingElement(e)?this.SetCursor(e,f.CursorInFrontOfNode):this.SetCursor(e,f.CursorInEmptyNode):this.SetCursor(l.getLastChild(e),f.CursorBehindNode)},t}(),f={CursorInFrontOfNode:0,CursorOnCompleteNode:1,CursorInEmptyNode:2,CursorInsideTextNode:3,CursorBehindNode:4};f[f.CursorInFrontOfNode]="CursorInFrontOfNode",f[f.CursorOnCompleteNode]="CursorOnCompleteNode",f[f.CursorInEmptyNode]="CursorInEmptyNode",f[f.CursorInsideTextNode]="CursorInsideTextNode",f[f.CursorBehindNode]="CursorBehindNode";var d=function(){function e(){}return e.moveLeft=function(e,t,o){if(e===undefined)return!1;switch(e.PosAtNode){case f.CursorOnCompleteNode:e.SetCursor(e.ActualNode,f.CursorInFrontOfNode);break;case f.CursorInFrontOfNode:if(e.ActualNode===t)return!1;var r=l.getPreviousSibling(e.ActualNode);r?e.setCursorpBehindNodeForLeftMovement(r):e.SetCursor(e.ActualNode.parentNode,f.CursorInFrontOfNode);break;case f.CursorBehindNode:e.setCursorpBehindNodeForLeftMovement(e.ActualNode);break;case f.CursorInEmptyNode:e.SetCursor(e.ActualNode,f.CursorInFrontOfNode);break;case f.CursorInsideTextNode:if(!c.IsTextOrCommentNode(e.ActualNode)){var n=e.ActualNode;throw new Error("XMLCursorPos.MoveLeft: CursorPos is XMLCursorPositionen.CursorInnerhalbDesTextNodes,\n but no text node has been chosen, but the node "+(n?n.outerHTML:""))}1<e.PosInTextnode?e.SetCursor(e.ActualNode,e.PosAtNode,e.PosInTextnode-1):e.SetCursor(e.ActualNode,f.CursorInFrontOfNode);break;default:throw new Error("XMLCursorPos.MoveLeft: unknown CursorPos "+e.PosAtNode)}return!0},e.moveRight=function(e,t,o){if(e===undefined)return!1;switch(e.PosAtNode){case f.CursorOnCompleteNode:var r=m.getTagNameFromNode(e.ActualNode),n=o.ruleElements.get(r);if(n&&!0===n.empty)e.setCursorBehindNodeForDefaultOrRightMovement(e.ActualNode);else(a=l.getFirstChild(e.ActualNode))?e.SetCursor(a,f.CursorInFrontOfNode):e.SetCursor(e.ActualNode,f.CursorInEmptyNode);break;case f.CursorBehindNode:if(l.getNextSibling(e.ActualNode)){var s=e.ActualNode;throw new Error("XMLCursorPos.MoveRight: cursor behind node should only be set, when no other siblings are following "+(s?s.outerHTML:""))}var i=l.getNextSibling(e.ActualNode.parentElement);i?e.SetCursor(i,f.CursorInFrontOfNode):e.SetCursor(e.ActualNode.parentElement,f.CursorBehindNode);break;case f.CursorInEmptyNode:e.setCursorBehindNodeForDefaultOrRightMovement(e.ActualNode);break;case f.CursorInFrontOfNode:if(c.IsTextOrCommentNode(e.ActualNode))1<e.ActualNode.textContent.length?e.SetCursor(e.ActualNode,f.CursorInsideTextNode,1):(e.SetCursor(e.ActualNode,f.CursorBehindNode),this.moveRight(e,t,o));else if(0===l.getChildNodeCount(e.ActualNode))m.isNoClosingElement(e.ActualNode)?e.setCursorBehindNodeForDefaultOrRightMovement(e.ActualNode):e.SetCursor(e.ActualNode,f.CursorInEmptyNode);else{var a=l.getFirstChild(e.ActualNode);e.SetCursor(a,f.CursorInFrontOfNode)}break;case f.CursorInsideTextNode:if(!c.IsTextOrCommentNode(e.ActualNode)){s=e.ActualNode;throw new Error("XMLCursorPos.MoveRight: CursorPos is XMLCursorPositionen.CursorInnerhalbDesTextNodes, \n but no text node has been chosen, but the node "+(s?s.outerHTML:""))}e.ActualNode.textContent.length>e.PosInTextnode+1?e.SetCursor(e.ActualNode,e.PosAtNode,e.PosInTextnode+1):e.setCursorBehindNodeForDefaultOrRightMovement(e.ActualNode);break;default:throw new Error('String.Format("XMLCursorPos.MoveRight: unknown CursorPos '+e.PosAtNode)}return!0},e}(),u=function(){function e(){this.xmlDocumentRootNode=undefined,this.domDummyNodeManager=new l,this.StartPos=new a,this.EndPos=new a}return e.prototype.isEmptySelection=function(){return!!this.StartPos.equals(this.EndPos)},e.prototype.sortStartAndEnd=function(){this.StartPos.ActualNode&&this.EndPos.ActualNode&&(this.StartPos.ActualNode.isSameNode(this.EndPos.ActualNode)?this.StartPos.PosAtNode===f.CursorInsideTextNode&&this.EndPos.PosAtNode===f.CursorInsideTextNode&&this.StartPos.PosInTextnode>this.EndPos.PosInTextnode&&this.swapStartAndEnd():this.StartPos.ActualNode.compareDocumentPosition(this.EndPos.ActualNode)&Node.DOCUMENT_POSITION_FOLLOWING||this.swapStartAndEnd())},e.prototype.swapStartAndEnd=function(){var e=this.StartPos.ActualNode,t=this.StartPos.PosAtNode,o=this.StartPos.PosInTextnode;this.StartPos.SetCursor(this.EndPos.ActualNode,this.EndPos.PosAtNode,this.EndPos.PosInTextnode),this.EndPos.SetCursor(e,t,o)},e.prototype.show=function(){if(!window.getSelection)throw new Error('showCursor: unable to get "window.getSelection"');var e=window.getSelection();this.show2(e)},e.prototype.show2=function(e){if(e){var t=document.querySelectorAll(".selected");[].forEach.call(t,function(e){e.classList.remove("selected")});var o=a.getSelectionForPos(this.StartPos);if(this.EndPos&&this.EndPos.ActualNode&&!this.EndPos.equals(this.StartPos)){var r=a.getSelectionForPos(this.EndPos);e.setBaseAndExtent(o.node,o.offset,r.node,r.offset)}else if(e.setPosition(o.node,o.offset),this.StartPos.PosAtNode===f.CursorOnCompleteNode){var n=this.StartPos.ActualNode;n&&n.classList?(n.classList.add("selected"),console.log("selected!")):console.error("no asElem.classList for select! "+c.GetNodeDebugContext(n))}}},e}(),p=function(){function e(){}return e.setFromSelection=function(e,t,o,r){if(void 0===r&&(r=null),t!==undefined&&null!==t){var n=t;if(l.IsDummyNode(t.parentElement)){if(n=t.parentElement,l.IsBeforeFirstTagDummyNode(n))switch(o){case 0:return r&&r.setInputSelection("(1) cursor here: #<tag> pos 0"),void e.SetCursor(n.parentElement,f.CursorOnCompleteNode,0);case 1:return r&&r.setInputSelection("(2) cursor here: #<tag> pos 1"),void e.SetCursor(n.parentElement,f.CursorInFrontOfNode,0);default:throw new Error("selectionAnchorOffset="+o+"?!?")}if(2===n.parentElement.childNodes.length)return r&&r.setInputSelection("(13, 14) cursor here: <tag>#</tag>"),void e.SetCursor(n.parentElement,f.CursorInEmptyNode,0);if(n===n.parentElement.lastChild&&1===o)return r&&r.setInputSelection("(8, 12) cursor here: #</tag>, selecting complete node"),void e.SetCursor(n.parentElement,f.CursorOnCompleteNode,0);var s=n.nextSibling;if(s)return r&&r.setInputSelection("(3, 4, 9, 10) cursor here: #Text or here #<tag>"),void e.SetCursor(s,f.CursorInFrontOfNode,0);var i=n.previousSibling;if(i)return r&&r.setInputSelection("(7, 11) cursor here: Text# or here <tag>#"),void e.SetCursor(i,f.CursorBehindNode,0)}else if(t.nodeType===Node.TEXT_NODE){if(0===o)return r&&r.setInputSelection("(6) cursor here: #Text"),void e.SetCursor(t,f.CursorInsideTextNode,0);if(o===t.textContent.length)return r&&r.setInputSelection("(7 Alternative) cursor here: Text#"),void e.SetCursor(t,f.CursorInsideTextNode,t.textContent.length);if(r&&r.setInputSelection("(5) cursor here: Text#Text"),o>t.textContent.length)throw new Error("selectionAnchorOffset "+o+" is > than text-lenght "+t.textContent.length+" of text '"+t.textContent+"' ");return void e.SetCursor(t,f.CursorInsideTextNode,o)}}console.error("found no suiting cursor interpretation! For selectionAnchorNode="+c.GetNodeDebugContext(t)+", selectionAnchorOffset="+o)},e}(),h=function(){function e(){}return e.cleanUp=function(e,t){this.concatTextNodes(e,t)},e.concatTextNodes=function(e,t,o){void 0===o&&(o=0);for(var r=!0;!0===r;){r=!1;for(var n=0;n<e.childNodes.length;++n){var s=e.childNodes[n];if(l.IsDummyNode(s))throw new Error("Dummynodes have to be removed before using XmlDomCleaner!");if(s.nodeType===Node.TEXT_NODE){var i=s.nextSibling;null!==i&&i.nodeType===Node.TEXT_NODE&&(t.StartPos.ActualNode===i&&t.StartPos.SetCursor(s,f.CursorInsideTextNode,s.textContent.length+t.StartPos.PosInTextnode),t.EndPos.ActualNode===i&&t.EndPos.SetCursor(s,f.CursorInsideTextNode,s.textContent.length+t.EndPos.PosInTextnode),s.textContent=s.textContent+i.textContent,e.removeChild(i),r=!0)}}}for(n=0;n<e.childNodes.length;++n)this.concatTextNodes(e.childNodes[n],t,o+1)},e}(),N=function(){function s(){}return s.deleteSelection=function(e,t,o){return!0},s.deleteAfter=function(e,t,o){if(e===undefined)return!1;switch(e.PosAtNode){case f.CursorOnCompleteNode:return s.deleteBefore(e,t,o);case f.CursorBehindNode:case f.CursorInFrontOfNode:return d.moveRight(e,t,o),s.deleteBefore(e,t,o);case f.CursorInEmptyNode:return s.deleteBefore(e,t,o);case f.CursorInsideTextNode:return d.moveRight(e,t,o),s.deleteBefore(e,t,o);default:throw new Error('String.Format("XmlCursorEdit.deleteBefore: unknown CursorPos '+e.PosAtNode)}return!0},s.deleteBefore=function(e,t,o){var r;if(e===undefined)return!1;switch(e.PosAtNode){case f.CursorOnCompleteNode:r=e.ActualNode,d.moveRight(e,t,o),r.parentElement.removeChild(r);break;case f.CursorBehindNode:if(e.ActualNode.nodeType===Node.TEXT_NODE)return e.SetCursor(e.ActualNode,f.CursorInsideTextNode,e.ActualNode.textContent.length),s.deleteBefore(e,t,o);e.ActualNode.parentElement.removeChild(e.ActualNode);break;case f.CursorInEmptyNode:r=e.ActualNode,d.moveRight(e,t,o),r.parentElement.removeChild(r);break;case f.CursorInFrontOfNode:if((r=l.getPreviousSibling(e.ActualNode))||(r=e.ActualNode.parentElement),r){if(r.nodeType===Node.TEXT_NODE)return e.SetCursor(r,f.CursorInsideTextNode,r.textContent.length),s.deleteBefore(e,t,o);r.parentElement.removeChild(r)}break;case f.CursorInsideTextNode:if(0===e.PosInTextnode)return e.SetCursor(e.ActualNode,f.CursorInFrontOfNode,0),s.deleteBefore(e,t,o);var n=e.ActualNode.textContent;n=n.substring(0,e.PosInTextnode-1)+n.substr(e.PosInTextnode,e.ActualNode.textContent.length),e.ActualNode.textContent=n,d.moveLeft(e,t,o);break;default:throw new Error('String.Format("XmlEdit.deleteBefore: unknown CursorPos '+e.PosAtNode)}return!0},s}(),g=function(){function e(e){this.xsdNodes=e,this.namespacePraefix="xs:"}return e.prototype.isTextAllowedAtThisCursorPos=function(e){if(!e)return!1;var t=this.getRelevantParentNodeForCursorPos(e),o=m.getTagNameFromNode(t),r=this.xsdNodes.get(o);return!!r&&this.isTextAllowedInThisElement(r)},e.prototype.getRelevantParentNodeForCursorPos=function(e){if(e){var t=e.ActualNode;switch(t.nodeType){case Node.COMMENT_NODE:case Node.TEXT_NODE:t=t.parentElement;break;case Node.ELEMENT_NODE:switch(e.PosAtNode){case f.CursorInEmptyNode:case f.CursorInsideTextNode:break;case f.CursorBehindNode:case f.CursorInFrontOfNode:case f.CursorOnCompleteNode:t=t.parentElement;break;default:throw new Error('unhandled cursorPosToCheck.PosAmNode "'+e.PosAtNode+'"/'+a.getXmlCursorPositionDebugName(e.PosAtNode)+'" ')}break;default:throw new Error('unhandled parentNode.nodeType "'+t.nodeType+'"')}return t}},e.prototype.isTextAllowedInThisElement=function(e,n){var t,s=this;if(void 0===n&&(n=new Set),e.nodeType===Node.ELEMENT_NODE){var o=e;if(o){if(o.getAttribute("mixed"))return!0;var r=o.getAttribute("type");if(r&&r===this.namespacePraefix+"string")return!0;if("element"===o.localName){if((t=o.getAttribute("name"))&&n.has(t))return!1;n.add(t)}}}var i=Array.prototype.slice.call(e.childNodes),a=!1;return i.forEach(function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e;if(t)switch(t.localName){case"complexType":case"sequence":case"choice":case"simpleContent":case"extension":if(!0!==s.isTextAllowedInThisElement(e,n))break;a=!0;break;case"element":var o=t.attributes.getNamedItem("ref");if(o){var r=s.xsdNodes.get(o.value);if(!r)throw new Error(' refered element "'+o+'" for element "'+t.outerHTML+'" not found');if(!0===s.isTextAllowedInThisElement(r,n)){a=!0;break}}break;case"attribute":break;default:alert('unknown childElem.localname "'+t.localName+'"/'+t.outerHTML)}}}),a},e}(),C=function(){function u(){}return u.replaceWithText=function(e,t,o,r,n){return e!==undefined&&(""!==t&&t!==undefined&&null!=t&&((!1!==e.isEmptySelection()||!1!==N.deleteSelection(e,o,r))&&u.insertText(e.EndPos,t,o,r,n)))},u.insertText=function(e,t,o,r,n){if(e===undefined)return!1;if(""===t||t===undefined||null==t)return!1;switch(e.PosAtNode){case f.CursorOnCompleteNode:var s=u.isTextAllowedInParentNode(e,n);if(!0!==s)return!1;var i=e.ActualNode.ownerDocument.createTextNode(t);e.ActualNode.parentElement.insertBefore(i,e.ActualNode),e.ActualNode.parentElement.removeChild(e.ActualNode);var a=l.getNextSibling(i);return a?e.SetCursor(a,f.CursorInFrontOfNode):e.SetCursor(i,f.CursorBehindNode),!0;case f.CursorBehindNode:if(e.ActualNode.nodeType===Node.TEXT_NODE)return e.ActualNode.textContent=e.ActualNode.textContent+t,!0;if(!0!==(s=u.isTextAllowedInParentNode(e,n)))return!1;i=e.ActualNode.ownerDocument.createTextNode(t);return e.ActualNode.parentElement.insertBefore(i,e.ActualNode.nextSibling),!0;case f.CursorInFrontOfNode:if(e.ActualNode.nodeType===Node.TEXT_NODE)return e.ActualNode.textContent=t+e.ActualNode.textContent,!0;if(!0!==(s=u.isTextAllowedInParentNode(e,n)))return!1;i=e.ActualNode.ownerDocument.createTextNode(t);return e.ActualNode.parentElement.insertBefore(i,e.ActualNode),!0;case f.CursorInEmptyNode:if(!0!==(s=new g(n.xsdNodes).isTextAllowedAtThisCursorPos(e)))return!1;i=e.ActualNode.ownerDocument.createTextNode(t);return e.ActualNode.appendChild(i),!0;case f.CursorInsideTextNode:var d=e.ActualNode.textContent;e.ActualNode.textContent=d.substr(0,e.PosInTextnode)+t+d.substr(e.PosInTextnode,d.length),e.SetCursor(e.ActualNode,f.CursorInsideTextNode,e.PosInTextnode+1);break;default:throw new Error('String.Format("XmlEditInsert.insert: unknown CursorPos '+e.getDebugDescription())}return!0},u.isTextAllowedInParentNode=function(e,t){var o=e.ActualNode.parentElement,r=e.clone();return r.SetCursor(o,f.CursorInEmptyNode),new g(t.xsdNodes).isTextAllowedAtThisCursorPos(r)},u}(),b=function(){function e(e){this._document=e,this.actualCursor=new u,this.dummyNodeManager=new l,this.actualCursorChanged=new t.Subject,this.debugService=new s}return e.prototype.ngOnDestroy=function(){this.actualCursorChanged.unsubscribe()},e.prototype.setCursorPos=function(e){this.actualCursor=e,this.actualCursorChanged.next(e),this.debugService.setActualCursorPos(e)},e.prototype.mouseUp=function(e){if(!window.getSelection)throw new Error("can't get window.getSelection, target="+JSON.stringify(e.target));var t;t=window.getSelection(),p.setFromSelection(this.actualCursor.StartPos,t.anchorNode,t.anchorOffset,this.debugService),p.setFromSelection(this.actualCursor.EndPos,t.focusNode,t.focusOffset,this.debugService),this.setCursorPos(this.actualCursor),this.actualCursor.sortStartAndEnd(),this.actualCursor.show()},e.prototype.keyDown=function(e){switch(console.log("keydown! key:"+e.key+" / code:"+e.code),e.key){case"Control":this.keyCtrlIsDown=!0;break;case"Shift":this.keyShiftIsDown=!0;break;case"c":if(this.keyCtrlIsDown)return!1;if(this.insertText("c"))return!1;break;case"ArrowUp":case"ArrowDown":return!0;case"ArrowRight":return this.keyShiftIsDown?d.moveRight(this.actualCursor.EndPos,this.actualCursor.xmlDocumentRootNode,this.config.rules):(d.moveRight(this.actualCursor.EndPos,this.actualCursor.xmlDocumentRootNode,this.config.rules),this.actualCursor.StartPos.SetCursor(this.actualCursor.EndPos.ActualNode,this.actualCursor.EndPos.PosAtNode,this.actualCursor.EndPos.PosInTextnode)),this.actualCursor.sortStartAndEnd(),this.actualCursor.show(),this.setCursorPos(this.actualCursor),!1;case"ArrowLeft":return this.keyShiftIsDown?d.moveLeft(this.actualCursor.EndPos,this.actualCursor.xmlDocumentRootNode,this.config.rules):(d.moveLeft(this.actualCursor.StartPos,this.actualCursor.xmlDocumentRootNode,this.config.rules),this.actualCursor.EndPos.SetCursor(this.actualCursor.StartPos.ActualNode,this.actualCursor.StartPos.PosAtNode,this.actualCursor.StartPos.PosInTextnode)),this.actualCursor.sortStartAndEnd(),this.actualCursor.show(),this.setCursorPos(this.actualCursor),!1;case"Backspace":return this.actualCursor.isEmptySelection()?N.deleteBefore(this.actualCursor.StartPos,this.actualCursor.xmlDocumentRootNode,this.config.rules):N.deleteSelection(this.actualCursor,this.actualCursor.xmlDocumentRootNode,this.config.rules),this.actualCursor.EndPos.SetCursor(this.actualCursor.StartPos.ActualNode,this.actualCursor.StartPos.PosAtNode,this.actualCursor.StartPos.PosInTextnode),this.cleanUpAndUpdateDummyElements(),this.actualCursor.show(),!1;case"Delete":return this.actualCursor.isEmptySelection()?N.deleteAfter(this.actualCursor.StartPos,this.actualCursor.xmlDocumentRootNode,this.config.rules):N.deleteSelection(this.actualCursor,this.actualCursor.xmlDocumentRootNode,this.config.rules),this.cleanUpAndUpdateDummyElements(),this.actualCursor.show(),!1;case"Enter":return!1;default:var t=e.key;if(this.insertText(t))return!1}return!0},e.prototype.keyUp=function(e){switch(e.key){case"Control":this.keyCtrlIsDown=!1;break;case"Shift":this.actualCursor.sortStartAndEnd(),this.keyShiftIsDown=!1;break;case"ArrowLeft":case"ArrowRight":this.actualCursor.show()}return!0},e.prototype.pasted=function(e){return alert("pasted: "+e),!1},e.prototype.copied=function(){return alert("copied"),!1},e.prototype.insertText=function(e){if(""===e||null===e||e===undefined)return!0;return(this.actualCursor.isEmptySelection()?C.insertText(this.actualCursor.EndPos,e,this.actualCursor.xmlDocumentRootNode,this.config.rules,this.config.xmlSchema):C.replaceWithText(this.actualCursor,e,this.actualCursor.xmlDocumentRootNode,this.config.rules,this.config.xmlSchema))?(this.actualCursor.StartPos.SetCursor(this.actualCursor.EndPos.ActualNode,this.actualCursor.EndPos.PosAtNode,this.actualCursor.EndPos.PosInTextnode),this.cleanUpAndUpdateDummyElements(),this.actualCursor.show(),console.warn("text inserted!"),!0):(console.warn("text NOT inserted!"),!1)},e.prototype.insertElement=function(e){var t=new m(this.config.rules).createNewElementHtml(e);this.domInsertHtml(t),this.cleanUpAndUpdateDummyElements(),console.warn("element inserted!")},e.prototype.domInsertHtml=function(e){if(!document.getSelection)throw new Error("document.getSelection not defined!");var t=document.getSelection().getRangeAt(0);t.insertNode(t.createContextualFragment(e)),this.cleanUpAndUpdateDummyElements(),this.actualCursor.show()},e.prototype.saveSelection=function(){if(window.getSelection){var e=window.getSelection();e.getRangeAt&&e.rangeCount&&(this.savedSelection=e.getRangeAt(0),this.selectedText=e.toString())}else this._document.getSelection&&this._document.createRange?this.savedSelection=document.createRange():this.savedSelection=null},e.prototype.restoreSelection=function(){if(!this.savedSelection)return!1;if(window.getSelection){var e=window.getSelection();return e.removeAllRanges(),e.addRange(this.savedSelection),!0}return!!this._document.getSelection||void 0},e.prototype.cleanUpAndUpdateDummyElements=function(){this.dummyNodeManager.RemoveAllDummyNodes(this.actualCursor.xmlDocumentRootNode),h.cleanUp(this.actualCursor.xmlDocumentRootNode,this.actualCursor),this.dummyNodeManager.UpdateDummyNodes(this.actualCursor.xmlDocumentRootNode),this.actualCursor.sortStartAndEnd()},e}(),x=function(){function e(e){this._document=e,this.contexts=new Map}return e.prototype.getNewEditorContextId=function(){for(var e=0;this.contexts.has(e.toString());)e++;return e.toString()},e.prototype.getEditorContext=function(e){var t=this.contexts.get(e);return t===undefined&&(t=new b(this._document),this.contexts.set(e,t)),t},e.prototype.disposeEditorContext=function(e){this.contexts["delete"](e)},e.decorators=[{type:o.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:Document,decorators:[{type:o.Inject,args:[r.DOCUMENT]}]}]},e.ngInjectableDef=o.defineInjectable({factory:function(){return new e(o.inject(r.DOCUMENT))},token:e,providedIn:"root"}),e}(),y=function(){function e(e){this.rules=e,this.attributeWorker=new i(e)}return e.prototype.ToXml=function(e){if(""===e)return"";var t=this.CleanUpHtmlBeforeConvert2Xml(e),o=(new DOMParser).parseFromString(t,"text/xml"),r=new Document;if(null===o.documentElement)return"";var n=this.GetXmlElementFromHtmlElement(o.documentElement,r);if(n&&n.nodeType===Node.ELEMENT_NODE)return n.outerHTML;throw new Error("root node "+c.GetNodeDebugContext(n)+" is no element")},e.prototype.CleanUpHtmlBeforeConvert2Xml=function(e){var t=(new DOMParser).parseFromString(e,"text/html");return(new l).RemoveAllDummyNodes(t.documentElement),t.body.innerHTML},e.prototype.GetXmlElementFromHtmlElement=function(e,t){switch(e.nodeType){case Node.ELEMENT_NODE:var o=e,r=m.getTagNameFromNode(e);if(!r||""===r)throw new Error("no tagname in "+c.GetNodeDebugContext(e));var n=t.createElement(r),s=o.childNodes;if(0!==s.length||o.classList.contains(m.NoClosingTagClassName))for(var i=0;i<s.length;++i){var a=this.GetXmlElementFromHtmlElement(s[i],t);a!==undefined&&n.appendChild(a)}else n.appendChild(t.createTextNode(""));return this.attributeWorker.writeAllHtmlAttributesToXml(o,n),n;case Node.TEXT_NODE:var d=e.textContent;return 0<d.length?t.createTextNode(d):undefined;default:throw new Error("unknown html element nodeType "+e.nodeType+" in value: "+c.GetNodeDebugContext(e))}},e}(),E=function(){function e(e,t){this._renderer=e,this.editorService=t,this.isDebugMode=!1,this.valueChange=new o.EventEmitter,this.domDummyNodeManager=new l}return Object.defineProperty(e.prototype,"config",{get:function(){return this.editorContext!==undefined&&this.editorContext.config!==undefined?this.editorContext&&this.editorContext.config:undefined},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"editorContextId",{set:function(e){e&&(this.editorContext=this.editorService.getEditorContext(e))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"debugMode",{set:function(e){this.isDebugMode=e},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(){},e.prototype.ngOnDestroy=function(){},e.prototype.onLostFocus=function(){this.editorContext.saveSelection(),"function"==typeof this.onTouchedFunction&&this.onTouchedFunction()},e.prototype.onGotFocus=function(){this.editorContext.restoreSelection(),this.textArea.nativeElement.focus()},e.prototype.clicked=function(){},e.prototype.mousedown=function(){},e.prototype.mouseup=function(e){return this.editorContext.mouseUp(e)},e.prototype.pasted=function(e){return this.editorContext.pasted(e)},e.prototype.copied=function(){return this.editorContext.copied()},e.prototype.keyDown=function(e){return this.editorContext.keyDown(e)},e.prototype.keyUp=function(e){return this.editorContext.keyUp(e)},e.prototype.showXml=function(e){if(this.textArea&&this.editorContext&&this.editorContext.config&&this.editorContext.config.rules){if(e===undefined)return;var t=new m(this.editorContext.config.rules).ToHtml(e),o=null===e?"":t;this._renderer.setProperty(this.textArea.nativeElement,"innerHTML",o)}},e.prototype.registerOnChange=function(e){this.onChangeFunction=e},e.prototype.registerOnTouched=function(e){this.onTouchedFunction=e},e.prototype.writeValue=function(e){if(this.editorContext&&this.editorContext.config)if(null!==e&&e!==undefined&&""!==e||(e=undefined),this.showXml(e),e===undefined)this.editorContext.actualCursor.xmlDocumentRootNode=undefined;else{var t=this.textArea.nativeElement.firstChild;this.editorContext.actualCursor.xmlDocumentRootNode=t,this.editorContext.actualCursor.StartPos.SetCursor(this.editorContext.actualCursor.xmlDocumentRootNode,f.CursorOnCompleteNode),this.domDummyNodeManager.UpdateDummyNodes(this.editorContext.actualCursor.xmlDocumentRootNode)}},e.prototype.onContentChange=function(e){if("function"==typeof this.onChangeFunction){var t=new y(this.editorContext.config.rules).ToXml(e),o=null===t?"":t;this.onChangeFunction(o)}},e.prototype.setDisabledState=function(e){var t=this.textArea.nativeElement,o=e?"addClass":"removeClass";this._renderer[o](t,"disabled")},e.decorators=[{type:o.Component,args:[{selector:"axed-editor",template:'<div\r\n *ngIf="config"\r\n #editor\r\n class="axed axed-textarea showtags debugOff"\r\n (focus)="onGotFocus()"\r\n [attr.contenteditable]="true"\r\n [style.height]="config.height"\r\n [style.width]="config.width"\r\n (input)="onContentChange($event.target.innerHTML)"\r\n (blur)="onLostFocus()"\r\n (click)="clicked()"\r\n (mousedown)="mousedown()"\r\n (mouseup)="mouseup($event)"\r\n (keyup)="keyUp($event)"\r\n (keydown)="keyDown($event)"\r\n (copy)="copied()"\r\n (paste)="pasted($event.clipboardData.getData(\'text/plain\'))"\r\n></div>\r\n',encapsulation:o.ViewEncapsulation.None,providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return e}),multi:!0}],styles:["a{cursor:pointer}.axed-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical;outline:0;--font-size:15px;--topBottomTagPadding:2px;--tagIndent:20px;font-size:var(--font-size);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}.axed-textarea.showtags{line-height:calc(var(--font-size) + (var(--topBottomTagPadding) * 2) + 10px)}.axed-textarea.showtags div::after,.axed-textarea.showtags div::before{background:orange;white-space:pre-wrap;border:1px solid #778899}.axed-textarea.showtags div::after,.axed-textarea.showtags div:not(.xmlTagNoClosing)::before{content:\" \" attr(data-tagname) \" \";padding:var(--topBottomTagPadding) 0 var(--topBottomTagPadding);margin:0 2px 2px}.axed-textarea.showtags div:not(.xmlTagNoClosing)::after{content:\" \" attr(data-tagname);padding-right:7px;border-radius:10px 0 0 10px}.axed-textarea.showtags div:not(.xmlTagNoClosing)::before{border-radius:0 10px 10px 0}.axed-textarea.showtags div[data-attributes].xmlTagNoClosing:not([data-attributes=''])::after,.axed-textarea.showtags div[data-attributes]:not([data-attributes='']):not(.xmlTagNoClosing)::before{content:\" \" attr(data-tagname) \" \" attr(data-attributes) \" \"}.axed-textarea.showtags div.comment::after,.axed-textarea.showtags div.comment::before{content:' ' 'comment' ' ';background-color:#d3d3d3}.axed-textarea div div:not(.floating){margin-left:var(--tagIndent)}.tagElement>.dummyNode.parent{color:red}div.floating{display:inline}span.dummyNode.beforefirstTag{float:left;width:0}.axed-textarea.debug span.dummyNode{background-color:red;width:inherit}.axed-textarea.debug span.dummyNode.beforefirstTag{background-color:violet;width:inherit}.axed-textarea.showtags div.selected,.axed-textarea.showtags div.selected::after,.axed-textarea.showtags div.selected::before{background:#add8e6!important;color:#fff}[data-tagname=parsererror],[data-tagname=parsererror] div,[data-tagname=parsererror] div ::after,[data-tagname=parsererror] div::before,[data-tagname=parsererror]::after,[data-tagname=parsererror]::before{background:red!important;color:#fff!important;font-weight:700!important;font-size:20px!important;line-height:32px!important}.angular-editor{position:relative}.angular-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868e96;opacity:1}.angular-editor .axed-wrapper{position:relative}.angular-editor .axed-wrapper .axed-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;z-index:2;position:relative}.angular-editor .axed-wrapper .axed-textarea.focus,.angular-editor .axed-wrapper .axed-textarea:focus{outline:0}.angular-editor .axed-wrapper .axed-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor .axed-wrapper ::ng-deep p{margin-bottom:0}.angular-editor .axed-wrapper .axed-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;z-index:1;color:#6c757d;opacity:.75}.angular-editor .axed-wrapper.show-placeholder .angular-editor-placeholder{display:block}.angular-editor .axed-wrapper.disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.axed-attribute-editor-toolbar{min-height:100px;font:100 .8rem/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;padding:15px;border:1px solid #ddd;margin:0}.axed-attribute-editor-toolbar input,.axed-attribute-editor-toolbar select{width:100%}"]}]}],e.ctorParameters=function(){return[{type:o.Renderer2},{type:x}]},e.propDecorators={config:[{type:o.Input,args:["config"]}],editorContextId:[{type:o.Input,args:["editorContextId"]}],debugMode:[{type:o.Input,args:["debugMode"]}],textArea:[{type:o.ViewChild,args:["editor"]}],editorWrapper:[{type:o.ViewChild,args:["editorWrapper"]}],valueChange:[{type:o.Output}]},e}(),v=function(){function e(e){Object.assign(this,e)}return e.Sorted=function(e){return e.sort(function(e,t){return e.tagName>t.tagName?1:e.tagName<t.tagName?-1:0})},e}(),w=function(){function e(e){this.xsdNodes=e}return e.prototype.ElementsAllowedAtThisCursorPos=function(e){if(!e)return[];var t=this.getRelevantParentNodeForCursorPos(e),o=m.getTagNameFromNode(t),r=this.xsdNodes.get(o);return r?this.getSubElementNames(r,[]):[]},e.prototype.getRelevantParentNodeForCursorPos=function(e){if(e){var t=e.ActualNode;switch(t.nodeType){case Node.COMMENT_NODE:case Node.TEXT_NODE:t=t.parentElement;break;case Node.ELEMENT_NODE:switch(e.PosAtNode){case f.CursorInEmptyNode:case f.CursorInsideTextNode:break;case f.CursorBehindNode:case f.CursorInFrontOfNode:case f.CursorOnCompleteNode:t=t.parentElement;break;default:throw new Error('unhandled cursorPosToCheck.PosAmNode "'+e.PosAtNode+'"/'+a.getXmlCursorPositionDebugName(e.PosAtNode)+'" ')}break;default:throw new Error('unhandled parentNode.nodeType "'+t.nodeType+'"')}return t}},e.prototype.getSubElementNames=function(e,n,s){var i=this;void 0===s&&(s=0);var t,a=[];if(e.nodeType===Node.ELEMENT_NODE){var o=e;o&&"element"===o.localName&&(t=o.getAttribute("name"))}if(t){if(0!==n.length){if(-1!==n.indexOf(t))return a;if(0!==s)return a=a.concat(t)}n.push(t)}var r=Array.prototype.slice.call(e.childNodes);return s++,r.forEach(function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e;if(t)switch(t.localName){case"complexType":case"sequence":case"choice":case"simpleContent":case"extension":a=a.concat(i.getSubElementNames(e,n,s));break;case"element":var o=t.attributes.getNamedItem("ref");if(o){var r=i.xsdNodes.get(o.value);if(!r)throw new Error(' refered element "'+o+'" for element "'+t.outerHTML+'" not found');a=a.concat(i.getSubElementNames(r,n,s))}else a=a.concat(i.getSubElementNames(e,n,s));break;case"attribute":break;default:throw new Error('unknown childElem.localname "'+t.localName+'"/'+t.outerHTML)}}}),a},e}(),T=function(){function e(e){this.editorService=e,this.elementGroups=[]}return Object.defineProperty(e.prototype,"config",{get:function(){return this.editorContext!==undefined&&this.editorContext.config!==undefined?this.editorContext&&this.editorContext.config:undefined},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"editorContextId",{set:function(e){var t=this;e&&(this.editorContext=this.editorService.getEditorContext(e),this.actualCursorPosChangedSubscription=this.editorContext.actualCursorChanged.subscribe(function(e){t.elementGroups=t.GetElementGroupsForCursorPos(e.StartPos)}))},enumerable:!0,configurable:!0}),e.prototype.insertElement=function(e){var t=new m(this.editorContext.config.rules).createNewElementHtml(e);this.editorContext.domInsertHtml(t)},e.prototype.ngAfterViewInit=function(){},e.prototype.ngOnChanges=function(){},e.prototype.ngOnDestroy=function(){this.actualCursorPosChangedSubscription.unsubscribe()},e.prototype.GetElementGroupsForCursorPos=function(e){var t=new w(this.editorContext.config.xmlSchema.xsdNodes).ElementsAllowedAtThisCursorPos(e);return this.GetAllElementGroups().map(function(e){return{title:e.title,elements:e.elements.filter(function(e){return t.includes(e.tagName)})}}).filter(function(e){return 0<e.elements.length})},e.prototype.GetAllElementGroups=function(){var o=this,e={title:"other",elements:v.Sorted(Array.from(this.editorContext.config.rules.ruleElements.values()).filter(function(t){return o.editorContext.config.elementGroups.some(function(e){return!e.elementNames.includes(t.tagName)})}))};return this.editorContext.config.elementGroups.map(function(e){return{title:e.title,elements:v.Sorted(e.elementNames.map(function(e){return o.editorContext.config.rules.ruleElements.get(e)}).filter(function(e){return e!==undefined}))}}).concat(e).filter(function(e){return 0!==e.elements.length})},e.decorators=[{type:o.Component,args:[{selector:"axed-toolbar",template:'<div class="sws-xml-editor-toolbar">\r\n <h3>Insert element</h3>\r\n\r\n \x3c!--\r\n <div class="sws-xml-editor-toolbar-set">\r\n <button type="button" title="Undo" class="sws-xml-editor-button" (click)="triggerCommand(\'undo\')"><i class=\'fa fa-undo\'></i></button>\r\n <button type="button" title="Redo" class="sws-xml-editor-button" (click)="triggerCommand(\'redo\')"><i class=\'fa fa-repeat\'></i></button>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <button [id]="\'bold-\'+id" type="button" title="Bold" class="sws-xml-editor-button" (click)="triggerCommand(\'bold\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-bold\'></i></button>\r\n <button [id]="\'italic-\'+id" type="button" title="Italic" class="sws-xml-editor-button" (click)="triggerCommand(\'italic\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-italic\'></i></button>\r\n <button [id]="\'underline-\'+id" type="button" title="Underline" class="sws-xml-editor-button" (click)="triggerCommand(\'underline\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-underline\'></i></button>\r\n <button [id]="\'strikeThrough-\'+id" type="button" title="Strikethrough" class="sws-xml-editor-button" (click)="triggerCommand(\'strikeThrough\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-strikethrough\'></i></button>\r\n <button [id]="\'subscript-\'+id" type="button" title="Subscript" class="sws-xml-editor-button" (click)="triggerCommand(\'subscript\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-subscript\'></i></button>\r\n <button [id]="\'superscript-\'+id" type="button" title="Superscript" class="sws-xml-editor-button" (click)="triggerCommand(\'superscript\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-superscript\'></i></button>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <button [id]="\'justifyLeft-\'+id" type="button" title="Justify Left" class="sws-xml-editor-button" (click)="triggerCommand(\'justifyLeft\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-align-left\'></i></button>\r\n <button [id]="\'justifyCenter-\'+id" type="button" title="Justify Center" class="angular-editor-button" (click)="triggerCommand(\'justifyCenter\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-align-center\'></i></button>\r\n <button [id]="\'justifyRight-\'+id" type="button" title="Justify Right" class="sws-xml-editor-button" (click)="triggerCommand(\'justifyRight\')"\r\n [disabled]="htmlMode">\r\n <i class=\'fa fa-align-right\'></i></button>\r\n <button [id]="\'justifyFull-\'+id" type="button" title="Justify Full" class="sws-xml-editor-button" (click)="triggerCommand(\'justifyFull\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-align-justify\'></i></button>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <button [id]="\'indent-\'+id" type="button" title="Indent" class="sws-xml-editor-button" (click)="triggerCommand(\'indent\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-indent\'></i></button>\r\n <button [id]="\'outdent-\'+id" type="button" title="Outdent" class="sws-xml-editor-button" (click)="triggerCommand(\'outdent\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-outdent\'></i></button>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <button [id]="\'insertUnorderedList-\'+id" type="button" title="Unordered List" class="sws-xml-editor-button" (click)="triggerCommand(\'insertUnorderedList\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-list-ul\'></i></button>\r\n <button [id]="\'insertOrderedList-\'+id" type="button" title="Ordered List" class="sws-xml-editor-button" (click)="triggerCommand(\'insertOrderedList\')"\r\n [disabled]="htmlMode"><i class=\'fa fa-list-ol\'></i></button>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <label [for]="\'heading-\'+id" class="block-label"></label>\r\n <select title="Formatting" [id]="\'heading-\'+id" class="select-heading" [(ngModel)]="block" (change)="triggerCommand(block)"\r\n [disabled]="htmlMode">\r\n <optgroup label="Formatting"></optgroup>\r\n <option class="h1" value="h1">Heading 1</option>\r\n <option class="h2" value="h2">Heading 2</option>\r\n <option class="h3" value="h3">Heading 3</option>\r\n <option class="h4" value="h4">Heading 4</option>\r\n <option class="h5" value="h5">Heading 5</option>\r\n <option class="h6" value="h6">Heading 6</option>\r\n <option class="p" value="p">Paragraph</option>\r\n <option class="pre" value="pre">Predefined</option>\r\n <option class="div" value="div">Standard</option>\r\n <option class="default" value="default">Default</option>\r\n </select>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <label [for]="\'fontSelector-\'+id" class="block-label"></label>\r\n <select title="Font Name" [id]="\'fontSelector-\'+id" class="select-font" [(ngModel)]="fontName" (change)="setFontName(fontName)"\r\n [disabled]="htmlMode">\r\n <optgroup label="Font Name"></optgroup>\r\n <option class="arial" value="Arial">Arial</option>\r\n <option class="calibri" value="Calibri">Calibri</option>\r\n <option class="comic-sans-ms" value="Comic Sans MS">Comic Sans MS</option>\r\n <option class="times-new-roman" value="Times New Roman">Times New Roman</option>\r\n </select>\r\n </div>\r\n <div class="sws-xml-editor-toolbar-set">\r\n <label [for]="\'fontSizeSelector-\'+id" class="block-label"></label>\r\n <select title="Font Size" [id]="\'fontSizeSelector-\'+id" class="select-font-size" [(ngModel)]="fontSize" (change)="setFontSize(fontSize)"\r\n [disabled]="htmlMode">\r\n <optgroup label="Font Sizing"></optgroup>\r\n <option class="size1" value="1">1</option>\r\n <option class="size2" value="2">2</option>\r\n <option class="size3" value="3">3</option>\r\n <option class="size4" value="4">4</option>\r