diff --git a/angular-contenteditable.js b/angular-contenteditable.js
index 6f315f5..8ee2e28 100644
--- a/angular-contenteditable.js
+++ b/angular-contenteditable.js
@@ -1,73 +1,73 @@
angular.module('contenteditable', [])
- .directive('contenteditable', ['$timeout', function($timeout) { return {
- require: 'ngModel',
- link: function($scope, $element, attrs, ngModel) {
- var old_render
- // view -> model
- $element.bind('input', function(e) {
- $scope.$apply(function() {
- var html, html2, rerender
- html = $element.html()
- rerender = false
- if (attrs.stripBr && attrs.stripBr !== "false") {
- html = html.replace(/
$/, '')
- }
- if (attrs.noLineBreaks && attrs.noLineBreaks !== "false") {
- html2 = html.replace(/
/g, '').replace(/
/g, '').replace(/<\/div>/g, '')
- if (html2 !== html) {
- rerender = true
- html = html2
- }
- }
- ngModel.$setViewValue(html)
- if (rerender) {
- ngModel.$render()
- }
- if (html === '') {
- // the cursor disappears if the contents is empty
- // so we need to refocus
- $timeout(function(){
- $element.blur()
- $element.focus()
- })
- }
- })
+ .directive('contenteditable', ['$timeout', function($timeout) { return {
+ require: 'ngModel',
+ link: function($scope, $element, attrs, ngModel) {
+ var old_render
+ // view -> model
+ $element.bind('input', function(e) {
+ $scope.$apply(function() {
+ var html, html2, rerender
+ html = $element.html()
+ rerender = false
+ if (attrs.stripBr && attrs.stripBr !== "false") {
+ html = html.replace(/
$/, '')
+ }
+ if (attrs.noLineBreaks && attrs.noLineBreaks !== "false") {
+ html2 = html.replace(/
/g, '').replace(/
/g, '').replace(/<\/div>/g, '')
+ if (html2 !== html) {
+ rerender = true
+ html = html2
+ }
+ }
+ ngModel.$setViewValue(html)
+ if (rerender) {
+ ngModel.$render()
+ }
+ if (html === '') {
+ // the cursor disappears if the contents is empty
+ // so we need to refocus
+ $timeout(function(){
+ $element.blur()
+ $element.focus()
})
+ }
+ })
+ })
- // model -> view
- old_render = ngModel.$render
- ngModel.$render = function() {
- var el, el2, range, sel
- if (!!old_render) {
- old_render()
- }
- $element.html(ngModel.$viewValue || '')
- el = $element.get(0)
- range = document.createRange()
- sel = window.getSelection()
- if (el.childNodes.length > 0) {
- el2 = el.childNodes[el.childNodes.length - 1]
- range.setStartAfter(el2)
- } else {
- range.setStartAfter(el)
- }
- range.collapse(true)
- sel.removeAllRanges()
- sel.addRange(range)
- }
- if (attrs.selectNonEditable && attrs.selectNonEditable !== "false") {
- $element.click(function(e) {
- var range, sel, target
- target = e.toElement
- if (target !== this && angular.element(target).attr('contenteditable') === 'false') {
- range = document.createRange()
- sel = window.getSelection()
- range.setStartBefore(target)
- range.setEndAfter(target)
- sel.removeAllRanges()
- sel.addRange(range)
- }
- })
- }
+ // model -> view
+ old_render = ngModel.$render
+ ngModel.$render = function() {
+ var el, el2, range, sel
+ if (!!old_render) {
+ old_render()
+ }
+ $element.html(ngModel.$viewValue || '')
+ el = $element.get(0)
+ range = document.createRange()
+ sel = window.getSelection()
+ if (el.childNodes.length > 0) {
+ el2 = el.childNodes[el.childNodes.length - 1]
+ range.setStartAfter(el2)
+ } else {
+ range.setStartAfter(el)
}
- }}])
+ range.collapse(true)
+ sel.removeAllRanges()
+ sel.addRange(range)
+ }
+ if (attrs.selectNonEditable && attrs.selectNonEditable !== "false") {
+ $element.click(function(e) {
+ var range, sel, target
+ target = e.toElement
+ if (target !== this && angular.element(target).attr('contenteditable') === 'false') {
+ range = document.createRange()
+ sel = window.getSelection()
+ range.setStartBefore(target)
+ range.setEndAfter(target)
+ sel.removeAllRanges()
+ sel.addRange(range)
+ }
+ })
+ }
+ }
+ }}])