Rich text features built around contenteditable written in AngularJS