{"version":3,"file":"summernote.min.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-en-US.js","webpack://summernote/external umd \"jQuery\"","webpack://summernote/webpack/bootstrap","webpack://summernote/webpack/runtime/compat get default export","webpack://summernote/webpack/runtime/define property getters","webpack://summernote/webpack/runtime/hasOwnProperty shorthand","webpack://summernote/webpack/runtime/make namespace object","webpack://summernote/./src/js/core/env.js","webpack://summernote/./src/js/core/func.js","webpack://summernote/./src/js/core/lists.js","webpack://summernote/./src/js/core/dom.js","webpack://summernote/./src/js/Context.js","webpack://summernote/./src/js/core/range.js","webpack://summernote/./src/js/summernote.js","webpack://summernote/./src/js/core/key.js","webpack://summernote/./src/js/editing/History.js","webpack://summernote/./src/js/editing/Style.js","webpack://summernote/./src/js/editing/Bullet.js","webpack://summernote/./src/js/editing/Typing.js","webpack://summernote/./src/js/editing/Table.js","webpack://summernote/./src/js/module/Editor.js","webpack://summernote/./src/js/core/async.js","webpack://summernote/./src/js/module/Clipboard.js","webpack://summernote/./src/js/module/Dropzone.js","webpack://summernote/./src/js/module/Codeview.js","webpack://summernote/./src/js/module/Statusbar.js","webpack://summernote/./src/js/module/Fullscreen.js","webpack://summernote/./src/js/module/Handle.js","webpack://summernote/./src/js/module/AutoLink.js","webpack://summernote/./src/js/module/AutoSync.js","webpack://summernote/./src/js/module/AutoReplace.js","webpack://summernote/./src/js/module/Placeholder.js","webpack://summernote/./src/js/module/Buttons.js","webpack://summernote/./src/js/module/Toolbar.js","webpack://summernote/./src/js/module/LinkDialog.js","webpack://summernote/./src/js/module/LinkPopover.js","webpack://summernote/./src/js/module/ImageDialog.js","webpack://summernote/./src/js/module/ImagePopover.js","webpack://summernote/./src/js/module/TablePopover.js","webpack://summernote/./src/js/module/VideoDialog.js","webpack://summernote/./src/js/module/HelpDialog.js","webpack://summernote/./src/js/module/AirPopover.js","webpack://summernote/./src/js/module/HintPopover.js","webpack://summernote/./src/js/settings.js","webpack://summernote/./src/js/renderer.js","webpack://summernote/./src/styles/bs3/summernote-bs3.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jQuery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jQuery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__1145__) {\nreturn ","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","module.exports = __WEBPACK_EXTERNAL_MODULE__1145__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import $ from 'jquery';\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with  \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '
';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex)


,
\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex)

, \n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset = 0;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n if(point.node === null){\n return null;\n }\n\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n\n // if next node is editable , return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n if (!isEmpty(point.node.nextSibling)) {\n return {\n node: point.node.nextSibling,\n offset: offset,\n };\n }\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if(!actual.nextSibling) return undefined;\n if(actual.parent !== actual.nextSibling.parent) return undefined;\n\n if(isText(actual.nextSibling) ) return actual.nextSibling;\n else return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode)) || isTable(rightNode)) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, ,

]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `

${blankHTML}

`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |

text

|\n * - chrome:

|text|

\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('
').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import $ from 'jquery';\nimport env from './core/env';\nimport lists from './core/lists';\nimport Context from './Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(