diff --git a/Gruntfile.js b/Gruntfile.js index d7d547c7..52a34ede 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -41,8 +41,11 @@ module.exports = function (grunt) { } }, karma: { - unit: { - options: testConfig('karma.conf.js') + jquery: { + options: testConfig('karma-jquery.conf.js') + }, + jqlite: { + options: testConfig('karma-jqlite.conf.js') } }, jshint: { diff --git a/dist/textAngular.min.js b/dist/textAngular.min.js index 6fdd1d1e..81f1846d 100644 --- a/dist/textAngular.min.js +++ b/dist/textAngular.min.js @@ -1,2 +1,2 @@ -!function(a,b){b["true"]=a;var c={translationStrings:{toggleHTML:"Toggle HTML",insertImage:"Please enter a image URL to insert",insertLink:"Please enter a URL to insert",insertVideo:"Please enter a youtube URL to embed"},selectableElements:["a","img"],customDisplayRenderers:[{selector:"img",customAttribute:"ta-insert-video",renderLogic:function(a){var b=angular.element(""),c=a.prop("attributes");angular.forEach(c,function(a){b.attr(a.name,a.value)}),b.attr("src",b.attr("ta-insert-video")),a.replaceWith(b)}}],options:{toolbar:[["h1","h2","h3","h4","h5","h6","p","pre","quote"],["bold","italics","underline","ul","ol","redo","undo","clear"],["justifyLeft","justifyCenter","justifyRight"],["html","insertImage","insertLink","insertVideo"]],classes:{focussed:"focussed",toolbar:"btn-toolbar",toolbarGroup:"btn-group",toolbarButton:"btn btn-default",toolbarButtonActive:"active",disabled:"disabled",textEditor:"form-control",htmlEditor:"form-control"},setup:{textEditorSetup:function(){},htmlEditorSetup:function(){}},defaultFileDropHandler:function(a,b){var c=new FileReader;return"image"===a.type.substring(0,5)?(c.onload=function(){""!==c.result&&b("insertImage",c.result,!0)},c.readAsDataURL(a),!0):!1}},registerToolsFunction:function(a,b,c){a("html",{buttontext:c.toggleHTML,action:function(){this.$editor().switchView()},activeState:function(){return this.$editor().showHtml}});var d=function(a){return function(){return this.$editor().queryFormatBlockState(a)}},e=function(){return this.$editor().wrapSelection("formatBlock","<"+this.name.toUpperCase()+">")};angular.forEach(["h1","h2","h3","h4","h5","h6"],function(b){a(b.toLowerCase(),{buttontext:b.toUpperCase(),action:e,activeState:d(b.toLowerCase())})}),a("p",{buttontext:"P",action:function(){return this.$editor().wrapSelection("formatBlock","

")},activeState:function(){return this.$editor().queryFormatBlockState("p")}}),a("pre",{buttontext:"pre",action:function(){return this.$editor().wrapSelection("formatBlock","

")},activeState:function(){return this.$editor().queryFormatBlockState("pre")}}),a("ul",{iconclass:"fa fa-list-ul",action:function(){return this.$editor().wrapSelection("insertUnorderedList",null)},activeState:function(){return document.queryCommandState("insertUnorderedList")}}),a("ol",{iconclass:"fa fa-list-ol",action:function(){return this.$editor().wrapSelection("insertOrderedList",null)},activeState:function(){return document.queryCommandState("insertOrderedList")}}),a("quote",{iconclass:"fa fa-quote-right",action:function(){return this.$editor().wrapSelection("formatBlock","
")},activeState:function(){return this.$editor().queryFormatBlockState("blockquote")}}),a("undo",{iconclass:"fa fa-undo",action:function(){return this.$editor().wrapSelection("undo",null)}}),a("redo",{iconclass:"fa fa-repeat",action:function(){return this.$editor().wrapSelection("redo",null)}}),a("bold",{iconclass:"fa fa-bold",action:function(){return this.$editor().wrapSelection("bold",null)},activeState:function(){return document.queryCommandState("bold")},commandKeyCode:98}),a("justifyLeft",{iconclass:"fa fa-align-left",action:function(){return this.$editor().wrapSelection("justifyLeft",null)},activeState:function(a){var b=!1;return a&&(b="left"===a.css("text-align")||"left"===a.attr("align")||"right"!==a.css("text-align")&&"center"!==a.css("text-align")&&!document.queryCommandState("justifyRight")&&!document.queryCommandState("justifyCenter")),b=b||document.queryCommandState("justifyLeft")}}),a("justifyRight",{iconclass:"fa fa-align-right",action:function(){return this.$editor().wrapSelection("justifyRight",null)},activeState:function(a){var b=!1;return a&&(b="right"===a.css("text-align")),b=b||document.queryCommandState("justifyRight")}}),a("justifyCenter",{iconclass:"fa fa-align-center",action:function(){return this.$editor().wrapSelection("justifyCenter",null)},activeState:function(a){var b=!1;return a&&(b="center"===a.css("text-align")),b=b||document.queryCommandState("justifyCenter")}}),a("italics",{iconclass:"fa fa-italic",action:function(){return this.$editor().wrapSelection("italic",null)},activeState:function(){return document.queryCommandState("italic")},commandKeyCode:105}),a("underline",{iconclass:"fa fa-underline",action:function(){return this.$editor().wrapSelection("underline",null)},activeState:function(){return document.queryCommandState("underline")},commandKeyCode:117}),a("clear",{iconclass:"fa fa-ban",action:function(a,b){this.$editor().wrapSelection("removeFormat",null);var c=[];if(this.$window.rangy&&this.$window.rangy.getSelection&&1===(c=this.$window.rangy.getSelection().getAllRanges()).length){var d=angular.element(c[0].commonAncestorContainer),e=function(a){a=angular.element(a);var b=a;angular.forEach(a.children(),function(a){var c=angular.element("

");c.html(angular.element(a).html()),b.after(c),b=c}),a.remove()};angular.forEach(d.find("ul"),e),angular.forEach(d.find("ol"),e);var f=this.$editor(),g=function(a){a=angular.element(a),a[0]!==f.displayElements.text[0]&&a.removeAttr("class"),angular.forEach(a.children(),g)};angular.forEach(d,g),"li"!==d[0].tagName.toLowerCase()&&"ol"!==d[0].tagName.toLowerCase()&&"ul"!==d[0].tagName.toLowerCase()&&this.$editor().wrapSelection("formatBlock","

")}else this.$editor().wrapSelection("formatBlock","

");b()}});var f=function(a,b,c){var d=function(){c.updateTaBindtaTextElement(),c.hidePopover()};a.preventDefault(),c.displayElements.popover.css("width","375px");var e=c.displayElements.popoverContainer;e.empty();var f=angular.element('

'),g=angular.element('');g.on("click",function(a){a.preventDefault(),b.css({width:"100%",height:""}),d()});var h=angular.element('');h.on("click",function(a){a.preventDefault(),b.css({width:"50%",height:""}),d()});var i=angular.element('');i.on("click",function(a){a.preventDefault(),b.css({width:"25%",height:""}),d()});var j=angular.element('');j.on("click",function(a){a.preventDefault(),b.css({width:"",height:""}),d()}),f.append(g),f.append(h),f.append(i),f.append(j),e.append(f),f=angular.element('
');var k=angular.element('');k.on("click",function(a){a.preventDefault(),b.css("float","left"),d()});var l=angular.element('');l.on("click",function(a){a.preventDefault(),b.css("float","right"),d()});var m=angular.element('');m.on("click",function(a){a.preventDefault(),b.css("float",""),d()}),f.append(k),f.append(m),f.append(l),e.append(f),f=angular.element('
');var n=angular.element('');n.on("click",function(a){a.preventDefault(),b.remove(),d()}),f.append(n),e.append(f),c.showPopover(b)};a("insertImage",{iconclass:"fa fa-picture-o",action:function(){var a;return a=b.prompt(c.insertImage,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("insertImage",a,!0):void 0},onElementSelect:{element:"img",action:f}}),a("insertVideo",{iconclass:"fa fa-youtube-play",action:function(){var a;if(a=b.prompt(c.insertVideo,"http://"),a&&""!==a&&"http://"!==a){var d=a.match(/(\?|&)v=[^&]*/);if(d.length>0){var e="http://www.youtube.com/embed/"+d[0].substring(3),f='';return this.$editor().wrapSelection("insertHTML",f,!0)}}},onElementSelect:{element:"img",onlyWithAttrs:["ta-insert-video"],action:f}}),a("insertLink",{iconclass:"fa fa-link",action:function(){var a;return a=b.prompt(c.insertLink,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("createLink",a,!0):void 0},activeState:function(a){return a?"A"===a[0].tagName:!1},onElementSelect:{element:"a",action:function(a,d,e){a.preventDefault(),e.displayElements.popover.css("width","305px");var f=e.displayElements.popoverContainer;f.empty(),f.css("line-height","28px");var g=angular.element(''+d.attr("href")+"");g.css({display:"inline-block","max-width":"200px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap","vertical-align":"middle"}),f.append(g);var h=angular.element('
'),i=angular.element('');i.on("click",function(a){a.preventDefault();var f=b.prompt(c.insertLink,d.attr("href"));""!==f&&(d.attr("href",f),e.updateTaBindtaTextElement()),e.hidePopover()}),h.append(i);var j=angular.element('');j.on("click",function(a){a.preventDefault(),d.replaceWith(d.contents()),e.updateTaBindtaTextElement(),e.hidePopover()}),h.append(j),f.append(h),e.showPopover(d)}}})}};!function(){"Use Strict";function a(a,b){var c=Math.max(g.rules.length-1,0);return g.insertRule?g.insertRule(a+"{"+b+"}",c):g.addRule(a,b,c),c}function b(a){g.removeRule?g.removeRule(a):g.deleteRule(a)}function d(a,b){var c=[],e=a.children();return e.length&&angular.forEach(e,function(a){c=c.concat(d(angular.element(a),b))}),void 0!==a.attr(b)&&c.push(a),c}function e(a,b){if(!a||""===a||j.hasOwnProperty(a))throw"textAngular Error: A unique name is required for a Tool Definition";if(b.display&&(""===b.display||0===angular.element(b.display).length)||!b.display&&!b.buttontext&&!b.iconclass)throw'textAngular Error: Tool Definition for "'+a+'" does not have a valid display/iconclass/buttontext value';j[a]=b}var f=function(){var a,b=-1,c=window.navigator.userAgent,d=c.indexOf("MSIE "),e=c.indexOf("Trident/");if(d>0)b=parseInt(c.substring(d+5,c.indexOf(".",d)),10);else if(e>0){var f=c.indexOf("rv:");b=parseInt(c.substring(f+3,c.indexOf(".",f)),10)}return b>-1?b:a}(),g=function(){var a=document.createElement("style");return a.appendChild(document.createTextNode("")),document.head.appendChild(a),a.sheet}(),h=!1,i=angular.module("textAngular",["ngSanitize"]);if(void 0===c)throw"textAngular Error: Setup Options are not defined, see textAngularSetup.js for example.";i.value("taOptions",c.options),i.value("taSelectableElements",c.selectableElements),i.value("taCustomRenderers",c.customDisplayRenderers);var j={};i.constant("taTranslations",c.translationStrings),i.constant("taRegisterTool",e),i.value("taTools",j),i.run(["taRegisterTool","$window","taTranslations",function(a,b,d){angular.forEach(j,function(a,b){delete j[b]}),c.registerToolsFunction(a,b,d)}]),i.directive("textAngular",["$compile","$timeout","taOptions","taSanitize","textAngularManager","$window","$animate","$log",function(a,b,c,d,e,f,g,h){return{require:"?ngModel",scope:{},restrict:"EA",link:function(d,i,j,k){var l,m,n,o,p,q,r,s,t=Math.floor(1e16*Math.random()),u=j.name?j.name:"textAngularEditor"+t;angular.extend(d,angular.copy(c),{wrapSelection:function(a,b,c){try{document.execCommand(a,!1,b)}catch(e){}c&&d["reApplyOnSelectorHandlerstaTextElement"+t](),d.displayElements.text[0].focus()},showHtml:!1}),j.taFocussedClass&&(d.classes.focussed=j.taFocussedClass),j.taTextEditorClass&&(d.classes.textEditor=j.taTextEditorClass),j.taHtmlEditorClass&&(d.classes.htmlEditor=j.taHtmlEditorClass),j.taTextEditorSetup&&(d.setup.textEditorSetup=d.$parent.$eval(j.taTextEditorSetup)),j.taHtmlEditorSetup&&(d.setup.htmlEditorSetup=d.$parent.$eval(j.taHtmlEditorSetup)),d.fileDropHandler=j.taFileDrop?d.$parent.$eval(j.taFileDrop):d.defaultFileDropHandler,r=i[0].innerHTML,i[0].innerHTML="",d.displayElements={forminput:angular.element(""),html:angular.element(""),text:angular.element("
"),popover:angular.element('
'),popoverContainer:angular.element('
')},d.displayElements.popover.append(d.displayElements.popoverContainer),i.append(d.displayElements.popover),d.displayElements.popover.on("mousedown",function(a){return a.preventDefault(),!1}),d.showPopover=function(a){d.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),d.displayElements.popover.css("left",a[0].offsetLeft+a[0].offsetWidth/2-152.5+"px"),d.displayElements.popover.css("display","block"),g.addClass(d.displayElements.popover,"in"),b(function(){d.displayElements.html.parent().one("click",d.hidePopover)},100)},d.hidePopover=function(){g.removeClass(d.displayElements.popover,"in",function(){d.displayElements.popover.css("display",""),d.displayElements.popoverContainer.attr("style",""),d.displayElements.popoverContainer.attr("class","popover-content")})},d.setup.htmlEditorSetup(d.displayElements.html),d.setup.textEditorSetup(d.displayElements.text),d.displayElements.html.attr({id:"taHtmlElement"+t,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),d.displayElements.text.attr({id:"taTextElement"+t,contentEditable:"true","ng-hide":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),j.taDefaultWrap&&d.displayElements.text.attr("ta-default-wrap",j.taDefaultWrap),i.append(d.displayElements.text),i.append(d.displayElements.html),d.displayElements.forminput.attr("name",u),i.append(d.displayElements.forminput),j.tabindex&&(i.removeAttr("tabindex"),d.displayElements.text.attr("tabindex",j.tabindex),d.displayElements.html.attr("tabindex",j.tabindex)),j.placeholder&&(d.displayElements.text.attr("placeholder",j.placeholder),d.displayElements.html.attr("placeholder",j.placeholder)),j.taDisabled&&(d.displayElements.text.attr("ta-readonly","disabled"),d.displayElements.html.attr("ta-readonly","disabled"),d.disabled=d.$parent.$eval(j.taDisabled),d.$parent.$watch(j.taDisabled,function(a){d.disabled=a,d.disabled?i.addClass(d.classes.disabled):i.removeClass(d.classes.disabled)})),a(d.displayElements.text)(d),a(d.displayElements.html)(d),d.updateTaBindtaTextElement=d["updateTaBindtaTextElement"+t],d.updateTaBindtaHtmlElement=d["updateTaBindtaHtmlElement"+t],i.addClass("ta-root"),d.displayElements.text.addClass("ta-text ta-editor "+d.classes.textEditor),d.displayElements.html.addClass("ta-html ta-editor "+d.classes.textEditor),d._actionRunning=!1;var v=!1;if(d.startAction=function(){return d._actionRunning=!0,f.rangy&&f.rangy.saveSelection?(v=f.rangy.saveSelection(),function(){v&&f.rangy.restoreSelection(v)}):void 0},d.endAction=function(){d._actionRunning=!1,v&&f.rangy.removeMarkers(v),v=!1,d.updateSelectedStyles(),d.showHtml||d["updateTaBindtaTextElement"+t]()},p=function(){i.addClass(d.classes.focussed),s.focus()},d.displayElements.html.on("focus",p),d.displayElements.text.on("focus",p),q=function(a){return d._actionRunning||document.activeElement===d.displayElements.html[0]||document.activeElement===d.displayElements.text[0]||(i.removeClass(d.classes.focussed),s.unfocus(),b(function(){i.triggerHandler("blur")},0)),a.preventDefault(),!1},d.displayElements.html.on("blur",q),d.displayElements.text.on("blur",q),d.queryFormatBlockState=function(a){return a.toLowerCase()===document.queryCommandValue("formatBlock").toLowerCase()},d.switchView=function(){d.showHtml=!d.showHtml,d.showHtml?b(function(){return d.displayElements.html[0].focus()},100):b(function(){return d.displayElements.text[0].focus()},100)},j.ngModel){var w=!0;k.$render=function(){if(w){w=!1;var a=d.$parent.$eval(j.ngModel);void 0!==a&&null!==a||!r||""===r||k.$setViewValue(r)}d.displayElements.forminput.val(k.$viewValue),d._elementSelectTriggered||document.activeElement===d.displayElements.html[0]||document.activeElement===d.displayElements.text[0]||(d.html=k.$viewValue||"")}}else d.displayElements.forminput.val(r),d.html=r;if(d.$watch("html",function(a,b){a!==b&&(j.ngModel&&k.$viewValue!==a&&k.$setViewValue(a),d.displayElements.forminput.val(a))}),j.taTargetToolbars)s=e.registerEditor(u,d,j.taTargetToolbars.split(","));else{var x=angular.element('
');j.taToolbar&&x.attr("ta-toolbar",j.taToolbar),j.taToolbarClass&&x.attr("ta-toolbar-class",j.taToolbarClass),j.taToolbarGroupClass&&x.attr("ta-toolbar-group-class",j.taToolbarGroupClass),j.taToolbarButtonClass&&x.attr("ta-toolbar-button-class",j.taToolbarButtonClass),j.taToolbarActiveButtonClass&&x.attr("ta-toolbar-active-button-class",j.taToolbarActiveButtonClass),j.taFocussedClass&&x.attr("ta-focussed-class",j.taFocussedClass),i.prepend(x),a(x)(d.$parent),s=e.registerEditor(u,d,["textAngularToolbar"+t])}d.$on("$destroy",function(){e.unregisterEditor(u)}),d.$on("ta-element-select",function(a,b){s.triggerElementSelect(a,b)}),d.$on("ta-drop-event",function(a,b,c,e){d.displayElements.text[0].focus(),e&&e.files&&e.files.length>0&&(angular.forEach(e.files,function(a){try{return d.fileDropHandler(a,d.wrapSelection)||d.fileDropHandler!==d.defaultFileDropHandler&&d.defaultFileDropHandler(a,d.wrapSelection)}catch(b){h.error(b)}}),c.preventDefault(),c.stopPropagation())}),d._bUpdateSelectedStyles=!1,d.updateSelectedStyles=function(){var a;f.rangy&&f.rangy.getSelection&&1===(a=f.rangy.getSelection().getAllRanges()).length&&a[0].commonAncestorContainer.parentNode!==d.displayElements.text[0]?s.updateSelectedStyles(angular.element(a[0].commonAncestorContainer.parentNode)):s.updateSelectedStyles(),d._bUpdateSelectedStyles&&b(d.updateSelectedStyles,200)},l=function(){d._bUpdateSelectedStyles||(d._bUpdateSelectedStyles=!0,d.$apply(function(){d.updateSelectedStyles()}))},d.displayElements.html.on("keydown",l),d.displayElements.text.on("keydown",l),m=function(){d._bUpdateSelectedStyles=!1},d.displayElements.html.on("keyup",m),d.displayElements.text.on("keyup",m),n=function(a){d.$apply(function(){return s.sendKeyCommand(a)?(d._bUpdateSelectedStyles||d.updateSelectedStyles(),a.preventDefault(),!1):void 0})},d.displayElements.html.on("keypress",n),d.displayElements.text.on("keypress",n),o=function(){d._bUpdateSelectedStyles=!1,d.$apply(function(){d.updateSelectedStyles()})},d.displayElements.html.on("mouseup",o),d.displayElements.text.on("mouseup",o)}}}]).directive("taBind",["taSanitize","$timeout","$window","taFixChrome","taSelectableElements","taApplyCustomRenderers",function(c,d,e,g,i,j){return{require:"ngModel",scope:{},link:function(k,l,m,n){var o,p=void 0!==l.attr("contenteditable")&&l.attr("contenteditable"),q=p||"textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase(),r=!1,s=!1;void 0===m.taDefaultWrap&&(m.taDefaultWrap="p"),o=""===m.taDefaultWrap?"":void 0===f?"<"+m.taDefaultWrap+">
":"<"+m.taDefaultWrap+">";var t=function(){if(p)return l[0].innerHTML;if(q)return l.val();throw"textAngular Error: attempting to update non-editable taBind"};if(k.$parent["updateTaBind"+(m.id||"")]=function(){r||n.$setViewValue(t())},q)if(p){if(l.on("cut",function(a){r?a.preventDefault():d(function(){n.$setViewValue(t())},0)}),l.on("paste",function(a){var b;if(a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData?b=(a.originalEvent||a).clipboardData.getData("text/plain"):e.clipboardData&&(b=e.clipboardData.getData("Text")),!b&&!r)return!0;if(a.preventDefault(),!r){var c=angular.element("
");c[0].innerHTML=b,b=c.text(),document.execCommand("insertText",!1,b),n.$setViewValue(t())}}),l.on("keyup",function(){r||n.$setViewValue(t())}),l.on("blur",function(){s=!1;var a=t();r||n.$setViewValue(a===o?"":t()),n.$render()}),m.placeholder){var u;if(!m.id)throw"textAngular Error: An unique ID is required for placeholders to work";u=a("#"+m.id+".placeholder-text:before",'content: "'+m.placeholder+'"'),k.$on("$destroy",function(){b(u)})}l.on("focus",function(){s=!0,n.$render()})}else l.on("paste cut",function(){r||d(function(){n.$setViewValue(t())},0)}),l.on("change blur",function(){r||n.$setViewValue(t())});var v=function(a){return n.$oldViewValue=c(g(a),n.$oldViewValue)};n.$parsers.push(v),n.$formatters.push(v);var w=function(a){return k.$emit("ta-element-select",this),a.preventDefault(),!1},x=function(a){if(!h){h=!0;var b;b=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,k.$emit("ta-drop-event",this,a,b),d(function(){h=!1},100)}};k.$parent["reApplyOnSelectorHandlers"+(m.id||"")]=function(){r||angular.forEach(i,function(a){l.find(a).off("click",w).on("click",w)})},n.$render=function(){var a=n.$viewValue||"";document.activeElement!==l[0]?p?(m.placeholder?""===a?(s?l.removeClass("placeholder-text"):l.addClass("placeholder-text"),l[0].innerHTML=o):(l.removeClass("placeholder-text"),l[0].innerHTML=a):l[0].innerHTML=""===a?o:a,r?l.off("drop",x):(angular.forEach(i,function(a){l.find(a).on("click",w)}),l.on("drop",x))):"textarea"!==l[0].tagName.toLowerCase()&&"input"!==l[0].tagName.toLowerCase()?l[0].innerHTML=j(a):l.val(a):p&&l.removeClass("placeholder-text")},m.taReadonly&&(r=k.$parent.$eval(m.taReadonly),r?(("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase())&&l.attr("disabled","disabled"),void 0!==l.attr("contenteditable")&&l.attr("contenteditable")&&l.removeAttr("contenteditable")):"textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase()?l.removeAttr("disabled"):p&&l.attr("contenteditable","true"),k.$parent.$watch(m.taReadonly,function(a,b){b!==a&&(a?(("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase())&&l.attr("disabled","disabled"),void 0!==l.attr("contenteditable")&&l.attr("contenteditable")&&l.removeAttr("contenteditable"),angular.forEach(i,function(a){l.find(a).on("click",w)}),l.off("drop",x)):("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase()?l.removeAttr("disabled"):p&&l.attr("contenteditable","true"),angular.forEach(i,function(a){l.find(a).off("click",w)}),l.on("drop",x)),r=a)})),p&&!r&&(angular.forEach(i,function(a){l.find(a).on("click",w)}),l.on("drop",x))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(b){var c=angular.element("
");return c[0].innerHTML=b,angular.forEach(a,function(a){var b=[];a.selector&&""!==a.selector?b=c.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(b=d(c,a.customAttribute)),angular.forEach(b,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)})}),c[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)}}}).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(b,c){var e=angular.element("
"+b+"
");angular.forEach(d(e,"align"),function(a){a.css("text-align",a.attr("align")),a.removeAttr("align")}),b=e[0].innerHTML;var f;try{f=a(b)}catch(g){f=c||""}return f}}]).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:"');g.on("click",function(a){a.preventDefault(),b.css({width:"100%",height:""}),d()});var h=angular.element('');h.on("click",function(a){a.preventDefault(),b.css({width:"50%",height:""}),d()});var i=angular.element('');i.on("click",function(a){a.preventDefault(),b.css({width:"25%",height:""}),d()});var j=angular.element('');j.on("click",function(a){a.preventDefault(),b.css({width:"",height:""}),d()}),f.append(g),f.append(h),f.append(i),f.append(j),e.append(f),f=angular.element('
');var k=angular.element('');k.on("click",function(a){a.preventDefault(),b.css("float","left"),d()});var l=angular.element('');l.on("click",function(a){a.preventDefault(),b.css("float","right"),d()});var m=angular.element('');m.on("click",function(a){a.preventDefault(),b.css("float",""),d()}),f.append(k),f.append(m),f.append(l),e.append(f),f=angular.element('
');var n=angular.element('');n.on("click",function(a){a.preventDefault(),b.remove(),d()}),f.append(n),e.append(f),c.showPopover(b)};a("insertImage",{iconclass:"fa fa-picture-o",action:function(){var a;return a=b.prompt(c.insertImage,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("insertImage",a,!0):void 0},onElementSelect:{element:"img",action:f}}),a("insertVideo",{iconclass:"fa fa-youtube-play",action:function(){var a;if(a=b.prompt(c.insertVideo,"http://"),a&&""!==a&&"http://"!==a){var d=a.match(/(\?|&)v=[^&]*/);if(d.length>0){var e="http://www.youtube.com/embed/"+d[0].substring(3),f='';return this.$editor().wrapSelection("insertHTML",f,!0)}}},onElementSelect:{element:"img",onlyWithAttrs:["ta-insert-video"],action:f}}),a("insertLink",{iconclass:"fa fa-link",action:function(){var a;return a=b.prompt(c.insertLink,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("createLink",a,!0):void 0},activeState:function(a){return a?"A"===a[0].tagName:!1},onElementSelect:{element:"a",action:function(a,d,e){a.preventDefault(),e.displayElements.popover.css("width","305px");var f=e.displayElements.popoverContainer;f.empty(),f.css("line-height","28px");var g=angular.element(''+d.attr("href")+"");g.css({display:"inline-block","max-width":"200px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap","vertical-align":"middle"}),f.append(g);var h=angular.element('
'),i=angular.element('');i.on("click",function(a){a.preventDefault();var f=b.prompt(c.insertLink,d.attr("href"));""!==f&&(d.attr("href",f),e.updateTaBindtaTextElement()),e.hidePopover()}),h.append(i);var j=angular.element('');j.on("click",function(a){a.preventDefault(),d.replaceWith(d.contents()),e.updateTaBindtaTextElement(),e.hidePopover()}),h.append(j),f.append(h),e.showPopover(d)}}})}};!function(){"Use Strict";function a(a){try{return 0!==angular.element(a).length}catch(b){return!1}}function b(a,b){var c=Math.max(h.rules.length-1,0);return h.insertRule?h.insertRule(a+"{"+b+"}",c):h.addRule(a,b,c),c}function d(a){h.removeRule?h.removeRule(a):h.deleteRule(a)}function e(a,b){var c=[],d=a.children();return d.length&&angular.forEach(d,function(a){c=c.concat(e(angular.element(a),b))}),void 0!==a.attr(b)&&c.push(a),c}function f(b,c){if(!b||""===b||k.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';k[b]=c}var g=function(){var a,b=-1,c=window.navigator.userAgent,d=c.indexOf("MSIE "),e=c.indexOf("Trident/");if(d>0)b=parseInt(c.substring(d+5,c.indexOf(".",d)),10);else if(e>0){var f=c.indexOf("rv:");b=parseInt(c.substring(f+3,c.indexOf(".",f)),10)}return b>-1?b:a}(),h=function(){var a=document.createElement("style");return a.appendChild(document.createTextNode("")),document.head.appendChild(a),a.sheet}(),i=!1,j=angular.module("textAngular",["ngSanitize"]);if(void 0===c)throw"textAngular Error: Setup Options are not defined, see textAngularSetup.js for example.";j.value("taOptions",c.options),j.value("taSelectableElements",c.selectableElements),j.value("taCustomRenderers",c.customDisplayRenderers);var k={};j.constant("taTranslations",c.translationStrings),j.constant("taRegisterTool",f),j.value("taTools",k),j.run(["taRegisterTool","$window","taTranslations",function(a,b,d){angular.forEach(k,function(a,b){delete k[b]}),c.registerToolsFunction(a,b,d)}]),j.directive("textAngular",["$compile","$timeout","taOptions","taSanitize","textAngularManager","$window","$animate","$log",function(a,b,c,d,e,f,g,h){return{require:"?ngModel",scope:{},restrict:"EA",link:function(d,i,j,k){var l,m,n,o,p,q,r,s,t=Math.floor(1e16*Math.random()),u=j.name?j.name:"textAngularEditor"+t;angular.extend(d,angular.copy(c),{wrapSelection:function(a,b,c){try{document.execCommand(a,!1,b)}catch(e){}c&&d["reApplyOnSelectorHandlerstaTextElement"+t](),d.displayElements.text[0].focus()},showHtml:!1}),j.taFocussedClass&&(d.classes.focussed=j.taFocussedClass),j.taTextEditorClass&&(d.classes.textEditor=j.taTextEditorClass),j.taHtmlEditorClass&&(d.classes.htmlEditor=j.taHtmlEditorClass),j.taTextEditorSetup&&(d.setup.textEditorSetup=d.$parent.$eval(j.taTextEditorSetup)),j.taHtmlEditorSetup&&(d.setup.htmlEditorSetup=d.$parent.$eval(j.taHtmlEditorSetup)),d.fileDropHandler=j.taFileDrop?d.$parent.$eval(j.taFileDrop):d.defaultFileDropHandler,r=i[0].innerHTML,i[0].innerHTML="",d.displayElements={forminput:angular.element(""),html:angular.element(""),text:angular.element("
"),popover:angular.element('
'),popoverContainer:angular.element('
')},d.displayElements.popover.append(d.displayElements.popoverContainer),i.append(d.displayElements.popover),d.displayElements.popover.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),d.showPopover=function(a){d.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),d.displayElements.popover.css("left",a[0].offsetLeft+a[0].offsetWidth/2-152.5+"px"),d.displayElements.popover.css("display","block"),g.addClass(d.displayElements.popover,"in"),b(function(){var a=function(){i.off("click",a),d.hidePopover()};i.on("click",a)},100)},d.hidePopover=function(){g.removeClass(d.displayElements.popover,"in",function(){d.displayElements.popover.css("display",""),d.displayElements.popoverContainer.attr("style",""),d.displayElements.popoverContainer.attr("class","popover-content")})},d.setup.htmlEditorSetup(d.displayElements.html),d.setup.textEditorSetup(d.displayElements.text),d.displayElements.html.attr({id:"taHtmlElement"+t,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),d.displayElements.text.attr({id:"taTextElement"+t,contentEditable:"true","ng-hide":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),j.taDefaultWrap&&d.displayElements.text.attr("ta-default-wrap",j.taDefaultWrap),i.append(d.displayElements.text),i.append(d.displayElements.html),d.displayElements.forminput.attr("name",u),i.append(d.displayElements.forminput),j.tabindex&&(i.removeAttr("tabindex"),d.displayElements.text.attr("tabindex",j.tabindex),d.displayElements.html.attr("tabindex",j.tabindex)),j.placeholder&&(d.displayElements.text.attr("placeholder",j.placeholder),d.displayElements.html.attr("placeholder",j.placeholder)),j.taDisabled&&(d.displayElements.text.attr("ta-readonly","disabled"),d.displayElements.html.attr("ta-readonly","disabled"),d.disabled=d.$parent.$eval(j.taDisabled),d.$parent.$watch(j.taDisabled,function(a){d.disabled=a,d.disabled?i.addClass(d.classes.disabled):i.removeClass(d.classes.disabled)})),a(d.displayElements.text)(d),a(d.displayElements.html)(d),d.updateTaBindtaTextElement=d["updateTaBindtaTextElement"+t],d.updateTaBindtaHtmlElement=d["updateTaBindtaHtmlElement"+t],i.addClass("ta-root"),d.displayElements.text.addClass("ta-text ta-editor "+d.classes.textEditor),d.displayElements.html.addClass("ta-html ta-editor "+d.classes.textEditor),d._actionRunning=!1;var v=!1;if(d.startAction=function(){return d._actionRunning=!0,f.rangy&&f.rangy.saveSelection?(v=f.rangy.saveSelection(),function(){v&&f.rangy.restoreSelection(v)}):void 0},d.endAction=function(){d._actionRunning=!1,v&&f.rangy.removeMarkers(v),v=!1,d.updateSelectedStyles(),d.showHtml||d["updateTaBindtaTextElement"+t]()},p=function(){i.addClass(d.classes.focussed),s.focus()},d.displayElements.html.on("focus",p),d.displayElements.text.on("focus",p),q=function(a){return d._actionRunning||document.activeElement===d.displayElements.html[0]||document.activeElement===d.displayElements.text[0]||(i.removeClass(d.classes.focussed),s.unfocus(),b(function(){i.triggerHandler("blur")},0)),a.preventDefault(),!1},d.displayElements.html.on("blur",q),d.displayElements.text.on("blur",q),d.queryFormatBlockState=function(a){return a.toLowerCase()===document.queryCommandValue("formatBlock").toLowerCase()},d.switchView=function(){d.showHtml=!d.showHtml,d.showHtml?b(function(){return d.displayElements.html[0].focus()},100):b(function(){return d.displayElements.text[0].focus()},100)},j.ngModel){var w=!0;k.$render=function(){if(w){w=!1;var a=d.$parent.$eval(j.ngModel);void 0!==a&&null!==a||!r||""===r||k.$setViewValue(r)}d.displayElements.forminput.val(k.$viewValue),d._elementSelectTriggered||document.activeElement===d.displayElements.html[0]||document.activeElement===d.displayElements.text[0]||(d.html=k.$viewValue||"")}}else d.displayElements.forminput.val(r),d.html=r;if(d.$watch("html",function(a,b){a!==b&&(j.ngModel&&k.$viewValue!==a&&k.$setViewValue(a),d.displayElements.forminput.val(a))}),j.taTargetToolbars)s=e.registerEditor(u,d,j.taTargetToolbars.split(","));else{var x=angular.element('
');j.taToolbar&&x.attr("ta-toolbar",j.taToolbar),j.taToolbarClass&&x.attr("ta-toolbar-class",j.taToolbarClass),j.taToolbarGroupClass&&x.attr("ta-toolbar-group-class",j.taToolbarGroupClass),j.taToolbarButtonClass&&x.attr("ta-toolbar-button-class",j.taToolbarButtonClass),j.taToolbarActiveButtonClass&&x.attr("ta-toolbar-active-button-class",j.taToolbarActiveButtonClass),j.taFocussedClass&&x.attr("ta-focussed-class",j.taFocussedClass),i.prepend(x),a(x)(d.$parent),s=e.registerEditor(u,d,["textAngularToolbar"+t])}d.$on("$destroy",function(){e.unregisterEditor(u)}),d.$on("ta-element-select",function(a,b){s.triggerElementSelect(a,b)}),d.$on("ta-drop-event",function(a,b,c,e){d.displayElements.text[0].focus(),e&&e.files&&e.files.length>0&&(angular.forEach(e.files,function(a){try{return d.fileDropHandler(a,d.wrapSelection)||d.fileDropHandler!==d.defaultFileDropHandler&&d.defaultFileDropHandler(a,d.wrapSelection)}catch(b){h.error(b)}}),c.preventDefault(),c.stopPropagation())}),d._bUpdateSelectedStyles=!1,d.updateSelectedStyles=function(){var a;f.rangy&&f.rangy.getSelection&&1===(a=f.rangy.getSelection().getAllRanges()).length&&a[0].commonAncestorContainer.parentNode!==d.displayElements.text[0]?s.updateSelectedStyles(angular.element(a[0].commonAncestorContainer.parentNode)):s.updateSelectedStyles(),d._bUpdateSelectedStyles&&b(d.updateSelectedStyles,200)},l=function(){d._bUpdateSelectedStyles||(d._bUpdateSelectedStyles=!0,d.$apply(function(){d.updateSelectedStyles()}))},d.displayElements.html.on("keydown",l),d.displayElements.text.on("keydown",l),m=function(){d._bUpdateSelectedStyles=!1},d.displayElements.html.on("keyup",m),d.displayElements.text.on("keyup",m),n=function(a,b){b&&angular.extend(a,b),d.$apply(function(){return s.sendKeyCommand(a)?(d._bUpdateSelectedStyles||d.updateSelectedStyles(),a.preventDefault(),!1):void 0})},d.displayElements.html.on("keypress",n),d.displayElements.text.on("keypress",n),o=function(){d._bUpdateSelectedStyles=!1,d.$apply(function(){d.updateSelectedStyles()})},d.displayElements.html.on("mouseup",o),d.displayElements.text.on("mouseup",o)}}}]).directive("taBind",["taSanitize","$timeout","$window","taFixChrome","taSelectableElements","taApplyCustomRenderers",function(a,c,e,f,h,j){return{require:"ngModel",scope:{},link:function(k,l,m,n){var o,p=void 0!==l.attr("contenteditable")&&l.attr("contenteditable"),q=p||"textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase(),r=!1,s=!1;void 0===m.taDefaultWrap&&(m.taDefaultWrap="p"),o=""===m.taDefaultWrap?"":void 0===g?"<"+m.taDefaultWrap+">
":"<"+m.taDefaultWrap+">";var t=function(){if(p)return l[0].innerHTML;if(q)return l.val();throw"textAngular Error: attempting to update non-editable taBind"};if(k.$parent["updateTaBind"+(m.id||"")]=function(){r||n.$setViewValue(t())},q)if(p){if(l.on("cut",function(a){r?a.preventDefault():c(function(){n.$setViewValue(t())},0)}),l.on("paste",function(a,b){b&&angular.extend(a,b);var c;if(a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData?c=(a.originalEvent||a).clipboardData.getData("text/plain"):e.clipboardData&&(c=e.clipboardData.getData("Text")),!c&&!r)return!0;if(a.preventDefault(),!r){var d=angular.element("
");d[0].innerHTML=c,c=d.text(),document.execCommand("insertText",!1,c),n.$setViewValue(t())}}),l.on("keyup",function(){r||n.$setViewValue(t())}),l.on("blur",function(){s=!1;var a=t();r||n.$setViewValue(a===o?"":t()),n.$render()}),m.placeholder){var u;if(!m.id)throw"textAngular Error: An unique ID is required for placeholders to work";u=b("#"+m.id+".placeholder-text:before",'content: "'+m.placeholder+'"'),k.$on("$destroy",function(){d(u)})}l.on("focus",function(){s=!0,n.$render()})}else l.on("paste cut",function(){r||c(function(){n.$setViewValue(t())},0)}),l.on("change blur",function(){r||n.$setViewValue(t())});var v=function(b){return n.$oldViewValue=a(f(b),n.$oldViewValue)};n.$parsers.push(v),n.$formatters.push(v);var w=function(a){return k.$emit("ta-element-select",this),a.preventDefault(),!1},x=function(a,b){if(b&&angular.extend(a,b),!i&&!r){i=!0;var d;d=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,k.$emit("ta-drop-event",this,a,d),c(function(){i=!1},100)}};k.$parent["reApplyOnSelectorHandlers"+(m.id||"")]=function(){r||angular.forEach(h,function(a){l.find(a).off("click",w).on("click",w)})},n.$render=function(){var a=n.$viewValue||"";document.activeElement!==l[0]?p?(m.placeholder?""===a?(s?l.removeClass("placeholder-text"):l.addClass("placeholder-text"),l[0].innerHTML=o):(l.removeClass("placeholder-text"),l[0].innerHTML=a):l[0].innerHTML=""===a?o:a,r?l.off("drop",x):(angular.forEach(h,function(a){l.find(a).on("click",w)}),l.on("drop",x))):"textarea"!==l[0].tagName.toLowerCase()&&"input"!==l[0].tagName.toLowerCase()?l[0].innerHTML=j(a):l.val(a):p&&l.removeClass("placeholder-text")},m.taReadonly&&(r=k.$parent.$eval(m.taReadonly),r?(("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase())&&l.attr("disabled","disabled"),void 0!==l.attr("contenteditable")&&l.attr("contenteditable")&&l.removeAttr("contenteditable")):"textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase()?l.removeAttr("disabled"):p&&l.attr("contenteditable","true"),k.$parent.$watch(m.taReadonly,function(a,b){b!==a&&(a?(("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase())&&l.attr("disabled","disabled"),void 0!==l.attr("contenteditable")&&l.attr("contenteditable")&&l.removeAttr("contenteditable"),angular.forEach(h,function(a){l.find(a).on("click",w)}),l.off("drop",x)):("textarea"===l[0].tagName.toLowerCase()||"input"===l[0].tagName.toLowerCase()?l.removeAttr("disabled"):p&&l.attr("contenteditable","true"),angular.forEach(h,function(a){l.find(a).off("click",w)}),l.on("drop",x)),r=a)})),p&&!r&&(angular.forEach(h,function(a){l.find(a).on("click",w)}),l.on("drop",x))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(b){var c=angular.element("
");return c[0].innerHTML=b,angular.forEach(a,function(a){var b=[];a.selector&&""!==a.selector?b=c.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(b=e(c,a.customAttribute)),angular.forEach(b,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)})}),c[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)}}}).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(b,c){var d=angular.element("
"+b+"
");angular.forEach(e(d,"align"),function(a){a.css("text-align",a.attr("align")),a.removeAttr("align")}),b=d[0].innerHTML;var f;try{f=a(b)}catch(g){f=c||""}return f}}]).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:"