| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- define([
- 'summernote/core/dom',
- 'summernote/core/range',
- 'summernote/editing/Bullet'
- ], function (dom, range, Bullet) {
- /**
- * @class editing.Typing
- *
- * Typing
- *
- */
- var Typing = function () {
- // a Bullet instance to toggle lists off
- var bullet = new Bullet();
- /**
- * insert tab
- *
- * @param {jQuery} $editable
- * @param {WrappedRange} rng
- * @param {Number} tabsize
- */
- this.insertTab = function ($editable, rng, tabsize) {
- var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));
- rng = rng.deleteContents();
- rng.insertNode(tab, true);
- rng = range.create(tab, tabsize);
- rng.select();
- };
- /**
- * insert paragraph
- */
- this.insertParagraph = function () {
- var rng = range.create();
- // deleteContents on range.
- rng = rng.deleteContents();
- // Wrap range if it needs to be wrapped by paragraph
- rng = rng.wrapBodyInlineWithPara();
- // finding paragraph
- var splitRoot = dom.ancestor(rng.sc, dom.isPara);
- var nextPara;
- // on paragraph: split paragraph
- if (splitRoot) {
- // if it is an empty line with li
- if (dom.isEmpty(splitRoot) && dom.isLi(splitRoot)) {
- // disable UL/OL and escape!
- bullet.toggleList(splitRoot.parentNode.nodeName);
- return;
- // if new line has content (not a line break)
- } else {
- nextPara = dom.splitTree(splitRoot, rng.getStartPoint());
- var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);
- emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));
- $.each(emptyAnchors, function (idx, anchor) {
- dom.remove(anchor);
- });
- }
- // no paragraph: insert empty paragraph
- } else {
- var next = rng.sc.childNodes[rng.so];
- nextPara = $(dom.emptyPara)[0];
- if (next) {
- rng.sc.insertBefore(nextPara, next);
- } else {
- rng.sc.appendChild(nextPara);
- }
- }
- range.create(nextPara, 0).normalize().select();
- };
- };
- return Typing;
- });
|