From 6f03d5593deb11f1dda5f485d069e007b91775fb Mon Sep 17 00:00:00 2001 From: SimeonC Date: Tue, 11 Nov 2014 13:04:00 +1300 Subject: [PATCH] feat(textAngular): Name is available on editor scope as `_name` Fixes #394 --- dist/textAngular.min.js | 6 +++--- src/textAngular.js | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dist/textAngular.min.js b/dist/textAngular.min.js index 812c01f9..d3bcf66f 100644 --- a/dist/textAngular.min.js +++ b/dist/textAngular.min.js @@ -2,7 +2,7 @@ @license textAngular Author : Austin Anderson License : 2013 MIT -Version 1.3.0-pre12 +Version 1.3.0-pre13 See README.md or https://github.com/fraywing/textAngular/wiki for requirements and use. */ @@ -10,9 +10,9 @@ angular.module("textAngularSetup",[]).value("taOptions",{toolbar:[["h1","h2","h3 @license textAngular Author : Austin Anderson License : 2013 MIT -Version 1.3.0-pre12 +Version 1.3.0-pre13 See README.md or https://github.com/fraywing/textAngular/wiki for requirements and use. */ -function(){"Use Strict";function a(a){try{return 0!==angular.element(a).length}catch(b){return!1}}function b(a,c){var d=[],e=a.children();return e.length&&angular.forEach(e,function(a){d=d.concat(b(angular.element(a),c))}),void 0!==a.attr(c)&&d.push(a),d}function c(b,c){if(!b||""===b||s.hasOwnProperty(b))throw"textAngular Error: A unique name is required for a Tool Definition";if(c.display&&(""===c.display||!a(c.display))||!c.display&&!c.buttontext&&!c.iconclass)throw'textAngular Error: Tool Definition for "'+b+'" does not have a valid display/iconclass/buttontext value';s[b]=c}var d={ie:function(){for(var a,b=3,c=document.createElement("div"),d=c.getElementsByTagName("i");c.innerHTML="",d[0];);return b>4?b:a}(),webkit:/AppleWebKit\/([\d.]+)/i.test(navigator.userAgent)},e=!1;d.webkit&&(document.addEventListener("mousedown",function(a){var b=a||window.event,c=b.target;if(e&&null!==c){for(var d=!1,f=c;null!==f&&"html"!==f.tagName.toLowerCase()&&!d;)d="true"===f.contentEditable,f=f.parentNode;d||(document.getElementById("textAngular-editableFix-010203040506070809").setSelectionRange(0,0),c.focus(),c.select&&c.select())}e=!1},!1),angular.element(document).ready(function(){angular.element(document.body).append(angular.element(''))}));var f=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video)$/gi,g=/^(ul|li|ol)$/gi,h=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video|li)$/gi;String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});var i,j,k,l,m;if(d.ie>8||void 0===d.ie){for(var n,o=document.styleSheets,p=0;p"),html:angular.element(""),text:angular.element("
"),scrollWindow:angular.element("
"),popover:angular.element('
'),popoverArrow:angular.element('
'),popoverContainer:angular.element('
'),resize:{overlay:angular.element('
'),background:angular.element('
'),anchors:[angular.element('
'),angular.element('
'),angular.element('
'),angular.element('
')],info:angular.element('
')}},l.displayElements.popover.append(l.displayElements.popoverArrow),l.displayElements.popover.append(l.displayElements.popoverContainer),l.displayElements.scrollWindow.append(l.displayElements.popover),l.displayElements.popover.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),l.showPopover=function(a){l.displayElements.popover.css("display","block"),l.reflowPopover(a),i.addClass(l.displayElements.popover,"in"),A(m,"click keyup",function(){l.hidePopover()})},l.reflowPopover=function(a){l.displayElements.text[0].offsetHeight-51>a[0].offsetTop?(l.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),l.displayElements.popover.removeClass("top").addClass("bottom")):(l.displayElements.popover.css("top",a[0].offsetTop-54+"px"),l.displayElements.popover.removeClass("bottom").addClass("top"));var b=l.displayElements.text[0].offsetWidth-l.displayElements.popover[0].offsetWidth,c=a[0].offsetLeft+a[0].offsetWidth/2-l.displayElements.popover[0].offsetWidth/2;l.displayElements.popover.css("left",Math.max(0,Math.min(b,c))+"px"),l.displayElements.popoverArrow.css("margin-left",Math.min(c,Math.max(0,c-b))-11+"px")},l.hidePopover=function(){var a=function(){l.displayElements.popover.css("display",""),l.displayElements.popoverContainer.attr("style",""),l.displayElements.popoverContainer.attr("class","popover-content")};k.when(i.removeClass(l.displayElements.popover,"in",a)).then(a)},l.displayElements.resize.overlay.append(l.displayElements.resize.background),angular.forEach(l.displayElements.resize.anchors,function(a){l.displayElements.resize.overlay.append(a)}),l.displayElements.resize.overlay.append(l.displayElements.resize.info),l.displayElements.scrollWindow.append(l.displayElements.resize.overlay),l.reflowResizeOverlay=function(a){a=angular.element(a)[0],l.displayElements.resize.overlay.css({display:"block",left:a.offsetLeft-5+"px",top:a.offsetTop-5+"px",width:a.offsetWidth+10+"px",height:a.offsetHeight+10+"px"}),l.displayElements.resize.info.text(a.offsetWidth+" x "+a.offsetHeight)},l.showResizeOverlay=function(a){var b=function(b){var c={width:parseInt(a.attr("width")),height:parseInt(a.attr("height")),x:b.clientX,y:b.clientY};void 0===c.width&&(c.width=a[0].offsetWidth),void 0===c.height&&(c.height=a[0].offsetHeight),l.hidePopover();var d=c.height/c.width,e=function(b){var e={x:Math.max(0,c.width+(b.clientX-c.x)),y:Math.max(0,c.height+(b.clientY-c.y))},f=function(a,b){a=angular.element(a),"img"===a[0].tagName.toLowerCase()&&(b.height&&(a.attr("height",b.height),delete b.height),b.width&&(a.attr("width",b.width),delete b.width)),a.css(b)};if(b.shiftKey){var g=e.y/e.x;f(a,{width:d>g?e.x:e.y/d,height:d>g?e.x*d:e.y})}else f(a,{width:e.x,height:e.y});l.reflowResizeOverlay(a)};h.find("body").on("mousemove",e),A(l.displayElements.resize.overlay,"mouseup",function(){h.find("body").off("mousemove",e),l.showPopover(a)}),b.stopPropagation(),b.preventDefault()};l.displayElements.resize.anchors[3].on("mousedown",b),l.reflowResizeOverlay(a),A(m,"click",function(){l.hideResizeOverlay()})},l.hideResizeOverlay=function(){l.displayElements.resize.overlay.css("display","")},l.setup.htmlEditorSetup(l.displayElements.html),l.setup.textEditorSetup(l.displayElements.text),l.displayElements.html.attr({id:"taHtmlElement"+y,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),l.displayElements.text.attr({id:"taTextElement"+y,contentEditable:"true","ta-bind":"ta-bind","ng-model":"html"}),l.displayElements.scrollWindow.attr({"ng-hide":"showHtml"}),n.taDefaultWrap&&l.displayElements.text.attr("ta-default-wrap",n.taDefaultWrap),n.taUnsafeSanitizer&&(l.displayElements.text.attr("ta-unsafe-sanitizer",n.taUnsafeSanitizer),l.displayElements.html.attr("ta-unsafe-sanitizer",n.taUnsafeSanitizer)),l.displayElements.scrollWindow.append(l.displayElements.text),m.append(l.displayElements.scrollWindow),m.append(l.displayElements.html),l.displayElements.forminput.attr("name",z),m.append(l.displayElements.forminput),n.tabindex&&(m.removeAttr("tabindex"),l.displayElements.text.attr("tabindex",n.tabindex),l.displayElements.html.attr("tabindex",n.tabindex)),n.placeholder&&(l.displayElements.text.attr("placeholder",n.placeholder),l.displayElements.html.attr("placeholder",n.placeholder)),n.taDisabled&&(l.displayElements.text.attr("ta-readonly","disabled"),l.displayElements.html.attr("ta-readonly","disabled"),l.disabled=l.$parent.$eval(n.taDisabled),l.$parent.$watch(n.taDisabled,function(a){l.disabled=a,l.disabled?m.addClass(l.classes.disabled):m.removeClass(l.classes.disabled)})),a(l.displayElements.scrollWindow)(l),a(l.displayElements.html)(l),l.updateTaBindtaTextElement=l["updateTaBindtaTextElement"+y],l.updateTaBindtaHtmlElement=l["updateTaBindtaHtmlElement"+y],m.addClass("ta-root"),l.displayElements.scrollWindow.addClass("ta-text ta-editor "+l.classes.textEditor),l.displayElements.html.addClass("ta-html ta-editor "+l.classes.htmlEditor),l._actionRunning=!1;var B=!1;if(l.startAction=function(){return l._actionRunning=!0,B=g.rangy.saveSelection(),function(){B&&g.rangy.restoreSelection(B)}},l.endAction=function(){l._actionRunning=!1,B&&g.rangy.removeMarkers(B),B=!1,l.updateSelectedStyles(),l.showHtml||l["updateTaBindtaTextElement"+y]()},t=function(){m.addClass(l.classes.focussed),w.focus()},l.displayElements.html.on("focus",t),l.displayElements.text.on("focus",t),u=function(a){return l._actionRunning||h[0].activeElement===l.displayElements.html[0]||h[0].activeElement===l.displayElements.text[0]||(m.removeClass(l.classes.focussed),w.unfocus(),b(function(){m.triggerHandler("blur")},0)),a.preventDefault(),!1},l.displayElements.html.on("blur",u),l.displayElements.text.on("blur",u),l.queryFormatBlockState=function(a){return!l.showHtml&&a.toLowerCase()===h[0].queryCommandValue("formatBlock").toLowerCase()},l.queryCommandState=function(a){return l.showHtml?"":h[0].queryCommandState(a)},l.switchView=function(){l.showHtml=!l.showHtml,i.enabled(!1,l.displayElements.html),i.enabled(!1,l.displayElements.text),l.showHtml?b(function(){return i.enabled(!0,l.displayElements.html),i.enabled(!0,l.displayElements.text),l.displayElements.html[0].focus()},100):b(function(){return i.enabled(!0,l.displayElements.html),i.enabled(!0,l.displayElements.text),l.displayElements.text[0].focus()},100)},n.ngModel){var C=!0;o.$render=function(){if(C){C=!1;var a=l.$parent.$eval(n.ngModel);void 0!==a&&null!==a||!v||""===v||o.$setViewValue(v)}l.displayElements.forminput.val(o.$viewValue),l._elementSelectTriggered||h[0].activeElement===l.displayElements.html[0]||h[0].activeElement===l.displayElements.text[0]||(l.html=o.$viewValue||"")};var D=function(a){return n.required&&o.$setValidity("required",!(!a||""===a.trim())),a};o.$parsers.push(D),o.$formatters.push(D)}else l.displayElements.forminput.val(v),l.html=v;if(l.$watch("html",function(a,b){a!==b&&(n.ngModel&&o.$viewValue!==a&&o.$setViewValue(a),l.displayElements.forminput.val(a))}),n.taTargetToolbars)w=f.registerEditor(z,l,n.taTargetToolbars.split(","));else{var E=angular.element('
');n.taToolbar&&E.attr("ta-toolbar",n.taToolbar),n.taToolbarClass&&E.attr("ta-toolbar-class",n.taToolbarClass),n.taToolbarGroupClass&&E.attr("ta-toolbar-group-class",n.taToolbarGroupClass),n.taToolbarButtonClass&&E.attr("ta-toolbar-button-class",n.taToolbarButtonClass),n.taToolbarActiveButtonClass&&E.attr("ta-toolbar-active-button-class",n.taToolbarActiveButtonClass),n.taFocussedClass&&E.attr("ta-focussed-class",n.taFocussedClass),m.prepend(E),a(E)(l.$parent),w=f.registerEditor(z,l,["textAngularToolbar"+y])}l.$on("$destroy",function(){f.unregisterEditor(z)}),l.$on("ta-element-select",function(a,b){w.triggerElementSelect(a,b)&&l["reApplyOnSelectorHandlerstaTextElement"+y]()}),l.$on("ta-drop-event",function(a,c,d,e){l.displayElements.text[0].focus(),e&&e.files&&e.files.length>0?(angular.forEach(e.files,function(a){try{k.when(l.fileDropHandler(a,l.wrapSelection)||l.fileDropHandler!==l.defaultFileDropHandler&&k.when(l.defaultFileDropHandler(a,l.wrapSelection))).then(function(){l["updateTaBindtaTextElement"+y]()})}catch(b){j.error(b)}}),d.preventDefault(),d.stopPropagation()):b(function(){l["updateTaBindtaTextElement"+y]()},0)}),l._bUpdateSelectedStyles=!1,l.updateSelectedStyles=function(){var a;void 0!==(a=d.getSelectionElement())&&a.parentNode!==l.displayElements.text[0]?w.updateSelectedStyles(angular.element(a)):w.updateSelectedStyles(),l._bUpdateSelectedStyles&&b(l.updateSelectedStyles,200)},p=function(){l._bUpdateSelectedStyles||(l._bUpdateSelectedStyles=!0,l.$apply(function(){l.updateSelectedStyles()}))},l.displayElements.html.on("keydown",p),l.displayElements.text.on("keydown",p),q=function(){l._bUpdateSelectedStyles=!1},l.displayElements.html.on("keyup",q),l.displayElements.text.on("keyup",q),r=function(a,b){b&&angular.extend(a,b),l.$apply(function(){return w.sendKeyCommand(a)?(l._bUpdateSelectedStyles||l.updateSelectedStyles(),a.preventDefault(),!1):void 0})},l.displayElements.html.on("keypress",r),l.displayElements.text.on("keypress",r),s=function(){l._bUpdateSelectedStyles=!1,l.$apply(function(){l.updateSelectedStyles()})},l.displayElements.html.on("mouseup",s),l.displayElements.text.on("mouseup",s)}}}]).factory("taBrowserTag",[function(){return function(a){return a?""===a?void 0===d.ie?"div":d.ie<=8?"P":"p":d.ie<=8?a.toUpperCase():a:d.ie<=8?"P":"p"}}]).factory("taExecCommand",["taSelection","taBrowserTag","$document",function(a,b,c){var d=function(b,c){var d,e,f=b.find("li");for(e=f.length-1;e>=0;e--)d=angular.element("<"+c+">"+f[e].innerHTML+""),b.after(d);b.remove(),a.setSelectionToElementEnd(d[0])},e=function(b){/()$/i.test(b.innerHTML.trim())?a.setSelectionBeforeElement(angular.element(b).find("br")[0]):a.setSelectionToElementEnd(b)},h=function(a,b){var c=angular.element("<"+b+">"+a[0].innerHTML+"");a.after(c),a.remove(),e(c.find("li")[0])},i=function(a,c,d){for(var f="",g=0;g"+a[g].innerHTML+"";var h=angular.element("<"+d+">"+f+"");c.after(h),c.remove(),e(h.find("li")[0])};return function(e,j){return e=b(e),function(k,l,m){var n,o,p,q,r,s,t,u=angular.element("<"+e+">");try{t=a.getSelectionElement()}catch(v){}var w=angular.element(t);if(void 0!==t){var x=t.tagName.toLowerCase();if("insertorderedlist"===k.toLowerCase()||"insertunorderedlist"===k.toLowerCase()){var y=b("insertorderedlist"===k.toLowerCase()?"ol":"ul");if(x===y)return d(w,e);if("li"===x&&w.parent()[0].tagName.toLowerCase()===y&&1===w.parent().children().length)return d(w.parent(),e);if("li"===x&&w.parent()[0].tagName.toLowerCase()!==y&&1===w.parent().children().length)return h(w.parent(),y);if(x.match(f)&&!w.hasClass("ta-bind")){if("ol"===x||"ul"===x)return h(w,y);var z=!1;return angular.forEach(w.children(),function(a){a.tagName.match(f)&&(z=!0)}),z?i(w.children(),w,y):i([angular.element("
"+t.innerHTML+"
")[0]],w,y)}if(x.match(f)){if(q=a.getOnlySelectedElements(),0===q.length)o=angular.element("<"+y+">
  • "+t.innerHTML+"
  • "),w.html(""),w.append(o);else{if(1===q.length&&("ol"===q[0].tagName.toLowerCase()||"ul"===q[0].tagName.toLowerCase()))return q[0].tagName.toLowerCase()===y?d(angular.element(q[0]),e):h(angular.element(q[0]),y);p="";var A=[];for(n=0;n"+B[0].innerHTML+"",A.unshift(B)}o=angular.element("<"+y+">"+p+""),A.pop().replaceWith(o),angular.forEach(A,function(a){a.remove()})}return void a.setSelectionToElementEnd(o[0])}}else{if("formatblock"===k.toLowerCase()){for(s=m.toLowerCase().replace(/[<>]/gi,""),"default"===s.trim()&&(s=e,m="<"+e+">"),o="li"===x?w.parent():w;!o[0].tagName||!o[0].tagName.match(f)&&!o.parent().attr("contenteditable");)o=o.parent(),x=(o[0].tagName||"").toLowerCase();if(x===s){q=o.children();var C=!1;for(n=0;n=0;n--)q[n].parentNode&&q[n].parentNode.removeChild(q[n])}else for(n=0;n"),u[0].innerHTML=E[n].outerHTML,E[n]=u[0]),D.parent()[0].insertBefore(E[n],D[0]);D.remove()}return void a.setSelectionToElementEnd(o[0])}if("createlink"===k.toLowerCase()){var F=a.getSelection();if(F.collapsed)return void a.insertHtml(''+m+"",j)}else if("inserthtml"===k.toLowerCase())return void a.insertHtml(m,j)}}try{c[0].execCommand(k,l,m)}catch(v){}}}}]).directive("taBind",["taSanitize","$timeout","$window","$document","taFixChrome","taBrowserTag","taSelection","taSelectableElements","taApplyCustomRenderers","taOptions",function(a,b,c,f,g,i,l,m,n,o){return{require:"ngModel",link:function(i,p,r,s){var t,u,v,w=void 0!==p.attr("contenteditable")&&p.attr("contenteditable"),x=w||"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase(),y=!1,z=!1,A=r.taUnsafeSanitizer||o.disableSanitizer,B=/^(9|19|20|27|33|34|35|36|37|38|39|40|45|112|113|114|115|116|117|118|119|120|121|122|123|144|145)$/i,C=/^(8|13|32|46|59|61|107|109|186|187|188|189|190|191|192|219|220|221|222)$/i,D=/<(a|abbr|acronym|bdi|bdo|big|cite|code|del|dfn|img|ins|kbd|label|map|mark|q|ruby|rp|rt|s|samp|time|tt|var)[^>]*>/i,E=/^<[^>]+>(\s| )*<\/[^>]+>$/gi;void 0===r.taDefaultWrap&&(r.taDefaultWrap="p"),""===r.taDefaultWrap?(u="",v=void 0===d.ie?"

    ":d.ie>=11?"


    ":d.ie<=8?"

     

    ":"

     

    "):(u=void 0===d.ie||d.ie>=11?"<"+r.taDefaultWrap+">
    ":d.ie<=8?"<"+r.taDefaultWrap.toUpperCase()+">":"<"+r.taDefaultWrap+">",v=void 0===d.ie||d.ie>=11?"<"+r.taDefaultWrap+">
    ":d.ie<=8?"<"+r.taDefaultWrap.toUpperCase()+"> ":"<"+r.taDefaultWrap+"> ");var F=function(a){return a=a.trim(),0===a.length||a===v||E.test(a)||!(/>\s*(([^\s<]+)\s*)+]+\s*)+$/i.test(a)||D.test(a))};p.addClass("ta-bind");var G;i["$undoManager"+(r.id||"")]=s.$undoManager={_stack:[],_index:0,_max:1e3,push:function(a){return"undefined"==typeof a||null===a||"undefined"!=typeof this.current()&&null!==this.current()&&a===this.current()?a:(this._indexthis._max&&this._stack.shift(),this._index=this._stack.length-1,a)},undo:function(){return this.setToIndex(this._index-1)},redo:function(){return this.setToIndex(this._index+1)},setToIndex:function(a){return 0>a||a>this._stack.length-1?void 0:(this._index=a,this.current())},current:function(){return this._stack[this._index]}};var H=i["$undoTaBind"+(r.id||"")]=function(){if(!y&&w){var a=s.$undoManager.undo();"undefined"!=typeof a&&null!==a&&(p[0].innerHTML=a,K(a,!1),l.setSelectionToElementEnd(p[0].childNodes.length?p[0].childNodes[p[0].childNodes.length-1]:p[0]))}},I=i["$redoTaBind"+(r.id||"")]=function(){if(!y&&w){var a=s.$undoManager.redo();"undefined"!=typeof a&&null!==a&&(p[0].innerHTML=a,K(a,!1),l.setSelectionToElementEnd(p[0].childNodes.length?p[0].childNodes[p[0].childNodes.length-1]:p[0]))}},J=function(){if(w)return p[0].innerHTML;if(x)return p.val();throw"textAngular Error: attempting to update non-editable taBind"},K=function(a,b){("undefined"==typeof b||null===b)&&(b=!0&&w),("undefined"==typeof a||null===a)&&(a=J()),F(a)?(""!==s.$viewValue&&s.$setViewValue(""),b&&""!==s.$undoManager.current()&&s.$undoManager.push("")):s.$viewValue!==a&&(s.$setViewValue(a),b&&s.$undoManager.push(a))};if(i["updateTaBind"+(r.id||"")]=function(){y||K()},x)if(w){var L=function(a,b,c){p[0].childNodes&&p[0].childNodes.length>0?c(a,b):(that={s:a,_:b,cb:c},that.callself=function(){L(that.s,that._,that.cb)},setTimeout(that.callself,20))},M=function(d,e){if(text=p[0].innerHTML,p[0].innerHTML=d,c.rangy.restoreSelection(e),text.trim().length){if(text.match(/class=["']*Mso(Normal|List)/i)){var f=text.match(/([\s\S]*?)/i);f=f?f[1]:text,f=f.replace(/[\s\S]*?<\/o:p>/gi,"").replace(/class=(["']|)MsoNormal(["']|)/gi,"");var g=angular.element("
    "+f+"
    "),h=angular.element("
    "),i={element:null,lastIndent:[],lastLi:null,isUl:!1};i.lastIndent.peek=function(){var a=this.length;return a>0?this[a-1]:void 0};for(var j=function(a){i.isUl=a,i.element=angular.element(a?"
      ":"
        "),i.lastIndent=[],i.lastIndent.peek=function(){var a=this.length;return a>0?this[a-1]:void 0},i.lastLevelMatch=null},k=0;k<=g[0].childNodes.length;k++)if(g[0].childNodes[k]&&"#text"!==g[0].childNodes[k].nodeName&&"p"===g[0].childNodes[k].tagName.toLowerCase()){var m=angular.element(g[0].childNodes[k]),n=(m.attr("class")||"").match(/MsoList(Bullet|Number|Paragraph)(CxSp(First|Middle|Last)|)/i);if(n){if(m[0].childNodes.length<2||m[0].childNodes[1].childNodes.length<1)continue;var o="bullet"===n[1].toLowerCase()||"number"!==n[1].toLowerCase()&&!(/^[^0-9a-z<]*[0-9a-z]+[^0-9a-z<>]]":"
          "),i.lastLi.append(i.element);else if(null!=i.lastIndent.peek()&&i.lastIndent.peek()>r){for(;null!=i.lastIndent.peek()&&i.lastIndent.peek()>r;)if("li"!==i.element.parent()[0].tagName.toLowerCase()){if(!/[uo]l/i.test(i.element.parent()[0].tagName.toLowerCase()))break;i.element=i.element.parent(),i.lastIndent.pop()}else i.element=i.element.parent();i.isUl="ul"===i.element[0].tagName.toLowerCase(),o!==i.isUl&&(j(o),h.append(i.element))}i.lastLevelMatch=t,r!==i.lastIndent.peek()&&i.lastIndent.push(r),i.lastLi=angular.element("
        1. "),i.element.append(i.lastLi),i.lastLi.html(m.html().replace(/[\s\S]*?/gi,"")),m.remove()}else j(!1),h.append(m)}var u=function(a){a=angular.element(a);for(var b=a[0].childNodes.length-1;b>=0;b--)a.after(a[0].childNodes[b]);a.remove()};angular.forEach(h.find("span"),function(a){a.removeAttribute("lang"),a.attributes.length<=0&&u(a)}),angular.forEach(h.find("font"),u),text=h.html()}text=a(text,"",A),l.insertHtml(text,p[0]),b(function(){s.$setViewValue(J())},0)}};if(p.on("paste",function(a,b){b&&angular.extend(a,b);var d=c.rangy.saveSelection();if(y)return a.stopPropagation(),a.preventDefault(),!1;var e=p[0].innerHTML,f=(a.originalEvent||a).clipboardData;if(f&&f.getData){for(var g="",h=0;h$/i.test(c.innerHTML.trim())&&"blockquote"===c.parentNode.tagName.toLowerCase()&&!c.nextSibling){$selection=angular.element(c);var e=$selection.parent();e.after(d),$selection.remove(),0===e.children().length&&e.remove(),l.setSelectionToElementStart(d[0]),a.preventDefault()}else/^<[^>]+><\/[^>]+>$/i.test(c.innerHTML.trim())&&"blockquote"===c.tagName.toLowerCase()&&($selection=angular.element(c),$selection.after(d),$selection.remove(),l.setSelectionToElementStart(d[0]),a.preventDefault())}}),p.on("keyup",function(a,c){if(c&&angular.extend(a,c),G&&b.cancel(G),!y&&!B.test(a.keyCode)){if(""!==u&&13===a.keyCode&&!a.shiftKey){for(var d=l.getSelectionElement();!d.tagName.match(h)&&d!==p[0];)d=d.parentNode;if(d.tagName.toLowerCase()!==r.taDefaultWrap&&"li"!==d.tagName.toLowerCase()&&(""===d.innerHTML.trim()||"
          "===d.innerHTML.trim())){var e=angular.element(u);angular.element(d).replaceWith(e),l.setSelectionToElementStart(e[0])}}var f=J();""!==u&&""===f.trim()&&(p[0].innerHTML=u,l.setSelectionToElementStart(p.children()[0]));var g=t!==a.keyCode&&C.test(a.keyCode);K(f,g),g||(G=b(function(){s.$undoManager.push(f)},250)),t=a.keyCode}}),p.on("blur",function(){z=!1,y||K(),s.$render()}),r.placeholder&&(d.ie>8||void 0===d.ie)){var N;if(!r.id)throw"textAngular Error: An unique ID is required for placeholders to work";N=j("#"+r.id+".placeholder-text:before",'content: "'+r.placeholder+'"'),i.$on("$destroy",function(){k(N)})}p.on("focus",function(){z=!0,s.$render()}),p.on("mousedown",function(a,b){b&&angular.extend(a,b),a.stopPropagation()})}else p.on("change blur",function(){y||s.$setViewValue(J())});var O=function(b){return s.$oldViewValue=a(g(b),s.$oldViewValue,A)},P=function(a){return r.required&&s.$setValidity("required",!F(a)),a};s.$parsers.push(O),s.$parsers.push(P),s.$formatters.push(O),s.$formatters.push(function(a){if(F(a))return a;var b=angular.element("
          "+a+"
          ");return 0===b.children().length&&(a="<"+r.taDefaultWrap+">"+a+""),a}),s.$formatters.push(P),s.$formatters.push(function(a){return s.$undoManager.push(a||"")});var Q=function(a){return i.$emit("ta-element-select",this),a.preventDefault(),!1},R=function(a,c){if(c&&angular.extend(a,c),!q&&!y){q=!0;var d;d=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,i.$emit("ta-drop-event",this,a,d),b(function(){q=!1,K(),S()},100)}},S=i["reApplyOnSelectorHandlers"+(r.id||"")]=function(){y||angular.forEach(m,function(a){p.find(a).off("click",Q).on("click",Q)})},T=function(a){p[0].innerHTML=a};s.$render=function(){var a=s.$viewValue||"";f[0].activeElement!==p[0]?w?(r.placeholder?""===a?(z?p.removeClass("placeholder-text"):p.addClass("placeholder-text"),T(u)):(p.removeClass("placeholder-text"),T(a)):T(""===a?u:a),y?p.off("drop",R):(S(),p.on("drop",R))):"textarea"!==p[0].tagName.toLowerCase()&&"input"!==p[0].tagName.toLowerCase()?T(n(a)):p.val(a):w&&p.removeClass("placeholder-text")},r.taReadonly&&(y=i.$eval(r.taReadonly),y?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable")):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):w&&p.attr("contenteditable","true")),i.$watch(r.taReadonly,function(a,b){b!==a&&(a?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable"),angular.forEach(m,function(a){p.find(a).on("click",Q)}),p.off("drop",R)):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):w&&p.attr("contenteditable","true"),angular.forEach(m,function(a){p.find(a).off("click",Q)}),p.on("drop",R)),y=a)})),w&&!y&&(angular.forEach(m,function(a){p.find(a).on("click",Q)}),p.on("drop",R),p.on("blur",function(){d.webkit&&(e=!0)}))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(c){var d=angular.element("
          ");return d[0].innerHTML=c,angular.forEach(a,function(a){var c=[];a.selector&&""!==a.selector?c=d.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(c=b(d,a.customAttribute)),angular.forEach(c,function(b){b=angular.element(b),a.selector&&""!==a.selector&&a.customAttribute&&""!==a.customAttribute?void 0!==b.attr(a.customAttribute)&&a.renderLogic(b):a.renderLogic(b)})}),d[0].innerHTML}}]).directive("taMaxText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("
          ");b.html(a);var c=b.text().length;return f>=c?(d.$setValidity("taMaxText",!0),a):void d.$setValidity("taMaxText",!1)}var f=parseInt(a.$eval(c.taMaxText));if(isNaN(f))throw"Max text must be an integer";c.$observe("taMaxText",function(a){if(f=parseInt(a),isNaN(f))throw"Max text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).directive("taMinText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("
          ");b.html(a);var c=b.text().length;return!c||c>=f?(d.$setValidity("taMinText",!0),a):void d.$setValidity("taMinText",!1)}var f=parseInt(a.$eval(c.taMinText));if(isNaN(f))throw"Min text must be an integer";c.$observe("taMinText",function(a){if(f=parseInt(a),isNaN(f))throw"Min text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).factory("taFixChrome",function(){var a=function(a){for(var b=angular.element("
          "+a+"
          "),c=angular.element(b).find("span"),d=0;d0&&"BR"===e.next()[0].tagName&&e.next().remove(),e.replaceWith(e[0].innerHTML))) +function(){"Use Strict";function a(a){try{return 0!==angular.element(a).length}catch(b){return!1}}function b(a,c){var d=[],e=a.children();return e.length&&angular.forEach(e,function(a){d=d.concat(b(angular.element(a),c))}),void 0!==a.attr(c)&&d.push(a),d}function c(b,c){if(!b||""===b||s.hasOwnProperty(b))throw"textAngular Error: A unique name is required for a Tool Definition";if(c.display&&(""===c.display||!a(c.display))||!c.display&&!c.buttontext&&!c.iconclass)throw'textAngular Error: Tool Definition for "'+b+'" does not have a valid display/iconclass/buttontext value';s[b]=c}var d={ie:function(){for(var a,b=3,c=document.createElement("div"),d=c.getElementsByTagName("i");c.innerHTML="",d[0];);return b>4?b:a}(),webkit:/AppleWebKit\/([\d.]+)/i.test(navigator.userAgent)},e=!1;d.webkit&&(document.addEventListener("mousedown",function(a){var b=a||window.event,c=b.target;if(e&&null!==c){for(var d=!1,f=c;null!==f&&"html"!==f.tagName.toLowerCase()&&!d;)d="true"===f.contentEditable,f=f.parentNode;d||(document.getElementById("textAngular-editableFix-010203040506070809").setSelectionRange(0,0),c.focus(),c.select&&c.select())}e=!1},!1),angular.element(document).ready(function(){angular.element(document.body).append(angular.element(''))}));var f=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video)$/gi,g=/^(ul|li|ol)$/gi,h=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video|li)$/gi;String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});var i,j,k,l,m;if(d.ie>8||void 0===d.ie){for(var n,o=document.styleSheets,p=0;p"),html:angular.element(""),text:angular.element("
          "),scrollWindow:angular.element("
          "),popover:angular.element('
          '),popoverArrow:angular.element('
          '),popoverContainer:angular.element('
          '),resize:{overlay:angular.element('
          '),background:angular.element('
          '),anchors:[angular.element('
          '),angular.element('
          '),angular.element('
          '),angular.element('
          ')],info:angular.element('
          ')}},l.displayElements.popover.append(l.displayElements.popoverArrow),l.displayElements.popover.append(l.displayElements.popoverContainer),l.displayElements.scrollWindow.append(l.displayElements.popover),l.displayElements.popover.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),l.showPopover=function(a){l.displayElements.popover.css("display","block"),l.reflowPopover(a),i.addClass(l.displayElements.popover,"in"),z(m,"click keyup",function(){l.hidePopover()})},l.reflowPopover=function(a){l.displayElements.text[0].offsetHeight-51>a[0].offsetTop?(l.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),l.displayElements.popover.removeClass("top").addClass("bottom")):(l.displayElements.popover.css("top",a[0].offsetTop-54+"px"),l.displayElements.popover.removeClass("bottom").addClass("top"));var b=l.displayElements.text[0].offsetWidth-l.displayElements.popover[0].offsetWidth,c=a[0].offsetLeft+a[0].offsetWidth/2-l.displayElements.popover[0].offsetWidth/2;l.displayElements.popover.css("left",Math.max(0,Math.min(b,c))+"px"),l.displayElements.popoverArrow.css("margin-left",Math.min(c,Math.max(0,c-b))-11+"px")},l.hidePopover=function(){var a=function(){l.displayElements.popover.css("display",""),l.displayElements.popoverContainer.attr("style",""),l.displayElements.popoverContainer.attr("class","popover-content")};k.when(i.removeClass(l.displayElements.popover,"in",a)).then(a)},l.displayElements.resize.overlay.append(l.displayElements.resize.background),angular.forEach(l.displayElements.resize.anchors,function(a){l.displayElements.resize.overlay.append(a)}),l.displayElements.resize.overlay.append(l.displayElements.resize.info),l.displayElements.scrollWindow.append(l.displayElements.resize.overlay),l.reflowResizeOverlay=function(a){a=angular.element(a)[0],l.displayElements.resize.overlay.css({display:"block",left:a.offsetLeft-5+"px",top:a.offsetTop-5+"px",width:a.offsetWidth+10+"px",height:a.offsetHeight+10+"px"}),l.displayElements.resize.info.text(a.offsetWidth+" x "+a.offsetHeight)},l.showResizeOverlay=function(a){var b=function(b){var c={width:parseInt(a.attr("width")),height:parseInt(a.attr("height")),x:b.clientX,y:b.clientY};void 0===c.width&&(c.width=a[0].offsetWidth),void 0===c.height&&(c.height=a[0].offsetHeight),l.hidePopover();var d=c.height/c.width,e=function(b){var e={x:Math.max(0,c.width+(b.clientX-c.x)),y:Math.max(0,c.height+(b.clientY-c.y))},f=function(a,b){a=angular.element(a),"img"===a[0].tagName.toLowerCase()&&(b.height&&(a.attr("height",b.height),delete b.height),b.width&&(a.attr("width",b.width),delete b.width)),a.css(b)};if(b.shiftKey){var g=e.y/e.x;f(a,{width:d>g?e.x:e.y/d,height:d>g?e.x*d:e.y})}else f(a,{width:e.x,height:e.y});l.reflowResizeOverlay(a)};h.find("body").on("mousemove",e),z(l.displayElements.resize.overlay,"mouseup",function(){h.find("body").off("mousemove",e),l.showPopover(a)}),b.stopPropagation(),b.preventDefault()};l.displayElements.resize.anchors[3].on("mousedown",b),l.reflowResizeOverlay(a),z(m,"click",function(){l.hideResizeOverlay()})},l.hideResizeOverlay=function(){l.displayElements.resize.overlay.css("display","")},l.setup.htmlEditorSetup(l.displayElements.html),l.setup.textEditorSetup(l.displayElements.text),l.displayElements.html.attr({id:"taHtmlElement"+y,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),l.displayElements.text.attr({id:"taTextElement"+y,contentEditable:"true","ta-bind":"ta-bind","ng-model":"html"}),l.displayElements.scrollWindow.attr({"ng-hide":"showHtml"}),n.taDefaultWrap&&l.displayElements.text.attr("ta-default-wrap",n.taDefaultWrap),n.taUnsafeSanitizer&&(l.displayElements.text.attr("ta-unsafe-sanitizer",n.taUnsafeSanitizer),l.displayElements.html.attr("ta-unsafe-sanitizer",n.taUnsafeSanitizer)),l.displayElements.scrollWindow.append(l.displayElements.text),m.append(l.displayElements.scrollWindow),m.append(l.displayElements.html),l.displayElements.forminput.attr("name",l._name),m.append(l.displayElements.forminput),n.tabindex&&(m.removeAttr("tabindex"),l.displayElements.text.attr("tabindex",n.tabindex),l.displayElements.html.attr("tabindex",n.tabindex)),n.placeholder&&(l.displayElements.text.attr("placeholder",n.placeholder),l.displayElements.html.attr("placeholder",n.placeholder)),n.taDisabled&&(l.displayElements.text.attr("ta-readonly","disabled"),l.displayElements.html.attr("ta-readonly","disabled"),l.disabled=l.$parent.$eval(n.taDisabled),l.$parent.$watch(n.taDisabled,function(a){l.disabled=a,l.disabled?m.addClass(l.classes.disabled):m.removeClass(l.classes.disabled)})),a(l.displayElements.scrollWindow)(l),a(l.displayElements.html)(l),l.updateTaBindtaTextElement=l["updateTaBindtaTextElement"+y],l.updateTaBindtaHtmlElement=l["updateTaBindtaHtmlElement"+y],m.addClass("ta-root"),l.displayElements.scrollWindow.addClass("ta-text ta-editor "+l.classes.textEditor),l.displayElements.html.addClass("ta-html ta-editor "+l.classes.htmlEditor),l._actionRunning=!1;var A=!1;if(l.startAction=function(){return l._actionRunning=!0,A=g.rangy.saveSelection(),function(){A&&g.rangy.restoreSelection(A)}},l.endAction=function(){l._actionRunning=!1,A&&g.rangy.removeMarkers(A),A=!1,l.updateSelectedStyles(),l.showHtml||l["updateTaBindtaTextElement"+y]()},t=function(){m.addClass(l.classes.focussed),w.focus()},l.displayElements.html.on("focus",t),l.displayElements.text.on("focus",t),u=function(a){return l._actionRunning||h[0].activeElement===l.displayElements.html[0]||h[0].activeElement===l.displayElements.text[0]||(m.removeClass(l.classes.focussed),w.unfocus(),b(function(){m.triggerHandler("blur")},0)),a.preventDefault(),!1},l.displayElements.html.on("blur",u),l.displayElements.text.on("blur",u),l.queryFormatBlockState=function(a){return!l.showHtml&&a.toLowerCase()===h[0].queryCommandValue("formatBlock").toLowerCase()},l.queryCommandState=function(a){return l.showHtml?"":h[0].queryCommandState(a)},l.switchView=function(){l.showHtml=!l.showHtml,i.enabled(!1,l.displayElements.html),i.enabled(!1,l.displayElements.text),l.showHtml?b(function(){return i.enabled(!0,l.displayElements.html),i.enabled(!0,l.displayElements.text),l.displayElements.html[0].focus()},100):b(function(){return i.enabled(!0,l.displayElements.html),i.enabled(!0,l.displayElements.text),l.displayElements.text[0].focus()},100)},n.ngModel){var B=!0;o.$render=function(){if(B){B=!1;var a=l.$parent.$eval(n.ngModel);void 0!==a&&null!==a||!v||""===v||o.$setViewValue(v)}l.displayElements.forminput.val(o.$viewValue),l._elementSelectTriggered||h[0].activeElement===l.displayElements.html[0]||h[0].activeElement===l.displayElements.text[0]||(l.html=o.$viewValue||"")};var C=function(a){return n.required&&o.$setValidity("required",!(!a||""===a.trim())),a};o.$parsers.push(C),o.$formatters.push(C)}else l.displayElements.forminput.val(v),l.html=v;if(l.$watch("html",function(a,b){a!==b&&(n.ngModel&&o.$viewValue!==a&&o.$setViewValue(a),l.displayElements.forminput.val(a))}),n.taTargetToolbars)w=f.registerEditor(l._name,l,n.taTargetToolbars.split(","));else{var D=angular.element('
          ');n.taToolbar&&D.attr("ta-toolbar",n.taToolbar),n.taToolbarClass&&D.attr("ta-toolbar-class",n.taToolbarClass),n.taToolbarGroupClass&&D.attr("ta-toolbar-group-class",n.taToolbarGroupClass),n.taToolbarButtonClass&&D.attr("ta-toolbar-button-class",n.taToolbarButtonClass),n.taToolbarActiveButtonClass&&D.attr("ta-toolbar-active-button-class",n.taToolbarActiveButtonClass),n.taFocussedClass&&D.attr("ta-focussed-class",n.taFocussedClass),m.prepend(D),a(D)(l.$parent),w=f.registerEditor(l._name,l,["textAngularToolbar"+y])}l.$on("$destroy",function(){f.unregisterEditor(l._name)}),l.$on("ta-element-select",function(a,b){w.triggerElementSelect(a,b)&&l["reApplyOnSelectorHandlerstaTextElement"+y]()}),l.$on("ta-drop-event",function(a,c,d,e){l.displayElements.text[0].focus(),e&&e.files&&e.files.length>0?(angular.forEach(e.files,function(a){try{k.when(l.fileDropHandler(a,l.wrapSelection)||l.fileDropHandler!==l.defaultFileDropHandler&&k.when(l.defaultFileDropHandler(a,l.wrapSelection))).then(function(){l["updateTaBindtaTextElement"+y]()})}catch(b){j.error(b)}}),d.preventDefault(),d.stopPropagation()):b(function(){l["updateTaBindtaTextElement"+y]()},0)}),l._bUpdateSelectedStyles=!1,l.updateSelectedStyles=function(){var a;void 0!==(a=d.getSelectionElement())&&a.parentNode!==l.displayElements.text[0]?w.updateSelectedStyles(angular.element(a)):w.updateSelectedStyles(),l._bUpdateSelectedStyles&&b(l.updateSelectedStyles,200)},p=function(){l._bUpdateSelectedStyles||(l._bUpdateSelectedStyles=!0,l.$apply(function(){l.updateSelectedStyles()}))},l.displayElements.html.on("keydown",p),l.displayElements.text.on("keydown",p),q=function(){l._bUpdateSelectedStyles=!1},l.displayElements.html.on("keyup",q),l.displayElements.text.on("keyup",q),r=function(a,b){b&&angular.extend(a,b),l.$apply(function(){return w.sendKeyCommand(a)?(l._bUpdateSelectedStyles||l.updateSelectedStyles(),a.preventDefault(),!1):void 0})},l.displayElements.html.on("keypress",r),l.displayElements.text.on("keypress",r),s=function(){l._bUpdateSelectedStyles=!1,l.$apply(function(){l.updateSelectedStyles()})},l.displayElements.html.on("mouseup",s),l.displayElements.text.on("mouseup",s)}}}]).factory("taBrowserTag",[function(){return function(a){return a?""===a?void 0===d.ie?"div":d.ie<=8?"P":"p":d.ie<=8?a.toUpperCase():a:d.ie<=8?"P":"p"}}]).factory("taExecCommand",["taSelection","taBrowserTag","$document",function(a,b,c){var d=function(b,c){var d,e,f=b.find("li");for(e=f.length-1;e>=0;e--)d=angular.element("<"+c+">"+f[e].innerHTML+""),b.after(d);b.remove(),a.setSelectionToElementEnd(d[0])},e=function(b){/()$/i.test(b.innerHTML.trim())?a.setSelectionBeforeElement(angular.element(b).find("br")[0]):a.setSelectionToElementEnd(b)},h=function(a,b){var c=angular.element("<"+b+">"+a[0].innerHTML+"");a.after(c),a.remove(),e(c.find("li")[0])},i=function(a,c,d){for(var f="",g=0;g"+a[g].innerHTML+"";var h=angular.element("<"+d+">"+f+"");c.after(h),c.remove(),e(h.find("li")[0])};return function(e,j){return e=b(e),function(k,l,m){var n,o,p,q,r,s,t,u=angular.element("<"+e+">");try{t=a.getSelectionElement()}catch(v){}var w=angular.element(t);if(void 0!==t){var x=t.tagName.toLowerCase();if("insertorderedlist"===k.toLowerCase()||"insertunorderedlist"===k.toLowerCase()){var y=b("insertorderedlist"===k.toLowerCase()?"ol":"ul");if(x===y)return d(w,e);if("li"===x&&w.parent()[0].tagName.toLowerCase()===y&&1===w.parent().children().length)return d(w.parent(),e);if("li"===x&&w.parent()[0].tagName.toLowerCase()!==y&&1===w.parent().children().length)return h(w.parent(),y);if(x.match(f)&&!w.hasClass("ta-bind")){if("ol"===x||"ul"===x)return h(w,y);var z=!1;return angular.forEach(w.children(),function(a){a.tagName.match(f)&&(z=!0)}),z?i(w.children(),w,y):i([angular.element("
          "+t.innerHTML+"
          ")[0]],w,y)}if(x.match(f)){if(q=a.getOnlySelectedElements(),0===q.length)o=angular.element("<"+y+">
        2. "+t.innerHTML+"
        3. "),w.html(""),w.append(o);else{if(1===q.length&&("ol"===q[0].tagName.toLowerCase()||"ul"===q[0].tagName.toLowerCase()))return q[0].tagName.toLowerCase()===y?d(angular.element(q[0]),e):h(angular.element(q[0]),y);p="";var A=[];for(n=0;n"+B[0].innerHTML+"",A.unshift(B)}o=angular.element("<"+y+">"+p+""),A.pop().replaceWith(o),angular.forEach(A,function(a){a.remove()})}return void a.setSelectionToElementEnd(o[0])}}else{if("formatblock"===k.toLowerCase()){for(s=m.toLowerCase().replace(/[<>]/gi,""),"default"===s.trim()&&(s=e,m="<"+e+">"),o="li"===x?w.parent():w;!o[0].tagName||!o[0].tagName.match(f)&&!o.parent().attr("contenteditable");)o=o.parent(),x=(o[0].tagName||"").toLowerCase();if(x===s){q=o.children();var C=!1;for(n=0;n=0;n--)q[n].parentNode&&q[n].parentNode.removeChild(q[n])}else for(n=0;n"),u[0].innerHTML=E[n].outerHTML,E[n]=u[0]),D.parent()[0].insertBefore(E[n],D[0]);D.remove()}return void a.setSelectionToElementEnd(o[0])}if("createlink"===k.toLowerCase()){var F=a.getSelection();if(F.collapsed)return void a.insertHtml(''+m+"",j)}else if("inserthtml"===k.toLowerCase())return void a.insertHtml(m,j)}}try{c[0].execCommand(k,l,m)}catch(v){}}}}]).directive("taBind",["taSanitize","$timeout","$window","$document","taFixChrome","taBrowserTag","taSelection","taSelectableElements","taApplyCustomRenderers","taOptions",function(a,b,c,f,g,i,l,m,n,o){return{require:"ngModel",link:function(i,p,r,s){var t,u,v,w=void 0!==p.attr("contenteditable")&&p.attr("contenteditable"),x=w||"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase(),y=!1,z=!1,A=r.taUnsafeSanitizer||o.disableSanitizer,B=/^(9|19|20|27|33|34|35|36|37|38|39|40|45|112|113|114|115|116|117|118|119|120|121|122|123|144|145)$/i,C=/^(8|13|32|46|59|61|107|109|186|187|188|189|190|191|192|219|220|221|222)$/i,D=/<(a|abbr|acronym|bdi|bdo|big|cite|code|del|dfn|img|ins|kbd|label|map|mark|q|ruby|rp|rt|s|samp|time|tt|var)[^>]*>/i,E=/^<[^>]+>(\s| )*<\/[^>]+>$/gi;void 0===r.taDefaultWrap&&(r.taDefaultWrap="p"),""===r.taDefaultWrap?(u="",v=void 0===d.ie?"

          ":d.ie>=11?"


          ":d.ie<=8?"

           

          ":"

           

          "):(u=void 0===d.ie||d.ie>=11?"<"+r.taDefaultWrap+">
          ":d.ie<=8?"<"+r.taDefaultWrap.toUpperCase()+">":"<"+r.taDefaultWrap+">",v=void 0===d.ie||d.ie>=11?"<"+r.taDefaultWrap+">
          ":d.ie<=8?"<"+r.taDefaultWrap.toUpperCase()+"> ":"<"+r.taDefaultWrap+"> ");var F=function(a){return a=a.trim(),0===a.length||a===v||E.test(a)||!(/>\s*(([^\s<]+)\s*)+]+\s*)+$/i.test(a)||D.test(a))};p.addClass("ta-bind");var G;i["$undoManager"+(r.id||"")]=s.$undoManager={_stack:[],_index:0,_max:1e3,push:function(a){return"undefined"==typeof a||null===a||"undefined"!=typeof this.current()&&null!==this.current()&&a===this.current()?a:(this._indexthis._max&&this._stack.shift(),this._index=this._stack.length-1,a)},undo:function(){return this.setToIndex(this._index-1)},redo:function(){return this.setToIndex(this._index+1)},setToIndex:function(a){return 0>a||a>this._stack.length-1?void 0:(this._index=a,this.current())},current:function(){return this._stack[this._index]}};var H=i["$undoTaBind"+(r.id||"")]=function(){if(!y&&w){var a=s.$undoManager.undo();"undefined"!=typeof a&&null!==a&&(p[0].innerHTML=a,K(a,!1),l.setSelectionToElementEnd(p[0].childNodes.length?p[0].childNodes[p[0].childNodes.length-1]:p[0]))}},I=i["$redoTaBind"+(r.id||"")]=function(){if(!y&&w){var a=s.$undoManager.redo();"undefined"!=typeof a&&null!==a&&(p[0].innerHTML=a,K(a,!1),l.setSelectionToElementEnd(p[0].childNodes.length?p[0].childNodes[p[0].childNodes.length-1]:p[0]))}},J=function(){if(w)return p[0].innerHTML;if(x)return p.val();throw"textAngular Error: attempting to update non-editable taBind"},K=function(a,b){("undefined"==typeof b||null===b)&&(b=!0&&w),("undefined"==typeof a||null===a)&&(a=J()),F(a)?(""!==s.$viewValue&&s.$setViewValue(""),b&&""!==s.$undoManager.current()&&s.$undoManager.push("")):s.$viewValue!==a&&(s.$setViewValue(a),b&&s.$undoManager.push(a))};if(i["updateTaBind"+(r.id||"")]=function(){y||K()},x)if(w){var L=function(a,b,c){p[0].childNodes&&p[0].childNodes.length>0?c(a,b):(that={s:a,_:b,cb:c},that.callself=function(){L(that.s,that._,that.cb)},setTimeout(that.callself,20))},M=function(d,e){if(text=p[0].innerHTML,p[0].innerHTML=d,c.rangy.restoreSelection(e),text.trim().length){if(text.match(/class=["']*Mso(Normal|List)/i)){var f=text.match(/([\s\S]*?)/i);f=f?f[1]:text,f=f.replace(/[\s\S]*?<\/o:p>/gi,"").replace(/class=(["']|)MsoNormal(["']|)/gi,"");var g=angular.element("
          "+f+"
          "),h=angular.element("
          "),i={element:null,lastIndent:[],lastLi:null,isUl:!1};i.lastIndent.peek=function(){var a=this.length;return a>0?this[a-1]:void 0};for(var j=function(a){i.isUl=a,i.element=angular.element(a?"
            ":"
              "),i.lastIndent=[],i.lastIndent.peek=function(){var a=this.length;return a>0?this[a-1]:void 0},i.lastLevelMatch=null},k=0;k<=g[0].childNodes.length;k++)if(g[0].childNodes[k]&&"#text"!==g[0].childNodes[k].nodeName&&"p"===g[0].childNodes[k].tagName.toLowerCase()){var m=angular.element(g[0].childNodes[k]),n=(m.attr("class")||"").match(/MsoList(Bullet|Number|Paragraph)(CxSp(First|Middle|Last)|)/i);if(n){if(m[0].childNodes.length<2||m[0].childNodes[1].childNodes.length<1)continue;var o="bullet"===n[1].toLowerCase()||"number"!==n[1].toLowerCase()&&!(/^[^0-9a-z<]*[0-9a-z]+[^0-9a-z<>]]":"
                "),i.lastLi.append(i.element);else if(null!=i.lastIndent.peek()&&i.lastIndent.peek()>r){for(;null!=i.lastIndent.peek()&&i.lastIndent.peek()>r;)if("li"!==i.element.parent()[0].tagName.toLowerCase()){if(!/[uo]l/i.test(i.element.parent()[0].tagName.toLowerCase()))break;i.element=i.element.parent(),i.lastIndent.pop()}else i.element=i.element.parent();i.isUl="ul"===i.element[0].tagName.toLowerCase(),o!==i.isUl&&(j(o),h.append(i.element))}i.lastLevelMatch=t,r!==i.lastIndent.peek()&&i.lastIndent.push(r),i.lastLi=angular.element("
              1. "),i.element.append(i.lastLi),i.lastLi.html(m.html().replace(/[\s\S]*?/gi,"")),m.remove()}else j(!1),h.append(m)}var u=function(a){a=angular.element(a);for(var b=a[0].childNodes.length-1;b>=0;b--)a.after(a[0].childNodes[b]);a.remove()};angular.forEach(h.find("span"),function(a){a.removeAttribute("lang"),a.attributes.length<=0&&u(a)}),angular.forEach(h.find("font"),u),text=h.html()}text=a(text,"",A),l.insertHtml(text,p[0]),b(function(){s.$setViewValue(J())},0)}};if(p.on("paste",function(a,b){b&&angular.extend(a,b);var d=c.rangy.saveSelection();if(y)return a.stopPropagation(),a.preventDefault(),!1;var e=p[0].innerHTML,f=(a.originalEvent||a).clipboardData;if(f&&f.getData){for(var g="",h=0;h$/i.test(c.innerHTML.trim())&&"blockquote"===c.parentNode.tagName.toLowerCase()&&!c.nextSibling){$selection=angular.element(c);var e=$selection.parent();e.after(d),$selection.remove(),0===e.children().length&&e.remove(),l.setSelectionToElementStart(d[0]),a.preventDefault()}else/^<[^>]+><\/[^>]+>$/i.test(c.innerHTML.trim())&&"blockquote"===c.tagName.toLowerCase()&&($selection=angular.element(c),$selection.after(d),$selection.remove(),l.setSelectionToElementStart(d[0]),a.preventDefault())}}),p.on("keyup",function(a,c){if(c&&angular.extend(a,c),G&&b.cancel(G),!y&&!B.test(a.keyCode)){if(""!==u&&13===a.keyCode&&!a.shiftKey){for(var d=l.getSelectionElement();!d.tagName.match(h)&&d!==p[0];)d=d.parentNode;if(d.tagName.toLowerCase()!==r.taDefaultWrap&&"li"!==d.tagName.toLowerCase()&&(""===d.innerHTML.trim()||"
                "===d.innerHTML.trim())){var e=angular.element(u);angular.element(d).replaceWith(e),l.setSelectionToElementStart(e[0])}}var f=J();""!==u&&""===f.trim()&&(p[0].innerHTML=u,l.setSelectionToElementStart(p.children()[0]));var g=t!==a.keyCode&&C.test(a.keyCode);K(f,g),g||(G=b(function(){s.$undoManager.push(f)},250)),t=a.keyCode}}),p.on("blur",function(){z=!1,y||K(),s.$render()}),r.placeholder&&(d.ie>8||void 0===d.ie)){var N;if(!r.id)throw"textAngular Error: An unique ID is required for placeholders to work";N=j("#"+r.id+".placeholder-text:before",'content: "'+r.placeholder+'"'),i.$on("$destroy",function(){k(N)})}p.on("focus",function(){z=!0,s.$render()}),p.on("mousedown",function(a,b){b&&angular.extend(a,b),a.stopPropagation()})}else p.on("change blur",function(){y||s.$setViewValue(J())});var O=function(b){return s.$oldViewValue=a(g(b),s.$oldViewValue,A)},P=function(a){return r.required&&s.$setValidity("required",!F(a)),a};s.$parsers.push(O),s.$parsers.push(P),s.$formatters.push(O),s.$formatters.push(function(a){if(F(a))return a;var b=angular.element("
                "+a+"
                ");return 0===b.children().length&&(a="<"+r.taDefaultWrap+">"+a+""),a}),s.$formatters.push(P),s.$formatters.push(function(a){return s.$undoManager.push(a||"")});var Q=function(a){return i.$emit("ta-element-select",this),a.preventDefault(),!1},R=function(a,c){if(c&&angular.extend(a,c),!q&&!y){q=!0;var d;d=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,i.$emit("ta-drop-event",this,a,d),b(function(){q=!1,K(),S()},100)}},S=i["reApplyOnSelectorHandlers"+(r.id||"")]=function(){y||angular.forEach(m,function(a){p.find(a).off("click",Q).on("click",Q)})},T=function(a){p[0].innerHTML=a};s.$render=function(){var a=s.$viewValue||"";f[0].activeElement!==p[0]?w?(r.placeholder?""===a?(z?p.removeClass("placeholder-text"):p.addClass("placeholder-text"),T(u)):(p.removeClass("placeholder-text"),T(a)):T(""===a?u:a),y?p.off("drop",R):(S(),p.on("drop",R))):"textarea"!==p[0].tagName.toLowerCase()&&"input"!==p[0].tagName.toLowerCase()?T(n(a)):p.val(a):w&&p.removeClass("placeholder-text")},r.taReadonly&&(y=i.$eval(r.taReadonly),y?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable")):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):w&&p.attr("contenteditable","true")),i.$watch(r.taReadonly,function(a,b){b!==a&&(a?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable"),angular.forEach(m,function(a){p.find(a).on("click",Q)}),p.off("drop",R)):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):w&&p.attr("contenteditable","true"),angular.forEach(m,function(a){p.find(a).off("click",Q)}),p.on("drop",R)),y=a)})),w&&!y&&(angular.forEach(m,function(a){p.find(a).on("click",Q)}),p.on("drop",R),p.on("blur",function(){d.webkit&&(e=!0)}))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(c){var d=angular.element("
                ");return d[0].innerHTML=c,angular.forEach(a,function(a){var c=[];a.selector&&""!==a.selector?c=d.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(c=b(d,a.customAttribute)),angular.forEach(c,function(b){b=angular.element(b),a.selector&&""!==a.selector&&a.customAttribute&&""!==a.customAttribute?void 0!==b.attr(a.customAttribute)&&a.renderLogic(b):a.renderLogic(b)})}),d[0].innerHTML}}]).directive("taMaxText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("
                ");b.html(a);var c=b.text().length;return f>=c?(d.$setValidity("taMaxText",!0),a):void d.$setValidity("taMaxText",!1)}var f=parseInt(a.$eval(c.taMaxText));if(isNaN(f))throw"Max text must be an integer";c.$observe("taMaxText",function(a){if(f=parseInt(a),isNaN(f))throw"Max text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).directive("taMinText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("
                ");b.html(a);var c=b.text().length;return!c||c>=f?(d.$setValidity("taMinText",!0),a):void d.$setValidity("taMinText",!1)}var f=parseInt(a.$eval(c.taMinText));if(isNaN(f))throw"Min text must be an integer";c.$observe("taMinText",function(a){if(f=parseInt(a),isNaN(f))throw"Min text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).factory("taFixChrome",function(){var a=function(a){for(var b=angular.element("
                "+a+"
                "),c=angular.element(b).find("span"),d=0;d0&&"BR"===e.next()[0].tagName&&e.next().remove(),e.replaceWith(e[0].innerHTML))) }var f=b[0].innerHTML.replace(/style="[^"]*?(line-height: 1.428571429;|color: inherit; line-height: 1.1;)[^"]*"/gi,"");return f!==b[0].innerHTML&&(b[0].innerHTML=f),b[0].innerHTML};return a}).factory("taSanitize",["$sanitize",function(a){return function(c,d,e){var f=angular.element("
                "+c+"
                ");angular.forEach(b(f,"align"),function(a){a.css("text-align",a.attr("align")),a.removeAttr("align")});var g;c=f[0].innerHTML;try{g=a(c),e&&(g=c)}catch(h){g=d||""}return g}}]).directive("textAngularToolbar",["$compile","textAngularManager","taOptions","taTools","taToolExecuteAction","$window",function(a,b,c,d,e,f){return{scope:{name:"@"},restrict:"EA",link:function(g,h,i){if(!g.name||""===g.name)throw"textAngular Error: A toolbar requires a name";angular.extend(g,angular.copy(c)),i.taToolbar&&(g.toolbar=g.$parent.$eval(i.taToolbar)),i.taToolbarClass&&(g.classes.toolbar=i.taToolbarClass),i.taToolbarGroupClass&&(g.classes.toolbarGroup=i.taToolbarGroupClass),i.taToolbarButtonClass&&(g.classes.toolbarButton=i.taToolbarButtonClass),i.taToolbarActiveButtonClass&&(g.classes.toolbarButtonActive=i.taToolbarActiveButtonClass),i.taFocussedClass&&(g.classes.focussed=i.taFocussedClass),g.disabled=!0,g.focussed=!1,g._$element=h,h[0].innerHTML="",h.addClass("ta-toolbar "+g.classes.toolbar),g.$watch("focussed",function(){g.focussed?h.addClass(g.classes.focussed):h.removeClass(g.classes.focussed)});var j=function(b,c){var d;if(d=angular.element(b&&b.display?b.display:"