{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/bs3/ui.js","webpack:///./src/js/bs3/settings.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","Renderer","constructor","markup","children","options","callback","this","render","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","length","append","__webpack_exports__","arguments","Array","isArray","__webpack_amd_options__","summernote","lang","extend","en-US","font","bold","italic","underline","clear","height","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","linkDialog.show","history","specialChar","select","output","noSelection","isSupportAmd","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","userAgent","navigator","isMSIE","test","browserVersion","matches","exec","parseFloat","isEdge","hasCodeMirror","CodeMirror","isSupportTouch","MaxTouchPoints","msMaxTouchPoints","inputEventName","env","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isFontInstalled","testFontName","context","document","createElement","getContext","testSize","originalWidth","measureText","width","isW3CRangeSupport","createRange","idCounter","func","eq","itemA","itemB","eq2","peq2","propName","ok","fail","self","not","f","apply","and","fA","fB","item","invoke","obj","method","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","wait","immediate","timeout","args","callNow","clearTimeout","setTimeout","isValidUrl","head","array","last","tail","slice","contains","lists_head","lists_last","initial","prev","idx","next","pred","len","all","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aLast","compact","aResult","push","unique","results","NBSP_CHAR","String","fromCharCode","isEditable","node","hasClass","makePredByNodeName","nodeName","isText","nodeType","isVoid","isPara","isPre","isLi","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isBody","blankHTML","nodeLength","nodeValue","childNodes","innerHTML","paddingBlankHTML","ancestor","parentNode","listAncestor","ancestors","el","listNext","nodes","nextSibling","insertAfter","preceding","parent","insertBefore","appendChild","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","previousSibling","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","isSamePoint","pointA","pointB","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","isRemoveChild","removeNode","removeChild","isTextarea","stripLinebreaks","val","replace","dom","ZERO_WIDTH_NBSP_CHAR","blank","emptyPara","isControlSizing","isElement","isPurePara","isHeading","dom_isInline","isBlock","isBodyInline","isParaInline","dom_isCell","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","deepestChildIsEmpty","firstElementChild","dom_isEmpty","isEmptyAnchor","isClosestSibling","nodeA","nodeB","withClosestSiblings","siblings","isLeftEdgePointOf","isRightEdgePointOf","dom_prevPoint","dom_nextPoint","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","dom_ancestor","singleChildAncestor","lastAncestor","filter","listPrev","listDescendant","descendants","fnWalk","current","commonAncestor","wrap","wrapperName","wrapper","dom_position","makeOffsetPath","reverse","fromOffsetPath","offsets","splitPoint","topAncestor","splitRoot","container","pivot","createText","text","createTextNode","removeWhile","newNode","cssText","isNewlineOnBlock","regexTag","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","dom_value","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","Context","$note","ui","memos","layoutInfo","initialize","createLayout","_initialize","hide","destroy","_destroy","removeData","removeLayout","disabled","isDisabled","code","disable","now","editor","buttons","plugins","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","undefined","codable","editable","enable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","createInvokeHandlerAndUpdateState","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","textRangeToPoint","textRange","isStart","parentElement","tester","body","createTextRange","prevContainer","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","cont","pointToTextRange","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","info","moveStart","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","nativeRange","w3cRange","setStart","setEnd","Math","min","getPoints","getStartPoint","getEndPoint","nativeRng","selection","getSelection","rangeCount","removeAllRanges","addRange","scrollIntoView","offsetTop","abs","normalize","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","isCollapsed","includeAncestor","fullyContains","leftEdgeNodes","expand","startAncestor","endAncestor","boundaryPoints","isSameContainer","deleteContents","rng","emptyParents","wrapBodyInlineWithPara","inlineSiblings","concat","para","insertNode","pasteHTML","contentsContainer","toString","getWordRange","findAfter","getWordsRange","isNotTextPoint","getWordsMatchRange","regex","index","bookmark","path","e","paraBookmark","paras","getClientRects","core_range","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","createFromParaBookmark","KEY_MAP","BACKSPACE","TAB","ENTER","SPACE","DELETE","LEFT","UP","RIGHT","DOWN","NUM0","NUM1","NUM2","NUM3","NUM4","NUM5","NUM6","NUM7","NUM8","B","E","I","J","K","L","R","S","U","V","Y","Z","SLASH","LEFTBRACKET","BACKSLASH","RIGHTBRACKET","HOME","END","PAGEUP","PAGEDOWN","core_key","isEdit","keyCode","isMove","isNavigation","nameFromCode","History","$editable","stack","stackOffset","makeSnapshot","range","applySnapshot","snapshot","rewind","recordUndo","commit","Style","jQueryCSS","$obj","propertyNames","propertyName","css","fromNode","styleInfo","fontSize","parseInt","stylePara","styleNodes","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","font-bold","queryCommandState","font-italic","font-underline","font-subscript","font-superscript","font-strikethrough","font-family","queryCommandValue","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","insertTab","tabsize","nextPara","blockquoteBreakingLevel","emptyAnchors","TableResultAction","where","domTable","_startPoint","colPos","rowPos","_virtualTable","_actionCellList","setVirtualTablePosition","rowIndex","cellIndex","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","isVirtual","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","virtualTable","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","tagName","console","error","rows","cells","createVirtualTable","Table","isShift","nextCell","addRow","currentTr","trAttributes","recoverAttributes","actions","idCell","currentCell","tdAttributes","newTd","removeAttr","setAttribute","before","lastTrIndex","after","addCol","actionIndex","resultStr","attrList","specified","deleteRow","cellPos","virtualPosition","hasRowspan","nextRow","cloneRow","removeAttribute","deleteCol","createTable","colCount","rowCount","tds","tdHTML","idxCol","trs","trHTML","idxRow","$table","tableClassName","deleteTable","KEY_BOGUS","EDITABLE_PADDING","defaultScheme","linkPattern","AIR_MODE_POPOVER_X_OFFSET","POPOVER_DIST","version","$editor","lastRange","typing","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","onApplyCustomStyle","onFormatBlock","hrNode","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","colorInfo","foreColor","backColor","insertTable","dim","dimension","removeMedia","restoreTarget","detach","floatMe","toggleClass","resize","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","spellCheck","disableGrammar","airMode","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","saveRange","thenCollapse","restoreRange","saveTarget","clearTarget","styleFromNode","isPreventTrigger","normalizeContent","tabSize","insertImage","src","param","Deferred","deferred","$img","one","resolve","reject","display","appendTo","promise","then","$image","show","insertImagesAsDataURL","files","file","filename","maximumImageFileSize","FileReader","onload","dataURL","onerror","err","readAsDataURL","readFileAsDataURL","insertImagesOrCallback","onImageUpload","getSelectedText","currentRange","spans","firstSpan","noteStatusOutput","getLinkInfo","$anchor","resizeTo","bKeepRatio","imageSize","newRatio","y","x","ratio","hasFocus","is","empty","clipboard","pasteByEvent","clipboardData","originalEvent","items","kind","getAsFile","getData","dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","$codable","sync","save","toggle","deactivate","activate","purify","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","codemirror","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","isChange","statusbar","$statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","$toolbar","toolbar","$window","$scrollbar","onResize","h","setsize","isFullscreen","handle","$editingArea","editingArea","summernote.mousedown","we","update","summernote.keyup summernote.scroll summernote.change summernote.dialog.shown","summernote.disable summernote.blur","summernote.codeview.toggled","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","hintPopover","hint","direction","hintDirection","hints","summernote.keyup","handleKeyup","summernote.keydown","handleKeydown","summernote.disable summernote.dialog.shown summernote.blur","lastWordRange","matchingWord","$popover","popover","hideArrow","$content","currentTarget","selectItem","$item","innerHeight","moveDown","$current","$next","$nextGroup","moveUp","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","createItemTemplates","hintIdx","template","searchKeyword","keyword","search","createGroup","$group","wordRange","hintMode","bnd","targetOffset","autoLink","urlText","linkTargetBlank","autoSync","summernote.change","autoReplace","PERIOD","COMMA","SEMICOLON","previousKeydownCode","lastWord","jQuery","Node","inheritPlaceholder","summernote.init summernote.change","isShow","invertedKeyMap","representShortcut","editorMethod","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","isFontDeservedToAdd","colorPalette","buttonGroup","icon","$button","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","styleIdx","styleLen","eraser","addDefaultFonts","fontname","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","unorderedlist","orderedlist","alignLeft","alignCenter","alignRight","alignJustify","textHeight","lineHeights","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","build","groups","groupIdx","groupLen","group","groupName","btn","updateCurrentStyle","updateBtnStates",".note-btn-bold",".note-btn-italic",".note-btn-underline",".note-btn-subscript",".note-btn-superscript",".note-btn-strikethrough","isChecked","infos","selector","toggleBtnActive","$dimensionDisplay","$catcher","$highlighted","$unhighlighted","posOffset","offsetX","posCatcher","pageX","pageY","offsetY","ceil","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","activateOffset","deactivateOffsetBottom","zIndex","marginTop","updateFullscreen","updateCodeview","isIncludeCodeview","$btn","toggleBtn","linkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","footer","$dialog","dialog","fade","dialogsFade","hideDialog","bindEnterKey","$input","toggleLinkBtn","$linkBtn","$linkText","$linkUrl","showLinkDialog","$openInNewWindow","$useProtocol","onDialogShown","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","linkPopover","summernote.keyup summernote.mouseup summernote.change summernote.scroll","href","imageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","imagePopover","editingOffset","popatmouse","tablePopover","summernote.keyup summernote.scroll summernote.change","videoDialog","createVideoNode","ytRegExpForStart","ytMatch","igMatch","vMatch","vimMatch","dmMatch","youkuMatch","qqMatch","qqMatch2","mp4Match","oggMatch","webmMatch","fbMatch","$video","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","$videoUrl","$videoBtn","helpDialog","createShortcutList","max-height","overflow","command","$row","margin-right","showHelpDialog","airPopover","hidable","summernote.keyup summernote.mouseup summernote.scroll","summernote.disable summernote.change summernote.dialog.shown summernote.blur","summernote.focusout","air","toolbarPosition","tabDisabled","styleWithSpan","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","htmlMode","lineNumbers","pc","CTRL+Z","CTRL+Y","SHIFT+TAB","CTRL+B","CTRL+I","CTRL+U","CTRL+SHIFT+S","CTRL+BACKSLASH","CTRL+SHIFT+L","CTRL+SHIFT+E","CTRL+SHIFT+R","CTRL+SHIFT+J","CTRL+SHIFT+NUM7","CTRL+SHIFT+NUM8","CTRL+LEFTBRACKET","CTRL+RIGHTBRACKET","CTRL+NUM0","CTRL+NUM1","CTRL+NUM2","CTRL+NUM3","CTRL+NUM4","CTRL+NUM5","CTRL+NUM6","CTRL+ENTER","CTRL+K","mac","CMD+Z","CMD+SHIFT+Z","CMD+B","CMD+I","CMD+U","CMD+SHIFT+S","CMD+BACKSLASH","CMD+SHIFT+L","CMD+SHIFT+E","CMD+SHIFT+R","CMD+SHIFT+J","CMD+SHIFT+NUM7","CMD+SHIFT+NUM8","CMD+LEFTBRACKET","CMD+RIGHTBRACKET","CMD+NUM0","CMD+NUM1","CMD+NUM2","CMD+NUM3","CMD+NUM4","CMD+NUM5","CMD+NUM6","CMD+ENTER","CMD+K","align","caret","circle","frame","pencil","square","renderer","airEditor","airEditable","option","aria-label","rowSize","colSize","colorName","placement","iconClassName","isEnable","isActive","modal","interface"],"mappings":"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","file":"summernote.min.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})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 51);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","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, Vimeo, Vine, Instagram, DailyMotion or Youku)',\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 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes 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","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\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\nlet hasCodeMirror = !!window.CodeMirror;\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 jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n hasCodeMirror,\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 (obj.hasOwnProperty(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 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 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.ui = $.summernote.ui;\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\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, this.options);\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.layoutInfo.codable.val(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.sc.data && this.so > this.sc.data.length ? 0 : this.so);\n w3cRange.setEnd(this.ec, this.sc.data ? Math.min(this.eo, this.sc.data.length) : 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 } 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\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n }\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n if (rng.so > 0) {\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 './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/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 '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($editable) {\n this.stack = [];\n this.stackOffset = -1;\n this.$editable = $editable;\n this.editable = $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}\n","import $ from 'jquery';\nimport env from '../core/env';\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 if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\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\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(