From dabf462baa43a4bc7adb1ba4571176ad42b6bc35 Mon Sep 17 00:00:00 2001 From: Austin Stewart Date: Mon, 2 May 2016 14:27:24 -0500 Subject: [PATCH] Created a factory to properly inject MediumEditor. --- dist/angular-medium-editor.js | 106 ++++++++++++++++-------------- dist/angular-medium-editor.min.js | 4 +- src/angular-medium-editor.js | 106 ++++++++++++++++-------------- 3 files changed, 114 insertions(+), 102 deletions(-) diff --git a/dist/angular-medium-editor.js b/dist/angular-medium-editor.js index 538932d..a6093c1 100644 --- a/dist/angular-medium-editor.js +++ b/dist/angular-medium-editor.js @@ -3,57 +3,63 @@ angular.module('angular-medium-editor', []) - .directive('mediumEditor', function() { + .factory('MediumEditor', ['$window', function($window) { - function toInnerText(value) { - var tempEl = document.createElement('div'), - text; - tempEl.innerHTML = value; - text = tempEl.textContent || ''; - return text.trim(); - } + return $window.MediumEditor; - return { - require: 'ngModel', - restrict: 'AE', - scope: { bindOptions: '=' }, - link: function(scope, iElement, iAttrs, ngModel) { + }]) - angular.element(iElement).addClass('angular-medium-editor'); - - // Global MediumEditor - ngModel.editor = new MediumEditor(iElement, scope.bindOptions); - - ngModel.$render = function() { - iElement.html(ngModel.$viewValue || ""); - var placeholder = ngModel.editor.getExtensionByName('placeholder'); - if (placeholder) { - placeholder.updatePlaceholder(iElement[0]); - } - }; - - ngModel.$isEmpty = function(value) { - if (/[<>]/.test(value)) { - return toInnerText(value).length === 0; - } else if (value) { - return value.length === 0; - } else { - return true; - } - }; - - ngModel.editor.subscribe('editableInput', function (event, editable) { - ngModel.$setViewValue(editable.innerHTML.trim()); - }); - - scope.$watch('bindOptions', function(bindOptions) { - ngModel.editor.init(iElement, bindOptions); - }); - - scope.$on('$destroy', function() { - ngModel.editor.destroy(); - }); + .directive('mediumEditor', ['MediumEditor', function(MediumEditor) { + + function toInnerText(value) { + var tempEl = document.createElement('div'), + text; + tempEl.innerHTML = value; + text = tempEl.textContent || ''; + return text.trim(); } - }; - - }); + + return { + require: 'ngModel', + restrict: 'AE', + scope: { bindOptions: '=' }, + link: function(scope, iElement, iAttrs, ngModel) { + + angular.element(iElement).addClass('angular-medium-editor'); + + // Global MediumEditor + ngModel.editor = new MediumEditor(iElement, scope.bindOptions); + + ngModel.$render = function() { + iElement.html(ngModel.$viewValue || ''); + var placeholder = ngModel.editor.getExtensionByName('placeholder'); + if (placeholder) { + placeholder.updatePlaceholder(iElement[0]); + } + }; + + ngModel.$isEmpty = function(value) { + if (/[<>]/.test(value)) { + return toInnerText(value).length === 0; + } else if (value) { + return value.length === 0; + } else { + return true; + } + }; + + ngModel.editor.subscribe('editableInput', function (event, editable) { + ngModel.$setViewValue(editable.innerHTML.trim()); + }); + + scope.$watch('bindOptions', function(bindOptions) { + ngModel.editor.init(iElement, bindOptions); + }); + + scope.$on('$destroy', function() { + ngModel.editor.destroy(); + }); + } + }; + + }]); diff --git a/dist/angular-medium-editor.min.js b/dist/angular-medium-editor.min.js index f79a339..c4782b4 100644 --- a/dist/angular-medium-editor.min.js +++ b/dist/angular-medium-editor.min.js @@ -1,8 +1,8 @@ /** * angular-medium-editor - * @version v1.1.1 - 2016-03-15 + * @version v1.1.1 - 2016-05-02 * @link https://github.com/thijsw/angular-medium-editor * @author Thijs Wijnmaalen * @license MIT License, http://www.opensource.org/licenses/MIT */ -"use strict";angular.module("angular-medium-editor",[]).directive("mediumEditor",function(){function a(a){var b,c=document.createElement("div");return c.innerHTML=a,b=c.textContent||"",b.trim()}return{require:"ngModel",restrict:"AE",scope:{bindOptions:"="},link:function(b,c,d,e){angular.element(c).addClass("angular-medium-editor"),e.editor=new MediumEditor(c,b.bindOptions),e.$render=function(){c.html(e.$viewValue||"");var a=e.editor.getExtensionByName("placeholder");a&&a.updatePlaceholder(c[0])},e.$isEmpty=function(b){return/[<>]/.test(b)?0===a(b).length:b?0===b.length:!0},e.editor.subscribe("editableInput",function(a,b){e.$setViewValue(b.innerHTML.trim())}),b.$watch("bindOptions",function(a){e.editor.init(c,a)}),b.$on("$destroy",function(){e.editor.destroy()})}}}); \ No newline at end of file +"use strict";angular.module("angular-medium-editor",[]).factory("MediumEditor",["$window",function(a){return a.MediumEditor}]).directive("mediumEditor",["MediumEditor",function(a){function b(a){var b,c=document.createElement("div");return c.innerHTML=a,b=c.textContent||"",b.trim()}return{require:"ngModel",restrict:"AE",scope:{bindOptions:"="},link:function(c,d,e,f){angular.element(d).addClass("angular-medium-editor"),f.editor=new a(d,c.bindOptions),f.$render=function(){d.html(f.$viewValue||"");var a=f.editor.getExtensionByName("placeholder");a&&a.updatePlaceholder(d[0])},f.$isEmpty=function(a){return/[<>]/.test(a)?0===b(a).length:a?0===a.length:!0},f.editor.subscribe("editableInput",function(a,b){f.$setViewValue(b.innerHTML.trim())}),c.$watch("bindOptions",function(a){f.editor.init(d,a)}),c.$on("$destroy",function(){f.editor.destroy()})}}}]); \ No newline at end of file diff --git a/src/angular-medium-editor.js b/src/angular-medium-editor.js index 538932d..a6093c1 100644 --- a/src/angular-medium-editor.js +++ b/src/angular-medium-editor.js @@ -3,57 +3,63 @@ angular.module('angular-medium-editor', []) - .directive('mediumEditor', function() { + .factory('MediumEditor', ['$window', function($window) { - function toInnerText(value) { - var tempEl = document.createElement('div'), - text; - tempEl.innerHTML = value; - text = tempEl.textContent || ''; - return text.trim(); - } + return $window.MediumEditor; - return { - require: 'ngModel', - restrict: 'AE', - scope: { bindOptions: '=' }, - link: function(scope, iElement, iAttrs, ngModel) { + }]) - angular.element(iElement).addClass('angular-medium-editor'); - - // Global MediumEditor - ngModel.editor = new MediumEditor(iElement, scope.bindOptions); - - ngModel.$render = function() { - iElement.html(ngModel.$viewValue || ""); - var placeholder = ngModel.editor.getExtensionByName('placeholder'); - if (placeholder) { - placeholder.updatePlaceholder(iElement[0]); - } - }; - - ngModel.$isEmpty = function(value) { - if (/[<>]/.test(value)) { - return toInnerText(value).length === 0; - } else if (value) { - return value.length === 0; - } else { - return true; - } - }; - - ngModel.editor.subscribe('editableInput', function (event, editable) { - ngModel.$setViewValue(editable.innerHTML.trim()); - }); - - scope.$watch('bindOptions', function(bindOptions) { - ngModel.editor.init(iElement, bindOptions); - }); - - scope.$on('$destroy', function() { - ngModel.editor.destroy(); - }); + .directive('mediumEditor', ['MediumEditor', function(MediumEditor) { + + function toInnerText(value) { + var tempEl = document.createElement('div'), + text; + tempEl.innerHTML = value; + text = tempEl.textContent || ''; + return text.trim(); } - }; - - }); + + return { + require: 'ngModel', + restrict: 'AE', + scope: { bindOptions: '=' }, + link: function(scope, iElement, iAttrs, ngModel) { + + angular.element(iElement).addClass('angular-medium-editor'); + + // Global MediumEditor + ngModel.editor = new MediumEditor(iElement, scope.bindOptions); + + ngModel.$render = function() { + iElement.html(ngModel.$viewValue || ''); + var placeholder = ngModel.editor.getExtensionByName('placeholder'); + if (placeholder) { + placeholder.updatePlaceholder(iElement[0]); + } + }; + + ngModel.$isEmpty = function(value) { + if (/[<>]/.test(value)) { + return toInnerText(value).length === 0; + } else if (value) { + return value.length === 0; + } else { + return true; + } + }; + + ngModel.editor.subscribe('editableInput', function (event, editable) { + ngModel.$setViewValue(editable.innerHTML.trim()); + }); + + scope.$watch('bindOptions', function(bindOptions) { + ngModel.editor.init(iElement, bindOptions); + }); + + scope.$on('$destroy', function() { + ngModel.editor.destroy(); + }); + } + }; + + }]);