{"version":3,"sources":["webpack:///./node_modules/@toast-ui/editor/dist/toastui-editor.js"],"names":["root","factory","module","exports","window","__WEBPACK_EXTERNAL_MODULE__15__","modules","installedModules","__webpack_require__","moduleId","i","l","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","__webpack_exports__","tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default","tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__","tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default","tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__","tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default","tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__","tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default","tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__","tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default","tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__","tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default","tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__","tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default","FIND_ZWB","_window","getComputedStyle","isTextNode","node","nodeType","Node","TEXT_NODE","isElemNode","ELEMENT_NODE","isBlockNode","test","this","getNodeName","tagName","getTextLength","len","textContent","replace","length","nodeValue","getOffsetLength","childNodes","getNodeOffsetOfParent","found","childNodesOfParent","parentNode","getChildNodeByOffset","index","currentNode","getNodeWithDirectionUntil","direction","untilNodeName","nodeName","foundedNode","directionKey","getPrevOffsetNodeUntil","prevNode","getParentUntilBy","matchCondition","stopCondition","getParentUntil","untilNode","targetNode","getNodeWithDirectionUnderParent","underNode","getTopPrevNodeUnder","getTopNextNodeUnder","getTopBlockNode","getPrevTextNode","previousSibling","lastChild","containsNode","walker","document","createTreeWalker","nextNode","findOffsetNode","offsetList","textNodeFilter","newWalkerOffset","result","text","walkerOffset","offset","shift","push","container","offsetInContainer","getNodeInfo","path","id","className","trim","getPath","paths","unshift","getTableCellByDirection","targetElement","nextElementSibling","previousElementSibling","getSiblingRowCellByDirection","needEdgeCell","targetRowElement","currentContainer","siblingContainer","isSiblingContainerExists","tableCellElement","nextSibling","parents","children","findAll","isMDSupportInlineNode","isStyledNode","removeChildFromStartToEndNode","start","end","child","removeChild","removeNodesByDirection","targetParent","isForward","nextParent","_parentNode","getLeafNode","_result","nextLeaf","firstChild","isInsideTaskBox","style","offsetX","offsetY","rect","left","parseInt","top","width","height","isListNode","isFirstListItem","isFirstLevelListItem","listNode","listParentNode","mergeNode","hasChildNodes","forEach","appendChild","normalize","createHorizontalRule","div","createElement","hr","setAttribute","createEmptyLine","changeTagOrder","tempNode","wrapper","replaceChild","mergeSameNodes","startNode","endNode","startBlockNode","endBlockNode","mergeTargetNode","tempNext","optimizeRange","range","collapsed","commonAncestorContainer","startContainer","endContainer","optimizedNode","_optimizedNode","_optimizedNode2","getAllTextNode","isCellNode","getLastNodeBy","condition","lastNode","getParentNodeBy","getSiblingNodeBy","createElementWith","contents","target","innerHTML","element","selector","nodeList","querySelectorAll","isContain","contained","contains","closest","parent","parentsUntil","foundChildren","DOCUMENT_FRAGMENT_NODE","filter","append","appended","insertAdjacentHTML","prepend","insertBefore","insertedNode","insertAfter","replaceWith","html","wrap","wrapInner","unwrap","remove","empty","setOffset","_element$parentNode$g","getBoundingClientRect","body","scrollTop","scrollLeft","getOffset","offsetTop","offsetLeft","offsetParent","getOuterWidth","includedMargin","widthValue","offsetWidth","_getComputedStyle","marginLeft","marginRight","getOuterHeight","heightValue","offsetHeight","_getComputedStyle2","marginTop","marginBottom","toggleClass","state","toggleFn","a","finalizeHtml","needHtmlText","frag","createDocumentFragment","getFragmentReplacedByNewlineToBr","fragment","texts","split","plainText","textNode","createTextNode","extend","extend_default","Command","type","keyMap","setKeyMap","_proto","getName","getType","isMDType","TYPE","MD","isWWType","WW","isGlobalType","GB","win","mac","typeStr","props","command","js_command","common","map","KEYMAP_OS_INDEX","commandManager_CommandManager","CommandManager","base","options","_command","_mdCommand","_wwCommand","_options","useCommandShortcut","keyMapCommand","_initEvent","_addCommandBefore","commandWrapper","eventManager","emit","addCommand","_len","arguments","args","Array","_key","apply","concat","commandBase","set","_this","listen","exec","ev","data","preventDefault","commandToRun","context","isMarkdownMode","mdEditor","wwEditor","_commandToRun","_len2","_key2","forEachArray","toArray","arrayLike","arr","slice","e","isString","css","v","k","getMdStartLine","getMdEndLine","getMdStartCh","getMdEndCh","isMultiLineNode","isHtmlNode","isStyledTextNode","isListItemNode","isInlineNode","findClosestNode","traverseParentNodes","addChPos","setChPos","mdNode","sourcepos","includeSelf","iteratee","originPos","addedCh","line","ch","newCh","inArray","getClass","setClassName","removeClass","origin","newClass","cssClass","classList","addClass","add","cls","objects","source","prop","hasOwnProp","isUndefined","obj","undefined","String","forEachOwnProperties","browser","chrome","firefox","safari","msie","edge","others","version","detectBrowser","tmp","nav","navigator","appName","userAgent","rIE","rIE11","rEdge","versionRegex","detector","Microsoft_Internet_Explorer","detectedVersion","match","parseFloat","Netscape","detected","fn","isMac","sendHostName","includes","sanitizeLinkAttribute","tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default","platform","targetItem","indexOf","availableLinkAttributes","attribute","linkAttribute","elProto","Element","matchSelector","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","doc","ownerDocument","isArray","searchElement","array","startIndex","hasClass","isNodeToBeCalculated","getAdditionalTopPos","getParentNodeObj","getCmRangeHeight","getNextEmptyLineHeight","getTotalOffsetTop","findAdjacentElementToScrollTop","getFallbackScrollTop","_utils_common__WEBPACK_IMPORTED_MODULE_0__","_utils_markdown__WEBPACK_IMPORTED_MODULE_1__","nestableTypes","nestableTagNames","tableElementTagNames","currentNodeHeight","targetNodeHeight","diff","querySelector","getNonNestableNodeObj","getParentListItemObj","orgMdNode","_ref","firstElementChild","cm","cmNodeHeight","lineInfo","handle","heightAtLine","Number","MAX_VALUE","detailLineInfo","el","parentElement","prev","_el","lastSibling","findLastSiblingElementToScrollTop","adjacentEl","scrollInfo","latestScrollTop","targetScrollTop","sourceScrollTop","Math","max","min","safeEvent","on","types","handler","bindEvent","func","eventHandler","event","addEventListener","attachEvent","memorizeHandler","wrappedHandler","events","existInEvents","off","unbindEvent","item","idx","removeHandler","splice","removeEventListener","detachEvent","default","u","f","h","g","b","y","C","x","N","w","D","L","setPrototypeOf","__proto__","constructor","assign","getOwnPropertySymbols","propertyIsEnumerable","getOwnPropertyDescriptor","Reflect","decorate","metadata","Promise","next","throw","done","then","label","sent","trys","ops","return","iterator","TypeError","pop","error","asyncIterator","resolve","raw","has","isRefDef","isTable","isList","isHeading","isHtmlBlock","isCodeBlock","createNode","RefDefNode","TableCellNode","TableNode","CodeNode","HtmlBlockNode","CodeBlockNode","LinkNode","HeadingNode","ListNode","BlockNode","removeAllNode","removeNodeById","getNodeById","isContainer","__importDefault","literal","unlink","prependChild","open","lineOffsets","stringContent","lastLineBlank","lastLineChecked","__extends","listData","level","headingType","destination","title","extendedAutolink","isFenced","fenceChar","fenceLength","fenceOffset","info","infoPadding","htmlBlockType","tickCount","columns","startIdx","endIdx","paddingLeft","paddingRight","ignored","dest","isEmpty","last","repeat","escapeXml","normalizeURI","unescapeString","ESCAPABLE","ENTITY","RegExp","charCodeAt","charAt","decodeHTML","join","clearObj","isEmptyObj","omit","iterateObject","normalizeReference","toLowerCase","toUpperCase","keys","__assign","isSpaceOrTab","isBlank","peek","endsWithBlankLine","reClosingCodeFence","reNonSpace","C_OPEN_BRACKET","C_SPACE","C_LESSTHAN","C_GREATERTHAN","C_NEWLINE","C_TAB","CODE_INDENT","ToastMark","createRefDefState","unlinked","refMap","refLinkCandidateMap","refDefCandidateMap","referenceDefinition","parser","Parser","setRefMaps","eventHandlerMap","change","lineTexts","parse","updateLineTexts","__spreadArrays","updateRootNodeState","replaceRangeNodes","insertNodesBefore","removeNextUntil","prependChildNodes","getNodeRange","findChildNodeAtLine","trigger","extendEndLine","parseRange","reBulletListMarker","reOrderedListMarker","partialParseStart","partialParseExtends","partialParseFinish","newNodes","getChildNodes","extStartNode","extEndNode","getRemovedNodeRange","markDeletedRefMap","invokeNextUntil","replaceWithNewRefDefState","replaceWithRefDefCandidate","getRangeWithRefDef","nodes","removedNodeRange","parseRefLink","refLabel","removeUnlinkedCandidate","isUnlinked","editMarkdown","updateNextLineNumbers","getLineTexts","getRootNode","findNodeAtPosition","findFirstNodeAtLine","findNodeById","smart","tagFilter","extendedAutolinks","disallowedHtmlBlockTags","disallowDeepHeading","customParser","tip","oldtip","lineNumber","column","nextNonspace","nextNonspaceColumn","indent","currentLine","indented","blank","partiallyConsumedTab","allClosed","lastMatchedContainer","lastLineLength","inlineParser","InlineParser","advanceOffset","advanceNextNonspace","findNextNonspace","addLine","addChild","blockHandlers","canContain","finalize","closeUnmatchedBlocks","processInlines","entering","incorporateLine","continue","Error","acceptsLines","blockStarts","clearRefMaps","decodeHTMLStrict","decodeXML","substr","sort","reHtmlTag","CLOSETAG","OPENTAG","parseReference","tight","bulletChar","delimiter","padding","markerOffset","task","checked","tableHead","tableBody","createRenderHTML","defaultChars","fromCharCode","toString","encodeURIComponent","componentChars","JSON","current","resumeAt","E","A","T","q","_","B","subject","delimiters","brackets","pos","lineStartNum","lineIdx","linePosOffset","nextLine","spnl","parseBackticks","parseBackslash","parseAutolink","parseHtmlTag","scanDelims","numdelims","canOpen","canClose","handleDelim","cc","origdelims","previous","removeDelimiter","removeDelimitersBetween","processEmphasis","parseLinkTitle","parseLinkDestination","parseLinkLabel","parseOpenBracket","addBracket","parseBang","parseCloseBracket","active","removeBracket","image","bracketAfter","startpos","previousDelimiter","parseEntity","parseString","parseNewline","getReferenceDefSourcepos","mergeTextNodes","parseInline","convertExtAutoLinks","fromCodePoint","RangeError","floor","isFinite","parseUrlLink","parseEmailLink","substring","url","taskListItemFinalize","list","blockQuote","heading","thematicBreak","codeBlock","htmlBlock","paragraph","table","tableRow","tableCell","tableDelimRow","tableDelimCell","refDef","align","lastIndexOf","some","getAllParents","reverse","softbreak","gfm","nodeId","outerNewLine","innerNewLine","baseConvertors","gfmConvertors","convertors","leaf","getChildrenText","skipChildren","attributes","classNames","selfClose","content","linebreak","emph","strong","htmlInline","filterDisallowedTags","code","link","href","src","alt","strike","disabled","tui_code_snippet_array_inArray__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_array_inArray__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_collection_forEachArray__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_collection_forEachArray__WEBPACK_IMPORTED_MODULE_1___default","Map","_keys","_values","_getKeyIndex","keyIndex","delete","callback","thisArg","setOffsetHeight","setOffsetTop","getOffsetHeight","getOffsetTop","removeOffsetInfoByNode","offsetInfoMap","getAttribute","tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_1___default","_utils_dom__WEBPACK_IMPORTED_MODULE_2__","HTML_ATTR_LIST_RX","SVG_ATTR_LIST_RX","XSS_ATTR_RX","XSS_VALUE_RX","ON_EVENT_RX","htmlSanitizer","removeUnnecessaryTags","leaveOnlyWhitelistAttribute","removedTags","isXSSAttribute","attrName","attrValue","removeBlacklistAttributes","blacklistAttrs","removeAttribute","blacklist","attr","htmlAttr","svgAttr","xssAttr","isFunction","Function","isNull","isExisty","param","_extends","getHTMLRenderConvertors","isPrevNodeHTML","isPrevBR","_ref2","infoWords","preClasses","codeAttrs","lang","customConvertors","_ref3","orgConvertor","customConvertor","newContext","CodeBlockManager","_replacers","setReplacer","language","replacer","getReplacer","createCodeBlockHtml","codeText","escape","encode","invokePlugins","getPluginInfo","tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default","plugins","editor","plugin","pluginFn","_plugin$","reduce","acc","pluginInfo","renderer","_defineProperty","configurable","writable","NODE","ATTRIBUTE_NODE","DomRunner","_normalizeTextChildren","_root","_current","_getNextNode","_isNeedNextSearch","getNode","childNode","getNodeText","innerText","FIND_FIRST_LAST_SPACE_OR_RETURN_OR_TAB_RX","FIND_RETURN_OR_TAB_BETWEEN_TAGS_RX","FIND_WHOLE_SPACE_MORE_THAN_ONE_BETWEEN_TAGS_RX","toDom","preProcess","__htmlRootByToMark","renderer_defineProperty","FIND_LEAD_SPACE_RX","FIND_TRAIL_SPACE_RX","FIND_SPACE_RETURN_TAB_RX","FIND_CHAR_TO_TRIM_RX","FIND_SPACE_MORE_THAN_ONE_RX","FIND_CHAR_TO_ESCAPE_RX","FIND_CHAR_TO_ESCAPE_IN_LINK_RX","FIND_MARKDOWN_IMAGE_SYNTAX_RX","tag","getRawHtmlString","subContent","cloneNode","outerHTML","cloneRules","Renderer","rules","lineFeedReplacement","addRules","addRule","selectorString","converter","selectors","fname","_setConverterWithSelector","getSpaceControlled","lead","trail","convert","_getConverter","hasAttribute","_getInlineHtml","escapedSubContent","rulePointer","_getNextRule","_getRuleNameFromNode","_getPrevNode","ruleObj","ruleName","previousNode","_eachSelector","ruleElem","selectorArray","selectorIndex","isEmptyText","getSpaceCollapsedText","escapeText","matched","escapeTextForLink","imageSyntaxRanges","isDelimiter","escapeTextHtml","markdownTextToEscapeHtmlRx","escapeTextBackSlash","markdownTextToEscapeBackSlashRx","escapePairedCharacters","markdownTextToEscapePairedCharsRx","_isNeedEscape","res","markdownTextToEscapeRx","_isNeedEscapeHtml","_isNeedEscapeBackSlash","mix","srcRenderer","codeblock","lheading","blockquote","def","reflink","verticalBar","codeblockGfm","codeblockTildes","FIND_LAST_RETURN_RX","FIND_BR_AND_RETURN_RX","FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX","FIND_LINK_HREF","START_OF_LINES_RX","renderer_basic","managedText","foundedHref","IMG","BR","CODE","backticks","numBackticks","isNaN","P","headingNumber","processedSubContent","liCounter","HR","BLOCKQUOTE","trimmedText","lastNremoved","renderer_gfm","numberOfBackticks","PRE","makeTaskIfNeed","TABLE","TR","THEAD","ths","findChildTag","thsLength","makeTableHeadAlignText","th","leftAlignValue","rightAlignValue","textLength","repeatString","childLength","pattern","count","FIND_UNUSED_BRS_RX","FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX","FIND_MULTIPLE_BRS_RX","FIND_RETURNS_RX","FIND_RETURNS_AND_SPACE_RX","toMark","htmlStr","isGfm","runner","markdownContent","tracker","returnCount","basicRenderer","gfmRenderer","baseVal","isNumber","tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default","tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__","tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default","tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__","tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default","_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__","_preview__WEBPACK_IMPORTED_MODULE_5__","_utils_dom__WEBPACK_IMPORTED_MODULE_6__","_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__","_scroll_helper__WEBPACK_IMPORTED_MODULE_8__","_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__","_utils_markdown__WEBPACK_IMPORTED_MODULE_10__","_assertThisInitialized","self","ReferenceError","_inheritsLoose","subClass","superClass","CLASS_HIGHLIGHT","findTableCell","cell","MarkdownPreview","_Preview","convertor","isViewer","lazyRunner","registerLazyRunFunction","invokeCodeBlockPlugins","delayCodeBlockTime","customHTMLRenderer","_options$highlight","highlight","renderHTML","cursorNodeId","_this2","update","markdownNode","cursor","_updateCursorNode","_removeHighlight","_previewContent","currentEl","_getElementByNodeId","cursorNode","cursorPos","oldEL","newEL","changed","_this3","editResult","_this4","contentEl","newHtml","emitReduce","_removedNodeRange$id","startNodeId","endNodeId","startEl","endEl","nextEl","codeBlockEls","getCodeBlockElements","run","render","tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__","tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default","tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__","tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default","tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__","tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default","_utils_map__WEBPACK_IMPORTED_MODULE_4__","eventList","EventManager","typeInfo","_getTypeInfo","eventHandlers","_hasEventType","namespace","results","splited","addEventType","removeEventHandler","_this$_getTypeInfo","_removeEventHandlerWithHandler","eventType","_removeEventHandlerWithTypeInfo","handlerIndex","handlersToSurvive","_toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__","_toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default","_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__","_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__","_utils_dom__WEBPACK_IMPORTED_MODULE_3__","unquoted","singleQuoted","doubleQuoted","openingTag","HTML_TAG_RX","Convertor","em","mdReader","_markdownToHtmlWithCodeHighlight","markdown","_markdownToHtml","$1","$2","$3","_removeBrToMarkPassAttributeInCode","renderedHTML","codeOrPre","codeEelement","toHTMLWithCodeHighlight","toHTML","initHtmlSanitizer","sanitizer","toMarkdown","toMarkOptions","resultArray","_appendAttributeForLinkIfNeed","_appendAttributeForBrIfNeed","_removeNewlinesBeforeAfterAndBlockElement","FIND_TABLE_RX","FIND_CODE_RX","FIND_BRS_BEFORE_TABLE","NEWLINES_BEFORE_BLOCK_RX","NEWLINES_AFTER_BLOCK_RX","LINK_RX","FIND_BR_RX","FIND_DOUBLE_BR_RX","FIND_PASSING_AND_NORMAL_BR_RX","FIRST_TWO_BRS_BEFORE_RX","TWO_BRS_RX","FIND_FIRST_TWO_BRS_RX","FIND_ATTRI_WITH_EMTPY_STR_RX","css_default","isString_default","lazyRunner_LazyRunner","LazyRunner","globalTOID","lazyRunFunctions","params","delay","TOID","_runRegisteredRun","_runSingleRun","_clearTOIDIfNeed","setTimeout","lazyRunName","lazyRunFunction","clearTimeout","dom","codeBlockManager","preview_Preview","Preview","_initContentSection","nodeIds","targetEls","codeEls","Boolean","targetEl","codeBlocks","refresh","getHTML","setHTML","setHeight","setMinHeight","minHeight","isVisible","display","EVENT_KEY","handlers","isTruthy","imagePing","ms7days","isExpired","date","now","Date","getTime","sendHostname","trackingId","hostname","location","hitType","eventCategory","applicationKeyForStorage","localStorage","getItem","tui","usageStatistics","setItem","readyState","tid","cid","dp","dh","ec","isFalsy","isSupportDefinedProperty","enumValue","Enum","itemList","_addItem","foundedKey","itemValue","_isEnumItem","_makeEnumValue","tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__","tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default","tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__","tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default","tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__","tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default","_mdPreview__WEBPACK_IMPORTED_MODULE_4__","_eventManager__WEBPACK_IMPORTED_MODULE_5__","_commandManager__WEBPACK_IMPORTED_MODULE_6__","_convertor__WEBPACK_IMPORTED_MODULE_7__","_utils_dom__WEBPACK_IMPORTED_MODULE_8__","_codeBlockManager__WEBPACK_IMPORTED_MODULE_9__","_pluginHelper__WEBPACK_IMPORTED_MODULE_10__","_utils_common__WEBPACK_IMPORTED_MODULE_11__","_htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__","TASK_ATTR_NAME","TASK_CHECKED_CLASS_NAME","ToastUIEditorViewer","useDefaultHTMLSanitizer","customHTMLSanitizer","codeBlockLanguages","commandManager","_getPluginInfo","_this$options","rendererOptions","hooks","addHook","_this$options2","initialValue","existingHTML","preview","_toggleTask","setMarkdown","markdownValue","isWysiwygMode","setCodeBlockLanguages","languages","domUtils","WwCodeBlockManager","WwTableManager","WwTableSelectionManager","debounce","timer","debounced","trackingInfo","trackingElement","queryString","isObject","fe","M","pe","H","me","z","de","Ne","ge","ue","ve","Ce","cssText","dir","ce","backgroundColor","colour","color","fontFamily","fontSize","S","__squire__","createDefaultBlock","re","K","_didAddZWS","ie","lastElementChild","didError","message","_config","blockTag","blockAttributes","splitText","startOffset","endOffset","appendData","setStart","setEnd","collapse","J","O","isContentEditable","R","isShiftDown","shiftKey","W","defaultView","_win","_doc","_events","_isFocused","_lastSelection","ae","getSelection","_hasZWS","_lastAnchorNode","_lastFocusNode","_path","_willUpdatePath","_updatePathOnEvent","_undoIndex","_undoStack","_undoStackLength","_isInUndoState","_ignoreChange","_ignoreAllChanges","se","MutationObserver","_docWasChanged","observe","childList","characterData","subtree","_mutation","_keyUpDetectChange","_restoreSelection","U","I","_awaitingPaste","X","nt","ot","it","rt","Ie","_keyHandlers","He","setConfig","Text","deleteData","execCommand","setSelection","F","G","Z","j","Q","$","V","Y","opera","ee","te","ne","oe","WeakMap","le","he","1","2","3","8","9","11","previousPONode","IFRAME","INPUT","_e","Se","ye","Te","Ee","Le","Be","xe","Ae","selectNodeContents","be","et","setEndBefore","cloneRange","ke","createRange","selectNode","compareBoundaryPoints","Oe","Re","De","Pe","Ue","13","32","33","34","37","39","46","219","221","keyCode","defaultPrevented","which","altKey","ctrlKey","metaKey","isComposing","saveUndoState","_ensureBottomLine","_updatePath","we","Fe","hasFormat","changeFormat","Me","enter","_recordUndoState","yt","_removeZWS","_getRangeAndRemoveBookmark","insertData","setStartAfter","decreaseListLevel","modifyBlocks","mt","ut","ct","Ye","backspace","gt","tab","increaseListLevel","space","right","lt","modify","pageup","moveCursorToStart","pagedown","moveCursorToEnd","We","4","5","6","7","ze","regexp","class","fontWeight","fontStyle","textDecoration","qe","Ke","Ge","SPAN","STRONG","EM","INS","STRIKE","FONT","face","size","TT","Ze","je","Qe","$e","allowedBlocks","Ve","Xe","Je","tt","willCutCopy","setData","clipboardData","cloneContents","items","getAsString","insertHTML","fireEvent","dataTransfer","insertPlainText","getData","contenteditable","at","st","DOMPurify","sanitize","ALLOW_UNKNOWN_PROTOCOLS","WHOLE_DOCUMENT","RETURN_DOM","RETURN_DOM_FRAGMENT","importNode","tagAttributes","ul","ol","li","leafNodeNames","undo","documentSizeThreshold","undoLimit","isInsertedHTMLSanitized","isSetHTMLSanitized","sanitizeToDOMFragment","isSupported","console","log","getDocument","getRoot","modifyDocument","takeRecords","disconnect","dt","pathChange","select","input","undoStateChange","activeElement","handleEvent","details","destroy","Range","getCursorPosition","_moveCursorTo","blur","focus","removeAllRanges","addRange","rangeCount","getRangeAt","setStartBefore","getSelectedText","setActive","ht","_saveRangeToBookmark","compareDocumentPosition","canUndo","canRedo","_getHTML","_setHTML","redo","setEndAfter","getFontInfo","family","_addFormat","_removeFormat","getElementsByTagName","ft","DT","DD","LI","forEachBlock","pt","vt","Ct","Nt","_t","St","setKeyHandler","insertElement","insertImage","linkRegExp","Tt","Et","addStyles","documentElement","bold","italic","underline","strikethrough","subscript","superscript","removeBold","removeItalic","removeUnderline","removeStrikethrough","removeSubscript","removeSuperscript","makeLink","removeLink","setFontFace","setFontSize","setTextColour","setHighlightColour","setTextAlignment","textAlign","setTextDirection","bt","pre","kt","removeCode","toggleCode","removeAllFormatting","increaseQuoteLevel","decreaseQuoteLevel","makeUnorderedList","makeOrderedList","removeList","isInline","isBlock","getBlockWalker","getPreviousBlock","getNextBlock","areAlike","hasTagAttributes","getNearest","isOrContains","detach","getNodeBefore","getNodeAfter","insertNodeInRange","extractContentsOfRange","deleteContentsOfRange","insertTreeFragmentIntoRange","isNodeContainedInRange","moveRangeBoundariesDownTree","moveRangeBoundariesUpTree","getStartBlockOfRange","getEndBlockOfRange","contentWalker","rangeDoesStartAtBlockBoundary","rangeDoesEndAtBlockBoundary","expandRangeToBlockBoundaries","onPaste","addLinks","splitBlock","startSelectionId","endSelectionId","isBoolean","global","MapShim","getIndex","entry","class_1","__entries__","entries","clear","ctx","_i","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","trailingTimeout","throttle","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","addObserver","observer","connect_","removeObserver","observers","disconnect_","changesDetected","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","_b","propertyName","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","position","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getBBox","getHTMLElementContentRect","clientWidth","clientHeight","horizPad","vertPad","bottom","boxSizing","round","isDocumentElement","vertScrollbar","horizScrollbar","abs","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","createReadOnlyRect","Constr","DOMRectReadOnly","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","method","R_EVENTNAME_SPLIT","CustomEvents","contexts","mixin","_getHandlerItem","_safeEvent","eventName","byName","_safeContext","_indexOfContext","_memorizeContext","_forgetContext","contextIndex","_bindEvent","once","onceHandler","_spliceMatches","predicate","_matchHandler","needRemove","_matchContext","_matchHandlerAndContext","matchHandler","matchContext","_offByEventName","andByHandler","handlerItems","_offByHandler","_offByObject","matchFunc","fire","invoke","hasListener","getListenerLength","forEachOwnProperties_default","isExisty_default","isNumber_default","addClass_default","removeClass_default","toastmark","htmlRenderConvertors","createMarkdownToHTML","utils_common","isBoolean_default","external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_","external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default","listRE","fixNumber","prevIndentLength","indentLength","lineText","getLine","_listRE$exec2","replaceRange","findFirstListItem","nextLineNumber","commands","indentLessOrderedList","getOption","Pass","fixOrderedListNumber","isCursorInCodeBlock","ranges","listSelections","head","_listRE$exec","overlayMode","overlay","combine","startState","basePos","baseCur","overlayPos","overlayCur","streamSeen","copyState","token","stream","combineTokens","textAfter","electricChars","innerMode","blankLine","continuelist_listRE","emptyListRE","unorderedListRE","incrementRemainingMarkdownListNumbers","startLine","lookAhead","skipCount","startItem","startIndent","nextItem","nextIndent","newNumber","nextNumber","itemNumber","isRangeCollapsed","isSameLineSelection","anchor","replaceSingleLine","from","to","lineAdjustment","replacement","setCursor","replaceMultiLine","upper","targetLine","rangeContent","getRange","edgeLineOfConcern","clearPlaceholder","placeholder","setPlaceholder","elt","placeHolder","lineSpace","onBlur","onChange","getWrapperElement","lineCount","indentOrderedList","cursorBeforeTextInline","somethingSelected","indentSelection","newlineAndIndentContinueMarkdownList","replacements","cursorBeforeBullet","after","numbered","bullet","replaceSelections","replaceLineTextToUpper","topLine","replaceLineTextToLower","isLastLine","lastLine","defineOption","val","old","Init","hasFocus","sharedInstance","codeMirrorExt_CodeMirrorExt","CodeMirrorExt","editorContainerEl","_init","cmTextarea","lineWrapping","theme","extraKeys","indentUnit","cursorScrollMargin","specialCharPlaceholder","fromTextArea","getCurrentRange","getCursor","getInputField","toTextArea","setValue","cursorToEnd","clearHistory","getValue","getEditor","reset","getCaretPosition","cursorCoords","addWidget","selection","replaceSelection","replaceRelativeOffset","overwriteLength","contentWrapper","setOption","getDoc","firstLine","scrollTo","getScrollInfo","codeMirrorExt","KEYBOARD_MAP","KeyMapper","_setSplitter","splitter","_splitter","keyChar","_getKeyCodeChar","keyCodeCharacter","getSharedInstance","char","keyMapper","FIND_LIST_RX","FIND_TASK_LIST_RX","FIND_UL_RX","FIND_OL_TASK_RX","LIST_SYNTAX_RX","TASK_SYNTAX_RX","LIST_OR_TASK_SYNTAX_RX","UL_TASK_SYNTAX_RX","OL_SYNTAX_RX","FIND_HEADING_RX","FIND_BLOCK_RX","MdListManager","mde","toastMark","getToastMark","_createSortedLineRange","isReversed","rangeStart","rangeEnd","_calculateOrdinalNumber","ordinalNumber","depth","_getListDepth","_isListLine","_isCanBeList","_getChangeFn","_changeToList","_changeToTask","changeSyntax","newListLine","lineRange","startLineNumber","endLineNumber","changeFn","_insertBlankLineForNewList","_replaceLineText","_changeSameDepthList","lineNum","_replaceListTypeToOL","_replaceListTypeToUL","_replaceLineTextByRegexp","_findSameDepthList","listNumber","isIncrease","currentLineDepth","backwardList","forwardList","sameDepthList","replacePattern","currentLineStart","currentLineEnd","newListLines","_isNotBlankNotListLine","mdListManager","ComponentManager","_managers","_editor","addManager","nameOrConstructor","ManagerConstructor","instance","getManager","removeManager","manager","componentManager","MdTextObject","_mde","setRange","_setStart","_start","_setEnd","_end","setEndBeforeRange","expandStartOffset","expandEndOffset","getTextContent","replaceContent","deleteContent","peekStartBeforeOffset","peekStart","mdTextObject","isFunction_default","markTextHelper_extends","CLS_PREFIX","classNameMap","applyClsToValue","DELIM","META","TEXT","THEMATIC_BREAK","CODE_BLOCK","HTML","delimSize","names","markTextHelper_markInfo","marks","emphasisAndStrikethrough","markLink","linkTextStart","lastChildCh","markTextHelper_image","linkTextEnd","markTextHelper_link","_ref4","markTextHelper_code","_ref5","openDelimEnd","closeDelimStart","markTextHelper_codeBlock","endLine","fenceEnd","codeBlockEnd","CLOSED_RX","lineBackground","markListItemChildren","_node","markParagraphInBlockQuote","childMarks","getClassNameOfListItem","newClassName","oldClassName","markTextHelper_item","itemClassName","_node$listData","markNodeFuncMap","simpleMarkClassNameMap","getMarkInfo","_createForOfIteratorHelperLoose","allowArrayLike","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr2","markdownEditor_extends","markdownEditor_keyMapper","defaultToolbarState","taskList","orderedList","getToolbarStateType","getToolbarState","mdLine","mdCh","listEnabled","isToolbarStateChanged","previousState","currentState","ATTR_NAME_MARK","TASK_MARKER_RX","TASK_MARKER_KEY_RX","markdownEditor_MarkdownEditor","_CodeMirrorExt","MarkdownEditor","dragDrop","allowDropFileTypes","Enter","Tab","_toggleTaskStates","viewportMargin","Infinity","_latestState","_markedLines","cmEvent","_refreshCodeMirrorMarks","_emitMarkdownEditorChangeEvent","eventData","keyboardEvent","_changeTextToTaskMarker","clipboardEvent","_onChangeCursorActivity","getTextObject","_emitMarkdownEditorContentChangedEvent","eventObj","_changeTaskState","stateChar","_sourcepos$","startCh","startPos","_markNodes","_removeBackgroundOfLines","_step","_nodes$0$sourcepos","editFromPos","_nodes$sourcepos","editToPos","editFrom","editTo","findMarks","_iterator","mark","_step2","_iterator2","_event","_markNode","_this$cm$getCursor","paraNode","_paraNode$firstChild","_sourcepos$2","startSpaces","lastSpaces","spaces","_removedNodeRange$lin","removeLineClass","_markCodeBlockBackground","lineClassName","addLineClass","_this5","markInfo","_markInfo$marks","_markInfo$lineBackgro","_attributes","markText","_setToolbarState","_this$cm$getCursor2","resetState","markdownEditor","mdPreview","toArray_default","forEachArray_default","isUndefined_default","isArray_default","browser_default","debounce_default","domEvent_on","on_default","domEvent_off","off_default","matches_default","DEFAULT_COLOR","wwPasteContentHelper_WwPasteContentHelper","WwPasteContentHelper","wwe","preparePaste","isPastingList","wwCodeblockManager","firstBlockIsTaken","tempContainer","_pasteFirstAid","isInCodeBlock","prepareToPasteOnCodeblock","_prepareToPasteList","_wrapOrphanNodeWithDiv","currentDiv","isBR","_sanitizeHtml","getSanitizer","_removeStyles","blockTags","_unwrapIfNonBlockElementHasBr","_unwrapNestedBlocks","_removeUnnecessaryBlocks","_preElementAid","_tableElementAid","modifyCodeBlockForWysiwyg","nonBlockElements","brChildren","leafElements","leafElement","blockElement","isDivElement","isInListItem","isInBlockquote","hasBlockChildElement","colorValue","rangeInfo","newFragment","_makeNodeAndAppend","_wrapCurrentFormat","listGroup","commonAncestorName","_unwrapFragmentFirstChildForPasteAsInline","br","currentTagName","_eachCurrentPath","getBody","pathInfo","_removeColgroup","_completeTableIfNeed","_updateTableIDClassName","colgroup","tableManager","wrapperTr","wrapDanglingTableCellsIntoTrIfNeed","wrapperTbody","wrapTrsIntoTbodyIfNeed","wrapperTable","wrapTheadAndTbodyIntoTableIfNeed","tables","foundClassName","getTableIDClassName","wwPasteContentHelper","wwTablePasteHelper_WwTablePasteHelper","WwTablePasteHelper","pasteClipboard","cbData","_pasteClipboardItem","_pasteClipboardUsingPasteArea","squirePrevented","sq","pasteArea","_document","clipboard","_pasteClipboardHtml","textItem","htmlItem","_pasteClipboardContainer","_getSanitizedHtml","startFramgmentStr","endFragmentStr","startFragmentIndex","endFragmentIndex","clipboardContainer","containsOneTableOnly","pasteTableData","_preparePasteDocumentFragment","_deleteContentsRange","_pasteIntoTextNode","_pasteIntoElements","_unwrapBlock","_isPossibleInsertToTable","isChildlessCode","prevText","postText","fragmentChildNodes","isFragmenthasOneTextNode","firstChildText","resultFragment","childNodesArray","_deleteContentsByOffset","_deleteNotCollapsedRangeContents","startBlock","_getBlock","endBlock","_removeInSameBlock","nextOfstartBlock","_removeOneLine","block","wwTablePasteHelper","PASTE_TABLE_BOOKMARK","PASTE_TABLE_CELL_BOOKMARK","wwClipboardManager_WwClipboardManager","WwClipboardManager","_pch","_tablePasteHelper","_selectedSellCount","_clipboardArea","init","_executeHandler","_onWillPaste","_onCopyCut","_onCopyAfter","_onCutAfter","_onPasteIntoTable","selectedCellCount","getSelectedCells","mergedTableSelectionManager","_extendRange","_updateCopyDataForListTypeIfNeed","_setClipboardData","createRangeBySelectedCells","_clearClipboardArea","deleteContents","isInTable","_isSingleCellSelected","_getCell","_replaceNewLineToBr","textNodes","pasteData","_preparePaste","_setTableBookmark","_focusTableBookmark","htmlContent","_createClipboardArea","selectAllChildren","stopPropagation","overflow","commonAncestorNodeName","newParent","_removeEmptyFontElement","_isFromMs","_preProcessPtag","pTag","isLastNodeTable","bookmarkedTable","bookmarkedCell","_extendStartRange","_extendEndRange","_isWholeCommonAncestorContainerSelected","newBound","boundNext","wwClipboardManager","FIND_LI_ELEMENT","DIV_OR_LI","UL_OR_OL","FIND_CELL_TAG_RX","FIND_LIST_OR_LIST_ITEM_TAG_RX","wwListManager_WwListManager","WwListManager","_initKeyHandler","_convertToArbitraryNestingList","_findAndRemoveEmptyList","_removeBranchListAll","_convertFromArbitraryNestingList","_insertDataToMarkPassForListInTable","addKeyEventHandler","isNeedNext","_removeBranchList","defer","afterRange","_domUtils$parents","branchRoot","_domUtils$children","firstLi","unwrappedLIs","NESTED_LIST_QUERY","nestedList","parentLI","parentList","wrapperDiv","prevLI","_unwrap","replacedHtml","tdStart","tdContent","tdEnd","getLinesOfSelection","lines","needNext","_domUtils$parents2","_domUtils$parents3","_getNextLine","mergeList","currentList","prevList","nextList","_mergeList","targetList","listItem","temp","isAvailableMakeListInTable","selectionManager","selectedCells","_getParentNodeBeforeTD","newOffset","_findLINodeInsideTD","liNode","liParent","_getFirstNodeInLineOfTable","_startNode","_getLastNodeInLineOfTable","_isLastNodeInLineOfTable","_getNextNodeInLineOfTable","_getLinesOfSelectionInTable","firstNode","oneLine","_createListElement","listType","_createListItemElement","oneLineNodes","taskManager","formatTask","_mergeListWithPreviousSibiling","_mergeListWithNextSibiling","createListInTable","_listNode","listNodeName","newLIs","liElement","oneLineFirstNode","existingListNode","adjustRange","newStartContainer","newEndContainer","newStartOffset","newEndOffset","setSelectionByContainerAndOffset","wwListManager","hasClass_default","TASK_CLASS_NAME","wwTaskManager_WwTaskManager","WwTaskManager","_removeTaskListClass","isInTaskList","newRange","unformatTask","_formatTaskIfNeed","wwTaskManager","isIE10","TABLE_CLASS_PREFIX","isIE10And11","BASIC_CELL_CONTENT","TABLE_CELL_SELECTED_CLASS_NAME","wwTableManager_WwTableManager","_lastCellNode","tableID","isRangeInTable","_unwrapBlockInTable","removeClassAttrbuteFromAllCellsIfNeed","_insertDefaultBlockBetweenTable","updateTableHtmlOfClipboardIfNeed","isTableOrSubTableElement","_completeIncompleteTable","thead","clipboardTable","_expandTableIfNeed","_pasteDataIntoTable","keyEventHandlers","DEFAULT","keymap","_isModifierKey","_recordUndoStateIfNeed","_removeContentsAndChangeSelectionIfNeed","_recordUndoStateAndResetCellNode","_isModifierKeyPushed","ENTER","_isAfterTable","breakToNewDefaultBlock","_isBeforeTable","_isInList","_isInStyledText","_removeBRinStyleText","_isEmptyFirstLevelLI","_appendBrIfTdOrThNotHaveAsLastChild","BACK_SPACE","_handleBackspaceAndDeleteKeyEvent","DELETE","TAB","UP","DOWN","_isEmptyListItem","styleNode","brNode","_styleNode","tdNode","newNode","_splitByBR","cloneStyleNode","newBR","clonedBR","leafNode","prevElem","isBackspace","_tableHandlerOnBackspace","_tableHandlerOnDelete","_removeTable","removed","_moveListItemToPreviousOfList","_findListItem","prevNodeName","_isDeletingBR","_getCurrentNodeInCell","_isEndOfList","liNodeOffset","startContainerOffset","_getNextLineNode","_nextSibling","tdOrTh","startContainerNodeName","blocks","parentNodeName","isInTableCell","isEmptyTableCell","isLastBR","insertedElement","saveSelection","restoreSavedSelection","currentCellNode","resetLastCellNode","anchorElement","td","tr","_this$wwe$getEditor$g","tableData","_getTableDataFromTable","isTableCell","brString","trData","_removeTableContents","brHTMLString","danglingTableCells","tbody","danglingTrs","wrapperTableBody","danglingThead","danglingTbody","_createTheadOrTboday","pastingNodeName","theadOrTbody","_stuffTableCellsIntoIncompleteRow","trs","maximumCellLength","row","tableCells","cellTagName","cellLength","tableCellGenerator","prepareToTableCellStuffing","needTableCellStuffingAid","cellCount","_addTbodyOrTheadIfNeed","isTheadNotExists","isTbodyNotExists","tableCellAppendAidForTableElement","_addTrIntoContainerIfNeed","tableAidInformation","_generateTheadAndTbodyFromTbody","_generateTheadAndTbodyFromThead","_generateTheadAndTbodyFromTr","theadRow","tbodyRow","completedTableContents","_removeEmptyRows","cells","setLastCellNode","hasNoRows","difference","_getColumnAndRowDifference","_appendCellForAllRow","_appendRow","rowLength","columnLength","currentCell","currentRow","currentColumnIndex","currentRowIndex","tableColumnLength","tableRowLength","isInTbody","columnDifference","rowDifference","newRow","brHTMLSting","_changeSelectionToTargetCell","scale","isNext","isRow","_moveToCursorEndOfCell","lastListItem","lastText","interval","_isMovedCursorToRow","_isMovedCursorFromListToRow","_isMovedCursorFromTextToRow","parentOfListItem","firstOrLastItem","firstOrLastList","parentOfStyledText","foundSiblingNode","siblingNode","isTextInput","isDeleteOperation","firstSelectedCell","processed","tableClassName","removeKeyEventHandler","amount","cellString","tdString","wwTableManager","wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME","wwTableSelectionManager_WwTableSelectionManager","selectionStart","selectionEnd","validSelectionEnd","_tableSelectionTimer","_removeSelectionTimer","_isSelectionStarted","onMouseover","isEndsInTable","isSameCell","isTextSelect","_isTextSelect","setInterval","highlightTableCellsBy","finishSelection","onMouseup","_clearTableSelectionTimerIfNeed","_isListSelect","onDragEnd","onMousedown","MOUSE_RIGHT_BUTTON","isSelectedCell","button","setTableSelectionTimerIfNeed","onDragStart","isTableSelecting","_reArrangeSelectionIfneed","isRangeStartInTable","isRangeEndInTable","isStartRangeOut","isEndRangeOut","_table$querySelectorA","tds","_applySelectionDirection","selectionInformation","nodeOffsetOfParent","rowDirection","cellDirection","isSameRow","isRowIncreases","isColumnIncreases","getSelectionRangeFromTable","startRowOffset","endRowOffset","startCellOffset","endCellOffset","startCellContainer","endCellContainer","isReversedTheadAndTbodySelect","isTheadAndTbodySelect","isBothInTbody","rowFrom","cellFrom","rowTo","cellTo","rowIndex","cellIndex","isFromRow","isToRow","lastSelectedCell","styleToSelectedCells","onStyle","wwTableSelectionManager","wwHrManager_WwHrManager","WwHrManager","_insertEmptyLineIfNeed","_changeHRForWysiwyg","editorContentBody","hrNode","wwHrManager","wwPManager_WwPManager","WwPManager","_splitPtagContentLines","_ensurePtagContentWrappedWithDiv","_unwrapPtags","para","lastIndex","splitedContent","_attributes$key","_findNextParagraph","wwPManager","wwHeadingManager_FIND_HEADING_RX","wwHeadingManager_isIE10","wwHeadingManager_WwHeadingManager","WwHeadingManager","_wrapDefaultBlockToHeadingInner","hasFormatWithRx","_onEnter","_addBrToEmptyBlock","_removePrevTopNodeIfNeed","headingTags","headingTag","exceptedForWrapping","_unwrapHeading","unwrapBlockTag","removeLastUndoStack","_insertEmptyBlockToPrevious","isHandled","prevTopNode","isPrevTopNodeEmpty","_removeHedingAndChangeSelection","_getHeadingElement","headingElement","brs","wwHeadingManager","isTruthy_default","wwCodeBlockManager_isIE10","wwCodeBlockManager_brString","tagEntities","FIND_ZWS_RX","CODEBLOCK_ATTR_NAME","wwCodeBlockManager_WwCodeBlockManager","_keyEventHandlers","_onBackspaceKeyEventHandler","_this$wwe$getRange","codeNode","_getCodeNode","_changePreToPreCode","convertNodesToText","str","_copyCodeblockTypeFromRangeCodeblock","blockNode","attrs","codeAttr","codeTag","resultText","sanitizeHtmlCode","_isCodeBlockFirstLine","_isFrontCodeblock","_removeCodeblockFirstLine","_isEmptyLine","_isBetweenSameCodeblocks","prevTextLength","_mergeCodeblocks","frontCodeblock","backCodeblock","preNode","codeContent","newFrag","strArray","firstDiv","newPreNode","wwCodeBlockManager","build_squire","squire_default","squireExt_inheritsLoose","FIND_BLOCK_TAGNAME_RX","isIElt11","squireExt_SquireExt","_Squire","SquireExt","_decorateHandlerToCancelable","changeBlockFormat","srcCondition","targetTagName","newBlock","nextBlock","lastNodeOfNextBlock","appendChidToNextBlock","changeBlockFormatTo","_replaceRelativeOffsetOfSelection","startSelectionInfo","endSelectionInfo","finalOffset","endOffsetNode","endTextOffset","_getClosestTextNode","getSelectionInfoByOffset","foundNode","traceElement","traceElementLength","traceOffset","stepLength","offsetAbs","latestAvailableElement","getSelectionPosition","marker","replaceParent","preserveLastLine","lastBlock","isIgnoreChange","blockCommandShortcuts","meta","squireExt","isIE11","isWindowChrome","appVersion","isWindows10","isNeedOffsetFix","wwTextObject_WwTextObject","WwTextObject","_wwe","isComposition","_initCompositionEvent","_range","wwTextObject","blockOverlay_BlockOverlay","BlockOverlay","attachedSelector","_eventManager","_attachedSelector","_container","_attachedElement","_createElement","zIndex","_onChange","_onMouseOver","setVisibility","syncLayout","originalEvent","eventTarget","attachedElement","outerWidth","outerHeight","getAttachedElement","getVisibility","visibility","onShow","onHide","blockOverlay","codeBlockGadget_inheritsLoose","GADGET_RIGHT","GADGET_WIDTH","GADGET_HEIGHT","codeBlockGadget_CodeBlockGadget","_BlockOverlay","CodeBlockGadget","wysiwygEditor","_wysiwygEditor","_popupCodeBlockLanguages","_initDOM","_initDOMEvent","_languageLabel","_buttonOpenModalEditor","_openPopupCodeBlockEditor","_updateLanguage","_domUtils$getOffset","_onAttachedElementChange","codeBlockGadget","wysiwygEditor_keyMapper","FIND_EMPTY_LINE","FIND_UNNECESSARY_BR","wysiwygEditor_FIND_BLOCK_TAGNAME_RX","FIND_OPENING_SPAN_WITH_SPACE","FIND_CLOSING_SPAN_WITH_SPACE","FIND_TABLE_AND_HEADING_RX","EDITOR_CONTENT_CSS_CLASSNAME","PLACEHOLDER_CSS_CLASSNAME","canObserveMutations","wysiwygEditor_WysiwygEditor","WysiwygEditor","_height","_silentChange","_linkAttribute","_sanitizer","_initDefaultKeyEventHandler","debouncedPostProcessForChange","postProcessForChange","editorBody","_clipboardManager","_initSquireEvent","_togglePlaceholder","_runKeyEventHandlers","scrollIntoCursor","_handler","squire","isNeedFirePostProcessForRangeChange","isEditorValid","_onKeyDown","prevLen","curEl","fixIMERange","_isInOrphanText","_wrapDefaultBlockToOrphanTexts","isAbleToInput4Spaces","_isCursorNotInRestrictedAreaOfTabAction","isTextSelection","_handleRemoveKeyEvent","_isStartHeadingOrTableAndContainsThem","keyStr","_wrapDefaultBlockTo","_joinSplitedTextNodes","textElem","cursorOffset","insertTargetNode","insertNode","lastGroup","nodesToRemove","makeEmptyBlockCurrentSelection","_this6","containerStyles","bodyStyles","paddingHeight","paddingTop","paddingBottom","marginHeight","getLinkAttribute","insertText","_prepareGetHTML","_this7","_this8","readySilentChange","editorContainerPos","rx","where","appendBefore","replaceContentText","beforeText","_this$getEditor$getCu","cursorTop","cursorHeight","_this$editorContainer","editorTop","editorHeight","cursorAboveEditor","cursorBelowEditor","ceil","_correctRangeAfterMoveCursor","cursorContainer","getIMERange","contentElement","foundEditorElement","delayOffset","_this9","containerTmpl","layout_Layout","Layout","initialEditType","_renderLayout","_initMarkdownAndPreviewSection","_initWysiwygSection","hide","show","containerEl","switchToWYSIWYG","switchToMarkdown","mdEditorContainerEl","previewEl","wwEditorContainerEl","_verticalSplitStyle","mdContainer","_tabStyle","changePreviewStyle","getEditorEl","getPreviewEl","getMdEditorContainerEl","getWwEditorContainerEl","js_layout","js_eventManager","inArray_default","URLRegex","importManager_ImportManager","ImportManager","_initDefaultImageImporter","decodeURIGraceful","originalURI","decodedURI","uris","decodedURIs","uri","decodeURIComponent","encodeMarkdownCharacters","escapeMarkdownCharacters","files","_processBlobItems","descendant","blob","dataURItoBlob","_emitAddImageBlobHook","_processClipboard","_decodeURL","reader","FileReader","onload","readAsDataURL","imageUrl","altText","_container$childNodes","_text","evData","blobItems","codemirrorIgnore","getAsFile","dataURI","byteString","atob","ab","ArrayBuffer","ia","Uint8Array","_dataURI$split","mimeString","Blob","importManager","viewer","DEFAULT_CODE","i18n_I18n","I18n","_code","_langs","setCode","setLanguage","codes","langData","langSet","i18n","ResizeObserver_es","isObject_default","customEvents","customEvents_default","DOM_EVENTS","_uiInstanceId","makeUIInstanceId","uicontroller_UIController","UIController","_id","customEventManager","_setRootElement","rootElement","aType","aFn","_addEvent","_bindDomEvent","_this$_parseEventType","_parseEventType","_unbindDomEvent","_this$_parseEventType2","splitType","uicontroller","toolbarItem_inheritsLoose","toolbarItem_defineProperty","toolbarItem_ToolbarItem","_UIController","ToolbarItem","_name","ui_toolbarItem","TOOLTIP_CONTENT","TOOLTIP_TOP_INDENT","tooltip_Tooltip","Tooltip","targetRect","pageXOffset","pageYOffset","tooltip","toolbarButton_assertThisInitialized","toolbarButton_inheritsLoose","toolbarButton_defineProperty","toolbarButton_ToolbarButton","_ToolbarItem","ToolbarButton","_setOptions","_render","_onClick","_onOver","_onOut","setTooltip","_tooltip","_style","_state","isEnabled","enable","disable","toolbarButton","toolbarDivider_inheritsLoose","toolbarDivider_defineProperty","ToolbarDivider","toolbarDivider","toolbarItemFactory_ToolbarItemFactory","ToolbarItemFactory","toolbarItem","toolbarItemFactory","toolbar_assertThisInitialized","toolbar_inheritsLoose","toolbar_defineProperty","toolbar_Toolbar","Toolbar","setItems","_items","disableAllButton","enableAllButton","getItems","removeAllItems","addItem","insertItem","onCommandHandler","commandName","onEventHandler","indexOfItem","itemName","itemToTest","removeItem","removedItem","ui_toolbar","layerpopup_assertThisInitialized","layerpopup_inheritsLoose","CLASS_PREFIX","CLASS_FIT_WINDOW","LAYOUT_TEMPLATE_MODELESS","LAYOUT_TEMPLATE_MODAL","layerpopup_LayerPopup","LayerPopup","header","modal","_clickEventMap","_onClickCloseButton","_initInstance","_initEditorEvent","_target","_isExternalHtmlUse","_initLayout","setTitle","setContent","buttons","headerButtons","closeButtons","buttonWrapper","openerCssQuery","closerCssQuery","eventKey","layout","titleWrapper","getTitleElement","_isShow","isShow","_document2","opener","closer","setFitToWindow","fit","isFitToWindow","toggleFitToWindow","fitToWindow","layerpopup","popupDropdownToolbar_inheritsLoose","popupDropdownToolbar_defineProperty","popupDropdownToolbar_PopupDropdownToolbar","_LayerPopup","PopupDropdownToolbar","getToolbar","_toolbar","_button","OPEN_EVENT","isShown","buttonOuterHeightWithMargin","buttonMarginBottom","popupDropdownToolbar","defaultToolbar_assertThisInitialized","defaultToolbar_inheritsLoose","defaultToolbar_defineProperty","MORE_BUTTON_NAME","defaultToolbar_DefaultToolbar","_Toolbar","DefaultToolbar","_bindWidthChangedEvent","_arrangeMoreButton","moreButton","_moreButton","_popupDropdownToolbar","_observer","_balanceButtons","dropDownToolbarItems","itemLength","defaultToolbarItems","overflowItems","hasOverflow","defaultToolbar","tab_inheritsLoose","CLASS_TAB_ACTIVE","tab_Tab","sections","_activeButton","onItemClick","_onTabButton","initName","tabButtons","activate","_findButtonContained","_this$_findButtonCont","_activateTabByButton","_isActivatedButton","_updateClassByButton","activeButton","sectionIndex","modeSwitch_assertThisInitialized","modeSwitch_inheritsLoose","modeSwitch_defineProperty","MARKDOWN","WYSIWYG","modeSwitch_ModeSwitch","ModeSwitch","initialType","_switchType","_rootElement","_buttons","wysiwyg","_changeMarkdown","_changeWysiwyg","_setActiveButton","_type","ui_modeSwitch","popupAddLink_inheritsLoose","URL_REGEX","popupAddLink_PopupAddLink","PopupAddLink","POPUP_CONTENT","_inputText","_inputURL","_addLink","inputText","inputURL","selectedText","_resetInputs","_this$_getValue","_getValue","linkText","_clearValidationStyle","popupAddLink","popupAddImage_inheritsLoose","CLASS_IMAGE_URL_INPUT","CLASS_IMAGE_FILE_INPUT","CLASS_ALT_TEXT_INPUT","CLASS_OK_BUTTON","CLASS_CLOSE_BUTTON","CLASS_FILE_TYPE","CLASS_URL_TYPE","CLASS_TAB_SECTION","TYPE_UI","popupAddImage_PopupAddImage","PopupAddImage","popup","_imageUrlInput","_imageFileInput","_altTextInput","fileTypeSection","urlTypeSection","tabSection","filename","_applyImage","imageFile","hookCallback","popupAddImage","popupTableUtils_inheritsLoose","REMOVE_ROW_MENU_CLASS_NAME","DISABLED_MENU_CLASS_NAME","popupTableUtils_PopupTableUtils","PopupTableUtils","_bindClickEventOnRemoveRowMenu","_this2$el$parentNode$","_disableRemoveRowMenu","clientY","clientX","menu","popupTableUtils","popupAddTable_inheritsLoose","CLASS_TABLE_SELECTION","CLASS_TABLE_HEADER","CLASS_TABLE_BODY","CLASS_SELECTION_AREA","CLASS_DESCRIPTION","popupAddTable_POPUP_CONTENT","CELL_WIDTH","CELL_HEIGHT","MIN_ROW_INDEX","MAX_ROW_INDEX","MIN_COL_INDEX","MAX_COL_INDEX","MIN_ROW_SELECTION_INDEX","MIN_COL_SELECTION_INDEX","HEADER_ROW_COUNT","LAST_BORDER","popupAddTable_PopupAddTable","PopupAddTable","_selectedBound","_tableBound","_eventHandlers","_selectTableRange","onClick","_fireCommandEvent","_cacheElements","_setTableSizeByBound","pageX","_selectionOffset","pageY","bound","_getSelectionBoundByOffset","_resizeTableBySelectionIfNeed","col","_setSelectionAreaByBound","_setDisplayText","_setSelectedBound","tableSize","_getSelectedTableSize","_this$el$querySelecto","desc","resizedBound","_getResizedTableBound","resizedCol","resizedRow","_isNeedResizeTable","_getBoundByOffset","_getOffsetByBound","boundOffset","_setTableSize","_setSelectionArea","popupAddTable","popupAddHeading_inheritsLoose","popupAddHeading_PopupAddHeading","PopupAddHeading","popupAddHeading","popupCodeBlockLanguages_inheritsLoose","BUTTON_CLASS_PREFIX","getButtonsHTML","popupCodeBlockLanguages_PopupCodeBlockLanguages","PopupCodeBlockLanguages","_onSelectedLanguage","_onDismissed","_currentButton","_languages","_btnMousedownHandler","_activateButtonByIndex","_addBtnMouseDownHandler","setCurrentLanguage","_changeLanguageButtons","scrollIntoView","getCurrentLanguage","selected","dismissed","popupCodeBlockLanguages","CLASS_SPLIT_SCROLL","CLASS_SINGLE_CONTENT","CLASS_SCROLL_SYNC","CLASS_SCROLL_WRAPPER","CLASS_SCROLL_CONTENT","CLASS_SPLITTER","EVENT_REQUIRE_SCROLL_INTO_VIEW","CLASS_CONTENT_LEFT","CLASS_CONTENT_RIGHT","CLASS_CONTENT","scrollSyncSplit_ScrollSyncSplit","ScrollSyncSplit","baseElement","leftElement","rightElement","showScrollSyncButton","scrollSync","splitView","_baseElement","_contentElements","_initDom","_initDomEvent","scrollWrapper","_scrollWrapper","_setScrollSync","setSplitView","_contentWrapper","_setLeft","_setRight","sync","_requireScrollIntoView","wrapperElement","_element$getBoundingC","targetTop","targetBottom","isScrollSynced","_wrapperElement$getBo","wrapperTop","wrapperBottom","_setContentElement","side","toggleScrollSync","toggleSplitView","isSplitView","wrapperHeight","scrollingElement","followingElement","scrollingElementHeight","scrollingElementScrollMax","followingElementHeight","followingElementTopMax","scrollSyncSplit","codeBlockEditor_inheritsLoose","CodeBlockEditor","singleCursorHeightPerLine","_language","_onRequireScrollIntoView","lineElement","load","codeBlockElement","setEditorCodeText","save","getEditorCodeText","getLanguage","codeBlockEditor","js_preview","codeBlockPreview_assertThisInitialized","codeBlockPreview_inheritsLoose","CodeBlockPreview","_codeBlockEditor","codeBlockPreview","codeBlockLanguagesCombo_CodeBlockLanguagesCombo","CodeBlockLanguagesCombo","_inputLanguage","_wrapper","_hide","_onKeyEvent","_showPopupCodeBlockLanguages","_onFocusOut","_toggleFocus","_show","clientRect","_prevStoredLanguage","selectedLanguage","_onLanguageSelectedFromList","inputLanguage","_hidePopupCodeBlockLanguages","_storeInputLanguage","setOnLanguageSelected","_onLanguageSelected","getElement","ui_codeBlockLanguagesCombo","popupCodeBlockEditor_inheritsLoose","popupCodeBlockEditor_CLASS_PREFIX","popupCodeBlockEditor_CLASS_OK_BUTTON","popupCodeBlockEditor_CLASS_CLOSE_BUTTON","CLASS_POPUP_CLOSE_BUTTON","TEMPLATE_HEADER_BUTTONS","popupCodeBlockEditor_PopupCodeBlockEditor","PopupCodeBlockEditor","TEMPLATE_CONTENT","_body","_toggleFitButton","_togglePreviewButton","_toggleScrollButton","_okButton","_closeButton","_codeMirrorWrapper","_createCodeBlockEditor","_previewWrapper","_createPreview","_scrollSyncSplit","_updateFitWindowButton","_updatePreviewButton","_updateScrollButton","_codeBlockLanguagesCombo","_createCodeBlockLanguagesCombo","_toggleFitToWindow","_togglePreview","_toggleScroll","_save","_focusEditor","codeMirrorWrapper","previewWrapper","_codeBlockPreview","titleElement","codeBlockLanguagesCombo","_codeBlockElement","_load","popupCodeBlockEditor","defaultUI_defineProperty","CLASS_TOOLBAR","CLASS_MARKDOWN_TAB","CLASS_EDITOR","CLASS_MODE_SWITCH","CONTAINER_TEMPLATE","defaultUI_DefaultUI","DefaultUI","_initialEditType","toolbarItems","hideModeSwitch","_editorSection","_initToolbar","_initModeSwitch","_initPopupAddLink","_initPopupAddImage","_initPopupAddTable","_initPopupAddHeading","_initPopupTableUtils","_initPopupCodeBlockLanguages","_initPopupCodeBlockEditor","_initMarkdownTab","_markdownTabControl","toolbar","modeSwitchTabBar","editType","modeSwitch","_modeSwitch","changeMode","_markdownTab","_markdownTabSection","itemText","getCodeMirror","getCurrentPreviewStyle","_popups","setToolbar","getModeSwitch","getEditorSectionHeight","getEditorHeight","getPopupTableUtils","tablePopup","createPopup","defaultUI","to_mark","to_mark_default","isValidDelimiterRun","isInvalidOpener","isInvalidCloser","convertEmphasis","convertedContent","FIND_BEFORE_AND_AFTER_SPACES_RX","_subContent$match","beforeSpaces","trimmedContent","afterSpaces","toMarkRenderer","pluginHelper","getExpandedRange","expendSize","expendRange","removeSyntax","symbol","symbolLength","appendSyntax","expandReplace","expandSize","checker","expendRangeText","syntaxRegex","contentRegex","_doc$getCursor","selectionStr","isSyntax","removeSyntaxInsideText","afterSelectStr","boldRangeRegex","boldContentRegex","boldSymbol","Bold","originRange","boldItalicRangeRegex","italic_boldRangeRegex","italicRangeRegex","italicContentRegex","isBoldItalic","isBold","isItalic","italicSymbol","italic_boldSymbol","boldItalicSymbol","italicLength","boldLength","boldItalicLength","removeItalicInsideText","italic_replaceText","expandReplaceBind","italic_replaceEmptyText","Italic","strikeRangeRegex","strikeContentRegex","strikeSymbol","Strike","BlockquoteRegex","Blockquote","getLineHandle","textToModify","textLinesToModify","isNeedToRemove","_haveBlockquote","_removeBlockquote","_addBlockquote","_isBlockquoteWithSpace","textArr","heading_FIND_HEADING_RX","Heading","lengthOfCurrentLineBefore","getHeadingMarkdown","foundedHeading","_text$split","markdownCommands_heading","Paragraph","textLines","getParagraphMarkdown","headingRx","replaceText","markdownCommands_hr","addLink_decodeURIGraceful","AddLink","addLink","addImage_decodeURIGraceful","addImage_encodeMarkdownCharacters","addImage_escapeMarkdownCharacters","AddImage","addImage","UL","listManager","markdownCommands_ul","OL","Indent","markdownCommands_indent","Outdent","outdent","Table","makeHeader","makeBody","border","irow","icol","markdownCommands_table","Task","markdownCommands_task","codeRangeRegex","codeContentRegex","Code","hasSyntax","hasStrikeSyntax","_removeCodeSyntax","setCursorToCenter","isRemoved","markdownCommands_code","CodeBlock","markdownCommands_codeBlock","bold_Bold","tableSelectionManager","styleBold","wysiwygCommands_bold","italic_Italic","styleItalic","wysiwygCommands_italic","strike_Strike","styleStrike","wysiwygCommands_strike","blockquote_Blockquote","wysiwygCommands_blockquote","wysiwygCommands_addImage_decodeURIGraceful","wysiwygCommands_addImage_encodeMarkdownCharacters","addImage_AddImage","wysiwygCommands_addImage","wysiwygCommands_addLink_decodeURIGraceful","addLink_encodeMarkdownCharacters","addLink_AddLink","linkAttibute","wysiwygCommands_addLink","hr_HR","nextBlockNode","wysiwygCommands_hr","heading_Heading","blockTagName","headingHTML","wrapperHeading","wysiwygCommands_heading","paragraph_Paragraph","appendChildrenTo","wysiwygCommands_paragraph","ul_UL","newLI","_changeFormatToUnorderedListIfNeed","wysiwygCommands_ul","ol_OL","_changeFormatToOrderedListIfNeed","wysiwygCommands_ol","table_Table","tableHTMLString","tableIDClassName","table_makeHeader","table_makeBody","focusToFirstTh","wysiwygCommands_table","TableAddRow","selectedRowLength","getSelectedRowsLength","getNewRow","focusToFirstTd","selectionMgr","first","cloned","htmlString","tableAddRow","TableAddCol","numberOfCols","getNumberOfCols","getCellByRange","addColToCellAfter","focusToNextCell","maxLength","cellToAdd","isTBody","isMSIE","tableAddCol","TableRemoveRow","tableMgr","getTrs","tbodyRowLength","firstTr","lastTr","nextFocus","tableRemoveRow_focusToFirstTd","nextFocusCell","getSelectedRows","rangeInformation","isStartContainerInThead","startRowIndex","endRowIndex","isWholeTbodySelected","tableRemoveRow","TableRemoveCol","hasMultipleCols","tbodyColLength","tailCell","headCell","removeMultipleColsByCells","tableRemoveCol_getCellByRange","removeColByCell","focusToCell","numberOfCells","cellToDelete","tableRemoveCol","TableAlignCol","alignDirection","getRangeInformation","getSelectionInformation","setAlignAttributeToTableCells","isDivided","startColumnIndex","endColumnIndex","startCell","tableAlignCol","TableRemove","tableRemove","indent_Indent","prevClasses","nodeClasses","nextClasses","divElements","wysiwygCommands_indent","outdent_Outdent","getCurrentLi","isExecutable","currentLiNode","wysiwygCommands_outdent","task_Task","_changeFormatToTaskIfNeed","wysiwygCommands_task","code_Code","_styleCode","styleCode","removeUnnecessaryCodeInNextToRange","wysiwygCommands_code","CODEBLOCK_CLASS_TEMP","codeBlock_CODEBLOCK_ATTR_NAME","codeBlock_CodeBlock","codeBlockBody","getCodeBlockBody","focusToFirstCode","mgr","extractContents","tempDiv","wysiwygCommands_codeBlock","ANIMATION_TIME","SCROLL_BOCKING_RESET_DELAY","currentTimeoutId","releaseTimer","deltaScrollTop","syncScrollTop","releaseEventBlock","animate","callbackObjForSync","startTime","step","deltaValue","stepTime","progress","cos","PI","helper","offsetInfo","EDITING_POSITION_RATIO","blockedPreviewScrollEvent","getAndSaveOffsetHeight","mdNodeId","cachedHeight","getTopInfo","mdNodeStartLine","previewElHeight","additionalScrollTop","additionalTopPos","syncPreviewScrollTopToMarkdown","scrollEvent","_cm$getScrollInfo","isBottomPos","scrollHeight","coordsChar","firstMdNode","nodeObj","scrollTopInfo","_getTopInfo","isBlockedPreviewScrollEvent","blockedMarkdownScrollEvent","previewScroll_latestScrollTop","getAndSaveOffsetInfo","cachedTop","getAncestorHavingId","syncMarkdownScrollTopToPreview","_preview$el","_cm$coordsChar","_getParentNodeObj","_getAndSaveOffsetInfo","isBlockedMarkdownScrollEvent","button_className","activeClassName","createButton","getUI","ACTIVE","INACTIVE","buttonEl","divider","changeButtonVisiblityStateIfNeed","addEditorCommand","mdPreviewStyle","currentMode","isScrollable","register","addScrollEvent","addPreviewRenderedEvent","editor_extends","__nedInstance","editor_ToastUIEditor","ToastUIEditor","initialHtml","previewStyle","previewHighlight","setUI","UI","setHtml","_addDefaultCommands","getMarkdown","_this$commandManager","afterAddedCommand","removeHook","getSquire","getCurrentModeEditor","getHtml","_minHeight","_ui","editorSectionHeight","diffHeight","isWithoutFocus","textObject","getInstances","tuiEditor","_createMarkdownToHTML","js_editor","Markdown","Write","Headings","Line","Description","OK","More","Cancel","File","URL"],"mappings":"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ACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,eACA,GACA,QACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,MACA,YACA,WACA,UACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,WACA,cACA,mBACA,qBACA,qBACA,kBACA,kBACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,cACA,cACA,YACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,KACA,IACA,IACA,GACA,OACA,QACA,GACA,eACA,aACA,GACA,gBACA,GACA,GACA,gBACA,eACA,cACA,cACA,cACA,iBACA,gBACA,eACA,iBACA,eACA,eACA,eACA,kBACA,OACA,QACA,QACA,QACA,OACA,OACA,GACA,MACA,gBACA,IAUIC,EAAyB,WAC3B,SAASA,EAAUzrD,GACjBtP,KAAKg7D,aAAa1rD,GASpB,IAAItB,EAAS+sD,EAAUh9D,UA6EvB,OA3EAiQ,EAAOgtD,aAAe,SAAsB1rD,GAC1C,IAAI2rD,EAAW3rD,EAAUA,EAAQ2rD,SAAW,IAC5Cj7D,KAAKk7D,UAAYD,GASnBjtD,EAAO4sB,QAAU,S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","file":"js/chunk-2d207949.db9e7953.js","sourcesContent":["/*!\n * @toast-ui/editor\n * @version 2.3.0 | Mon Jul 20 2020\n * @author NHN FE Development Lab \n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"codemirror\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"codemirror\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Editor\"] = factory(require(\"codemirror\"));\n\telse\n\t\troot[\"toastui\"] = root[\"toastui\"] || {}, root[\"toastui\"][\"Editor\"] = factory(root[\"CodeMirror\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__15__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = 65);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);\n/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);\n/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6);\n/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);\n/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);\n/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);\n/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__);\n/**\n * @fileoverview DOM Utils\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\nvar FIND_ZWB = /\\u200B/g;\nvar _window = window,\n getComputedStyle = _window.getComputedStyle;\n/**\n * Check if node is text node\n * @param {Node} node node to check\n * @returns {boolean} result\n * @ignore\n */\n\nvar isTextNode = function isTextNode(node) {\n return node && node.nodeType === Node.TEXT_NODE;\n};\n/**\n * Check if node is element node\n * @param {Node} node node to check\n * @returns {boolean} result\n * @ignore\n */\n\n\nvar isElemNode = function isElemNode(node) {\n return node && node.nodeType === Node.ELEMENT_NODE;\n};\n/**\n * Check that the node is block node\n * @param {Node} node node\n * @returns {boolean}\n * @ignore\n */\n\n\nvar isBlockNode = function isBlockNode(node) {\n return /^(ADDRESS|ARTICLE|ASIDE|BLOCKQUOTE|DETAILS|DIALOG|DD|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|H[\\d]|HEADER|HGROUP|HR|LI|MAIN|NAV|OL|P|PRE|SECTION|UL)$/gi.test(this.getNodeName(node));\n};\n/**\n * Get node name of node\n * @param {Node} node node\n * @returns {string} node name\n * @ignore\n */\n\n\nvar getNodeName = function getNodeName(node) {\n if (isElemNode(node)) {\n return node.tagName;\n }\n\n return 'TEXT';\n};\n/**\n * Get node offset length of node(for Range API)\n * @param {Node} node node\n * @returns {number} length\n * @ignore\n */\n\n\nvar getTextLength = function getTextLength(node) {\n var len;\n\n if (isElemNode(node)) {\n len = node.textContent.replace(FIND_ZWB, '').length;\n } else if (isTextNode(node)) {\n len = node.nodeValue.replace(FIND_ZWB, '').length;\n }\n\n return len;\n};\n/**\n * Get node offset length of node(for Range API)\n * @param {Node} node node\n * @returns {number} length\n * @ignore\n */\n\n\nvar getOffsetLength = function getOffsetLength(node) {\n var len;\n\n if (isElemNode(node)) {\n len = node.childNodes.length;\n } else if (isTextNode(node)) {\n len = node.nodeValue.replace(FIND_ZWB, '').length;\n }\n\n return len;\n};\n/**\n * get node offset between parent's childnodes\n * @param {Node} node node\n * @returns {number} offset(index)\n * @ignore\n */\n\n\nvar getNodeOffsetOfParent = function getNodeOffsetOfParent(node) {\n var childNodesOfParent = node.parentNode.childNodes;\n var i, t, found;\n\n for (i = 0, t = childNodesOfParent.length; i < t; i += 1) {\n if (childNodesOfParent[i] === node) {\n found = i;\n break;\n }\n }\n\n return found;\n};\n/**\n * get child node by offset\n * @param {Node} node node\n * @param {number} index offset index\n * @returns {Node} foudned node\n * @ignore\n */\n\n\nvar getChildNodeByOffset = function getChildNodeByOffset(node, index) {\n var currentNode;\n\n if (isTextNode(node)) {\n currentNode = node;\n } else if (node.childNodes.length && index >= 0) {\n currentNode = node.childNodes[index];\n }\n\n return currentNode;\n};\n/**\n * find next node from passed node\n * @param {strong} direction previous or next\n * @param {Node} node node\n * @param {string} untilNodeName parent node name to limit\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getNodeWithDirectionUntil = function getNodeWithDirectionUntil(direction, node, untilNodeName) {\n var directionKey = direction + \"Sibling\";\n var nodeName, foundedNode;\n\n while (node && !node[directionKey]) {\n nodeName = getNodeName(node.parentNode);\n\n if (nodeName === untilNodeName || nodeName === 'BODY') {\n break;\n }\n\n node = node.parentNode;\n }\n\n if (node[directionKey]) {\n foundedNode = node[directionKey];\n }\n\n return foundedNode;\n};\n/**\n * get prev node of childnode pointed with index\n * @param {Node} node node\n * @param {number} index offset index\n * @param {string} untilNodeName parent node name to limit\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getPrevOffsetNodeUntil = function getPrevOffsetNodeUntil(node, index, untilNodeName) {\n var prevNode;\n\n if (index > 0) {\n prevNode = getChildNodeByOffset(node, index - 1);\n } else {\n prevNode = getNodeWithDirectionUntil('previous', node, untilNodeName);\n }\n\n return prevNode;\n};\n\nvar getParentUntilBy = function getParentUntilBy(node, matchCondition, stopCondition) {\n var foundedNode;\n\n while (node.parentNode && !matchCondition(node.parentNode)) {\n node = node.parentNode;\n\n if (stopCondition && stopCondition(node.parentNode)) {\n break;\n }\n }\n\n if (matchCondition(node.parentNode)) {\n foundedNode = node;\n }\n\n return foundedNode;\n};\n/**\n * get parent node until paseed node name\n * @param {Node} node node\n * @param {string|HTMLNode} untilNode node name or node to limit\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getParentUntil = function getParentUntil(node, untilNode) {\n var foundedNode;\n\n if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(untilNode)) {\n foundedNode = getParentUntilBy(node, function (targetNode) {\n return untilNode === getNodeName(targetNode);\n });\n } else {\n foundedNode = getParentUntilBy(node, function (targetNode) {\n return untilNode === targetNode;\n });\n }\n\n return foundedNode;\n};\n/**\n * get node on the given direction under given parent\n * @param {strong} direction previous or next\n * @param {Node} node node\n * @param {string|Node} underNode parent node name to limit\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getNodeWithDirectionUnderParent = function getNodeWithDirectionUnderParent(direction, node, underNode) {\n var directionKey = direction + \"Sibling\";\n var foundedNode;\n node = getParentUntil(node, underNode);\n\n if (node && node[directionKey]) {\n foundedNode = node[directionKey];\n }\n\n return foundedNode;\n};\n/**\n * get top previous top level node under given node\n * @param {Node} node node\n * @param {Node} underNode underNode\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getTopPrevNodeUnder = function getTopPrevNodeUnder(node, underNode) {\n return getNodeWithDirectionUnderParent('previous', node, underNode);\n};\n/**\n * get next top level block node\n * @param {Node} node node\n * @param {Node} underNode underNode\n * @returns {Node} founded node\n * @ignore\n */\n\n\nvar getTopNextNodeUnder = function getTopNextNodeUnder(node, underNode) {\n return getNodeWithDirectionUnderParent('next', node, underNode);\n};\n/**\n * Get parent element the body element\n * @param {Node} node Node for start searching\n * @returns {Node}\n * @ignore\n */\n\n\nvar getTopBlockNode = function getTopBlockNode(node) {\n return getParentUntil(node, 'BODY');\n};\n/**\n * Get previous text node\n * @param {Node} node Node for start searching\n * @returns {Node}\n * @ignore\n */\n\n\nvar getPrevTextNode = function getPrevTextNode(node) {\n node = node.previousSibling || node.parentNode;\n\n while (!isTextNode(node) && getNodeName(node) !== 'BODY') {\n if (node.previousSibling) {\n node = node.previousSibling;\n\n while (node.lastChild) {\n node = node.lastChild;\n }\n } else {\n node = node.parentNode;\n }\n }\n\n if (getNodeName(node) === 'BODY') {\n node = null;\n }\n\n return node;\n};\n/**\n * test whether root contains the given node\n * @param {HTMLNode|string} root - root node\n * @param {HTMLNode} found - node to test\n * @returns {Boolean} true if root contains node\n * @ignore\n */\n\n\nvar containsNode = function containsNode(root, node) {\n var walker = document.createTreeWalker(root, 4, null, false);\n var found = root === node;\n\n while (!found && walker.nextNode()) {\n found = walker.currentNode === node;\n }\n\n return found;\n};\n/**\n * find node by offset\n * @param {HTMLElement} root Root element\n * @param {Array.} offsetList offset list\n * @param {function} textNodeFilter Text node filter\n * @returns {Array}\n * @ignore\n */\n\n\nvar findOffsetNode = function findOffsetNode(root, offsetList, textNodeFilter) {\n var result = [];\n var text = '';\n var walkerOffset = 0;\n var newWalkerOffset;\n\n if (!offsetList.length) {\n return result;\n }\n\n var offset = offsetList.shift();\n var walker = document.createTreeWalker(root, 4, null, false);\n\n while (walker.nextNode()) {\n text = walker.currentNode.nodeValue || '';\n\n if (textNodeFilter) {\n text = textNodeFilter(text);\n }\n\n newWalkerOffset = walkerOffset + text.length;\n\n while (newWalkerOffset >= offset) {\n result.push({\n container: walker.currentNode,\n offsetInContainer: offset - walkerOffset,\n offset: offset\n });\n\n if (!offsetList.length) {\n return result;\n }\n\n offset = offsetList.shift();\n }\n\n walkerOffset = newWalkerOffset;\n } // there should be offset left\n\n\n do {\n result.push({\n container: walker.currentNode,\n offsetInContainer: text.length,\n offset: offset\n });\n offset = offsetList.shift();\n } while (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(offset));\n\n return result;\n};\n\nvar getNodeInfo = function getNodeInfo(node) {\n var path = {};\n path.tagName = node.nodeName;\n\n if (node.id) {\n path.id = node.id;\n }\n\n var className = node.className.trim();\n\n if (className) {\n path.className = className;\n }\n\n return path;\n};\n\nvar getPath = function getPath(node, root) {\n var paths = [];\n\n while (node && node !== root) {\n if (isElemNode(node)) {\n paths.unshift(getNodeInfo(node));\n }\n\n node = node.parentNode;\n }\n\n return paths;\n};\n/**\n * Find next, previous TD or TH element by given TE element\n * @param {HTMLElement} node TD element\n * @param {string} direction 'next' or 'previous'\n * @returns {HTMLElement|null}\n * @ignore\n */\n\n\nvar getTableCellByDirection = function getTableCellByDirection(node, direction) {\n var targetElement = null;\n\n if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) {\n if (direction === 'next') {\n targetElement = node.nextElementSibling;\n } else {\n targetElement = node.previousElementSibling;\n }\n }\n\n return targetElement;\n};\n/**\n * Find sibling TR's TD element by given TD and direction\n * @param {HTMLElement} node TD element\n * @param {string} direction Boolean value for find first TD in next line\n * @param {boolean} [needEdgeCell=false] Boolean value for find first TD in next line\n * @returns {HTMLElement|null}\n * @ignore\n */\n\n\nvar getSiblingRowCellByDirection = function getSiblingRowCellByDirection(node, direction, needEdgeCell) {\n var tableCellElement = null;\n var index, targetRowElement, currentContainer, siblingContainer, isSiblingContainerExists;\n\n if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) {\n if (node) {\n if (direction === 'next') {\n targetRowElement = node.parentNode && node.parentNode.nextSibling;\n currentContainer = parents(node, 'thead');\n siblingContainer = currentContainer[0] && currentContainer[0].nextSibling;\n isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'TBODY';\n index = 0;\n } else {\n targetRowElement = node.parentNode && node.parentNode.previousSibling;\n currentContainer = parents(node, 'tbody');\n siblingContainer = currentContainer[0] && currentContainer[0].previousSibling;\n isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'THEAD';\n index = node.parentNode.childNodes.length - 1;\n }\n\n if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(needEdgeCell) || !needEdgeCell) {\n index = getNodeOffsetOfParent(node);\n }\n\n if (targetRowElement) {\n tableCellElement = children(targetRowElement, 'td,th')[index];\n } else if (currentContainer[0] && isSiblingContainerExists) {\n tableCellElement = findAll(siblingContainer, 'td,th')[index];\n }\n }\n }\n\n return tableCellElement;\n};\n/**\n * Check that the inline node is supported by markdown\n * @param {Node} node TD element\n * @returns {boolean}\n * @ignore\n */\n\n\nvar isMDSupportInlineNode = function isMDSupportInlineNode(node) {\n return /^(A|B|BR|CODE|DEL|EM|I|IMG|S|SPAN|STRONG)$/gi.test(node.nodeName);\n};\n/**\n * Check that node is styled node.\n * Styled node is a node that has text and decorates text.\n * @param {Node} node TD element\n * @returns {boolean}\n * @ignore\n */\n\n\nvar isStyledNode = function isStyledNode(node) {\n return /^(A|ABBR|ACRONYM|B|BDI|BDO|BIG|CITE|CODE|DEL|DFN|EM|I|INS|KBD|MARK|Q|S|SAMP|SMALL|SPAN|STRONG|SUB|SUP|U|VAR)$/gi.test(node.nodeName);\n};\n/**\n * remove node from 'start' node to 'end-1' node inside parent\n * if 'end' node is null, remove all child nodes after 'start' node.\n * @param {Node} parentNode - parent node\n * @param {Node} start - start node to remove\n * @param {Node} end - end node to remove\n * @ignore\n */\n\n\nvar removeChildFromStartToEndNode = function removeChildFromStartToEndNode(parentNode, start, end) {\n var child = start;\n\n if (!child || parentNode !== child.parentNode) {\n return;\n }\n\n while (child !== end) {\n var nextNode = child.nextSibling;\n parentNode.removeChild(child);\n child = nextNode;\n }\n};\n/**\n * remove nodes along the direction from the node to reach targetParent node\n * @param {Node} targetParent - stop removing when reach target parent node\n * @param {Node} node - start node\n * @param {boolean} isForward - direction\n * @ignore\n */\n\n\nvar removeNodesByDirection = function removeNodesByDirection(targetParent, node, isForward) {\n var parentNode = node;\n\n while (parentNode !== targetParent) {\n var nextParent = parentNode.parentNode;\n var _parentNode = parentNode,\n nextSibling = _parentNode.nextSibling,\n previousSibling = _parentNode.previousSibling;\n\n if (!isForward && nextSibling) {\n removeChildFromStartToEndNode(nextParent, nextSibling, null);\n } else if (isForward && previousSibling) {\n removeChildFromStartToEndNode(nextParent, nextParent.childNodes[0], parentNode);\n }\n\n parentNode = nextParent;\n }\n};\n\nvar getLeafNode = function getLeafNode(node) {\n var result = node;\n\n while (result.childNodes && result.childNodes.length) {\n var _result = result,\n nextLeaf = _result.firstChild; // When inline tag have empty text node with other childnodes, ignore empty text node.\n\n if (isTextNode(nextLeaf) && !getTextLength(nextLeaf)) {\n result = nextLeaf.nextSibling || nextLeaf;\n } else {\n result = nextLeaf;\n }\n }\n\n return result;\n};\n/**\n * check if a coordinates is inside a task box\n * @param {object} style - computed style of task box\n * @param {number} offsetX - event x offset\n * @param {number} offsetY - event y offset\n * @returns {boolean}\n * @ignore\n */\n\n\nvar isInsideTaskBox = function isInsideTaskBox(style, offsetX, offsetY) {\n var rect = {\n left: parseInt(style.left, 10),\n top: parseInt(style.top, 10),\n width: parseInt(style.width, 10),\n height: parseInt(style.height, 10)\n };\n return offsetX >= rect.left && offsetX <= rect.left + rect.width && offsetY >= rect.top && offsetY <= rect.top + rect.height;\n};\n/**\n * Check whether node is OL or UL\n * @param {node} node - node\n * @returns {boolean} - whether node is OL or UL\n * @ignore\n */\n\n\nvar isListNode = function isListNode(node) {\n if (!node) {\n return false;\n }\n\n return node.nodeName === 'UL' || node.nodeName === 'OL';\n};\n/**\n * Check whether node is first list item\n * @param {node} node - node\n * @returns {boolean} whether node is first list item\n * @ignore\n */\n\n\nvar isFirstListItem = function isFirstListItem(node) {\n var nodeName = node.nodeName,\n parentNode = node.parentNode;\n return nodeName === 'LI' && node === parentNode.firstChild;\n};\n/**\n * Check whether node is first level list item\n * @param {node} node - node\n * @returns {boolean} whether node is first level list item\n * @ignore\n */\n\n\nvar isFirstLevelListItem = function isFirstLevelListItem(node) {\n var nodeName = node.nodeName,\n listNode = node.parentNode;\n var listParentNode = listNode.parentNode;\n return nodeName === 'LI' && !isListNode(listParentNode);\n};\n/**\n * Merge node to target node and detach node\n * @param {node} node - node\n * @param {node} targetNode - target node\n * @ignore\n */\n\n\nvar mergeNode = function mergeNode(node, targetNode) {\n if (node.hasChildNodes()) {\n tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(node.childNodes).forEach(function () {\n targetNode.appendChild(node.firstChild);\n });\n targetNode.normalize();\n }\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n};\n/**\n * Create hr that is not contenteditable\n * @returns {node} hr is wraped div\n * @ignore\n */\n\n\nvar createHorizontalRule = function createHorizontalRule() {\n var div = document.createElement('div');\n var hr = document.createElement('hr');\n div.setAttribute('contenteditable', false);\n hr.setAttribute('contenteditable', false);\n div.appendChild(hr);\n return div;\n};\n/**\n * Create Empty Line\n * @returns {node}

\n * @private\n */\n\n\nvar createEmptyLine = function createEmptyLine() {\n var div = document.createElement('div');\n div.appendChild(document.createElement('br'));\n return div;\n};\n/**\n * Find same tagName child node and change wrapping order.\n * For example, if below node need to optimize 'B' tag.\n * test\n * should be changed tag's order.\n * test\n * @param {node} node\n * @param {string} tagName\n * @returns {node}\n * @private\n */\n\n\nvar changeTagOrder = function changeTagOrder(node, tagName) {\n if (node.nodeName !== 'SPAN') {\n var parentNode = node.parentNode;\n var tempNode = node;\n\n while (tempNode.childNodes && tempNode.childNodes.length === 1 && !isTextNode(tempNode.firstChild)) {\n tempNode = tempNode.firstChild;\n\n if (tempNode.nodeName === 'SPAN') {\n break;\n }\n\n if (tempNode.nodeName === tagName) {\n var wrapper = document.createElement(tagName);\n mergeNode(tempNode, tempNode.parentNode);\n parentNode.replaceChild(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n }\n }\n }\n\n return node;\n};\n/**\n * Find same tagName nodes and merge from startNode to endNode.\n * @param {node} startNode\n * @param {node} endNode\n * @param {string} tagName\n * @returns {node}\n * @private\n */\n\n\nvar mergeSameNodes = function mergeSameNodes(startNode, endNode, tagName) {\n var startBlockNode = changeTagOrder(startNode, tagName);\n\n if (startBlockNode.nodeName === tagName) {\n var endBlockNode = changeTagOrder(endNode, tagName);\n var mergeTargetNode = startBlockNode;\n var nextNode = startBlockNode.nextSibling;\n\n while (nextNode) {\n var tempNext = nextNode.nextSibling;\n nextNode = changeTagOrder(nextNode, tagName);\n\n if (nextNode.nodeName === tagName) {\n // eslint-disable-next-line max-depth\n if (mergeTargetNode) {\n mergeNode(nextNode, mergeTargetNode);\n } else {\n mergeTargetNode = nextNode;\n }\n } else {\n mergeTargetNode = null;\n }\n\n if (nextNode === endBlockNode) {\n break;\n }\n\n nextNode = tempNext;\n }\n }\n};\n/**\n * Find same tagName nodes in range and merge nodes.\n * For example range is like this\n * AAABBB\n * nodes is changed below\n * AAABBB\n * @param {range} range\n * @param {string} tagName\n * @private\n */\n\n\nvar optimizeRange = function optimizeRange(range, tagName) {\n var collapsed = range.collapsed,\n commonAncestorContainer = range.commonAncestorContainer,\n startContainer = range.startContainer,\n endContainer = range.endContainer;\n\n if (!collapsed) {\n var optimizedNode = null;\n\n if (startContainer !== endContainer) {\n var startNode = getParentUntil(startContainer, commonAncestorContainer);\n var endNode = getParentUntil(endContainer, commonAncestorContainer);\n\n if (startNode && endNode) {\n mergeSameNodes(startNode, endNode, tagName);\n }\n\n optimizedNode = commonAncestorContainer;\n } else if (isTextNode(startContainer)) {\n optimizedNode = startContainer.parentNode;\n }\n\n if (optimizedNode && optimizedNode.nodeName === tagName) {\n var _optimizedNode = optimizedNode,\n previousSibling = _optimizedNode.previousSibling;\n var tempNode;\n\n if (previousSibling) {\n tempNode = changeTagOrder(previousSibling);\n\n if (tempNode.nodeName === tagName) {\n mergeNode(optimizedNode, tempNode);\n }\n }\n\n var _optimizedNode2 = optimizedNode,\n nextSibling = _optimizedNode2.nextSibling;\n\n if (nextSibling) {\n tempNode = changeTagOrder(nextSibling);\n\n if (tempNode.nodeName === tagName) {\n mergeNode(tempNode, optimizedNode);\n }\n }\n }\n }\n};\n/**\n * Gets all text node from root element.\n * @param {HTMLElement} root Root element\n * @returns {Array} list of text nodes\n * @ignore\n */\n\n\nvar getAllTextNode = function getAllTextNode(root) {\n var walker = document.createTreeWalker(root, 4, null, false);\n var result = [];\n\n while (walker.nextNode()) {\n var node = walker.currentNode;\n\n if (isTextNode(node)) {\n result.push(node);\n }\n }\n\n return result;\n};\n/**\n * Check whether the node is 'TD' or 'TH'\n * @param {HTMLElement} node - the target node\n * @returns {boolean} - whether the node is 'TD' or 'TH'\n * @ignore\n */\n\n\nvar isCellNode = function isCellNode(node) {\n if (!node) {\n return false;\n }\n\n return node.nodeName === 'TD' || node.nodeName === 'TH';\n};\n/**\n * Get the last node on the target node by the condition\n * @param {HTMLElement} node - the target node\n * @returns {function} - the condition to find the node\n * @ignore\n */\n\n\nvar getLastNodeBy = function getLastNodeBy(node, condition) {\n var lastNode = node && node.lastChild;\n\n while (lastNode && condition(lastNode)) {\n lastNode = lastNode.lastChild;\n }\n\n return lastNode;\n};\n/**\n * Get the parent node on the target node by the condition\n * @param {HTMLElement} node - the target node\n * @returns {function} - the condition to find the node\n * @ignore\n */\n\n\nvar getParentNodeBy = function getParentNodeBy(node, condition) {\n while (node && condition(node.parentNode, node)) {\n node = node.parentNode;\n }\n\n return node;\n};\n/**\n * Get the sibling node on the target node by the condition\n * @param {HTMLElement} node - the target node\n * @param {string} direction - the direction to find node ('previous', 'next')\n * @returns {function} - the condition to find the node\n * @ignore\n */\n\n\nvar getSiblingNodeBy = function getSiblingNodeBy(node, direction, condition) {\n var directionKey = direction + \"Sibling\";\n\n while (node && condition(node[directionKey], node)) {\n node = node[directionKey];\n }\n\n return node;\n};\n/**\n * Create element with contents\n * @param {string|Node} contents - contents to appended\n * @param {HTMLElement} [target] - container element to append contents\n * @returns {Node} created node\n * @ignore\n */\n\n\nfunction createElementWith(contents, target) {\n var container = document.createElement('div');\n\n if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(contents)) {\n container.innerHTML = contents;\n } else {\n container.appendChild(contents);\n }\n\n var firstChild = container.firstChild;\n\n if (target) {\n target.appendChild(firstChild);\n }\n\n return firstChild;\n}\n/**\n * Find nodes matching by selector\n * @param {HTMLElement} element - target element\n * @param {string} selector - selector to find nodes\n * @returns {Array.} found nodes\n * @ignore\n */\n\n\nfunction findAll(element, selector) {\n var nodeList = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(element.querySelectorAll(selector));\n\n if (nodeList.length) {\n return nodeList;\n }\n\n return [];\n}\n/**\n * Checks whether specific node is included in target node\n * @param {HTMLElement} element - target to find\n * @param {Node} containedNode - node to find\n * @returns {boolean} whether node is contained or not\n * @ignore\n */\n\n\nfunction isContain(element, contained) {\n return element !== contained && element.contains(contained);\n}\n/**\n * Gets closest node matching by selector\n * @param {Node} node - target node\n * @param {string|Node} found - selector or element to find node\n * @returns {?Node} - found node\n * @ignore\n */\n\n\nfunction closest(node, found) {\n var condition;\n\n if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(found)) {\n condition = function condition(target) {\n return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(target, found);\n };\n } else {\n condition = function condition(target) {\n return target === found;\n };\n }\n\n while (node && node !== document) {\n if (isElemNode(node) && condition(node)) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return null;\n}\n/**\n * Gets parent node matching by selector from target node\n * @param {Node} node - target node\n * @param {string} [selector] - selector to find\n * @returns {Node} found node\n * @ignore\n */\n\n\nfunction parent(node, selector) {\n var parentNode = node.parentNode;\n\n if (selector) {\n return parentNode && tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(parentNode, selector) ? parentNode : null;\n }\n\n return parentNode;\n}\n/**\n * Gets ancestor nodes matching by selector from target node\n * @param {Node} node - target node\n * @param {string|Node} found - selector or node to find\n * @returns {Array.} found nodes\n * @ignore\n */\n\n\nfunction parents(node, found) {\n var result = [];\n\n while (node && node !== document) {\n node = closest(node.parentNode, found);\n\n if (node) {\n result.push(node);\n }\n }\n\n return result;\n}\n/**\n * Gets ancestor nodes until matching by selector from target node\n * @param {Node} node - target node\n * @param {string} selector - selector to find\n * @param {Array.} found nodes\n * @ignore\n */\n\n\nfunction parentsUntil(node, selector) {\n var result = [];\n\n while (node.parentNode && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(node.parentNode, selector)) {\n node = node.parentNode;\n\n if (node) {\n result.push(node);\n }\n }\n\n return result;\n}\n/**\n * Gets child nodes matching by selector from target node\n * @param {Node} node - target node\n * @param {string} selector - selector to find\n * @returns {Array.} found nodes\n * @ignore\n */\n\n\nfunction children(node, selector) {\n var foundChildren;\n\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n foundChildren = node.childNodes;\n } else {\n foundChildren = node.children;\n }\n\n return tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(foundChildren).filter(function (child) {\n return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(child, selector);\n });\n}\n/**\n * Appends node(s) on target node\n * @param {Node} node - target node\n * @param {string|Node} appended - html string or node to append\n * @ignore\n */\n\n\nfunction append(node, appended) {\n if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) {\n node.insertAdjacentHTML('beforeEnd', appended);\n } else {\n appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended];\n\n for (var i = 0, len = appended.length; i < len; i += 1) {\n node.appendChild(appended[i]);\n }\n }\n}\n/**\n * Prepends node(s) on target node\n * @param {Node} node - target node\n * @param {string|Node} appended - html string or node to append\n * @ignore\n */\n\n\nfunction prepend(node, appended) {\n if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) {\n node.insertAdjacentHTML('afterBegin', appended);\n } else {\n appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended];\n\n for (var i = appended.length - 1, len = 0; i >= len; i -= 1) {\n node.insertBefore(appended[i], node.firstChild);\n }\n }\n}\n/**\n * Inserts new node in front of target node\n * @param {Node} insertedNode - node to insert\n * @param {Node} node - target node\n * @ignore\n */\n\n\nfunction insertBefore(insertedNode, node) {\n var parentNode = node.parentNode;\n\n if (parentNode) {\n parentNode.insertBefore(insertedNode, node);\n }\n}\n/**\n * Inserts new node after target node\n * @param {Node} insertedNode - node to insert\n * @param {Node} node - target node\n * @ignore\n */\n\n\nfunction insertAfter(insertedNode, node) {\n var parentNode = node.parentNode;\n\n if (parentNode) {\n parentNode.insertBefore(insertedNode, node.nextSibling);\n }\n}\n/**\n * Replaces target node(s) with html\n * @param {Node} nodeList - target node(s) to replace\n * @param {string} html - replaced html\n * @ignore\n */\n\n\nfunction replaceWith(nodeList, html) {\n nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList];\n nodeList.forEach(function (node) {\n node.insertAdjacentHTML('afterEnd', html);\n node.parentNode.removeChild(node);\n });\n}\n/**\n * Adds parent element to target node(s)\n * @param {Node|Array.} nodeList - target node(s)\n * @param {string} nodeName - node name to change parent element\n * @ignore\n */\n\n\nfunction wrap(nodeList, nodeName) {\n nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList];\n nodeList.forEach(function (node) {\n var wrapper = document.createElement(nodeName);\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n });\n}\n/**\n * Adds child element to target node(s)\n * @param {Node|Array.} nodeList - target node(s)\n * @param {string} nodeName - node name to change child element\n * @ignore\n */\n\n\nfunction wrapInner(nodeList, nodeName) {\n nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList];\n nodeList.forEach(function (node) {\n var wrapper = document.createElement(nodeName);\n node.appendChild(wrapper);\n\n while (node.firstChild !== wrapper) {\n wrapper.appendChild(node.firstChild);\n }\n });\n}\n/**\n * Removes target element and insert children at the same position\n * @param {Node} node - parent node\n * @returns {Array.} unwrapped nodes\n * @ignore\n */\n\n\nfunction unwrap(node) {\n var result = [];\n\n while (node.firstChild) {\n result.push(node.firstChild);\n node.parentNode.insertBefore(node.firstChild, node);\n }\n\n remove(node);\n return result;\n}\n/**\n * Removes target node from parent node\n * @param {Node} node - target node\n * @ignore\n */\n\n\nfunction remove(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n/**\n * Removes all children of target node\n * @param {Node} node - target node\n * @ignore\n */\n\n\nfunction empty(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n/**\n * Sets offset value of target element\n * @param {HTMLElement} element - target element\n * @returns {Object.} offset values\n * @ignore\n */\n\n\nfunction setOffset(element, offset) {\n var _element$parentNode$g = element.parentNode.getBoundingClientRect(),\n top = _element$parentNode$g.top,\n left = _element$parentNode$g.left;\n\n tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, {\n top: offset.top - top - document.body.scrollTop + \"px\"\n });\n tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, {\n left: offset.left - left - document.body.scrollLeft + \"px\"\n });\n}\n/**\n * Gets offset value of target element\n * @param {HTMLElement} element - target element\n * @param {string} [selector] - selector to stop finding node\n * @returns {Object.} offset values\n * @ignore\n */\n\n\nfunction getOffset(element, selector) {\n if (selector === void 0) {\n selector = 'document';\n }\n\n var top = 0;\n var left = 0;\n\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(element, selector));\n\n return {\n top: top,\n left: left\n };\n}\n/**\n * Gets outer width value of target element\n * @param {HTMLElement} element - target element\n * @param {boolean} includedMargin - whether to include margir or not\n * @returns {number} outer width value\n * @ignore\n */\n\n\nfunction getOuterWidth(element, includedMargin) {\n var widthValue = element.offsetWidth;\n\n if (includedMargin) {\n var _getComputedStyle = getComputedStyle(element),\n marginLeft = _getComputedStyle.marginLeft,\n marginRight = _getComputedStyle.marginRight;\n\n widthValue += parseInt(marginLeft, 10) + parseInt(marginRight, 10);\n }\n\n return widthValue;\n}\n/**\n * Gets outer height value of target element\n * @param {HTMLElement} element - target element\n * @param {boolean} includedMargin - whether to include margir or not\n * @returns {number} outer height value\n * @ignore\n */\n\n\nfunction getOuterHeight(element, includedMargin) {\n var heightValue = element.offsetHeight;\n\n if (includedMargin) {\n var _getComputedStyle2 = getComputedStyle(element),\n marginTop = _getComputedStyle2.marginTop,\n marginBottom = _getComputedStyle2.marginBottom;\n\n heightValue += parseInt(marginTop, 10) + parseInt(marginBottom, 10);\n }\n\n return heightValue;\n}\n/**\n * Toggles class name of target element\n * @param {HTMLElement} element - target element\n * @param {string} className - class name to toggle\n * @param {boolean} [state] - whether to toggle or not by condition\n * @ignore\n */\n\n\nvar toggleClass = function toggleClass(element, className, state) {\n if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(state)) {\n state = !tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default()(element, className);\n }\n\n var toggleFn = state ? tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default.a : tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default.a;\n toggleFn(element, className);\n};\n/**\n * Finalize html result\n * @param {HTMLElement} html root element\n * @param {boolean} needHtmlText pass true if need html text\n * @returns {string|DocumentFragment} result\n * @ignore\n */\n\n\nfunction finalizeHtml(html, needHtmlText) {\n var result;\n\n if (needHtmlText) {\n result = html.innerHTML;\n } else {\n var frag = document.createDocumentFragment();\n var childNodes = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(html.childNodes);\n var length = childNodes.length;\n\n for (var i = 0; i < length; i += 1) {\n frag.appendChild(childNodes[i]);\n }\n\n result = frag;\n }\n\n return result;\n}\n/**\n * Get fragment replaced by newline to br tag\n * @param {string} text original text\n * @returns {DocumentFragment} fragment\n * @ignore\n */\n\n\nfunction getFragmentReplacedByNewlineToBr(text) {\n var fragment = document.createDocumentFragment();\n var texts = text.split('\\n');\n texts.forEach(function (plainText, index) {\n var textNode = document.createTextNode(plainText);\n fragment.appendChild(textNode);\n\n if (index < texts.length - 1) {\n fragment.appendChild(document.createElement('br'));\n }\n });\n return fragment;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n getNodeName: getNodeName,\n isTextNode: isTextNode,\n isElemNode: isElemNode,\n isBlockNode: isBlockNode,\n getTextLength: getTextLength,\n getOffsetLength: getOffsetLength,\n getPrevOffsetNodeUntil: getPrevOffsetNodeUntil,\n getNodeOffsetOfParent: getNodeOffsetOfParent,\n getChildNodeByOffset: getChildNodeByOffset,\n getNodeWithDirectionUntil: getNodeWithDirectionUntil,\n containsNode: containsNode,\n getTopPrevNodeUnder: getTopPrevNodeUnder,\n getTopNextNodeUnder: getTopNextNodeUnder,\n getParentUntilBy: getParentUntilBy,\n getParentUntil: getParentUntil,\n getTopBlockNode: getTopBlockNode,\n getPrevTextNode: getPrevTextNode,\n findOffsetNode: findOffsetNode,\n getPath: getPath,\n getNodeInfo: getNodeInfo,\n getTableCellByDirection: getTableCellByDirection,\n getSiblingRowCellByDirection: getSiblingRowCellByDirection,\n isMDSupportInlineNode: isMDSupportInlineNode,\n isStyledNode: isStyledNode,\n removeChildFromStartToEndNode: removeChildFromStartToEndNode,\n removeNodesByDirection: removeNodesByDirection,\n getLeafNode: getLeafNode,\n isInsideTaskBox: isInsideTaskBox,\n isListNode: isListNode,\n isFirstListItem: isFirstListItem,\n isFirstLevelListItem: isFirstLevelListItem,\n mergeNode: mergeNode,\n createHorizontalRule: createHorizontalRule,\n createEmptyLine: createEmptyLine,\n changeTagOrder: changeTagOrder,\n mergeSameNodes: mergeSameNodes,\n optimizeRange: optimizeRange,\n getAllTextNode: getAllTextNode,\n isCellNode: isCellNode,\n getLastNodeBy: getLastNodeBy,\n getParentNodeBy: getParentNodeBy,\n getSiblingNodeBy: getSiblingNodeBy,\n createElementWith: createElementWith,\n findAll: findAll,\n isContain: isContain,\n closest: closest,\n parent: parent,\n parents: parents,\n parentsUntil: parentsUntil,\n children: children,\n append: append,\n prepend: prepend,\n insertBefore: insertBefore,\n insertAfter: insertAfter,\n replaceWith: replaceWith,\n wrap: wrap,\n wrapInner: wrapInner,\n unwrap: unwrap,\n remove: remove,\n empty: empty,\n setOffset: setOffset,\n getOffset: getOffset,\n getOuterWidth: getOuterWidth,\n getOuterHeight: getOuterHeight,\n toggleClass: toggleClass,\n finalizeHtml: finalizeHtml,\n getFragmentReplacedByNewlineToBr: getFragmentReplacedByNewlineToBr\n});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/object/extend.js\nvar extend = __webpack_require__(7);\nvar extend_default = /*#__PURE__*/__webpack_require__.n(extend);\n\n// CONCATENATED MODULE: ./src/js/command.js\n/**\n * @fileoverview Implements Command\n * @author NHN FE Development Lab \n */\n\n/**\n * Class Command\n * @param {string} name Command name\n * @param {number} type Command type (Command.TYPE)\n * @param {Array.} [keyMap] keyMap\n * @ignore\n */\n\nvar Command = /*#__PURE__*/function () {\n function Command(name, type, keyMap) {\n this.name = name;\n this.type = type;\n\n if (keyMap) {\n this.setKeyMap(keyMap);\n }\n }\n /**\n * returns Name of command\n * @returns {string} Command Name\n */\n\n\n var _proto = Command.prototype;\n\n _proto.getName = function getName() {\n return this.name;\n }\n /**\n * returns Type of command\n * @returns {number} Command Command type number\n */\n ;\n\n _proto.getType = function getType() {\n return this.type;\n }\n /**\n * returns whether Command Type is Markdown or not\n * @returns {boolean} result\n */\n ;\n\n _proto.isMDType = function isMDType() {\n return this.type === Command.TYPE.MD;\n }\n /**\n * returns whether Command Type is Wysiwyg or not\n * @returns {boolean} result\n */\n ;\n\n _proto.isWWType = function isWWType() {\n return this.type === Command.TYPE.WW;\n }\n /**\n * returns whether Command Type is Global or not\n * @returns {boolean} result\n */\n ;\n\n _proto.isGlobalType = function isGlobalType() {\n return this.type === Command.TYPE.GB;\n }\n /**\n * Set keymap value for each os\n * @param {string} win Windows Key(and etc)\n * @param {string} mac Mac osx key\n */\n ;\n\n _proto.setKeyMap = function setKeyMap(win, mac) {\n this.keyMap = [win, mac];\n };\n\n return Command;\n}();\n/**\n * Command factory method\n * @param {string} typeStr Editor type name\n * @param {object} props Property\n * @param {string} props.name Command name\n * @param {number} props.type Command type number\n * @returns {Command}\n * @static\n */\n\n\nCommand.factory = function (typeStr, props) {\n var type;\n\n if (typeStr === 'markdown') {\n type = Command.TYPE.MD;\n } else if (typeStr === 'wysiwyg') {\n type = Command.TYPE.WW;\n } else if (typeStr === 'global') {\n type = Command.TYPE.GB;\n }\n\n var command = new Command(props.name, type);\n extend_default()(command, props);\n return command;\n};\n/**\n * Command Type Constant\n * markdown : 0\n * wysiwyg : 1\n * global : 2\n * @type {object}\n * @private\n */\n\n\nCommand.TYPE = {\n MD: 0,\n WW: 1,\n GB: 2\n};\n/* harmony default export */ var js_command = (Command);\n// EXTERNAL MODULE: ./src/js/utils/common.js\nvar common = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./src/js/utils/map.js\nvar map = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./src/js/commandManager.js\n/**\n * @fileoverview Implements CommandManager\n * @author NHN FE Development Lab \n */\n\n\n\n\nvar KEYMAP_OS_INDEX = common[\"b\" /* isMac */] ? 1 : 0;\n/**\n * Class CommandManager\n * @param {ToastUIEditor} base nedInstance\n * @param {object} [options={}] - option object\n * @param {boolean} [options.useCommandShortcut=true] - execute command with keyMap\n * @ignore\n */\n\nvar commandManager_CommandManager = /*#__PURE__*/function () {\n function CommandManager(base, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._command = new map[\"a\" /* default */]();\n this._mdCommand = new map[\"a\" /* default */]();\n this._wwCommand = new map[\"a\" /* default */]();\n this._options = extend_default()({\n useCommandShortcut: true\n }, options);\n this.base = base;\n this.keyMapCommand = {};\n\n this._initEvent();\n }\n /**\n * You can change command before command addition by addCommandBefore event.\n * @param {object} command - command\n * @returns {object}\n * @private\n */\n\n\n var _proto = CommandManager.prototype;\n\n _proto._addCommandBefore = function _addCommandBefore(command) {\n var commandWrapper = {\n command: command\n };\n this.base.eventManager.emit('addCommandBefore', commandWrapper);\n return commandWrapper.command || command;\n }\n /**\n * Add command\n * @param {Command} command Command instance\n * @returns {Command} Command\n */\n ;\n\n _proto.addCommand = function addCommand(command) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (args.length) {\n command = CommandManager.command.apply(CommandManager, [command].concat(args));\n }\n\n command = this._addCommandBefore(command);\n var name = command.getName();\n var commandBase;\n\n if (command.isMDType()) {\n commandBase = this._mdCommand;\n } else if (command.isWWType()) {\n commandBase = this._wwCommand;\n } else if (command.isGlobalType()) {\n commandBase = this._command;\n }\n\n commandBase.set(name, command);\n\n if (command.keyMap) {\n this.keyMapCommand[command.keyMap[KEYMAP_OS_INDEX]] = name;\n }\n\n return command;\n }\n /**\n * _initEvent\n * Bind event handler to eventManager\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.base.eventManager.listen('command', function () {\n _this.exec.apply(_this, arguments);\n });\n this.base.eventManager.listen('keyMap', function (ev) {\n if (!_this._options.useCommandShortcut) {\n return;\n }\n\n var command = _this.keyMapCommand[ev.keyMap];\n\n if (command) {\n ev.data.preventDefault();\n\n _this.exec(command);\n }\n });\n }\n /**\n * Execute command\n * @param {String} name Command name\n * @param {*} ...args Command argument\n * @returns {*}\n */\n ;\n\n _proto.exec = function exec(name) {\n var commandToRun, result;\n var context = this.base;\n commandToRun = this._command.get(name);\n\n if (!commandToRun) {\n if (this.base.isMarkdownMode()) {\n commandToRun = this._mdCommand.get(name);\n context = this.base.mdEditor;\n } else {\n commandToRun = this._wwCommand.get(name);\n context = this.base.wwEditor;\n }\n }\n\n if (commandToRun) {\n var _commandToRun;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n args.unshift(context);\n result = (_commandToRun = commandToRun).exec.apply(_commandToRun, args);\n }\n\n return result;\n };\n\n return CommandManager;\n}();\n/**\n * Create command by given editor type and property object\n * @param {string} type Command type\n * @param {{name: string, keyMap: Array}} props Property\n * @returns {*}\n * @static\n */\n\n\ncommandManager_CommandManager.command = function (type, props) {\n var command = js_command.factory(type, props.name, props.keyMap);\n extend_default()(command, props);\n return command;\n};\n\n/* harmony default export */ var commandManager = __webpack_exports__[\"a\"] = (commandManager_CommandManager);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Transform the Array-like object to Array.\n * @author NHN FE Development Lab \n */\n\n\n\nvar forEachArray = __webpack_require__(21);\n\n/**\n * Transform the Array-like object to Array.\n * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.\n * @param {*} arrayLike Array-like object\n * @returns {Array} Array\n * @memberof module:collection\n * @example\n * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs\n *\n * var arrayLike = {\n * 0: 'one',\n * 1: 'two',\n * 2: 'three',\n * 3: 'four',\n * length: 4\n * };\n * var result = toArray(arrayLike);\n *\n * alert(result instanceof Array); // true\n * alert(result); // one,two,three,four\n */\nfunction toArray(arrayLike) {\n var arr;\n try {\n arr = Array.prototype.slice.call(arrayLike);\n } catch (e) {\n arr = [];\n forEachArray(arrayLike, function(value) {\n arr.push(value);\n });\n }\n\n return arr;\n}\n\nmodule.exports = toArray;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Setting element style\n * @author NHN FE Development Lab \n */\n\n\n\nvar isString = __webpack_require__(9);\nvar forEach = __webpack_require__(26);\n\n/**\n * Setting element style\n * @param {(HTMLElement|SVGElement)} element - element to setting style\n * @param {(string|object)} key - style prop name or {prop: value} pair object\n * @param {string} [value] - style value\n * @memberof module:domUtil\n */\nfunction css(element, key, value) {\n var style = element.style;\n\n if (isString(key)) {\n style[key] = value;\n\n return;\n }\n\n forEach(key, function(v, k) {\n style[k] = v;\n });\n}\n\nmodule.exports = css;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export hasImageOrCodeBlockNode */\n/* unused harmony export hasSameLineParent */\n/* unused harmony export hasSpecificTypeAncestor */\n/* unused harmony export isEmptyLineNode */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return getMdStartLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return getMdEndLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return getMdStartCh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return getMdEndCh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return isMultiLineNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return isHtmlNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return isStyledTextNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return isListItemNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return isInlineNode; });\n/* unused harmony export getLastLeafNode */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return findClosestNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return traverseParentNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return addChPos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return setChPos; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);\n\nfunction hasImageOrCodeBlockNode(mdNode) {\n while (mdNode) {\n if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(['image', 'codeBlock'], mdNode.type)) {\n return true;\n }\n\n mdNode = mdNode.firstChild;\n }\n\n return false;\n}\nfunction hasSameLineParent(mdNode) {\n return mdNode.parent && mdNode.parent.type !== 'document' && mdNode.parent.sourcepos[0][0] === mdNode.sourcepos[0][0];\n}\nfunction hasSpecificTypeAncestor(mdNode) {\n for (var _len = arguments.length, types = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n types[_key - 1] = arguments[_key];\n }\n\n while (mdNode.parent && mdNode.parent.type !== 'document') {\n if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(types, mdNode.parent.type)) {\n return true;\n }\n\n mdNode = mdNode.parent;\n }\n\n return false;\n}\nfunction isEmptyLineNode(text, mdNode) {\n return !text.trim() && !hasImageOrCodeBlockNode(mdNode);\n}\nfunction getMdStartLine(mdNode) {\n return mdNode.sourcepos[0][0];\n}\nfunction getMdEndLine(mdNode) {\n return mdNode.sourcepos[1][0];\n}\nfunction getMdStartCh(mdNode) {\n return mdNode.sourcepos[0][1];\n}\nfunction getMdEndCh(mdNode) {\n return mdNode.sourcepos[1][1];\n}\nfunction isMultiLineNode(mdNode) {\n var type = mdNode.type;\n return type === 'codeBlock' || type === 'paragraph';\n}\nfunction isHtmlNode(mdNode) {\n var type = mdNode.type;\n return type === 'htmlBlock' || type === 'htmlInline';\n}\nfunction isStyledTextNode(mdNode) {\n var type = mdNode.type;\n return type === 'strike' || type === 'strong' || type === 'emph';\n}\nfunction isListItemNode(mdNode) {\n return mdNode.type === 'item';\n}\nfunction isInlineNode(mdNode) {\n switch (mdNode.type) {\n case 'code':\n case 'text':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'htmlInline':\n case 'linebreak':\n case 'softbreak':\n return true;\n\n default:\n return false;\n }\n}\nfunction getLastLeafNode(mdNode) {\n while (mdNode.lastChild) {\n mdNode = mdNode.lastChild;\n }\n\n return mdNode;\n}\nfunction findClosestNode(mdNode, condition, includeSelf) {\n if (includeSelf === void 0) {\n includeSelf = true;\n }\n\n mdNode = includeSelf ? mdNode : mdNode.parent;\n\n while (mdNode && mdNode.type !== 'document') {\n if (condition(mdNode)) {\n return mdNode;\n }\n\n mdNode = mdNode.parent;\n }\n\n return null;\n}\nfunction traverseParentNodes(mdNode, iteratee, includeSelf) {\n if (includeSelf === void 0) {\n includeSelf = true;\n }\n\n mdNode = includeSelf ? mdNode : mdNode.parent;\n\n while (mdNode && mdNode.type !== 'document') {\n iteratee(mdNode);\n mdNode = mdNode.parent;\n }\n}\nfunction addChPos(originPos, addedCh) {\n return {\n line: originPos.line,\n ch: originPos.ch + addedCh\n };\n}\nfunction setChPos(originPos, newCh) {\n return {\n line: originPos.line,\n ch: newCh\n };\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Remove css class from element\n * @author NHN FE Development Lab \n */\n\n\n\nvar forEachArray = __webpack_require__(21);\nvar inArray = __webpack_require__(14);\nvar getClass = __webpack_require__(33);\nvar setClassName = __webpack_require__(39);\n\n/**\n * Remove css class from element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to remove\n * @memberof module:domUtil\n */\nfunction removeClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var origin, newClass;\n\n if (classList) {\n forEachArray(cssClass, function(name) {\n classList.remove(name);\n });\n\n return;\n }\n\n origin = getClass(element).split(/\\s+/);\n newClass = [];\n forEachArray(origin, function(name) {\n if (inArray(name, cssClass) < 0) {\n newClass.push(name);\n }\n });\n\n setClassName(element, newClass);\n}\n\nmodule.exports = removeClass;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Add css class to element\n * @author NHN FE Development Lab \n */\n\n\n\nvar forEach = __webpack_require__(26);\nvar inArray = __webpack_require__(14);\nvar getClass = __webpack_require__(33);\nvar setClassName = __webpack_require__(39);\n\n/**\n * domUtil module\n * @module domUtil\n */\n\n/**\n * Add css class to element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to add\n * @memberof module:domUtil\n */\nfunction addClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var newClass = [];\n var origin;\n\n if (classList) {\n forEach(cssClass, function(name) {\n element.classList.add(name);\n });\n\n return;\n }\n\n origin = getClass(element);\n\n if (origin) {\n cssClass = [].concat(origin.split(/\\s+/), cssClass);\n }\n\n forEach(cssClass, function(cls) {\n if (inArray(cls, newClass) < 0) {\n newClass.push(cls);\n }\n });\n\n setClassName(element, newClass);\n}\n\nmodule.exports = addClass;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Extend the target object from other objects.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * @module object\n */\n\n/**\n * Extend the target object from other objects.\n * @param {object} target - Object that will be extended\n * @param {...object} objects - Objects as sources\n * @returns {object} Extended object\n * @memberof module:object\n */\nfunction extend(target, objects) { // eslint-disable-line no-unused-vars\n var hasOwnProp = Object.prototype.hasOwnProperty;\n var source, prop, i, len;\n\n for (i = 1, len = arguments.length; i < len; i += 1) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProp.call(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\n\nmodule.exports = extend;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is undefined or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is undefined or not.\n * If the given variable is undefined, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is undefined?\n * @memberof module:type\n */\nfunction isUndefined(obj) {\n return obj === undefined; // eslint-disable-line no-undefined\n}\n\nmodule.exports = isUndefined;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a string or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is a string or not.\n * If the given variable is a string, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is string?\n * @memberof module:type\n */\nfunction isString(obj) {\n return typeof obj === 'string' || obj instanceof String;\n}\n\nmodule.exports = isString;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each property of object which actually exist.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Execute the provided callback once for each property of object which actually exist.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property\n * 2) The name of the property\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEachOwnProperties({a:1,b:2,c:3}, function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachOwnProperties(obj, iteratee, context) {\n var key;\n\n context = context || null;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (iteratee.call(context, obj[key], key, obj) === false) {\n break;\n }\n }\n }\n}\n\nmodule.exports = forEachOwnProperties;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview This module detects the kind of well-known browser and version.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Browser module\n * @module browser\n */\n\n/**\n * This object has an information that indicate the kind of browser. It can detect IE8 ~ IE11, Chrome, Firefox, Safari, and Edge.\n * @memberof module:browser\n * @example\n * var browser = require('tui-code-snippet/browser/browser'); // node, commonjs\n *\n * browser.chrome === true; // chrome\n * browser.firefox === true; // firefox\n * browser.safari === true; // safari\n * browser.msie === true; // IE\n * browser.edge === true; // edge\n * browser.others === true; // other browser\n * browser.version; // browser version\n */\nvar browser = {\n chrome: false,\n firefox: false,\n safari: false,\n msie: false,\n edge: false,\n others: false,\n version: 0\n};\n\nif (typeof window !== 'undefined' && window.navigator) {\n detectBrowser();\n}\n\n/**\n * Detect the browser.\n * @private\n */\nfunction detectBrowser() {\n var nav = window.navigator;\n var appName = nav.appName.replace(/\\s/g, '_');\n var userAgent = nav.userAgent;\n\n var rIE = /MSIE\\s([0-9]+[.0-9]*)/;\n var rIE11 = /Trident.*rv:11\\./;\n var rEdge = /Edge\\/(\\d+)\\./;\n var versionRegex = {\n firefox: /Firefox\\/(\\d+)\\./,\n chrome: /Chrome\\/(\\d+)\\./,\n safari: /Version\\/([\\d.]+).*Safari\\/(\\d+)/\n };\n\n var key, tmp;\n\n var detector = {\n Microsoft_Internet_Explorer: function() { // eslint-disable-line camelcase\n var detectedVersion = userAgent.match(rIE);\n\n if (detectedVersion) { // ie8 ~ ie10\n browser.msie = true;\n browser.version = parseFloat(detectedVersion[1]);\n } else { // no version information\n browser.others = true;\n }\n },\n Netscape: function() { // eslint-disable-line complexity\n var detected = false;\n\n if (rIE11.exec(userAgent)) {\n browser.msie = true;\n browser.version = 11;\n detected = true;\n } else if (rEdge.exec(userAgent)) {\n browser.edge = true;\n browser.version = userAgent.match(rEdge)[1];\n detected = true;\n } else {\n for (key in versionRegex) {\n if (versionRegex.hasOwnProperty(key)) {\n tmp = userAgent.match(versionRegex[key]);\n if (tmp && tmp.length > 1) { // eslint-disable-line max-depth\n browser[key] = detected = true;\n browser.version = parseFloat(tmp[1] || 0);\n break;\n }\n }\n }\n }\n if (!detected) {\n browser.others = true;\n }\n }\n };\n\n var fn = detector[appName];\n\n if (fn) {\n detector[appName]();\n }\n}\n\nmodule.exports = browser;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return isMac; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return sendHostName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return includes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return sanitizeLinkAttribute; });\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);\n/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar isMac = /Mac/.test(navigator.platform);\nfunction sendHostName() {\n tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default()('editor', 'UA-129966929-1');\n}\nfunction includes(arr, targetItem) {\n return arr.indexOf(targetItem) !== -1;\n}\nvar availableLinkAttributes = ['rel', 'target', 'contenteditable', 'hreflang', 'type'];\n/**\n * sanitize attribute for link\n * @param {object} attribute - attribute for link\n * @returns {object} sanitized attribute\n */\n\nfunction sanitizeLinkAttribute(attribute) {\n if (!attribute) {\n return null;\n }\n\n var linkAttribute = {};\n availableLinkAttributes.forEach(function (key) {\n if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default()(attribute[key])) {\n linkAttribute[key] = attribute[key];\n }\n });\n return linkAttribute;\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check element match selector\n * @author NHN FE Development Lab \n */\n\n\n\nvar inArray = __webpack_require__(14);\nvar toArray = __webpack_require__(2);\n\nvar elProto = Element.prototype;\nvar matchSelector = elProto.matches ||\n elProto.webkitMatchesSelector ||\n elProto.mozMatchesSelector ||\n elProto.msMatchesSelector ||\n function(selector) {\n var doc = this.document || this.ownerDocument;\n\n return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;\n };\n\n/**\n * Check element match selector\n * @param {HTMLElement} element - element to check\n * @param {string} selector - selector to check\n * @returns {boolean} is selector matched to element?\n * @memberof module:domUtil\n */\nfunction matches(element, selector) {\n return matchSelector.call(element, selector);\n}\n\nmodule.exports = matches;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable complexity */\n/**\n * @fileoverview Returns the first index at which a given element can be found in the array.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isArray = __webpack_require__(17);\n\n/**\n * @module array\n */\n\n/**\n * Returns the first index at which a given element can be found in the array\n * from start index(default 0), or -1 if it is not present.\n * It compares searchElement to elements of the Array using strict equality\n * (the same method used by the ===, or triple-equals, operator).\n * @param {*} searchElement Element to locate in the array\n * @param {Array} array Array that will be traversed.\n * @param {number} startIndex Start index in array for searching (default 0)\n * @returns {number} the First index at which a given element, or -1 if it is not present\n * @memberof module:array\n * @example\n * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs\n *\n * var arr = ['one', 'two', 'three', 'four'];\n * var idx1 = inArray('one', arr, 3); // -1\n * var idx2 = inArray('one', arr); // 0\n */\nfunction inArray(searchElement, array, startIndex) {\n var i;\n var length;\n startIndex = startIndex || 0;\n\n if (!isArray(array)) {\n return -1;\n }\n\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf.call(array, searchElement, startIndex);\n }\n\n length = array.length;\n for (i = startIndex; startIndex >= 0 && i < length; i += 1) {\n if (array[i] === searchElement) {\n return i;\n }\n }\n\n return -1;\n}\n\nmodule.exports = inArray;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__15__;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check element has specific css class\n * @author NHN FE Development Lab \n */\n\n\n\nvar inArray = __webpack_require__(14);\nvar getClass = __webpack_require__(33);\n\n/**\n * Check element has specific css class\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {string} cssClass - css class\n * @returns {boolean}\n * @memberof module:domUtil\n */\nfunction hasClass(element, cssClass) {\n var origin;\n\n if (element.classList) {\n return element.classList.contains(cssClass);\n }\n\n origin = getClass(element).split(/\\s+/);\n\n return inArray(cssClass, origin) > -1;\n}\n\nmodule.exports = hasClass;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is an instance of Array or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is an instance of Array or not.\n * If the given variable is an instance of Array, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is array instance?\n * @memberof module:type\n */\nfunction isArray(obj) {\n return obj instanceof Array;\n}\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return isNodeToBeCalculated; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getAdditionalTopPos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return getParentNodeObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return getCmRangeHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return getNextEmptyLineHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return getTotalOffsetTop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return findAdjacentElementToScrollTop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return getFallbackScrollTop; });\n/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);\n/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);\n\n\nvar nestableTypes = ['list', 'blockQuote'];\nvar nestableTagNames = ['UL', 'OL', 'BLOCKQUOTE'];\nvar tableElementTagNames = ['TR', 'TH', 'TBODY', 'TD'];\nfunction isNodeToBeCalculated(mdNode) {\n return !Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(nestableTypes, mdNode.type);\n}\nfunction getAdditionalTopPos(scrollTop, offsetTop, currentNodeHeight, targetNodeHeight) {\n var diff = (scrollTop - offsetTop) / currentNodeHeight;\n return diff < 1 ? diff * targetNodeHeight : targetNodeHeight;\n}\nfunction getParentNodeObj(mdNode) {\n var node = document.querySelector(\"[data-nodeid=\\\"\" + mdNode.id + \"\\\"]\");\n\n while (!node || Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(tableElementTagNames, mdNode.type) || Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* isStyledTextNode */ \"k\"])(mdNode)) {\n mdNode = mdNode.parent;\n node = document.querySelector(\"[data-nodeid=\\\"\" + mdNode.id + \"\\\"]\");\n }\n\n return getNonNestableNodeObj(getParentListItemObj(mdNode));\n}\n\nfunction getParentListItemObj(orgMdNode) {\n var mdNode = orgMdNode;\n\n while (orgMdNode && orgMdNode !== 'document') {\n if (orgMdNode.type === 'item') {\n mdNode = orgMdNode;\n break;\n }\n\n orgMdNode = orgMdNode.parent;\n }\n\n return {\n mdNode: mdNode,\n node: document.querySelector(\"[data-nodeid=\\\"\" + mdNode.id + \"\\\"]\")\n };\n}\n\nfunction getNonNestableNodeObj(_ref) {\n var mdNode = _ref.mdNode,\n node = _ref.node;\n\n while (Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(nestableTypes, mdNode.type) && mdNode.firstChild) {\n mdNode = mdNode.firstChild;\n node = node.firstElementChild;\n }\n\n return {\n mdNode: mdNode,\n node: node\n };\n}\n\nfunction getCmRangeHeight(mdNode, cm) {\n var start = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdStartLine */ \"f\"])(mdNode);\n var end = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ \"d\"])(mdNode);\n var cmNodeHeight = cm.lineInfo(start - 1).handle.height;\n var height = cm.heightAtLine(end, 'local') - cm.heightAtLine(start - 1, 'local');\n return height <= 0 ? cmNodeHeight : height + getNextEmptyLineHeight(cm, Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ \"d\"])(mdNode));\n}\nfunction getNextEmptyLineHeight(cm, start, end) {\n if (end === void 0) {\n end = Number.MAX_VALUE;\n }\n\n var lineInfo = cm.lineInfo(start);\n\n if (!lineInfo) {\n return 0;\n }\n\n var detailLineInfo = lineInfo.handle;\n var height = 0;\n\n while (start <= end && !detailLineInfo.text.trim()) {\n height += detailLineInfo.height;\n start += 1;\n detailLineInfo = cm.lineInfo(start).handle;\n }\n\n return height;\n}\nfunction getTotalOffsetTop(el, root) {\n var offsetTop = 0;\n\n while (el && el !== root) {\n if (!Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ \"a\"])(nestableTagNames, el.tagName)) {\n offsetTop += el.offsetTop;\n }\n\n if (el.offsetParent === root.offsetParent) {\n break;\n }\n\n el = el.parentElement;\n }\n\n return offsetTop;\n}\nfunction findAdjacentElementToScrollTop(scrollTop, root) {\n var el = root;\n var prev = null;\n\n while (el) {\n var _el = el,\n firstElementChild = _el.firstElementChild;\n\n if (!firstElementChild) {\n break;\n }\n\n var lastSibling = findLastSiblingElementToScrollTop(firstElementChild, scrollTop, getTotalOffsetTop(el, root));\n prev = el;\n el = lastSibling;\n }\n\n var adjacentEl = el || prev;\n return adjacentEl === root ? null : adjacentEl;\n}\n\nfunction findLastSiblingElementToScrollTop(el, scrollTop, offsetTop) {\n if (el && scrollTop > offsetTop + el.offsetTop) {\n return findLastSiblingElementToScrollTop(el.nextElementSibling, scrollTop, offsetTop) || el;\n }\n\n return null;\n}\n\nfunction getFallbackScrollTop(scrollInfo) {\n var latestScrollTop = scrollInfo.latestScrollTop,\n scrollTop = scrollInfo.scrollTop,\n targetScrollTop = scrollInfo.targetScrollTop,\n sourceScrollTop = scrollInfo.sourceScrollTop;\n\n if (latestScrollTop === null) {\n return targetScrollTop;\n }\n\n return latestScrollTop < scrollTop ? Math.max(targetScrollTop, sourceScrollTop) : Math.min(targetScrollTop, sourceScrollTop);\n}\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Bind DOM events\n * @author NHN FE Development Lab \n */\n\n\n\nvar isString = __webpack_require__(9);\nvar forEach = __webpack_require__(26);\n\nvar safeEvent = __webpack_require__(40);\n\n/**\n * Bind DOM events.\n * @param {HTMLElement} element - element to bind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {(function|object)} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @memberof module:domEvent\n * @example\n * var div = document.querySelector('div');\n * \n * // Bind one event to an element.\n * on(div, 'click', toggle);\n * \n * // Bind multiple events with a same handler to multiple elements at once.\n * // Use event names splitted by a space.\n * on(div, 'mouseenter mouseleave', changeColor);\n * \n * // Bind multiple events with different handlers to an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * on(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Set a context for handler method.\n * var name = 'global';\n * var repository = {name: 'CodeSnippet'};\n * on(div, 'drag', function() {\n * console.log(this.name);\n * }, repository);\n * // Result when you drag a div: \"CodeSnippet\"\n */\nfunction on(element, types, handler, context) {\n if (isString(types)) {\n forEach(types.split(/\\s+/g), function(type) {\n bindEvent(element, type, handler, context);\n });\n\n return;\n }\n\n forEach(types, function(func, type) {\n bindEvent(element, type, func, handler);\n });\n}\n\n/**\n * Bind DOM events\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @private\n */\nfunction bindEvent(element, type, handler, context) {\n /**\n * Event handler\n * @param {Event} e - event object\n */\n function eventHandler(e) {\n handler.call(context || element, e || window.event);\n }\n\n if ('addEventListener' in element) {\n element.addEventListener(type, eventHandler);\n } else if ('attachEvent' in element) {\n element.attachEvent('on' + type, eventHandler);\n }\n memorizeHandler(element, type, handler, eventHandler);\n}\n\n/**\n * Memorize DOM event handler for unbinding.\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function that user passed at on() use\n * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features\n * @private\n */\nfunction memorizeHandler(element, type, handler, wrappedHandler) {\n var events = safeEvent(element, type);\n var existInEvents = false;\n\n forEach(events, function(obj) {\n if (obj.handler === handler) {\n existInEvents = true;\n\n return false;\n }\n\n return true;\n });\n\n if (!existInEvents) {\n events.push({\n handler: handler,\n wrappedHandler: wrappedHandler\n });\n }\n}\n\nmodule.exports = on;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Unbind DOM events\n * @author NHN FE Development Lab \n */\n\n\n\nvar isString = __webpack_require__(9);\nvar forEach = __webpack_require__(26);\n\nvar safeEvent = __webpack_require__(40);\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {function} [handler] - handler function\n * @memberof module:domEvent\n * @example\n * // Following the example of domEvent#on\n * \n * // Unbind one event from an element.\n * off(div, 'click', toggle);\n * \n * // Unbind multiple events with a same handler from multiple elements at once.\n * // Use event names splitted by a space.\n * off(element, 'mouseenter mouseleave', changeColor);\n * \n * // Unbind multiple events with different handlers from an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * off(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Unbind events without handlers.\n * off(div, 'drag');\n */\nfunction off(element, types, handler) {\n if (isString(types)) {\n forEach(types.split(/\\s+/g), function(type) {\n unbindEvent(element, type, handler);\n });\n\n return;\n }\n\n forEach(types, function(func, type) {\n unbindEvent(element, type, func);\n });\n}\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {string} type - events name\n * @param {function} [handler] - handler function\n * @private\n */\nfunction unbindEvent(element, type, handler) {\n var events = safeEvent(element, type);\n var index;\n\n if (!handler) {\n forEach(events, function(item) {\n removeHandler(element, type, item.wrappedHandler);\n });\n events.splice(0, events.length);\n } else {\n forEach(events, function(item, idx) {\n if (handler === item.handler) {\n removeHandler(element, type, item.wrappedHandler);\n index = idx;\n\n return false;\n }\n\n return true;\n });\n events.splice(index, 1);\n }\n}\n\n/**\n * Remove an event handler\n * @param {HTMLElement} element - An element to remove an event\n * @param {string} type - event type\n * @param {function} handler - event handler\n * @private\n */\nfunction removeHandler(element, type, handler) {\n if ('removeEventListener' in element) {\n element.removeEventListener(type, handler);\n } else if ('detachEvent' in element) {\n element.detachEvent('on' + type, handler);\n }\n}\n\nmodule.exports = off;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Execute the provided callback once for each element present\n * in the array(or Array-like object) in ascending order.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the element\n * 2) The index of the element\n * 3) The array(or Array-like object) being traversed\n * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEachArray([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachArray(arr, iteratee, context) {\n var index = 0;\n var len = arr.length;\n\n context = context || null;\n\n for (; index < len; index += 1) {\n if (iteratee.call(context, arr[index], index, arr) === false) {\n break;\n }\n }\n}\n\nmodule.exports = forEachArray;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\n!function(e,t){for(var r in t)e[r]=t[r]}(exports,function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"/dist\",r(r.s=10)}([function(e,t,r){\"use strict\";r.r(t),r.d(t,\"__extends\",(function(){return i})),r.d(t,\"__assign\",(function(){return a})),r.d(t,\"__rest\",(function(){return o})),r.d(t,\"__decorate\",(function(){return s})),r.d(t,\"__param\",(function(){return l})),r.d(t,\"__metadata\",(function(){return u})),r.d(t,\"__awaiter\",(function(){return c})),r.d(t,\"__generator\",(function(){return p})),r.d(t,\"__createBinding\",(function(){return f})),r.d(t,\"__exportStar\",(function(){return d})),r.d(t,\"__values\",(function(){return h})),r.d(t,\"__read\",(function(){return g})),r.d(t,\"__spread\",(function(){return m})),r.d(t,\"__spreadArrays\",(function(){return v})),r.d(t,\"__await\",(function(){return b})),r.d(t,\"__asyncGenerator\",(function(){return y})),r.d(t,\"__asyncDelegator\",(function(){return C})),r.d(t,\"__asyncValues\",(function(){return k})),r.d(t,\"__makeTemplateObject\",(function(){return x})),r.d(t,\"__importStar\",(function(){return N})),r.d(t,\"__importDefault\",(function(){return w})),r.d(t,\"__classPrivateFieldGet\",(function(){return D})),r.d(t,\"__classPrivateFieldSet\",(function(){return L}));\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function i(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var a=function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,r,o):i(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o}function l(e,t){return function(r,n){t(r,n,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{l(n.next(e))}catch(e){a(e)}}function s(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}l((n=n.apply(e,t||[])).next())}))}function p(e,t){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function g(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,a=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)o.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return o}function m(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof b?Promise.resolve(r.value.v).then(l,u):c(a[0][2],r)}catch(e){c(a[0][3],e)}var r}function l(e){s(\"next\",e)}function u(e){s(\"throw\",e)}function c(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}function C(e){var t,r;return t={},n(\"next\"),n(\"throw\",(function(e){throw e})),n(\"return\"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:b(e[n](t)),done:\"return\"===n}:i?i(t):t}:i}}function k(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=h(e),t={},n(\"next\"),n(\"throw\"),n(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}function N(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function w(e){return e&&e.__esModule?e:{default:e}}function D(e,t){if(!t.has(e))throw new TypeError(\"attempted to get private field on non-instance\");return t.get(e)}function L(e,t,r){if(!t.has(e))throw new TypeError(\"attempted to set private field on non-instance\");return t.set(e,r),r}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.text=t.isRefDef=t.isTable=t.isList=t.isHeading=t.isHtmlBlock=t.isCodeBlock=t.createNode=t.RefDefNode=t.TableCellNode=t.TableNode=t.CodeNode=t.HtmlBlockNode=t.CodeBlockNode=t.LinkNode=t.HeadingNode=t.ListNode=t.BlockNode=t.Node=t.removeAllNode=t.removeNodeById=t.getNodeById=t.isContainer=void 0;var n=r(0),i=n.__importDefault(r(17));function a(e){switch(e.type){case\"document\":case\"blockQuote\":case\"list\":case\"item\":case\"paragraph\":case\"heading\":case\"emph\":case\"strong\":case\"strike\":case\"link\":case\"image\":case\"table\":case\"tableHead\":case\"tableBody\":case\"tableRow\":case\"tableCell\":case\"tableDelimRow\":return!0;default:return!1}}t.isContainer=a;var o=1,s={};t.getNodeById=function(e){return s[e]},t.removeNodeById=function(e){delete s[e]},t.removeAllNode=function(){s={}};var l=function(){function e(e,t){this.parent=null,this.prev=null,this.next=null,this.firstChild=null,this.lastChild=null,this.literal=null,this.id=\"document\"===e?-1:o++,this.type=e,this.sourcepos=t,s[this.id]=this}return e.prototype.isContainer=function(){return a(this)},e.prototype.unlink=function(){this.prev?this.prev.next=this.next:this.parent&&(this.parent.firstChild=this.next),this.next?this.next.prev=this.prev:this.parent&&(this.parent.lastChild=this.prev),this.parent=null,this.next=null,this.prev=null},e.prototype.replaceWith=function(e){this.insertBefore(e),this.unlink()},e.prototype.insertAfter=function(e){e.unlink(),e.next=this.next,e.next&&(e.next.prev=e),e.prev=this,this.next=e,this.parent&&(e.parent=this.parent,e.next||(e.parent.lastChild=e))},e.prototype.insertBefore=function(e){e.unlink(),e.prev=this.prev,e.prev&&(e.prev.next=e),e.next=this,this.prev=e,e.parent=this.parent,e.prev||(e.parent.firstChild=e)},e.prototype.appendChild=function(e){e.unlink(),e.parent=this,this.lastChild?(this.lastChild.next=e,e.prev=this.lastChild,this.lastChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.prependChild=function(e){e.unlink(),e.parent=this,this.firstChild?(this.firstChild.prev=e,e.next=this.firstChild,this.firstChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.walker=function(){return new i.default(this)},e}();t.Node=l;var u=function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.open=!0,n.lineOffsets=null,n.stringContent=null,n.lastLineBlank=!1,n.lastLineChecked=!1,n.type=t,n}return n.__extends(t,e),t}(l);t.BlockNode=u;var c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.listData=null,t}return n.__extends(t,e),t}(u);t.ListNode=c;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.level=0,t.headingType=\"atx\",t}return n.__extends(t,e),t}(u);t.HeadingNode=p;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.destination=null,t.title=null,t.extendedAutolink=!1,t}return n.__extends(t,e),t}(l);t.LinkNode=f;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isFenced=!1,t.fenceChar=null,t.fenceLength=0,t.fenceOffset=-1,t.info=null,t.infoPadding=0,t}return n.__extends(t,e),t}(u);t.CodeBlockNode=d;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.htmlBlockType=-1,t}return n.__extends(t,e),t}(u);t.HtmlBlockNode=h;var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.tickCount=0,t}return n.__extends(t,e),t}(l);t.CodeNode=g;var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.columns=[],t}return n.__extends(t,e),t}(u);t.TableNode=m;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.startIdx=0,t.endIdx=0,t.paddingLeft=0,t.paddingRight=0,t.ignored=!1,t}return n.__extends(t,e),t}(u);t.TableCellNode=v;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.title=\"\",t.dest=\"\",t.label=\"\",t}return n.__extends(t,e),t}(u);function y(e,t){switch(e){case\"heading\":return new p(e,t);case\"list\":case\"item\":return new c(e,t);case\"link\":case\"image\":return new f(e,t);case\"codeBlock\":return new d(e,t);case\"htmlBlock\":return new h(e,t);case\"table\":return new m(e,t);case\"tableCell\":return new v(e,t);case\"document\":case\"paragraph\":case\"blockQuote\":case\"thematicBreak\":case\"tableRow\":case\"tableBody\":case\"tableHead\":return new u(e,t);case\"code\":return new g(e,t);case\"refDef\":return new b(e,t);default:return new l(e,t)}}t.RefDefNode=b,t.createNode=y,t.isCodeBlock=function(e){return\"codeBlock\"===e.type},t.isHtmlBlock=function(e){return\"htmlBlock\"===e.type},t.isHeading=function(e){return\"heading\"===e.type},t.isList=function(e){return\"list\"===e.type},t.isTable=function(e){return\"table\"===e.type},t.isRefDef=function(e){return\"refDef\"===e.type},t.text=function(e,t){var r=y(\"text\",t);return r.literal=e,r}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isEmpty=t.last=t.repeat=t.escapeXml=t.normalizeURI=t.unescapeString=t.ESCAPABLE=t.ENTITY=void 0;var n=r(0).__importDefault(r(11)),i=r(7);t.ENTITY=\"&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});\";var a=/[\\\\&]/;t.ESCAPABLE=\"[!\\\"#$%&'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]\";var o=new RegExp(\"\\\\\\\\\"+t.ESCAPABLE+\"|\"+t.ENTITY,\"gi\"),s=new RegExp('[&<>\"]',\"g\"),l=function(e){return 92===e.charCodeAt(0)?e.charAt(1):i.decodeHTML(e)};function u(e){switch(e){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";default:return e}}t.unescapeString=function(e){return a.test(e)?e.replace(o,l):e},t.normalizeURI=function(e){try{return n.default(e)}catch(t){return e}},t.escapeXml=function(e){return s.test(e)?e.replace(s,u):e},t.repeat=function(e,t){for(var r=[],n=0;nt&&(t+=1),this.root.sourcepos[1]=[t+1,e[t].length]},e.prototype.replaceRangeNodes=function(e,t,r){e?(o.insertNodesBefore(e,r),o.removeNextUntil(e,t),[e.id,t.id].forEach((function(e){return a.removeNodeById(e)})),e.unlink()):t?(o.insertNodesBefore(t,r),a.removeNodeById(t.id),t.unlink()):o.prependChildNodes(this.root,r)},e.prototype.getNodeRange=function(e,t){var r=o.findChildNodeAtLine(this.root,e[0]),n=o.findChildNodeAtLine(this.root,t[0]);return n&&n.next&&t[0]+1===n.next.sourcepos[0][0]&&(n=n.next),[r,n]},e.prototype.trigger=function(e,t){this.eventHandlerMap[e].forEach((function(e){e(t)}))},e.prototype.extendEndLine=function(e){for(;\"\"===this.lineTexts[e];)e+=1;return e},e.prototype.parseRange=function(e,t,r,n){var i;e&&e.prev&&(a.isList(e.prev)&&function(e){var t=e.match(/^[ \\t]+/);if(t&&(t[0].length>=2||/\\t/.test(t[0])))return!0;var r=t?e.slice(t.length):e;return s.reBulletListMarker.test(r)||s.reOrderedListMarker.test(r)}(this.lineTexts[r-1])||a.isTable(e.prev)&&(i=this.lineTexts[r-1],!u.isBlank(i)&&-1!==i.indexOf(\"|\")))&&(r=(e=e.prev).sourcepos[0][0]);for(var l=this.lineTexts.slice(r-1,n),c=this.parser.partialParseStart(r,l),p=t?t.next:this.root.firstChild;c.lastChild&&a.isList(c.lastChild)&&p&&(\"list\"===p.type||p.sourcepos[0][1]>=2);){var f=this.extendEndLine(p.sourcepos[1][0]);this.parser.partialParseExtends(this.lineTexts.slice(n,f)),e||(e=t),t=p,n=f,p=p.next}return this.parser.partialParseFinish(),{newNodes:o.getChildNodes(c),extStartNode:e,extEndNode:t}},e.prototype.getRemovedNodeRange=function(e,t){return!e||e&&a.isRefDef(e)||t&&a.isRefDef(t)?null:{id:[e.id,t.id],line:[e.sourcepos[0][0]-1,t.sourcepos[1][0]-1]}},e.prototype.markDeletedRefMap=function(e,t){var r=this;if(!l.isEmptyObj(this.refMap)){var n=function(e){if(a.isRefDef(e)){var t=r.refMap[e.label];t&&e.id===t.id&&(t.unlinked=!0)}};e&&o.invokeNextUntil(n,e.parent,t),t&&o.invokeNextUntil(n,t)}},e.prototype.replaceWithNewRefDefState=function(e){var t=this;if(!l.isEmptyObj(this.refMap)){var r=function(e){if(a.isRefDef(e)){var r=e.label,n=t.refMap[r];n&&!n.unlinked||(t.refMap[r]=p(e))}};e.forEach((function(e){o.invokeNextUntil(r,e)}))}},e.prototype.replaceWithRefDefCandidate=function(){var e=this;l.isEmptyObj(this.refDefCandidateMap)||l.iterateObject(this.refDefCandidateMap,(function(t,r){var n=r.label,i=r.sourcepos,a=e.refMap[n];(!a||a.unlinked||a.sourcepos[0][0]>i[0][0])&&(e.refMap[n]=p(r))}))},e.prototype.getRangeWithRefDef=function(e,t,r,n,i){if(this.referenceDefinition&&!l.isEmptyObj(this.refMap)){var s=o.findChildNodeAtLine(this.root,e-1),u=o.findChildNodeAtLine(this.root,t+1);s&&a.isRefDef(s)&&s!==r&&s!==n&&(e=(r=s).sourcepos[0][0]),u&&a.isRefDef(u)&&u!==r&&u!==n&&(n=u,t=this.extendEndLine(n.sourcepos[1][0]+i))}return[r,n,e,t]},e.prototype.parse=function(e,t,r){void 0===r&&(r=0);var n=this.getNodeRange(e,t),i=n[0],a=n[1],o=i?Math.min(i.sourcepos[0][0],e[0]):e[0],s=this.extendEndLine((a?Math.max(a.sourcepos[1][0],t[0]):t[0])+r),l=this.parseRange.apply(this,this.getRangeWithRefDef(o,s,i,a,r)),u=l.newNodes,c=l.extStartNode,p=l.extEndNode,f=this.getRemovedNodeRange(c,p),d=p?p.next:this.root.firstChild;return this.referenceDefinition?(this.markDeletedRefMap(c,p),this.replaceRangeNodes(c,p,u),this.replaceWithNewRefDefState(u)):this.replaceRangeNodes(c,p,u),{nodes:u,removedNodeRange:f,nextNode:d}},e.prototype.parseRefLink=function(){var e=this,t=[];return l.isEmptyObj(this.refMap)||l.iterateObject(this.refMap,(function(r,n){n.unlinked&&delete e.refMap[r],l.iterateObject(e.refLinkCandidateMap,(function(n,i){var a=i.node;i.refLabel===r&&t.push(e.parse(a.sourcepos[0],a.sourcepos[1]))}))})),t},e.prototype.removeUnlinkedCandidate=function(){l.isEmptyObj(this.refDefCandidateMap)||[this.refLinkCandidateMap,this.refDefCandidateMap].forEach((function(e){l.iterateObject(e,(function(t){o.isUnlinked(t)&&delete e[t]}))}))},e.prototype.editMarkdown=function(e,t,r){var n=this.updateLineTexts(e,t,r),i=this.parse(e,t,n),a=l.omit(i,\"nextNode\");o.updateNextLineNumbers(i.nextNode,n),this.updateRootNodeState();var s=[a];return this.referenceDefinition&&(this.removeUnlinkedCandidate(),this.replaceWithRefDefCandidate(),s=s.concat(this.parseRefLink())),this.trigger(\"change\",s),s},e.prototype.getLineTexts=function(){return this.lineTexts},e.prototype.getRootNode=function(){return this.root},e.prototype.findNodeAtPosition=function(e){var t=o.findNodeAtPosition(this.root,e);return t&&t!==this.root?t:null},e.prototype.findFirstNodeAtLine=function(e){return o.findFirstNodeAtLine(this.root,e)},e.prototype.on=function(e,t){this.eventHandlerMap[e].push(t)},e.prototype.off=function(e,t){var r=this.eventHandlerMap[e],n=r.indexOf(t);r.splice(n,1)},e.prototype.findNodeById=function(e){return o.findNodeById(e)},e.prototype.removeAllNode=function(){a.removeAllNode()},e}();t.ToastMark=f},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Parser=void 0;var n=r(0),i=r(2),a=r(1),o=r(18),s=r(21),l=r(4),u=r(9),c=r(3),p=[/./,/<\\/(?:script|pre|style)>/i,/-->/,/\\?>/,/>/,/\\]\\]>/],f=/^[#`~*+_=<>0-9-]/,d=/\\r\\n|\\n|\\r/;function h(){return a.createNode(\"document\",[[1,1],[0,0]])}var g={smart:!1,tagFilter:!1,extendedAutolinks:!1,disallowedHtmlBlockTags:[],referenceDefinition:!1,disallowDeepHeading:!1,customParser:null},m=function(){function e(e){this.options=n.__assign(n.__assign({},g),e),this.doc=h(),this.tip=this.doc,this.oldtip=this.doc,this.lineNumber=0,this.offset=0,this.column=0,this.nextNonspace=0,this.nextNonspaceColumn=0,this.indent=0,this.currentLine=\"\",this.indented=!1,this.blank=!1,this.partiallyConsumedTab=!1,this.allClosed=!0,this.lastMatchedContainer=this.doc,this.refMap={},this.refLinkCandidateMap={},this.refDefCandidateMap={},this.lastLineLength=0,this.inlineParser=new o.InlineParser(this.options)}return e.prototype.advanceOffset=function(e,t){void 0===t&&(t=!1);for(var r,n,i,a=this.currentLine;e>0&&(i=a[this.offset]);)\"\\t\"===i?(r=4-this.column%4,t?(this.partiallyConsumedTab=r>e,n=r>e?e:r,this.column+=n,this.offset+=this.partiallyConsumedTab?0:1,e-=n):(this.partiallyConsumedTab=!1,this.column+=r,this.offset+=1,e-=1)):(this.partiallyConsumedTab=!1,this.offset+=1,this.column+=1,e-=1)},e.prototype.advanceNextNonspace=function(){this.offset=this.nextNonspace,this.column=this.nextNonspaceColumn,this.partiallyConsumedTab=!1},e.prototype.findNextNonspace=function(){for(var e,t=this.currentLine,r=this.offset,n=this.column;\"\"!==(e=t.charAt(r));)if(\" \"===e)r++,n++;else{if(\"\\t\"!==e)break;r++,n+=4-n%4}this.blank=\"\\n\"===e||\"\\r\"===e||\"\"===e,this.nextNonspace=r,this.nextNonspaceColumn=n,this.indent=this.nextNonspaceColumn-this.column,this.indented=this.indent>=l.CODE_INDENT},e.prototype.addLine=function(){if(this.partiallyConsumedTab){this.offset+=1;var e=4-this.column%4;this.tip.stringContent+=i.repeat(\" \",e)}this.tip.lineOffsets?this.tip.lineOffsets.push(this.offset):this.tip.lineOffsets=[this.offset],this.tip.stringContent+=this.currentLine.slice(this.offset)+\"\\n\"},e.prototype.addChild=function(e,t){for(;!s.blockHandlers[this.tip.type].canContain(e);)this.finalize(this.tip,this.lineNumber-1);var r=t+1,n=a.createNode(e,[[this.lineNumber,r],[0,0]]);return n.stringContent=\"\",this.tip.appendChild(n),this.tip=n,n},e.prototype.closeUnmatchedBlocks=function(){if(!this.allClosed){for(;this.oldtip!==this.lastMatchedContainer;){var e=this.oldtip.parent;this.finalize(this.oldtip,this.lineNumber-1),this.oldtip=e}this.allClosed=!0}},e.prototype.finalize=function(e,t){var r=e.parent;e.open=!1,e.sourcepos[1]=[t,this.lastLineLength],s.blockHandlers[e.type].finalize(this,e),this.tip=r},e.prototype.processInlines=function(e){var t,r=this.options.customParser,n=e.walker();for(this.inlineParser.refMap=this.refMap,this.inlineParser.refLinkCandidateMap=this.refLinkCandidateMap,this.inlineParser.refDefCandidateMap=this.refDefCandidateMap,this.inlineParser.options=this.options;t=n.next();){var i=t.node,a=t.entering,o=i.type;r&&r[o]&&r[o](i,{entering:a}),a||\"paragraph\"!==o&&\"heading\"!==o&&(\"tableCell\"!==o||i.ignored)||this.inlineParser.parse(i)}},e.prototype.incorporateLine=function(e){var t=this.doc;this.oldtip=this.tip,this.offset=0,this.column=0,this.blank=!1,this.partiallyConsumedTab=!1,this.lineNumber+=1,-1!==e.indexOf(\"\\0\")&&(e=e.replace(/\\0/g,\"�\")),this.currentLine=e;for(var r,n=!0;(r=t.lastChild)&&r.open;){switch(t=r,this.findNextNonspace(),s.blockHandlers[t.type].continue(this,t)){case 0:break;case 1:n=!1;break;case 2:return void(this.lastLineLength=e.length);default:throw new Error(\"continue returned illegal value, must be 0, 1, or 2\")}if(!n){t=t.parent;break}}this.allClosed=t===this.oldtip,this.lastMatchedContainer=t;for(var i=\"paragraph\"!==t.type&&s.blockHandlers[t.type].acceptsLines,o=u.blockStarts.length;!i;){if(this.findNextNonspace(),\"table\"!==t.type&&\"tableBody\"!==t.type&&\"paragraph\"!==t.type&&!this.indented&&!f.test(e.slice(this.nextNonspace))){this.advanceNextNonspace();break}for(var l=0;l=1&&t.htmlBlockType<=5&&p[t.htmlBlockType].test(this.currentLine.slice(this.offset))&&(this.lastLineLength=e.length,this.finalize(t,this.lineNumber))):this.offset`\\\\x00-\\\\x20]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*/?>\",t.CLOSETAG=\"]\";var n=\"(?:\"+t.OPENTAG+\"|\"+t.CLOSETAG+\"|\\x3c!----\\x3e|\\x3c!--(?:-?[^>-])(?:-?[^-])*--\\x3e|[<][?].*?[?][>]|]*>|)\";t.reHtmlTag=new RegExp(\"^\"+n,\"i\")},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.blockStarts=t.reOrderedListMarker=t.reBulletListMarker=void 0;var n=r(1),i=r(8),a=r(4),o=r(24),s=/^`{3,}(?!.*`)|^~{3,}/,l=[/./,/^<(?:script|pre|style)(?:\\s|>|$)/i,/^/g, '');\n root.innerHTML = html;\n } else {\n root.appendChild(html);\n }\n\n removeUnnecessaryTags(root);\n leaveOnlyWhitelistAttribute(root);\n return _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"].finalizeHtml(root, needHtmlText);\n}\n/**\n * Removes unnecessary tags.\n * @param {HTMLElement} html - root element\n * @private\n */\n\n\nfunction removeUnnecessaryTags(html) {\n var removedTags = _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"].findAll(html, 'script, iframe, textarea, form, button, select, input, meta, style, link, title, embed, object, details, summary');\n removedTags.forEach(function (node) {\n _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"].remove(node);\n });\n}\n/**\n * Checks whether the attribute and value that causing XSS or not.\n * @param {string} attrName - name of attribute\n * @param {string} attrValue - value of attirbute\n * @param {boolean} state\n * @private\n */\n\n\nfunction isXSSAttribute(attrName, attrValue) {\n return attrName.match(XSS_ATTR_RX) && attrValue.match(XSS_VALUE_RX);\n}\n/**\n * Removes attributes of blacklist from node.\n * @param {HTMLElement} node - node to remove attributes\n * @param {NamedNodeMap} blacklistAttrs - attributes of blacklist\n * @private\n */\n\n\nfunction removeBlacklistAttributes(node, blacklistAttrs) {\n tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(blacklistAttrs).forEach(function (_ref) {\n var name = _ref.name;\n\n if (ON_EVENT_RX.test(name)) {\n node[name] = null;\n }\n\n if (node.getAttribute(name)) {\n node.removeAttribute(name);\n }\n });\n}\n/**\n * Leaves only white list attributes.\n * @param {HTMLElement} html - root element\n * @private\n */\n\n\nfunction leaveOnlyWhitelistAttribute(html) {\n _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"].findAll(html, '*').forEach(function (node) {\n var attributes = node.attributes;\n var blacklist = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(attributes).filter(function (attr) {\n var name = attr.name,\n value = attr.value;\n var htmlAttr = name.match(HTML_ATTR_LIST_RX);\n var svgAttr = name.match(SVG_ATTR_LIST_RX);\n var xssAttr = htmlAttr && isXSSAttribute(name, value);\n return !htmlAttr && !svgAttr || xssAttr;\n });\n removeBlacklistAttributes(node, blacklist);\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (htmlSanitizer);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isArray = __webpack_require__(17);\nvar forEachArray = __webpack_require__(21);\nvar forEachOwnProperties = __webpack_require__(10);\n\n/**\n * @module collection\n */\n\n/**\n * Execute the provided callback once for each property of object(or element of array) which actually exist.\n * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property(or The value of the element)\n * 2) The name of the property(or The index of the element)\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEach([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n *\n * // In case of Array-like object\n * var array = Array.prototype.slice.call(arrayLike); // change to array\n * forEach(array, function(value){\n * sum += value;\n * });\n */\nfunction forEach(obj, iteratee, context) {\n if (isArray(obj)) {\n forEachArray(obj, iteratee, context);\n } else {\n forEachOwnProperties(obj, iteratee, context);\n }\n}\n\nmodule.exports = forEach;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a function or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is a function or not.\n * If the given variable is a function, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is function?\n * @memberof module:type\n */\nfunction isFunction(obj) {\n return obj instanceof Function;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is existing or not.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isUndefined = __webpack_require__(8);\nvar isNull = __webpack_require__(48);\n\n/**\n * Check whether the given variable is existing or not.\n * If the given variable is not null and not undefined, returns true.\n * @param {*} param - Target for checking\n * @returns {boolean} Is existy?\n * @memberof module:type\n * @example\n * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs\n *\n * isExisty(''); //true\n * isExisty(0); //true\n * isExisty([]); //true\n * isExisty({}); //true\n * isExisty(null); //false\n * isExisty(undefined); //false\n*/\nfunction isExisty(param) {\n return !isUndefined(param) && !isNull(param);\n}\n\nmodule.exports = isExisty;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getHTMLRenderConvertors; });\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar baseConvertors = {\n paragraph: function paragraph(_, _ref) {\n var entering = _ref.entering,\n origin = _ref.origin,\n options = _ref.options;\n\n // prevent paragraph from being removed when it's child of tight list item\n // to show highlight style in live-preview mode\n if (options.nodeId) {\n return {\n type: entering ? 'openTag' : 'closeTag',\n outerNewLine: true,\n tagName: 'p'\n };\n }\n\n return origin();\n },\n softbreak: function softbreak(node) {\n var isPrevNodeHTML = node.prev && node.prev.type === 'htmlInline';\n var isPrevBR = isPrevNodeHTML && /
/.test(node.prev.literal);\n var content = isPrevBR ? '\\n' : '
\\n';\n return {\n type: 'html',\n content: content\n };\n },\n item: function item(node, _ref2) {\n var entering = _ref2.entering;\n\n if (entering) {\n var attributes = {};\n var classNames = [];\n\n if (node.listData.task) {\n attributes['data-te-task'] = '';\n classNames.push('task-list-item');\n\n if (node.listData.checked) {\n classNames.push('checked');\n }\n }\n\n return {\n type: 'openTag',\n tagName: 'li',\n classNames: classNames,\n attributes: attributes,\n outerNewLine: true\n };\n }\n\n return {\n type: 'closeTag',\n tagName: 'li',\n outerNewLine: true\n };\n },\n code: function code(node) {\n var attributes = {\n 'data-backticks': node.tickCount\n };\n return [{\n type: 'openTag',\n tagName: 'code',\n attributes: attributes\n }, {\n type: 'text',\n content: node.literal\n }, {\n type: 'closeTag',\n tagName: 'code'\n }];\n },\n codeBlock: function codeBlock(node) {\n var infoWords = node.info ? node.info.split(/\\s+/) : [];\n var preClasses = [];\n var codeAttrs = {};\n\n if (node.fenceLength > 3) {\n codeAttrs['data-backticks'] = node.fenceLength;\n }\n\n if (infoWords.length > 0 && infoWords[0].length > 0) {\n var lang = infoWords[0];\n preClasses.push(\"lang-\" + lang);\n codeAttrs['data-language'] = lang;\n }\n\n return [{\n type: 'openTag',\n tagName: 'pre',\n classNames: preClasses\n }, {\n type: 'openTag',\n tagName: 'code',\n attributes: codeAttrs\n }, {\n type: 'text',\n content: node.literal\n }, {\n type: 'closeTag',\n tagName: 'code'\n }, {\n type: 'closeTag',\n tagName: 'pre'\n }];\n }\n};\nfunction getHTMLRenderConvertors(linkAttribute, customConvertors) {\n var convertors = _extends({}, baseConvertors);\n\n if (linkAttribute) {\n convertors.link = function (_, _ref3) {\n var entering = _ref3.entering,\n origin = _ref3.origin;\n var result = origin();\n\n if (entering) {\n result.attributes = _extends({}, result.attributes, linkAttribute);\n }\n\n return result;\n };\n }\n\n if (customConvertors) {\n Object.keys(customConvertors).forEach(function (nodeType) {\n var orgConvertor = convertors[nodeType];\n var customConvertor = customConvertors[nodeType];\n\n if (orgConvertor) {\n convertors[nodeType] = function (node, context) {\n var newContext = _extends({}, context);\n\n newContext.origin = function () {\n return orgConvertor(node, context);\n };\n\n return customConvertor(node, newContext);\n };\n } else {\n convertors[nodeType] = customConvertor;\n }\n });\n }\n\n return convertors;\n}\n\n/***/ }),\n/* 30 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export CodeBlockManager */\n/**\n * @fileoverview Implements CodeBlockManager\n * @author NHN FE Development Lab \n */\n\n/**\n * Class Code Block Manager\n */\nvar CodeBlockManager = /*#__PURE__*/function () {\n function CodeBlockManager() {\n this._replacers = {};\n }\n /**\n * Set replacer for code block\n * @param {string} language - code block language\n * @param {function} replacer - replacer function to code block element\n */\n\n\n var _proto = CodeBlockManager.prototype;\n\n _proto.setReplacer = function setReplacer(language, replacer) {\n language = language.toLowerCase();\n this._replacers[language] = replacer;\n }\n /**\n * get replacer for code block\n * @param {string} language - code block type\n * @returns {function} - replacer function\n */\n ;\n\n _proto.getReplacer = function getReplacer(language) {\n return this._replacers[language];\n }\n /**\n * Create code block html.\n * @param {string} language - code block language\n * @param {string} codeText - code text\n * @returns {string}\n */\n ;\n\n _proto.createCodeBlockHtml = function createCodeBlockHtml(language, codeText) {\n language = language.toLowerCase();\n var replacer = this.getReplacer(language);\n\n if (replacer) {\n return replacer(codeText, language);\n }\n\n return escape(codeText, false);\n };\n\n return CodeBlockManager;\n}();\n/**\n * escape code from markdown-it\n * @param {string} html HTML string\n * @param {string} encode Boolean value of whether encode or not\n * @returns {string}\n * @ignore\n */\n\n\nfunction escape(html, encode) {\n return html.replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n}\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (new CodeBlockManager());\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return invokePlugins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getPluginInfo; });\n/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);\n/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27);\n/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__);\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n/**\n * Invoke plugins\n * @param {Array.} plugins - list of plugin function only or\n * plugin function with options\n * @param {Editor|Viewer} editor - editor or viewer instance\n */\n\nfunction invokePlugins(plugins, editor) {\n plugins.forEach(function (plugin) {\n if (tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(plugin)) {\n plugin(editor);\n } else if (tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin)) {\n var pluginFn = plugin[0],\n _plugin$ = plugin[1],\n options = _plugin$ === void 0 ? {} : _plugin$;\n pluginFn(editor, options);\n }\n });\n}\n/**\n * Get plugin info\n * @param {Array.} plugins - list of plugin function only or\n * plugin function with options\n * @returns {Object} - plugin info\n */\n\nfunction getPluginInfo(plugins) {\n if (!plugins) {\n return {};\n }\n\n return plugins.reduce(function (acc, plugin) {\n var pluginInfo = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? plugin[0] : plugin;\n\n if (!tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(pluginInfo)) {\n var renderer = pluginInfo.renderer,\n parser = pluginInfo.parser,\n pluginFn = pluginInfo.pluginFn;\n plugin = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? [pluginFn, plugin[1]] : pluginFn;\n\n if (renderer) {\n acc.renderer = _extends({}, acc.renderer, renderer);\n }\n\n if (parser) {\n acc.parser = _extends({}, acc.parser, parser);\n }\n }\n\n acc.plugins.push(plugin);\n return acc;\n }, {\n plugins: [],\n renderer: {},\n parser: {}\n });\n}\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * to-mark\n * @version 1.0.1 | Mon Jul 20 2020\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/domRunner.js\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements DomRunner\n * @author NHN Ent. FE Development Lab \n */\nvar NODE = {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n TEXT_NODE: 3\n};\n/**\n * DomRunner\n * @param {HTMLElement} node A root node that it has nodes to iterate(not iterate itself and its any siblings)\n * @class\n */\n\nvar DomRunner = /*#__PURE__*/function () {\n function DomRunner(node) {\n this._normalizeTextChildren(node);\n\n this._root = node;\n this._current = node;\n }\n /**\n * Iterate next node\n * @returns {HTMLElement} next node\n */\n\n\n var _proto = DomRunner.prototype;\n\n _proto.next = function next() {\n var current = this._current;\n var node;\n\n if (this._current) {\n node = this._getNextNode(current);\n\n while (this._isNeedNextSearch(node, current)) {\n current = current.parentNode;\n node = current.nextSibling;\n }\n\n this._current = node;\n }\n\n return this._current;\n }\n /**\n * Return current node\n * @returns {HTMLElement} current node\n */\n ;\n\n _proto.getNode = function getNode() {\n this._normalizeTextChildren(this._current);\n\n return this._current;\n };\n\n _proto._normalizeTextChildren = function _normalizeTextChildren(node) {\n if (!node || node.childNodes.length < 2) {\n return;\n }\n\n var childNode = node.firstChild;\n var nextNode;\n\n while (childNode.nextSibling) {\n nextNode = childNode.nextSibling;\n\n if (childNode.nodeType === NODE.TEXT_NODE && nextNode.nodeType === NODE.TEXT_NODE) {\n childNode.nodeValue += nextNode.nodeValue;\n node.removeChild(nextNode);\n } else {\n childNode = nextNode;\n }\n }\n }\n /**\n * Get current node's text content\n * @returns {string} text\n */\n ;\n\n _proto.getNodeText = function getNodeText() {\n var node = this.getNode();\n var text;\n\n if (node.nodeType === NODE.TEXT_NODE) {\n text = node.nodeValue;\n } else {\n text = node.textContent || node.innerText;\n }\n\n return text;\n }\n /**\n * Check if there is next node to iterate\n * @private\n * @param {HTMLElement} node next node\n * @param {HTMLElement} current next node\n * @returns {boolean} result\n */\n ;\n\n _proto._isNeedNextSearch = function _isNeedNextSearch(node, current) {\n return !node && current !== this._root && current.parentNode !== this._root;\n }\n /**\n * Return available next node\n * @private\n * @param {HTMLElement} current current node\n * @returns {node} next node\n */\n ;\n\n _proto._getNextNode = function _getNextNode(current) {\n return current.firstChild || current.nextSibling;\n };\n\n return DomRunner;\n}();\n\n_defineProperty(DomRunner, \"NODE_TYPE\", NODE);\n\n\n// CONCATENATED MODULE: ./src/toDom.js\n/**\n * @fileoverview Implements toDom\n * @author NHN Ent. FE Development Lab \n */\nvar FIND_FIRST_LAST_SPACE_OR_RETURN_OR_TAB_RX = /^[\\s\\r\\n\\t]+|[\\s\\r\\n\\t]+$/g;\nvar FIND_RETURN_OR_TAB_BETWEEN_TAGS_RX = />[\\r\\n\\t]+[ ]+<'); // remove spaces more than 1(if need more space, must use  )\n\n html = html.replace(FIND_WHOLE_SPACE_MORE_THAN_ONE_BETWEEN_TAGS_RX, '> <');\n return html;\n}\n\ntoDom.preProcess = preProcess;\n// CONCATENATED MODULE: ./src/renderer.js\nfunction renderer_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements Renderer\n * @author NHN Ent. FE Development Lab \n */\nvar FIND_LEAD_SPACE_RX = /^\\u0020/;\nvar FIND_TRAIL_SPACE_RX = /.+\\u0020$/;\nvar FIND_SPACE_RETURN_TAB_RX = /[\\n\\s\\t]+/g;\nvar FIND_CHAR_TO_TRIM_RX = /^[\\u0020\\r\\n\\t]+|[\\u0020\\r\\n\\t]+$/g; // find first and last characters for trim\n\nvar FIND_SPACE_MORE_THAN_ONE_RX = /[\\u0020]+/g; // find space more than one\n\nvar FIND_CHAR_TO_ESCAPE_RX = /[>(){}[\\]+-.!#|]/g; // find characters that need escape\n\nvar FIND_CHAR_TO_ESCAPE_IN_LINK_RX = /[[\\]]/g; // find characters to be escaped in links or images\n\nvar FIND_MARKDOWN_IMAGE_SYNTAX_RX = /!\\[.*\\]\\(.*\\)/g; // find markdown image syntax\n\nvar TEXT_NODE = 3;\n/**\n * Iterate properties of object\n * from https://github.com/nhnent/fe.code-snippet/blob/master/src/collection.js\n * @param {object} obj object to iterate\n * @param {function} iteratee callback function\n * @param {*} [context] context of callback\n */\n\nfunction forEachOwnProperties(obj, iteratee, context) {\n var key;\n context = context || null;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (iteratee.call(context, obj[key], key, obj) === false) {\n break;\n }\n }\n }\n}\n/**\n * Whether if inline node or not\n * @param {Node} node Element\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\n\n\nfunction isInlineNode(node) {\n var tag = node.tagName;\n return tag === 'S' || tag === 'B' || tag === 'I' || tag === 'EM' || tag === 'STRONG' || tag === 'A' || tag === 'IMG' || tag === 'CODE';\n}\n/**\n * Returns HTML string of an element using given subContent\n * @param {Node} node Element\n * @param {string} subContent string content of node\n * @returns {string}\n */\n\n\nfunction getRawHtmlString(node, subContent) {\n var tempNode = node.cloneNode(false);\n tempNode.innerHTML = subContent;\n return tempNode.outerHTML;\n}\n/**\n * Clone rules\n * @param {object} destination object for apply rules\n * @param {object} source source object for clone rules\n */\n\n\nfunction cloneRules(destination, source) {\n forEachOwnProperties(source, function (value, key) {\n if (key !== 'converter') {\n if (!destination[key]) {\n destination[key] = {};\n }\n\n cloneRules(destination[key], value);\n } else {\n destination[key] = value;\n }\n });\n}\n/**\n * Renderer\n * @param {object} [rules] rules to add\n * @class\n */\n\n\nvar Renderer = /*#__PURE__*/function () {\n function Renderer(rules) {\n this.rules = {};\n /**\n * Line feed replacement text\n * @type string\n */\n\n this.lineFeedReplacement = \"\\u200B\\u200B\";\n\n if (rules) {\n this.addRules(rules);\n }\n }\n /**\n * Add rule\n * @param {string} selectorString rule selector\n * @param {function} converter converter function\n */\n\n\n var _proto = Renderer.prototype;\n\n _proto.addRule = function addRule(selectorString, converter) {\n var selectors = selectorString.split(', ');\n var selector = selectors.pop();\n converter.fname = selectorString;\n\n while (selector) {\n this._setConverterWithSelector(selector, converter);\n\n selector = selectors.pop();\n }\n }\n /**\n * Add rules using object\n * @param {object} rules key(rule selector), value(converter function)\n */\n ;\n\n _proto.addRules = function addRules(rules) {\n forEachOwnProperties(rules, function (converter, selectorString) {\n this.addRule(selectorString, converter);\n }, this);\n }\n /**\n * Remove flanked space of dom node\n * @param {string} content text content\n * @param {HTMLElement} node current node\n * @returns {string} result\n */\n // eslint-disable-next-line complexity\n ;\n\n _proto.getSpaceControlled = function getSpaceControlled(content, node) {\n var lead = '';\n var trail = '';\n var text;\n\n if (node.previousSibling && (node.previousSibling.nodeType === TEXT_NODE || isInlineNode(node.previousSibling))) {\n text = node.previousSibling.innerHTML || node.previousSibling.nodeValue;\n\n if (FIND_TRAIL_SPACE_RX.test(text) || FIND_LEAD_SPACE_RX.test(node.innerHTML || node.nodeValue)) {\n lead = ' ';\n }\n }\n\n if (node.nextSibling && (node.nextSibling.nodeType === TEXT_NODE || isInlineNode(node.nextSibling))) {\n text = node.nextSibling.innerHTML || node.nextSibling.nodeValue;\n\n if (FIND_LEAD_SPACE_RX.test(text) || FIND_TRAIL_SPACE_RX.test(node.innerHTML || node.nodeValue)) {\n trail = ' ';\n }\n }\n\n return lead + content + trail;\n }\n /**\n * Convert dom node to markdown using dom node and subContent\n * @param {HTMLElement} node node to convert\n * @param {string} subContent child nodes converted text\n * @returns {string} converted text\n */\n // eslint-disable-next-line complexity\n ;\n\n _proto.convert = function convert(node, subContent) {\n var result;\n\n var converter = this._getConverter(node);\n\n if (node && node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-tomark-pass')) {\n node.removeAttribute('data-tomark-pass');\n result = getRawHtmlString(node, subContent);\n } else if (converter) {\n result = converter.call(this, node, subContent);\n } else if (node) {\n result = this.getSpaceControlled(this._getInlineHtml(node, subContent), node);\n }\n\n return result || '';\n };\n\n _proto._getInlineHtml = function _getInlineHtml(node, subContent) {\n var html = node.outerHTML;\n var tagName = node.tagName;\n var escapedSubContent = subContent.replace(/\\$/g, '$$$$'); // escape $: replace all $ char to $$ before we throw this string to replace\n\n return html.replace(new RegExp(\"(<\" + tagName + \" ?.*?>).*()\", 'i'), \"$1\" + escapedSubContent + \"$2\");\n }\n /**\n * Get converter function for node\n * @private\n * @param {HTMLElement} node node\n * @returns {function} converter function\n */\n ;\n\n _proto._getConverter = function _getConverter(node) {\n var rulePointer = this.rules;\n var converter;\n\n while (node && rulePointer) {\n rulePointer = this._getNextRule(rulePointer, this._getRuleNameFromNode(node));\n node = this._getPrevNode(node);\n\n if (rulePointer && rulePointer.converter) {\n converter = rulePointer.converter;\n }\n }\n\n return converter;\n }\n /**\n * Get next rule object\n * @private\n * @param {object} ruleObj rule object\n * @param {string} ruleName rule tag name to find\n * @returns {object} rule Object\n */\n ;\n\n _proto._getNextRule = function _getNextRule(ruleObj, ruleName) {\n return ruleObj[ruleName];\n }\n /**\n * Get proper rule tag name from node\n * @private\n * @param {HTMLElement} node node\n * @returns {string} rule tag name\n */\n ;\n\n _proto._getRuleNameFromNode = function _getRuleNameFromNode(node) {\n return node.tagName || 'TEXT_NODE';\n }\n /**\n * Get node's available parent node\n * @private\n * @param {HTMLElement} node node\n * @returns {HTMLElement | undefined} result\n */\n ;\n\n _proto._getPrevNode = function _getPrevNode(node) {\n var parentNode = node.parentNode;\n var previousNode;\n\n if (parentNode && !parentNode.__htmlRootByToMark) {\n previousNode = parentNode;\n }\n\n return previousNode;\n }\n /**\n * Set converter for selector\n * @private\n * @param {string} selectors rule selector\n * @param {function} converter converter function\n */\n ;\n\n _proto._setConverterWithSelector = function _setConverterWithSelector(selectors, converter) {\n var rulePointer = this.rules;\n\n this._eachSelector(selectors, function (ruleElem) {\n if (!rulePointer[ruleElem]) {\n rulePointer[ruleElem] = {};\n }\n\n rulePointer = rulePointer[ruleElem];\n });\n\n rulePointer.converter = converter;\n }\n /**\n * Iterate each selectors\n * @private\n * @param {string} selectors rule selectors\n * @param {function} iteratee callback\n */\n ;\n\n _proto._eachSelector = function _eachSelector(selectors, iteratee) {\n var selectorArray = selectors.split(' ');\n var selectorIndex = selectorArray.length - 1;\n\n while (selectorIndex >= 0) {\n iteratee(selectorArray[selectorIndex]);\n selectorIndex -= 1;\n }\n }\n /**\n * Trim text\n * @param {string} text text be trimed\n * @returns {string} trimed text\n */\n ;\n\n _proto.trim = function trim(text) {\n return text.replace(FIND_CHAR_TO_TRIM_RX, '');\n }\n /**\n * Returns whether text empty or not\n * @param {string} text text be checked\n * @returns {boolean} result\n */\n ;\n\n _proto.isEmptyText = function isEmptyText(text) {\n return text.replace(FIND_SPACE_RETURN_TAB_RX, '') === '';\n }\n /**\n * Collape space more than 2\n * @param {string} text text be collapsed\n * @returns {string} result\n */\n ;\n\n _proto.getSpaceCollapsedText = function getSpaceCollapsedText(text) {\n return text.replace(FIND_SPACE_MORE_THAN_ONE_RX, ' ');\n }\n /**\n * Apply backslash escape to text\n * @param {string} text text be processed\n * @returns {string} processed text\n */\n ;\n\n _proto.escapeText = function escapeText(text) {\n return text.replace(FIND_CHAR_TO_ESCAPE_RX, function (matched) {\n return \"\\\\\" + matched;\n });\n }\n /**\n * Escape given text for link\n * @param {string} text - text be processed\n * @returns {string} - processed text\n */\n ;\n\n _proto.escapeTextForLink = function escapeTextForLink(text) {\n var imageSyntaxRanges = [];\n var result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text);\n\n while (result) {\n imageSyntaxRanges.push([result.index, result.index + result[0].length]);\n result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text);\n }\n\n return text.replace(FIND_CHAR_TO_ESCAPE_IN_LINK_RX, function (matched, offset) {\n var isDelimiter = imageSyntaxRanges.some(function (range) {\n return offset > range[0] && offset < range[1];\n });\n return isDelimiter ? matched : \"\\\\\" + matched;\n });\n }\n /**\n * Backslash escape to text for html\n * Apply backslash escape to text\n * @param {string} text text be processed\n * @returns {string} processed text\n */\n ;\n\n _proto.escapeTextHtml = function escapeTextHtml(text) {\n return text.replace(new RegExp(Renderer.markdownTextToEscapeHtmlRx.source, 'g'), function (matched) {\n return \"\\\\\" + matched;\n });\n }\n /**\n * Backslash is using for escape ASCII punctuation character.\n * https://spec.commonmark.org/0.29/#backslash-escapes\n * If user input backslash as text, backslash is kept by inserting backslash.\n * For example, if input text is \"\\$\", this text is changed \"\\\\$\"\n * @param {string} text text be processed\n * @returns {string} processed text\n */\n ;\n\n _proto.escapeTextBackSlash = function escapeTextBackSlash(text) {\n return text.replace(new RegExp(Renderer.markdownTextToEscapeBackSlashRx.source, 'g'), function (matched) {\n return \"\\\\\" + matched;\n });\n }\n /**\n * Escapes in markdown paired characters\n * @param {string} text Text to escape\n * @returns {string} escaped text\n */\n ;\n\n _proto.escapePairedCharacters = function escapePairedCharacters(text) {\n return text.replace(new RegExp(Renderer.markdownTextToEscapePairedCharsRx.source, 'g'), function (matched) {\n return \"\\\\\" + matched;\n });\n };\n\n _proto._isNeedEscape = function _isNeedEscape(text) {\n var res = false;\n var markdownTextToEscapeRx = Renderer.markdownTextToEscapeRx;\n var type;\n\n for (type in markdownTextToEscapeRx) {\n if (markdownTextToEscapeRx.hasOwnProperty(type) && markdownTextToEscapeRx[type].test(text)) {\n res = true;\n break;\n }\n }\n\n return res;\n };\n\n _proto._isNeedEscapeHtml = function _isNeedEscapeHtml(text) {\n return Renderer.markdownTextToEscapeHtmlRx.test(text);\n };\n\n _proto._isNeedEscapeBackSlash = function _isNeedEscapeBackSlash(text) {\n return Renderer.markdownTextToEscapeBackSlashRx.test(text);\n };\n\n _proto.mix = function mix(renderer) {\n cloneRules(this.rules, renderer.rules);\n }\n /**\n * Renderer factory\n * Return new renderer\n * @param {Renderer} srcRenderer renderer to extend\n * @param {object} rules rule object, key(rule selector), value(converter function)\n * @returns {Renderer} renderer\n */\n ;\n\n Renderer.factory = function factory(srcRenderer, rules) {\n var renderer = new Renderer();\n\n if (!rules) {\n rules = srcRenderer;\n } else {\n renderer.mix(srcRenderer);\n }\n\n renderer.addRules(rules);\n return renderer;\n };\n\n return Renderer;\n}();\n\nrenderer_defineProperty(Renderer, \"markdownTextToEscapeRx\", {\n codeblock: /(^ {4}[^\\n]+\\n*)+/,\n hr: /^ *((\\* *){3,}|(- *){3,} *|(_ *){3,}) */,\n heading: /^(#{1,6}) +[\\s\\S]+/,\n lheading: /^([^\\n]+)\\n *(=|-){2,} */,\n blockquote: /^( *>[^\\n]+.*)+/,\n list: /^ *(\\*+|-+|\\d+\\.) [\\s\\S]+/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? */,\n link: /!?\\[.*\\]\\(.*\\)/,\n reflink: /!?\\[.*\\]\\s*\\[([^\\]]*)\\]/,\n verticalBar: /\\u007C/,\n codeblockGfm: /^(`{3,})/,\n codeblockTildes: /^(~{3,})/\n});\n\nrenderer_defineProperty(Renderer, \"markdownTextToEscapeHtmlRx\", /<([a-zA-Z_][a-zA-Z0-9\\-._]*)(\\s|[^\\\\/>])*\\/?>|<(\\/)([a-zA-Z_][a-zA-Z0-9\\-._]*)\\s*\\/?>||<([a-zA-Z_][a-zA-Z0-9\\-.:/]*)>/);\n\nrenderer_defineProperty(Renderer, \"markdownTextToEscapeBackSlashRx\", /\\\\[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\\\\]/);\n\nrenderer_defineProperty(Renderer, \"markdownTextToEscapePairedCharsRx\", /[*_~`]/);\n\n\n// CONCATENATED MODULE: ./src/renderer.basic.js\n/**\n * @fileoverview Implements basicRenderer\n * @author NHN Ent. FE Development Lab \n */\n\nvar FIND_LAST_RETURN_RX = /\\n$/g;\nvar FIND_BR_AND_RETURN_RX = /[ \\xA0]+\\n\\n/g;\nvar FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX = /([ \\xA0]+\\n){2,}/g;\nvar FIND_LINK_HREF = /href=\"(.*?)\"/;\nvar START_OF_LINES_RX = /^/gm;\n/**\n * Basic Markdown Renderer\n * @exports basicRenderer\n * @augments Renderer\n */\n\n/* harmony default export */ var renderer_basic = (Renderer.factory({\n // inlines\n TEXT_NODE: function TEXT_NODE(node) {\n var managedText = this.trim(this.getSpaceCollapsedText(node.nodeValue));\n\n if (this._isNeedEscapeBackSlash(managedText)) {\n managedText = this.escapeTextBackSlash(managedText);\n }\n\n managedText = this.escapePairedCharacters(managedText);\n\n if (this._isNeedEscapeHtml(managedText)) {\n managedText = this.escapeTextHtml(managedText);\n }\n\n if (this._isNeedEscape(managedText)) {\n managedText = this.escapeText(managedText);\n }\n\n return this.getSpaceControlled(managedText, node);\n },\n 'CODE TEXT_NODE': function CODETEXT_NODE(node) {\n return node.nodeValue;\n },\n 'EM, I': function EMI(node, subContent) {\n var res = '';\n\n if (!this.isEmptyText(subContent)) {\n res = \"*\" + subContent + \"*\";\n }\n\n return res;\n },\n 'STRONG, B': function STRONGB(node, subContent) {\n var res = '';\n\n if (!this.isEmptyText(subContent)) {\n res = \"**\" + subContent + \"**\";\n }\n\n return res;\n },\n A: function A(node, subContent) {\n var res = subContent;\n var title = '';\n var url; // \"href\" attribute is difficult to predict depending on the situation\n // so use as it is applied to html\n\n var foundedHref = FIND_LINK_HREF.exec(node.outerHTML);\n\n if (foundedHref) {\n url = foundedHref[1].replace(/&/g, '&');\n }\n\n if (node.title) {\n title = \" \\\"\" + node.title + \"\\\"\";\n }\n\n if (!this.isEmptyText(subContent) && url) {\n res = \"[\" + this.escapeTextForLink(subContent) + \"](\" + url + title + \")\";\n }\n\n return res;\n },\n IMG: function IMG(node) {\n var src = node.getAttribute('src');\n var alt = node.alt;\n\n if (src) {\n return \"![\" + this.escapeTextForLink(alt) + \"](\" + src + \")\";\n }\n\n return '';\n },\n BR: function BR() {\n return ' \\n';\n },\n CODE: function CODE(node, subContent) {\n var backticks, numBackticks;\n var res = '';\n\n if (!this.isEmptyText(subContent)) {\n numBackticks = parseInt(node.getAttribute('data-backticks'), 10);\n backticks = isNaN(numBackticks) ? '`' : Array(numBackticks + 1).join('`');\n res = backticks + subContent + backticks;\n }\n\n return res;\n },\n // Paragraphs\n P: function P(node, subContent) {\n var res = ''; // convert multiple brs to one br\n\n subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \\n');\n\n if (!this.isEmptyText(subContent)) {\n res = \"\\n\\n\" + subContent + \"\\n\\n\";\n }\n\n return res;\n },\n 'BLOCKQUOTE P': function BLOCKQUOTEP(node, subContent) {\n return subContent;\n },\n 'LI P': function LIP(node, subContent) {\n var res = '';\n\n if (!this.isEmptyText(subContent)) {\n res = subContent;\n }\n\n return res;\n },\n // Headings\n 'H1, H2, H3, H4, H5, H6': function H1H2H3H4H5H6(node, subContent) {\n var res = '';\n var headingNumber = parseInt(node.tagName.charAt(1), 10);\n\n while (headingNumber) {\n res += '#';\n headingNumber -= 1;\n }\n\n res += ' ';\n res += subContent;\n return \"\\n\\n\" + res + \"\\n\\n\";\n },\n 'LI H1, LI H2, LI H3, LI H4, LI H5, LI H6': function LIH1LIH2LIH3LIH4LIH5LIH6(node, subContent) {\n var headingNumber = parseInt(node.tagName.charAt(1), 10);\n return Array(headingNumber + 1).join('#') + \" \" + subContent;\n },\n // List\n 'UL, OL': function ULOL(node, subContent) {\n return \"\\n\\n\" + subContent + \"\\n\\n\";\n },\n 'LI OL, LI UL': function LIOLLIUL(node, subContent) {\n var processedSubContent; // remove last br of li\n\n processedSubContent = subContent.replace(FIND_BR_AND_RETURN_RX, '\\n'); // parent LI converter add \\n too, so we remove last return\n\n processedSubContent = processedSubContent.replace(FIND_LAST_RETURN_RX, '');\n var res = processedSubContent.replace(START_OF_LINES_RX, ' ');\n return \"\\n\" + res;\n },\n 'UL LI': function ULLI(node, subContent) {\n var res = ''; // convert multiple brs to one br\n\n subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \\n');\n\n if (node.firstChild && node.firstChild.tagName === 'P') {\n res += '\\n';\n }\n\n res += \"* \" + subContent + \"\\n\";\n return res;\n },\n // eslint-disable-next-line complexity\n 'OL LI': function OLLI(node, subContent) {\n var res = '';\n var liCounter = parseInt(node.parentNode.getAttribute('start') || 1, 10);\n\n while (node.previousSibling) {\n node = node.previousSibling;\n\n if (node.nodeType === 1 && node.tagName === 'LI') {\n liCounter += 1;\n }\n } // convert multiple brs to one br\n\n\n subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \\n');\n\n if (node.firstChild && node.firstChild.tagName === 'P') {\n res += '\\n';\n }\n\n res += liCounter + \". \" + subContent + \"\\n\";\n return res;\n },\n // HR\n HR: function HR() {\n return '\\n\\n- - -\\n\\n';\n },\n // Blockquote\n BLOCKQUOTE: function BLOCKQUOTE(node, subContent) {\n // convert multiple brs to one emptyline\n subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, '\\n\\n');\n var trimmedText = this.trim(subContent);\n var res = trimmedText.replace(START_OF_LINES_RX, '> ');\n return \"\\n\\n\" + res + \"\\n\\n\";\n },\n // Code Block\n 'PRE CODE': function PRECODE(node, subContent) {\n var lastNremoved = subContent.replace(FIND_LAST_RETURN_RX, '');\n var res = lastNremoved.replace(START_OF_LINES_RX, ' ');\n return \"\\n\\n\" + res + \"\\n\\n\";\n }\n}));\n// CONCATENATED MODULE: ./src/renderer.gfm.js\n/**\n * @fileoverview Implements Github flavored markdown renderer\n * @author NHN Ent. FE Development Lab \n */\n\n\n/**\n * gfmRenderer\n * github flavored Markdown Renderer\n *\n * we didnt render gfm br here because we need distingush returns that made by block with br\n * so we render gfm br later in toMark.js finalize function\n * @exports gfmRenderer\n * @augments Renderer\n */\n\n/* harmony default export */ var renderer_gfm = (Renderer.factory(renderer_basic, {\n 'DEL, S': function DELS(node, subContent) {\n return \"~~\" + subContent + \"~~\";\n },\n 'PRE CODE': function PRECODE(node, subContent) {\n var language = '';\n var numberOfBackticks = node.getAttribute('data-backticks');\n\n if (node.getAttribute('data-language')) {\n language = \" \" + node.getAttribute('data-language');\n }\n\n numberOfBackticks = parseInt(numberOfBackticks, 10);\n var backticks = isNaN(numberOfBackticks) ? '```' : Array(numberOfBackticks + 1).join('`');\n subContent = subContent.replace(/(\\r\\n)|(\\r)|(\\n)/g, this.lineFeedReplacement);\n return \"\\n\\n\" + backticks + language + \"\\n\" + subContent + \"\\n\" + backticks + \"\\n\\n\";\n },\n PRE: function PRE(node, subContent) {\n return subContent;\n },\n 'UL LI': function ULLI(node, subContent) {\n return renderer_basic.convert(node, makeTaskIfNeed(node, subContent));\n },\n 'OL LI': function OLLI(node, subContent) {\n return renderer_basic.convert(node, makeTaskIfNeed(node, subContent));\n },\n // Table\n TABLE: function TABLE(node, subContent) {\n return \"\\n\\n\" + subContent + \"\\n\\n\";\n },\n 'TBODY, TFOOT': function TBODYTFOOT(node, subContent) {\n return subContent;\n },\n 'TR TD, TR TH': function TRTDTRTH(node, subContent) {\n subContent = subContent.replace(/(\\r\\n)|(\\r)|(\\n)/g, '');\n return \" \" + subContent + \" |\";\n },\n 'TD BR, TH BR': function TDBRTHBR() {\n return '
';\n },\n TR: function TR(node, subContent) {\n return \"|\" + subContent + \"\\n\";\n },\n THEAD: function THEAD(node, subContent) {\n var result = '';\n var ths = findChildTag(findChildTag(node, 'TR')[0], 'TH');\n\n for (var i = 0, thsLength = ths.length; i < thsLength; i += 1) {\n result += \" \" + makeTableHeadAlignText(ths[i]) + \" |\";\n }\n\n return subContent ? subContent + \"|\" + result + \"\\n\" : '';\n }\n}));\n/**\n * Make task Markdown string if need\n * @param {HTMLElement} node Passed HTML Element\n * @param {string} subContent node's content\n * @returns {string}\n */\n\nfunction makeTaskIfNeed(node, subContent) {\n var condition;\n\n if (node.className.indexOf('task-list-item') !== -1) {\n condition = node.className.indexOf('checked') !== -1 ? 'x' : ' ';\n subContent = \"[\" + condition + \"] \" + subContent;\n }\n\n return subContent;\n}\n/**\n * Make table head align text\n * @param {HTMLElement} th Table head cell element\n * @returns {string}\n */\n\n\nfunction makeTableHeadAlignText(th) {\n var leftAlignValue, rightAlignValue, textLength;\n var align = th.align;\n textLength = th.textContent ? th.textContent.length : th.innerText.length;\n leftAlignValue = '';\n rightAlignValue = '';\n\n if (align) {\n if (align === 'left') {\n leftAlignValue = ':';\n textLength -= 1;\n } else if (align === 'right') {\n rightAlignValue = ':';\n textLength -= 1;\n } else if (align === 'center') {\n rightAlignValue = ':';\n leftAlignValue = ':';\n textLength -= 2;\n }\n }\n\n return leftAlignValue + repeatString('-', textLength) + rightAlignValue;\n}\n/**\n * Find child element of given tag name\n * @param {HTMLElement} node starting element\n * @param {string} tagName Tag name for search\n * @returns {Array.}\n */\n\n\nfunction findChildTag(node, tagName) {\n var childNodes = node.childNodes;\n var result = [];\n\n for (var i = 0, childLength = childNodes.length; i < childLength; i += 1) {\n if (childNodes[i].tagName && childNodes[i].tagName === tagName) {\n result.push(childNodes[i]);\n }\n }\n\n return result;\n}\n/**\n * Repeat given string\n * @param {string} pattern String for repeat\n * @param {number} count Amount of repeat\n * @returns {string}\n */\n\n\nfunction repeatString(pattern, count) {\n var result = pattern;\n count = Math.max(count, 3);\n\n while (count > 1) {\n result += pattern;\n count -= 1;\n }\n\n return result;\n}\n// CONCATENATED MODULE: ./src/toMark.js\n/**\n * @fileoverview Implements toMark\n * @author NHN Ent. FE Development Lab \n */\n\n\n\n\nvar FIND_UNUSED_BRS_RX = /[ \\xA0]+(\\n\\n)/g;\nvar FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX = /^[\\n]+|[\\s\\n]+$/g;\nvar FIND_MULTIPLE_BRS_RX = /([ \\xA0]+\\n){2,}/g;\nvar FIND_RETURNS_RX = /([ \\xA0]){2,}\\n/g;\nvar FIND_RETURNS_AND_SPACE_RX = /[ \\xA0\\n]+/g;\n/**\n * @exports toMark\n * @param {string} htmlStr html string to convert\n * @param {object} options option\n * @param {boolean} options.gfm if this property is false turn off it cant parse gfm\n * @param {Renderer} options.renderer pass renderer to use\n * @returns {string} converted markdown text\n * @example\n * toMark('

hello world

'); // \"# hello world\"\n * toMark('strike'); // \"~~strike~~\"\n * toMark('strike', {gfm: false}); // \"strike\"\n */\n\nfunction toMark(htmlStr, options) {\n var isGfm = true;\n var renderer;\n\n if (!htmlStr) {\n return '';\n }\n\n renderer = renderer_gfm;\n\n if (options) {\n isGfm = options.gfm;\n\n if (isGfm === false) {\n renderer = renderer_basic;\n }\n\n renderer = options.renderer || renderer;\n }\n\n var runner = new DomRunner(toDom(htmlStr));\n return finalize(parse(runner, renderer), isGfm, renderer.lineFeedReplacement);\n}\n/**\n * Parse dom to markdown\n * @param {DomRunner} runner runner\n * @param {Renderer} renderer renderer\n * @returns {string} markdown text\n */\n\nfunction parse(runner, renderer) {\n var markdownContent = '';\n\n while (runner.next()) {\n markdownContent += tracker(runner, renderer);\n }\n\n return markdownContent;\n}\n/**\n * Remove first and last return character\n * @param {string} text text to finalize\n * @param {boolean} isGfm isGfm flag\n * @param {string} lineFeedReplacement Line feed replacement text\n * @returns {string} result\n */\n\n\nfunction finalize(text, isGfm, lineFeedReplacement) {\n // collapse return and
\n text = text.replace(FIND_UNUSED_BRS_RX, '\\n'); // collapse multiple br\n\n text = text.replace(FIND_MULTIPLE_BRS_RX, '\\n\\n');\n text = text.replace(FIND_RETURNS_AND_SPACE_RX, function (matched) {\n var returnCount = (matched.match(/\\n/g) || []).length;\n\n if (returnCount >= 3) {\n return '\\n\\n';\n }\n\n if (matched >= 1) {\n return '\\n';\n }\n\n return matched;\n }); // remove first and last \\n\n\n text = text.replace(FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX, '');\n text = text.replace(new RegExp(lineFeedReplacement, 'g'), '\\n'); // in gfm replace ' \\n' make by
to '\\n'\n\n if (isGfm) {\n text = text.replace(FIND_RETURNS_RX, '\\n');\n }\n\n return text;\n}\n/**\n * Iterate childNodes and process conversion using recursive call\n * @param {DomRunner} runner dom runner\n * @param {Renderer} renderer renderer to use\n * @returns {string} processed text\n */\n\n\nfunction tracker(runner, renderer) {\n var subContent = '';\n var node = runner.getNode();\n\n for (var i = 0, t = node.childNodes.length; i < t; i += 1) {\n runner.next();\n subContent += tracker(runner, renderer);\n }\n\n return renderer.convert(node, subContent);\n}\n// CONCATENATED MODULE: ./src/index.js\n/**\n * @fileoverview Implements entry point\n * @author NHN Ent. FE Development Lab \n */\n\n\n\n\ntoMark.Renderer = Renderer;\ntoMark.basicRenderer = renderer_basic;\ntoMark.gfmRenderer = renderer_gfm;\n/* harmony default export */ var src = __webpack_exports__[\"default\"] = (toMark);\n\n/***/ })\n/******/ ])[\"default\"];\n});\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get HTML element's design classes.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isUndefined = __webpack_require__(8);\n\n/**\n * Get HTML element's design classes.\n * @param {(HTMLElement|SVGElement)} element target element\n * @returns {string} element css class name\n * @memberof module:domUtil\n */\nfunction getClass(element) {\n if (!element || !element.className) {\n return '';\n }\n\n if (isUndefined(element.className.baseVal)) {\n return element.className;\n }\n\n return element.className.baseVal;\n}\n\nmodule.exports = getClass;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a number or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is a number or not.\n * If the given variable is a number, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is number?\n * @memberof module:type\n */\nfunction isNumber(obj) {\n return typeof obj === 'number' || obj instanceof Number;\n}\n\nmodule.exports = isNumber;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export CLASS_HIGHLIGHT */\n/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);\n/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);\n/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);\n/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);\n/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22);\n/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _preview__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(0);\n/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(29);\n/* harmony import */ var _scroll_helper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18);\n/* harmony import */ var _scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24);\n/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4);\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements markdown preview\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\n\nvar CLASS_HIGHLIGHT = 'te-preview-highlight';\n\nfunction findTableCell(tableRow, _ref) {\n var ch = _ref.ch;\n var cell = tableRow.firstChild;\n\n while (cell && cell.next) {\n if (Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* getMdStartCh */ \"e\"])(cell.next) > ch + 1) {\n break;\n }\n\n cell = cell.next;\n }\n\n return cell;\n}\n/**\n * Class Markdown Preview\n * @param {HTMLElement} el - base element\n * @param {EventManager} eventManager - event manager\n * @param {Convertor} convertor - convertor\n * @param {object} options\n * @param {boolean} options.isViewer - true for view-only mode\n * @param {boolean} options.highlight - true for using live-highlight feature\n * @param {object} opitons.linkAttribute - attributes for link element\n * @param {object} opitons.customHTMLRenderer - map of custom HTML render functions\n\n * @ignore\n */\n\n\nvar MarkdownPreview = /*#__PURE__*/function (_Preview) {\n _inheritsLoose(MarkdownPreview, _Preview);\n\n function MarkdownPreview(el, eventManager, convertor, options) {\n var _this;\n\n _this = _Preview.call(this, el, eventManager, convertor, options.isViewer) || this;\n\n _this.lazyRunner.registerLazyRunFunction('invokeCodeBlock', _this.invokeCodeBlockPlugins, _this.delayCodeBlockTime, _assertThisInitialized(_this));\n\n var linkAttribute = options.linkAttribute,\n customHTMLRenderer = options.customHTMLRenderer,\n _options$highlight = options.highlight,\n highlight = _options$highlight === void 0 ? false : _options$highlight;\n _this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__[\"createRenderHTML\"])({\n gfm: true,\n nodeId: true,\n convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__[/* getHTMLRenderConvertors */ \"a\"])(linkAttribute, customHTMLRenderer)\n });\n _this.cursorNodeId = null;\n\n _this._initEvent(highlight);\n\n return _this;\n }\n /**\n * Initialize event\n * @private\n */\n\n\n var _proto = MarkdownPreview.prototype;\n\n _proto._initEvent = function _initEvent(highlight) {\n var _this2 = this;\n\n this.eventManager.listen('contentChangedFromMarkdown', this.update.bind(this)); // need to implement a listener function for 'previewNeedsRefresh' event\n // to support third-party plugins which requires re-executing script for every re-render\n\n if (highlight) {\n this.eventManager.listen('cursorActivity', function (_ref2) {\n var markdownNode = _ref2.markdownNode,\n cursor = _ref2.cursor;\n\n _this2._updateCursorNode(markdownNode, cursor);\n });\n this.eventManager.listen('blur', function () {\n _this2._removeHighlight();\n });\n }\n\n tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default()(this.el, 'scroll', function (event) {\n _this2.eventManager.emit('scroll', {\n source: 'preview',\n data: Object(_scroll_helper__WEBPACK_IMPORTED_MODULE_8__[/* findAdjacentElementToScrollTop */ \"a\"])(event.target.scrollTop, _this2._previewContent)\n });\n });\n };\n\n _proto._removeHighlight = function _removeHighlight() {\n if (this.cursorNodeId) {\n var currentEl = this._getElementByNodeId(this.cursorNodeId);\n\n if (currentEl) {\n tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(currentEl, CLASS_HIGHLIGHT);\n }\n }\n };\n\n _proto._updateCursorNode = function _updateCursorNode(cursorNode, cursorPos) {\n if (cursorNode) {\n cursorNode = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* findClosestNode */ \"b\"])(cursorNode, function (mdNode) {\n return !Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* isInlineNode */ \"h\"])(mdNode);\n });\n\n if (cursorNode.type === 'tableRow') {\n cursorNode = findTableCell(cursorNode, cursorPos);\n } else if (cursorNode.type === 'tableBody') {\n // empty line next to table\n cursorNode = null;\n }\n }\n\n var cursorNodeId = cursorNode ? cursorNode.id : null;\n\n if (this.cursorNodeId === cursorNodeId) {\n return;\n }\n\n var oldEL = this._getElementByNodeId(this.cursorNodeId);\n\n var newEL = this._getElementByNodeId(cursorNodeId);\n\n if (oldEL) {\n tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(oldEL, CLASS_HIGHLIGHT);\n }\n\n if (newEL) {\n tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default()(newEL, CLASS_HIGHLIGHT);\n }\n\n this.cursorNodeId = cursorNodeId;\n };\n\n _proto._getElementByNodeId = function _getElementByNodeId(nodeId) {\n if (!nodeId) {\n return null;\n }\n\n return this._previewContent.querySelector(\"[data-nodeid=\\\"\" + nodeId + \"\\\"]\");\n };\n\n _proto.update = function update(changed) {\n var _this3 = this;\n\n changed.forEach(function (editResult) {\n return _this3.replaceRangeNodes(editResult);\n });\n this.eventManager.emit('previewRenderAfter', this);\n };\n\n _proto.replaceRangeNodes = function replaceRangeNodes(editResult) {\n var _this4 = this;\n\n var nodes = editResult.nodes,\n removedNodeRange = editResult.removedNodeRange;\n var contentEl = this._previewContent;\n var newHtml = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', nodes.map(function (node) {\n return _this4.renderHTML(node);\n }).join(''));\n\n if (!removedNodeRange) {\n contentEl.insertAdjacentHTML('afterbegin', newHtml);\n } else {\n var _removedNodeRange$id = removedNodeRange.id,\n startNodeId = _removedNodeRange$id[0],\n endNodeId = _removedNodeRange$id[1];\n\n var startEl = this._getElementByNodeId(startNodeId);\n\n var endEl = this._getElementByNodeId(endNodeId);\n\n if (startEl) {\n startEl.insertAdjacentHTML('beforebegin', newHtml);\n var el = startEl;\n\n while (el !== endEl) {\n var nextEl = el.nextElementSibling;\n el.parentNode.removeChild(el);\n Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ \"c\"])(el);\n el = nextEl;\n }\n\n if (el.parentNode) {\n _utils_dom__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"].remove(el);\n Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ \"c\"])(el);\n }\n }\n }\n\n var codeBlockEls = this.getCodeBlockElements(nodes.map(function (node) {\n return node.id;\n }));\n\n if (codeBlockEls.length) {\n this.lazyRunner.run('invokeCodeBlock', codeBlockEls);\n }\n }\n /**\n * render\n * @param {string} html - html string to render\n * @override\n */\n ;\n\n _proto.render = function render(html) {\n _Preview.prototype.render.call(this, html);\n\n this.eventManager.emit('previewRenderAfter', this);\n };\n\n _proto.remove = function remove() {\n tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default()(this.el, 'scroll');\n this.el = null;\n };\n\n return MarkdownPreview;\n}(_preview__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MarkdownPreview);\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);\n/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);\n/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);\n/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45);\n/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);\n/**\n * @fileoverview Implements EventManager\n * @author NHN FE Development Lab \n */\n\n\n\n\n\nvar eventList = ['previewBeforeHook', 'previewRenderAfter', 'previewNeedsRefresh', 'addImageBlobHook', 'setMarkdownAfter', 'contentChangedFromWysiwyg', 'changeFromWysiwyg', 'contentChangedFromMarkdown', 'changeFromMarkdown', 'change', 'changeModeToWysiwyg', 'changeModeToMarkdown', 'changeModeBefore', 'changeMode', 'changePreviewStyle', 'changePreviewTabPreview', 'changePreviewTabWrite', 'openPopupAddLink', 'openPopupAddImage', 'openPopupAddTable', 'openPopupTableUtils', 'openHeadingSelect', 'openPopupCodeBlockLanguages', 'openPopupCodeBlockEditor', 'openDropdownToolbar', 'closePopupCodeBlockLanguages', 'closePopupCodeBlockEditor', 'closeAllPopup', 'command', 'addCommandBefore', 'htmlUpdate', 'markdownUpdate', 'renderedHtmlUpdated', 'removeEditor', 'convertorAfterMarkdownToHtmlConverted', 'convertorBeforeHtmlToMarkdownConverted', 'convertorAfterHtmlToMarkdownConverted', 'stateChange', 'wysiwygSetValueAfter', 'wysiwygSetValueBefore', 'wysiwygGetValueBefore', 'wysiwygProcessHTMLText', 'wysiwygRangeChangeAfter', 'wysiwygKeyEvent', 'scroll', 'click', 'mousedown', 'mouseover', 'mouseout', 'mouseup', 'contextmenu', 'keydown', 'keyup', 'keyMap', 'load', 'focus', 'blur', 'paste', 'pasteBefore', 'willPaste', 'copy', 'copyBefore', 'copyAfter', 'cut', 'cutAfter', 'drop', 'show', 'hide', 'changeLanguage', 'cursorActivity', 'requireScrollSync', 'requireScrollIntoView', 'setCodeBlockLanguages'];\n/**\n * Class EventManager\n * @ignore\n */\n\nvar EventManager = /*#__PURE__*/function () {\n function EventManager() {\n this.events = new _utils_map__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"]();\n this.TYPE = new tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default.a(eventList);\n }\n /**\n * Listen event and bind event handler\n * @param {string} typeStr Event type string\n * @param {function} handler Event handler\n */\n\n\n var _proto = EventManager.prototype;\n\n _proto.listen = function listen(typeStr, handler) {\n var typeInfo = this._getTypeInfo(typeStr);\n\n var eventHandlers = this.events.get(typeInfo.type) || [];\n\n if (!this._hasEventType(typeInfo.type)) {\n throw new Error(\"There is no event type \" + typeInfo.type);\n }\n\n if (typeInfo.namespace) {\n handler.namespace = typeInfo.namespace;\n }\n\n eventHandlers.push(handler);\n this.events.set(typeInfo.type, eventHandlers);\n }\n /**\n * Emit event\n * @param {string} eventName Event name to emit\n * @returns {Array}\n */\n ;\n\n _proto.emit = function emit() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var typeStr = args.shift();\n\n var typeInfo = this._getTypeInfo(typeStr);\n\n var eventHandlers = this.events.get(typeInfo.type);\n var results;\n\n if (eventHandlers) {\n tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) {\n var result = handler.apply(void 0, args);\n\n if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(result)) {\n results = results || [];\n results.push(result);\n }\n });\n }\n\n return results;\n }\n /**\n * Emit given event and return result\n * @param {string} eventName Event name to emit\n * @param {string} sourceText Source text to change\n * @returns {string}\n */\n ;\n\n _proto.emitReduce = function emitReduce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var type = args.shift();\n var eventHandlers = this.events.get(type);\n\n if (eventHandlers) {\n tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) {\n var result = handler.apply(void 0, args);\n\n if (!tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default()(result)) {\n args[0] = result;\n }\n });\n }\n\n return args[0];\n }\n /**\n * Get event type and namespace\n * @param {string} typeStr Event type name\n * @returns {{type: string, namespace: string}}\n * @private\n */\n ;\n\n _proto._getTypeInfo = function _getTypeInfo(typeStr) {\n var splited = typeStr.split('.');\n return {\n type: splited[0],\n namespace: splited[1]\n };\n }\n /**\n * Check whether event type exists or not\n * @param {string} type Event type name\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._hasEventType = function _hasEventType(type) {\n return !tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(this.TYPE[this._getTypeInfo(type).type]);\n }\n /**\n * Add event type when given event not exists\n * @param {string} type Event type name\n */\n ;\n\n _proto.addEventType = function addEventType(type) {\n if (this._hasEventType(type)) {\n throw new Error(\"There is already have event type \" + type);\n }\n\n this.TYPE.set(type);\n }\n /**\n * Remove event handler from given event type\n * @param {string} typeStr Event type name\n * @param {function} [handler] - registered event handler\n */\n ;\n\n _proto.removeEventHandler = function removeEventHandler(typeStr, handler) {\n var _this = this;\n\n var _this$_getTypeInfo = this._getTypeInfo(typeStr),\n type = _this$_getTypeInfo.type,\n namespace = _this$_getTypeInfo.namespace;\n\n if (type && handler) {\n this._removeEventHandlerWithHandler(type, handler);\n } else if (type && !namespace) {\n // dont use dot notation cuz eslint\n this.events.delete(type);\n } else if (!type && namespace) {\n this.events.forEach(function (eventHandlers, eventType) {\n _this._removeEventHandlerWithTypeInfo(eventType, namespace);\n });\n } else if (type && namespace) {\n this._removeEventHandlerWithTypeInfo(type, namespace);\n }\n }\n /**\n * Remove event handler with event handler\n * @param {string} type - event type name\n * @param {function} handler - event handler\n * @private\n */\n ;\n\n _proto._removeEventHandlerWithHandler = function _removeEventHandlerWithHandler(type, handler) {\n var eventHandlers = this.events.get(type) || [];\n var handlerIndex = eventHandlers.indexOf(handler);\n\n if (handlerIndex >= 0) {\n eventHandlers.splice(handlerIndex, 1);\n }\n }\n /**\n * Remove event handler with event type information\n * @param {string} type Event type name\n * @param {string} namespace Event namespace\n * @private\n */\n ;\n\n _proto._removeEventHandlerWithTypeInfo = function _removeEventHandlerWithTypeInfo(type, namespace) {\n var handlersToSurvive = [];\n var eventHandlers = this.events.get(type);\n\n if (!eventHandlers) {\n return;\n }\n\n eventHandlers.map(function (handler) {\n if (handler.namespace !== namespace) {\n handlersToSurvive.push(handler);\n }\n\n return null;\n });\n this.events.set(type, handlersToSurvive);\n };\n\n return EventManager;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (EventManager);\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32);\n/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22);\n/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);\n/**\n * @fileoverview Convertor have responsible to convert markdown and html\n * @author NHN FE Development Lab \n */\n\n\n\n // This regular expression refere markdownIt.\n// https://github.com/markdown-it/markdown-it/blob/master/lib/common/html_re.js\n\nvar attrName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar singleQuoted = \"'[^']*'\";\nvar doubleQuoted = '\"[^\"]*\"';\nvar attrValue = \"(?:\" + unquoted + \"|\" + singleQuoted + \"|\" + doubleQuoted + \")\";\nvar attribute = \"(?:\\\\s+\" + attrName + \"(?:\\\\s*=\\\\s*\" + attrValue + \")?)*\\\\s*\";\nvar openingTag = \"(\\\\\\\\<|<)([A-Za-z][A-Za-z0-9\\\\-]*\" + attribute + \")(\\\\/?>)\";\nvar HTML_TAG_RX = new RegExp(openingTag, 'g');\n/**\n * Class Convertor\n * @param {EventManager} em - EventManager instance\n * @ignore\n */\n\nvar Convertor = /*#__PURE__*/function () {\n function Convertor(em, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n linkAttribute = _options.linkAttribute,\n customHTMLRenderer = _options.customHTMLRenderer,\n extendedAutolinks = _options.extendedAutolinks,\n referenceDefinition = _options.referenceDefinition,\n customParser = _options.customParser;\n this.mdReader = new _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__[\"Parser\"]({\n extendedAutolinks: extendedAutolinks,\n disallowedHtmlBlockTags: ['br'],\n referenceDefinition: referenceDefinition,\n disallowDeepHeading: true,\n customParser: customParser\n });\n this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__[\"createRenderHTML\"])({\n gfm: true,\n convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__[/* getHTMLRenderConvertors */ \"a\"])(linkAttribute, customHTMLRenderer)\n });\n this.eventManager = em;\n }\n /**\n * _markdownToHtmlWithCodeHighlight\n * Convert markdown to html with Codehighlight\n * @param {string} markdown markdown text\n * @returns {string} html text\n * @private\n */\n\n\n var _proto = Convertor.prototype;\n\n _proto._markdownToHtmlWithCodeHighlight = function _markdownToHtmlWithCodeHighlight(markdown) {\n return this.renderHTML(this.mdReader.parse(markdown));\n }\n /**\n * _markdownToHtml\n * Convert markdown to html\n * @param {string} markdown markdown text\n * @param {object} env environment sandbox for markdownit\n * @returns {string} html text\n * @private\n */\n ;\n\n _proto._markdownToHtml = function _markdownToHtml(markdown) {\n markdown = markdown.replace(HTML_TAG_RX, function (match, $1, $2, $3) {\n return match[0] !== '\\\\' ? \"\" + $1 + $2 + \" data-tomark-pass \" + $3 : match;\n });\n return this.renderHTML(this.mdReader.parse(markdown));\n }\n /**\n * Remove BR's data-tomark-pass attribute text when br in code element\n * @param {string} renderedHTML Rendered HTML string from markdown editor\n * @returns {string}\n * @private\n */\n ;\n\n _proto._removeBrToMarkPassAttributeInCode = function _removeBrToMarkPassAttributeInCode(renderedHTML) {\n var wrapper = _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].createElementWith(\"
\" + renderedHTML + \"
\");\n _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"].findAll(wrapper, 'code, pre').forEach(function (codeOrPre) {\n var codeEelement = codeOrPre;\n codeEelement.innerHTML = codeEelement.innerHTML.replace(/\\sdata-tomark-pass\\s(\\/?)>/g, '$1>');\n });\n renderedHTML = wrapper.innerHTML;\n return renderedHTML;\n }\n /**\n * toHTMLWithCodeHighlight\n * Convert markdown to html with Codehighlight\n * emit convertorAfterMarkdownToHtmlConverted\n * @param {string} markdown markdown text\n * @returns {string} html text\n */\n ;\n\n _proto.toHTMLWithCodeHighlight = function toHTMLWithCodeHighlight(markdown) {\n var html = this._markdownToHtmlWithCodeHighlight(markdown);\n\n html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html);\n return html;\n }\n /**\n * toHTML\n * Convert markdown to html\n * emit convertorAfterMarkdownToHtmlConverted\n * @param {string} markdown markdown text\n * @returns {string} html text\n */\n ;\n\n _proto.toHTML = function toHTML(markdown) {\n var html = this._markdownToHtml(markdown);\n\n html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html);\n html = this._removeBrToMarkPassAttributeInCode(html);\n return html;\n };\n\n _proto.initHtmlSanitizer = function initHtmlSanitizer(sanitizer) {\n this.eventManager.listen('convertorAfterMarkdownToHtmlConverted', function (html) {\n return sanitizer(html, true);\n });\n }\n /**\n * toMarkdown\n * Convert html to markdown\n * emit convertorAfterHtmlToMarkdownConverted\n * @param {string} html html text\n * @param {object | null} toMarkOptions - toMark library options\n * @returns {string} markdown text\n */\n ;\n\n _proto.toMarkdown = function toMarkdown(html, toMarkOptions) {\n var resultArray = [];\n html = this.eventManager.emitReduce('convertorBeforeHtmlToMarkdownConverted', html);\n html = this._appendAttributeForLinkIfNeed(html);\n html = this._appendAttributeForBrIfNeed(html);\n var markdown = _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default()(html, toMarkOptions);\n markdown = this.eventManager.emitReduce('convertorAfterHtmlToMarkdownConverted', markdown);\n markdown = this._removeNewlinesBeforeAfterAndBlockElement(markdown);\n markdown.split('\\n').forEach(function (line, index) {\n var FIND_TABLE_RX = /^(
)+\\||\\|[^|]*\\|/gi;\n var FIND_CODE_RX = /`[^`]*
[^`]*`/gi;\n var FIND_BRS_BEFORE_TABLE = /^(
)+\\|/gi;\n\n if (FIND_TABLE_RX.test(line)) {\n line = line.replace(FIND_BRS_BEFORE_TABLE, function (match) {\n return match.replace(/
/gi, '
\\n');\n });\n } else if (!FIND_CODE_RX.test(line)) {\n line = line.replace(/
/gi, '
\\n');\n }\n\n resultArray[index] = line;\n });\n return resultArray.join('\\n');\n };\n\n _proto._removeNewlinesBeforeAfterAndBlockElement = function _removeNewlinesBeforeAfterAndBlockElement(markdown) {\n // Newlines('\\n\\n') are created on to-mark.\n var NEWLINES_BEFORE_BLOCK_RX = /
\\n\\n(#{1,6} .*|```|\\||(\\*+|-+|\\d+\\.) .*| *>[^\\n]+.*)/g;\n var NEWLINES_AFTER_BLOCK_RX = /(#{1,6} .*|```|\\|)\\n\\n
/g;\n markdown = markdown.replace(NEWLINES_BEFORE_BLOCK_RX, '
$1');\n markdown = markdown.replace(NEWLINES_AFTER_BLOCK_RX, '$1\\n
');\n return markdown;\n };\n\n _proto._appendAttributeForLinkIfNeed = function _appendAttributeForLinkIfNeed(html) {\n var LINK_RX = /!?\\[.*\\]\\(<\\s*a[^>]*>(.*?)<\\s*\\/\\s*a>\\)/gi;\n return html.replace(LINK_RX, function (match) {\n return match.replace(//gi;\n var FIND_DOUBLE_BR_RX = /

/gi;\n var FIND_PASSING_AND_NORMAL_BR_RX = /

(.)/gi;\n var FIRST_TWO_BRS_BEFORE_RX = /([^>]|<\\/a>|<\\/code>|<\\/span>|<\\/b>|<\\/i>|<\\/s>|]*>)/;\n var TWO_BRS_RX = /

/;\n var FIND_FIRST_TWO_BRS_RX = new RegExp(FIRST_TWO_BRS_BEFORE_RX.source + TWO_BRS_RX.source, 'g');\n var FIND_ATTRI_WITH_EMTPY_STR_RX = /
/gi;\n html = html.replace(FIND_BR_RX, '
');\n html = html.replace(FIND_DOUBLE_BR_RX, '

');\n html = html.replace(FIND_ATTRI_WITH_EMTPY_STR_RX, '
');\n html = html.replace(FIND_PASSING_AND_NORMAL_BR_RX, '

$1');\n html = html.replace(FIND_FIRST_TWO_BRS_RX, '$1

'); // Preserve
when there is only one empty line before or after a block element.\n\n html = html.replace(/(.)

(|
||
    |
      |
      )/g, '$1

      $2');\n html = html.replace(/(<\\/h[1-6]>|<\\/pre>|<\\/table>|<\\/ul>|<\\/ol>|<\\/blockquote>)
      (.)/g, '$1
      $2');\n return html;\n };\n\n return Convertor;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Convertor);\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/css.js\nvar css = __webpack_require__(3);\nvar css_default = /*#__PURE__*/__webpack_require__.n(css);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isString.js\nvar isString = __webpack_require__(9);\nvar isString_default = /*#__PURE__*/__webpack_require__.n(isString);\n\n// CONCATENATED MODULE: ./src/js/lazyRunner.js\n/**\n * @fileoverview Implements LazyRunner\n * @author NHN FE Development Lab \n */\n\n/**\n * Class LazyRunner\n * @ignore\n */\n\nvar lazyRunner_LazyRunner = /*#__PURE__*/function () {\n function LazyRunner() {\n this.globalTOID = null;\n this.lazyRunFunctions = {};\n }\n\n var _proto = LazyRunner.prototype;\n\n _proto.run = function run(fn, params, context, delay) {\n var TOID;\n\n if (isString_default()(fn)) {\n TOID = this._runRegisteredRun(fn, params, context, delay);\n } else {\n TOID = this._runSingleRun(fn, params, context, delay, this.globalTOID);\n this.globalTOID = TOID;\n }\n\n return TOID;\n };\n\n _proto.registerLazyRunFunction = function registerLazyRunFunction(name, fn, delay, context) {\n context = context || this;\n this.lazyRunFunctions[name] = {\n fn: fn,\n delay: delay,\n context: context,\n TOID: null\n };\n };\n\n _proto._runSingleRun = function _runSingleRun(fn, params, context, delay, TOID) {\n this._clearTOIDIfNeed(TOID);\n\n TOID = setTimeout(function () {\n fn.call(context, params);\n }, delay);\n return TOID;\n };\n\n _proto._runRegisteredRun = function _runRegisteredRun(lazyRunName, params, context, delay) {\n var lazyRunFunction = this.lazyRunFunctions[lazyRunName];\n var fn = lazyRunFunction.fn;\n var TOID = lazyRunFunction.TOID;\n delay = delay || lazyRunFunction.delay;\n context = context || lazyRunFunction.context;\n TOID = this._runSingleRun(fn, params, context, delay, TOID);\n lazyRunFunction.TOID = TOID;\n return TOID;\n };\n\n _proto._clearTOIDIfNeed = function _clearTOIDIfNeed(TOID) {\n if (TOID) {\n clearTimeout(TOID);\n }\n };\n\n return LazyRunner;\n}();\n\n/* harmony default export */ var lazyRunner = (lazyRunner_LazyRunner);\n// EXTERNAL MODULE: ./src/js/utils/dom.js\nvar dom = __webpack_require__(0);\n\n// EXTERNAL MODULE: ./src/js/codeBlockManager.js\nvar codeBlockManager = __webpack_require__(30);\n\n// CONCATENATED MODULE: ./src/js/preview.js\n/**\n * @fileoverview Implements preview\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * Class Preview\n * @param {HTMLElement} el - Container element for preview\n * @param {EventManager} eventManager - Event manager instance\n * @param {Convertor} convertor - Convertor instance\n * @param {boolean} isViewer - whether viewer mode or not\n * @ignore\n */\n\nvar preview_Preview = /*#__PURE__*/function () {\n function Preview(el, eventManager, convertor, isViewer) {\n this.eventManager = eventManager;\n this.convertor = convertor;\n this.el = el;\n this.isViewer = !!isViewer;\n this.delayCodeBlockTime = 500;\n\n this._initContentSection();\n\n this.lazyRunner = new lazyRunner();\n }\n /**\n * Initialize content selection\n * @private\n */\n\n\n var _proto = Preview.prototype;\n\n _proto._initContentSection = function _initContentSection() {\n this._previewContent = dom[\"a\" /* default */].createElementWith(\"
      \");\n this.el.appendChild(this._previewContent);\n };\n\n _proto.getCodeBlockElements = function getCodeBlockElements(nodeIds) {\n var contentEl = this._previewContent;\n var codeEls = [];\n var targetEls;\n\n if (nodeIds) {\n targetEls = nodeIds.map(function (id) {\n return contentEl.querySelector(\"[data-nodeid=\\\"\" + id + \"\\\"]\");\n }).filter(Boolean);\n } else {\n targetEls = [contentEl];\n }\n\n targetEls.forEach(function (targetEl) {\n codeEls.push.apply(codeEls, dom[\"a\" /* default */].findAll(targetEl, 'code[data-language]'));\n });\n return codeEls;\n };\n\n _proto.invokeCodeBlockPlugins = function invokeCodeBlockPlugins(codeBlocks) {\n codeBlocks.forEach(function (codeBlock) {\n var lang = codeBlock.getAttribute('data-language');\n var html = codeBlockManager[\"a\" /* default */].createCodeBlockHtml(lang, codeBlock.textContent);\n codeBlock.innerHTML = html;\n });\n }\n /**\n * Refresh rendering\n * @param {string} markdown Markdown text\n */\n ;\n\n _proto.refresh = function refresh(markdown) {\n if (markdown === void 0) {\n markdown = '';\n }\n\n this.render(this.convertor.toHTMLWithCodeHighlight(markdown));\n this.invokeCodeBlockPlugins(this.getCodeBlockElements());\n }\n /**\n * get html string\n * @returns {string} - html preview string\n */\n ;\n\n _proto.getHTML = function getHTML() {\n return this._previewContent.innerHTML;\n }\n /**\n * set html string\n * @param {string} html - html preview string\n */\n ;\n\n _proto.setHTML = function setHTML(html) {\n this._previewContent.innerHTML = html;\n }\n /**\n * Render HTML on preview\n * @param {string} html HTML string\n */\n ;\n\n _proto.render = function render(html) {\n var _previewContent = this._previewContent;\n html = this.eventManager.emit('previewBeforeHook', html) || html;\n dom[\"a\" /* default */].empty(_previewContent);\n _previewContent.innerHTML = html;\n }\n /**\n * Set preview height\n * @param {number} height - Height for preview container\n */\n ;\n\n _proto.setHeight = function setHeight(height) {\n css_default()(this.el, {\n height: height + \"px\"\n });\n }\n /**\n * set min height\n * @param {number} minHeight - min height\n */\n ;\n\n _proto.setMinHeight = function setMinHeight(minHeight) {\n css_default()(this.el, {\n minHeight: minHeight + \"px\"\n });\n }\n /**\n * Is Preview visible\n * @returns {boolean} result\n */\n ;\n\n _proto.isVisible = function isVisible() {\n return this.el.style.display !== 'none';\n };\n\n return Preview;\n}();\n\n/* harmony default export */ var preview = __webpack_exports__[\"a\"] = (preview_Preview);\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Set className value\n * @author NHN FE Development Lab \n */\n\n\n\nvar isArray = __webpack_require__(17);\nvar isUndefined = __webpack_require__(8);\n\n/**\n * Set className value\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {(string|string[])} cssClass - class names\n * @private\n */\nfunction setClassName(element, cssClass) {\n cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;\n\n cssClass = cssClass.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n if (isUndefined(element.className.baseVal)) {\n element.className = cssClass;\n\n return;\n }\n\n element.className.baseVal = cssClass;\n}\n\nmodule.exports = setClassName;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get event collection for specific HTML element\n * @author NHN FE Development Lab \n */\n\n\n\nvar EVENT_KEY = '_feEventKey';\n\n/**\n * Get event collection for specific HTML element\n * @param {HTMLElement} element - HTML element\n * @param {string} type - event type\n * @returns {array}\n * @private\n */\nfunction safeEvent(element, type) {\n var events = element[EVENT_KEY];\n var handlers;\n\n if (!events) {\n events = element[EVENT_KEY] = {};\n }\n\n handlers = events[type];\n if (!handlers) {\n handlers = events[type] = [];\n }\n\n return handlers;\n}\n\nmodule.exports = safeEvent;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is truthy or not.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isExisty = __webpack_require__(28);\n\n/**\n * Check whether the given variable is truthy or not.\n * If the given variable is not null or not undefined or not false, returns true.\n * (It regards 0 as true)\n * @param {*} obj - Target for checking\n * @returns {boolean} Is truthy?\n * @memberof module:type\n */\nfunction isTruthy(obj) {\n return isExisty(obj) && obj !== false;\n}\n\nmodule.exports = isTruthy;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Send hostname on DOMContentLoaded.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isUndefined = __webpack_require__(8);\nvar imagePing = __webpack_require__(49);\n\nvar ms7days = 7 * 24 * 60 * 60 * 1000;\n\n/**\n * Check if the date has passed 7 days\n * @param {number} date - milliseconds\n * @returns {boolean}\n * @private\n */\nfunction isExpired(date) {\n var now = new Date().getTime();\n\n return now - date > ms7days;\n}\n\n/**\n * Send hostname on DOMContentLoaded.\n * To prevent hostname set tui.usageStatistics to false.\n * @param {string} appName - application name\n * @param {string} trackingId - GA tracking ID\n * @ignore\n */\nfunction sendHostname(appName, trackingId) {\n var url = 'https://www.google-analytics.com/collect';\n var hostname = location.hostname;\n var hitType = 'event';\n var eventCategory = 'use';\n var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n var date = window.localStorage.getItem(applicationKeyForStorage);\n\n // skip if the flag is defined and is set to false explicitly\n if (!isUndefined(window.tui) && window.tui.usageStatistics === false) {\n return;\n }\n\n // skip if not pass seven days old\n if (date && !isExpired(date)) {\n return;\n }\n\n window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n\n setTimeout(function() {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n imagePing(url, {\n v: 1,\n t: hitType,\n tid: trackingId,\n cid: hostname,\n dp: hostname,\n dh: appName,\n el: appName,\n ec: eventCategory\n });\n }\n }, 1000);\n}\n\nmodule.exports = sendHostname;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is falsy or not.\n * @author NHN FE Development Lab \n */\n\n\n\nvar isTruthy = __webpack_require__(42);\n\n/**\n * Check whether the given variable is falsy or not.\n * If the given variable is null or undefined or false, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is falsy?\n * @memberof module:type\n */\nfunction isFalsy(obj) {\n return !isTruthy(obj);\n}\n\nmodule.exports = isFalsy;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview This module provides a Enum Constructor.\n * @author NHN FE Development Lab \n * @example\n * // node, commonjs\n * var Enum = require('tui-code-snippet/enum/enum');\n */\n\n\n\nvar isNumber = __webpack_require__(34);\nvar isArray = __webpack_require__(17);\nvar toArray = __webpack_require__(2);\nvar forEach = __webpack_require__(26);\n\n/**\n * Check whether the defineProperty() method is supported.\n * @type {boolean}\n * @ignore\n */\nvar isSupportDefinedProperty = (function() {\n try {\n Object.defineProperty({}, 'x', {});\n\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n/**\n * A unique value of a constant.\n * @type {number}\n * @ignore\n */\nvar enumValue = 0;\n\n/**\n * Make a constant-list that has unique values.\n * In modern browsers (except IE8 and lower),\n * a value defined once can not be changed.\n *\n * @param {...string|string[]} itemList Constant-list (An array of string is available)\n * @class\n *\n * @example\n * var Enum = require('tui-code-snippet/enum/enum'); // node, commonjs\n *\n * var MYENUM = new Enum('TYPE1', 'TYPE2');\n * var MYENUM2 = new Enum(['TYPE1', 'TYPE2']);\n *\n * //usage\n * if (value === MYENUM.TYPE1) {\n * ....\n * }\n *\n * //add (If a duplicate name is inputted, will be disregarded.)\n * MYENUM.set('TYPE3', 'TYPE4');\n *\n * //get name of a constant by a value\n * MYENUM.getName(MYENUM.TYPE1); // 'TYPE1'\n *\n * // In modern browsers (except IE8 and lower), a value can not be changed in constants.\n * var originalValue = MYENUM.TYPE1;\n * MYENUM.TYPE1 = 1234; // maybe TypeError\n * MYENUM.TYPE1 === originalValue; // true\n **/\nfunction Enum(itemList) {\n if (itemList) {\n this.set.apply(this, arguments);\n }\n}\n\n/**\n * Define a constants-list\n * @param {...string|string[]} itemList Constant-list (An array of string is available)\n */\nEnum.prototype.set = function(itemList) {\n var self = this;\n\n if (!isArray(itemList)) {\n itemList = toArray(arguments);\n }\n\n forEach(itemList, function itemListIteratee(item) {\n self._addItem(item);\n });\n};\n\n/**\n * Return a key of the constant.\n * @param {number} value A value of the constant.\n * @returns {string|undefined} Key of the constant.\n */\nEnum.prototype.getName = function(value) {\n var self = this;\n var foundedKey;\n\n forEach(this, function(itemValue, key) { // eslint-disable-line consistent-return\n if (self._isEnumItem(key) && value === itemValue) {\n foundedKey = key;\n\n return false;\n }\n });\n\n return foundedKey;\n};\n\n/**\n * Create a constant.\n * @private\n * @param {string} name Constant name. (It will be a key of a constant)\n */\nEnum.prototype._addItem = function(name) {\n var value;\n\n if (!this.hasOwnProperty(name)) {\n value = this._makeEnumValue();\n\n if (isSupportDefinedProperty) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: value\n });\n } else {\n this[name] = value;\n }\n }\n};\n\n/**\n * Return a unique value for assigning to a constant.\n * @private\n * @returns {number} A unique value\n */\nEnum.prototype._makeEnumValue = function() {\n var value;\n\n value = enumValue;\n enumValue += 1;\n\n return value;\n};\n\n/**\n * Return whether a constant from the given key is in instance or not.\n * @param {string} key - A constant key\n * @returns {boolean} Result\n * @private\n */\nEnum.prototype._isEnumItem = function(key) {\n return isNumber(this[key]);\n};\n\nmodule.exports = Enum;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);\n/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19);\n/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);\n/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mdPreview__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35);\n/* harmony import */ var _eventManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(36);\n/* harmony import */ var _commandManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1);\n/* harmony import */ var _convertor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(0);\n/* harmony import */ var _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(30);\n/* harmony import */ var _pluginHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(31);\n/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12);\n/* harmony import */ var _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(25);\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileoverview Implements editor preivew\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TASK_ATTR_NAME = 'data-te-task';\nvar TASK_CHECKED_CLASS_NAME = 'checked';\n/**\n * Class ToastUIEditorViewer\n * @param {object} options Option object\n * @param {HTMLElement} options.el - container element\n * @param {string} [options.initialValue] Editor's initial value\n * @param {Object} [options.events] - Events\n * @param {function} [options.events.load] - It would be emitted when editor fully load\n * @param {function} [options.events.change] - It would be emitted when content changed\n * @param {function} [options.events.stateChange] - It would be emitted when format change by cursor position\n * @param {function} [options.events.focus] - It would be emitted when editor get focus\n * @param {function} [options.events.blur] - It would be emitted when editor loose focus\n * @param {Object} [options.hooks] - Hooks\n * @param {function} [options.hooks.previewBeforeHook] - Submit preview to hook URL before preview be shown\n * @param {Array.} [options.plugins] - Array of plugins. A plugin can be either a function or an array in the form of [function, options].\n * @param {boolean} [options.useDefaultHTMLSanitizer=true] - use default htmlSanitizer\n * @param {Object} [options.extendedAutolinks] - Using extended Autolinks specified in GFM spec\n * @param {Object} [options.customConvertor] - convertor extention\n * @param {Object} [options.linkAttribute] - Attributes of anchor element that should be rel, target, contenteditable, hreflang, type\n * @param {Object} [options.customHTMLRenderer] - Object containing custom renderer functions correspond to markdown node\n * @param {boolean} [options.referenceDefinition=false] - whether use the specification of link reference definition\n * @param {function} [options.customHTMLSanitizer=null] - custom HTML sanitizer\n */\n\nvar ToastUIEditorViewer = /*#__PURE__*/function () {\n function ToastUIEditorViewer(options) {\n var _this = this;\n\n this.options = tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default()({\n useDefaultHTMLSanitizer: true,\n linkAttribute: null,\n extendedAutolinks: false,\n customConvertor: null,\n customHTMLRenderer: null,\n referenceDefinition: false,\n customHTMLSanitizer: null\n }, options);\n this.codeBlockLanguages = [];\n this.eventManager = new _eventManager__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]();\n this.commandManager = new _commandManager__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"](this);\n var linkAttribute = Object(_utils_common__WEBPACK_IMPORTED_MODULE_11__[/* sanitizeLinkAttribute */ \"c\"])(this.options.linkAttribute);\n\n var _getPluginInfo = Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* getPluginInfo */ \"a\"])(this.options.plugins),\n renderer = _getPluginInfo.renderer,\n parser = _getPluginInfo.parser,\n plugins = _getPluginInfo.plugins;\n\n var _this$options = this.options,\n customHTMLRenderer = _this$options.customHTMLRenderer,\n customHTMLSanitizer = _this$options.customHTMLSanitizer,\n extendedAutolinks = _this$options.extendedAutolinks,\n referenceDefinition = _this$options.referenceDefinition;\n var rendererOptions = {\n linkAttribute: linkAttribute,\n customHTMLRenderer: _extends({}, renderer, customHTMLRenderer),\n extendedAutolinks: extendedAutolinks,\n referenceDefinition: referenceDefinition,\n customParser: parser\n };\n\n if (this.options.customConvertor) {\n // eslint-disable-next-line new-cap\n this.convertor = new this.options.customConvertor(this.eventManager, rendererOptions);\n } else {\n this.convertor = new _convertor__WEBPACK_IMPORTED_MODULE_7__[/* default */ \"a\"](this.eventManager, rendererOptions);\n }\n\n var sanitizer = customHTMLSanitizer || (this.options.useDefaultHTMLSanitizer ? _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__[/* default */ \"a\"] : null);\n\n if (sanitizer) {\n this.convertor.initHtmlSanitizer(sanitizer);\n }\n\n if (this.options.hooks) {\n tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.hooks, function (fn, key) {\n _this.addHook(key, fn);\n });\n }\n\n if (this.options.events) {\n tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.events, function (fn, key) {\n _this.on(key, fn);\n });\n }\n\n var _this$options2 = this.options,\n el = _this$options2.el,\n initialValue = _this$options2.initialValue;\n var existingHTML = el.innerHTML;\n el.innerHTML = '';\n this.preview = new _mdPreview__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"](el, this.eventManager, this.convertor, _extends({}, rendererOptions, {\n isViewer: true\n }));\n tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this));\n\n if (plugins) {\n Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* invokePlugins */ \"b\"])(plugins, this);\n }\n\n if (initialValue) {\n this.setMarkdown(initialValue);\n } else if (existingHTML) {\n this.preview.setHTML(existingHTML);\n }\n\n this.eventManager.emit('load', this);\n }\n /**\n * Toggle task by detecting mousedown event.\n * @param {MouseEvent} ev - event\n * @private\n */\n\n\n var _proto = ToastUIEditorViewer.prototype;\n\n _proto._toggleTask = function _toggleTask(ev) {\n var style = getComputedStyle(ev.target, ':before');\n\n if (ev.target.hasAttribute(TASK_ATTR_NAME) && _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"].isInsideTaskBox(style, ev.offsetX, ev.offsetY)) {\n _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"].toggleClass(ev.target, TASK_CHECKED_CLASS_NAME);\n this.eventManager.emit('change', {\n source: 'viewer',\n data: ev\n });\n }\n }\n /**\n * Set content for preview\n * @param {string} markdown Markdown text\n */\n ;\n\n _proto.setMarkdown = function setMarkdown(markdown) {\n this.markdownValue = markdown = markdown || '';\n this.preview.refresh(this.markdownValue);\n this.eventManager.emit('setMarkdownAfter', this.markdownValue);\n }\n /**\n * Bind eventHandler to event type\n * @param {string} type Event type\n * @param {function} handler Event handler\n */\n ;\n\n _proto.on = function on(type, handler) {\n this.eventManager.listen(type, handler);\n }\n /**\n * Unbind eventHandler from event type\n * @param {string} type Event type\n */\n ;\n\n _proto.off = function off(type) {\n this.eventManager.removeEventHandler(type);\n }\n /**\n * Remove Viewer preview from document\n */\n ;\n\n _proto.remove = function remove() {\n this.eventManager.emit('removeEditor');\n tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this));\n this.preview.remove();\n this.options = null;\n this.eventManager = null;\n this.commandManager = null;\n this.convertor = null;\n this.preview = null;\n }\n /**\n * Add hook to Viewer preview's event\n * @param {string} type Event type\n * @param {function} handler Event handler\n */\n ;\n\n _proto.addHook = function addHook(type, handler) {\n this.eventManager.removeEventHandler(type);\n this.eventManager.listen(type, handler);\n }\n /**\n * Return true\n * @returns {boolean}\n */\n ;\n\n _proto.isViewer = function isViewer() {\n return true;\n }\n /**\n * Return false\n * @returns {boolean}\n */\n ;\n\n _proto.isMarkdownMode = function isMarkdownMode() {\n return false;\n }\n /**\n * Return false\n * @returns {boolean}\n */\n ;\n\n _proto.isWysiwygMode = function isWysiwygMode() {\n return false;\n }\n /**\n * Set code block languages\n * @param {Array} languages - code lauguage list\n */\n ;\n\n _proto.setCodeBlockLanguages = function setCodeBlockLanguages(languages) {\n var _this2 = this;\n\n if (languages === void 0) {\n languages = [];\n }\n\n languages.forEach(function (lang) {\n if (_this2.codeBlockLanguages.indexOf(lang) < 0) {\n _this2.codeBlockLanguages.push(lang);\n }\n });\n };\n\n return ToastUIEditorViewer;\n}();\n/**\n * Check whether is viewer (using in plugins)\n * @type {boolean}\n * @ignore\n */\n\n\nToastUIEditorViewer.isViewer = true;\n/**\n * domUtil instance\n * @type {DomUtil}\n * @ignore\n */\n\nToastUIEditorViewer.domUtils = _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"];\n/**\n * CodeBlockManager instance using in plugins\n * @type {CodeBlockManager}\n * @ignore\n */\n\nToastUIEditorViewer.codeBlockManager = _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__[/* default */ \"a\"];\n/**\n * WwCodeBlockManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\nToastUIEditorViewer.WwCodeBlockManager = null;\n/**\n * WwTableManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\nToastUIEditorViewer.WwTableManager = null;\n/**\n * WwTableManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\nToastUIEditorViewer.WwTableSelectionManager = null;\n/* harmony default export */ __webpack_exports__[\"a\"] = (ToastUIEditorViewer);\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed since the last time the debouced function was invoked.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * @module tricks\n */\n\n/**\n * Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed\n * since the last time the debouced function was invoked.\n * @param {function} fn The function to debounce.\n * @param {number} [delay=0] The number of milliseconds to delay\n * @returns {function} debounced function.\n * @memberof module:tricks\n * @example\n * var debounce = require('tui-code-snippet/tricks/debounce'); // node, commonjs\n *\n * function someMethodToInvokeDebounced() {}\n *\n * var debounced = debounce(someMethodToInvokeDebounced, 300);\n *\n * // invoke repeatedly\n * debounced();\n * debounced();\n * debounced();\n * debounced();\n * debounced();\n * debounced(); // last invoke of debounced()\n *\n * // invoke someMethodToInvokeDebounced() after 300 milliseconds.\n */\nfunction debounce(fn, delay) {\n var timer, args;\n\n /* istanbul ignore next */\n delay = delay || 0;\n\n function debounced() { // eslint-disable-line require-jsdoc\n args = Array.prototype.slice.call(arguments);\n\n window.clearTimeout(timer);\n timer = window.setTimeout(function() {\n fn.apply(null, args);\n }, delay);\n }\n\n return debounced;\n}\n\nmodule.exports = debounce;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is null or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is null or not.\n * If the given variable(arguments[0]) is null, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is null?\n * @memberof module:type\n */\nfunction isNull(obj) {\n return obj === null;\n}\n\nmodule.exports = isNull;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Request image ping.\n * @author NHN FE Development Lab \n */\n\n\n\nvar forEachOwnProperties = __webpack_require__(10);\n\n/**\n * @module request\n */\n\n/**\n * Request image ping.\n * @param {String} url url for ping request\n * @param {Object} trackingInfo infos for make query string\n * @returns {HTMLElement}\n * @memberof module:request\n * @example\n * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs\n *\n * imagePing('https://www.google-analytics.com/collect', {\n * v: 1,\n * t: 'event',\n * tid: 'trackingid',\n * cid: 'cid',\n * dp: 'dp',\n * dh: 'dh'\n * });\n */\nfunction imagePing(url, trackingInfo) {\n var trackingElement = document.createElement('img');\n var queryString = '';\n forEachOwnProperties(trackingInfo, function(value, key) {\n queryString += '&' + key + '=' + value;\n });\n queryString = queryString.substring(1);\n\n trackingElement.src = url + '?' + queryString;\n\n trackingElement.style.display = 'none';\n document.body.appendChild(trackingElement);\n document.body.removeChild(trackingElement);\n\n return trackingElement;\n}\n\nmodule.exports = imagePing;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 53 */,\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is an object or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is an object or not.\n * If the given variable is an object, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is object?\n * @memberof module:type\n */\nfunction isObject(obj) {\n return obj === Object(obj);\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(e,t){\"use strict\";function n(e,t,n){this.root=this.currentNode=e,this.nodeType=t,this.filter=n||fe}function o(e,t){for(var n=e.length;n--;)if(!t(e[n]))return!1;return!0}function i(e){return e.nodeType===M&&!!pe[e.nodeName]}function r(e){switch(e.nodeType){case H:return me;case M:case z:if(de&&Ne.has(e))return Ne.get(e);break;default:return ge}var t;return t=o(e.childNodes,a)?ue.test(e.nodeName)?me:ve:Ce,de&&Ne.set(e,t),t}function a(e){return r(e)===me}function s(e){return r(e)===ve}function d(e){return r(e)===Ce}function l(e,t){var o=new n(t,q,s);return o.currentNode=e,o}function c(e,t){return e=l(e,t).previousNode(),e!==t?e:null}function h(e,t){return e=l(e,t).nextNode(),e!==t?e:null}function f(e){return!e.textContent&&!e.querySelector(\"IMG\")}function u(e,t){return!i(e)&&e.nodeType===t.nodeType&&e.nodeName===t.nodeName&&\"A\"!==e.nodeName&&e.className===t.className&&(!e.style&&!t.style||e.style.cssText===t.style.cssText)}function p(e,t,n){if(e.nodeName!==t)return!1;for(var o in n)if(e.getAttribute(o)!==n[o])return!1;return!0}function g(e,t,n,o){for(;e&&e!==t;){if(p(e,n,o))return e;e=e.parentNode}return null}function m(e,t,n){for(;e&&e!==t;){if(n.test(e.nodeName))return e;e=e.parentNode}return null}function v(e,t){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}function C(e,t,n){var o,i,r,a,s,d=\"\";return e&&e!==t&&(d=C(e.parentNode,t,n),e.nodeType===M&&(d+=(d?\">\":\"\")+e.nodeName,(o=e.id)&&(d+=\"#\"+o),(i=e.className.trim())&&(r=i.split(/\\s\\s*/),r.sort(),d+=\".\",d+=r.join(\".\")),(a=e.dir)&&(d+=\"[dir=\"+a+\"]\"),r&&(s=n.classNames,ce.call(r,s.highlight)>-1&&(d+=\"[backgroundColor=\"+e.style.backgroundColor.replace(/ /g,\"\")+\"]\"),ce.call(r,s.colour)>-1&&(d+=\"[color=\"+e.style.color.replace(/ /g,\"\")+\"]\"),ce.call(r,s.fontFamily)>-1&&(d+=\"[fontFamily=\"+e.style.fontFamily.replace(/ /g,\"\")+\"]\"),ce.call(r,s.fontSize)>-1&&(d+=\"[fontSize=\"+e.style.fontSize+\"]\")))),d}function N(e){var t=e.nodeType;return t===M||t===z?e.childNodes.length:e.length||0}function _(e){var t=e.parentNode;return t&&t.removeChild(e),e}function S(e,t){var n=e.parentNode;n&&n.replaceChild(t,e)}function y(e){for(var t=e.ownerDocument.createDocumentFragment(),n=e.childNodes,o=n?n.length:0;o--;)t.appendChild(e.firstChild);return t}function T(e,n,o,i){var r,a,s,d=e.createElement(n);if(o instanceof Array&&(i=o,o=null),o)for(r in o)o[r]!==t&&d.setAttribute(r,o[r]);if(i)for(a=0,s=i.length;as?t.startOffset-=1:t.startOffset===s&&(t.startContainer=o,t.startOffset=N(o))),t.endContainer===e&&(t.endOffset>s?t.endOffset-=1:t.endOffset===s&&(t.endContainer=o,t.endOffset=N(o))),_(n),n.nodeType===H?o.appendData(n.data):d.push(y(n));else if(n.nodeType===M){for(i=d.length;i--;)n.appendChild(d.pop());x(n,t)}}function A(e,t){if(e.nodeType===H&&(e=e.parentNode),e.nodeType===M){var n={startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset};x(e,n),t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset)}}function L(e){var t=e.nodeName;return\"TD\"===t||\"TH\"===t||\"TR\"===t||\"TBODY\"===t||\"THEAD\"===t}function B(e,t,n,o){var i,r,a,s=t;if(!L(e)||!L(t)){for(;(i=s.parentNode)&&i!==o&&i.nodeType===M&&1===i.childNodes.length;)s=i;_(s),a=e.childNodes.length,r=e.lastChild,r&&\"BR\"===r.nodeName&&(e.removeChild(r),a-=1),e.appendChild(y(t)),n.setStart(e,a),n.collapse(!0),A(e,n),J&&(r=e.lastChild)&&\"BR\"===r.nodeName&&e.removeChild(r)}}function O(e,t){var n,o,i=e.previousSibling,r=e.firstChild,a=e.ownerDocument,s=\"LI\"===e.nodeName;if((!s||r&&/^[OU]L$/.test(r.nodeName))&&!L(e))if(i&&u(i,e)&&i.isContentEditable&&e.isContentEditable){if(!d(i)){if(!s)return;o=T(a,\"DIV\"),o.appendChild(y(i)),i.appendChild(o)}_(e),n=!d(e),i.appendChild(y(e)),n&&b(i,t),r&&O(r,t)}else s&&(i=T(a,\"DIV\"),e.insertBefore(i,r),E(i,t))}function R(e){this.isShiftDown=e.shiftKey}function D(e,t,n){var o,i;if(e||(e={}),t)for(o in t)!n&&o in e||(i=t[o],e[o]=i&&i.constructor===Object?D(e[o],i,n):i);return e}function P(e,t){e.nodeType===W&&(e=e.body);var n,o=e.ownerDocument,i=o.defaultView;this._win=i,this._doc=o,this._root=e,this._events={},this._isFocused=!1,this._lastSelection=null,ae&&this.addEventListener(\"beforedeactivate\",this.getSelection),this._hasZWS=!1,this._lastAnchorNode=null,this._lastFocusNode=null,this._path=\"\",this._willUpdatePath=!1,\"onselectionchange\"in o?this.addEventListener(\"selectionchange\",this._updatePathOnEvent):(this.addEventListener(\"keyup\",this._updatePathOnEvent),this.addEventListener(\"mouseup\",this._updatePathOnEvent)),this._undoIndex=-1,this._undoStack=[],this._undoStackLength=0,this._isInUndoState=!1,this._ignoreChange=!1,this._ignoreAllChanges=!1,se?(n=new MutationObserver(this._docWasChanged.bind(this)),n.observe(e,{childList:!0,attributes:!0,characterData:!0,subtree:!0}),this._mutation=n):this.addEventListener(\"keyup\",this._keyUpDetectChange),this._restoreSelection=!1,this.addEventListener(\"blur\",U),this.addEventListener(\"mousedown\",I),this.addEventListener(\"touchstart\",I),this.addEventListener(\"focus\",w),this._awaitingPaste=!1,this.addEventListener(X?\"beforecut\":\"cut\",nt),this.addEventListener(\"copy\",ot),this.addEventListener(\"keydown\",R),this.addEventListener(\"keyup\",R),this.addEventListener(X?\"beforepaste\":\"paste\",it),this.addEventListener(\"drop\",rt),this.addEventListener(J?\"keypress\":\"keydown\",Ie),this._keyHandlers=Object.create(He),this.setConfig(t),X&&(i.Text.prototype.splitText=function(e){var t=this.ownerDocument.createTextNode(this.data.slice(e)),n=this.nextSibling,o=this.parentNode,i=this.length-e;return n?o.insertBefore(t,n):o.appendChild(t),i&&this.deleteData(e,i),t}),e.setAttribute(\"contenteditable\",\"true\");try{o.execCommand(\"enableObjectResizing\",!1,\"false\"),o.execCommand(\"enableInlineTableEditing\",!1,\"false\")}catch(e){}e.__squire__=this,this.setHTML(\"\")}function U(){this._restoreSelection=!0}function I(){this._restoreSelection=!1}function w(){this._restoreSelection&&this.setSelection(this._lastSelection)}function F(e,t,n){var o,i;for(o=t.firstChild;o;o=i){if(i=o.nextSibling,a(o)){if(o.nodeType===H||\"BR\"===o.nodeName||\"IMG\"===o.nodeName){n.appendChild(o);continue}}else if(s(o)){n.appendChild(e.createDefaultBlock([F(e,o,e._doc.createDocumentFragment())]));continue}F(e,o,n)}return n}var M=1,H=3,W=9,z=11,q=1,K=\"​\",G=e.defaultView,Z=navigator.userAgent,j=/Android/.test(Z),Q=/iP(?:ad|hone|od)/.test(Z),$=/Mac OS X/.test(Z),V=/Windows NT/.test(Z),Y=/Gecko\\//.test(Z),X=/Trident\\/[456]\\./.test(Z),J=!!G.opera,ee=/Edge\\//.test(Z),te=!ee&&/WebKit\\//.test(Z),ne=/Trident\\/[4567]\\./.test(Z),oe=$?\"meta-\":\"ctrl-\",ie=X||J,re=X||te,ae=X,se=\"undefined\"!=typeof MutationObserver,de=\"undefined\"!=typeof WeakMap,le=/[^ \\t\\r\\n]/,ce=Array.prototype.indexOf;Object.create||(Object.create=function(e){var t=function(){};return t.prototype=e,new t});var he={1:1,2:2,3:4,8:128,9:256,11:1024},fe=function(){return!0};n.prototype.nextNode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){for(e=t.firstChild;!e&&t&&t!==n;)(e=t.nextSibling)||(t=t.parentNode);if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}},n.prototype.previousNode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){if(t===n)return null;if(e=t.previousSibling)for(;t=e.lastChild;)e=t;else e=t.parentNode;if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}},n.prototype.previousPONode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){for(e=t.lastChild;!e&&t&&t!==n;)(e=t.previousSibling)||(t=t.parentNode);if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}};var ue=/^(?:#text|A(?:BBR|CRONYM)?|B(?:R|D[IO])?|C(?:ITE|ODE)|D(?:ATA|EL|FN)|EM|FONT|I(?:FRAME|MG|NPUT|NS)?|KBD|Q|R(?:P|T|UBY)|S(?:AMP|MALL|PAN|TR(?:IKE|ONG)|U[BP])?|TIME|U|VAR|WBR)$/,pe={BR:1,HR:1,IFRAME:1,IMG:1,INPUT:1},ge=0,me=1,ve=2,Ce=3,Ne=de?new WeakMap:null,_e=function(e,t){for(var n=e.childNodes;t&&e.nodeType===M;)e=n[t-1],n=e.childNodes,t=n.length;return e},Se=function(e,t){if(e.nodeType===M){var n=e.childNodes;if(t-1,r=e.compareBoundaryPoints(1,o)<1;return!i&&!r}var a=e.compareBoundaryPoints(0,o)<1,s=e.compareBoundaryPoints(2,o)>-1;return a&&s},xe=function(e){for(var t,n=e.startContainer,o=e.startOffset,r=e.endContainer,a=e.endOffset,s=!0;n.nodeType!==H&&(t=n.childNodes[o])&&!i(t);)n=t,o=0;if(a)for(;r.nodeType!==H;){if(!(t=r.childNodes[a-1])||i(t)){if(s&&t&&\"BR\"===t.nodeName){a-=1,s=!1;continue}break}r=t,a=N(r)}else for(;r.nodeType!==H&&(t=r.firstChild)&&!i(t);)r=t;e.collapsed?(e.setStart(r,a),e.setEnd(n,o)):(e.setStart(n,o),e.setEnd(r,a))},Ae=function(e,t,n,o){var i,r=e.startContainer,a=e.startOffset,s=e.endContainer,d=e.endOffset,l=!0;for(t||(t=e.commonAncestorContainer),n||(n=t);!a&&r!==t&&r!==o;)i=r.parentNode,a=ce.call(i.childNodes,r),r=i;for(;;){if(l&&s.nodeType!==H&&s.childNodes[d]&&\"BR\"===s.childNodes[d].nodeName&&(d+=1,l=!1),s===n||s===o||d!==N(s))break;i=s.parentNode,d=ce.call(i.childNodes,s)+1,s=i}e.setStart(r,a),e.setEnd(s,d)},Le=function(e,t){var n,o=e.startContainer;return a(o)?n=c(o,t):o!==t&&s(o)?n=o:(n=_e(o,e.startOffset),n=h(n,t)),n&&ke(e,n,!0)?n:null},Be=function(e,t){var n,o,i=e.endContainer;if(a(i))n=c(i,t);else if(i!==t&&s(i))n=i;else{if(!(n=Se(i,e.endOffset))||!v(t,n))for(n=t;o=n.lastChild;)n=o;n=c(n,t)}return n&&ke(e,n,!0)?n:null},Oe=new n(null,4|q,function(e){return e.nodeType===H?le.test(e.data):\"IMG\"===e.nodeName}),Re=function(e,t){var n,o=e.startContainer,i=e.startOffset;if(Oe.root=null,o.nodeType===H){if(i)return!1;n=o}else if(n=Se(o,i),n&&!v(t,n)&&(n=null),!n&&(n=_e(o,i),n.nodeType===H&&n.length))return!1;return Oe.currentNode=n,Oe.root=Le(e,t),!Oe.previousNode()},De=function(e,t){var n,o=e.endContainer,i=e.endOffset;if(Oe.root=null,o.nodeType===H){if((n=o.data.length)&&i-1||!Y&&ce.call(i,\"text/plain\")>-1&&ce.call(i,\"text/rtf\")<0))return e.preventDefault(),void(!d&&(r=a.getData(\"text/html\"))?this.insertHTML(r,!0):((r=a.getData(\"text/plain\"))||(r=a.getData(\"text/uri-list\")))&&this.insertPlainText(r,!0));this._awaitingPaste=!0;var u=this._doc.body,p=this.getSelection(),g=p.startContainer,m=p.startOffset,v=p.endContainer,C=p.endOffset,N=this.createElement(\"DIV\",{contenteditable:\"true\",style:\"position:fixed; overflow:hidden; top:0; right:100%; width:1px; height:1px;\"});u.appendChild(N),p.selectNodeContents(N),this.setSelection(p),setTimeout(function(){try{f._awaitingPaste=!1;for(var e,t,n=\"\",o=N;N=o;)o=N.nextSibling,_(N),e=N.firstChild,e&&e===N.lastChild&&\"DIV\"===e.nodeName&&(N=e),n+=N.innerHTML;t=f.createRange(g,m,v,C),f.setSelection(t),n&&f.insertHTML(n,!0)}catch(e){f.didError(e)}},0)},rt=function(e){for(var t=e.dataTransfer.types,n=t.length,o=!1,i=!1;n--;)switch(t[n]){case\"text/plain\":o=!0;break;case\"text/html\":i=!0;break;default:return}(i||o)&&this.saveUndoState()},at=P.prototype,st=function(e,t,n){var o=n._doc,i=e?DOMPurify.sanitize(e,{ALLOW_UNKNOWN_PROTOCOLS:!0,WHOLE_DOCUMENT:!1,RETURN_DOM:!0,RETURN_DOM_FRAGMENT:!0}):null;return i?o.importNode(i,!0):o.createDocumentFragment()};at.setConfig=function(e){return e=D({blockTag:\"DIV\",blockAttributes:null,tagAttributes:{blockquote:null,ul:null,ol:null,li:null,a:null},classNames:{colour:\"colour\",fontFamily:\"font\",fontSize:\"size\",highlight:\"highlight\"},leafNodeNames:pe,undo:{documentSizeThreshold:-1,undoLimit:-1},isInsertedHTMLSanitized:!0,isSetHTMLSanitized:!0,sanitizeToDOMFragment:\"undefined\"!=typeof DOMPurify&&DOMPurify.isSupported?st:null,willCutCopy:null,allowedBlocks:[]},e,!0),e.blockTag=e.blockTag.toUpperCase(),this._config=e,this},at.createElement=function(e,t,n){return T(this._doc,e,t,n)},at.createDefaultBlock=function(e){var t=this._config;return E(this.createElement(t.blockTag,t.blockAttributes,e),this._root)},at.didError=function(e){console.log(e)},at.getDocument=function(){return this._doc},at.getRoot=function(){return this._root},at.modifyDocument=function(e){var t=this._mutation;t&&(t.takeRecords().length&&this._docWasChanged(),t.disconnect()),this._ignoreAllChanges=!0,e(),this._ignoreAllChanges=!1,t&&(t.observe(this._root,{childList:!0,attributes:!0,characterData:!0,subtree:!0}),this._ignoreChange=!1)};var dt={pathChange:1,select:1,input:1,undoStateChange:1};at.fireEvent=function(e,t){var n,o,i,r=this._events[e];if(/^(?:focus|blur)/.test(e))if(n=this._root===this._doc.activeElement,\"focus\"===e){if(!n||this._isFocused)return this;this._isFocused=!0}else{if(n||!this._isFocused)return this;this._isFocused=!1}if(r)for(t||(t={}),t.type!==e&&(t.type=e),r=r.slice(),o=r.length;o--;){i=r[o];try{i.handleEvent?i.handleEvent(t):i.call(this,t)}catch(t){t.details=\"Squire: fireEvent error. Event type: \"+e,this.didError(t)}}return this},at.destroy=function(){var e,t=this._events;for(e in t)this.removeEventListener(e);this._mutation&&this._mutation.disconnect(),delete this._root.__squire__,this._undoIndex=-1,this._undoStack=[],this._undoStackLength=0},at.handleEvent=function(e){this.fireEvent(e.type,e)},at.addEventListener=function(e,t){var n=this._events[e],o=this._root;return t?(n||(n=this._events[e]=[],dt[e]||(\"selectionchange\"===e&&(o=this._doc),o.addEventListener(e,this,!0))),n.push(t),this):(this.didError({name:\"Squire: addEventListener with null or undefined fn\",message:\"Event type: \"+e}),this)},at.removeEventListener=function(e,t){var n,o=this._events[e],i=this._root;if(o){if(t)for(n=o.length;n--;)o[n]===t&&o.splice(n,1);else o.length=0;o.length||(delete this._events[e],dt[e]||(\"selectionchange\"===e&&(i=this._doc),i.removeEventListener(e,this,!0)))}return this},at.createRange=function(e,t,n,o){if(e instanceof this._win.Range)return e.cloneRange();var i=this._doc.createRange();return i.setStart(e,t),n?i.setEnd(n,o):i.setEnd(e,t),i},at.getCursorPosition=function(e){if(!e&&!(e=this.getSelection())||!e.getBoundingClientRect)return null;var t,n,o=e.getBoundingClientRect();return o&&!o.top&&(this._ignoreChange=!0,t=this._doc.createElement(\"SPAN\"),t.textContent=K,ye(e,t),o=t.getBoundingClientRect(),n=t.parentNode,n.removeChild(t),A(n,e),this._ignoreChange=!1),o},at._moveCursorTo=function(e){var t=this._root,n=this.createRange(t,e?0:t.childNodes.length);return xe(n),this.setSelection(n),this},at.moveCursorToStart=function(){return this._moveCursorTo(!0)},at.moveCursorToEnd=function(){return this._moveCursorTo(!1)};var lt=function(e){return e._win.getSelection()||null};at.setSelection=function(e){if(e)if(this._lastSelection=e,this._isFocused)if(j&&!this._restoreSelection)U.call(this),this.blur(),this.focus();else{Q&&this._win.focus();var t=lt(this);t&&(t.removeAllRanges(),t.addRange(e))}else U.call(this);return this},at.getSelection=function(){var e,t,n,o,r=lt(this),a=this._root;return this._isFocused&&r&&r.rangeCount&&(e=r.getRangeAt(0).cloneRange(),t=e.startContainer,n=e.endContainer,t&&i(t)&&e.setStartBefore(t),n&&i(n)&&e.setEndBefore(n)),e&&v(a,e.commonAncestorContainer)?this._lastSelection=e:(e=this._lastSelection,o=e.commonAncestorContainer,v(o.ownerDocument,o)||(e=null)),e||(e=this.createRange(a.firstChild,0)),e},at.getSelectedText=function(){var e=this.getSelection();if(!e||e.collapsed)return\"\";var t,o=new n(e.commonAncestorContainer,4|q,function(t){return ke(e,t,!0)}),i=e.startContainer,r=e.endContainer,s=o.currentNode=i,d=\"\",l=!1;for(o.filter(s)||(s=o.nextNode());s;)s.nodeType===H?(t=s.data)&&/\\S/.test(t)&&(s===r&&(t=t.slice(0,e.endOffset)),s===i&&(t=t.slice(e.startOffset)),d+=t,l=!0):(\"BR\"===s.nodeName||l&&!a(s))&&(d+=\"\\n\",l=!1),s=o.nextNode();return d},at.getPath=function(){return this._path};var ct=function(e,t){for(var o,i,r,s=new n(e,4);i=s.nextNode();)for(;(r=i.data.indexOf(K))>-1&&(!t||i.parentNode!==t);){if(1===i.length){do{o=i.parentNode,o.removeChild(i),i=o,s.currentNode=o}while(a(i)&&!N(i));break}i.deleteData(r,1)}};at._didAddZWS=function(){this._hasZWS=!0},at._removeZWS=function(){this._hasZWS&&(ct(this._root),this._hasZWS=!1)},at._updatePath=function(e,t){if(e){var n,o=e.startContainer,i=e.endContainer\n;(t||o!==this._lastAnchorNode||i!==this._lastFocusNode)&&(this._lastAnchorNode=o,this._lastFocusNode=i,n=o&&i?o===i?C(i,this._root,this._config):\"(selection)\":\"\",this._path!==n&&(this._path=n,this.fireEvent(\"pathChange\",{path:n}))),this.fireEvent(e.collapsed?\"cursor\":\"select\",{range:e})}},at._updatePathOnEvent=function(e){var t=this;t._isFocused&&!t._willUpdatePath&&(t._willUpdatePath=!0,setTimeout(function(){t._willUpdatePath=!1,t._updatePath(t.getSelection())},0))},at.focus=function(){if(ne){try{this._root.setActive()}catch(e){}this.fireEvent(\"focus\")}else this._root.focus();return this},at.blur=function(){return this._root.blur(),ne&&this.fireEvent(\"blur\"),this};var ht=\"squire-selection-end\";at._saveRangeToBookmark=function(e){var t,n=this.createElement(\"INPUT\",{id:\"squire-selection-start\",type:\"hidden\"}),o=this.createElement(\"INPUT\",{id:ht,type:\"hidden\"});ye(e,n),e.collapse(!1),ye(e,o),2&n.compareDocumentPosition(o)&&(n.id=ht,o.id=\"squire-selection-start\",t=n,n=o,o=t),e.setStartAfter(n),e.setEndBefore(o)},at._getRangeAndRemoveBookmark=function(e){var t=this._root,n=t.querySelector(\"#squire-selection-start\"),o=t.querySelector(\"#\"+ht);if(n&&o){var i=n.parentNode,r=o.parentNode,a=ce.call(i.childNodes,n),s=ce.call(r.childNodes,o);i===r&&(s-=1),_(n),_(o),e||(e=this._doc.createRange()),e.setStart(i,a),e.setEnd(r,s),A(i,e),i!==r&&A(r,e),e.collapsed&&(i=e.startContainer,i.nodeType===H&&(r=i.childNodes[e.startOffset],r&&r.nodeType===H||(r=i.childNodes[e.startOffset-1]),r&&r.nodeType===H&&(e.setStart(r,0),e.collapse(!0))))}return e||null},at._keyUpDetectChange=function(e){var t=e.keyCode;e.ctrlKey||e.metaKey||e.altKey||!(t<16||t>20)||!(t<33||t>45)||this._docWasChanged()},at._docWasChanged=function(){if(de&&(Ne=new WeakMap),!this._ignoreAllChanges){if(se&&this._ignoreChange)return void(this._ignoreChange=!1);this._isInUndoState&&(this._isInUndoState=!1,this.fireEvent(\"undoStateChange\",{canUndo:!0,canRedo:!1})),this.fireEvent(\"input\")}},at._recordUndoState=function(e,t){if(!this._isInUndoState||t){var n,o=this._undoIndex,i=this._undoStack,r=this._config.undo,a=r.documentSizeThreshold,s=r.undoLimit;t||(o+=1),o-1&&2*n.length>a&&s>-1&&o>s&&(i.splice(0,o-s),o=s,this._undoStackLength=s),i[o]=n,this._undoIndex=o,this._undoStackLength+=1,this._isInUndoState=!0}},at.saveUndoState=function(e){return e===t&&(e=this.getSelection()),this._recordUndoState(e,this._isInUndoState),this._getRangeAndRemoveBookmark(e),this},at.undo=function(){if(0!==this._undoIndex||!this._isInUndoState){this._recordUndoState(this.getSelection(),!1),this._undoIndex-=1,this._setHTML(this._undoStack[this._undoIndex]);var e=this._getRangeAndRemoveBookmark();e&&this.setSelection(e),this._isInUndoState=!0,this.fireEvent(\"undoStateChange\",{canUndo:0!==this._undoIndex,canRedo:!0}),this.fireEvent(\"input\")}return this},at.redo=function(){var e=this._undoIndex,t=this._undoStackLength;if(e+1c&&h.splitText(c),h===s&&l&&(h=h.splitText(l),d===s&&(d=h,c-=l),s=h,l=0),i=this.createElement(e,t),S(h,i),i.appendChild(h))}while(r.nextNode());d.nodeType!==H&&(h.nodeType===H?(d=h,c=h.length):(d=h.parentNode,c=1)),o=this.createRange(s,l,d,c)}return o},at._removeFormat=function(e,t,n,o){this._saveRangeToBookmark(n);var i,r=this._doc;n.collapsed&&(re?(i=r.createTextNode(K),this._didAddZWS()):i=r.createTextNode(\"\"),ye(n,i));for(var s=n.commonAncestorContainer;a(s);)s=s.parentNode;var d=n.startContainer,l=n.startOffset,c=n.endContainer,h=n.endOffset,f=[],u=function(e,t){if(!ke(n,e,!1)){var o,i,r=e.nodeType===H;if(!ke(n,e,!0))return void(\"INPUT\"===e.nodeName||r&&!e.data||f.push([t,e]));if(r)e===c&&h!==e.length&&f.push([t,e.splitText(h)]),e===d&&l&&(e.splitText(l),f.push([t,e]));else for(o=e.firstChild;o;o=i)i=o.nextSibling,u(o,t)}},g=Array.prototype.filter.call(s.getElementsByTagName(e),function(o){return ke(n,o,!0)&&p(o,e,t)});return o||g.forEach(function(e){u(e,e)}),f.forEach(function(e){var t=e[0].cloneNode(!1),n=e[1];S(n,t),t.appendChild(n)}),g.forEach(function(e){S(e,y(e))}),this._getRangeAndRemoveBookmark(n),i&&n.collapse(!1),A(s,n),n},at.changeFormat=function(e,t,n,o){return n||(n=this.getSelection())?(this.saveUndoState(n),t&&(n=this._removeFormat(t.tag.toUpperCase(),t.attributes||{},n,o)),e&&(n=this._addFormat(e.tag.toUpperCase(),e.attributes||{},n)),this.setSelection(n),this._updatePath(n,!0),se||this._docWasChanged(),this):this};var ft={DT:\"DD\",DD:\"DT\",LI:\"LI\",PRE:\"PRE\"},ut=function(e,t,n,o){var i=ft[t.nodeName],r=null,a=k(n,o,t.parentNode,e._root),s=e._config;return i||(i=s.blockTag,r=s.blockAttributes),p(a,i,r)||(t=T(a.ownerDocument,i,r),a.dir&&(t.dir=a.dir),S(a,t),t.appendChild(y(a)),a=t),a};at.forEachBlock=function(e,t,n){if(!n&&!(n=this.getSelection()))return this;t&&this.saveUndoState(n);var o=this._root,i=Le(n,o),r=Be(n,o);if(i&&r)do{if(e(i)||i===r)break}while(i=h(i,o));return t&&(this.setSelection(n),this._updatePath(n,!0),se||this._docWasChanged()),this},at.modifyBlocks=function(e,t){if(!t&&!(t=this.getSelection()))return this;this._recordUndoState(t,this._isInUndoState);var n,o=this._root;return Pe(t,o),Ae(t,o,o,o),n=Te(t,o,o),ye(t,e.call(this,n)),t.endOffset]+|\\([^\\s()<>]+\\))+(?:\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))|([\\w\\-.%+]+@(?:[\\w\\-]+\\.)+[A-Z]{2,}\\b)(?:\\?[^&?\\s]+=[^&?\\s]+(?:&[^&?\\s]+=[^&?\\s]+)*)?/i;var yt=function(e,t,o){var i,r,a,s,d,l,c,h=e.ownerDocument,f=new n(e,4,function(e){return!g(e,t,\"A\")}),u=o.linkRegExp,p=o._config.tagAttributes.a;if(u)for(;i=f.nextNode();)for(r=i.data,a=i.parentNode;s=u.exec(r);)d=s.index,l=d+s[0].length,d&&(c=h.createTextNode(r.slice(0,d)),a.insertBefore(c,i)),c=o.createElement(\"A\",D({href:s[1]?/^(?:ht|f)tps?:/i.test(s[1])?s[1]:\"http://\"+s[1]:\"mailto:\"+s[0]},p,!1)),c.textContent=r.slice(d,l),a.insertBefore(c,i),i.data=r=r.slice(l)};at.insertHTML=function(e,t){var n,o,i,r,a,s,d,l=this._config,c=l.isInsertedHTMLSanitized?l.sanitizeToDOMFragment:null,f=this.getSelection(),u=this._doc;\"function\"==typeof c?r=c(e,t,this):(t&&(n=e.indexOf(\"\\x3c!--StartFragment--\\x3e\"),o=e.lastIndexOf(\"\\x3c!--EndFragment--\\x3e\"),n>-1&&o>-1&&(e=e.slice(n+20,o))),/<\\/td>((?!<\\/tr>)[\\s\\S])*$/i.test(e)&&(e=\"
\"+e+\"\"),/<\\/tr>((?!<\\/table>)[\\s\\S])*$/i.test(e)&&(e=\"
\"+e+\"
\"),i=this.createElement(\"DIV\"),i.innerHTML=e,r=u.createDocumentFragment(),r.appendChild(y(i))),this.saveUndoState(f);try{for(a=this._root,s=r,d={fragment:r,preventDefault:function(){this.defaultPrevented=!0},defaultPrevented:!1},yt(r,r,this),Ve(r,l),et(r,a,!1),Ye(r),r.normalize();s=h(s,r);)E(s,a);t&&this.fireEvent(\"willPaste\",d),d.defaultPrevented||(be(f,d.fragment,a),se||this._docWasChanged(),f.collapse(!1),this._ensureBottomLine()),this.setSelection(f),this._updatePath(f,!0),t&&this.focus()}catch(e){this.didError(e)}return this};var Tt=function(e){return e.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\").split('\"').join(\""\")};at.insertPlainText=function(e,t){var n=this.getSelection();if(n.collapsed&&g(n.startContainer,this._root,\"PRE\")){var o,i,r=n.startContainer,a=n.startOffset;return r&&r.nodeType===H||(o=this._doc.createTextNode(\"\"),r.insertBefore(o,r.childNodes[a]),r=o,a=0),i={text:e,preventDefault:function(){this.defaultPrevented=!0},defaultPrevented:!1},t&&this.fireEvent(\"willPaste\",i),i.defaultPrevented||(e=i.text,r.insertData(a,e),n.setStart(r,a+e.length),n.collapse(!0)),this.setSelection(n),this}var s,d,l,c,h=e.split(\"\\n\"),f=this._config,u=f.blockTag,p=f.blockAttributes,m=\"\",v=\"<\"+u;for(s in p)v+=\" \"+s+'=\"'+Tt(p[s])+'\"';for(v+=\">\",d=0,l=h.length;d\")+m;return this.insertHTML(h.join(\"\"),t)};var Et=function(e,t,n){return function(){return this[e](t,n),this.focus()}};at.addStyles=function(e){if(e){var t=this._doc.documentElement.firstChild,n=this.createElement(\"STYLE\",{type:\"text/css\"});n.appendChild(this._doc.createTextNode(e)),t.appendChild(n)}return this},at.bold=Et(\"changeFormat\",{tag:\"B\"}),at.italic=Et(\"changeFormat\",{tag:\"I\"}),at.underline=Et(\"changeFormat\",{tag:\"U\"}),at.strikethrough=Et(\"changeFormat\",{tag:\"S\"}),at.subscript=Et(\"changeFormat\",{tag:\"SUB\"},{tag:\"SUP\"}),at.superscript=Et(\"changeFormat\",{tag:\"SUP\"},{tag:\"SUB\"}),at.removeBold=Et(\"changeFormat\",null,{tag:\"B\"}),at.removeItalic=Et(\"changeFormat\",null,{tag:\"I\"}),at.removeUnderline=Et(\"changeFormat\",null,{tag:\"U\"}),at.removeStrikethrough=Et(\"changeFormat\",null,{tag:\"S\"}),at.removeSubscript=Et(\"changeFormat\",null,{tag:\"SUB\"}),at.removeSuperscript=Et(\"changeFormat\",null,{tag:\"SUP\"}),at.makeLink=function(e,t){var n=this.getSelection();if(n.collapsed){var o=e.indexOf(\":\")+1;if(o)for(;\"/\"===e[o];)o+=1;ye(n,this._doc.createTextNode(e.slice(o)))}return t=D(D({href:e},t,!0),this._config.tagAttributes.a,!1),this.changeFormat({tag:\"A\",attributes:t},{tag:\"A\"},n),this.focus()},at.removeLink=function(){return this.changeFormat(null,{tag:\"A\"},this.getSelection(),!0),this.focus()},at.setFontFace=function(e){var t=this._config.classNames.fontFamily;return this.changeFormat(e?{tag:\"SPAN\",attributes:{class:t,style:\"font-family: \"+e+\", sans-serif;\"}}:null,{tag:\"SPAN\",attributes:{class:t}}),this.focus()},at.setFontSize=function(e){var t=this._config.classNames.fontSize;return this.changeFormat(e?{tag:\"SPAN\",attributes:{class:t,style:\"font-size: \"+(\"number\"==typeof e?e+\"px\":e)}}:null,{tag:\"SPAN\",attributes:{class:t}}),this.focus()},at.setTextColour=function(e){var t=this._config.classNames.colour;return this.changeFormat(e?{tag:\"SPAN\",attributes:{class:t,style:\"color:\"+e}}:null,{tag:\"SPAN\",attributes:{class:t}}),this.focus()},at.setHighlightColour=function(e){var t=this._config.classNames.highlight;return this.changeFormat(e?{tag:\"SPAN\",attributes:{class:t,style:\"background-color:\"+e}}:e,{tag:\"SPAN\",attributes:{class:t}}),this.focus()},at.setTextAlignment=function(e){return this.forEachBlock(function(t){var n=t.className.split(/\\s+/).filter(function(e){return!!e&&!/^align/.test(e)}).join(\" \");e?(t.className=n+\" align-\"+e,t.style.textAlign=e):(t.className=n,t.style.textAlign=\"\")},!0),this.focus()},at.setTextDirection=function(e){return this.forEachBlock(function(t){e?t.dir=e:t.removeAttribute(\"dir\")},!0),this.focus()};var bt=function(e){for(var t,o=this._root,i=this._doc,r=i.createDocumentFragment(),a=l(e,o);t=a.nextNode();){var s,d,c=t.querySelectorAll(\"BR\"),h=[],f=c.length;for(s=0;s-1;)a.appendChild(d.createTextNode(r.slice(0,s))),a.appendChild(d.createElement(\"BR\")),r=r.slice(s+1);i.parentNode.insertBefore(a,i),i.data=r}b(t,l),S(t,y(t))}return e};at.code=function(){var e=this.getSelection();return e.collapsed||d(e.commonAncestorContainer)?this.modifyBlocks(bt,e):this.changeFormat({tag:\"CODE\",attributes:this._config.tagAttributes.code},null,e),this.focus()},at.removeCode=function(){var e=this.getSelection();return g(e.commonAncestorContainer,this._root,\"PRE\")?this.modifyBlocks(kt,e):this.changeFormat(null,{tag:\"CODE\"},e),this.focus()},at.toggleCode=function(){return this.hasFormat(\"PRE\")||this.hasFormat(\"CODE\")?this.removeCode():this.code(),this},at.removeAllFormatting=function(e){if(!e&&!(e=this.getSelection())||e.collapsed)return this;for(var t=this._root,n=e.commonAncestorContainer;n&&!s(n);)n=n.parentNode;if(n||(Pe(e,t),n=t),n.nodeType===H)return this;this.saveUndoState(e),Ae(e,n,n,t);for(var o,i,r=n.ownerDocument,a=e.startContainer,d=e.startOffset,l=e.endContainer,c=e.endOffset,h=r.createDocumentFragment(),f=r.createDocumentFragment(),u=k(l,c,n,t),p=k(a,d,n,t);p!==u;)o=p.nextSibling,h.appendChild(p),p=o;return F(this,h,f),f.normalize(),p=f.firstChild,o=f.lastChild,i=n.childNodes,p?(n.insertBefore(f,u),d=ce.call(i,p),c=ce.call(i,o)+1):(d=ce.call(i,u),c=d),e.setStart(n,d),e.setEnd(n,c),A(n,e),xe(e),this.setSelection(e),this._updatePath(e,!0),this.focus()},at.increaseQuoteLevel=Et(\"modifyBlocks\",pt),at.decreaseQuoteLevel=Et(\"modifyBlocks\",gt),at.makeUnorderedList=Et(\"modifyBlocks\",Ct),at.makeOrderedList=Et(\"modifyBlocks\",Nt),at.removeList=Et(\"modifyBlocks\",_t),P.isInline=a,P.isBlock=s,P.isContainer=d,P.getBlockWalker=l,P.getPreviousBlock=c,P.getNextBlock=h,P.areAlike=u,P.hasTagAttributes=p,P.getNearest=g,P.isOrContains=v,P.detach=_,P.replaceWith=S,P.empty=y,P.getNodeBefore=_e,P.getNodeAfter=Se,P.insertNodeInRange=ye,P.extractContentsOfRange=Te,P.deleteContentsOfRange=Ee,P.insertTreeFragmentIntoRange=be,P.isNodeContainedInRange=ke,P.moveRangeBoundariesDownTree=xe,P.moveRangeBoundariesUpTree=Ae,P.getStartBlockOfRange=Le,P.getEndBlockOfRange=Be,P.contentWalker=Oe,P.rangeDoesStartAtBlockBoundary=Re,P.rangeDoesEndAtBlockBoundary=De,P.expandRangeToBlockBoundaries=Pe,P.onPaste=it,P.addLinks=yt,P.splitBlock=ut,P.startSelectionId=\"squire-selection-start\",P.endSelectionId=ht, true?module.exports=P:undefined}(document);\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a string or not.\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Check whether the given variable is a boolean or not.\n * If the given variable is a boolean, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is boolean?\n * @memberof module:type\n */\nfunction isBoolean(obj) {\n return typeof obj === 'boolean' || obj instanceof Boolean;\n}\n\nmodule.exports = isBoolean;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (index);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(59)))\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview This module provides some functions for custom events. And it is implemented in the observer design pattern.\n * @author NHN FE Development Lab \n */\n\n\n\nvar extend = __webpack_require__(7);\nvar isExisty = __webpack_require__(28);\nvar isString = __webpack_require__(9);\nvar isObject = __webpack_require__(54);\nvar isArray = __webpack_require__(17);\nvar isFunction = __webpack_require__(27);\nvar forEach = __webpack_require__(26);\n\nvar R_EVENTNAME_SPLIT = /\\s+/g;\n\n/**\n * @class\n * @example\n * // node, commonjs\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents');\n */\nfunction CustomEvents() {\n /**\n * @type {HandlerItem[]}\n */\n this.events = null;\n\n /**\n * only for checking specific context event was binded\n * @type {object[]}\n */\n this.contexts = null;\n}\n\n/**\n * Mixin custom events feature to specific constructor\n * @param {function} func - constructor\n * @example\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * var model;\n * function Model() {\n * this.name = '';\n * }\n * CustomEvents.mixin(Model);\n *\n * model = new Model();\n * model.on('change', function() { this.name = 'model'; }, this);\n * model.fire('change');\n * alert(model.name); // 'model';\n */\nCustomEvents.mixin = function(func) {\n extend(func.prototype, CustomEvents.prototype);\n};\n\n/**\n * Get HandlerItem object\n * @param {function} handler - handler function\n * @param {object} [context] - context for handler\n * @returns {HandlerItem} HandlerItem object\n * @private\n */\nCustomEvents.prototype._getHandlerItem = function(handler, context) {\n var item = {handler: handler};\n\n if (context) {\n item.context = context;\n }\n\n return item;\n};\n\n/**\n * Get event object safely\n * @param {string} [eventName] - create sub event map if not exist.\n * @returns {(object|array)} event object. if you supplied `eventName`\n * parameter then make new array and return it\n * @private\n */\nCustomEvents.prototype._safeEvent = function(eventName) {\n var events = this.events;\n var byName;\n\n if (!events) {\n events = this.events = {};\n }\n\n if (eventName) {\n byName = events[eventName];\n\n if (!byName) {\n byName = [];\n events[eventName] = byName;\n }\n\n events = byName;\n }\n\n return events;\n};\n\n/**\n * Get context array safely\n * @returns {array} context array\n * @private\n */\nCustomEvents.prototype._safeContext = function() {\n var context = this.contexts;\n\n if (!context) {\n context = this.contexts = [];\n }\n\n return context;\n};\n\n/**\n * Get index of context\n * @param {object} ctx - context that used for bind custom event\n * @returns {number} index of context\n * @private\n */\nCustomEvents.prototype._indexOfContext = function(ctx) {\n var context = this._safeContext();\n var index = 0;\n\n while (context[index]) {\n if (ctx === context[index][0]) {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n};\n\n/**\n * Memorize supplied context for recognize supplied object is context or\n * name: handler pair object when off()\n * @param {object} ctx - context object to memorize\n * @private\n */\nCustomEvents.prototype._memorizeContext = function(ctx) {\n var context, index;\n\n if (!isExisty(ctx)) {\n return;\n }\n\n context = this._safeContext();\n index = this._indexOfContext(ctx);\n\n if (index > -1) {\n context[index][1] += 1;\n } else {\n context.push([ctx, 1]);\n }\n};\n\n/**\n * Forget supplied context object\n * @param {object} ctx - context object to forget\n * @private\n */\nCustomEvents.prototype._forgetContext = function(ctx) {\n var context, contextIndex;\n\n if (!isExisty(ctx)) {\n return;\n }\n\n context = this._safeContext();\n contextIndex = this._indexOfContext(ctx);\n\n if (contextIndex > -1) {\n context[contextIndex][1] -= 1;\n\n if (context[contextIndex][1] <= 0) {\n context.splice(contextIndex, 1);\n }\n }\n};\n\n/**\n * Bind event handler\n * @param {(string|{name:string, handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * @private\n */\nCustomEvents.prototype._bindEvent = function(eventName, handler, context) {\n var events = this._safeEvent(eventName);\n this._memorizeContext(context);\n events.push(this._getHandlerItem(handler, context));\n};\n\n/**\n * Bind event handlers\n * @param {(string|{name:string, handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * //-- #2. Use method --//\n * // # 2.1 Basic Usage\n * CustomEvents.on('onload', handler);\n *\n * // # 2.2 With context\n * CustomEvents.on('onload', handler, myObj);\n *\n * // # 2.3 Bind by object that name, handler pairs\n * CustomEvents.on({\n * 'play': handler,\n * 'pause': handler2\n * });\n *\n * // # 2.4 Bind by object that name, handler pairs with context object\n * CustomEvents.on({\n * 'play': handler\n * }, myObj);\n */\nCustomEvents.prototype.on = function(eventName, handler, context) {\n var self = this;\n\n if (isString(eventName)) {\n // [syntax 1, 2]\n eventName = eventName.split(R_EVENTNAME_SPLIT);\n forEach(eventName, function(name) {\n self._bindEvent(name, handler, context);\n });\n } else if (isObject(eventName)) {\n // [syntax 3, 4]\n context = handler;\n forEach(eventName, function(func, name) {\n self.on(name, func, context);\n });\n }\n};\n\n/**\n * Bind one-shot event handlers\n * @param {(string|{name:string,handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {function|object} [handler] - handler function or context\n * @param {object} [context] - context for binding\n */\nCustomEvents.prototype.once = function(eventName, handler, context) {\n var self = this;\n\n if (isObject(eventName)) {\n context = handler;\n forEach(eventName, function(func, name) {\n self.once(name, func, context);\n });\n\n return;\n }\n\n function onceHandler() { // eslint-disable-line require-jsdoc\n handler.apply(context, arguments);\n self.off(eventName, onceHandler, context);\n }\n\n this.on(eventName, onceHandler, context);\n};\n\n/**\n * Splice supplied array by callback result\n * @param {array} arr - array to splice\n * @param {function} predicate - function return boolean\n * @private\n */\nCustomEvents.prototype._spliceMatches = function(arr, predicate) {\n var i = 0;\n var len;\n\n if (!isArray(arr)) {\n return;\n }\n\n for (len = arr.length; i < len; i += 1) {\n if (predicate(arr[i]) === true) {\n arr.splice(i, 1);\n len -= 1;\n i -= 1;\n }\n }\n};\n\n/**\n * Get matcher for unbind specific handler events\n * @param {function} handler - handler function\n * @returns {function} handler matcher\n * @private\n */\nCustomEvents.prototype._matchHandler = function(handler) {\n var self = this;\n\n return function(item) {\n var needRemove = handler === item.handler;\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n};\n\n/**\n * Get matcher for unbind specific context events\n * @param {object} context - context\n * @returns {function} object matcher\n * @private\n */\nCustomEvents.prototype._matchContext = function(context) {\n var self = this;\n\n return function(item) {\n var needRemove = context === item.context;\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n};\n\n/**\n * Get matcher for unbind specific hander, context pair events\n * @param {function} handler - handler function\n * @param {object} context - context\n * @returns {function} handler, context matcher\n * @private\n */\nCustomEvents.prototype._matchHandlerAndContext = function(handler, context) {\n var self = this;\n\n return function(item) {\n var matchHandler = (handler === item.handler);\n var matchContext = (context === item.context);\n var needRemove = (matchHandler && matchContext);\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n};\n\n/**\n * Unbind event by event name\n * @param {string} eventName - custom event name to unbind\n * @param {function} [handler] - handler function\n * @private\n */\nCustomEvents.prototype._offByEventName = function(eventName, handler) {\n var self = this;\n var andByHandler = isFunction(handler);\n var matchHandler = self._matchHandler(handler);\n\n eventName = eventName.split(R_EVENTNAME_SPLIT);\n\n forEach(eventName, function(name) {\n var handlerItems = self._safeEvent(name);\n\n if (andByHandler) {\n self._spliceMatches(handlerItems, matchHandler);\n } else {\n forEach(handlerItems, function(item) {\n self._forgetContext(item.context);\n });\n\n self.events[name] = [];\n }\n });\n};\n\n/**\n * Unbind event by handler function\n * @param {function} handler - handler function\n * @private\n */\nCustomEvents.prototype._offByHandler = function(handler) {\n var self = this;\n var matchHandler = this._matchHandler(handler);\n\n forEach(this._safeEvent(), function(handlerItems) {\n self._spliceMatches(handlerItems, matchHandler);\n });\n};\n\n/**\n * Unbind event by object(name: handler pair object or context object)\n * @param {object} obj - context or {name: handler} pair object\n * @param {function} handler - handler function\n * @private\n */\nCustomEvents.prototype._offByObject = function(obj, handler) {\n var self = this;\n var matchFunc;\n\n if (this._indexOfContext(obj) < 0) {\n forEach(obj, function(func, name) {\n self.off(name, func);\n });\n } else if (isString(handler)) {\n matchFunc = this._matchContext(obj);\n\n self._spliceMatches(this._safeEvent(handler), matchFunc);\n } else if (isFunction(handler)) {\n matchFunc = this._matchHandlerAndContext(handler, obj);\n\n forEach(this._safeEvent(), function(handlerItems) {\n self._spliceMatches(handlerItems, matchFunc);\n });\n } else {\n matchFunc = this._matchContext(obj);\n\n forEach(this._safeEvent(), function(handlerItems) {\n self._spliceMatches(handlerItems, matchFunc);\n });\n }\n};\n\n/**\n * Unbind custom events\n * @param {(string|object|function)} eventName - event name or context or\n * {name: handler} pair object or handler function\n * @param {(function)} handler - handler function\n * @example\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * //-- #2. Use method --//\n * // # 2.1 off by event name\n * CustomEvents.off('onload');\n *\n * // # 2.2 off by event name and handler\n * CustomEvents.off('play', handler);\n *\n * // # 2.3 off by handler\n * CustomEvents.off(handler);\n *\n * // # 2.4 off by context\n * CustomEvents.off(myObj);\n *\n * // # 2.5 off by context and handler\n * CustomEvents.off(myObj, handler);\n *\n * // # 2.6 off by context and event name\n * CustomEvents.off(myObj, 'onload');\n *\n * // # 2.7 off by an Object. that is {eventName: handler}\n * CustomEvents.off({\n * 'play': handler,\n * 'pause': handler2\n * });\n *\n * // # 2.8 off the all events\n * CustomEvents.off();\n */\nCustomEvents.prototype.off = function(eventName, handler) {\n if (isString(eventName)) {\n // [syntax 1, 2]\n this._offByEventName(eventName, handler);\n } else if (!arguments.length) {\n // [syntax 8]\n this.events = {};\n this.contexts = [];\n } else if (isFunction(eventName)) {\n // [syntax 3]\n this._offByHandler(eventName);\n } else if (isObject(eventName)) {\n // [syntax 4, 5, 6]\n this._offByObject(eventName, handler);\n }\n};\n\n/**\n * Fire custom event\n * @param {string} eventName - name of custom event\n */\nCustomEvents.prototype.fire = function(eventName) { // eslint-disable-line\n this.invoke.apply(this, arguments);\n};\n\n/**\n * Fire a event and returns the result of operation 'boolean AND' with all\n * listener's results.\n *\n * So, It is different from {@link CustomEvents#fire}.\n *\n * In service code, use this as a before event in component level usually\n * for notifying that the event is cancelable.\n * @param {string} eventName - Custom event name\n * @param {...*} data - Data for event\n * @returns {boolean} The result of operation 'boolean AND'\n * @example\n * var map = new Map();\n * map.on({\n * 'beforeZoom': function() {\n * // It should cancel the 'zoom' event by some conditions.\n * if (that.disabled && this.getState()) {\n * return false;\n * }\n * return true;\n * }\n * });\n *\n * if (this.invoke('beforeZoom')) { // check the result of 'beforeZoom'\n * // if true,\n * // doSomething\n * }\n */\nCustomEvents.prototype.invoke = function(eventName) {\n var events, args, index, item;\n\n if (!this.hasListener(eventName)) {\n return true;\n }\n\n events = this._safeEvent(eventName);\n args = Array.prototype.slice.call(arguments, 1);\n index = 0;\n\n while (events[index]) {\n item = events[index];\n\n if (item.handler.apply(item.context, args) === false) {\n return false;\n }\n\n index += 1;\n }\n\n return true;\n};\n\n/**\n * Return whether at least one of the handlers is registered in the given\n * event name.\n * @param {string} eventName - Custom event name\n * @returns {boolean} Is there at least one handler in event name?\n */\nCustomEvents.prototype.hasListener = function(eventName) {\n return this.getListenerLength(eventName) > 0;\n};\n\n/**\n * Return a count of events registered.\n * @param {string} eventName - Custom event name\n * @returns {number} number of event\n */\nCustomEvents.prototype.getListenerLength = function(eventName) {\n var events = this._safeEvent(eventName);\n\n return events.length;\n};\n\nmodule.exports = CustomEvents;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/collection/forEachOwnProperties.js\nvar forEachOwnProperties = __webpack_require__(10);\nvar forEachOwnProperties_default = /*#__PURE__*/__webpack_require__.n(forEachOwnProperties);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isExisty.js\nvar isExisty = __webpack_require__(28);\nvar isExisty_default = /*#__PURE__*/__webpack_require__.n(isExisty);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isNumber.js\nvar isNumber = __webpack_require__(34);\nvar isNumber_default = /*#__PURE__*/__webpack_require__.n(isNumber);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/object/extend.js\nvar extend = __webpack_require__(7);\nvar extend_default = /*#__PURE__*/__webpack_require__.n(extend);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/css.js\nvar css = __webpack_require__(3);\nvar css_default = /*#__PURE__*/__webpack_require__.n(css);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/addClass.js\nvar addClass = __webpack_require__(6);\nvar addClass_default = /*#__PURE__*/__webpack_require__.n(addClass);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/removeClass.js\nvar removeClass = __webpack_require__(5);\nvar removeClass_default = /*#__PURE__*/__webpack_require__.n(removeClass);\n\n// EXTERNAL MODULE: /Users/nhn/Desktop/project/tui.editor/libs/toastmark/dist/toastmark.js\nvar toastmark = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./src/js/htmlRenderConvertors.js\nvar htmlRenderConvertors = __webpack_require__(29);\n\n// CONCATENATED MODULE: ./src/js/markdownToHTML.js\n\n\nfunction createMarkdownToHTML(options) {\n var extendedAutolinks = options.extendedAutolinks,\n customHTMLRenderer = options.customHTMLRenderer,\n referenceDefinition = options.referenceDefinition,\n customParser = options.customParser;\n var parser = new toastmark[\"Parser\"]({\n disallowedHtmlBlockTags: ['br'],\n extendedAutolinks: extendedAutolinks,\n referenceDefinition: referenceDefinition,\n disallowDeepHeading: true,\n customParser: customParser\n });\n var renderHTML = Object(toastmark[\"createRenderHTML\"])({\n gfm: true,\n convertors: Object(htmlRenderConvertors[\"a\" /* getHTMLRenderConvertors */])(null, customHTMLRenderer)\n });\n return function markdownToHTML(markdown) {\n return renderHTML(parser.parse(markdown));\n };\n}\n// EXTERNAL MODULE: ./src/js/utils/common.js\nvar utils_common = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isBoolean.js\nvar isBoolean = __webpack_require__(56);\nvar isBoolean_default = /*#__PURE__*/__webpack_require__.n(isBoolean);\n\n// EXTERNAL MODULE: external {\"commonjs\":\"codemirror\",\"commonjs2\":\"codemirror\",\"amd\":\"codemirror\",\"root\":[\"CodeMirror\"]}\nvar external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_ = __webpack_require__(15);\nvar external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_);\n\n// CONCATENATED MODULE: ./src/js/codemirror/fixOrderedListNumber.js\n/**\n * @fileoverview codemirror extension for fix ordered list number\n * @author NHN FE Development Lab \n */\n\nvar listRE = /^(\\s*)((\\d+)([.)]\\s(?:\\[(?:x|\\s)\\]\\s)?))(.*)/;\n/**\n * simple wrapper for indentLess command\n * to run fixOrderedListNumber on Shift-Tab\n * @param {CodeMirror} cm - CodeMirror instance\n * @returns {CodeMirror.Pass|null} - next command\n * @ignore\n */\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.indentLessOrderedList = function (cm) {\n if (cm.getOption('disableInput')) {\n return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n }\n\n cm.execCommand('indentLess');\n cm.execCommand('fixOrderedListNumber');\n return null;\n};\n/**\n * fix ordered list number\n * @param {CodeMirror} cm - CodeMirror instance\n * @returns {CodeMirror.Pass|null} - next command\n * @ignore\n */\n\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.fixOrderedListNumber = function (cm) {\n if (cm.getOption('disableInput') || !!cm.state.isCursorInCodeBlock) {\n return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n }\n\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i += 1) {\n var pos = ranges[i].head;\n var lineNumber = findFirstListItem(pos.line, cm);\n\n if (lineNumber >= 0) {\n var lineText = cm.getLine(lineNumber);\n\n var _listRE$exec = listRE.exec(lineText),\n indent = _listRE$exec[1],\n index = _listRE$exec[3];\n\n fixNumber(lineNumber, indent.length, parseInt(index, 10), cm);\n }\n }\n\n return null;\n};\n/**\n * fix list numbers\n * @param {number} lineNumber - line number of list item to be normalized\n * @param {number} prevIndentLength - previous indent length\n * @param {number} startIndex - start index\n * @param {CodeMirror} cm - CodeMirror instance\n * @returns {number} - next line number\n * @ignore\n */\n\n\nfunction fixNumber(lineNumber, prevIndentLength, startIndex, cm) {\n var indent, delimiter, text, indentLength;\n var index = startIndex;\n var lineText = cm.getLine(lineNumber);\n\n do {\n var _listRE$exec2 = listRE.exec(lineText);\n\n indent = _listRE$exec2[1];\n delimiter = _listRE$exec2[4];\n text = _listRE$exec2[5];\n indentLength = indent.length;\n\n if (indentLength === prevIndentLength) {\n // fix number\n cm.replaceRange(\"\" + indent + index + delimiter + text, {\n line: lineNumber,\n ch: 0\n }, {\n line: lineNumber,\n ch: lineText.length\n });\n index += 1;\n lineNumber += 1;\n } else if (indentLength > prevIndentLength) {\n // nested list start\n lineNumber = fixNumber(lineNumber, indentLength, 1, cm);\n } else {\n // nested list end\n return lineNumber;\n }\n\n lineText = cm.getLine(lineNumber);\n } while (listRE.test(lineText));\n\n return lineNumber;\n}\n/**\n * find line number of list item which contains given lineNumber\n * @param {number} lineNumber - line number of list item\n * @param {CodeMirror} cm - CodeMirror instance\n * @returns {number} - line number of first list item\n * @ignore\n */\n\n\nfunction findFirstListItem(lineNumber, cm) {\n var nextLineNumber = lineNumber;\n var lineText = cm.getLine(lineNumber);\n\n while (listRE.test(lineText)) {\n nextLineNumber -= 1;\n lineText = cm.getLine(nextLineNumber);\n }\n\n if (lineNumber === nextLineNumber) {\n nextLineNumber = -1;\n } else {\n nextLineNumber += 1;\n }\n\n return nextLineNumber;\n}\n// CONCATENATED MODULE: ./src/js/codemirror/overlay.js\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n/**\n * @modifier NHN FE Development Lab \n */\n\n/*eslint-disable */\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.overlayMode = function (base, overlay, combine) {\n return {\n startState: function startState() {\n return {\n base: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.startState(base),\n overlay: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.startState(overlay),\n basePos: 0,\n baseCur: null,\n overlayPos: 0,\n overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function copyState(state) {\n return {\n base: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.copyState(base, state.base),\n overlay: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.copyState(overlay, state.overlay),\n basePos: state.basePos,\n baseCur: null,\n overlayPos: state.overlayPos,\n overlayCur: null\n };\n },\n token: function token(stream, state) {\n if (stream != state.streamSeen || Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n\n stream.pos = Math.min(state.basePos, state.overlayPos); // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n\n if (state.overlayCur == null) return state.baseCur;else if (state.baseCur != null && state.overlay.combineTokens || combine && state.overlay.combineTokens == null) return state.baseCur + ' ' + state.overlayCur;else return state.overlayCur;\n },\n indent: base.indent && function (state, textAfter) {\n return base.indent(state.base, textAfter);\n },\n electricChars: base.electricChars,\n innerMode: function innerMode(state) {\n return {\n state: state.base,\n mode: base\n };\n },\n blankLine: function blankLine(state) {\n if (base.blankLine) base.blankLine(state.base);\n if (overlay.blankLine) overlay.blankLine(state.overlay);\n }\n };\n};\n// CONCATENATED MODULE: ./src/js/codemirror/continuelist.js\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * @modifier NHN FE Development Lab \n */\n\n/*eslint-disable */\n\nvar continuelist_listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]\\s))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.indentOrderedList = function (cm) {\n if (cm.getOption('disableInput')) return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n var line = cm.getLine(pos.line);\n var cursorBeforeTextInline = line.substr(0, pos.ch);\n\n if (continuelist_listRE.test(cursorBeforeTextInline) || cm.somethingSelected()) {\n cm.indentSelection('add');\n } else {\n cm.execCommand('insertSoftTab');\n }\n }\n\n cm.execCommand('fixOrderedListNumber');\n};\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.newlineAndIndentContinueMarkdownList = function (cm) {\n if (cm.getOption('disableInput') || !!cm.state.isCursorInCodeBlock) return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n var ranges = cm.listSelections(),\n replacements = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n var line = cm.getLine(pos.line),\n match = continuelist_listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n\n if (!ranges[i].empty() || !match || cursorBeforeBullet) {\n cm.execCommand('newlineAndIndent');\n return;\n }\n\n if (emptyListRE.test(line)) {\n if (!/>\\s*$/.test(line)) cm.replaceRange('', {\n line: pos.line,\n ch: 0\n }, {\n line: pos.line,\n ch: pos.ch + 1\n });\n replacements[i] = '\\n';\n } else {\n var indent = match[1],\n after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf('>') >= 0);\n var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace('x', ' ');\n replacements[i] = '\\n' + indent + bullet + after;\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n}; // Auto-updating Markdown list numbers when a new item is added to the\n// middle of a list\n\n\nfunction incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line,\n lookAhead = 0,\n skipCount = 0;\n var startItem = continuelist_listRE.exec(cm.getLine(startLine)),\n startIndent = startItem[1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber),\n nextItem = continuelist_listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = parseInt(startItem[3], 10) + lookAhead - skipCount;\n var nextNumber = parseInt(nextItem[3], 10),\n itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(nextLine.replace(continuelist_listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]), {\n line: nextLineNumber,\n ch: 0\n }, {\n line: nextLineNumber,\n ch: nextLine.length\n });\n } else {\n if (startIndent.length > nextIndent.length) return; // This doesn't run if the next line immediatley indents, as it is\n // not clear of the users intention (new indented item or same level)\n\n if (startIndent.length < nextIndent.length && lookAhead === 1) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n}\n// CONCATENATED MODULE: ./src/js/codemirror/arrowKeyFunction.js\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * @modifier NHN FE Development Lab \n */\n\n/*eslint-disable */\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.replaceLineTextToUpper = function (cm) {\n if (cm.getOption('disableInput')) {\n return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n }\n\n var ranges = cm.listSelections();\n var lineAdjustment = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var from = range.anchor;\n var to = range.head;\n\n if (isSameLineSelection(range) && to.line > 0) {\n replaceSingleLine(cm, from, to, lineAdjustment);\n } else if (!isRangeCollapsed(range)) {\n var topLine = from.line < to.line ? from.line : to.line;\n\n if (topLine > 0) {\n var upper = from.line === topLine ? from : to;\n var bottom = from.line === topLine ? to : from;\n replaceMultiLine(cm, upper, bottom, lineAdjustment);\n }\n }\n }\n};\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.replaceLineTextToLower = function (cm) {\n if (cm.getOption('disableInput')) {\n return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass;\n }\n\n var ranges = cm.listSelections();\n var lineAdjustment = 1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var from = range.anchor;\n var to = range.head;\n var isLastLine = to.line === cm.lastLine();\n\n if (isSameLineSelection(range) && !isLastLine) {\n replaceSingleLine(cm, from, to, lineAdjustment);\n } else if (!isRangeCollapsed(range)) {\n var topLine = from.line < to.line ? from.line : to.line;\n var upper = from.line === topLine ? from : to;\n var bottom = from.line === topLine ? to : from;\n\n if (bottom.line < cm.lastLine()) {\n replaceMultiLine(cm, upper, bottom, lineAdjustment);\n }\n }\n }\n};\n\nfunction isRangeCollapsed(range) {\n return isSameLineSelection(range) && range.anchor.ch === range.head.ch;\n}\n\nfunction isSameLineSelection(range) {\n return range.anchor.line === range.head.line;\n}\n\nfunction replaceSingleLine(cm, from, to, lineAdjustment) {\n var currentLine = cm.getLine(to.line);\n var replacement = cm.getLine(to.line + lineAdjustment);\n var range = {\n anchor: from,\n head: to\n };\n cm.replaceRange(replacement, {\n line: to.line,\n ch: 0\n }, {\n line: to.line,\n ch: currentLine.length\n }, '+input');\n cm.replaceRange(currentLine, {\n line: to.line + lineAdjustment,\n ch: 0\n }, {\n line: to.line + lineAdjustment,\n ch: replacement.length\n }, '+input');\n\n if (isRangeCollapsed(range)) {\n cm.setCursor({\n line: to.line + lineAdjustment,\n ch: to.ch\n });\n } else {\n cm.setSelection({\n line: from.line + lineAdjustment,\n ch: from.ch\n }, {\n line: to.line + lineAdjustment,\n ch: to.ch\n });\n }\n}\n\nfunction replaceMultiLine(cm, upper, bottom, lineAdjustment) {\n var rangeContent = cm.getRange({\n line: upper.line,\n ch: 0\n }, {\n line: bottom.line,\n ch: cm.getLine(bottom.line).length\n });\n var edgeLineOfConcern = lineAdjustment > 0 ? bottom : upper;\n var replacement = cm.getLine(edgeLineOfConcern.line + lineAdjustment);\n var targetLine;\n\n if (lineAdjustment > 0) {\n targetLine = upper;\n } else {\n targetLine = bottom;\n }\n\n cm.replaceRange(replacement, {\n line: targetLine.line,\n ch: 0\n }, {\n line: targetLine.line,\n ch: cm.getLine(targetLine.line).length\n }, '+input');\n cm.replaceRange(rangeContent, {\n line: upper.line + lineAdjustment,\n ch: 0\n }, {\n line: bottom.line + lineAdjustment,\n ch: cm.getLine(bottom.line + lineAdjustment).length\n }, '+input');\n cm.setSelection({\n line: upper.line + lineAdjustment,\n ch: upper.ch\n }, {\n line: bottom.line + lineAdjustment,\n ch: bottom.ch\n });\n}\n// CONCATENATED MODULE: ./src/js/codemirror/placeholder.js\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * @modifier NHN FE Development Lab \n */\n\n/* eslint-disable */\n\nexternal_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.defineOption('placeholder', '', function (cm, val, old) {\n var prev = old && old != external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Init;\n\n if (val && !prev) {\n cm.on('blur', onBlur);\n cm.on('change', onChange);\n cm.on('swapDoc', onChange);\n onChange(cm);\n } else if (!val && prev) {\n cm.off('blur', onBlur);\n cm.off('change', onChange);\n cm.off('swapDoc', onChange);\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(' CodeMirror-empty', '');\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n});\n\nfunction clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n}\n\nfunction setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement('pre');\n elt.style.cssText = 'height: 0; overflow: visible';\n elt.className = 'CodeMirror-placeholder';\n var placeHolder = cm.getOption('placeholder');\n if (typeof placeHolder == 'string') placeHolder = document.createTextNode(placeHolder);\n elt.appendChild(placeHolder);\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n}\n\nfunction onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n}\n\nfunction onChange(cm) {\n var wrapper = cm.getWrapperElement(),\n empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(' CodeMirror-empty', '') + (empty ? ' CodeMirror-empty' : '');\n if (empty) setPlaceholder(cm);else clearPlaceholder(cm);\n}\n\nfunction isEmpty(cm) {\n return cm.lineCount() === 1 && cm.getLine(0) === '';\n}\n// CONCATENATED MODULE: ./src/js/codeMirrorExt.js\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileoverview Implements CodeBlockExt\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n/**\n * Class CodeMirrorExt\n * @param {HTMLElement} el - container jquery element\n * @param {Object} [options={}] - codeMirror options\n */\n\nvar codeMirrorExt_CodeMirrorExt = /*#__PURE__*/function () {\n function CodeMirrorExt(el, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.editorContainerEl = el;\n /**\n * CodeMirror instance\n * @type {CodeMirror.EditorFromTextArea}\n * @private\n */\n\n this.cm = null;\n\n this._init(options);\n }\n /**\n * init\n * @param {Object} options - codeMirror option\n * @private\n */\n\n\n var _proto = CodeMirrorExt.prototype;\n\n _proto._init = function _init(options) {\n var cmTextarea = document.createElement('textarea');\n this.editorContainerEl.appendChild(cmTextarea);\n options = _extends({}, options, {\n lineWrapping: true,\n theme: 'default',\n extraKeys: _extends({\n 'Shift-Tab': 'indentLess',\n 'Alt-Up': 'replaceLineTextToUpper',\n 'Alt-Down': 'replaceLineTextToLower'\n }, options.extraKeys),\n indentUnit: 4,\n cursorScrollMargin: 12,\n specialCharPlaceholder: function specialCharPlaceholder() {\n return document.createElement('span');\n }\n });\n this.cm = external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.fromTextArea(cmTextarea, options);\n }\n /**\n * getCurrentRange\n * @returns {Object} - selection range\n */\n ;\n\n _proto.getCurrentRange = function getCurrentRange() {\n var from = this.cm.getCursor('from');\n var to = this.cm.getCursor('to');\n return {\n from: from,\n to: to,\n collapsed: from.line === to.line && from.ch === to.ch\n };\n }\n /**\n * Set focus to current Editor\n */\n ;\n\n _proto.focus = function focus() {\n this.cm.focus();\n }\n /**\n * blur focus to current Editor\n */\n ;\n\n _proto.blur = function blur() {\n this.cm.getInputField().blur();\n }\n /**\n * Remove Editor from document\n */\n ;\n\n _proto.remove = function remove() {\n this.cm.toTextArea();\n }\n /**\n * Set Editor value\n * @param {string} markdown - Markdown syntax text\n * @param {boolean} [cursorToEnd=true] - move cursor to contents end\n */\n ;\n\n _proto.setValue = function setValue(markdown, cursorToEnd) {\n if (cursorToEnd === void 0) {\n cursorToEnd = true;\n }\n\n this.cm.setValue(markdown);\n\n if (cursorToEnd) {\n this.moveCursorToEnd();\n }\n\n this.cm.doc.clearHistory();\n this.cm.refresh();\n }\n /**\n * Get editor value\n * @returns {string} - codeMirror text value\n */\n ;\n\n _proto.getValue = function getValue() {\n return this.cm.getValue('\\n');\n }\n /**\n * Get CodeMirror instance\n * @returns {CodeMirror}\n */\n ;\n\n _proto.getEditor = function getEditor() {\n return this.cm;\n }\n /**\n * Reset Editor\n */\n ;\n\n _proto.reset = function reset() {\n this.setValue('');\n }\n /**\n * Get current caret position\n * @returns {{from: {line: number, ch: number}, to: {line: number, ch: number}}}\n */\n ;\n\n _proto.getCaretPosition = function getCaretPosition() {\n return this.cm.cursorCoords();\n }\n /**\n * Add widget\n * @param {object} selection - Selection object\n * @param {HTMLElement} node - Widget node\n * @param {string} style - Adding style \"over\" or \"bottom\"\n * @param {number} offset - Adding offset\n */\n ;\n\n _proto.addWidget = function addWidget(selection, node, style, offset) {\n if (offset) {\n selection.ch += offset;\n }\n\n this.cm.addWidget(selection.end, node, true, style);\n }\n /**\n * Replace selection with given replacement content\n * @param {string} content - Replacement content text\n * @param {object} selection - Selection object\n */\n ;\n\n _proto.replaceSelection = function replaceSelection(content, selection) {\n if (selection) {\n this.cm.setSelection(selection.from, selection.to);\n }\n\n this.cm.replaceSelection(content);\n this.focus();\n }\n /**\n * Replace selection with replacement content and offset\n * @param {string} content - Replacement content text\n * @param {number} offset - Offset\n * @param {number} overwriteLength - Length to overwrite\n */\n ;\n\n _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) {\n var cursor = this.cm.getCursor();\n var selection = {\n from: {\n line: cursor.line,\n ch: cursor.ch + offset\n },\n to: {\n line: cursor.line,\n ch: cursor.ch + offset + overwriteLength\n }\n };\n this.replaceSelection(content, selection);\n }\n /**\n * Set Editor height\n * @param {number} height - Editor height\n */\n ;\n\n _proto.setHeight = function setHeight(height) {\n var contentWrapper = this.getWrapperElement();\n css_default()(contentWrapper, {\n height: height + \"px\"\n });\n }\n /**\n * set min height\n * @param {number} minHeight - min height\n */\n ;\n\n _proto.setMinHeight = function setMinHeight(minHeight) {\n var contentWrapper = this.getWrapperElement();\n css_default()(contentWrapper, {\n minHeight: minHeight + \"px\"\n });\n }\n /**\n * Set the placeholder to CodeMirror\n * @param {string} placeholder - placeholder to set\n */\n ;\n\n _proto.setPlaceholder = function setPlaceholder(placeholder) {\n if (placeholder) {\n this.cm.setOption('placeholder', placeholder);\n }\n }\n /**\n * get code mirror wrapper element\n * @returns {HTMLElement} - code mirror wrapper element\n */\n ;\n\n _proto.getWrapperElement = function getWrapperElement() {\n return this.cm.getWrapperElement();\n }\n /**\n * get code mirror cursor\n * @param {string} [start='head'] - which end of the selection. 'from'|'to'|'head'|'anchor'\n * @returns {Cursor} - code mirror cursor\n */\n ;\n\n _proto.getCursor = function getCursor(start) {\n return this.cm.getCursor(start);\n }\n /**\n * Set cursor position to end\n */\n ;\n\n _proto.moveCursorToEnd = function moveCursorToEnd() {\n var doc = this.getEditor().getDoc();\n var lastLine = doc.lastLine();\n doc.setCursor(lastLine, doc.getLine(lastLine).length);\n }\n /**\n * Set cursor position to start\n */\n ;\n\n _proto.moveCursorToStart = function moveCursorToStart() {\n var doc = this.getEditor().getDoc();\n var firstLine = doc.firstLine();\n doc.setCursor(firstLine, 0);\n }\n /**\n * Scroll Editor content to Top\n * @param {number} value - Scroll amount\n * @returns {number} - changed scroll top\n */\n ;\n\n _proto.scrollTop = function scrollTop(value) {\n if (value) {\n this.cm.scrollTo(0, value);\n }\n\n return this.cm.getScrollInfo().top;\n }\n /**\n * Get start, end position of current selection\n * @returns {{start: {line: *, ch: *}, end: {line: *, ch: *}}}\n */\n ;\n\n _proto.getRange = function getRange() {\n var start = this.cm.getCursor('from');\n var end = this.cm.getCursor('to');\n return {\n start: {\n line: start.line,\n ch: start.ch\n },\n end: {\n line: end.line,\n ch: end.ch\n }\n };\n }\n /**\n * add codemirror event handler\n * @param {string} type - event type\n * @param {function} func - handler function\n */\n ;\n\n _proto.on = function on(type, func) {\n this.cm.on(type, func);\n }\n /**\n * remove codemirror event handler\n * @param {string} type - event type\n * @param {function} func - handler function\n */\n ;\n\n _proto.off = function off(type, func) {\n this.cm.off(type, func);\n };\n\n return CodeMirrorExt;\n}();\n\n/* harmony default export */ var codeMirrorExt = (codeMirrorExt_CodeMirrorExt);\n// CONCATENATED MODULE: ./src/js/keyMapper.js\n/**\n * @fileoverview Implements KeyMapper\n * @author NHN FE Development Lab \n */\n\n/**\n * Constant of key mapping\n * @type {string[]}\n * @ignore\n */\nvar KEYBOARD_MAP = ['', // [0]\n'', // [1]\n'', // [2]\n'CANCEL', // [3]\n'', // [4]\n'', // [5]\n'HELP', // [6]\n'', // [7]\n'BACK_SPACE', // [8]\n'TAB', // [9]\n'', // [10]\n'', // [11]\n'CLEAR', // [12]\n'ENTER', // [13]\n'ENTER_SPECIAL', // [14]\n'', // [15]\n'', // [16] SHIFT\n'', // [17] CONTROL\n'', // [18] ALT\n'PAUSE', // [19]\n'CAPS_LOCK', // [20]\n'KANA', // [21]\n'EISU', // [22]\n'JUNJA', // [23]\n'FINAL', // [24]\n'HANJA', // [25]\n'', // [26]\n'ESCAPE', // [27]\n'CONVERT', // [28]\n'NONCONVERT', // [29]\n'ACCEPT', // [30]\n'MODECHANGE', // [31]\n'SPACE', // [32]\n'PAGE_UP', // [33]\n'PAGE_DOWN', // [34]\n'END', // [35]\n'HOME', // [36]\n'LEFT', // [37]\n'UP', // [38]\n'RIGHT', // [39]\n'DOWN', // [40]\n'SELECT', // [41]\n'PRINT', // [42]\n'EXECUTE', // [43]\n'PRINTSCREEN', // [44]\n'INSERT', // [45]\n'DELETE', // [46]\n'', // [47]\n'0', // [48]\n'1', // [49]\n'2', // [50]\n'3', // [51]\n'4', // [52]\n'5', // [53]\n'6', // [54]\n'7', // [55]\n'8', // [56]\n'9', // [57]\n':', // [58]\n';', // [59]\n'<', // [60]\n'=', // [61]\n'>', // [62]\n'?', // [63]\n'AT', // [64]\n'A', // [65]\n'B', // [66]\n'C', // [67]\n'D', // [68]\n'E', // [69]\n'F', // [70]\n'G', // [71]\n'H', // [72]\n'I', // [73]\n'J', // [74]\n'K', // [75]\n'L', // [76]\n'M', // [77]\n'N', // [78]\n'O', // [79]\n'P', // [80]\n'Q', // [81]\n'R', // [82]\n'S', // [83]\n'T', // [84]\n'U', // [85]\n'V', // [86]\n'W', // [87]\n'X', // [88]\n'Y', // [89]\n'Z', // [90]\n'', // [91] META\n'', // [92]\n'CONTEXT_MENU', // [93]\n'', // [94]\n'SLEEP', // [95]\n'NUMPAD0', // [96]\n'NUMPAD1', // [97]\n'NUMPAD2', // [98]\n'NUMPAD3', // [99]\n'NUMPAD4', // [100]\n'NUMPAD5', // [101]\n'NUMPAD6', // [102]\n'NUMPAD7', // [103]\n'NUMPAD8', // [104]\n'NUMPAD9', // [105]\n'MULTIPLY', // [106]\n'ADD', // [107]\n'SEPARATOR', // [108]\n'SUBTRACT', // [109]\n'DECIMAL', // [110]\n'DIVIDE', // [111]\n'F1', // [112]\n'F2', // [113]\n'F3', // [114]\n'F4', // [115]\n'F5', // [116]\n'F6', // [117]\n'F7', // [118]\n'F8', // [119]\n'F9', // [120]\n'F10', // [121]\n'F11', // [122]\n'F12', // [123]\n'F13', // [124]\n'F14', // [125]\n'F15', // [126]\n'F16', // [127]\n'F17', // [128]\n'F18', // [129]\n'F19', // [130]\n'F20', // [131]\n'F21', // [132]\n'F22', // [133]\n'F23', // [134]\n'F24', // [135]\n'', // [136]\n'', // [137]\n'', // [138]\n'', // [139]\n'', // [140]\n'', // [141]\n'', // [142]\n'', // [143]\n'NUM_LOCK', // [144]\n'SCROLL_LOCK', // [145]\n'WIN_OEM_FJ_JISHO', // [146]\n'WIN_OEM_FJ_MASSHOU', // [147]\n'WIN_OEM_FJ_TOUROKU', // [148]\n'WIN_OEM_FJ_LOYA', // [149]\n'WIN_OEM_FJ_ROYA', // [150]\n'', // [151]\n'', // [152]\n'', // [153]\n'', // [154]\n'', // [155]\n'', // [156]\n'', // [157]\n'', // [158]\n'', // [159]\n'@', // [160]\n'!', // [161]\n'\"', // [162]\n'#', // [163]\n'$', // [164]\n'%', // [165]\n'&', // [166]\n'_', // [167]\n'(', // [168]\n')', // [169]\n'*', // [170]\n'+', // [171]\n'|', // [172]\n'-', // [173]\n'{', // [174]\n'}', // [175]\n'~', // [176]\n'', // [177]\n'', // [178]\n'', // [179]\n'', // [180]\n'VOLUME_MUTE', // [181]\n'VOLUME_DOWN', // [182]\n'VOLUME_UP', // [183]\n'', // [184]\n'', // [185]\n';', // [186]\n'=', // [187]\n',', // [188]\n'-', // [189]\n'.', // [190]\n'/', // [191]\n'`', // [192]\n'', // [193]\n'', // [194]\n'', // [195]\n'', // [196]\n'', // [197]\n'', // [198]\n'', // [199]\n'', // [200]\n'', // [201]\n'', // [202]\n'', // [203]\n'', // [204]\n'', // [205]\n'', // [206]\n'', // [207]\n'', // [208]\n'', // [209]\n'', // [210]\n'', // [211]\n'', // [212]\n'', // [213]\n'', // [214]\n'', // [215]\n'', // [216]\n'', // [217]\n'', // [218]\n'[', // [219]\n'\\\\', // [220]\n']', // [221]\n\"'\", // [222]\n'', // [223]\n'META', // [224]\n'ALTGR', // [225]\n'', // [226]\n'WIN_ICO_HELP', // [227]\n'WIN_ICO_00', // [228]\n'', // [229]\n'WIN_ICO_CLEAR', // [230]\n'', // [231]\n'', // [232]\n'WIN_OEM_RESET', // [233]\n'WIN_OEM_JUMP', // [234]\n'WIN_OEM_PA1', // [235]\n'WIN_OEM_PA2', // [236]\n'WIN_OEM_PA3', // [237]\n'WIN_OEM_WSCTRL', // [238]\n'WIN_OEM_CUSEL', // [239]\n'WIN_OEM_ATTN', // [240]\n'WIN_OEM_FINISH', // [241]\n'WIN_OEM_COPY', // [242]\n'WIN_OEM_AUTO', // [243]\n'WIN_OEM_ENLW', // [244]\n'WIN_OEM_BACKTAB', // [245]\n'ATTN', // [246]\n'CRSEL', // [247]\n'EXSEL', // [248]\n'EREOF', // [249]\n'PLAY', // [250]\n'ZOOM', // [251]\n'', // [252]\n'PA1', // [253]\n'WIN_OEM_CLEAR', // [254]\n'' // [255]\n];\nvar sharedInstance;\n/**\n * Class KeyMapper\n * @param {object} [options] options\n * @param {string} options.splitter splitter string default is +\n * @ignore\n */\n\nvar KeyMapper = /*#__PURE__*/function () {\n function KeyMapper(options) {\n this._setSplitter(options);\n }\n /**\n * Set key splitter\n * @param {object} options Option object\n * @private\n */\n\n\n var _proto = KeyMapper.prototype;\n\n _proto._setSplitter = function _setSplitter(options) {\n var splitter = options ? options.splitter : '+';\n this._splitter = splitter;\n }\n /**\n * Convert event to keyMap\n * @param {event} event Event object\n * @returns {string}\n */\n ;\n\n _proto.convert = function convert(event) {\n var keyMap = [];\n\n if (event.shiftKey) {\n keyMap.push('SHIFT');\n }\n\n if (event.ctrlKey) {\n keyMap.push('CTRL');\n }\n\n if (event.metaKey) {\n keyMap.push('META');\n }\n\n if (event.altKey) {\n keyMap.push('ALT');\n }\n\n var keyChar = this._getKeyCodeChar(event.keyCode);\n\n if (keyChar) {\n keyMap.push(keyChar);\n }\n\n return keyMap.join(this._splitter);\n }\n /**\n * Get character from key code\n * @param {number} keyCode Key code\n * @returns {string}\n * @private\n */\n ;\n\n _proto._getKeyCodeChar = function _getKeyCodeChar(keyCode) {\n var keyCodeCharacter = KEYBOARD_MAP[keyCode];\n return keyCodeCharacter;\n }\n /**\n * Get sharedInstance\n * @returns {KeyMapper}\n */\n ;\n\n KeyMapper.getSharedInstance = function getSharedInstance() {\n if (!sharedInstance) {\n sharedInstance = new KeyMapper();\n }\n\n return sharedInstance;\n }\n /**\n * get key code for a character\n * @param {string} char - a character to be converted\n * @returns {number} key code for the char\n * @static\n */\n ;\n\n KeyMapper.keyCode = function keyCode(char) {\n return KEYBOARD_MAP.indexOf(char);\n };\n\n return KeyMapper;\n}();\n\n/* harmony default export */ var keyMapper = (KeyMapper);\n// CONCATENATED MODULE: ./src/js/mdListManager.js\n/**\n * @fileoverview Implements markdown list manager\n * @author NHN FE Development Lab \n */\nvar FIND_LIST_RX = /^[ \\t]*([-*]|[\\d]+\\.)( \\[[ xX]])? /;\nvar FIND_TASK_LIST_RX = /^[ \\t]*([*-] |[\\d]+\\. )(\\[[ xX]] )/;\nvar FIND_UL_RX = /^[ \\t]*[-*] .*/;\nvar FIND_OL_TASK_RX = /^[ \\t]*[\\d]+\\. \\[[ xX]] .*/;\nvar LIST_SYNTAX_RX = /([*-] |[\\d]+\\. )/;\nvar TASK_SYNTAX_RX = /([-*] |[\\d]+\\. )(\\[[ xX]] )/;\nvar LIST_OR_TASK_SYNTAX_RX = /([-*]|[\\d]+\\.)( \\[[ xX]])? /;\nvar UL_TASK_SYNTAX_RX = /([-*])( \\[[ xX]]) /;\nvar OL_SYNTAX_RX = /([\\d])+\\.( \\[[ xX]])? /;\nvar FIND_TABLE_RX = /^\\|([-\\s\\w\\d\\t<>?!@#$%^&*()_=+\\\\/'\";: \\r[\\]]*\\|+)+/i;\nvar FIND_HEADING_RX = /^#+\\s/;\nvar FIND_BLOCK_RX = /^ {0,3}(```|\\||>)/;\n/**\n * Class MdListManager\n * @param {MarkdownEditor} mde - MarkdownEditor instance\n * @ignore\n */\n\nvar MdListManager = /*#__PURE__*/function () {\n function MdListManager(mde) {\n this.cm = mde.getEditor();\n this.doc = this.cm.getDoc();\n this.toastMark = mde.getToastMark();\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'list';\n }\n /**\n * Sort line number of selection descending\n * @param {{from, to}} range start, end CodeMirror range information\n * @returns {{start: {number}, end: {number}}}\n * @private\n */\n\n\n var _proto = MdListManager.prototype;\n\n _proto._createSortedLineRange = function _createSortedLineRange(range) {\n var isReversed = range.from.line > range.to.line;\n var rangeStart = {\n line: isReversed ? range.to.line : range.from.line,\n ch: 0\n };\n var rangeEnd = {\n line: isReversed ? range.from.line : range.to.line,\n ch: 0\n };\n return {\n start: rangeStart.line,\n end: rangeEnd.line\n };\n }\n /**\n * For odering the ol list, search preivous lines and\n * calculate ordinal number when find ol list\n * @param {number} lineNumber lineNumber\n * @returns {number}\n * @private\n */\n ;\n\n _proto._calculateOrdinalNumber = function _calculateOrdinalNumber(lineNumber) {\n var ordinalNumber = 1;\n\n for (var i = lineNumber - 1; i >= 0; i -= 1) {\n var depth = this._getListDepth(i);\n\n if (depth === 1 && OL_SYNTAX_RX.exec(this.doc.getLine(i))) {\n ordinalNumber = parseInt(RegExp.$1, 10) + 1;\n break;\n } else if (depth === 0) {\n break;\n }\n }\n\n return ordinalNumber;\n };\n\n _proto._isListLine = function _isListLine(lineNumber) {\n return !!FIND_LIST_RX.exec(this.doc.getLine(lineNumber));\n }\n /**\n * If text already have sytax for heading, table and code block,\n * can not change to list.\n * @param {number} lineNumber lineNumber\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isCanBeList = function _isCanBeList(lineNumber) {\n var line = this.doc.getLine(lineNumber);\n return !FIND_BLOCK_RX.test(line) && !FIND_TABLE_RX.test(line) && !FIND_HEADING_RX.test(line);\n }\n /**\n * Return a function for change according to type\n * @param {string} type ol, ul, task\n * @returns {Function}\n * @private\n */\n ;\n\n _proto._getChangeFn = function _getChangeFn(type) {\n var _this = this;\n\n var fn;\n\n switch (type) {\n case 'ol':\n case 'ul':\n fn = function fn(lineNumber) {\n return _this._changeToList(lineNumber, type);\n };\n\n break;\n\n case 'task':\n fn = function fn(lineNumber) {\n return _this._changeToTask(lineNumber);\n };\n\n break;\n\n default:\n break;\n }\n\n return fn;\n }\n /**\n * Change syntax by traversing each line selected.\n * @param {{from, to}} range start, end CodeMirror range information\n * @param {string} type ol, ul, task\n */\n ;\n\n _proto.changeSyntax = function changeSyntax(range, type) {\n var newListLine = [];\n\n var lineRange = this._createSortedLineRange(range);\n\n var startLineNumber = lineRange.start,\n endLineNumber = lineRange.end;\n\n var changeFn = this._getChangeFn(type);\n\n for (var lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber += 1) {\n if (!this._isCanBeList(lineNumber)) {\n break;\n } // If text of lineNumber is not list, cache for inserting blank line\n\n\n if (!this._isListLine(lineNumber)) {\n newListLine.push(lineNumber);\n }\n\n changeFn(lineNumber);\n } // Should insert blank line before and after new list\n\n\n this._insertBlankLineForNewList(newListLine);\n\n this.cm.focus();\n };\n\n _proto._replaceLineText = function _replaceLineText(text, lineNumber) {\n this.doc.replaceRange(text, {\n line: lineNumber,\n ch: 0\n });\n }\n /**\n * change to list according to the type.\n * @param {number} lineNumber line number\n * @param {string} type ol, ul\n * @private\n */\n ;\n\n _proto._changeToList = function _changeToList(lineNumber, type) {\n var _this2 = this;\n\n if (this._isListLine(lineNumber)) {\n // If type is ol, need ordinal number.\n this._changeSameDepthList(lineNumber, type === 'ol' ? function (lineNum, ordinalNumber) {\n _this2._replaceListTypeToOL(lineNum, ordinalNumber);\n } : function (lineNum) {\n _this2._replaceListTypeToUL(lineNum);\n });\n } else {\n this._replaceLineText(type === 'ol' ? this._calculateOrdinalNumber(lineNumber) + \". \" : '* ', lineNumber);\n }\n }\n /**\n * change to task list according\n * @param {number} lineNumber line number\n * @private\n */\n ;\n\n _proto._changeToTask = function _changeToTask(lineNumber) {\n if (FIND_TASK_LIST_RX.exec(this.doc.getLine(lineNumber))) {\n this._replaceLineTextByRegexp(lineNumber, TASK_SYNTAX_RX, '$1');\n } else if (this._isListLine(lineNumber)) {\n this._replaceLineTextByRegexp(lineNumber, LIST_SYNTAX_RX, '$1[ ] ');\n } else {\n this._replaceLineText('* [ ] ', lineNumber);\n }\n };\n\n _proto._getListDepth = function _getListDepth(lineNumber) {\n var depth = 0;\n var text = this.doc.getLine(lineNumber);\n\n if (text) {\n var mdNode = this.toastMark.findFirstNodeAtLine(lineNumber + 1);\n\n while (mdNode && mdNode.type !== 'document') {\n if (mdNode.type === 'list') {\n depth += 1;\n }\n\n mdNode = mdNode.parent;\n }\n }\n\n return depth;\n };\n\n _proto._findSameDepthList = function _findSameDepthList(listNumber, depth, isIncrease) {\n var lineCount = this.doc.lineCount();\n var result = [];\n var i = listNumber;\n var currentLineDepth;\n\n while (isIncrease ? i < lineCount - 1 : i > 0) {\n i = isIncrease ? i + 1 : i - 1;\n currentLineDepth = this._getListDepth(i);\n\n if (currentLineDepth === depth) {\n result.push(i);\n } else if (currentLineDepth < depth) {\n break;\n }\n }\n\n return result;\n }\n /**\n * Find Sampe depth list before and after the line number,\n * and then same depth lines change using replacer function\n * @param {number} lineNumber line number\n * @param {Function} replacer The function should be called with line numbers and ordinal number as arguments.\n * @private\n */\n ;\n\n _proto._changeSameDepthList = function _changeSameDepthList(lineNumber, replacer) {\n var depth = this._getListDepth(lineNumber);\n\n var backwardList = this._findSameDepthList(lineNumber, depth, false).reverse();\n\n var forwardList = this._findSameDepthList(lineNumber, depth, true);\n\n var sameDepthList = backwardList.concat([lineNumber]).concat(forwardList);\n sameDepthList.forEach(function (lineNum, i) {\n replacer(lineNum, i + 1);\n });\n }\n /**\n * Replace text using regular expression\n * @param {number} lineNumber Line number\n * @param {RegExp} regexp Regexp for find list syntax\n * @param {string} replacePattern Replacement string\n * @private\n */\n ;\n\n _proto._replaceLineTextByRegexp = function _replaceLineTextByRegexp(lineNumber, regexp, replacePattern) {\n var line = this.doc.getLine(lineNumber);\n var currentLineStart = {\n line: lineNumber,\n ch: 0\n };\n var currentLineEnd = {\n line: lineNumber,\n ch: line.length\n };\n line = line.replace(regexp, replacePattern);\n this.doc.replaceRange(line, currentLineStart, currentLineEnd);\n };\n\n _proto._replaceListTypeToUL = function _replaceListTypeToUL(lineNumber) {\n var lineText = this.doc.getLine(lineNumber);\n\n if (UL_TASK_SYNTAX_RX.exec(lineText)) {\n this._replaceLineTextByRegexp(lineNumber, UL_TASK_SYNTAX_RX, '$1 ');\n } else if (OL_SYNTAX_RX.exec(lineText)) {\n this._replaceLineTextByRegexp(lineNumber, OL_SYNTAX_RX, '* ');\n }\n };\n\n _proto._replaceListTypeToOL = function _replaceListTypeToOL(lineNumber, ordinalNumber) {\n var lineText = this.doc.getLine(lineNumber);\n\n if (FIND_UL_RX.exec(lineText) || FIND_OL_TASK_RX.exec(lineText)) {\n this._replaceLineTextByRegexp(lineNumber, LIST_OR_TASK_SYNTAX_RX, ordinalNumber + \". \");\n } else if (OL_SYNTAX_RX.exec(lineText)) {\n if (parseInt(RegExp.$1, 10) !== ordinalNumber) {\n this._replaceLineTextByRegexp(lineNumber, OL_SYNTAX_RX, ordinalNumber + \". \");\n }\n }\n }\n /**\n * The new list must have a blank line before and after.\n * @param {Array} newListLines lines that changed to list\n * @private\n */\n ;\n\n _proto._insertBlankLineForNewList = function _insertBlankLineForNewList(newListLines) {\n var length = newListLines.length;\n\n if (length) {\n var startLineNumber = newListLines[0];\n var endLineNumber = newListLines[length - 1];\n\n if (this._isNotBlankNotListLine(endLineNumber + 1)) {\n this.doc.replaceRange('\\n', {\n line: endLineNumber,\n ch: this.doc.getLine(endLineNumber).length\n });\n }\n\n if (startLineNumber > 0 && this._isNotBlankNotListLine(startLineNumber - 1)) {\n this.doc.replaceRange('\\n', {\n line: startLineNumber,\n ch: 0\n });\n }\n }\n };\n\n _proto._isNotBlankNotListLine = function _isNotBlankNotListLine(lineNumber) {\n return !!this.doc.getLine(lineNumber) && !this._isListLine(lineNumber);\n };\n\n return MdListManager;\n}();\n\n/* harmony default export */ var mdListManager = (MdListManager);\n// CONCATENATED MODULE: ./src/js/componentManager.js\n/**\n * @fileoverview Implements ComponentManager\n * @author NHN FE Development Lab \n */\n\n/**\n * Class ComponentManager\n * @param {MarkdownEditor|WysiwygEditor} editor - Editor instance\n * @ignore\n */\nvar ComponentManager = /*#__PURE__*/function () {\n function ComponentManager(editor) {\n /**\n * private\n * @type {object}\n * @private\n */\n this._managers = {};\n this._editor = editor;\n }\n /**\n * addManager\n * Add manager\n * @param {string|function} nameOrConstructor Manager name or constructor\n * @param {function} [ManagerConstructor] Constructor\n */\n\n\n var _proto = ComponentManager.prototype;\n\n _proto.addManager = function addManager(nameOrConstructor, ManagerConstructor) {\n if (!ManagerConstructor) {\n ManagerConstructor = nameOrConstructor;\n nameOrConstructor = null;\n }\n\n var instance = new ManagerConstructor(this._editor);\n this._managers[nameOrConstructor || instance.name] = instance;\n }\n /**\n * getManager\n * Get manager by manager name\n * @param {string} name Manager name\n * @returns {object} manager\n */\n ;\n\n _proto.getManager = function getManager(name) {\n return this._managers[name];\n }\n /**\n * Remove Manager.\n * @param {string} name - manager name\n */\n ;\n\n _proto.removeManager = function removeManager(name) {\n var manager = this.getManager(name);\n\n if (!manager) {\n return;\n }\n\n if (manager.destroy) {\n manager.destroy();\n }\n\n delete this._managers[name];\n };\n\n return ComponentManager;\n}();\n\n/* harmony default export */ var componentManager = (ComponentManager);\n// CONCATENATED MODULE: ./src/js/mdTextObject.js\n/**\n * @fileoverview Implements markdown textObject\n * @author NHN FE Development Lab \n */\n\n/**\n * Class Markdown textObject\n * @param {MarkdownEditor} mde - MarkdownEditor instance\n * @param {object} range - range\n */\nvar MdTextObject = /*#__PURE__*/function () {\n function MdTextObject(mde, range) {\n this._mde = mde;\n this.setRange(range || mde.getRange());\n }\n /**\n * Set start\n * @param {object} rangeStart Start of range\n * @private\n */\n\n\n var _proto = MdTextObject.prototype;\n\n _proto._setStart = function _setStart(rangeStart) {\n this._start = rangeStart;\n }\n /**\n * Set end\n * @param {object} rangeEnd End of range\n * @private\n */\n ;\n\n _proto._setEnd = function _setEnd(rangeEnd) {\n this._end = rangeEnd;\n }\n /**\n * Set range to given range\n * @param {object} range Range object\n */\n ;\n\n _proto.setRange = function setRange(range) {\n this._setStart(range.start);\n\n this._setEnd(range.end);\n }\n /**\n * Set start to end\n * @param {object} range Range object\n */\n ;\n\n _proto.setEndBeforeRange = function setEndBeforeRange(range) {\n this._setEnd(range.start);\n }\n /**\n * Expand startOffset by 1\n */\n ;\n\n _proto.expandStartOffset = function expandStartOffset() {\n var start = this._start;\n\n if (start.ch !== 0) {\n start.ch -= 1;\n }\n }\n /**\n * Expand endOffset by 1\n */\n ;\n\n _proto.expandEndOffset = function expandEndOffset() {\n var end = this._end;\n\n if (end.ch < this._mde.getEditor().getDoc().getLine(end.line).length) {\n end.ch += 1;\n }\n }\n /**\n * Get current selection's text content\n * @returns {{start: {line: number, ch: number}, end: {line: number, ch: number}}}\n */\n ;\n\n _proto.getTextContent = function getTextContent() {\n return this._mde.getEditor().getRange(this._start, this._end);\n }\n /**\n * Replace current selection's content with given text content\n * @param {string} content Replacement content\n */\n ;\n\n _proto.replaceContent = function replaceContent(content) {\n this._mde.getEditor().replaceRange(content, this._start, this._end, '+input');\n }\n /**\n * Delete current selection's content\n */\n ;\n\n _proto.deleteContent = function deleteContent() {\n this._mde.getEditor().replaceRange('', this._start, this._end, '+delete');\n }\n /**\n * peek StartBeforeOffset\n * @param {number} offset Offset\n * @returns {{start: {line: number, ch: number}, end: {line: number, ch: number}}}\n */\n ;\n\n _proto.peekStartBeforeOffset = function peekStartBeforeOffset(offset) {\n var peekStart = {\n line: this._start.line,\n ch: Math.max(this._start.ch - offset, 0)\n };\n return this._mde.getEditor().getRange(peekStart, this._start);\n };\n\n return MdTextObject;\n}();\n\n/* harmony default export */ var mdTextObject = (MdTextObject);\n// EXTERNAL MODULE: ./src/js/utils/markdown.js\nvar markdown = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isFunction.js\nvar isFunction = __webpack_require__(27);\nvar isFunction_default = /*#__PURE__*/__webpack_require__.n(isFunction);\n\n// CONCATENATED MODULE: ./src/js/markTextHelper.js\nfunction markTextHelper_extends() { markTextHelper_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return markTextHelper_extends.apply(this, arguments); }\n\n\n\n\nvar CLS_PREFIX = 'tui-md-';\nvar classNameMap = applyClsToValue({\n DELIM: 'delimiter',\n META: 'meta',\n TEXT: 'marked-text',\n THEMATIC_BREAK: 'thematic-break',\n CODE_BLOCK: 'code-block',\n TABLE: 'table',\n HTML: 'html'\n});\nvar delimSize = {\n strong: 2,\n emph: 1,\n strike: 2\n};\n\nfunction cls() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n return names.map(function (className) {\n return \"\" + CLS_PREFIX + className;\n }).join(' ');\n}\n\nfunction applyClsToValue(obj) {\n forEachOwnProperties_default()(obj, function (value, key) {\n obj[key] = cls(value);\n });\n return obj;\n}\n\nfunction markTextHelper_markInfo(start, end, className) {\n return {\n start: start,\n end: end,\n className: className\n };\n}\n\nfunction heading(_ref, start, end) {\n var level = _ref.level,\n headingType = _ref.headingType;\n var marks = [markTextHelper_markInfo(start, end, cls('heading', \"heading\" + level))];\n\n if (headingType === 'atx') {\n marks.push(markTextHelper_markInfo(start, Object(markdown[\"a\" /* addChPos */])(start, level), classNameMap.DELIM));\n } else {\n marks.push(markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(end, 0), end, classNameMap.DELIM + \" setext\"));\n }\n\n return {\n marks: marks\n };\n}\n\nfunction emphasisAndStrikethrough(_ref2, start, end) {\n var type = _ref2.type;\n return {\n marks: [markTextHelper_markInfo(start, end, cls(\"\" + type)), markTextHelper_markInfo(start, Object(markdown[\"a\" /* addChPos */])(start, delimSize[type]), classNameMap.DELIM), markTextHelper_markInfo(Object(markdown[\"a\" /* addChPos */])(end, -delimSize[type]), end, classNameMap.DELIM)]\n };\n}\n\nfunction markLink(start, end, linkTextStart, lastChildCh) {\n return [markTextHelper_markInfo(start, end, cls('link')), markTextHelper_markInfo(linkTextStart, Object(markdown[\"l\" /* setChPos */])(end, lastChildCh), cls('link-desc')), markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(start, linkTextStart.ch + 1), Object(markdown[\"l\" /* setChPos */])(end, lastChildCh - 1), classNameMap.TEXT), markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(end, lastChildCh), end, cls('link-url')), markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(end, lastChildCh + 1), Object(markdown[\"a\" /* addChPos */])(end, -1), classNameMap.TEXT)];\n}\n\nfunction markTextHelper_image(_ref3, start, end) {\n var lastChild = _ref3.lastChild;\n var lastChildCh = lastChild ? Object(markdown[\"c\" /* getMdEndCh */])(lastChild) + 1 : 3; // 3: length of '![]'\n\n var linkTextEnd = Object(markdown[\"a\" /* addChPos */])(start, 1);\n return {\n marks: [markTextHelper_markInfo(start, linkTextEnd, classNameMap.META)].concat(markLink(start, end, linkTextEnd, lastChildCh))\n };\n}\n\nfunction markTextHelper_link(_ref4, start, end) {\n var lastChild = _ref4.lastChild,\n extendedAutolink = _ref4.extendedAutolink;\n var lastChildCh = lastChild ? Object(markdown[\"c\" /* getMdEndCh */])(lastChild) + 1 : 2; // 2: length of '[]'\n\n var marks = extendedAutolink ? [markTextHelper_markInfo(start, end, cls('link', 'link-desc') + \" \" + classNameMap.TEXT)] : markLink(start, end, start, lastChildCh);\n return {\n marks: marks\n };\n}\n\nfunction markTextHelper_code(_ref5, start, end) {\n var tickCount = _ref5.tickCount;\n var openDelimEnd = Object(markdown[\"a\" /* addChPos */])(start, tickCount);\n var closeDelimStart = Object(markdown[\"a\" /* addChPos */])(end, -tickCount);\n return {\n marks: [markTextHelper_markInfo(start, end, cls('code')), markTextHelper_markInfo(start, openDelimEnd, classNameMap.DELIM + \" start\"), markTextHelper_markInfo(openDelimEnd, closeDelimStart, classNameMap.TEXT), markTextHelper_markInfo(closeDelimStart, end, classNameMap.DELIM + \" end\")]\n };\n}\n\nfunction markTextHelper_codeBlock(node, start, end, endLine) {\n var fenceOffset = node.fenceOffset,\n fenceLength = node.fenceLength,\n fenceChar = node.fenceChar,\n info = node.info,\n infoPadding = node.infoPadding,\n parent = node.parent;\n var fenceEnd = fenceOffset + fenceLength;\n var marks = [markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(start, 0), end, classNameMap.CODE_BLOCK)];\n\n if (fenceChar) {\n marks.push(markTextHelper_markInfo(start, Object(markdown[\"a\" /* addChPos */])(start, fenceEnd), classNameMap.DELIM));\n }\n\n if (info) {\n marks.push(markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(start, fenceEnd), Object(markdown[\"l\" /* setChPos */])(start, fenceEnd + infoPadding + info.length), classNameMap.META));\n }\n\n var codeBlockEnd = \"^(\\\\s{0,3})(\" + fenceChar + \"{\" + fenceLength + \",})\";\n var CLOSED_RX = new RegExp(codeBlockEnd);\n\n if (CLOSED_RX.test(endLine)) {\n marks.push(markTextHelper_markInfo(Object(markdown[\"l\" /* setChPos */])(end, 0), end, classNameMap.DELIM));\n }\n\n var lineBackground = parent.type !== 'item' && parent.type !== 'blockQuote' ? {\n start: start.line,\n end: end.line,\n className: classNameMap.CODE_BLOCK\n } : null;\n return {\n marks: marks,\n lineBackground: markTextHelper_extends({}, lineBackground)\n };\n}\n\nfunction markListItemChildren(node, className) {\n var marks = [];\n\n while (node) {\n var _node = node,\n type = _node.type;\n\n if (type === 'paragraph' || type === 'codeBlock') {\n marks.push(markTextHelper_markInfo({\n line: Object(markdown[\"f\" /* getMdStartLine */])(node) - 1,\n ch: Object(markdown[\"e\" /* getMdStartCh */])(node) - 1\n }, {\n line: Object(markdown[\"d\" /* getMdEndLine */])(node) - 1,\n ch: Object(markdown[\"c\" /* getMdEndCh */])(node)\n }, className));\n }\n\n node = node.next;\n }\n\n return marks;\n}\n\nfunction markParagraphInBlockQuote(node) {\n var marks = [];\n\n while (node) {\n marks.push(markTextHelper_markInfo({\n line: Object(markdown[\"f\" /* getMdStartLine */])(node) - 1,\n ch: Object(markdown[\"e\" /* getMdStartCh */])(node) - 1\n }, {\n line: Object(markdown[\"d\" /* getMdEndLine */])(node) - 1,\n ch: Object(markdown[\"c\" /* getMdEndCh */])(node)\n }, classNameMap.TEXT));\n node = node.next;\n }\n\n return marks;\n}\n\nfunction blockQuote(node, start, end) {\n var marks = node.parent && node.parent.type !== 'blockQuote' ? [markTextHelper_markInfo(start, end, cls('block-quote'))] : [];\n\n if (node.firstChild) {\n var childMarks = [];\n\n if (node.firstChild.type === 'paragraph') {\n childMarks = markParagraphInBlockQuote(node.firstChild.firstChild, classNameMap.TEXT);\n } else if (node.firstChild.type === 'list') {\n childMarks = markListItemChildren(node.firstChild, classNameMap.TEXT);\n }\n\n marks = [].concat(marks, childMarks);\n }\n\n return {\n marks: marks\n };\n}\n\nfunction getClassNameOfListItem(node) {\n var depth = 0;\n\n while (node.parent.parent && node.parent.parent.type === 'item') {\n node = node.parent.parent;\n depth += 1;\n }\n\n var newClassName = ['list-item-odd', 'list-item-even'][depth % 2]; // @TODO remove it in the next major version\n // these class names are for the legacy style 'old.css'\n\n var oldClassName = ['fisrt', 'second', 'third'][depth % 3];\n return cls('list-item', \"\" + newClassName) + \" \" + oldClassName;\n}\n\nfunction markTextHelper_item(node, start) {\n var itemClassName = getClassNameOfListItem(node);\n var _node$listData = node.listData,\n padding = _node$listData.padding,\n task = _node$listData.task;\n return {\n marks: [markTextHelper_markInfo(start, Object(markdown[\"a\" /* addChPos */])(start, padding), itemClassName + \" \" + cls('list-item-bullet'))].concat(task ? [markTextHelper_markInfo(Object(markdown[\"a\" /* addChPos */])(start, padding), Object(markdown[\"a\" /* addChPos */])(start, padding + 3), itemClassName + \" \" + classNameMap.DELIM), markTextHelper_markInfo(Object(markdown[\"a\" /* addChPos */])(start, padding + 1), Object(markdown[\"a\" /* addChPos */])(start, padding + 2), classNameMap.META)] : [], markListItemChildren(node.firstChild, itemClassName + \" \" + classNameMap.TEXT))\n };\n}\n\nvar markNodeFuncMap = {\n heading: heading,\n strong: emphasisAndStrikethrough,\n emph: emphasisAndStrikethrough,\n strike: emphasisAndStrikethrough,\n link: markTextHelper_link,\n image: markTextHelper_image,\n code: markTextHelper_code,\n codeBlock: markTextHelper_codeBlock,\n blockQuote: blockQuote,\n item: markTextHelper_item\n};\nvar simpleMarkClassNameMap = {\n thematicBreak: classNameMap.THEMATIC_BREAK,\n table: classNameMap.TABLE,\n tableCell: classNameMap.TEXT,\n htmlInline: classNameMap.HTML\n};\n/**\n * Gets mark information to the markdown node.\n * @param {Object} node - node returned from ToastMark\n * @param {Object} start - start node's data\n * @param {Object} end - end node's data\n * @param {Object} endLine - end line's data\n * @returns {?Object} mark information\n * @ignore\n */\n\nfunction getMarkInfo(node, start, end, endLine) {\n var type = node.type;\n\n if (isFunction_default()(markNodeFuncMap[type])) {\n return markNodeFuncMap[type](node, start, end, endLine);\n }\n\n if (simpleMarkClassNameMap[type]) {\n return {\n marks: [markTextHelper_markInfo(start, end, simpleMarkClassNameMap[type])]\n };\n }\n\n return null;\n}\n// CONCATENATED MODULE: ./src/js/markdownEditor.js\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction markdownEditor_extends() { markdownEditor_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return markdownEditor_extends.apply(this, arguments); }\n\n/**\n * @fileoverview Implements markdown editor\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\nvar markdownEditor_keyMapper = keyMapper.getSharedInstance();\nvar defaultToolbarState = {\n strong: false,\n emph: false,\n strike: false,\n thematicBreak: false,\n blockQuote: false,\n code: false,\n codeBlock: false,\n list: false,\n taskList: false,\n orderedList: false,\n heading: false,\n table: false\n};\n\nfunction getToolbarStateType(_ref) {\n var type = _ref.type,\n listData = _ref.listData;\n\n if (type === 'list' || type === 'item') {\n if (listData.task) {\n return 'taskList';\n }\n\n return listData.type === 'ordered' ? 'orderedList' : 'list';\n }\n\n if (type.indexOf('table') !== -1) {\n return 'table';\n }\n\n return type;\n}\n\nfunction getToolbarState(targetNode, ch, mdLine, mdCh) {\n var state = markdownEditor_extends({}, defaultToolbarState);\n\n var listEnabled = false;\n Object(markdown[\"m\" /* traverseParentNodes */])(targetNode, function (mdNode) {\n var type = getToolbarStateType(mdNode);\n\n if (!isBoolean_default()(state[type])) {\n return;\n }\n\n if (type === 'list' || type === 'orderedList') {\n if (!listEnabled) {\n state[type] = true;\n listEnabled = true;\n }\n } else {\n state[type] = true;\n }\n }); // if position is matched to start, end position of inline node, highlighting is ignored\n\n if (Object(markdown[\"k\" /* isStyledTextNode */])(targetNode) && (mdCh === ch && Object(markdown[\"d\" /* getMdEndLine */])(targetNode) === mdLine || mdCh === Object(markdown[\"c\" /* getMdEndCh */])(targetNode) + 1 && mdLine === Object(markdown[\"d\" /* getMdEndLine */])(targetNode) || mdCh === Object(markdown[\"e\" /* getMdStartCh */])(targetNode) && mdLine === Object(markdown[\"f\" /* getMdStartLine */])(targetNode))) {\n state[targetNode.type] = false;\n }\n\n return state;\n}\n/**\n * Return whether state changed or not\n * @param {object} previousState - Previous state\n * @param {object} currentState - Current state\n * @returns {boolean} - changed state\n * @private\n */\n\n\nfunction isToolbarStateChanged(previousState, currentState) {\n if (!previousState && !currentState) {\n return false;\n }\n\n if (!previousState && currentState || previousState && !currentState) {\n return true;\n }\n\n return Object.keys(currentState).some(function (type) {\n return previousState[type] !== currentState[type];\n });\n}\n\nvar ATTR_NAME_MARK = 'data-tui-mark';\nvar TASK_MARKER_RX = /^\\[(\\s*)(x?)(\\s*)\\](?:\\s+)/i;\nvar TASK_MARKER_KEY_RX = /x|backspace/i;\n/**\n * Class MarkdownEditor\n * @param {HTMLElement} el - container element\n * @param {EventManager} eventManager - event manager\n * @param {Object} options - options of editor\n */\n\nvar markdownEditor_MarkdownEditor = /*#__PURE__*/function (_CodeMirrorExt) {\n _inheritsLoose(MarkdownEditor, _CodeMirrorExt);\n\n function MarkdownEditor(el, eventManager, toastMark, options) {\n var _this;\n\n _this = _CodeMirrorExt.call(this, el, {\n dragDrop: true,\n allowDropFileTypes: ['image'],\n extraKeys: {\n Enter: 'newlineAndIndentContinueMarkdownList',\n Tab: 'indentOrderedList',\n 'Shift-Tab': 'indentLessOrderedList',\n 'Shift-Ctrl-X': function ShiftCtrlX() {\n return _this._toggleTaskStates();\n }\n },\n viewportMargin: options && options.height === 'auto' ? Infinity : 10\n }) || this;\n _this.eventManager = eventManager;\n _this.componentManager = new componentManager(_assertThisInitialized(_this));\n _this.toastMark = toastMark;\n\n _this.componentManager.addManager(mdListManager);\n /**\n * latest state info\n * @type {object}\n * @private\n */\n\n\n _this._latestState = null;\n /**\n * map of marked lines\n * @type {Object.\n */\n\n\n\n\n\n\n\nvar DEFAULT_COLOR = 'rgb(34, 34, 34)';\n/**\n * Class WwPasteContentHelper\n * @param {WysiwygEditor} wwe - wysiwygEditor instance\n * @ignore\n */\n\nvar wwPasteContentHelper_WwPasteContentHelper = /*#__PURE__*/function () {\n function WwPasteContentHelper(wwe) {\n this.wwe = wwe;\n }\n /**\n * Process paste data before paste\n * @param {HTMLElement} container - clipboard container\n */\n\n\n var _proto = WwPasteContentHelper.prototype;\n\n _proto.preparePaste = function preparePaste(container) {\n var range = this.wwe.getEditor().getSelection().cloneRange();\n var wwCodeblockManager = this.wwe.componentManager.getManager('codeblock');\n var firstBlockIsTaken = false;\n var tempContainer = document.createElement('div');\n var nodeName, node, isPastingList;\n\n this._pasteFirstAid(container);\n\n var childNodes = toArray_default()(container.childNodes);\n\n while (childNodes.length) {\n node = childNodes[0];\n nodeName = dom[\"a\" /* default */].getNodeName(node);\n isPastingList = nodeName === 'LI' || nodeName === 'UL' || nodeName === 'OL';\n\n if (wwCodeblockManager.isInCodeBlock(range)) {\n dom[\"a\" /* default */].append(tempContainer, wwCodeblockManager.prepareToPasteOnCodeblock(childNodes));\n } else if (isPastingList) {\n dom[\"a\" /* default */].append(tempContainer, this._prepareToPasteList(childNodes, range, firstBlockIsTaken));\n firstBlockIsTaken = true;\n } else {\n dom[\"a\" /* default */].append(tempContainer, childNodes.shift());\n }\n }\n\n container.innerHTML = tempContainer.innerHTML;\n }\n /**\n * Wrap orphan node(inline, text) with div element\n * @param {HTMLElement} container - clipboard container\n * @returns {DocumentFragment}\n * @private\n */\n ;\n\n _proto._wrapOrphanNodeWithDiv = function _wrapOrphanNodeWithDiv(container) {\n var tempContainer = document.createElement('div');\n var currentDiv;\n toArray_default()(container.childNodes).forEach(function (node) {\n var isTextNode = node.nodeType === 3;\n /* eslint-disable max-len */\n\n var isInlineNode = /^(SPAN|A|CODE|EM|I|STRONG|B|S|U|ABBR|ACRONYM|CITE|DFN|KBD|SAMP|VAR|BDO|Q|SUB|SUP)$/gi.test(node.tagName);\n var isBR = node.nodeName === 'BR';\n /* eslint-enable max-len */\n\n if (isTextNode || isInlineNode || isBR) {\n if (!currentDiv) {\n currentDiv = document.createElement('div');\n tempContainer.appendChild(currentDiv);\n }\n\n currentDiv.appendChild(node);\n\n if (isBR) {\n currentDiv = null;\n }\n } else {\n if (currentDiv && currentDiv.lastChild.tagName !== 'BR') {\n currentDiv.appendChild(document.createElement('br'));\n }\n\n currentDiv = null;\n tempContainer.appendChild(node);\n }\n });\n return tempContainer.innerHTML;\n }\n /**\n * Sanitize content of element\n * @param {HTMLElement} container - root element of content to sanitize\n * @private\n */\n ;\n\n _proto._sanitizeHtml = function _sanitizeHtml(container) {\n var sanitizer = this.wwe.getSanitizer();\n var html = Object(htmlSanitizer[\"a\" /* default */])(container.innerHTML, true);\n\n if (sanitizer && sanitizer !== htmlSanitizer[\"a\" /* default */]) {\n html = sanitizer(html);\n }\n\n container.innerHTML = html;\n }\n /**\n * Processing paste data after paste\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._pasteFirstAid = function _pasteFirstAid(container) {\n var _this = this;\n\n this._sanitizeHtml(container);\n\n dom[\"a\" /* default */].findAll(container, '*').forEach(function (node) {\n _this._removeStyles(node);\n });\n var blockTags = 'div, section, article, aside, nav, menus, p';\n\n this._unwrapIfNonBlockElementHasBr(container);\n\n this._unwrapNestedBlocks(container, blockTags);\n\n this._removeUnnecessaryBlocks(container, blockTags);\n\n container.innerHTML = this._wrapOrphanNodeWithDiv(container);\n\n this._preElementAid(container);\n\n this._tableElementAid(container);\n\n toArray_default()(container.children).forEach(function (childNode) {\n if (dom[\"a\" /* default */].getNodeName(childNode) === 'BR') {\n dom[\"a\" /* default */].remove(childNode);\n }\n });\n }\n /**\n * PRE tag formatting\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._preElementAid = function _preElementAid(container) {\n var wwCodeblockManager = this.wwe.componentManager.getManager('codeblock');\n wwCodeblockManager.modifyCodeBlockForWysiwyg(container);\n }\n /**\n * Unwrap span children of document fragment with div element\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._unwrapIfNonBlockElementHasBr = function _unwrapIfNonBlockElementHasBr(container) {\n var nonBlockElements = dom[\"a\" /* default */].findAll(container, 'span, a, b, em, i, s');\n nonBlockElements.forEach(function (node) {\n var brChildren = dom[\"a\" /* default */].children(node, 'br');\n\n if (brChildren.length && node.nodeName !== 'LI' && node.nodeName !== 'UL') {\n dom[\"a\" /* default */].unwrap(node);\n }\n });\n }\n /**\n * Unwrap nested block elements\n * @param {HTMLElement} container - clipboard container\n * @param {string} blockTags - Tag names of block tag\n * @private\n */\n ;\n\n _proto._unwrapNestedBlocks = function _unwrapNestedBlocks(container, blockTags) {\n var leafElements = dom[\"a\" /* default */].findAll(container, '*').filter(function (node) {\n return !matches_default()(node, 'b,s,i,em,code,span,hr') && !node.firstChild;\n });\n leafElements.forEach(function (node) {\n var leafElement = node.nodeName === 'BR' ? node.parentNode : node;\n\n while (dom[\"a\" /* default */].parents(leafElement, blockTags).length) {\n var parent = dom[\"a\" /* default */].parent(leafElement, blockTags);\n\n if (parent && parent !== container) {\n dom[\"a\" /* default */].unwrap(parent);\n } else {\n leafElement = leafElement.parentElement;\n }\n }\n });\n }\n /**\n * Remove unnecessary block element in pasting data\n * @param {HTMLElement} container - clipboard container\n * @param {string} blockTags - Tag names of block tag\n * @private\n */\n ;\n\n _proto._removeUnnecessaryBlocks = function _removeUnnecessaryBlocks(container, blockTags) {\n dom[\"a\" /* default */].findAll(container, blockTags).forEach(function (blockElement) {\n var tagName = blockElement.tagName;\n var isDivElement = tagName === 'DIV';\n var isInListItem = !!dom[\"a\" /* default */].parent(blockElement, 'li');\n var isInBlockquote = !!dom[\"a\" /* default */].parent(blockElement, 'blockquote');\n var hasBlockChildElement = !!dom[\"a\" /* default */].children(blockElement, blockTags).length;\n\n if (isDivElement && (isInListItem || isInBlockquote || !hasBlockChildElement)) {\n return;\n }\n\n if (blockElement.lastChild && blockElement.lastChild.nodeName !== 'BR') {\n blockElement.appendChild(document.createElement('br'));\n }\n\n dom[\"a\" /* default */].replaceWith(blockElement, blockElement.innerHTML);\n });\n }\n /**\n * Remove inline style\n * @param {Node} node Node for remove style attribute\n * @private\n */\n ;\n\n _proto._removeStyles = function _removeStyles(node) {\n var colorValue;\n\n if (dom[\"a\" /* default */].getNodeName(node) !== 'SPAN') {\n node.removeAttribute('style');\n } else {\n // Most browser return computed color value even if without style attribute\n if (node.getAttribute('style')) {\n colorValue = node.style.color;\n }\n\n node.removeAttribute('style');\n\n if (colorValue && colorValue !== DEFAULT_COLOR) {\n css_default()(node, {\n color: colorValue\n });\n } else {\n dom[\"a\" /* default */].unwrap(node);\n }\n }\n }\n /**\n * Processing before paste list\n * @param {Array.} nodes Pasting data\n * @param {object} rangeInfo Range information\n * @param {boolean} firstBlockIsTaken Whether first block element taken or not\n * @returns {DocumentFragment}\n * @private\n */\n ;\n\n _proto._prepareToPasteList = function _prepareToPasteList(nodes, rangeInfo, firstBlockIsTaken) {\n var nodeName = dom[\"a\" /* default */].getNodeName(nodes[0]);\n var node = nodes.shift();\n var newFragment = this.wwe.getEditor().getDocument().createDocumentFragment(); // IE somethimes returns ul without li\n\n if (nodeName !== 'LI' && nodes.length && nodes[0].tagName === 'LI') {\n nodeName = 'LI';\n node = this._makeNodeAndAppend({\n tagName: nodeName\n }, node);\n } // pasting list into list, we should care indentation\n\n\n if (nodeName === 'OL' || nodeName === 'UL') {\n // ignore cursor if pasting data has block\n if (!firstBlockIsTaken && this.wwe.getEditor().hasFormat('LI')) {\n dom[\"a\" /* default */].append(newFragment, this._wrapCurrentFormat(node));\n } else {\n newFragment.appendChild(node);\n }\n } else if (nodeName === 'LI') {\n // handle list group\n var listGroup = this.wwe.getEditor().getDocument().createDocumentFragment();\n listGroup.appendChild(node);\n\n while (nodes.length && nodes[0].tagName === 'LI') {\n listGroup.appendChild(nodes.shift());\n } // pasting list into list, we should care indentation\n // ignore cursor if pasting data has block\n\n\n if (!firstBlockIsTaken && this.wwe.getEditor().hasFormat('LI')) {\n dom[\"a\" /* default */].append(newFragment, this._wrapCurrentFormat(listGroup));\n } else if (rangeInfo && (rangeInfo.commonAncestorName === 'UL' || rangeInfo.commonAncestorName === 'OL')) {\n dom[\"a\" /* default */].append(newFragment, this._makeNodeAndAppend({\n tagName: rangeInfo.commonAncestorName\n }, listGroup)); // list from outside\n } else {\n dom[\"a\" /* default */].append(newFragment, this._makeNodeAndAppend({\n tagName: 'UL'\n }, listGroup));\n }\n }\n\n return newFragment;\n }\n /**\n * Unwrap fragment first child for pasting node inline\n * @param {Node} node Pasting DocumentFragment\n * @returns {NodeList}\n * @private\n */\n ;\n\n _proto._unwrapFragmentFirstChildForPasteAsInline = function _unwrapFragmentFirstChildForPasteAsInline(node) {\n dom[\"a\" /* default */].findAll(node, 'br').forEach(function (br) {\n return dom[\"a\" /* default */].remove(br);\n });\n return node.childNodes;\n }\n /**\n * Wrap nodes with current format\n * @param {DocumentFragment} nodes P\n * @returns {HTMLElement}\n * @private\n */\n ;\n\n _proto._wrapCurrentFormat = function _wrapCurrentFormat(nodes) {\n var _this2 = this;\n\n var currentTagName; // expand to pasting area\n\n this._eachCurrentPath(function (path) {\n if (path.tagName !== 'DIV') {\n if (dom[\"a\" /* default */].isElemNode(nodes)) {\n currentTagName = nodes.tagName;\n } else {\n currentTagName = nodes.firstChild.tagName;\n }\n\n if (path.tagName !== currentTagName) {\n nodes = _this2._makeNodeAndAppend(path, nodes);\n }\n }\n });\n\n return nodes;\n };\n\n _proto._eachCurrentPath = function _eachCurrentPath(iteratee) {\n var paths = dom[\"a\" /* default */].getPath(this.wwe.getEditor().getSelection().startContainer, this.wwe.getBody());\n\n for (var i = paths.length - 1; i > -1; i -= 1) {\n iteratee(paths[i]);\n }\n }\n /** _makeNodeAndAppend\n * make node and append their own children\n * @param {HTMLElement} pathInfo HTMLElement to make\n * @param {HTMLElement} content Nodes to append\n * @returns {HTMLElement} node\n * @private\n */\n ;\n\n _proto._makeNodeAndAppend = function _makeNodeAndAppend(pathInfo, content) {\n var node = document.createElement(\"\" + pathInfo.tagName);\n node.appendChild(content);\n\n if (pathInfo.id) {\n node.setAttribute('id', pathInfo.id);\n }\n\n if (pathInfo.className) {\n addClass_default()(node, pathInfo.className);\n }\n\n return node;\n }\n /**\n * Pasting table element pre-process\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._tableElementAid = function _tableElementAid(container) {\n this._removeColgroup(container);\n\n this._completeTableIfNeed(container);\n\n this._updateTableIDClassName(container);\n }\n /**\n * Remove colgroup tag\n * @param {HTMLElement} container - clipboard container\n * @private\n **/\n ;\n\n _proto._removeColgroup = function _removeColgroup(container) {\n var colgroup = container.querySelector('colgroup');\n\n if (colgroup) {\n dom[\"a\" /* default */].remove(colgroup);\n }\n }\n /**\n * Complete and append table to fragment\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._completeTableIfNeed = function _completeTableIfNeed(container) {\n var tableManager = this.wwe.componentManager.getManager('table');\n var wrapperTr = tableManager.wrapDanglingTableCellsIntoTrIfNeed(container);\n\n if (wrapperTr) {\n dom[\"a\" /* default */].append(container, wrapperTr);\n }\n\n var wrapperTbody = tableManager.wrapTrsIntoTbodyIfNeed(container);\n\n if (wrapperTbody) {\n dom[\"a\" /* default */].append(container, wrapperTbody);\n }\n\n var wrapperTable = tableManager.wrapTheadAndTbodyIntoTableIfNeed(container);\n\n if (wrapperTable) {\n dom[\"a\" /* default */].append(container, wrapperTable);\n }\n }\n /**\n * Update table ID class name in fragment\n * @param {HTMLElement} container - clipboard container\n * @private\n */\n ;\n\n _proto._updateTableIDClassName = function _updateTableIDClassName(container) {\n var tableManager = this.wwe.componentManager.getManager('table');\n var tables = dom[\"a\" /* default */].findAll(container, 'table');\n tables.forEach(function (table) {\n var foundClassName = table.className.match(/.*\\s*(te-content-table-\\d+)\\s*.*/);\n\n if (foundClassName) {\n removeClass_default()(table, foundClassName[0]);\n }\n });\n tables.forEach(function (table) {\n addClass_default()(table, tableManager.getTableIDClassName());\n });\n };\n\n return WwPasteContentHelper;\n}();\n\n/* harmony default export */ var wwPasteContentHelper = (wwPasteContentHelper_WwPasteContentHelper);\n// CONCATENATED MODULE: ./src/js/wwTablePasteHelper.js\n/**\n * @fileoverview Paste helper when past to table\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Class WwTablePasteHelper\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwTablePasteHelper_WwTablePasteHelper = /*#__PURE__*/function () {\n function WwTablePasteHelper(wwe) {\n this.wwe = wwe;\n }\n /**\n * Prossse paste clipboardEvent\n * @param {ClipboardEvent} ev - ClipboardEvent\n */\n\n\n var _proto = WwTablePasteHelper.prototype;\n\n _proto.pasteClipboard = function pasteClipboard(ev) {\n var cbData = ev.clipboardData || window.clipboardData;\n var items = cbData && cbData.items;\n\n if (items) {\n this._pasteClipboardItem(items);\n\n ev.preventDefault();\n } else {\n this._pasteClipboardUsingPasteArea();\n\n ev.squirePrevented = true;\n }\n }\n /**\n * ClipboardEvent is not supported in IE.\n * To get clipboard, create temporay element and then paste into that element.\n * After end of paste, can get clipboard from that temporary element.\n * @param {ClipboardEvent} ev - ClipboardEvent\n * @private\n */\n ;\n\n _proto._pasteClipboardUsingPasteArea = function _pasteClipboardUsingPasteArea() {\n var _this = this;\n\n var sq = this.wwe.getEditor();\n var range = sq.getSelection();\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n var pasteArea = document.createElement('div');\n var _document = document,\n body = _document.body;\n pasteArea.setAttribute('contenteditable', true);\n pasteArea.setAttribute('style', 'position:fixed; overflow:hidden; top:0; right:100%; width:1px; height:1px;');\n body.appendChild(pasteArea);\n range.selectNodeContents(pasteArea);\n sq.setSelection(range);\n setTimeout(function () {\n var clipboard = body.removeChild(pasteArea);\n range.setStart(startContainer, startOffset);\n range.setEnd(endContainer, endOffset);\n sq.focus();\n sq.setSelection(range);\n\n _this._pasteClipboardHtml(clipboard.innerHTML);\n });\n }\n /**\n * Paste items of clipboard data\n * @param {DataTransfer.items} items - items of clipboarddata\n * @private\n */\n ;\n\n _proto._pasteClipboardItem = function _pasteClipboardItem(items) {\n var _this2 = this;\n\n var textItem = null;\n var htmlItem = null;\n toArray_default()(items).forEach(function (item) {\n if (item.type === 'text/html') {\n htmlItem = item;\n } else if (item.type === 'text/plain') {\n textItem = item;\n }\n });\n\n if (htmlItem) {\n htmlItem.getAsString(function (html) {\n _this2._pasteClipboardHtml(html);\n });\n } else if (textItem) {\n textItem.getAsString(function (text) {\n var fragment = dom[\"a\" /* default */].getFragmentReplacedByNewlineToBr(text);\n\n _this2._pasteClipboardContainer(fragment);\n });\n }\n }\n /**\n * Get sanitized html as dom fragment\n * @param {string} html - html string to sanitize\n * @returns {DocumentFragment} sanitized html\n * @private\n */\n ;\n\n _proto._getSanitizedHtml = function _getSanitizedHtml(html) {\n var sanitizer = this.wwe.getSanitizer();\n html = Object(htmlSanitizer[\"a\" /* default */])(html, true);\n\n if (sanitizer && sanitizer !== htmlSanitizer[\"a\" /* default */]) {\n html = sanitizer(html);\n }\n\n var container = document.createElement('div');\n container.innerHTML = html;\n return dom[\"a\" /* default */].finalizeHtml(container);\n }\n /**\n * Paste html of clipboard\n * @param {string} html - html\n * @private\n */\n ;\n\n _proto._pasteClipboardHtml = function _pasteClipboardHtml(html) {\n var container = document.createDocumentFragment();\n var startFramgmentStr = '';\n var endFragmentStr = '';\n var startFragmentIndex = html.indexOf(startFramgmentStr);\n var endFragmentIndex = html.lastIndexOf(endFragmentStr);\n\n if (startFragmentIndex > -1 && endFragmentIndex > -1) {\n html = html.slice(startFragmentIndex + startFramgmentStr.length, endFragmentIndex);\n } // Wrap with if html contains dangling tags\n // Dangling tag is that tag does not have as parent node.\n\n\n if (/<\\/td>((?!<\\/tr>)[\\s\\S])*$/i.test(html)) {\n html = \"\" + html + \"\";\n } // Wrap with if html contains dangling tags\n // Dangling tag is that tag does not have
as parent node.\n\n\n if (/<\\/tr>((?!<\\/table>)[\\s\\S])*$/i.test(html)) {\n html = \"
\" + html + \"
\";\n }\n\n container.appendChild(this._getSanitizedHtml(html));\n\n this._pasteClipboardContainer(container);\n }\n /**\n * Paste container of clipboard\n * @param {DocumentFragment} clipboardContainer - clipboard\n * @private\n */\n ;\n\n _proto._pasteClipboardContainer = function _pasteClipboardContainer(clipboardContainer) {\n var sq = this.wwe.getEditor();\n var childNodes = clipboardContainer.childNodes;\n var containsOneTableOnly = childNodes.length === 1 && childNodes[0].nodeName === 'TABLE';\n\n if (containsOneTableOnly) {\n var tableManager = this.wwe.componentManager.getManager('table');\n tableManager.pasteTableData(clipboardContainer);\n } else {\n var range = sq.getSelection().cloneRange();\n\n var fragment = this._preparePasteDocumentFragment(clipboardContainer);\n\n sq.saveUndoState(range);\n\n if (!range.collapsed) {\n this._deleteContentsRange(range);\n }\n\n if (dom[\"a\" /* default */].isTextNode(range.startContainer)) {\n this._pasteIntoTextNode(range, fragment);\n } else {\n this._pasteIntoElements(range, fragment);\n }\n\n sq.setSelection(range);\n }\n }\n /**\n * Prepare clipboard for paste to table\n * @param {DocumentFragment} clipboardContainer - clipboard\n * @returns {DocumentFragment} processed result\n * @private\n */\n ;\n\n _proto._preparePasteDocumentFragment = function _preparePasteDocumentFragment(clipboardContainer) {\n var childNodes = clipboardContainer.childNodes;\n var fragment = document.createDocumentFragment();\n\n if (childNodes.length) {\n fragment.appendChild(this._unwrapBlock(clipboardContainer));\n } else if (this._isPossibleInsertToTable(clipboardContainer)) {\n fragment.appendChild(clipboardContainer);\n }\n\n return fragment;\n }\n /**\n * unwrap block node\n * @param {Node} node - target node\n * @returns {DocumentFragment} processed result\n * @private\n */\n ;\n\n _proto._unwrapBlock = function _unwrapBlock(node) {\n var fragment = document.createDocumentFragment();\n var childNodes = toArray_default()(node.childNodes);\n\n while (childNodes.length) {\n var child = childNodes.shift();\n\n if (this._isPossibleInsertToTable(child)) {\n fragment.appendChild(child);\n } else {\n fragment.appendChild(this._unwrapBlock(child)); // If current child is last or fragment already has last br,\n // appending br would create unintended line break.\n\n var lastChild = fragment.lastChild;\n\n if (childNodes.length && lastChild && lastChild.nodeName !== 'BR') {\n fragment.appendChild(document.createElement('br'));\n }\n }\n }\n\n return fragment;\n };\n\n _proto._isPossibleInsertToTable = function _isPossibleInsertToTable(node) {\n var nodeName = node.nodeName;\n var isChildlessCode = nodeName === 'CODE' && node.childNodes.length > 1;\n var isList = nodeName === 'UL' || nodeName === 'OL';\n return !isChildlessCode && (isList || dom[\"a\" /* default */].isMDSupportInlineNode(node) || dom[\"a\" /* default */].isTextNode(node));\n }\n /**\n * paste fragment to offset of range.startContainer\n * @param {Range} range - selection range\n * @param {DocumentFragment} fragment - paste data\n * @private\n */\n ;\n\n _proto._pasteIntoElements = function _pasteIntoElements(range, fragment) {\n var container = range.startContainer,\n offset = range.startOffset;\n var node = dom[\"a\" /* default */].getChildNodeByOffset(container, offset);\n\n if (!node) {\n // For example when container is br, br don't have child, so node is null\n if (container.nodeName === 'TD') {\n container.appendChild(fragment);\n range.setStart(container, container.childNodes.length);\n } else {\n var parentNode = container.parentNode,\n nextSibling = container.nextSibling;\n parentNode.insertBefore(fragment, nextSibling);\n\n if (nextSibling) {\n range.setStart(nextSibling, 0);\n } else {\n range.setStartAfter(parentNode.lastChild);\n }\n }\n } else {\n container.insertBefore(fragment, node);\n range.setStart(node, 0);\n }\n\n range.collapse(true);\n }\n /**\n * paste fragment to offset of text node\n * @param {Range} range - selection range\n * @param {DocumentFragment} fragment - paste data\n * @private\n */\n ;\n\n _proto._pasteIntoTextNode = function _pasteIntoTextNode(range, fragment) {\n var container = range.startContainer,\n offset = range.startOffset;\n var parentNode = container.parentNode,\n textContent = container.textContent;\n var prevText = textContent.slice(0, offset);\n var postText = textContent.slice(offset, textContent.length);\n var fragmentChildNodes = fragment.childNodes;\n var firstChild = fragmentChildNodes[0];\n var isFragmenthasOneTextNode = fragmentChildNodes.length === 1 && dom[\"a\" /* default */].isTextNode(firstChild);\n\n if (!prevText) {\n parentNode.insertBefore(fragment, container);\n range.setStart(container, 0);\n } else if (!postText) {\n var nextSibling = container.nextSibling;\n parentNode.insertBefore(fragment, nextSibling);\n range.setStartAfter(nextSibling);\n } else if (isFragmenthasOneTextNode) {\n var firstChildText = firstChild.textContent;\n container.textContent = \"\" + prevText + firstChildText + postText;\n range.setStart(container, prevText.length + firstChildText.length);\n } else {\n var resultFragment = document.createDocumentFragment();\n resultFragment.appendChild(document.createTextNode(prevText));\n resultFragment.appendChild(fragment);\n resultFragment.appendChild(document.createTextNode(postText));\n parentNode.replaceChild(resultFragment, container);\n var childNodesArray = toArray_default()(parentNode.childNodes);\n var index = 0;\n childNodesArray.forEach(function (child, i) {\n if (child.textContent === postText) {\n index = i;\n }\n });\n range.setStart(parentNode.childNodes[index], 0);\n }\n\n range.collapse(true);\n }\n /**\n * delete contents of range that is not collapse\n * @param {Range} range - range is not collapse\n * @private\n */\n ;\n\n _proto._deleteContentsRange = function _deleteContentsRange(range) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n\n if (startContainer === endContainer) {\n this._deleteContentsByOffset(startContainer, startOffset, endOffset);\n\n range.setStart(startContainer, startOffset);\n range.collapse(true);\n } else {\n this._deleteNotCollapsedRangeContents(range);\n }\n };\n\n _proto._deleteNotCollapsedRangeContents = function _deleteNotCollapsedRangeContents(range) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n var common = range.commonAncestorContainer;\n\n var startBlock = this._getBlock(startContainer, common, startOffset);\n\n var endBlock = this._getBlock(endContainer, common, endOffset - 1);\n\n if (startBlock === endBlock) {\n this._removeInSameBlock(startBlock, startContainer, endContainer, startOffset, endOffset); // When endContainer is not same endBlock, endBlock is removed.\n // For example, aaa| <- this is cursor.\n // When cursor is last, endContainer would be 'TD' and endBlock is text node\n // In this case, remove all 'aaa' so endBlock should be null.\n\n\n endBlock = endContainer !== endBlock ? null : endBlock;\n } else {\n var nextOfstartBlock = startBlock.nextSibling;\n\n if (startContainer.nodeName === 'TD') {\n nextOfstartBlock = this._removeOneLine(startBlock);\n } else {\n // Remove child nodes from node of startOffset in startContainer.\n this._deleteContentsByOffset(startContainer, startOffset, dom[\"a\" /* default */].getOffsetLength(startContainer)); // Remove nodes from startContainer in startBlock\n\n\n dom[\"a\" /* default */].removeNodesByDirection(startBlock, startContainer, false);\n }\n\n if (endContainer.nodeName === 'TD') {\n endBlock = this._removeOneLine(endBlock);\n } else {\n // Remove child nodes until node of endOffset in endContainer.\n this._deleteContentsByOffset(endContainer, 0, endOffset); // Remove nodes until endContainer in endBlock\n\n\n dom[\"a\" /* default */].removeNodesByDirection(endBlock, endContainer, true);\n } // Remove nodes between startBlock and endBlock\n\n\n dom[\"a\" /* default */].removeChildFromStartToEndNode(common, nextOfstartBlock, endBlock);\n }\n\n if (endBlock) {\n range.setStart(endBlock, 0);\n } else {\n range.setStartAfter(startBlock);\n }\n\n range.collapse(true);\n };\n\n _proto._removeInSameBlock = function _removeInSameBlock(block, startContainer, endContainer, startOffset, endOffset) {\n var start = startContainer === block ? startOffset : 0;\n var end = endContainer === block ? endOffset : dom[\"a\" /* default */].getOffsetLength(block);\n\n this._deleteContentsByOffset(block, start, end);\n };\n\n _proto._removeOneLine = function _removeOneLine(node) {\n var nextSibling = node.nextSibling,\n parentNode = node.parentNode;\n var next = nextSibling;\n parentNode.removeChild(node);\n\n if (nextSibling && nextSibling.nodeName === 'BR') {\n next = nextSibling.nextSibling;\n parentNode.removeChild(nextSibling);\n }\n\n return next;\n }\n /**\n * Find parent block node of startContainer and endContainer\n * If startContainer or endContainer is same commonAncestor,\n * find node at offset of startContainer and endContainer.\n * @param {Node} node - startContainer or endContainer\n * @param {Node} parent - commonAncestor\n * @param {Number} offset - startOffset or endOffset-1\n * @returns {Node} block node\n * @private\n */\n ;\n\n _proto._getBlock = function _getBlock(node, parent, offset) {\n return dom[\"a\" /* default */].getParentUntil(node, parent) || dom[\"a\" /* default */].getChildNodeByOffset(node, offset);\n }\n /**\n * delete contents from start offset to end offset\n * @param {Node} container - container\n * @param {Number} startOffset - start offset\n * @param {Number} endOffset - end offset\n * @private\n */\n ;\n\n _proto._deleteContentsByOffset = function _deleteContentsByOffset(container, startOffset, endOffset) {\n if (dom[\"a\" /* default */].isTextNode(container)) {\n var textContent = container.textContent;\n var prevText = textContent.slice(0, startOffset);\n var postText = textContent.slice(endOffset, textContent.length);\n container.textContent = \"\" + prevText + postText;\n } else {\n var startNode = dom[\"a\" /* default */].getChildNodeByOffset(container, startOffset);\n var endNode = dom[\"a\" /* default */].getChildNodeByOffset(container, endOffset);\n\n if (startNode) {\n dom[\"a\" /* default */].removeChildFromStartToEndNode(container, startNode, endNode || null);\n }\n }\n };\n\n return WwTablePasteHelper;\n}();\n\n/* harmony default export */ var wwTablePasteHelper = (wwTablePasteHelper_WwTablePasteHelper);\n// CONCATENATED MODULE: ./src/js/wwClipboardManager.js\n/**\n * @fileoverview Implements wysiwyg editor clipboard manager\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\nvar PASTE_TABLE_BOOKMARK = 'tui-paste-table-bookmark';\nvar PASTE_TABLE_CELL_BOOKMARK = 'tui-paste-table-cell-bookmark';\n/**\n * Class WwClipboardManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwClipboardManager_WwClipboardManager = /*#__PURE__*/function () {\n function WwClipboardManager(wwe) {\n this.wwe = wwe;\n this._pch = new wwPasteContentHelper(this.wwe);\n this._tablePasteHelper = new wwTablePasteHelper(this.wwe);\n this._selectedSellCount = 0;\n this._clipboardArea = null;\n }\n /**\n * initialize\n */\n\n\n var _proto = WwClipboardManager.prototype;\n\n _proto.init = function init() {\n var _this = this;\n\n this.wwe.eventManager.listen('willPaste', function (ev) {\n return _this._executeHandler(_this._onWillPaste.bind(_this), ev);\n });\n this.wwe.eventManager.listen('copy', function (ev) {\n return _this._executeHandler(_this._onCopyCut.bind(_this), ev);\n });\n this.wwe.eventManager.listen('copyAfter', function (ev) {\n return _this._executeHandler(_this._onCopyAfter.bind(_this), ev);\n });\n this.wwe.eventManager.listen('cut', function (ev) {\n return _this._executeHandler(_this._onCopyCut.bind(_this), ev);\n });\n this.wwe.eventManager.listen('cutAfter', function (ev) {\n return _this._executeHandler(_this._onCutAfter.bind(_this), ev);\n });\n this.wwe.eventManager.listen('paste', function (ev) {\n return _this._executeHandler(_this._onPasteIntoTable.bind(_this), ev);\n });\n };\n\n _proto._executeHandler = function _executeHandler(handler, event) {\n if (event.source === 'wysiwyg') {\n handler(event);\n }\n };\n\n _proto._onCopyCut = function _onCopyCut(event) {\n var tableManager = this.wwe.componentManager.getManager('tableSelection');\n var selectedCellCount = tableManager.getSelectedCells().length;\n\n if (!selectedCellCount) {\n // preserve selection range in a cell, let squire do the job\n return;\n }\n\n if (!tableManager.mergedTableSelectionManager) {\n // set selection range to all contents in selected cells, then squire\n tableManager.createRangeBySelectedCells();\n return;\n }\n\n var editor = this.wwe.getEditor();\n var clipboardEvent = event.data;\n var range = editor.getSelection().cloneRange();\n var clipboardContainer = document.createElement('div');\n\n this._extendRange(range);\n\n clipboardContainer.innerHTML = range.cloneContents();\n\n this._updateCopyDataForListTypeIfNeed(range, clipboardContainer);\n\n this.wwe.eventManager.emit('copyBefore', {\n source: 'wysiwyg',\n clipboardContainer: clipboardContainer\n });\n\n this._setClipboardData(clipboardEvent, clipboardContainer.innerHTML, clipboardContainer.textContent);\n };\n\n _proto._clearClipboardArea = function _clearClipboardArea() {\n if (this._clipboardArea) {\n dom[\"a\" /* default */].remove(this._clipboardArea);\n this._clipboardArea = null;\n }\n };\n\n _proto._onCopyAfter = function _onCopyAfter() {\n this.wwe.getEditor().getBody().focus();\n\n this._clearClipboardArea();\n };\n\n _proto._onCutAfter = function _onCutAfter() {\n var range = this.wwe.getEditor().getSelection();\n range.deleteContents();\n this.wwe.getEditor().focus();\n\n this._clearClipboardArea();\n }\n /**\n * Process paste event when occured in table\n * @param {{source: string, data: event}} event - event\n * @private\n */\n ;\n\n _proto._onPasteIntoTable = function _onPasteIntoTable(event) {\n var ev = event.data;\n var range = this.wwe.getEditor().getSelection();\n\n if (this.wwe.isInTable(range) && this._isSingleCellSelected(range)) {\n this._tablePasteHelper.pasteClipboard(ev);\n }\n };\n\n _proto._isSingleCellSelected = function _isSingleCellSelected(range) {\n var startContainer = range.startContainer,\n endContainer = range.endContainer;\n return this._getCell(startContainer) === this._getCell(endContainer);\n };\n\n _proto._getCell = function _getCell(node) {\n return node.nodeName === 'TD' ? node : dom[\"a\" /* default */].getParentUntil(node, 'TR');\n };\n\n _proto._replaceNewLineToBr = function _replaceNewLineToBr(node) {\n var textNodes = dom[\"a\" /* default */].getAllTextNode(node);\n textNodes.forEach(function (textNode) {\n if (/\\n/.test(textNode.nodeValue)) {\n textNode.parentNode.innerHTML = textNode.nodeValue.replace(/\\n/g, '
');\n }\n });\n };\n\n _proto._onWillPaste = function _onWillPaste(event) {\n var _this2 = this;\n\n var pasteData = event.data;\n var clipboardContainer = document.createElement('div');\n clipboardContainer.appendChild(pasteData.fragment.cloneNode(true));\n\n this._preparePaste(clipboardContainer);\n\n this._setTableBookmark(clipboardContainer);\n\n pasteData.fragment = document.createDocumentFragment();\n toArray_default()(clipboardContainer.childNodes).forEach(function (element) {\n if (dom[\"a\" /* default */].getNodeName(element) === 'DIV') {\n _this2._replaceNewLineToBr(element);\n }\n\n pasteData.fragment.appendChild(element);\n }); // once right after the squire insertHTML DOM.\n\n var handler = function handler() {\n _this2.wwe.getEditor().removeEventListener('input', handler);\n\n _this2.wwe.eventManager.emit('wysiwygRangeChangeAfter', _this2);\n\n _this2._focusTableBookmark();\n };\n\n this.wwe.getEditor().addEventListener('input', handler);\n };\n\n _proto._setClipboardData = function _setClipboardData(clipboardEvent, htmlContent, textContent) {\n if (browser_default.a.msie) {\n clipboardEvent.squirePrevented = true;\n this._clipboardArea = this._createClipboardArea();\n this._clipboardArea.innerHTML = htmlContent;\n\n this._clipboardArea.focus();\n\n window.getSelection().selectAllChildren(this._clipboardArea);\n } else {\n clipboardEvent.preventDefault();\n clipboardEvent.stopPropagation();\n clipboardEvent.clipboardData.setData('text/html', htmlContent);\n clipboardEvent.clipboardData.setData('text/plain', textContent);\n }\n };\n\n _proto._createClipboardArea = function _createClipboardArea() {\n var element = document.createElement('div');\n element.setAttribute('contenteditable', true);\n css_default()(element, {\n position: 'fixed',\n overflow: 'hidden',\n top: 0,\n right: '100%',\n width: '1px',\n height: '1px'\n });\n document.body.appendChild(element);\n return element;\n }\n /**\n * Update copy data, when commonAncestorContainer nodeName is list type like UL or OL.\n * @param {object} range - text range\n * @param {HTMLElement} clipboardContainer - clibpard container element\n * @private\n */\n ;\n\n _proto._updateCopyDataForListTypeIfNeed = function _updateCopyDataForListTypeIfNeed(range, clipboardContainer) {\n var commonAncestorNodeName = range.commonAncestorContainer.nodeName;\n\n if (commonAncestorNodeName !== 'UL' && commonAncestorNodeName !== 'OL') {\n return;\n }\n\n var newParent = document.createElement(commonAncestorNodeName);\n newParent.appendChild(clipboardContainer);\n clipboardContainer.innerHTML = '';\n clipboardContainer.appendChild(newParent);\n }\n /**\n * Remove empty font elements.\n * @param {HTMLElement} clipboardContainer - cliboard container\n * @private\n */\n ;\n\n _proto._removeEmptyFontElement = function _removeEmptyFontElement(clipboardContainer) {\n // clipboard data from ms word tend to have unneccesary font tags\n var children = dom[\"a\" /* default */].children(clipboardContainer, 'font');\n children.forEach(function (element) {\n if (!element.textContent.trim()) {\n dom[\"a\" /* default */].remove(element);\n }\n });\n }\n /**\n * MS Office use specific CSS attributes with mso- prefix.\n * But safari does not support mso- prefix.\n * @param {string} html - html string\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isFromMs = function _isFromMs(html) {\n return /

]*mso-/.test(html);\n }\n /**\n * P tags append 'BR' to make blank line.\n * Our viewer renders new line as P tag with margin.\n * When pasting text from viewer, insert BR between P tags.\n * @param {Node} node - node\n * @private\n */\n ;\n\n _proto._preProcessPtag = function _preProcessPtag(node) {\n dom[\"a\" /* default */].findAll(node, 'p').forEach(function (pTag) {\n if (pTag.lastChild && pTag.lastChild.nodeName !== 'BR') {\n pTag.appendChild(document.createElement('br'));\n }\n\n pTag.appendChild(document.createElement('br'));\n });\n }\n /**\n * Prepare paste.\n * @param {HTMLElement} clipboardContainer - temporary container for clipboard contents\n * @private\n */\n ;\n\n _proto._preparePaste = function _preparePaste(clipboardContainer) {\n // When pasting text, the empty line processing differ our viewer and MS Office.\n // In our viewer case,

aaa

bbb

have empty line becuase P tags have margin.\n // In MS Office case,

aaa

bbb

do not have empty line becuase P tags means just one line.\n if (!this._isFromMs(clipboardContainer.innerText)) {\n this._preProcessPtag(clipboardContainer);\n }\n\n this._removeEmptyFontElement(clipboardContainer);\n\n this._pch.preparePaste(clipboardContainer);\n\n this.wwe.eventManager.emit('pasteBefore', {\n source: 'wysiwyg',\n clipboardContainer: clipboardContainer\n });\n }\n /**\n * set table bookmark which will gain focus after document modification ends.\n * @param {HTMLElement} clipboardContainer - clipboard container\n * @private\n */\n ;\n\n _proto._setTableBookmark = function _setTableBookmark(clipboardContainer) {\n var lastNode = clipboardContainer.lastChild;\n var isLastNodeTable = lastNode && lastNode.nodeName === 'TABLE';\n\n if (isLastNodeTable) {\n addClass_default()(lastNode, PASTE_TABLE_BOOKMARK);\n }\n }\n /**\n * Focus to table after document modification.\n * @param {object} sq - squire editor instance\n * @private\n */\n ;\n\n _proto._focusTableBookmark = function _focusTableBookmark() {\n var sq = this.wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var bookmarkedTable = sq.getBody().querySelector(\".\" + PASTE_TABLE_BOOKMARK);\n var bookmarkedCell = sq.getBody().querySelector(\".\" + PASTE_TABLE_CELL_BOOKMARK);\n\n if (bookmarkedTable) {\n removeClass_default()(bookmarkedTable, PASTE_TABLE_BOOKMARK);\n range.setEndAfter(bookmarkedTable);\n range.collapse(false);\n sq.setSelection(range);\n }\n\n if (bookmarkedCell) {\n removeClass_default()(bookmarkedCell, PASTE_TABLE_CELL_BOOKMARK);\n range.selectNodeContents(bookmarkedCell);\n range.collapse(false);\n sq.setSelection(range);\n }\n }\n /**\n * extend range if need\n * @param {Range} range to extend\n * @private\n */\n ;\n\n _proto._extendRange = function _extendRange(range) {\n // non-text node && not selected whole area, then expand the range\n if (dom[\"a\" /* default */].isTextNode(range.commonAncestorContainer) && (range.startOffset !== 0 || range.commonAncestorContainer.textContent.length !== range.endOffset) && range.commonAncestorContainer.nodeName !== 'TD') {\n return;\n }\n\n if (range.startOffset === 0) {\n range = this._extendStartRange(range);\n }\n\n if (range.endOffset === dom[\"a\" /* default */].getOffsetLength(range.endContainer)) {\n range = this._extendEndRange(range);\n } // commonAncestor if all of it's children has been selected\n\n\n if (this._isWholeCommonAncestorContainerSelected(range)) {\n range.selectNode(range.commonAncestorContainer);\n }\n\n this.wwe.getEditor().setSelection(range);\n }\n /**\n * Extends current range's startContainer\n * @param {Range} range Range object\n * @returns {Range}\n * @private\n */\n ;\n\n _proto._extendStartRange = function _extendStartRange(range) {\n var newBound = range.startContainer; // expand range\n\n while (newBound.parentNode !== range.commonAncestorContainer && newBound.parentNode !== this.wwe.getBody() && !newBound.previousSibling) {\n newBound = newBound.parentNode;\n } // expand range\n\n\n range.setStart(newBound.parentNode, dom[\"a\" /* default */].getNodeOffsetOfParent(newBound));\n return range;\n }\n /**\n * Extends current range's endContainer\n * @param {Range} range Range object\n * @returns {Range}\n * @private\n */\n ;\n\n _proto._extendEndRange = function _extendEndRange(range) {\n var newBound = range.endContainer;\n var boundNext = newBound.nextSibling; // expand range\n\n while (newBound.parentNode !== range.commonAncestorContainer && newBound.parentNode !== this.wwe.getBody() && (!boundNext || dom[\"a\" /* default */].getNodeName(boundNext) === 'BR' && newBound.parentNode.lastChild === boundNext)) {\n newBound = newBound.parentNode;\n boundNext = newBound.nextSibling;\n } // expand range level\n\n\n range.setEnd(newBound.parentNode, dom[\"a\" /* default */].getNodeOffsetOfParent(newBound) + 1);\n return range;\n }\n /**\n * Check whether whole commonAncestorContainter textContent selected or not\n * @param {Range} range Range object\n * @returns {boolean} result\n * @private\n */\n ;\n\n _proto._isWholeCommonAncestorContainerSelected = function _isWholeCommonAncestorContainerSelected(range) {\n return range.commonAncestorContainer.nodeType === Node.ELEMENT_NODE && range.commonAncestorContainer !== this.wwe.getBody() && range.startOffset === 0 && range.endOffset === range.commonAncestorContainer.childNodes.length && range.commonAncestorContainer === range.startContainer && range.commonAncestorContainer === range.endContainer;\n };\n\n return WwClipboardManager;\n}();\n\n/* harmony default export */ var wwClipboardManager = (wwClipboardManager_WwClipboardManager);\n// CONCATENATED MODULE: ./src/js/wwListManager.js\n/**\n * @fileoverview Implements wysiwyg list manager\n * @author NHN FE Development Lab \n */\n\n\n\nvar FIND_LI_ELEMENT = /

  • ]*>)(.*?)(<\\/(?:th|td)>)/g;\nvar FIND_LIST_OR_LIST_ITEM_TAG_RX = /<(ul|ol|li)([^>]*)>/g;\n/**\n * Class WwListManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwListManager_WwListManager = /*#__PURE__*/function () {\n function WwListManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'list';\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwListManager.prototype;\n\n _proto._init = function _init() {\n this._initEvent();\n\n this._initKeyHandler();\n }\n /**\n * Initialize event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygSetValueBefore', function (html) {\n return _this._convertToArbitraryNestingList(html);\n });\n this.eventManager.listen('wysiwygRangeChangeAfter', function () {\n _this._findAndRemoveEmptyList();\n\n _this._removeBranchListAll();\n });\n this.eventManager.listen('wysiwygSetValueAfter', function () {\n _this._removeBranchListAll();\n });\n this.eventManager.listen('wysiwygProcessHTMLText', function (html) {\n html = _this._convertFromArbitraryNestingList(html);\n return html;\n });\n this.eventManager.listen('convertorBeforeHtmlToMarkdownConverted', function (html) {\n return _this._insertDataToMarkPassForListInTable(html);\n });\n };\n\n _proto._initKeyHandler = function _initKeyHandler() {\n var _this2 = this;\n\n this.wwe.addKeyEventHandler(['TAB', 'CTRL+]', 'META+]'], function (ev) {\n var isNeedNext;\n\n if (_this2.wwe.getEditor().hasFormat('LI')) {\n ev.preventDefault();\n\n _this2.eventManager.emit('command', 'Indent');\n\n isNeedNext = false;\n }\n\n return isNeedNext;\n });\n this.wwe.addKeyEventHandler(['SHIFT+TAB', 'CTRL+[', 'META+['], function (ev, range) {\n var isNeedNext;\n\n if (_this2.wwe.getEditor().hasFormat('LI')) {\n ev.preventDefault();\n var ul = dom[\"a\" /* default */].children(dom[\"a\" /* default */].closest(range.startContainer, 'li'), UL_OR_OL);\n\n _this2.eventManager.emit('command', 'Outdent');\n\n if (ul.length && !ul.previousSibling) {\n _this2._removeBranchList(ul);\n }\n\n isNeedNext = false;\n }\n\n return isNeedNext;\n });\n this.wwe.addKeyEventHandler('ENTER', function (ev, range) {\n if (range.collapsed) {\n if (_this2.wwe.getEditor().hasFormat('LI')) {\n _this2.wwe.defer(function () {\n var afterRange = _this2.wwe.getRange();\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(afterRange.startContainer, 'li'),\n li = _domUtils$parents[0];\n\n _this2._removeBranchListAll(li);\n });\n }\n }\n });\n this.wwe.addKeyEventHandler('BACK_SPACE', function (ev, range) {\n if (range.collapsed) {\n if (_this2.wwe.getEditor().hasFormat('LI')) {\n _this2.wwe.defer(function () {\n _this2._removeBranchListAll();\n });\n }\n }\n });\n }\n /**\n * Find empty list for whole container and remove it.\n * @private\n */\n ;\n\n _proto._findAndRemoveEmptyList = function _findAndRemoveEmptyList() {\n dom[\"a\" /* default */].findAll(this.wwe.getBody(), UL_OR_OL).forEach(function (node) {\n if (!FIND_LI_ELEMENT.test(node.innerHTML)) {\n dom[\"a\" /* default */].remove(node);\n }\n });\n }\n /**\n * Remove branch lists all from body\n * @param {HTMLElement} root root to remove branch list\n * @private\n */\n ;\n\n _proto._removeBranchListAll = function _removeBranchListAll(root) {\n var _this3 = this;\n\n root = !root ? this.wwe.getBody() : root;\n dom[\"a\" /* default */].findAll(root, 'li > ul, li > ol').forEach(function (node) {\n if (!node || node.previousSibling) {\n return;\n }\n\n _this3._removeBranchList(node);\n });\n }\n /**\n * Remove branch list of passed list(ul, ol)\n * @param {HTMLElement} list list\n * @private\n */\n ;\n\n _proto._removeBranchList = function _removeBranchList(list) {\n var branchRoot = list;\n\n while (!branchRoot.previousSibling && branchRoot.parentElement.tagName.match(/UL|OL|LI/g)) {\n branchRoot = branchRoot.parentElement;\n }\n\n var _domUtils$children = dom[\"a\" /* default */].children(branchRoot, 'li'),\n firstLi = _domUtils$children[0];\n\n var unwrappedLIs = dom[\"a\" /* default */].unwrap(list);\n dom[\"a\" /* default */].prepend(branchRoot, unwrappedLIs);\n dom[\"a\" /* default */].remove(firstLi);\n }\n /**\n * make arbitrary nesting list out of standard list\n * `
    • text
      • text2
    ` to\n * `
    • text
      • text2
    `\n * @param {string} html string to convert\n * @returns {string} converted HTML text\n * @private\n */\n ;\n\n _proto._convertToArbitraryNestingList = function _convertToArbitraryNestingList(html) {\n var NESTED_LIST_QUERY = 'li > ul, li > ol';\n var wrapper = dom[\"a\" /* default */].createElementWith(\"
    \" + html + \"
    \");\n var nestedList = wrapper.querySelector(NESTED_LIST_QUERY);\n\n while (nestedList !== null) {\n var parentLI = nestedList.parentNode;\n var parentList = parentLI.parentNode;\n parentList.insertBefore(nestedList, parentLI.nextElementSibling);\n nestedList = wrapper.querySelector(NESTED_LIST_QUERY);\n }\n\n return wrapper.innerHTML;\n }\n /**\n * make standard list out of arbitrary nesting list\n * `
    • text
      • text2
    ` from\n * `
    • text
      • text2
    `\n * @param {string} html string to convert\n * @returns {string} converted HTML text\n * @private\n */\n ;\n\n _proto._convertFromArbitraryNestingList = function _convertFromArbitraryNestingList(html) {\n var NESTED_LIST_QUERY = 'ol > ol, ol > ul, ul > ol, ul > ul';\n var wrapperDiv = dom[\"a\" /* default */].createElementWith(\"
    \" + html + \"
    \");\n var nestedList = wrapperDiv.querySelector(NESTED_LIST_QUERY);\n\n while (nestedList !== null) {\n var prevLI = nestedList.previousElementSibling;\n\n while (prevLI && prevLI.tagName !== 'LI') {\n prevLI = prevLI.previousElementSibling;\n }\n\n if (prevLI) {\n prevLI.appendChild(nestedList);\n } else {\n this._unwrap(nestedList);\n }\n\n nestedList = wrapperDiv.querySelector(NESTED_LIST_QUERY);\n }\n\n return wrapperDiv.innerHTML;\n }\n /**\n * unwrap nesting list\n * @param {Node} nestedList - nested list to unwrap\n * @private\n */\n ;\n\n _proto._unwrap = function _unwrap(nestedList) {\n var fragment = document.createDocumentFragment();\n\n while (nestedList.firstChild) {\n fragment.appendChild(nestedList.firstChild);\n }\n\n nestedList.parentNode.replaceChild(fragment, nestedList);\n };\n\n _proto._insertDataToMarkPassForListInTable = function _insertDataToMarkPassForListInTable(html) {\n var replacedHtml = html.replace(FIND_CELL_TAG_RX, function (match, tdStart, tdContent, tdEnd) {\n var content = tdContent.replace(FIND_LIST_OR_LIST_ITEM_TAG_RX, '<$1 data-tomark-pass=\"\" $2>');\n return \"\" + tdStart + content + tdEnd;\n });\n return replacedHtml;\n }\n /**\n * Return lines in selection\n * @param {Node} start Start element\n * @param {Node} end End element\n * @param {HTMLElement} body Editor body element\n * @returns {Array.}\n * @private\n */\n ;\n\n _proto.getLinesOfSelection = function getLinesOfSelection(start, end) {\n var lines = [];\n var isLastLine = false;\n var needNext = true;\n var nextLine;\n\n if (dom[\"a\" /* default */].isTextNode(start)) {\n var _domUtils$parents2 = dom[\"a\" /* default */].parents(start, DIV_OR_LI);\n\n start = _domUtils$parents2[0];\n }\n\n if (dom[\"a\" /* default */].isTextNode(end)) {\n var _domUtils$parents3 = dom[\"a\" /* default */].parents(end, DIV_OR_LI);\n\n end = _domUtils$parents3[0];\n }\n\n for (var line = start; needNext; line = nextLine) {\n if (matches_default()(line, DIV_OR_LI)) {\n lines.push(line);\n\n if (line === end) {\n isLastLine = true;\n } else {\n nextLine = this._getNextLine(line, end);\n }\n } else {\n break;\n }\n\n needNext = nextLine && !isLastLine;\n }\n\n return lines;\n }\n /**\n * get next line\n * @param {Node} currentLine - current line node\n * @param {Node} end - last node in selection\n * @returns {Node} - next line node\n * @private\n */\n ;\n\n _proto._getNextLine = function _getNextLine(currentLine, end) {\n var nextLine = currentLine.nextElementSibling;\n\n if (!nextLine) {\n // current line was the last line in ul/ol\n // while we have lines those has not been processed yet.\n nextLine = currentLine.parentNode.nextElementSibling;\n } else if (matches_default()(nextLine, UL_OR_OL)) {\n // we don't sure firstChild is LI. arbtrary list can have another ol/ul\n nextLine = nextLine.querySelector('li');\n }\n\n if (matches_default()(nextLine, DIV_OR_LI) || nextLine === end) {\n return nextLine;\n }\n\n return this._getNextLine(nextLine);\n }\n /**\n * merge to previous list\n * consider remove this function when https://github.com/neilj/Squire/issues/294 resolved\n * @param {HTMLLIElement} currentLine - current li element\n */\n ;\n\n _proto.mergeList = function mergeList(currentLine) {\n var currentList = currentLine.parentNode;\n var prevList = currentList.previousElementSibling;\n var nextList = currentList.nextElementSibling;\n\n if (currentList.firstElementChild === currentLine) {\n if (prevList && matches_default()(prevList, UL_OR_OL)) {\n this._mergeList(currentList, prevList);\n\n currentList = prevList;\n }\n }\n\n if (currentList.lastElementChild === currentLine) {\n if (nextList && matches_default()(nextList, UL_OR_OL)) {\n this._mergeList(nextList, currentList);\n }\n }\n }\n /**\n * merge list to targetList\n * @param {HTMLOListElement|HTMLUListElement} list - list to merge\n * @param {HTMLOListElement|HTMLUListElement} targetList - target list\n * @private\n */\n ;\n\n _proto._mergeList = function _mergeList(list, targetList) {\n var listItem = list.firstElementChild;\n\n if (targetList && matches_default()(targetList, UL_OR_OL)) {\n while (listItem) {\n var temp = listItem.nextElementSibling;\n targetList.appendChild(listItem);\n listItem = temp;\n }\n\n list.parentNode.removeChild(list);\n }\n }\n /**\n * Check whether is available to make List in table.\n * @returns {boolean} - li element\n */\n ;\n\n _proto.isAvailableMakeListInTable = function isAvailableMakeListInTable() {\n var selectionManager = this.wwe.componentManager.getManager('tableSelection');\n var selectedCells = selectionManager.getSelectedCells();\n var sq = this.wwe.getEditor();\n return selectedCells && sq.hasFormat('table') && !sq.hasFormat('OL') && !sq.hasFormat('UL');\n }\n /**\n * Find parent node before TD\n * @param {Node} node - startContainer or endContainer of range\n * @param {Number} offset - offset\n * @returns {Node} - parent node before TD\n * @private\n */\n ;\n\n _proto._getParentNodeBeforeTD = function _getParentNodeBeforeTD(node, offset) {\n var parentNode = dom[\"a\" /* default */].getParentUntil(node, 'TD');\n\n if (!parentNode) {\n var childNodes = node.childNodes;\n var length = childNodes ? childNodes.length : 0;\n var newOffset = offset > 0 && offset === length ? offset - 1 : offset;\n parentNode = dom[\"a\" /* default */].getChildNodeByOffset(node, newOffset);\n }\n\n return parentNode;\n }\n /**\n * Find LI node inside TD\n * If target node is not li and parents of taget node is not li, return null.\n * @param {Node} targetNode - startContainer or endContainer of range\n * @param {Number} offset - offset\n * @returns {Node} - LI node or null\n * @private\n */\n ;\n\n _proto._findLINodeInsideTD = function _findLINodeInsideTD(targetNode, offset) {\n var liNode = null;\n var liParent = dom[\"a\" /* default */].getParentUntilBy(targetNode, function (node) {\n return node && dom[\"a\" /* default */].isListNode(node);\n }, function (node) {\n return node && node.nodeName === 'TD';\n });\n\n if (liParent) {\n liNode = liParent;\n } else if (targetNode.nodeName === 'LI') {\n liNode = targetNode;\n } else if (dom[\"a\" /* default */].isListNode(targetNode)) {\n var childLength = targetNode.childNodes.length;\n liNode = targetNode.childNodes[offset >= childLength ? childLength - 1 : offset];\n }\n\n return liNode;\n }\n /**\n * Get first node on the line where range start.\n * @param {Node} targetNode - startContainer\n * @param {Number} offset - startOffset\n * @returns {Node} - first node where range start\n * @private\n */\n ;\n\n _proto._getFirstNodeInLineOfTable = function _getFirstNodeInLineOfTable(targetNode, offset) {\n var startNode = this._findLINodeInsideTD(targetNode, offset);\n\n if (!startNode) {\n startNode = this._getParentNodeBeforeTD(targetNode, offset);\n var _startNode = startNode,\n previousSibling = _startNode.previousSibling;\n\n while (previousSibling && previousSibling.nodeName !== 'BR' && !dom[\"a\" /* default */].isListNode(previousSibling)) {\n startNode = previousSibling;\n previousSibling = startNode.previousSibling;\n }\n }\n\n return startNode;\n }\n /**\n * Get last node on the line where range end.\n * @param {Node} targetNode - endContainer\n * @param {Number} offset - endOffset\n * @returns {Node} - last node where range end\n * @private\n */\n ;\n\n _proto._getLastNodeInLineOfTable = function _getLastNodeInLineOfTable(targetNode, offset) {\n var endNode = this._findLINodeInsideTD(targetNode, offset);\n\n if (!endNode) {\n endNode = this._getParentNodeBeforeTD(targetNode, offset);\n\n while (endNode.nextSibling) {\n if (endNode.nodeName === 'BR' || dom[\"a\" /* default */].isListNode(endNode)) {\n break;\n }\n\n endNode = endNode.nextSibling;\n }\n }\n\n return endNode;\n }\n /**\n * Check whether node is last node in the line of table\n * If the node is li or br, the node is last node in the line of table.\n * @param {node} node - node\n * @returns {boolean} - whether node is last node in line of table\n * @private\n */\n ;\n\n _proto._isLastNodeInLineOfTable = function _isLastNodeInLineOfTable(node) {\n var nodeName = node.nodeName;\n return nodeName === 'LI' || nodeName === 'BR';\n }\n /**\n * Get next node in the line of table\n * If current node is li node and nextSibling is not existing, next node is parent's nextSibling.\n * If nextSibiling of node is a list node (UL or OL), next node is first child of the list node.\n * @param {node} node - node\n * @returns {node} - next node\n * @private\n */\n ;\n\n _proto._getNextNodeInLineOfTable = function _getNextNodeInLineOfTable(node) {\n var nextSibling = node.nextSibling;\n\n if (node.nodeName === 'LI' && !nextSibling) {\n var parentNode = node.parentNode;\n\n while (parentNode.nodeName !== 'TD') {\n if (parentNode.nextSibling) {\n nextSibling = parentNode.nextSibling;\n break;\n }\n\n parentNode = parentNode.parentNode;\n }\n } else if (dom[\"a\" /* default */].isListNode(nextSibling)) {\n nextSibling = nextSibling.firstChild;\n }\n\n return nextSibling;\n }\n /**\n * get nodes in each lines of table\n * @param {range} range - range\n * @returns {array} - each nodes in line\n * @private\n */\n ;\n\n _proto._getLinesOfSelectionInTable = function _getLinesOfSelectionInTable(range) {\n var startContainer = range.startContainer,\n endContainer = range.endContainer,\n startOffset = range.startOffset,\n endOffset = range.endOffset;\n\n var firstNode = this._getFirstNodeInLineOfTable(startContainer, startOffset);\n\n var lastNode = this._getLastNodeInLineOfTable(endContainer, endOffset);\n\n var lines = [];\n var oneLine = [];\n\n while (firstNode) {\n oneLine.push(firstNode);\n\n if (this._isLastNodeInLineOfTable(firstNode)) {\n lines.push(oneLine);\n oneLine = [];\n }\n\n if (firstNode === lastNode) {\n if (oneLine.length) {\n lines.push(oneLine);\n }\n\n break;\n }\n\n firstNode = this._getNextNodeInLineOfTable(firstNode);\n }\n\n return lines;\n }\n /**\n * create OL or UL element\n * @param {string} listType - OL, UL or TASK\n * @returns {Node} - OL or UL element\n * @private\n */\n ;\n\n _proto._createListElement = function _createListElement(listType) {\n return document.createElement(listType === 'TASK' ? 'UL' : listType);\n }\n /**\n * create li element\n * @param {array} oneLineNodes - node array\n * @param {string} listType - OL, UL or TASK\n * @returns {Node} - li element\n * @private\n */\n ;\n\n _proto._createListItemElement = function _createListItemElement(oneLineNodes, listType) {\n var liNode = document.createElement('li');\n oneLineNodes.forEach(function (node) {\n liNode.appendChild(node);\n });\n\n if (listType === 'TASK') {\n var taskManager = this.wwe.componentManager.getManager('task');\n taskManager.formatTask(liNode);\n }\n\n return liNode;\n };\n\n _proto._mergeListWithPreviousSibiling = function _mergeListWithPreviousSibiling(node) {\n var previousSibling = node.previousSibling;\n var result = node;\n\n if (previousSibling && node.nodeName === previousSibling.nodeName) {\n this._mergeList(node, previousSibling);\n\n result = previousSibling;\n }\n\n return result;\n };\n\n _proto._mergeListWithNextSibiling = function _mergeListWithNextSibiling(node) {\n var nextSibling = node.nextSibling;\n\n if (nextSibling && node.nodeName === nextSibling.nodeName) {\n this._mergeList(nextSibling, node);\n }\n\n return node;\n }\n /**\n * make listNode (OL or UL)\n * @param {range} range - range\n * @param {staring} listType - UL, OL, TASK\n * @returns {array} childNodes of list node (OL/UL)\n */\n ;\n\n _proto.createListInTable = function createListInTable(range, listType) {\n var _this4 = this;\n\n var lines = this._getLinesOfSelectionInTable(range);\n\n var lastLine = lines[lines.length - 1];\n var lastNode = lastLine[lastLine.length - 1];\n var nextNode = lastNode.nextSibling;\n var parentNode = lastNode.parentNode;\n\n var listNode = this._createListElement(listType);\n\n var _listNode = listNode,\n listNodeName = _listNode.nodeName;\n var newLIs = [];\n lines.forEach(function (oneLineNodes) {\n var oneLineFirstNode = oneLineNodes[0];\n var liElement; // oneLineFirstNode was already a list item in the table\n\n if (oneLineFirstNode.nodeName === 'LI') {\n var existingListNode = oneLineFirstNode.parentNode;\n liElement = oneLineFirstNode; // If the existing list that is already in table is not same the list to be created,\n // change the existing list to the list to be created\n\n if (existingListNode.nodeName !== listNodeName) {\n var childNodes = existingListNode.childNodes;\n toArray_default()(childNodes).forEach(function () {\n listNode.appendChild(existingListNode.firstChild);\n });\n existingListNode.parentNode.replaceChild(listNode, existingListNode);\n }\n\n listNode = liElement.parentNode;\n } else {\n liElement = _this4._createListItemElement(oneLineNodes, listType);\n listNode.appendChild(liElement);\n }\n\n newLIs.push(liElement);\n });\n\n if (!listNode.parentNode) {\n parentNode.insertBefore(listNode, nextNode);\n }\n\n listNode = this._mergeListWithPreviousSibiling(listNode);\n\n this._mergeListWithNextSibiling(listNode);\n\n return newLIs;\n }\n /**\n * adjust range for list node (OL/UL)\n * according to origin startContainer and endContainer\n * @param {node} startContainer - startContainer\n * @param {node} endContainer - endContainer\n * @param {number} startOffset - startOffset\n * @param {number} endOffset - endOffset\n * @param {array} listNode - node array\n */\n ;\n\n _proto.adjustRange = function adjustRange(startContainer, endContainer, startOffset, endOffset, listNode) {\n var newStartContainer = dom[\"a\" /* default */].containsNode(listNode[0], startContainer) ? startContainer : listNode[0];\n var newEndContainer = dom[\"a\" /* default */].containsNode(listNode[listNode.length - 1], endContainer) ? endContainer : listNode[listNode.length - 1];\n var newStartOffset = startContainer.nodeName === 'TD' ? 0 : startOffset;\n var newEndOffset = endContainer.nodeName === 'TD' ? 0 : endOffset;\n this.wwe.setSelectionByContainerAndOffset(newStartContainer, newStartOffset, newEndContainer, newEndOffset);\n };\n\n return WwListManager;\n}();\n\n/* harmony default export */ var wwListManager = (wwListManager_WwListManager);\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/hasClass.js\nvar hasClass = __webpack_require__(16);\nvar hasClass_default = /*#__PURE__*/__webpack_require__.n(hasClass);\n\n// CONCATENATED MODULE: ./src/js/wwTaskManager.js\n/**\n * @fileoverview Implements wysiwyg task manager\n * @author NHN FE Development Lab \n */\n\n\n\n\nvar TASK_CLASS_NAME = 'task-list-item';\nvar TASK_ATTR_NAME = 'data-te-task';\nvar TASK_CHECKED_CLASS_NAME = 'checked';\n/**\n * Class WwTaskManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwTaskManager_WwTaskManager = /*#__PURE__*/function () {\n function WwTaskManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'task';\n\n this._init();\n }\n /**\n * Init\n * @private\n */\n\n\n var _proto = WwTaskManager.prototype;\n\n _proto._init = function _init() {\n this._initKeyHandler();\n\n this._initEvent();\n\n this.wwe.getEditor().addEventListener('mousedown', function (ev) {\n var style = getComputedStyle(ev.target, ':before');\n\n if (ev.target.hasAttribute(TASK_ATTR_NAME) && dom[\"a\" /* default */].isInsideTaskBox(style, ev.offsetX, ev.offsetY)) {\n // Prevent cursor focusing\n ev.preventDefault();\n dom[\"a\" /* default */].toggleClass(ev.target, TASK_CHECKED_CLASS_NAME);\n }\n });\n }\n /**\n * Initialize event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygSetValueAfter', function () {\n _this._removeTaskListClass();\n });\n }\n /**\n * Initialize key event handler\n * @private\n */\n ;\n\n _proto._initKeyHandler = function _initKeyHandler() {\n var _this2 = this;\n\n this.wwe.addKeyEventHandler('ENTER', function (ev, range) {\n if (_this2.isInTaskList(range)) {\n _this2.wwe.defer(function () {\n var newRange = _this2.wwe.getRange();\n\n var li = dom[\"a\" /* default */].closest(newRange.startContainer, 'li');\n\n if (li) {\n removeClass_default()(li, TASK_CHECKED_CLASS_NAME);\n }\n });\n }\n });\n }\n /**\n * Check whether passed range is in task list or not\n * @param {Range} range range\n * @returns {boolean} result\n */\n ;\n\n _proto.isInTaskList = function isInTaskList(range) {\n var li;\n\n if (!range) {\n range = this.wwe.getEditor().getSelection().cloneRange();\n }\n\n if (range.startContainer.nodeType === Node.ELEMENT_NODE && range.startContainer.tagName === 'LI') {\n li = range.startContainer;\n } else {\n var _domUtils$parents = dom[\"a\" /* default */].parents(range.startContainer, 'li');\n\n li = _domUtils$parents[0];\n }\n\n return !!li && hasClass_default()(li, TASK_CLASS_NAME);\n }\n /**\n * Unforamt task\n * @param {Node} node target\n */\n ;\n\n _proto.unformatTask = function unformatTask(node) {\n var li = dom[\"a\" /* default */].closest(node, 'li');\n removeClass_default()(li, TASK_CLASS_NAME);\n removeClass_default()(li, TASK_CHECKED_CLASS_NAME);\n li.removeAttribute(TASK_ATTR_NAME);\n\n if (!li.getAttribute('class')) {\n li.removeAttribute('class');\n }\n }\n /**\n * Format task\n * @param {Node} node target\n */\n ;\n\n _proto.formatTask = function formatTask(node) {\n var li = dom[\"a\" /* default */].closest(node, 'li');\n addClass_default()(li, TASK_CLASS_NAME);\n li.setAttribute(TASK_ATTR_NAME, '');\n }\n /**\n * Format task if current range has task class name\n * @private\n */\n ;\n\n _proto._formatTaskIfNeed = function _formatTaskIfNeed() {\n var range = this.wwe.getEditor().getSelection().cloneRange();\n\n if (this.isInTaskList(range)) {\n this.formatTask(range.startContainer);\n }\n }\n /**\n * Remove tasklist class\n * @private\n */\n ;\n\n _proto._removeTaskListClass = function _removeTaskListClass() {\n // because task-list class is block merge normal list and task list\n dom[\"a\" /* default */].findAll(this.wwe.getBody(), '.task-list').forEach(function (node) {\n removeClass_default()(node, 'task-list');\n });\n };\n\n return WwTaskManager;\n}();\n\n/* harmony default export */ var wwTaskManager = (wwTaskManager_WwTaskManager);\n// CONCATENATED MODULE: ./src/js/wwTableManager.js\n/**\n * @fileoverview Implements wysiwyg table manager\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar isIE10 = browser_default.a.msie && browser_default.a.version === 10;\nvar TABLE_CLASS_PREFIX = 'te-content-table-';\nvar isIE10And11 = browser_default.a.msie && (browser_default.a.version === 10 || browser_default.a.version === 11);\nvar BASIC_CELL_CONTENT = browser_default.a.msie ? '' : '
    ';\nvar TABLE_CELL_SELECTED_CLASS_NAME = 'te-cell-selected';\n/**\n * Class WwTableManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwTableManager_WwTableManager = /*#__PURE__*/function () {\n function WwTableManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'table';\n this._lastCellNode = null;\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwTableManager.prototype;\n\n _proto._init = function _init() {\n this._initKeyHandler();\n\n this._initEvent();\n\n this.tableID = 0;\n }\n /**\n * Initialize event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygRangeChangeAfter.table', function () {\n var range = _this.wwe.getEditor().getSelection();\n\n var isRangeInTable = _this.wwe.isInTable(range);\n\n _this._unwrapBlockInTable();\n\n _this._completeTableIfNeed();\n\n if (!isRangeInTable) {\n var selectionManager = _this.wwe.componentManager.getManager('tableSelection');\n\n selectionManager.removeClassAttrbuteFromAllCellsIfNeed();\n }\n\n _this._insertDefaultBlockBetweenTable();\n });\n this.eventManager.listen('wysiwygSetValueAfter.table', function () {\n _this._unwrapBlockInTable();\n\n _this._insertDefaultBlockBetweenTable();\n }); // remove last br in td or th\n\n this.eventManager.listen('wysiwygProcessHTMLText.table', function (html) {\n return html.replace(/
    (<\\/td>|<\\/th>)/g, '$1');\n });\n this.eventManager.listen('cut.table', function () {\n var selectionManager = _this.wwe.componentManager.getManager('tableSelection');\n\n var selectedCells = selectionManager.getSelectedCells();\n\n if (selectedCells.length) {\n selectedCells.forEach(function (cell) {\n cell.innerHTML = BASIC_CELL_CONTENT;\n });\n }\n\n selectionManager.removeClassAttrbuteFromAllCellsIfNeed();\n });\n this.eventManager.listen('copyBefore.table', function (_ref) {\n var clipboardContainer = _ref.clipboardContainer;\n return _this.updateTableHtmlOfClipboardIfNeed(clipboardContainer);\n });\n }\n /**\n * Update table html of clipboard data, if has selected cells.\n * @param {HTMLElement} clipboardContainer - clipboard element\n */\n ;\n\n _proto.updateTableHtmlOfClipboardIfNeed = function updateTableHtmlOfClipboardIfNeed(clipboardContainer) {\n var _this2 = this;\n\n var selectionManager = this.wwe.componentManager.getManager('tableSelection');\n var selectedCells = selectionManager.getSelectedCells();\n\n if (selectedCells.length) {\n selectionManager.createRangeBySelectedCells();\n var fragment = this.wwe.getEditor().getSelection().cloneContents();\n toArray_default()(fragment.children).forEach(function (node) {\n if (!_this2.isTableOrSubTableElement(node.nodeName)) {\n return;\n }\n\n if (node.nodeName === 'TABLE' && node.querySelector('thead') && node.querySelector('tbody')) {\n dom[\"a\" /* default */].remove(node);\n } else if (node.previousSibling && node.previousSibling.nodeName === 'TABLE') {\n node.previousSibling.appendChild(node);\n } else {\n _this2._completeIncompleteTable(node);\n\n if (node.nodeName !== 'TABLE' && node.nodeName !== 'THEAD') {\n var thead = dom[\"a\" /* default */].closest(node, 'table').querySelector('thead');\n dom[\"a\" /* default */].remove(thead);\n }\n }\n });\n clipboardContainer.appendChild(fragment);\n dom[\"a\" /* default */].findAll(clipboardContainer, \".\" + TABLE_CELL_SELECTED_CLASS_NAME).forEach(function (cell) {\n removeClass_default()(cell, TABLE_CELL_SELECTED_CLASS_NAME);\n });\n }\n }\n /**\n * Paste clibpard data that contains only table.\n * @param {Node} clipboardTable - table element of clipboard\n */\n ;\n\n _proto.pasteTableData = function pasteTableData(clipboardTable) {\n this._expandTableIfNeed(clipboardTable);\n\n this._pasteDataIntoTable(clipboardTable);\n }\n /**\n * Initialize key event handler\n * @private\n */\n ;\n\n _proto._initKeyHandler = function _initKeyHandler() {\n var _this3 = this;\n\n this.keyEventHandlers = {\n DEFAULT: function DEFAULT(ev, range, keymap) {\n var isRangeInTable = _this3.wwe.isInTable(range);\n\n if (isRangeInTable && !_this3._isModifierKey(keymap)) {\n _this3._recordUndoStateIfNeed(range);\n\n _this3._removeContentsAndChangeSelectionIfNeed(range, keymap, ev);\n } else if (!isRangeInTable && _this3._lastCellNode) {\n _this3._recordUndoStateAndResetCellNode(range);\n }\n\n if (isRangeInTable && !_this3._isModifierKeyPushed(ev)) {\n _this3.wwe.getEditor().modifyDocument(function () {\n var selectionManager = _this3.wwe.componentManager.getManager('tableSelection');\n\n selectionManager.removeClassAttrbuteFromAllCellsIfNeed();\n });\n }\n },\n ENTER: function ENTER(ev, range) {\n var isNeedNext;\n\n if (_this3._isAfterTable(range)) {\n ev.preventDefault();\n range.setStart(range.startContainer, range.startOffset - 1);\n\n _this3.wwe.breakToNewDefaultBlock(range);\n\n isNeedNext = false;\n } else if (_this3._isBeforeTable(range)) {\n ev.preventDefault();\n\n _this3.wwe.breakToNewDefaultBlock(range, 'before');\n\n isNeedNext = false;\n } else if (_this3.wwe.isInTable(range)) {\n if (!_this3._isInList(range.startContainer) && _this3._isInStyledText(range)) {\n _this3.wwe.defer(function () {\n _this3._removeBRinStyleText();\n });\n } else if (_this3._isEmptyFirstLevelLI(range)) {\n _this3.wwe.defer(function () {\n // Squire make div when LI level is decreased in first level so should replace div to br\n var afterRange = _this3.wwe.getRange().cloneRange();\n\n var div = afterRange.startContainer;\n var br = document.createElement('br');\n div.parentNode.replaceChild(br, div);\n afterRange.setStartBefore(br);\n afterRange.collapse(true);\n\n _this3.wwe.getEditor().setSelection(afterRange);\n });\n }\n\n _this3._appendBrIfTdOrThNotHaveAsLastChild(range);\n\n isNeedNext = false;\n }\n\n return isNeedNext;\n },\n BACK_SPACE: function BACK_SPACE(ev, range, keymap) {\n return _this3._handleBackspaceAndDeleteKeyEvent(ev, range, keymap);\n },\n DELETE: function DELETE(ev, range, keymap) {\n return _this3._handleBackspaceAndDeleteKeyEvent(ev, range, keymap);\n },\n TAB: function TAB() {\n return _this3._moveCursorTo('next', 'cell');\n },\n 'SHIFT+TAB': function SHIFTTAB(ev) {\n return _this3._moveCursorTo('previous', 'cell', ev);\n },\n UP: function UP(ev) {\n return _this3._moveCursorTo('previous', 'row', ev);\n },\n DOWN: function DOWN(ev) {\n return _this3._moveCursorTo('next', 'row', ev);\n }\n };\n forEachOwnProperties_default()(this.keyEventHandlers, function (handler, key) {\n return _this3.wwe.addKeyEventHandler(key, handler);\n });\n }\n /**\n * Check whether node is li and empty\n * @param {node} node node\n * @returns {boolean} whether node is li and empty\n * @private\n */\n ;\n\n _proto._isEmptyListItem = function _isEmptyListItem(node) {\n var childNodes = node.childNodes,\n nodeName = node.nodeName;\n return nodeName === 'LI' && childNodes.length === 1 && childNodes[0].nodeName === 'BR';\n }\n /**\n * Check whether range is in empty LI that is first level\n * @param {range} range range\n * @returns {boolean} whether range is in empty LI that is first level\n * @private\n */\n ;\n\n _proto._isEmptyFirstLevelLI = function _isEmptyFirstLevelLI(range) {\n var collapsed = range.collapsed,\n startContainer = range.startContainer,\n startOffset = range.startOffset;\n return collapsed && startOffset === 0 && this._isEmptyListItem(startContainer) && dom[\"a\" /* default */].isFirstLevelListItem(startContainer);\n }\n /**\n * Check whether range is in style tag that is like 'B', 'I', 'S', 'SPAN', 'CODE'\n * Those tag is supported in Wysiwyg.\n * @param {Range} range range\n * @returns {Boolean} range is in the style tag\n * @private\n */\n ;\n\n _proto._isInStyledText = function _isInStyledText(range) {\n var startContainer = range.startContainer;\n var node;\n\n if (dom[\"a\" /* default */].isTextNode(startContainer)) {\n node = startContainer.parentNode;\n } else {\n node = startContainer;\n }\n\n return range.collapsed && dom[\"a\" /* default */].isStyledNode(node);\n }\n /**\n * When enter key occur in the styled text, 'br' tag insert in the style tag like 'b', 'i' etc.\n * So in thoes case, 'br' tag would be pulled out in this logic.\n * @private\n */\n ;\n\n _proto._removeBRinStyleText = function _removeBRinStyleText() {\n var afterRange = this.wwe.getRange();\n var startContainer = afterRange.startContainer,\n startOffset = afterRange.startOffset;\n var styleNode;\n\n if (startContainer.nodeName === 'TD') {\n // This case is TEST
    |
    \n styleNode = dom[\"a\" /* default */].getChildNodeByOffset(startContainer, startOffset - 1);\n } else {\n styleNode = dom[\"a\" /* default */].getParentUntil(startContainer, 'TD');\n }\n\n var brNode = styleNode.querySelector('br');\n\n if (!brNode) {\n return;\n }\n\n var _styleNode = styleNode,\n tdNode = _styleNode.parentNode,\n nodeName = _styleNode.nodeName;\n\n if (nodeName === 'CODE' && !brNode.previousSibling) {\n // cursor is located in the start of text\n // Before Enter : |TEST\n // After Enter :
    |TEST
    \n // TO BE :
    |TEST\n tdNode.insertBefore(brNode, styleNode);\n afterRange.setStart(styleNode, 0);\n } else if (nodeName === 'CODE' && !brNode.nextSibling) {\n // cursor is located in the end of text\n // Before Enter : TEST|\n // After Enter : TEST
    |
    \n // TO BE : TEST
    |\n tdNode.insertBefore(brNode, styleNode.nextSibling);\n afterRange.setStart(tdNode, dom[\"a\" /* default */].getNodeOffsetOfParent(brNode) + 1);\n } else {\n // [Case 1] cursor is located in the middle of text\n // Before Enter : TE|ST\n // After Enter : TE
    |ST
    \n // TO BE : TE
    |ST\n // [Case 2] cursor is located in the start of text\n // Before Enter : |TEST\n // After Enter :
    |TEST
    \n // TO BE : |
    TEST\n // [Case 3] cursor is located in the end of text\n // Before Enter : TEST|\n // After Enter : TEST
    |
    \n // TO BE : TEST
    |\n var newNode = this._splitByBR(styleNode, brNode);\n\n afterRange.setStart(newNode, 0);\n }\n\n afterRange.collapse(true);\n this.wwe.getEditor().setSelection(afterRange);\n }\n /**\n * When container node have br node, split container base on br node and pull out BR.\n * After Enter : TE
    ST
    \n * TO BE : TE
    ST\n * @param {Node} container container\n * @param {Node} brNode container\n * @returns {Node} node for positioning of cursor\n * @private\n */\n ;\n\n _proto._splitByBR = function _splitByBR(container, brNode) {\n var cloneStyleNode = container.cloneNode(true);\n var newBR = document.createElement('br');\n var parentNode = container.parentNode; // Origin style node should be removed the back nodes of br node.\n\n dom[\"a\" /* default */].removeNodesByDirection(container, brNode, false);\n brNode.parentNode.removeChild(brNode); // Cloned style node should be removed the front nodes of br node\n\n var clonedBR = cloneStyleNode.querySelector('br');\n dom[\"a\" /* default */].removeNodesByDirection(cloneStyleNode, clonedBR, true);\n clonedBR.parentNode.removeChild(clonedBR);\n parentNode.insertBefore(cloneStyleNode, container.nextSibling);\n parentNode.insertBefore(newBR, cloneStyleNode);\n var leafNode = dom[\"a\" /* default */].getLeafNode(cloneStyleNode);\n\n if (!dom[\"a\" /* default */].getTextLength(leafNode)) {\n leafNode.textContent = \"\\u200B\";\n }\n\n return leafNode;\n }\n /**\n * Check whether passed range is right before table or not\n * @param {Range} range range\n * @returns {boolean} result\n * @private\n */\n ;\n\n _proto._isBeforeTable = function _isBeforeTable(range) {\n return dom[\"a\" /* default */].getNodeName(dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset)) === 'TABLE';\n }\n /**\n * Check whether passed range is right after table or not\n * @param {Range} range range\n * @returns {boolean} result\n * @private\n */\n ;\n\n _proto._isAfterTable = function _isAfterTable(range) {\n var prevElem = dom[\"a\" /* default */].getPrevOffsetNodeUntil(range.startContainer, range.startOffset);\n return dom[\"a\" /* default */].getNodeName(prevElem) === 'TABLE' && range.commonAncestorContainer === this.wwe.getBody();\n }\n /**\n * Handle backspace and delete key event\n * @param {object} ev - Event object\n * @param {Range} range - Range Object\n * @param {string} keymap - keymap\n * @returns {boolean} - need next\n * @private\n */\n ;\n\n _proto._handleBackspaceAndDeleteKeyEvent = function _handleBackspaceAndDeleteKeyEvent(ev, range, keymap) {\n var isBackspace = keymap === 'BACK_SPACE';\n var selectionManager = this.wwe.componentManager.getManager('tableSelection');\n var selectedCells = selectionManager.getSelectedCells();\n var isNeedNext = true;\n\n if (range.collapsed) {\n if (this.wwe.isInTable(range)) {\n if (isBackspace) {\n this._tableHandlerOnBackspace(range, ev);\n } else {\n this._tableHandlerOnDelete(range, ev);\n }\n\n this._removeContentsAndChangeSelectionIfNeed(range, keymap, ev);\n\n isNeedNext = false;\n } else if (!isBackspace && this._isBeforeTable(range) || isBackspace && this._isAfterTable(range)) {\n ev.preventDefault();\n var startOffset = isBackspace ? range.startOffset - 1 : range.startOffset;\n\n this._removeTable(range, dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, startOffset));\n\n isNeedNext = false;\n }\n } else if (this.wwe.isInTable(range)) {\n if (selectedCells.length > 0) {\n var removed = this._removeContentsAndChangeSelectionIfNeed(range, keymap, ev);\n\n if (removed) {\n ev.preventDefault();\n isNeedNext = false;\n }\n }\n }\n\n return isNeedNext;\n }\n /**\n * Move Li node to previous node that is previous node of list node.\n * @param {node} liNode li node\n * @param {range} range range\n * @private\n */\n ;\n\n _proto._moveListItemToPreviousOfList = function _moveListItemToPreviousOfList(liNode, range) {\n var listNode = liNode.parentNode,\n firstChild = liNode.firstChild;\n var fragment = document.createDocumentFragment();\n dom[\"a\" /* default */].mergeNode(liNode, fragment);\n listNode.parentNode.insertBefore(fragment, listNode);\n range.setStart(firstChild, 0);\n range.collapse(true);\n this.wwe.getEditor().setSelection(range);\n\n if (!listNode.hasChildNodes()) {\n listNode.parentNode.removeChild(listNode);\n }\n };\n\n _proto._isInList = function _isInList(targetNode) {\n return dom[\"a\" /* default */].getParentUntilBy(targetNode, function (node) {\n return node && (dom[\"a\" /* default */].isListNode(node) || node.nodeName === 'LI');\n }, function (node) {\n return node && (node.nodeName === 'TD' || node.nodeName === 'TH');\n });\n }\n /**\n * Find LI node while search parentNode inside TD\n * @param {node} startContainer startContainer\n * @returns {node} liNode or null\n * @private\n */\n ;\n\n _proto._findListItem = function _findListItem(startContainer) {\n return dom[\"a\" /* default */].getParentUntilBy(startContainer, function (node) {\n return node && dom[\"a\" /* default */].isListNode(node);\n }, function (node) {\n return node && (node.nodeName === 'TD' || node.nodeName === 'TH');\n });\n }\n /**\n * Backspace handler in table\n * @param {Range} range range\n * @param {Event} event event\n * @private\n */\n ;\n\n _proto._tableHandlerOnBackspace = function _tableHandlerOnBackspace(range, event) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset;\n\n var liNode = this._findListItem(startContainer);\n\n if (liNode && startOffset === 0 && dom[\"a\" /* default */].isFirstListItem(liNode) && dom[\"a\" /* default */].isFirstLevelListItem(liNode)) {\n this.wwe.getEditor().saveUndoState(range);\n\n this._moveListItemToPreviousOfList(liNode, range);\n\n event.preventDefault();\n } else {\n var prevNode = dom[\"a\" /* default */].getPrevOffsetNodeUntil(startContainer, startOffset, 'TR');\n var prevNodeName = dom[\"a\" /* default */].getNodeName(prevNode);\n\n if (prevNodeName === 'BR' && prevNode.parentNode.childNodes.length !== 1) {\n event.preventDefault();\n dom[\"a\" /* default */].remove(prevNode);\n }\n }\n }\n /**\n * Return whether delete br in the br\n * @param {Range} range Range object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isDeletingBR = function _isDeletingBR(range) {\n var currentNode = this._getCurrentNodeInCell(range);\n\n var nextSibling = currentNode && currentNode.nextSibling;\n return dom[\"a\" /* default */].getNodeName(currentNode) === 'BR' && !!nextSibling && dom[\"a\" /* default */].getNodeName(nextSibling) === 'BR';\n };\n\n _proto._getCurrentNodeInCell = function _getCurrentNodeInCell(range) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset;\n var currentNode;\n\n if (dom[\"a\" /* default */].getNodeName(startContainer) === 'TD') {\n currentNode = dom[\"a\" /* default */].getChildNodeByOffset(startContainer, startOffset);\n } else if (dom[\"a\" /* default */].getParentUntil(startContainer, 'TD')) {\n currentNode = startContainer;\n }\n\n return currentNode;\n }\n /**\n * Check whether range is located in end of the list\n * @param {Node} liNode liNode\n * @param {Range} range range\n * @returns {Boolean} whether range is located in end of the list\n * @private\n */\n ;\n\n _proto._isEndOfList = function _isEndOfList(liNode, range) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset;\n var result = false;\n\n if (!liNode.nextSibling) {\n if (liNode === startContainer) {\n var liNodeOffset = dom[\"a\" /* default */].getOffsetLength(liNode);\n\n if (liNode.lastChild.nodeName === 'BR') {\n liNodeOffset -= 1;\n }\n\n result = liNodeOffset === startOffset;\n } else {\n var parentNode = dom[\"a\" /* default */].getParentUntil(startContainer, 'li') || startContainer;\n var startContainerOffset = dom[\"a\" /* default */].getOffsetLength(startContainer);\n var lastChild = liNode.lastChild;\n\n if (lastChild.nodeName === 'BR') {\n lastChild = lastChild.previousSibling;\n }\n\n result = lastChild === parentNode && startContainerOffset === startOffset;\n }\n }\n\n return result;\n }\n /**\n * Get next line nodes from target node\n * @param {Node} node target node\n * @returns {DocumentFragment} next line nodes\n * @private\n */\n ;\n\n _proto._getNextLineNode = function _getNextLineNode(node) {\n var fragment = document.createDocumentFragment();\n var parentNode = dom[\"a\" /* default */].getParentUntil(node, 'TD');\n var nextSibling = parentNode.nextSibling;\n\n while (nextSibling) {\n var _nextSibling = nextSibling,\n next = _nextSibling.nextSibling;\n fragment.appendChild(nextSibling);\n\n if (nextSibling.nodeName === 'BR') {\n break;\n }\n\n nextSibling = next;\n }\n\n return fragment;\n }\n /**\n * Delete handler in table\n * @param {Range} range range\n * @param {Event} event event\n * @private\n */\n ;\n\n _proto._tableHandlerOnDelete = function _tableHandlerOnDelete(range, event) {\n var liNode = this._findListItem(range.startContainer);\n\n if (liNode && this._isEndOfList(liNode, range)) {\n this.wwe.getEditor().saveUndoState(range);\n\n if (liNode.lastChild.nodeName === 'BR') {\n liNode.removeChild(liNode.lastChild);\n }\n\n dom[\"a\" /* default */].mergeNode(this._getNextLineNode(liNode), liNode);\n event.preventDefault();\n } else if (this._isDeletingBR(range)) {\n var currentNode = this._getCurrentNodeInCell(range);\n\n currentNode.parentNode.removeChild(currentNode.nextSibling);\n event.preventDefault();\n }\n }\n /**\n * Append br if td or th doesn't have br as last child\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._appendBrIfTdOrThNotHaveAsLastChild = function _appendBrIfTdOrThNotHaveAsLastChild(range) {\n var startContainerNodeName = dom[\"a\" /* default */].getNodeName(range.startContainer);\n var tdOrTh;\n\n if (startContainerNodeName === 'TD' || startContainerNodeName === 'TH') {\n tdOrTh = range.startContainer;\n } else {\n var paths = dom[\"a\" /* default */].parentsUntil(range.startContainer, 'tr');\n tdOrTh = paths[paths.length - 1];\n }\n\n var nodeName = dom[\"a\" /* default */].getNodeName(tdOrTh.lastChild);\n\n if (nodeName !== 'BR' && nodeName !== 'DIV' && nodeName !== 'UL' && nodeName !== 'OL' && !isIE10And11) {\n dom[\"a\" /* default */].append(tdOrTh, '
    ');\n }\n }\n /**\n * Unwrap default block tag in table\n * For Squire default action making abnormal behavior, remove default blocks in Table after setValue() called\n * @private\n */\n ;\n\n _proto._unwrapBlockInTable = function _unwrapBlockInTable() {\n var blocks = dom[\"a\" /* default */].findAll(this.wwe.getBody(), 'td div,th div,tr>br,td>br,th>br');\n blocks.forEach(function (node) {\n if (dom[\"a\" /* default */].getNodeName(node) === 'BR') {\n var parentNodeName = dom[\"a\" /* default */].getNodeName(node.parentNode);\n var isInTableCell = /TD|TH/.test(parentNodeName);\n var isEmptyTableCell = node.parentNode.textContent.length === 0;\n var isLastBR = node.parentNode.lastChild === node;\n\n if (parentNodeName === 'TR' || isInTableCell && !isEmptyTableCell && isLastBR) {\n dom[\"a\" /* default */].remove(node);\n }\n } else {\n dom[\"a\" /* default */].unwrap(node);\n }\n });\n }\n /**\n * Insert default block between table element\n * @private\n */\n ;\n\n _proto._insertDefaultBlockBetweenTable = function _insertDefaultBlockBetweenTable() {\n var tables = dom[\"a\" /* default */].findAll(this.wwe.getBody(), 'table');\n tables.forEach(function (node) {\n if (node.nextElementSibling && node.nextElementSibling.nodeName === 'TABLE') {\n var insertedElement = document.createElement('div');\n insertedElement.appendChild(document.createElement('br'));\n dom[\"a\" /* default */].insertAfter(insertedElement, node);\n }\n });\n }\n /**\n * Remove table\n * @param {Range} range range\n * @param {Node} table table\n * @private\n */\n ;\n\n _proto._removeTable = function _removeTable(range, table) {\n if (table.tagName === 'TABLE') {\n this.wwe.getEditor().saveUndoState(range);\n this.wwe.saveSelection(range);\n dom[\"a\" /* default */].remove(table);\n this.wwe.restoreSavedSelection();\n }\n }\n /**\n * record undo state if need\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._recordUndoStateIfNeed = function _recordUndoStateIfNeed(range) {\n var currentCellNode = dom[\"a\" /* default */].getParentUntil(range.startContainer, 'TR');\n\n if (range.collapsed && currentCellNode && this._lastCellNode !== currentCellNode) {\n this.wwe.getEditor().saveUndoState(range);\n this._lastCellNode = currentCellNode;\n }\n }\n /**\n * record undo state and reset last cell node\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._recordUndoStateAndResetCellNode = function _recordUndoStateAndResetCellNode(range) {\n this.wwe.getEditor().saveUndoState(range);\n this.resetLastCellNode();\n }\n /**\n * Paste table data into table element\n * @param {DocumentFragment} fragment Fragment of table element within\n * @private\n */\n ;\n\n _proto._pasteDataIntoTable = function _pasteDataIntoTable(fragment) {\n var _this$wwe$getEditor$g = this.wwe.getEditor().getSelection(),\n startContainer = _this$wwe$getEditor$g.startContainer;\n\n var tableData = this._getTableDataFromTable(fragment);\n\n var isTableCell = startContainer.nodeName === 'TD' || startContainer.nodeName === 'TH';\n var brString = isIE10 ? '' : '
    ';\n var anchorElement, td, tr, tdContent;\n\n if (isTableCell) {\n anchorElement = startContainer;\n } else {\n anchorElement = dom[\"a\" /* default */].getParentUntilBy(startContainer, function (node) {\n return node && (node.nodeName === 'TD' || node.nodeName === 'TH');\n }, function (node) {\n return !!dom[\"a\" /* default */].closest(node, 'table');\n });\n anchorElement = anchorElement ? anchorElement.parentNode : null;\n }\n\n anchorElement = anchorElement ? anchorElement : startContainer.querySelector('th,td');\n td = anchorElement;\n\n while (tableData.length) {\n tr = tableData.shift();\n\n while (td && tr.length) {\n tdContent = tr.shift();\n\n if (tdContent.length) {\n td.textContent = tdContent;\n } else {\n td.innerHTML = brString;\n }\n\n td = dom[\"a\" /* default */].getTableCellByDirection(td, 'next');\n }\n\n td = dom[\"a\" /* default */].getSiblingRowCellByDirection(anchorElement, 'next', false);\n anchorElement = td;\n }\n }\n /**\n * Get array data from table element\n * @param {DocumentFragment} fragment table element\n * @returns {Array}\n * @private\n */\n ;\n\n _proto._getTableDataFromTable = function _getTableDataFromTable(fragment) {\n var tableData = [];\n dom[\"a\" /* default */].findAll(fragment, 'tr').forEach(function (tr) {\n var trData = [];\n toArray_default()(tr.children).forEach(function (cell) {\n trData.push(cell.textContent);\n });\n\n if (trData.length) {\n tableData.push(trData);\n }\n });\n return tableData;\n }\n /**\n * Remove selected table contents\n * @param {HTMLElement} selectedCells Selected cells\n * @private\n */\n ;\n\n _proto._removeTableContents = function _removeTableContents(selectedCells) {\n this.wwe.getEditor().saveUndoState();\n toArray_default()(selectedCells).forEach(function (cell) {\n var brHTMLString = isIE10 ? '' : '
    ';\n cell.innerHTML = brHTMLString;\n });\n }\n /**\n * Wrap dangling table cells with new TR\n * @param {HTMLElement} container - clipboard container\n * @returns {HTMLElement|null}\n */\n ;\n\n _proto.wrapDanglingTableCellsIntoTrIfNeed = function wrapDanglingTableCellsIntoTrIfNeed(container) {\n var danglingTableCells = dom[\"a\" /* default */].children(container, 'td,th');\n var tr;\n\n if (danglingTableCells.length) {\n var wrapperTr = document.createElement('tr');\n toArray_default()(danglingTableCells).forEach(function (cell) {\n dom[\"a\" /* default */].append(wrapperTr, cell);\n });\n tr = wrapperTr;\n }\n\n return tr;\n }\n /**\n * Wrap TRs with new TBODY\n * @param {HTMLElement} container - clipboard container\n * @returns {HTMLElement|null}\n */\n ;\n\n _proto.wrapTrsIntoTbodyIfNeed = function wrapTrsIntoTbodyIfNeed(container) {\n var danglingTrs = dom[\"a\" /* default */].children(container, 'tr');\n var ths = [];\n toArray_default()(danglingTrs).forEach(function (tr) {\n ths = ths.concat(tr.querySelectorAll('th'));\n });\n var tbody;\n\n if (ths.length) {\n toArray_default()(ths).forEach(function (node) {\n var td = document.createElement('td');\n td.innerHTML = node.innerHTML;\n dom[\"a\" /* default */].insertBefore(node, td);\n dom[\"a\" /* default */].remove(node);\n });\n }\n\n if (danglingTrs.length) {\n var wrapperTableBody = document.createElement('tbody');\n toArray_default()(danglingTrs).forEach(function (tr) {\n dom[\"a\" /* default */].append(wrapperTableBody, tr);\n });\n tbody = wrapperTableBody;\n }\n\n return tbody;\n }\n /**\n * Wrap THEAD followed by TBODY both into Table\n * @param {HTMLElement} container - clipboard container\n * @returns {HTMLElement|null}\n */\n ;\n\n _proto.wrapTheadAndTbodyIntoTableIfNeed = function wrapTheadAndTbodyIntoTableIfNeed(container) {\n var danglingThead = dom[\"a\" /* default */].children(container, 'thead');\n var danglingTbody = dom[\"a\" /* default */].children(container, 'tbody');\n var wrapperTable = document.createElement('table');\n var table;\n\n if (!danglingTbody.length && danglingThead.length) {\n dom[\"a\" /* default */].append(wrapperTable, danglingThead[0]);\n dom[\"a\" /* default */].append(wrapperTable, this._createTheadOrTboday('tbody'));\n table = wrapperTable;\n } else if (danglingTbody.length && !danglingThead.length) {\n dom[\"a\" /* default */].append(wrapperTable, this._createTheadOrTboday('thead'));\n dom[\"a\" /* default */].append(wrapperTable, danglingTbody[0]);\n table = wrapperTable;\n } else if (danglingTbody.length && danglingThead.length) {\n dom[\"a\" /* default */].append(wrapperTable, danglingThead[0]);\n dom[\"a\" /* default */].append(wrapperTable, danglingTbody[0]);\n table = wrapperTable;\n }\n\n return table;\n }\n /**\n * Whether pasting element is table element\n * @param {string} pastingNodeName Pasting node name\n * @returns {boolean}\n */\n ;\n\n _proto.isTableOrSubTableElement = function isTableOrSubTableElement(pastingNodeName) {\n return pastingNodeName === 'TABLE' || pastingNodeName === 'TBODY' || pastingNodeName === 'THEAD' || pastingNodeName === 'TR' || pastingNodeName === 'TD';\n };\n\n _proto._createTheadOrTboday = function _createTheadOrTboday(type) {\n var theadOrTbody = document.createElement(type);\n var tr = document.createElement('tr');\n theadOrTbody.appendChild(tr);\n return theadOrTbody;\n }\n /**\n * Stuff table cells into incomplete rows\n * @param {HTMLElement} trs HTMLElement wrapped TRs\n * @param {number} maximumCellLength maximum cell length of table\n * @private\n */\n ;\n\n _proto._stuffTableCellsIntoIncompleteRow = function _stuffTableCellsIntoIncompleteRow(trs, maximumCellLength) {\n toArray_default()(trs).forEach(function (row) {\n var tableCells = row.querySelectorAll('th,td');\n var parentNodeName = dom[\"a\" /* default */].getNodeName(row.parentNode);\n var cellTagName = parentNodeName === 'THEAD' ? 'th' : 'td';\n\n for (var cellLength = tableCells.length; cellLength < maximumCellLength; cellLength += 1) {\n dom[\"a\" /* default */].append(row, tableCellGenerator(1, cellTagName));\n }\n });\n }\n /**\n * Prepare to table cell stuffing\n * @param {HTMLElement} trs wrapped TRs\n * @returns {{maximumCellLength: *, needTableCellStuffingAid: boolean}}\n */\n ;\n\n _proto.prepareToTableCellStuffing = function prepareToTableCellStuffing(trs) {\n var maximumCellLength = trs[0].querySelectorAll('th,td').length;\n var needTableCellStuffingAid = false;\n toArray_default()(trs).forEach(function (row) {\n var cellCount = row.querySelectorAll('th,td').length;\n\n if (maximumCellLength !== cellCount) {\n needTableCellStuffingAid = true;\n\n if (maximumCellLength < cellCount) {\n maximumCellLength = cellCount;\n }\n }\n });\n return {\n maximumCellLength: maximumCellLength,\n needTableCellStuffingAid: needTableCellStuffingAid\n };\n }\n /**\n * Add TBODY or THEAD if need\n * @param {HTMLElement} table - Table HTMLElement element\n * @private\n */\n ;\n\n _proto._addTbodyOrTheadIfNeed = function _addTbodyOrTheadIfNeed(table) {\n var isTheadNotExists = !table.querySelector('thead');\n var isTbodyNotExists = !table.querySelector('tbody');\n\n if (isTheadNotExists) {\n dom[\"a\" /* default */].prepend(table, '');\n } else if (isTbodyNotExists) {\n dom[\"a\" /* default */].append(table, '');\n }\n }\n /**\n * Append table cells\n * @param {HTMLElement} table Table element\n */\n ;\n\n _proto.tableCellAppendAidForTableElement = function tableCellAppendAidForTableElement(table) {\n this._addTbodyOrTheadIfNeed(table);\n\n this._addTrIntoContainerIfNeed(table);\n\n var trs = table.querySelectorAll('tr');\n var tableAidInformation = this.prepareToTableCellStuffing(trs);\n var maximumCellLength = tableAidInformation.maximumCellLength,\n needTableCellStuffingAid = tableAidInformation.needTableCellStuffingAid;\n\n if (needTableCellStuffingAid) {\n this._stuffTableCellsIntoIncompleteRow(trs, maximumCellLength);\n }\n }\n /**\n * Generate THEAD and append TDs with same amount of given TBODY\n * @param {HTMLElement} node TR element\n * @returns {{thead: HTMLElement, tbody: HTMLElement}}\n * @private\n */\n ;\n\n _proto._generateTheadAndTbodyFromTbody = function _generateTheadAndTbodyFromTbody(node) {\n var tr = document.createElement('tr');\n var thead = document.createElement('thead');\n dom[\"a\" /* default */].append(tr, tableCellGenerator(node.querySelector('tr > td').length, 'th'));\n dom[\"a\" /* default */].append(thead, tr);\n return {\n thead: thead,\n tbody: node\n };\n }\n /**\n * Generate TBODY and append TDs with same amount of given THEAD\n * @param {HTMLElement} node TR element\n * @returns {{thead: HTMLElement, tbody: HTMLElement}}\n * @private\n */\n ;\n\n _proto._generateTheadAndTbodyFromThead = function _generateTheadAndTbodyFromThead(node) {\n var tr = document.createElement('tr');\n var tbody = document.createElement('tbody');\n dom[\"a\" /* default */].append(tr, tableCellGenerator(node.querySelectorAll('th').length, 'td'));\n dom[\"a\" /* default */].append(tbody, tr);\n return {\n thead: node,\n tbody: tbody\n };\n }\n /**\n * Generate THEAD and TBODY and append given TR within\n * @param {HTMLElement} node TR element\n * @returns {{thead: HTMLElement, tbody: HTMLElement}}\n * @private\n */\n ;\n\n _proto._generateTheadAndTbodyFromTr = function _generateTheadAndTbodyFromTr(node) {\n var thead = document.createElement('thead');\n var tbody = document.createElement('tbody');\n var theadRow, tbodyRow;\n\n if (node.children[0].tagName === 'TH') {\n theadRow = node;\n tbodyRow = dom[\"a\" /* default */].createElementWith(\"\" + tableCellGenerator(node.querySelectorAll('th').length, 'td') + \"\");\n } else {\n theadRow = dom[\"a\" /* default */].createElementWith(\"\" + tableCellGenerator(node.querySelectorAll('td').length, 'th') + \"\");\n tbodyRow = node;\n }\n\n dom[\"a\" /* default */].append(thead, theadRow);\n dom[\"a\" /* default */].append(tbody, tbodyRow);\n return {\n thead: thead,\n tbody: tbody\n };\n }\n /**\n * Complete passed table\n * @param {HTMLElement} node - Table inner element\n * @private\n */\n ;\n\n _proto._completeIncompleteTable = function _completeIncompleteTable(node) {\n var nodeName = node.tagName;\n var table, completedTableContents;\n\n if (nodeName === 'TABLE') {\n table = node;\n } else {\n table = document.createElement('table');\n node.parentNode.insertBefore(table, node.nextSibling);\n\n if (nodeName === 'TBODY') {\n completedTableContents = this._generateTheadAndTbodyFromTbody(node);\n } else if (nodeName === 'THEAD') {\n completedTableContents = this._generateTheadAndTbodyFromThead(node);\n } else if (nodeName === 'TR') {\n completedTableContents = this._generateTheadAndTbodyFromTr(node);\n }\n\n table.appendChild(completedTableContents.thead);\n table.appendChild(completedTableContents.tbody);\n }\n\n this._removeEmptyRows(table);\n\n this.tableCellAppendAidForTableElement(table);\n };\n\n _proto._removeEmptyRows = function _removeEmptyRows(table) {\n dom[\"a\" /* default */].findAll(table, 'tr').forEach(function (tr) {\n if (!tr.cells.length) {\n tr.parentNode.removeChild(tr);\n }\n });\n }\n /**\n * Whole editor body searching incomplete table completion\n * @private\n */\n ;\n\n _proto._completeTableIfNeed = function _completeTableIfNeed() {\n var _this4 = this;\n\n var body = this.wwe.getEditor().getBody();\n toArray_default()(body.children).forEach(function (node) {\n if (!_this4.isTableOrSubTableElement(node.nodeName)) {\n return;\n }\n\n if (node.nodeName === 'TABLE' && !node.querySelector('tbody')) {\n dom[\"a\" /* default */].remove(node);\n } else {\n _this4._completeIncompleteTable(node);\n }\n });\n }\n /**\n * Reset _lastCellNode to null\n */\n ;\n\n _proto.resetLastCellNode = function resetLastCellNode() {\n this._lastCellNode = null;\n }\n /**\n * Set _lastCellNode to given node\n * @param {HTMLElement} node Table cell\n */\n ;\n\n _proto.setLastCellNode = function setLastCellNode(node) {\n this._lastCellNode = node;\n }\n /**\n * Return whether only modifier key pressed or not\n * @param {string} keymap Pressed keymap string\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isModifierKey = function _isModifierKey(keymap) {\n return /((META|SHIFT|ALT|CONTROL)\\+?)/g.test(keymap);\n }\n /**\n * Return whether modifier keys pressed or not\n * @param {object} ev keyboard event object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isModifierKeyPushed = function _isModifierKeyPushed(ev) {\n return ev.metaKey || ev.ctrlKey || ev.altKey || ev.shiftKey;\n }\n /**\n * Add one row into empty TBODY\n * @param {HTMLElement} table Currently processing table\n * @private\n */\n ;\n\n _proto._addTrIntoContainerIfNeed = function _addTrIntoContainerIfNeed(table) {\n toArray_default()(table.children).forEach(function (container) {\n var hasNoRows = container.querySelectorAll('tr').length === 0;\n\n if (hasNoRows) {\n dom[\"a\" /* default */].append(container, '');\n }\n });\n };\n\n _proto._expandTableIfNeed = function _expandTableIfNeed(fragment) {\n var range = this.wwe.getEditor().getSelection().cloneRange();\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(range.startContainer, 'table'),\n table = _domUtils$parents[0];\n\n var difference = this._getColumnAndRowDifference(fragment, range);\n\n if (difference.column < 0) {\n this._appendCellForAllRow(table, difference.column);\n }\n\n if (difference.row < 0) {\n this._appendRow(table, difference.row);\n }\n };\n\n _proto._getColumnAndRowDifference = function _getColumnAndRowDifference(fragment, range) {\n var tableData = this._getTableDataFromTable(fragment);\n\n var rowLength = tableData.length;\n var columnLength = tableData[0].length;\n var currentCell = dom[\"a\" /* default */].closest(range.startContainer, 'th,td');\n var currentRow = currentCell.parentNode;\n var currentColumnIndex = dom[\"a\" /* default */].getNodeOffsetOfParent(currentCell);\n var currentRowIndex = dom[\"a\" /* default */].getNodeOffsetOfParent(currentCell.parentNode);\n\n var _domUtils$parents2 = dom[\"a\" /* default */].parents(currentRow, 'table'),\n table = _domUtils$parents2[0];\n\n var tableColumnLength = table.querySelector('tr').children.length;\n var tableRowLength = table.querySelectorAll('tr').length;\n var isInTbody = !!dom[\"a\" /* default */].parents(currentRow, 'tbody').length;\n\n if (isInTbody) {\n currentRowIndex += 1;\n }\n\n return {\n row: tableRowLength - (currentRowIndex + rowLength),\n column: tableColumnLength - (currentColumnIndex + columnLength)\n };\n };\n\n _proto._appendCellForAllRow = function _appendCellForAllRow(table, columnDifference) {\n var brString = isIE10 ? '' : '
    ';\n dom[\"a\" /* default */].findAll(table, 'tr').forEach(function (row, i) {\n var tagName;\n\n for (var index = columnDifference; index < 0; index += 1) {\n if (i === 0) {\n tagName = 'th';\n } else {\n tagName = 'td';\n }\n\n dom[\"a\" /* default */].append(row, \"<\" + tagName + \">\" + brString + \"\");\n }\n });\n };\n\n _proto._appendRow = function _appendRow(table, rowDifference) {\n var trs = table.querySelectorAll('tr');\n var newRow = trs[trs.length - 1].cloneNode(true);\n var brHTMLSting = isIE10 ? '' : '
    ';\n dom[\"a\" /* default */].findAll(newRow, 'td').forEach(function (td) {\n td.innerHTML = brHTMLSting;\n });\n\n for (; rowDifference < 0; rowDifference += 1) {\n dom[\"a\" /* default */].append(table.querySelector('tbody'), newRow.cloneNode(true));\n }\n }\n /**\n * Change selection to sibling cell\n * @param {HTMLElement} currentCell current TD or TH\n * @param {Range} range Range object\n * @param {string} direction 'next' or 'previous'\n * @param {string} scale 'row' or 'cell'\n * @private\n */\n ;\n\n _proto._changeSelectionToTargetCell = function _changeSelectionToTargetCell(currentCell, range, direction, scale) {\n var isNext = direction === 'next';\n var isRow = scale === 'row';\n var target;\n\n if (isRow) {\n target = dom[\"a\" /* default */].getSiblingRowCellByDirection(currentCell, direction, false);\n } else {\n target = dom[\"a\" /* default */].getTableCellByDirection(currentCell, direction);\n\n if (!target) {\n target = dom[\"a\" /* default */].getSiblingRowCellByDirection(currentCell, direction, true);\n }\n }\n\n if (target) {\n if (isRow && !isNext) {\n this._moveToCursorEndOfCell(target, range);\n } else {\n range.setStart(target, 0);\n }\n\n range.collapse(true);\n } else {\n var _domUtils$parents3 = dom[\"a\" /* default */].parents(currentCell, 'table');\n\n target = _domUtils$parents3[0];\n\n if (isNext) {\n range.setStart(target.nextElementSibling, 0);\n } else if (target.previousElementSibling && target.previousElementSibling.nodeName !== 'TABLE') {\n range.setStart(target.previousElementSibling, 1);\n } else {\n range.setStartBefore(target);\n }\n\n range.collapse(true);\n }\n };\n\n _proto._moveToCursorEndOfCell = function _moveToCursorEndOfCell(cell, range) {\n var lastListItem;\n\n if (dom[\"a\" /* default */].isListNode(cell.lastChild)) {\n lastListItem = dom[\"a\" /* default */].getLastNodeBy(cell.lastChild, function (lastNode) {\n return lastNode.nodeName !== 'LI' || lastNode.nextSibling !== null;\n });\n }\n\n var lastText = dom[\"a\" /* default */].getLastNodeBy(lastListItem || cell, function (node) {\n return !dom[\"a\" /* default */].isTextNode(node);\n });\n var lastNode = lastText || lastListItem || cell;\n var offset = lastText ? lastText.length : lastNode.childNodes.length - 1;\n range.setStart(lastNode, offset);\n }\n /**\n * Move cursor to given direction by interval formatter\n * @param {string} direction 'next' or 'previous'\n * @param {string} interval 'row' or 'cell'\n * @param {object} [ev] Event object\n * @returns {boolean | null}\n * @private\n */\n ;\n\n _proto._moveCursorTo = function _moveCursorTo(direction, interval, ev) {\n var sq = this.wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var currentCell = dom[\"a\" /* default */].closest(range.startContainer, 'td,th');\n var isNeedNext;\n\n if (range.collapsed && this.wwe.isInTable(range) && currentCell) {\n if (interval === 'row' && !this._isMovedCursorToRow(range, direction)) {\n return isNeedNext;\n }\n\n if ((direction === 'previous' || interval === 'row') && !isUndefined_default()(ev)) {\n ev.preventDefault();\n }\n\n this._changeSelectionToTargetCell(currentCell, range, direction, interval);\n\n sq.setSelection(range);\n isNeedNext = false;\n }\n\n return isNeedNext;\n };\n\n _proto._isMovedCursorToRow = function _isMovedCursorToRow(range, direction) {\n var startContainer = range.startContainer;\n\n if (this._isInList(startContainer)) {\n return this._isMovedCursorFromListToRow(startContainer, direction);\n }\n\n return this._isMovedCursorFromTextToRow(range, direction);\n };\n\n _proto._isMovedCursorFromListToRow = function _isMovedCursorFromListToRow(startContainer, direction) {\n var directionKey = direction + \"Sibling\";\n\n var listItem = this._findListItem(startContainer);\n\n var parentOfListItem = dom[\"a\" /* default */].getParentNodeBy(listItem, function (parentNode, currentNode) {\n var firstOrLastItem = currentNode[directionKey] === null && parentNode[directionKey] === null;\n return !dom[\"a\" /* default */].isCellNode(parentNode) && firstOrLastItem;\n });\n var firstOrLastList = dom[\"a\" /* default */].isListNode(parentOfListItem) && parentOfListItem[directionKey] === null;\n return dom[\"a\" /* default */].isCellNode(parentOfListItem.parentNode) && firstOrLastList;\n };\n\n _proto._isMovedCursorFromTextToRow = function _isMovedCursorFromTextToRow(range, direction) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset;\n var text = dom[\"a\" /* default */].isCellNode(startContainer) ? startContainer.childNodes[startOffset] : startContainer;\n var parentOfStyledText = dom[\"a\" /* default */].getParentNodeBy(text, function (parentNode) {\n return !dom[\"a\" /* default */].isCellNode(parentNode) && !dom[\"a\" /* default */].isTextNode(parentNode);\n });\n var foundSiblingNode = dom[\"a\" /* default */].getSiblingNodeBy(parentOfStyledText, direction, function (siblingNode) {\n return siblingNode !== null && siblingNode.nodeName !== 'BR';\n });\n return foundSiblingNode && foundSiblingNode[direction + \"Sibling\"] === null;\n }\n /**\n * Remove contents and change selection if need\n * @param {Range} range - Range object\n * @param {string} keymap - keymap\n * @param {object} ev - Event object\n * @returns {boolean} - true if contents has been removed\n * @private\n */\n ;\n\n _proto._removeContentsAndChangeSelectionIfNeed = function _removeContentsAndChangeSelectionIfNeed(range, keymap, ev) {\n var isTextInput = keymap.length <= 1;\n var isDeleteOperation = keymap === 'BACK_SPACE' || keymap === 'DELETE';\n var selectedCells = this.wwe.componentManager.getManager('tableSelection').getSelectedCells();\n var firstSelectedCell = selectedCells[0];\n var processed = false;\n\n if ((isTextInput || isDeleteOperation) && !this._isModifierKeyPushed(ev) && selectedCells.length) {\n if (isDeleteOperation) {\n this._recordUndoStateIfNeed(range);\n }\n\n this._removeTableContents(selectedCells);\n\n this._lastCellNode = firstSelectedCell;\n range.setStart(firstSelectedCell, 0);\n range.collapse(true);\n this.wwe.getEditor().setSelection(range);\n processed = true;\n }\n\n return processed;\n }\n /**\n * Return new table ID class name string\n * @returns {string}\n */\n ;\n\n _proto.getTableIDClassName = function getTableIDClassName() {\n var tableClassName = TABLE_CLASS_PREFIX + this.tableID;\n this.tableID += 1;\n return tableClassName;\n }\n /**\n * Destroy.\n */\n ;\n\n _proto.destroy = function destroy() {\n var _this5 = this;\n\n this.eventManager.removeEventHandler('wysiwygRangeChangeAfter.table');\n this.eventManager.removeEventHandler('wysiwygSetValueAfter.table');\n this.eventManager.removeEventHandler('wysiwygProcessHTMLText.table');\n this.eventManager.removeEventHandler('cut.table');\n this.eventManager.removeEventHandler('copyBefore.table');\n forEachOwnProperties_default()(this.keyEventHandlers, function (handler, key) {\n return _this5.wwe.removeKeyEventHandler(key, handler);\n });\n };\n\n return WwTableManager;\n}();\n/**\n * Generate table cell HTML text\n * @param {number} amount Amount of cells\n * @param {string} tagName Tag name of cell 'td' or 'th'\n * @private\n * @returns {string}\n */\n\n\nfunction tableCellGenerator(amount, tagName) {\n var brHTMLString = '
    ';\n var cellString = \"<\" + tagName + \">\" + brHTMLString + \"\";\n var tdString = '';\n\n for (var i = 0; i < amount; i += 1) {\n tdString = tdString + cellString;\n }\n\n return tdString;\n}\n\n/* harmony default export */ var wwTableManager = (wwTableManager_WwTableManager);\n// CONCATENATED MODULE: ./src/js/wwTableSelectionManager.js\n/**\n * @fileoverview Implements wysiwyg table selection manager\n * @author NHN FE Development Lab \n */\n\n\n\n\n\nvar wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME = 'te-cell-selected';\n/**\n * Class WwTableSelectionManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwTableSelectionManager_WwTableSelectionManager = /*#__PURE__*/function () {\n function WwTableSelectionManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'tableSelection';\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwTableSelectionManager.prototype;\n\n _proto._init = function _init() {\n this._initEvent(); // For disable firefox's table tool UI and table resize handler\n\n\n if (browser_default.a.firefox) {\n document.execCommand('enableObjectResizing', false, 'false');\n document.execCommand('enableInlineTableEditing', false, 'false');\n }\n }\n /**\n * Initialize event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n var selectionStart, selectionEnd, validSelectionEnd;\n /**\n * Start table selection timer\n * @type {object}\n * @private\n */\n\n this._tableSelectionTimer = null;\n /**\n * Remove selection timer for Firefox table selection\n * @type {object}\n * @private\n */\n\n this._removeSelectionTimer = null;\n /**\n * Boolean value for whether selection started\n * @type {boolean}\n * @private\n */\n\n this._isSelectionStarted = false;\n\n var onMouseover = function onMouseover(ev) {\n selectionEnd = dom[\"a\" /* default */].closest(ev.data.target, '[contenteditable=true] td,th');\n\n var range = _this.wwe.getEditor().getSelection();\n\n var isEndsInTable = dom[\"a\" /* default */].parents(selectionEnd, '[contenteditable=true] table');\n var isSameCell = selectionStart === selectionEnd;\n var isTextSelect = _this._isTextSelect(range, isSameCell) && !hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n\n if (_this._isSelectionStarted && isEndsInTable && !isTextSelect) {\n window.getSelection().removeAllRanges(); // For disable firefox's native table cell selection\n\n if (browser_default.a.firefox && !_this._removeSelectionTimer) {\n _this._removeSelectionTimer = setInterval(function () {\n window.getSelection().removeAllRanges();\n }, 10);\n }\n\n if (selectionStart && selectionEnd) {\n _this.highlightTableCellsBy(selectionStart, selectionEnd);\n\n validSelectionEnd = selectionEnd;\n }\n }\n };\n\n var finishSelection = function finishSelection() {\n if (_this._isSelectionStarted) {\n _this._isSelectionStarted = false;\n\n _this.eventManager.removeEventHandler('mouseover.tableSelection');\n\n _this.eventManager.removeEventHandler('mouseup.tableSelection');\n }\n };\n\n var onMouseup = function onMouseup(ev) {\n selectionEnd = dom[\"a\" /* default */].closest(ev.data.target, '[contenteditable=true] td,th');\n\n var range = _this.wwe.getEditor().getSelection();\n\n var isSameCell = selectionStart === selectionEnd;\n var isTextSelect = _this._isTextSelect(range, isSameCell) && !hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n\n _this._clearTableSelectionTimerIfNeed();\n\n if (_this._isSelectionStarted) {\n if (isTextSelect || _this._isListSelect(range)) {\n _this.removeClassAttrbuteFromAllCellsIfNeed();\n } else {\n _this.wwe.componentManager.getManager('table').resetLastCellNode();\n\n selectionEnd = selectionEnd || validSelectionEnd;\n range = _this.wwe.getEditor().getSelection();\n range.setStart(selectionEnd, 0); // IE wont fire copy/cut event if there is no selected range.\n // trick IE to fire the event\n\n if (browser_default.a.msie) {\n range.setEnd(selectionEnd, 1);\n } else {\n range.setEnd(selectionEnd, 0);\n range.collapse(false);\n }\n\n _this.wwe.getEditor().setSelection(range);\n }\n\n if (_this.onDragEnd) {\n _this.onDragEnd();\n }\n }\n\n finishSelection();\n };\n\n var onMousedown = function onMousedown(ev) {\n var MOUSE_RIGHT_BUTTON = 2;\n selectionStart = dom[\"a\" /* default */].closest(ev.data.target, '[contenteditable=true] td,th');\n var isSelectedCell = !!selectionStart && hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n selectionEnd = null;\n\n if (!isSelectedCell || isSelectedCell && ev.data.button !== MOUSE_RIGHT_BUTTON) {\n _this.removeClassAttrbuteFromAllCellsIfNeed();\n\n if (selectionStart) {\n _this.setTableSelectionTimerIfNeed(selectionStart);\n\n _this.eventManager.listen('mouseover.tableSelection', onMouseover);\n\n _this.eventManager.listen('mouseup.tableSelection', onMouseup);\n\n if (_this.onDragStart) {\n _this.onDragStart(selectionStart);\n }\n }\n } else if (ev.data.button === MOUSE_RIGHT_BUTTON) {\n finishSelection();\n }\n };\n\n this.eventManager.listen('mousedown.tableSelection', onMousedown);\n this.eventManager.listen('copyBefore.tableSelection', finishSelection);\n this.eventManager.listen('pasteBefore.tableSelection', finishSelection);\n }\n /**\n * Return whether single cell text selection or not\n * @param {Range} range Range object\n * @param {boolean} isSameCell Boolean value for same cell selection\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isTextSelect = function _isTextSelect(range, isSameCell) {\n return /TD|TH|TEXT/i.test(range.commonAncestorContainer.nodeName) && isSameCell;\n }\n /**\n * Return whether list selection or not\n * @param {Range} range Range object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isListSelect = function _isListSelect(range) {\n return /UL|OL|LI/i.test(range.commonAncestorContainer.nodeName);\n }\n /**\n * Set setTimeout and setInterval timer execution if table selecting situation\n * @param {HTMLElement} selectionStart Start element\n */\n ;\n\n _proto.setTableSelectionTimerIfNeed = function setTableSelectionTimerIfNeed(selectionStart) {\n var isTableSelecting = dom[\"a\" /* default */].parents(selectionStart, '[contenteditable=true] table').length;\n\n if (isTableSelecting) {\n this._isSelectionStarted = true;\n }\n }\n /**\n * Clear setTimeout and setInterval timer execution\n * @private\n */\n ;\n\n _proto._clearTableSelectionTimerIfNeed = function _clearTableSelectionTimerIfNeed() {\n clearTimeout(this._tableSelectionTimer); // For disable firefox's native table selection\n\n if (browser_default.a.firefox && this._removeSelectionTimer) {\n clearTimeout(this._removeSelectionTimer);\n this._removeSelectionTimer = null;\n }\n }\n /**\n * Re arrange selection when table does not include both start and end selection element\n * @param {HTMLElement} selectionStart Start element of selection\n * @param {HTMLElement} selectionEnd End element of selection\n * @returns {{startContainer: HTMLElement, endContainer: HTMLElement}}\n * @private\n */\n ;\n\n _proto._reArrangeSelectionIfneed = function _reArrangeSelectionIfneed(selectionStart, selectionEnd) {\n var isRangeStartInTable = dom[\"a\" /* default */].parents(selectionStart, '[contenteditable=true] table').length;\n var isRangeEndInTable = dom[\"a\" /* default */].parents(selectionEnd, '[contenteditable=true] table').length;\n var isStartRangeOut = isRangeEndInTable && !isRangeStartInTable;\n var isEndRangeOut = !isRangeEndInTable && isRangeStartInTable;\n var table;\n\n if (isStartRangeOut) {\n var _domUtils$parents = dom[\"a\" /* default */].parents(selectionEnd, '[contenteditable=true] table');\n\n table = _domUtils$parents[0];\n\n var _table$querySelectorA = table.querySelectorAll('th');\n\n selectionStart = _table$querySelectorA[0];\n } else if (isEndRangeOut) {\n var _domUtils$parents2 = dom[\"a\" /* default */].parents(selectionStart, '[contenteditable=true] table');\n\n table = _domUtils$parents2[0];\n var tds = table.querySelectorAll('td');\n selectionEnd = tds[tds.length - 1];\n }\n\n return {\n startContainer: selectionStart,\n endContainer: selectionEnd\n };\n }\n /**\n * Apply select direction to editor\n * @param {{startContainer: HTMLElement, endContainer: HTMLElement}} selectionInformation\n * Selection start and end element\n * @param {Range} range Range object\n * @returns {Range}\n * @private\n */\n ;\n\n _proto._applySelectionDirection = function _applySelectionDirection(selectionInformation, range) {\n var nodeOffsetOfParent = dom[\"a\" /* default */].getNodeOffsetOfParent;\n var selectionStart = selectionInformation.startContainer;\n var selectionEnd = selectionInformation.endContainer;\n var rowDirection = nodeOffsetOfParent(dom[\"a\" /* default */].closest(selectionStart, '[contenteditable=true] tr')) - nodeOffsetOfParent(dom[\"a\" /* default */].closest(selectionEnd, '[contenteditable=true] tr'));\n var cellDirection = nodeOffsetOfParent(selectionStart) - nodeOffsetOfParent(selectionEnd);\n var isSameRow = rowDirection === 0;\n var isRowIncreases = rowDirection < 0;\n var isColumnIncreases = cellDirection > 0;\n\n if (isSameRow) {\n if (isColumnIncreases) {\n range.setStart(selectionEnd, 0);\n range.setEnd(selectionStart, 1);\n } else {\n range.setStart(selectionStart, 0);\n range.setEnd(selectionEnd, 1);\n }\n } else if (isRowIncreases) {\n range.setStart(selectionStart, 0);\n range.setEnd(selectionEnd, 1);\n } else {\n range.setStart(selectionEnd, 0);\n range.setEnd(selectionStart, 1);\n }\n\n return range;\n }\n /**\n * Get selection coordinate by current selection\n * @param {HTMLElement} selectionStart start element\n * @param {HTMLElement} selectionEnd end element\n * @returns {{from: {row: number, cell: number}, to: {row: number, cell: number}}}\n */\n ;\n\n _proto.getSelectionRangeFromTable = function getSelectionRangeFromTable(selectionStart, selectionEnd) {\n var nodeOffsetOfParent = dom[\"a\" /* default */].getNodeOffsetOfParent;\n var startRowOffset = nodeOffsetOfParent(selectionStart.parentNode);\n var endRowOffset = nodeOffsetOfParent(selectionEnd.parentNode);\n var startCellOffset = nodeOffsetOfParent(selectionStart);\n var endCellOffset = nodeOffsetOfParent(selectionEnd);\n var startCellContainer = dom[\"a\" /* default */].getParentUntil(selectionStart, 'TABLE');\n var endCellContainer = dom[\"a\" /* default */].getParentUntil(selectionEnd, 'TABLE');\n var isReversedTheadAndTbodySelect = dom[\"a\" /* default */].getNodeName(startCellContainer) === 'TBODY' && dom[\"a\" /* default */].getNodeName(endCellContainer) === 'THEAD';\n var isTheadAndTbodySelect = startCellContainer !== endCellContainer;\n var isBothInTbody = !!dom[\"a\" /* default */].parents(selectionStart, 'tbody').length && !!dom[\"a\" /* default */].parents(selectionEnd, 'tbody').length;\n var start = {\n row: startRowOffset,\n cell: startCellOffset\n };\n var end = {\n row: endRowOffset,\n cell: endCellOffset\n };\n var from, to;\n\n if (isReversedTheadAndTbodySelect) {\n start.row += 1;\n } else if (isTheadAndTbodySelect) {\n end.row += 1;\n } else if (isBothInTbody) {\n start.row += 1;\n end.row += 1;\n }\n\n if (startRowOffset > endRowOffset || startRowOffset === endRowOffset && startCellOffset > endCellOffset) {\n from = end;\n to = start;\n } else {\n from = start;\n to = end;\n }\n\n return {\n from: from,\n to: to\n };\n }\n /**\n * Highlight selected table cells\n * @param {HTMLElement} selectionStart start element\n * @param {HTMLElement} selectionEnd end element\n */\n ;\n\n _proto.highlightTableCellsBy = function highlightTableCellsBy(selectionStart, selectionEnd) {\n var trs = dom[\"a\" /* default */].findAll(dom[\"a\" /* default */].parents(selectionStart, '[contenteditable=true] table')[0], 'tr');\n var selection = this.getSelectionRangeFromTable(selectionStart, selectionEnd);\n var rowFrom = selection.from.row;\n var cellFrom = selection.from.cell;\n var rowTo = selection.to.row;\n var cellTo = selection.to.cell;\n trs.forEach(function (row, rowIndex) {\n dom[\"a\" /* default */].findAll(row, 'td,th').forEach(function (cell, cellIndex) {\n var isFromRow = rowIndex === rowFrom;\n var isToRow = rowIndex === rowTo;\n\n if (isFromRow && cellIndex < cellFrom || isToRow && cellIndex > cellTo || rowIndex < rowFrom || rowIndex > rowTo) {\n removeClass_default()(cell, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n } else {\n addClass_default()(cell, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n }\n });\n });\n }\n /**\n * Remove '.te-cell-selected' class from all of table Cell\n */\n ;\n\n _proto.removeClassAttrbuteFromAllCellsIfNeed = function removeClassAttrbuteFromAllCellsIfNeed() {\n var cells = dom[\"a\" /* default */].findAll(this.wwe.getBody(), \"td.\" + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME + \",th.\" + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n cells.forEach(function (node) {\n removeClass_default()(node, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n\n if (!node.getAttribute('class')) {\n node.removeAttribute('class');\n }\n });\n }\n /**\n * gets selected cells\n * @returns {HTMLElement} selected cells\n */\n ;\n\n _proto.getSelectedCells = function getSelectedCells() {\n return this.wwe.getBody().querySelectorAll(\".\" + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME);\n }\n /**\n * Create selection by selected cells and collapse that selection to end\n */\n ;\n\n _proto.createRangeBySelectedCells = function createRangeBySelectedCells() {\n var sq = this.wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var selectedCells = this.getSelectedCells();\n var firstSelectedCell = selectedCells[0];\n var lastSelectedCell = selectedCells[selectedCells.length - 1];\n\n if (selectedCells.length && this.wwe.isInTable(range)) {\n range.setStart(firstSelectedCell, 0);\n range.setEnd(lastSelectedCell, lastSelectedCell.childNodes.length);\n sq.setSelection(range);\n }\n }\n /**\n * Style to selected cells.\n * @param {function} onStyle - function for styling\n * @param {Object} [options] - options to be passed into onStyle\n */\n ;\n\n _proto.styleToSelectedCells = function styleToSelectedCells(onStyle, options) {\n this.createRangeBySelectedCells();\n onStyle(this.wwe.getEditor(), options);\n }\n /**\n * Destroy.\n */\n ;\n\n _proto.destroy = function destroy() {\n this.eventManager.removeEventHandler('mousedown.tableSelection');\n this.eventManager.removeEventHandler('mouseover.tableSelection');\n this.eventManager.removeEventHandler('mouseup.tableSelection');\n this.eventManager.removeEventHandler('copyBefore.tableSelection');\n this.eventManager.removeEventHandler('pasteBefore.tableSelection');\n };\n\n return WwTableSelectionManager;\n}();\n\n/* harmony default export */ var wwTableSelectionManager = (wwTableSelectionManager_WwTableSelectionManager);\n// CONCATENATED MODULE: ./src/js/wwHrManager.js\n/**\n * @fileoverview Implements wysiwyg hr manager\n * @author NHN FE Development Lab \n */\n\n/**\n * Class WwHrManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwHrManager_WwHrManager = /*#__PURE__*/function () {\n function WwHrManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'hr';\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwHrManager.prototype;\n\n _proto._init = function _init() {\n this._initEvent();\n }\n /**\n * Initialize eventmanager event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygSetValueAfter', function () {\n _this._insertEmptyLineIfNeed();\n\n _this._changeHRForWysiwyg();\n });\n }\n /**\n * If
    is frist or last child of root, insert empty line before or after HR\n * @private\n */\n ;\n\n _proto._insertEmptyLineIfNeed = function _insertEmptyLineIfNeed() {\n var editorContentBody = this.wwe.getBody();\n var firstChild = editorContentBody.firstChild,\n lastChild = editorContentBody.lastChild;\n\n if (firstChild && firstChild.nodeName === 'HR') {\n editorContentBody.insertBefore(dom[\"a\" /* default */].createEmptyLine(), firstChild);\n } else if (lastChild && lastChild.nodeName === 'HR') {\n editorContentBody.appendChild(dom[\"a\" /* default */].createEmptyLine());\n }\n }\n /**\n *
    is set contenteditable to false with wrapping div like below.\n *

    \n * @private\n */\n ;\n\n _proto._changeHRForWysiwyg = function _changeHRForWysiwyg() {\n var editorContentBody = this.wwe.getBody();\n dom[\"a\" /* default */].findAll(editorContentBody, 'hr').forEach(function (hrNode) {\n var parentNode = hrNode.parentNode;\n parentNode.replaceChild(dom[\"a\" /* default */].createHorizontalRule(), hrNode);\n });\n };\n\n return WwHrManager;\n}();\n\n/* harmony default export */ var wwHrManager = (wwHrManager_WwHrManager);\n// CONCATENATED MODULE: ./src/js/wwPManager.js\n/**\n * @fileoverview Implements wysiwyg p tag manager\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Class WwPManager\n * @param {WysiwygEditor} wwe - wysiwygEditor instance\n * @ignore\n */\n\nvar wwPManager_WwPManager = /*#__PURE__*/function () {\n function WwPManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'p';\n\n this._initEvent();\n }\n /**\n * Initialize event\n * @private\n */\n\n\n var _proto = WwPManager.prototype;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygSetValueBefore', function (html) {\n return _this._splitPtagContentLines(html);\n });\n this.eventManager.listen('wysiwygSetValueAfter', function () {\n _this._ensurePtagContentWrappedWithDiv();\n\n _this._unwrapPtags();\n });\n }\n /**\n * Split multiple line content of p tags\n * @param {string} html html text\n * @returns {string} result\n * @private\n */\n ;\n\n _proto._splitPtagContentLines = function _splitPtagContentLines(html) {\n if (html) {\n var wrapper = dom[\"a\" /* default */].createElementWith(\"
    \" + html + \"
    \");\n dom[\"a\" /* default */].findAll(wrapper, 'p').forEach(function (para) {\n var attributes = para.attributes,\n nextElementSibling = para.nextElementSibling;\n var content = para.innerHTML;\n var lines = content.split(/
    /gi);\n var lastIndex = lines.length - 1;\n var splitedContent = '';\n splitedContent = lines.map(function (line, index) {\n if (index > 0 && index < lastIndex) {\n line = line ? line : '
    ';\n }\n\n if (line) {\n var block = document.createElement('div');\n Object.keys(attributes).forEach(function (key) {\n var _attributes$key = attributes[key],\n name = _attributes$key.name,\n value = _attributes$key.value;\n block.setAttribute(name, value);\n });\n block.innerHTML = line;\n return block.outerHTML;\n }\n\n return '';\n }); // For paragraph, we add empty line\n\n if (nextElementSibling && nextElementSibling.nodeName === 'P' || para.getAttribute('contenteditable') === 'false') {\n splitedContent.push('

    ');\n }\n\n dom[\"a\" /* default */].replaceWith(para, splitedContent.join(''));\n });\n html = wrapper.innerHTML;\n }\n\n return html;\n }\n /**\n * Wrap new line inside P tag to DIV, and additional empty line added within too\n * @private\n */\n ;\n\n _proto._ensurePtagContentWrappedWithDiv = function _ensurePtagContentWrappedWithDiv() {\n var _this2 = this;\n\n dom[\"a\" /* default */].findAll(this.wwe.getBody(), 'p').forEach(function (node) {\n if (!node.querySelectorAll('div').length) {\n dom[\"a\" /* default */].wrapInner(node, 'div');\n }\n\n if (_this2._findNextParagraph(node, 'p')) {\n dom[\"a\" /* default */].append(node, '

    ');\n }\n });\n }\n /**\n * Unwrap P tag\n * @private\n */\n ;\n\n _proto._unwrapPtags = function _unwrapPtags() {\n dom[\"a\" /* default */].findAll(this.wwe.getBody(), 'div').forEach(function (node) {\n var parent = node.parentNode;\n\n if (parent.tagName === 'P') {\n dom[\"a\" /* default */].unwrap(parent);\n }\n });\n };\n\n _proto._findNextParagraph = function _findNextParagraph(node, selector) {\n var nextElementSibling = node.nextElementSibling;\n\n if (selector) {\n return nextElementSibling && matches_default()(nextElementSibling, selector) ? nextElementSibling : null;\n }\n\n return nextElementSibling;\n };\n\n return WwPManager;\n}();\n\n/* harmony default export */ var wwPManager = (wwPManager_WwPManager);\n// CONCATENATED MODULE: ./src/js/wwHeadingManager.js\n/**\n * @fileoverview Implements wysiwyg heading manager\n * @author NHN FE Development Lab \n */\n\n\nvar wwHeadingManager_FIND_HEADING_RX = /h[\\d]/i;\nvar wwHeadingManager_isIE10 = browser_default.a.msie && browser_default.a.version === 10;\n/**\n * Class WwHeadingManager\n * @param {WysiwygEditor} wwe - WysiwygEditor instance\n * @ignore\n */\n\nvar wwHeadingManager_WwHeadingManager = /*#__PURE__*/function () {\n function WwHeadingManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'heading';\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwHeadingManager.prototype;\n\n _proto._init = function _init() {\n this._initEvent();\n\n this._initKeyHandler();\n };\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('wysiwygSetValueAfter', function () {\n _this._wrapDefaultBlockToHeadingInner();\n });\n }\n /**\n * Initialize key event handler\n * @private\n */\n ;\n\n _proto._initKeyHandler = function _initKeyHandler() {\n var _this2 = this;\n\n this.wwe.addKeyEventHandler('ENTER', function (ev, range) {\n if (_this2.wwe.hasFormatWithRx(wwHeadingManager_FIND_HEADING_RX)) {\n _this2._onEnter(ev, range);\n\n return false;\n }\n\n return true;\n });\n this.wwe.addKeyEventHandler('BACK_SPACE', function (ev, range) {\n if (_this2.wwe.hasFormatWithRx(wwHeadingManager_FIND_HEADING_RX)) {\n _this2._addBrToEmptyBlock(range);\n\n _this2._removePrevTopNodeIfNeed(ev, range);\n\n return false;\n }\n\n return true;\n });\n }\n /**\n * Wrap default block to heading inner contents\n * @private\n */\n ;\n\n _proto._wrapDefaultBlockToHeadingInner = function _wrapDefaultBlockToHeadingInner() {\n var headingTags = dom[\"a\" /* default */].findAll(this.wwe.getBody(), 'h1, h2, h3, h4, h5, h6');\n headingTags.forEach(function (headingTag) {\n var exceptedForWrapping = !dom[\"a\" /* default */].children(headingTag, 'div, p').length;\n\n if (exceptedForWrapping) {\n dom[\"a\" /* default */].wrapInner(headingTag, 'div');\n }\n });\n }\n /**\n * Unwrap heading\n * @private\n */\n ;\n\n _proto._unwrapHeading = function _unwrapHeading() {\n this.wwe.unwrapBlockTag(function (node) {\n return wwHeadingManager_FIND_HEADING_RX.test(node);\n });\n }\n /**\n * Enter key handler\n * @param {Event} event event object\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._onEnter = function _onEnter(event, range) {\n var _this3 = this;\n\n if (range.startOffset > 0) {\n // I hate this but there's no way\n this.wwe.defer(function (wwe) {\n _this3._unwrapHeading();\n\n wwe.getEditor().removeLastUndoStack();\n });\n } else {\n event.preventDefault();\n\n this._insertEmptyBlockToPrevious(range);\n }\n }\n /**\n * Insert empty block to previous of passed range\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._insertEmptyBlockToPrevious = function _insertEmptyBlockToPrevious(range) {\n this.wwe.getEditor().saveUndoState(range);\n var element = dom[\"a\" /* default */].createElementWith('

    ');\n dom[\"a\" /* default */].insertBefore(element, dom[\"a\" /* default */].getParentUntil(range.startContainer, this.wwe.getBody()));\n }\n /**\n * Remove previous top node if need\n * @param {Event} event event object\n * @param {Range} range range\n * @returns {Boolean} whether needed or not\n * @private\n */\n ;\n\n _proto._removePrevTopNodeIfNeed = function _removePrevTopNodeIfNeed(event, range) {\n var isHandled = false;\n\n if (range.collapsed && range.startOffset === 0) {\n var startContainer = range.startContainer;\n var prevTopNode = dom[\"a\" /* default */].getTopPrevNodeUnder(startContainer, this.wwe.getBody());\n var isPrevTopNodeEmpty = prevTopNode && prevTopNode.textContent.length === 0;\n var sq = this.wwe.getEditor();\n\n if (startContainer.textContent.length === 0) {\n isHandled = this._removeHedingAndChangeSelection(event, range, prevTopNode);\n } else if (isPrevTopNodeEmpty) {\n event.preventDefault();\n sq.saveUndoState(range);\n dom[\"a\" /* default */].remove(prevTopNode);\n isHandled = true;\n }\n }\n\n return isHandled;\n };\n\n _proto._getHeadingElement = function _getHeadingElement(element) {\n var isHeading = wwHeadingManager_FIND_HEADING_RX.test(dom[\"a\" /* default */].getNodeName(element));\n return isHeading ? element : dom[\"a\" /* default */].parents(element, 'h1,h2,h3,h4,h5,h6')[0];\n };\n\n _proto._addBrToEmptyBlock = function _addBrToEmptyBlock(range) {\n var collapsed = range.collapsed,\n startOffset = range.startOffset,\n startContainer = range.startContainer;\n\n if (collapsed && startOffset === 1) {\n var headingElement = this._getHeadingElement(startContainer);\n\n var brs = dom[\"a\" /* default */].children(headingElement.firstChild, 'br');\n\n if (!wwHeadingManager_isIE10 && !brs.length) {\n var br = document.createElement('br');\n startContainer.parentNode.appendChild(br);\n }\n }\n }\n /**\n * Remove heading and change selection\n * @param {object} event Event object\n * @param {Range} range Range object\n * @param {HTMLElement} prevTopNode Previous top node\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._removeHedingAndChangeSelection = function _removeHedingAndChangeSelection(event, range, prevTopNode) {\n var startContainer = range.startContainer;\n var sq = this.wwe.getEditor();\n var body = this.wwe.getBody();\n\n var headingElement = this._getHeadingElement(startContainer);\n\n var targetNode = prevTopNode;\n var offset = 1;\n\n if (!event.defaultPrevented) {\n event.preventDefault();\n sq.saveUndoState(range);\n }\n\n dom[\"a\" /* default */].remove(headingElement);\n\n if (!prevTopNode) {\n var _domUtils$children = dom[\"a\" /* default */].children(body, 'div');\n\n targetNode = _domUtils$children[0];\n offset = 0;\n }\n\n range.setStart(targetNode, offset);\n range.collapse(true);\n sq.setSelection(range);\n return true;\n };\n\n return WwHeadingManager;\n}();\n\n/* harmony default export */ var wwHeadingManager = (wwHeadingManager_WwHeadingManager);\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isTruthy.js\nvar isTruthy = __webpack_require__(42);\nvar isTruthy_default = /*#__PURE__*/__webpack_require__.n(isTruthy);\n\n// CONCATENATED MODULE: ./src/js/wwCodeBlockManager.js\n/**\n * @fileoverview Implements wysiwyg code block manager\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar wwCodeBlockManager_isIE10 = browser_default.a.msie && browser_default.a.version === 10;\nvar wwCodeBlockManager_brString = wwCodeBlockManager_isIE10 ? '' : '
    ';\nvar tagEntities = {\n '&': '&',\n '<': '<',\n '>': '>'\n};\nvar FIND_ZWS_RX = /\\u200B/g;\nvar CODEBLOCK_ATTR_NAME = 'data-te-codeblock';\n/**\n * Class WwCodeBlockManager\n * @param {WysiwygEditor} wwe - wysiwygEditor instance\n * @ignore\n */\n\nvar wwCodeBlockManager_WwCodeBlockManager = /*#__PURE__*/function () {\n function WwCodeBlockManager(wwe) {\n this.wwe = wwe;\n this.eventManager = wwe.eventManager;\n /**\n * Name property\n * @type {string}\n */\n\n this.name = 'codeblock';\n\n this._init();\n }\n /**\n * Initialize\n * @private\n */\n\n\n var _proto = WwCodeBlockManager.prototype;\n\n _proto._init = function _init() {\n this._initKeyHandler();\n\n this._initEvent();\n }\n /**\n * Initialize key event handler\n * @private\n */\n ;\n\n _proto._initKeyHandler = function _initKeyHandler() {\n var _this = this;\n\n this._keyEventHandlers = {\n BACK_SPACE: this._onBackspaceKeyEventHandler.bind(this),\n ENTER: function ENTER(ev, range) {\n if (!_this.wwe.isInTable(range) && _this.wwe.getEditor().hasFormat('CODE')) {\n _this.wwe.defer(function () {\n var _this$wwe$getRange = _this.wwe.getRange(),\n startContainer = _this$wwe$getRange.startContainer;\n\n var codeNode = _this._getCodeNode(startContainer);\n\n if (codeNode && !dom[\"a\" /* default */].getTextLength(codeNode)) {\n codeNode.parentNode.removeChild(codeNode);\n }\n });\n }\n }\n };\n forEachOwnProperties_default()(this._keyEventHandlers, function (handler, key) {\n return _this.wwe.addKeyEventHandler(key, handler);\n });\n };\n\n _proto._getCodeNode = function _getCodeNode(node) {\n var result;\n\n if (node.nodeName === 'CODE') {\n result = node;\n } else if (node.parentNode.nodeName === 'CODE') {\n result = node.parentNode;\n }\n\n return result;\n }\n /**\n * Initialize eventmanager event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this.eventManager.listen('wysiwygSetValueAfter.codeblock', function () {\n _this2.modifyCodeBlockForWysiwyg();\n });\n this.eventManager.listen('wysiwygProcessHTMLText.codeblock', function (html) {\n return _this2._changePreToPreCode(html);\n });\n }\n /**\n * Prepare nodes for pasting to code block\n * @param {Array.} nodes Node array\n * @returns {DocumentFragment}\n */\n ;\n\n _proto.prepareToPasteOnCodeblock = function prepareToPasteOnCodeblock(nodes) {\n var frag = this.wwe.getEditor().getDocument().createDocumentFragment();\n var text = this.convertNodesToText(nodes);\n text = text.replace(/\\n$/, '');\n frag.appendChild(document.createTextNode(text));\n return frag;\n }\n /**\n * Convert nodes to text for pasting to code block\n * @param {Array.} nodes Node array\n * @returns {string} coverted string\n */\n ;\n\n _proto.convertNodesToText = function convertNodesToText(nodes) {\n var str = '';\n var node = nodes.shift();\n\n while (isTruthy_default()(node)) {\n var _node = node,\n childNodes = _node.childNodes;\n\n if (childNodes && dom[\"a\" /* default */].isBlockNode(node)) {\n str += this.convertNodesToText(toArray_default()(node.childNodes));\n } else if (node.nodeName === 'BR') {\n str += '\\n';\n } else {\n str += node.textContent;\n }\n\n node = nodes.shift();\n }\n\n return str;\n }\n /**\n * Copy content with code block style from code block selection\n * @param {HTMLElement} element Copied element\n * @param {Range} range Range object\n * @returns {HTMLElement}\n * @private\n */\n ;\n\n _proto._copyCodeblockTypeFromRangeCodeblock = function _copyCodeblockTypeFromRangeCodeblock(element, range) {\n var blockNode = dom[\"a\" /* default */].getParentUntil(range.commonAncestorContainer, this.wwe.getBody());\n\n if (dom[\"a\" /* default */].getNodeName(blockNode) === 'PRE') {\n var attrs = blockNode.attributes;\n forEachOwnProperties_default()(attrs, function (attr) {\n element.setAttribute(attr.name, attr.value);\n });\n }\n\n return element;\n }\n /**\n * Change pre tag to pre and code\n * @param {string} html HTML string\n * @returns {string}\n * @private\n */\n ;\n\n _proto._changePreToPreCode = function _changePreToPreCode(html) {\n return html.replace(/((.|\\n)*?)<\\/pre>/g, function (match, codeAttr, code) {\n return \"
    \" + code + \"
    \";\n });\n }\n /**\n * Modify Code Block for Wysiwyg\n * @param {HTMLElement} node root node to find pre\n */\n ;\n\n _proto.modifyCodeBlockForWysiwyg = function modifyCodeBlockForWysiwyg(node) {\n if (!node) {\n node = this.wwe.getBody();\n }\n\n dom[\"a\" /* default */].findAll(node, 'pre').forEach(function (pre) {\n var codeTag = pre.querySelector('code');\n var lang, numberOfBackticks;\n\n if (codeTag) {\n lang = codeTag.getAttribute('data-language');\n numberOfBackticks = codeTag.getAttribute('data-backticks');\n } // if this pre can have lines\n\n\n if (pre.children.length > 1) {\n toArray_default()(pre.children).forEach(function (childNode) {\n if ((childNode.nodeName === 'DIV' || childNode.nodeName === 'P') && !childNode.querySelectorAll('br').length) {\n childNode.innerHTML += childNode.innerHTML + \"\\n\";\n }\n });\n }\n\n var brs = pre.querySelectorAll('br');\n\n if (brs.length) {\n dom[\"a\" /* default */].replaceWith(brs, '\\n');\n }\n\n var resultText = pre.textContent.replace(/\\s+$/, '');\n dom[\"a\" /* default */].empty(pre);\n pre.innerHTML = resultText ? sanitizeHtmlCode(resultText) : wwCodeBlockManager_brString;\n\n if (lang) {\n pre.setAttribute('data-language', lang);\n addClass_default()(pre, \"lang-\" + lang);\n }\n\n if (numberOfBackticks) {\n pre.setAttribute('data-backticks', numberOfBackticks);\n }\n\n pre.setAttribute(CODEBLOCK_ATTR_NAME, '');\n });\n }\n /**\n * Remove codeblock of first line when press backspace in first line\n * @param {Event} ev Event object\n * @param {Range} range Range object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._onBackspaceKeyEventHandler = function _onBackspaceKeyEventHandler(ev, range) {\n var isNeedNext = true;\n var sq = this.wwe.getEditor();\n var container = range.commonAncestorContainer;\n\n if (this._isCodeBlockFirstLine(range) && !this._isFrontCodeblock(range)) {\n this._removeCodeblockFirstLine(container);\n\n range.collapse(true);\n isNeedNext = false;\n } else if (range.collapsed && this._isEmptyLine(container) && this._isBetweenSameCodeblocks(container)) {\n var previousSibling = container.previousSibling,\n nextSibling = container.nextSibling;\n var prevTextLength = previousSibling.textContent.length;\n sq.saveUndoState(range);\n container.parentNode.removeChild(container);\n\n this._mergeCodeblocks(previousSibling, nextSibling);\n\n range.setStart(previousSibling.childNodes[0], prevTextLength);\n range.collapse(true);\n isNeedNext = false;\n }\n\n if (!isNeedNext) {\n sq.setSelection(range);\n ev.preventDefault();\n }\n\n return isNeedNext;\n }\n /**\n * Check node is empty line\n * @param {Node} node node\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isEmptyLine = function _isEmptyLine(node) {\n var nodeName = node.nodeName,\n childNodes = node.childNodes;\n var isEmpty = wwCodeBlockManager_isIE10 ? node.textContent === '' : childNodes.length === 1 && childNodes[0].nodeName === 'BR';\n return nodeName === 'DIV' && isEmpty;\n }\n /**\n * Check whether node is between same codeblocks\n * @param {Node} node Node\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isBetweenSameCodeblocks = function _isBetweenSameCodeblocks(node) {\n var previousSibling = node.previousSibling,\n nextSibling = node.nextSibling;\n return dom[\"a\" /* default */].getNodeName(previousSibling) === 'PRE' && dom[\"a\" /* default */].getNodeName(nextSibling) === 'PRE' && previousSibling.getAttribute('data-language') === nextSibling.getAttribute('data-language');\n };\n\n _proto._mergeCodeblocks = function _mergeCodeblocks(frontCodeblock, backCodeblock) {\n var postText = backCodeblock.textContent;\n frontCodeblock.childNodes[0].textContent += \"\\n\" + postText;\n backCodeblock.parentNode.removeChild(backCodeblock);\n }\n /**\n * Check whether range is first line of code block\n * @param {Range} range Range object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isCodeBlockFirstLine = function _isCodeBlockFirstLine(range) {\n return this.isInCodeBlock(range) && range.collapsed && range.startOffset === 0;\n }\n /**\n * Check whether front block of range is code block\n * @param {Range} range Range object\n * @returns {boolean}\n * @private\n */\n ;\n\n _proto._isFrontCodeblock = function _isFrontCodeblock(range) {\n var block = dom[\"a\" /* default */].getParentUntil(range.startContainer, this.wwe.getEditor().getRoot());\n var previousSibling = block.previousSibling;\n return previousSibling && previousSibling.nodeName === 'PRE';\n }\n /**\n * Remove codeblock first line of codeblock\n * @param {Node} node Pre Node\n * @private\n */\n ;\n\n _proto._removeCodeblockFirstLine = function _removeCodeblockFirstLine(node) {\n var sq = this.wwe.getEditor();\n var preNode = node.nodeName === 'PRE' ? node : node.parentNode;\n var codeContent = preNode.textContent.replace(FIND_ZWS_RX, '');\n sq.modifyBlocks(function () {\n var newFrag = sq.getDocument().createDocumentFragment();\n var strArray = codeContent.split('\\n');\n var firstDiv = document.createElement('div');\n var firstLine = strArray.shift();\n firstDiv.innerHTML = \"\" + sanitizeHtmlCode(firstLine) + wwCodeBlockManager_brString;\n newFrag.appendChild(firstDiv);\n\n if (strArray.length) {\n var newPreNode = preNode.cloneNode();\n newPreNode.textContent = strArray.join('\\n');\n newFrag.appendChild(newPreNode);\n }\n\n return newFrag;\n });\n }\n /**\n * Return boolean value of whether current range is in the code block\n * @param {Range} range Range object\n * @returns {boolean}\n */\n ;\n\n _proto.isInCodeBlock = function isInCodeBlock(range) {\n var target;\n\n if (range.collapsed) {\n target = range.startContainer;\n } else {\n target = range.commonAncestorContainer;\n }\n\n return !!dom[\"a\" /* default */].closest(target, 'pre');\n }\n /**\n * Destroy\n */\n ;\n\n _proto.destroy = function destroy() {\n var _this3 = this;\n\n this.eventManager.removeEventHandler('wysiwygSetValueAfter.codeblock');\n this.eventManager.removeEventHandler('wysiwygProcessHTMLText.codeblock');\n forEachOwnProperties_default()(this._keyEventHandlers, function (handler, key) {\n return _this3.wwe.removeKeyEventHandler(key, handler);\n });\n };\n\n return WwCodeBlockManager;\n}();\n/**\n * Sanitize HTML code\n * @param {string} code code string\n * @returns {string}\n * @ignore\n */\n\n\nfunction sanitizeHtmlCode(code) {\n return code ? code.replace(/[<>&]/g, function (tag) {\n return tagEntities[tag] || tag;\n }) : '';\n}\n\n/* harmony default export */ var wwCodeBlockManager = (wwCodeBlockManager_WwCodeBlockManager);\n// EXTERNAL MODULE: /Users/nhn/Desktop/project/tui.editor/libs/squire/build/squire.js\nvar build_squire = __webpack_require__(55);\nvar squire_default = /*#__PURE__*/__webpack_require__.n(build_squire);\n\n// CONCATENATED MODULE: ./src/js/squireExt.js\nfunction squireExt_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements squire extension\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar FIND_BLOCK_TAGNAME_RX = /\\b(H[\\d]|LI|P|BLOCKQUOTE|TD)\\b/;\nvar isIElt11 = /Trident\\/[456]\\./.test(navigator.userAgent);\n/**\n * Class SquireExt\n * @params {Squire} ...args\n */\n\nvar squireExt_SquireExt = /*#__PURE__*/function (_Squire) {\n squireExt_inheritsLoose(SquireExt, _Squire);\n\n function SquireExt() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Squire.call.apply(_Squire, [this].concat(args)) || this;\n\n _this._decorateHandlerToCancelable('copy');\n\n _this._decorateHandlerToCancelable(isIElt11 ? 'beforecut' : 'cut');\n\n _this._decorateHandlerToCancelable(isIElt11 ? 'beforepaste' : 'paste');\n\n _this.getBody = function () {\n _this.body = _this.body || _this.getRoot();\n return _this.body;\n };\n\n return _this;\n }\n /**\n * Decorate squire handler to cancelable cuz sometimes, we dont need squire handler process\n * event.preventDefault() will cancel squire and browser default behavior\n * event.squirePrevented = true will cancel squire but allow browser default behavior\n * @param {string} eventName event name\n * @private\n */\n\n\n var _proto = SquireExt.prototype;\n\n _proto._decorateHandlerToCancelable = function _decorateHandlerToCancelable(eventName) {\n var handlers = this._events[eventName];\n\n if (handlers.length > 1) {\n throw new Error(\"too many\" + eventName + \"handlers in squire\");\n }\n\n var handler = handlers[0].bind(this);\n\n handlers[0] = function (event) {\n if (!event.defaultPrevented && !event.squirePrevented) {\n handler(event);\n }\n };\n };\n\n _proto.changeBlockFormat = function changeBlockFormat(srcCondition, targetTagName) {\n var _this2 = this;\n\n this.modifyBlocks(function (frag) {\n var current, newFrag, newBlock, nextBlock, tagName, lastNodeOfNextBlock, appendChidToNextBlock; // HR is non-block element, so frag don't have it\n // make a default block\n\n if (frag.childNodes.length) {\n current = frag.childNodes.item(0);\n } else {\n current = _this2.createDefaultBlock();\n frag.appendChild(current);\n }\n\n if (srcCondition) {\n // find last depth\n while (current.firstChild) {\n current = current.firstChild;\n }\n\n appendChidToNextBlock = function appendChidToNextBlock(node) {\n nextBlock.appendChild(node);\n }; // find tag\n\n\n while (current !== frag) {\n var _current = current;\n tagName = _current.tagName;\n\n if (isFunction_default()(srcCondition) ? srcCondition(tagName) : tagName === srcCondition) {\n nextBlock = current.childNodes.item(0); // there is no next blocktag\n // eslint-disable-next-line max-depth\n\n if (!dom[\"a\" /* default */].isElemNode(nextBlock) || current.childNodes.length > 1) {\n nextBlock = _this2.createDefaultBlock();\n toArray_default()(current.childNodes).forEach(appendChidToNextBlock);\n lastNodeOfNextBlock = nextBlock.lastChild; // remove unneccesary br\n // eslint-disable-next-line max-depth\n\n if (lastNodeOfNextBlock && dom[\"a\" /* default */].getNodeName(lastNodeOfNextBlock) === 'BR') {\n nextBlock.removeChild(lastNodeOfNextBlock);\n }\n } // eslint-disable-next-line max-depth\n\n\n if (targetTagName) {\n newBlock = _this2.createElement(targetTagName, [nextBlock]);\n } else {\n newBlock = nextBlock;\n }\n\n newFrag = _this2.getDocument().createDocumentFragment();\n newFrag.appendChild(newBlock);\n frag = newFrag;\n break;\n }\n\n current = current.parentNode;\n }\n } // if source condition node is not founded, we wrap current div node with node named targetTagName\n\n\n if ((!newFrag || !srcCondition) && targetTagName && dom[\"a\" /* default */].getNodeName(frag.childNodes[0]) === 'DIV') {\n frag = _this2.createElement(targetTagName, [frag.childNodes[0]]);\n }\n\n return frag;\n });\n };\n\n _proto.changeBlockFormatTo = function changeBlockFormatTo(targetTagName) {\n this.changeBlockFormat(function (tagName) {\n return FIND_BLOCK_TAGNAME_RX.test(tagName);\n }, targetTagName);\n };\n\n _proto.getCaretPosition = function getCaretPosition() {\n return this.getCursorPosition();\n };\n\n _proto.replaceSelection = function replaceSelection(content, selection) {\n if (selection) {\n this.setSelection(selection);\n }\n\n this._ignoreChange = true;\n this.insertHTML(content);\n };\n\n _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) {\n var selection = this.getSelection().cloneRange();\n\n this._replaceRelativeOffsetOfSelection(content, offset, overwriteLength, selection);\n };\n\n _proto._replaceRelativeOffsetOfSelection = function _replaceRelativeOffsetOfSelection(content, offset, overwriteLength, selection) {\n var startSelectionInfo, endSelectionInfo, finalOffset;\n var endOffsetNode = selection.endContainer;\n var endTextOffset = selection.endOffset;\n\n if (dom[\"a\" /* default */].getNodeName(endOffsetNode) !== 'TEXT') {\n endOffsetNode = this._getClosestTextNode(endOffsetNode, endTextOffset);\n\n if (endOffsetNode) {\n if (dom[\"a\" /* default */].isTextNode(endOffsetNode)) {\n endTextOffset = endOffsetNode.nodeValue.length;\n } else {\n endTextOffset = endOffsetNode.textContent.length;\n }\n }\n }\n\n if (endOffsetNode) {\n startSelectionInfo = this.getSelectionInfoByOffset(endOffsetNode, endTextOffset + offset);\n selection.setStart(startSelectionInfo.element, startSelectionInfo.offset);\n finalOffset = endTextOffset + (offset + overwriteLength);\n endSelectionInfo = this.getSelectionInfoByOffset(endOffsetNode, finalOffset);\n selection.setEnd(endSelectionInfo.element, endSelectionInfo.offset);\n this.replaceSelection(content, selection);\n } else {\n this.replaceSelection(content);\n }\n };\n\n _proto._getClosestTextNode = function _getClosestTextNode(node, offset) {\n var foundNode = dom[\"a\" /* default */].getChildNodeByOffset(node, offset - 1);\n\n if (dom[\"a\" /* default */].getNodeName(foundNode) !== 'TEXT') {\n foundNode = foundNode.previousSibling;\n }\n\n return foundNode;\n };\n\n _proto.getSelectionInfoByOffset = function getSelectionInfoByOffset(anchorElement, offset) {\n var traceElement, traceElementLength, traceOffset, stepLength;\n var direction = offset >= 0 ? 'next' : 'previous';\n var offsetAbs = Math.abs(offset);\n var latestAvailableElement = traceElement;\n\n if (direction === 'next') {\n traceElement = anchorElement;\n } else {\n traceElement = anchorElement.previousSibling;\n }\n\n traceOffset = offsetAbs;\n stepLength = 0;\n\n while (traceElement) {\n if (dom[\"a\" /* default */].isTextNode(traceElement)) {\n traceElementLength = traceElement.nodeValue.length;\n } else {\n traceElementLength = traceElement.textContent.length;\n }\n\n stepLength += traceElementLength;\n\n if (offsetAbs <= stepLength) {\n break;\n }\n\n traceOffset -= traceElementLength;\n\n if (dom[\"a\" /* default */].getTextLength(traceElement) > 0) {\n latestAvailableElement = traceElement;\n }\n\n traceElement = traceElement[direction + \"Sibling\"];\n }\n\n if (!traceElement) {\n traceElement = latestAvailableElement;\n traceOffset = dom[\"a\" /* default */].getTextLength(traceElement);\n }\n\n if (direction === 'previous') {\n traceOffset = dom[\"a\" /* default */].getTextLength(traceElement) - traceOffset;\n }\n\n return {\n element: traceElement,\n offset: traceOffset\n };\n };\n\n _proto.getSelectionPosition = function getSelectionPosition(selection, style, offset) {\n var marker = this.createElement('INPUT');\n var range = selection.cloneRange();\n var endSelectionInfo = this.getSelectionInfoByOffset(selection.endContainer, selection.endOffset + (offset || 0));\n range.setStart(range.startContainer, range.startOffset);\n range.setEnd(endSelectionInfo.element, endSelectionInfo.offset); // to prevent squire input event fire\n\n this._ignoreChange = true;\n this.insertElement(marker, range);\n var pos = dom[\"a\" /* default */].getOffset(marker);\n\n if (style !== 'over') {\n pos.top += marker.offsetHeight;\n }\n\n marker.parentNode.removeChild(marker);\n selection.setStart(selection.endContainer, selection.endOffset);\n selection.collapse(true);\n this.setSelection(selection);\n return pos;\n };\n\n _proto.removeLastUndoStack = function removeLastUndoStack() {\n if (this._undoStack.length) {\n this._undoStackLength -= 1;\n this._undoIndex -= 1;\n\n this._undoStack.pop();\n\n this._isInUndoState = false;\n }\n };\n\n _proto.replaceParent = function replaceParent(node, from, to) {\n var target = dom[\"a\" /* default */].closest(node, from);\n\n if (target) {\n dom[\"a\" /* default */].wrapInner(target, to);\n dom[\"a\" /* default */].unwrap(target);\n }\n };\n\n _proto.preserveLastLine = function preserveLastLine() {\n var blocks = this.getBody().children;\n var lastBlock = blocks[blocks.length - 1];\n\n if (lastBlock && dom[\"a\" /* default */].getNodeName(lastBlock) !== 'DIV') {\n this._ignoreChange = true;\n dom[\"a\" /* default */].insertAfter(this.createDefaultBlock(), lastBlock);\n }\n };\n\n _proto.scrollTop = function scrollTop(top) {\n if (!isUndefined_default()(top)) {\n this.getBody().scrollTop = top;\n }\n\n return this.getBody().scrollTop;\n };\n\n _proto.isIgnoreChange = function isIgnoreChange() {\n return this._ignoreChange;\n };\n\n _proto.focus = function focus() {\n squire_default.a.prototype.focus.call(this);\n };\n\n _proto.blockCommandShortcuts = function blockCommandShortcuts() {\n var _this3 = this;\n\n var meta = utils_common[\"b\" /* isMac */] ? 'meta' : 'ctrl';\n var keys = ['b', 'i', 'u', 'shift-7', 'shift-5', 'shift-6', 'shift-8', 'shift-9', '[', ']', 'd'];\n keys.forEach(function (key) {\n _this3.setKeyHandler(meta + \"-\" + key, function (editor, keyboardEvent) {\n keyboardEvent.preventDefault();\n });\n });\n };\n\n return SquireExt;\n}(squire_default.a);\n\n/* harmony default export */ var squireExt = (squireExt_SquireExt);\n// CONCATENATED MODULE: ./src/js/wwTextObject.js\n/**\n * @fileoverview Implements WwTextObject\n * @author NHN FE Development Lab \n */\n\n\nvar isIE11 = browser_default.a.msie && browser_default.a.version === 11;\nvar isWindowChrome = navigator.appVersion.indexOf('Win') !== -1 && browser_default.a.chrome;\nvar isWindows10 = /Windows (NT )?10/g.test(navigator.appVersion);\nvar isNeedOffsetFix = isIE11 || isWindowChrome && !isWindows10;\n/**\n * Class WwTextObject\n * @param {WysiwygEditor} wwe - wysiwygEditor\n * @param {Range} range - Range object\n */\n\nvar wwTextObject_WwTextObject = /*#__PURE__*/function () {\n function WwTextObject(wwe, range) {\n this._wwe = wwe; // msie11 and window chrome can't make start offset of range api correctly when compositing korean.\n // so we need fix this when compositing korean.(and maybe other languages that needs composition.)\n\n if (isNeedOffsetFix) {\n this.isComposition = false;\n\n this._initCompositionEvent();\n }\n\n this.setRange(range || this._wwe.getRange());\n }\n /**\n * Initialize composition event\n * @private\n */\n\n\n var _proto = WwTextObject.prototype;\n\n _proto._initCompositionEvent = function _initCompositionEvent() {\n var _this = this;\n\n this._wwe.getEditor().addEventListener('compositionstart', function () {\n _this.isComposition = true;\n });\n\n this._wwe.getEditor().addEventListener('compositionend', function () {\n _this.isComposition = false;\n });\n }\n /**\n * Set _range object to given range object\n * @param {Range} range Range object\n */\n ;\n\n _proto.setRange = function setRange(range) {\n if (this._range) {\n this._range.detach();\n }\n\n this._range = range;\n }\n /**\n * Expand start offset by one\n */\n ;\n\n _proto.expandStartOffset = function expandStartOffset() {\n var range = this._range;\n\n if (dom[\"a\" /* default */].isTextNode(range.startContainer) && range.startOffset > 0) {\n range.setStart(range.startContainer, range.startOffset - 1);\n }\n }\n /**\n * Expand end offset by one\n */\n ;\n\n _proto.expandEndOffset = function expandEndOffset() {\n var range = this._range;\n\n if (dom[\"a\" /* default */].isTextNode(range.endContainer) && range.endOffset < range.endContainer.nodeValue.length) {\n range.setEnd(range.endContainer, range.endOffset + 1);\n }\n }\n /**\n * setEnd range on start\n * @param {Range} range Range object\n */\n ;\n\n _proto.setEndBeforeRange = function setEndBeforeRange(range) {\n var offset = range.startOffset;\n\n if (this.isComposition) {\n offset += 1;\n }\n\n this._range.setEnd(range.startContainer, offset);\n }\n /**\n * Get text content\n * @returns {string}\n */\n ;\n\n _proto.getTextContent = function getTextContent() {\n return this._range.cloneContents().textContent;\n }\n /**\n * Replace current selection content to given text\n * @param {string} content Text content\n */\n ;\n\n _proto.replaceContent = function replaceContent(content) {\n this._wwe.getEditor().setSelection(this._range);\n\n this._wwe.getEditor().insertHTML(content); // When range is in table, 'insertHTML' makes div in table.\n // So after 'insertHTML', div in table should be unwrap.\n // 'wysiwygRangeChangeAfter' event let wwTableManager call '_unwrapBlockInTable'\n\n\n if (this._wwe.isInTable(this._range)) {\n this._wwe.eventManager.emit('wysiwygRangeChangeAfter', this._wwe);\n }\n\n this._range = this._wwe.getRange();\n }\n /**\n * Delete current selection content\n */\n ;\n\n _proto.deleteContent = function deleteContent() {\n this._wwe.getEditor().setSelection(this._range);\n\n this._wwe.getEditor().insertHTML('');\n\n this._range = this._wwe.getRange();\n }\n /**\n * Peek previous element's content\n * @param {number} offset Offset to peek\n * @returns {string}\n */\n ;\n\n _proto.peekStartBeforeOffset = function peekStartBeforeOffset(offset) {\n var range = this._range.cloneRange();\n\n range.setStart(range.startContainer, Math.max(range.startOffset - offset, 0));\n range.setEnd(this._range.startContainer, this._range.startOffset);\n return range.cloneContents().textContent;\n };\n\n return WwTextObject;\n}();\n\n/* harmony default export */ var wwTextObject = (wwTextObject_WwTextObject);\n// CONCATENATED MODULE: ./src/js/ui/blockOverlay.js\n/**\n * @fileoverview Implements UI block overlay\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Class BlockOverlay\n * @param {Object} options - options\n * @param {EventManager} options.eventManager - event manager instance\n * @param {HTMLElement} options.container - container element\n * @param {string} options.attachedSelector - selector string to find attached element\n * @ignore\n */\n\nvar blockOverlay_BlockOverlay = /*#__PURE__*/function () {\n function BlockOverlay(_ref) {\n var eventManager = _ref.eventManager,\n container = _ref.container,\n attachedSelector = _ref.attachedSelector;\n this._eventManager = eventManager;\n this._attachedSelector = \"[contenteditable=true] \" + attachedSelector;\n this._container = container;\n this._attachedElement = null;\n /**\n * is activated.\n * if this blockOverlay is active, It always be visible unconditionally.\n * @type {boolean}\n * @private\n */\n\n this.active = false;\n\n this._createElement();\n\n this._initEvent();\n }\n\n var _proto = BlockOverlay.prototype;\n\n _proto._createElement = function _createElement() {\n this.el = dom[\"a\" /* default */].createElementWith('
    ');\n css_default()(this.el, {\n position: 'absolute',\n display: 'none',\n zIndex: 1\n });\n dom[\"a\" /* default */].append(this._container, this.el);\n };\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this._eventManager.listen('change', this._onChange.bind(this));\n\n this._eventManager.listen('mouseover', this._onMouseOver.bind(this));\n\n this._eventManager.listen('focus', function () {\n _this.setVisibility(false);\n });\n\n this._eventManager.listen('mousedown', function () {\n _this.setVisibility(false);\n });\n };\n\n _proto._onChange = function _onChange() {\n if (this._attachedElement && dom[\"a\" /* default */].isContain(document.body, this._attachedElement)) {\n this.syncLayout();\n } else {\n this.setVisibility(false);\n }\n };\n\n _proto._onMouseOver = function _onMouseOver(ev) {\n var originalEvent = ev.data;\n var eventTarget = originalEvent.target;\n var attachedElement = dom[\"a\" /* default */].closest(eventTarget, this._attachedSelector);\n\n if (attachedElement) {\n this._attachedElement = attachedElement;\n this.setVisibility(true);\n } else if (dom[\"a\" /* default */].closest(eventTarget, this.el)) {\n this.setVisibility(true);\n } else if (!this.active) {\n this.setVisibility(false);\n }\n }\n /**\n * update blockOverlay position & size update to attached element\n * you may want to override this to adjust position & size\n * @protected\n */\n ;\n\n _proto.syncLayout = function syncLayout() {\n var offset = dom[\"a\" /* default */].getOffset(this._attachedElement);\n var outerWidth = dom[\"a\" /* default */].getOuterWidth(this._attachedElement);\n var outerHeight = dom[\"a\" /* default */].getOuterHeight(this._attachedElement);\n dom[\"a\" /* default */].setOffset(this.el, offset);\n css_default()(this.el, {\n width: outerWidth + \"px\"\n });\n css_default()(this.el, {\n height: outerHeight + \"px\"\n });\n }\n /**\n * attached element\n * @protected\n * @returns {HTMLElement} - attached element\n */\n ;\n\n _proto.getAttachedElement = function getAttachedElement() {\n return this._attachedElement || null;\n }\n /**\n * visibility\n * @protected\n * @returns {boolean} visibility\n */\n ;\n\n _proto.getVisibility = function getVisibility() {\n return this.el.style.display === 'block';\n }\n /**\n * visibility\n * @param {boolean} visibility - is visible\n * @protected\n */\n ;\n\n _proto.setVisibility = function setVisibility(visibility) {\n if (visibility && this._attachedElement) {\n if (!this.getVisibility()) {\n css_default()(this.el, {\n display: 'block'\n });\n this.syncLayout();\n this.onShow();\n }\n } else if (!visibility) {\n if (this.getVisibility()) {\n css_default()(this.el, {\n display: 'none'\n });\n this.onHide();\n }\n }\n }\n /**\n * called on show. you may want to override to get the event\n * @protected\n * @abstract\n */\n ;\n\n _proto.onShow = function onShow() {}\n /**\n * called on hide. you may want to override to get the event\n * @protected\n */\n ;\n\n _proto.onHide = function onHide() {\n this.active = false;\n this._attachedElement = null;\n };\n\n return BlockOverlay;\n}();\n\n/* harmony default export */ var blockOverlay = (blockOverlay_BlockOverlay);\n// CONCATENATED MODULE: ./src/js/ui/codeBlockGadget.js\nfunction codeBlockGadget_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements UI code block gadget\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar GADGET_RIGHT = 26;\nvar GADGET_WIDTH = 250;\nvar GADGET_HEIGHT = 30;\n/**\n * Class CodeBlockGadget\n * @param {Object} options - options\n * @param {EventManager} options.eventManager - event manager instance\n * @param {HTMLElement} options.container - container element\n * @param {WysiwygEditor} options.wysiwygEditor - wysiwyg editor instance\n * @ignore\n */\n\nvar codeBlockGadget_CodeBlockGadget = /*#__PURE__*/function (_BlockOverlay) {\n codeBlockGadget_inheritsLoose(CodeBlockGadget, _BlockOverlay);\n\n function CodeBlockGadget(_ref) {\n var _this;\n\n var eventManager = _ref.eventManager,\n container = _ref.container,\n wysiwygEditor = _ref.wysiwygEditor;\n _this = _BlockOverlay.call(this, {\n eventManager: eventManager,\n container: container,\n attachedSelector: 'pre'\n }) || this;\n _this._wysiwygEditor = wysiwygEditor;\n _this._popupCodeBlockLanguages = null;\n\n _this._initDOM();\n\n _this._initDOMEvent();\n\n return _this;\n }\n\n var _proto = CodeBlockGadget.prototype;\n\n _proto._initDOM = function _initDOM() {\n var _this2 = this;\n\n addClass_default()(this.el, 'code-block-header');\n this._languageLabel = dom[\"a\" /* default */].createElementWith('text');\n dom[\"a\" /* default */].append(this.el, this._languageLabel);\n this._buttonOpenModalEditor = dom[\"a\" /* default */].createElementWith(\"\");\n dom[\"a\" /* default */].append(this.el, this._buttonOpenModalEditor);\n\n this._eventManager.emit('removeEditor', function () {\n off_default()(_this2._buttonOpenModalEditor, 'click');\n _this2._buttonOpenModalEditor = null;\n });\n };\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this3 = this;\n\n on_default()(this._buttonOpenModalEditor, 'click', function () {\n return _this3._openPopupCodeBlockEditor();\n });\n };\n\n _proto._openPopupCodeBlockEditor = function _openPopupCodeBlockEditor() {\n this._eventManager.emit('openPopupCodeBlockEditor', this.getAttachedElement());\n };\n\n _proto._updateLanguage = function _updateLanguage() {\n var attachedElement = this.getAttachedElement();\n var language = attachedElement ? attachedElement.getAttribute('data-language') : null;\n this._languageLabel.textContent = language || 'text';\n }\n /**\n * update gadget position\n * @protected\n * @override\n */\n ;\n\n _proto.syncLayout = function syncLayout() {\n var attachedElement = this.getAttachedElement();\n\n var _domUtils$getOffset = dom[\"a\" /* default */].getOffset(attachedElement, '.te-editor'),\n top = _domUtils$getOffset.top;\n\n css_default()(this.el, {\n top: top + \"px\",\n right: GADGET_RIGHT + \"px\",\n width: GADGET_WIDTH + \"px\",\n height: GADGET_HEIGHT + \"px\"\n });\n }\n /**\n * on show\n * @protected\n * @override\n */\n ;\n\n _proto.onShow = function onShow() {\n var _this4 = this;\n\n _BlockOverlay.prototype.onShow.call(this);\n\n this._onAttachedElementChange = function () {\n return _this4._updateLanguage();\n };\n\n this._eventManager.listen('changeLanguage', this._onAttachedElementChange);\n\n this._updateLanguage();\n }\n /**\n * on hide\n * @protected\n * @override\n */\n ;\n\n _proto.onHide = function onHide() {\n this._eventManager.removeEventHandler('changeLanguage', this._onAttachedElementChange);\n\n _BlockOverlay.prototype.onHide.call(this);\n };\n\n return CodeBlockGadget;\n}(blockOverlay);\n\n/* harmony default export */ var codeBlockGadget = (codeBlockGadget_CodeBlockGadget);\n// CONCATENATED MODULE: ./src/js/wysiwygEditor.js\n/**\n * @fileoverview Implments wysiwygEditor\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar wysiwygEditor_keyMapper = keyMapper.getSharedInstance();\nvar FIND_EMPTY_LINE = /<([a-z]+|h\\d)>(
    |
    )<\\/\\1>/gi;\nvar FIND_UNNECESSARY_BR = /(?:
    |
    )<\\/(.+?)>/gi;\nvar wysiwygEditor_FIND_BLOCK_TAGNAME_RX = /\\b(H[\\d]|LI|P|BLOCKQUOTE|TD|PRE)\\b/;\nvar FIND_OPENING_SPAN_WITH_SPACE = /]*)>[\\u0020]/g;\nvar FIND_CLOSING_SPAN_WITH_SPACE = /[\\u0020]<\\/span>/g;\nvar FIND_TABLE_AND_HEADING_RX = /^(TABLE|H[1-6])$/;\nvar EDITOR_CONTENT_CSS_CLASSNAME = 'tui-editor-contents';\nvar PLACEHOLDER_CSS_CLASSNAME = 'tui-editor-contents-placeholder';\nvar canObserveMutations = typeof MutationObserver !== 'undefined';\n/**\n * Class WysiwygEditor\n * @param {HTMLElement} el - element to insert editor\n * @param {EventManager} eventManager - EventManager instance\n */\n\nvar wysiwygEditor_WysiwygEditor = /*#__PURE__*/function () {\n function WysiwygEditor(el, eventManager, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n this.componentManager = new componentManager(this);\n this.eventManager = eventManager;\n this.editorContainerEl = el;\n this._height = 0;\n this._silentChange = false;\n this._keyEventHandlers = {};\n this._managers = {};\n this._linkAttribute = options.linkAttribute || {};\n this._sanitizer = options.sanitizer;\n\n this._initEvent();\n\n this._initDefaultKeyEventHandler();\n\n this.debouncedPostProcessForChange = debounce_default()(function () {\n return _this.postProcessForChange();\n }, 0);\n }\n /**\n * init\n */\n\n\n var _proto = WysiwygEditor.prototype;\n\n _proto.init = function init() {\n var editorBody = document.createElement('div');\n this.editorContainerEl.appendChild(editorBody);\n this.editor = new squireExt(editorBody, {\n blockTag: 'DIV',\n leafNodeNames: {\n HR: false\n },\n allowedBlocks: this._sanitizer ? [] : ['details', 'summary']\n });\n this.editor.blockCommandShortcuts();\n this._clipboardManager = new wwClipboardManager(this);\n\n this._initSquireEvent();\n\n this._clipboardManager.init();\n\n addClass_default()(this.getBody(), EDITOR_CONTENT_CSS_CLASSNAME);\n css_default()(this.editorContainerEl, 'position', 'relative');\n\n this._togglePlaceholder();\n\n this.codeBlockGadget = new codeBlockGadget({\n eventManager: this.eventManager,\n container: this.editorContainerEl,\n wysiwygEditor: this\n });\n }\n /**\n * Initialize EventManager event handler\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this.eventManager.listen('wysiwygKeyEvent', function (ev) {\n return _this2._runKeyEventHandlers(ev.data, ev.keyMap);\n });\n this.eventManager.listen('wysiwygRangeChangeAfter', function () {\n return _this2.scrollIntoCursor();\n });\n this.eventManager.listen('contentChangedFromWysiwyg', function () {\n _this2._togglePlaceholder();\n });\n }\n /**\n * Add key event handler\n * @param {string|Array.} keyMap - keyMap string or array of string\n * @param {function} handler handler\n */\n ;\n\n _proto.addKeyEventHandler = function addKeyEventHandler(keyMap, handler) {\n var _this3 = this;\n\n if (!handler) {\n handler = keyMap;\n keyMap = 'DEFAULT';\n }\n\n if (!isArray_default()(keyMap)) {\n keyMap = [keyMap];\n }\n\n keyMap.forEach(function (key) {\n if (!_this3._keyEventHandlers[key]) {\n _this3._keyEventHandlers[key] = [];\n }\n\n _this3._keyEventHandlers[key].push(handler);\n });\n }\n /**\n * Remove key event handler.\n * @param {string} keyMap keyMap string\n * @param {function} handler handler\n */\n ;\n\n _proto.removeKeyEventHandler = function removeKeyEventHandler(keyMap, handler) {\n if (!handler) {\n handler = keyMap;\n keyMap = 'DEFAULT';\n }\n\n var handlers = this._keyEventHandlers[keyMap];\n\n if (handlers) {\n this._keyEventHandlers[keyMap] = handlers.filter(function (_handler) {\n return _handler !== handler;\n });\n }\n }\n /**\n * Run key event handler\n * @param {Event} event event object\n * @param {string} keyMap keyMapString\n * @private\n */\n ;\n\n _proto._runKeyEventHandlers = function _runKeyEventHandlers(event, keyMap) {\n var range = this.getRange();\n var handlers, isNeedNext;\n handlers = this._keyEventHandlers.DEFAULT;\n\n if (handlers) {\n forEachArray_default()(handlers, function (handler) {\n isNeedNext = handler(event, range, keyMap);\n return isNeedNext;\n });\n }\n\n handlers = this._keyEventHandlers[keyMap];\n\n if (handlers && isNeedNext !== false) {\n forEachArray_default()(handlers, function (handler) {\n return handler(event, range, keyMap);\n });\n }\n }\n /**\n * Initialize squire event\n * @private\n */\n ;\n\n _proto._initSquireEvent = function _initSquireEvent() {\n var _this4 = this;\n\n var squire = this.getEditor();\n var isNeedFirePostProcessForRangeChange = false;\n squire.addEventListener('copy', function (clipboardEvent) {\n _this4.eventManager.emit('copy', {\n source: 'wysiwyg',\n data: clipboardEvent\n });\n\n debounce_default()(function () {\n if (!_this4.isEditorValid()) {\n return;\n }\n\n _this4.eventManager.emit('copyAfter', {\n source: 'wysiwyg',\n data: clipboardEvent\n });\n })();\n });\n squire.addEventListener(browser_default.a.msie ? 'beforecut' : 'cut', function (clipboardEvent) {\n _this4.eventManager.emit('cut', {\n source: 'wysiwyg',\n data: clipboardEvent\n });\n\n debounce_default()(function () {\n if (!_this4.isEditorValid()) {\n return;\n }\n\n _this4.eventManager.emit('cutAfter', {\n source: 'wysiwyg',\n data: clipboardEvent\n });\n })();\n });\n squire.addEventListener(browser_default.a.msie ? 'beforepaste' : 'paste', function (clipboardEvent) {\n _this4.eventManager.emit('paste', {\n source: 'wysiwyg',\n data: clipboardEvent\n });\n });\n squire.addEventListener('dragover', function (ev) {\n ev.preventDefault();\n return false;\n });\n squire.addEventListener('drop', function (ev) {\n ev.preventDefault();\n\n _this4.eventManager.emit('drop', {\n source: 'wysiwyg',\n data: ev\n });\n\n return false;\n }); // change event will fired after range has been updated\n\n squire.addEventListener('input', debounce_default()(function () {\n if (!_this4.isEditorValid()) {\n return;\n }\n\n if (!_this4._silentChange) {\n var eventObj = {\n source: 'wysiwyg'\n };\n\n _this4.eventManager.emit('changeFromWysiwyg', eventObj);\n\n _this4.eventManager.emit('change', eventObj);\n\n _this4.eventManager.emit('contentChangedFromWysiwyg', _this4);\n } else {\n _this4._silentChange = false;\n }\n\n _this4.getEditor().preserveLastLine();\n }, 0));\n squire.addEventListener('keydown', function (keyboardEvent) {\n var range = _this4.getEditor().getSelection();\n\n if (!range.collapsed) {\n isNeedFirePostProcessForRangeChange = true;\n }\n\n _this4.eventManager.emit('keydown', {\n source: 'wysiwyg',\n data: keyboardEvent\n });\n\n _this4._onKeyDown(keyboardEvent);\n });\n\n if (browser_default.a.firefox) {\n squire.addEventListener('keypress', function (keyboardEvent) {\n var keyCode = keyboardEvent.keyCode;\n\n if (keyCode === 13 || keyCode === 9) {\n var range = _this4.getEditor().getSelection();\n\n if (!range.collapsed) {\n isNeedFirePostProcessForRangeChange = true;\n }\n\n _this4.eventManager.emit('keydown', {\n source: 'wysiwyg',\n data: keyboardEvent\n });\n\n _this4._onKeyDown(keyboardEvent);\n }\n }); // firefox produces shattered text nodes\n\n squire.addEventListener('keyup', function () {\n var range = _this4.getRange();\n\n if (dom[\"a\" /* default */].isTextNode(range.commonAncestorContainer) && dom[\"a\" /* default */].isTextNode(range.commonAncestorContainer.previousSibling)) {\n var prevLen = range.commonAncestorContainer.previousSibling.length;\n var curEl = range.commonAncestorContainer;\n range.commonAncestorContainer.previousSibling.appendData(range.commonAncestorContainer.data);\n range.setStart(range.commonAncestorContainer.previousSibling, prevLen + range.startOffset);\n range.collapse(true);\n dom[\"a\" /* default */].remove(curEl);\n\n _this4.setRange(range);\n\n range.detach();\n }\n });\n }\n\n squire.addEventListener('keyup', function (keyboardEvent) {\n if (isNeedFirePostProcessForRangeChange) {\n _this4.debouncedPostProcessForChange();\n\n isNeedFirePostProcessForRangeChange = false;\n }\n\n _this4.eventManager.emit('keyup', {\n source: 'wysiwyg',\n data: keyboardEvent\n });\n });\n on_default()(this.editorContainerEl, 'scroll', function (ev) {\n _this4.eventManager.emit('scroll', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('click', function (ev) {\n _this4.eventManager.emit('click', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('mousedown', function (ev) {\n _this4.eventManager.emit('mousedown', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('mouseover', function (ev) {\n _this4.eventManager.emit('mouseover', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('mouseout', function (ev) {\n _this4.eventManager.emit('mouseout', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('mouseup', function (ev) {\n _this4.eventManager.emit('mouseup', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('contextmenu', function (ev) {\n _this4.eventManager.emit('contextmenu', {\n source: 'wysiwyg',\n data: ev\n });\n });\n squire.addEventListener('focus', function () {\n _this4.eventManager.emit('focus', {\n source: 'wysiwyg'\n });\n });\n squire.addEventListener('blur', function () {\n _this4.fixIMERange();\n\n _this4.eventManager.emit('blur', {\n source: 'wysiwyg'\n });\n }); // Toolbar status active/inactive\n\n squire.addEventListener('pathChange', function (data) {\n var state = {\n strong: /(^B>|>B$|>B>|^B$|STRONG)/.test(data.path),\n emph: /(>I|>EM|^I$|^EM$)/.test(data.path),\n strike: /(^S>|>S$|>S>|^S$|DEL)/.test(data.path),\n code: /CODE/.test(data.path),\n codeBlock: /PRE/.test(data.path),\n blockQuote: /BLOCKQUOTE/.test(data.path),\n table: /TABLE/.test(data.path),\n heading: /H[1-6]/.test(data.path),\n list: /UL>LI(?!.task-list-item)/.test(data.path),\n orderedList: /OL>LI(?!.task-list-item)/.test(data.path),\n taskList: /[UL|OL]>LI.task-list-item/.test(data.path),\n source: 'wysiwyg'\n };\n\n _this4.eventManager.emit('stateChange', state);\n });\n squire.addEventListener('willPaste', function (ev) {\n // ev has 'fragment' when event occurs from 'insertHTML' of squire\n // ev has 'text' when event occurs from 'insertPlainText' of squire\n if (ev.fragment) {\n _this4.eventManager.emit('willPaste', {\n source: 'wysiwyg',\n data: ev\n });\n }\n });\n };\n\n _proto._togglePlaceholder = function _togglePlaceholder() {\n var squire = this.getEditor();\n squire.modifyDocument(function () {\n var root = squire.getRoot();\n\n if (root.textContent || root.childNodes.length > 1) {\n root.classList.remove(PLACEHOLDER_CSS_CLASSNAME);\n } else {\n root.classList.add(PLACEHOLDER_CSS_CLASSNAME);\n }\n });\n }\n /**\n * Handler of keydown event\n * @param {object} keyboardEvent Event object\n * @private\n */\n ;\n\n _proto._onKeyDown = function _onKeyDown(keyboardEvent) {\n var keyMap = wysiwygEditor_keyMapper.convert(keyboardEvent); // to avoid duplicate event firing in firefox\n\n if (keyboardEvent.keyCode) {\n this.eventManager.emit('keyMap', {\n source: 'wysiwyg',\n keyMap: keyMap,\n data: keyboardEvent\n });\n\n if (!keyboardEvent.defaultPrevented) {\n this.eventManager.emit('wysiwygKeyEvent', {\n keyMap: keyMap,\n data: keyboardEvent\n });\n }\n }\n }\n /**\n * Initialize default event handler\n * @private\n */\n ;\n\n _proto._initDefaultKeyEventHandler = function _initDefaultKeyEventHandler() {\n var _this5 = this;\n\n this.addKeyEventHandler('ENTER', function (ev, range) {\n if (_this5._isInOrphanText(range)) {\n // We need this cuz input text right after table make orphan text in webkit\n _this5.defer(function () {\n _this5._wrapDefaultBlockToOrphanTexts();\n\n _this5.breakToNewDefaultBlock(range, 'before');\n });\n }\n\n _this5.defer(function () {\n return _this5.scrollIntoCursor();\n });\n });\n this.addKeyEventHandler('TAB', function (ev) {\n var sq = _this5.getEditor();\n\n var range = sq.getSelection();\n\n var isAbleToInput4Spaces = range.collapsed && _this5._isCursorNotInRestrictedAreaOfTabAction(sq);\n\n var isTextSelection = !range.collapsed && dom[\"a\" /* default */].isTextNode(range.commonAncestorContainer);\n ev.preventDefault();\n\n if (isAbleToInput4Spaces || isTextSelection) {\n sq.insertPlainText(\"\\xA0\\xA0\\xA0\\xA0\");\n return false;\n }\n\n return true;\n });\n this.addKeyEventHandler('BACK_SPACE', function (ev, range, keymap) {\n return _this5._handleRemoveKeyEvent(ev, range, keymap);\n });\n this.addKeyEventHandler('DELETE', function (ev, range, keymap) {\n return _this5._handleRemoveKeyEvent(ev, range, keymap);\n });\n };\n\n _proto._handleRemoveKeyEvent = function _handleRemoveKeyEvent(ev, range, keyMap) {\n var sq = this.getEditor();\n\n if (this._isStartHeadingOrTableAndContainsThem(range)) {\n var keyStr = keyMap === 'BACK_SPACE' ? 'backspace' : 'delete';\n sq.removeAllFormatting();\n\n sq._keyHandlers[keyStr](sq, ev, sq.getSelection());\n\n sq.removeLastUndoStack();\n return false;\n }\n\n return true;\n };\n\n _proto._isStartHeadingOrTableAndContainsThem = function _isStartHeadingOrTableAndContainsThem(range) {\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n commonAncestorContainer = range.commonAncestorContainer,\n collapsed = range.collapsed;\n var root = this.getEditor().getRoot();\n var result = false;\n\n if (!collapsed && commonAncestorContainer === root) {\n if (startContainer === root) {\n result = FIND_TABLE_AND_HEADING_RX.test(dom[\"a\" /* default */].getChildNodeByOffset(startContainer, startOffset).nodeName);\n } else if (startOffset === 0) {\n result = FIND_TABLE_AND_HEADING_RX.test(dom[\"a\" /* default */].getParentUntil(startContainer, root).nodeName);\n }\n }\n\n return result;\n };\n\n _proto._wrapDefaultBlockToOrphanTexts = function _wrapDefaultBlockToOrphanTexts() {\n var textNodes = toArray_default()(this.getBody().childNodes).filter(function (node) {\n return dom[\"a\" /* default */].isTextNode(node);\n });\n dom[\"a\" /* default */].getAllTextNode(this.getBody());\n textNodes.forEach(function (node) {\n if (node.nextSibling && node.nextSibling.tagName === 'BR') {\n dom[\"a\" /* default */].remove(node.nextSibling);\n }\n\n dom[\"a\" /* default */].wrap(node, document.createElement('div'));\n });\n }\n /**\n * check if range is orphan text\n * @param {Range} range range\n * @returns {boolean} result\n * @private\n */\n ;\n\n _proto._isInOrphanText = function _isInOrphanText(range) {\n return range.startContainer.nodeType === Node.TEXT_NODE && range.startContainer.parentNode === this.getBody();\n }\n /**\n * Wrap default block to passed range\n * @param {Range} range range\n * @private\n */\n ;\n\n _proto._wrapDefaultBlockTo = function _wrapDefaultBlockTo(range) {\n this.saveSelection(range);\n\n this._joinSplitedTextNodes();\n\n this.restoreSavedSelection();\n range = this.getRange();\n var textElem = range.startContainer;\n var cursorOffset = range.startOffset; // after code below, range range is arranged by body\n\n var block = this.getEditor().createDefaultBlock([range.startContainer]); // range for insert block\n\n var insertTargetNode = dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset);\n\n if (insertTargetNode) {\n range.setStartBefore(insertTargetNode);\n } else {\n // only child in container\n range.selectNodeContents(range.startContainer);\n }\n\n range.collapse(true);\n range.insertNode(block); // revert range to original node\n\n range.setStart(textElem, cursorOffset);\n range.collapse(true);\n this.setRange(range);\n }\n /**\n * Join spliated text nodes\n * @private\n */\n ;\n\n _proto._joinSplitedTextNodes = function _joinSplitedTextNodes() {\n var prevNode, lastGroup;\n var nodesToRemove = [];\n var textNodes = toArray_default()(this.getBody().childNodes).filter(function (node) {\n return dom[\"a\" /* default */].isTextNode(node);\n });\n textNodes.forEach(function (node) {\n if (prevNode === node.previousSibling) {\n lastGroup.nodeValue += node.nodeValue;\n nodesToRemove.push(node);\n } else {\n lastGroup = node;\n }\n\n prevNode = node;\n });\n dom[\"a\" /* default */].remove(nodesToRemove);\n }\n /**\n * Save current selection before modification\n * @param {Range} range Range object\n */\n ;\n\n _proto.saveSelection = function saveSelection(range) {\n if (!range) {\n range = this.getRange();\n }\n\n this.getEditor()._saveRangeToBookmark(range);\n }\n /**\n * set selection by start/end container/offset\n * @param {HTMLNode} startContainer - start container\n * @param {Number} startOffset - start offset\n * @param {HTMLNode} endContainer - end container\n * @param {Number} endOffset - end offset\n * @returns {Range} - range instance\n */\n ;\n\n _proto.setSelectionByContainerAndOffset = function setSelectionByContainerAndOffset(startContainer, startOffset, endContainer, endOffset) {\n var sq = this.getEditor();\n var range = sq.getSelection();\n range.setStart(startContainer, startOffset);\n range.setEnd(endContainer, endOffset);\n sq.setSelection(range);\n return range;\n }\n /**\n * Restore saved selection\n */\n ;\n\n _proto.restoreSavedSelection = function restoreSavedSelection() {\n this.setRange(this.getEditor()._getRangeAndRemoveBookmark());\n }\n /**\n * Reset wysiwyg editor\n */\n ;\n\n _proto.reset = function reset() {\n this.setValue('');\n }\n /**\n * Change current range block format to passed tag\n * @param {string} targetTagName Target element tag name\n */\n ;\n\n _proto.changeBlockFormatTo = function changeBlockFormatTo(targetTagName) {\n this.getEditor().changeBlockFormatTo(targetTagName);\n this.eventManager.emit('wysiwygRangeChangeAfter', this);\n }\n /**\n * Make empty block to current selection\n */\n ;\n\n _proto.makeEmptyBlockCurrentSelection = function makeEmptyBlockCurrentSelection() {\n var _this6 = this;\n\n this.getEditor().modifyBlocks(function (frag) {\n if (!frag.textContent) {\n frag = _this6.getEditor().createDefaultBlock();\n }\n\n return frag;\n });\n }\n /**\n * Focus to editor\n */\n ;\n\n _proto.focus = function focus() {\n var scrollTop = this.scrollTop();\n this.editor.focus(); // In webkit, if contenteditable element focus method have been invoked when another input element has focus,\n // contenteditable scroll to top automatically so we need scroll it back\n\n if (scrollTop !== this.scrollTop()) {\n this.scrollTop(scrollTop);\n }\n }\n /**\n * Remove focus of editor\n */\n ;\n\n _proto.blur = function blur() {\n this.editor.blur();\n }\n /**\n * Remove wysiwyg editor\n */\n ;\n\n _proto.remove = function remove() {\n off_default()(this.editorContainerEl, 'scroll');\n this.getEditor().destroy();\n this.editor = null;\n this.body = null;\n this.eventManager = null;\n }\n /**\n * Set editor height\n * @param {number|string} height pixel of height or \"auto\"\n */\n ;\n\n _proto.setHeight = function setHeight(height) {\n this._height = height;\n css_default()(this.editorContainerEl, {\n overflow: 'auto',\n height: '100%'\n });\n css_default()(this.editorContainerEl.parentNode, {\n height: isNumber_default()(height) ? height + \"px\" : height\n });\n var containerStyles = this.editorContainerEl.style;\n var bodyStyles = this.getBody().style;\n var paddingHeight = parseInt(containerStyles.paddingTop, 10) - parseInt(containerStyles.paddingBottom, 10);\n var marginHeight = parseInt(bodyStyles.marginTop, 10) - parseInt(bodyStyles.marginBottom, 10);\n css_default()(this.getBody(), {\n minHeight: height - marginHeight - paddingHeight + \"px\"\n });\n }\n /**\n * Set min height\n * @param {number} minHeight - min height in px\n */\n ;\n\n _proto.setMinHeight = function setMinHeight(minHeight) {\n var editorBody = this.getBody();\n css_default()(editorBody, 'minHeight', minHeight + \"px\");\n }\n /**\n * Set the placeholder to wysiwyg editor\n * @param {string} placeholder - placeholder to set\n */\n ;\n\n _proto.setPlaceholder = function setPlaceholder(placeholder) {\n if (placeholder) {\n this.getEditor().getRoot().setAttribute('data-placeholder', placeholder);\n }\n }\n /**\n * Get attribute of link for wysiwyg\n * @returns {object} attribute - attribute of anchor tag\n */\n ;\n\n _proto.getLinkAttribute = function getLinkAttribute() {\n return this._linkAttribute;\n }\n /**\n * Set value to wysiwyg editor\n * @param {string} html - HTML text\n * @param {boolean} [cursorToEnd=true] - move cursor to contents end\n */\n ;\n\n _proto.setValue = function setValue(html, cursorToEnd) {\n if (cursorToEnd === void 0) {\n cursorToEnd = true;\n }\n\n html = this.eventManager.emitReduce('wysiwygSetValueBefore', html);\n this.editor.setHTML(html);\n this.eventManager.emit('wysiwygSetValueAfter', this);\n this.eventManager.emit('contentChangedFromWysiwyg', this);\n\n if (cursorToEnd) {\n this.moveCursorToEnd();\n }\n\n this.getEditor().preserveLastLine();\n this.getEditor().removeLastUndoStack();\n this.getEditor().saveUndoState();\n }\n /**\n * Insert given text to cursor position or selected area\n * @param {string} text - text string to insert\n */\n ;\n\n _proto.insertText = function insertText(text) {\n this.editor.insertPlainText(text);\n }\n /**\n * Get value of wysiwyg editor\n * @returns {string} html\n */\n ;\n\n _proto.getValue = function getValue() {\n this._prepareGetHTML();\n\n var html = this.editor.getHTML(); // empty line replace to br\n\n html = html.replace(FIND_EMPTY_LINE, function (match, tag) {\n var result; // we maintain empty list\n\n if (tag === 'li') {\n result = match; // we maintain empty table\n } else if (tag === 'td' || tag === 'th') {\n result = \"<\" + tag + \">\";\n } else {\n result = '
    ';\n }\n\n return result;\n }); // replace a space of the first and end in sapn tag to  .\n\n html = html.replace(FIND_OPENING_SPAN_WITH_SPACE, ' ');\n html = html.replace(FIND_CLOSING_SPAN_WITH_SPACE, ' '); // remove unnecessary brs\n\n html = html.replace(FIND_UNNECESSARY_BR, ''); // remove contenteditable block, in this case div\n\n html = html.replace(/]*>/g, '');\n html = html.replace(/<\\/div>/g, '
    ');\n html = this.eventManager.emitReduce('wysiwygProcessHTMLText', html);\n return html;\n }\n /**\n * Prepare before get html\n * @private\n */\n ;\n\n _proto._prepareGetHTML = function _prepareGetHTML() {\n var _this7 = this;\n\n this.getEditor().modifyDocument(function () {\n _this7._joinSplitedTextNodes();\n\n _this7.eventManager.emit('wysiwygGetValueBefore', _this7);\n });\n }\n /**\n * postProcessForChange\n */\n ;\n\n _proto.postProcessForChange = function postProcessForChange() {\n var _this8 = this;\n\n if (!this.isEditorValid()) {\n return;\n }\n\n this.getEditor().modifyDocument(function () {\n _this8.eventManager.emit('wysiwygRangeChangeAfter', _this8);\n });\n }\n /**\n * Ready to silent change\n */\n ;\n\n _proto.readySilentChange = function readySilentChange() {\n if (canObserveMutations && !this.getEditor().isIgnoreChange()) {\n this._silentChange = true;\n }\n }\n /**\n * Get squire\n * @returns {SquireExt} squire\n */\n ;\n\n _proto.getEditor = function getEditor() {\n return this.editor;\n }\n /**\n * Replace text of passed range\n * @param {string} content Content for change current selection\n * @param {Range} range range\n */\n ;\n\n _proto.replaceSelection = function replaceSelection(content, range) {\n this.getEditor().replaceSelection(content, range);\n }\n /**\n * Replace content by relative offset\n * @param {string} content Content for change current selection\n * @param {number} offset Offset of current range\n * @param {number} overwriteLength Length to overwrite content\n */\n ;\n\n _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) {\n this.getEditor().replaceRelativeOffset(content, offset, overwriteLength);\n }\n /**\n * Add widget to selection\n * @param {Range} range Range object\n * @param {Node} node Widget node\n * @param {string} style Adding style \"over\" or \"bottom\"\n * @param {number} [offset] Offset to adjust position\n */\n ;\n\n _proto.addWidget = function addWidget(range, node, style, offset) {\n var pos = this.getEditor().getSelectionPosition(range, style, offset);\n var editorContainerPos = dom[\"a\" /* default */].getOffset(this.editorContainerEl);\n this.editorContainerEl.appendChild(node);\n css_default()(node, {\n position: 'absolute',\n top: pos.top - editorContainerPos.top + this.scrollTop() + \"px\",\n left: pos.left - editorContainerPos.left + \"px\"\n });\n }\n /**\n * Get body container of Squire\n * @returns {HTMLElement} body element\n */\n ;\n\n _proto.getBody = function getBody() {\n return this.getEditor().getBody();\n }\n /**\n * Check with given regexp whether current path has some format or not\n * @param {RegExp} rx Regexp\n * @returns {boolean} Match result\n */\n ;\n\n _proto.hasFormatWithRx = function hasFormatWithRx(rx) {\n return this.getEditor().getPath().match(rx);\n }\n /**\n * Break line to new default block from passed range\n * @param {Range} range Range object\n * @param {string} [where] \"before\" or not\n */\n ;\n\n _proto.breakToNewDefaultBlock = function breakToNewDefaultBlock(range, where) {\n var div = this.editor.createDefaultBlock();\n var currentNode = dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset) || dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset - 1);\n var appendBefore = dom[\"a\" /* default */].getParentUntil(currentNode, this.getBody());\n\n if (where === 'before') {\n dom[\"a\" /* default */].insertBefore(div, appendBefore);\n } else {\n dom[\"a\" /* default */].insertAfter(div, appendBefore);\n }\n\n range.setStart(div, 0);\n range.collapse(true);\n this.setRange(range);\n }\n /**\n * Replace textContet of node\n * @param {Node} container Container node\n * @param {string} from Target text to change\n * @param {string} to Replacement text\n */\n ;\n\n _proto.replaceContentText = function replaceContentText(container, from, to) {\n var beforeText = container.innerHTML;\n container.innerHTML = beforeText.replace(from, to);\n }\n /**\n * Unwrap Block tag of current range\n * @param {function} [condition] iterate with tagName\n */\n ;\n\n _proto.unwrapBlockTag = function unwrapBlockTag(condition) {\n if (!condition) {\n condition = function condition(tagName) {\n return wysiwygEditor_FIND_BLOCK_TAGNAME_RX.test(tagName);\n };\n }\n\n this.getEditor().changeBlockFormat(condition);\n this.eventManager.emit('wysiwygRangeChangeAfter', this);\n }\n /**\n * move scroll to cursor\n * scrollIntoView browser function may cause scrolling on document.\n * this function aims to replace scrollIntoView function to prevent that.\n * it will move the scroll of squire only.\n */\n ;\n\n _proto.scrollIntoCursor = function scrollIntoCursor() {\n var scrollTop = this.scrollTop();\n\n var _this$getEditor$getCu = this.getEditor().getCursorPosition(),\n cursorTop = _this$getEditor$getCu.top,\n cursorHeight = _this$getEditor$getCu.height;\n\n var _this$editorContainer = this.editorContainerEl.getBoundingClientRect(),\n editorTop = _this$editorContainer.top,\n editorHeight = _this$editorContainer.height;\n\n var cursorAboveEditor = cursorTop - editorTop;\n var cursorBelowEditor = cursorTop + cursorHeight - (editorTop + editorHeight);\n\n if (cursorAboveEditor < 0) {\n this.scrollTop(scrollTop + cursorAboveEditor);\n } else if (cursorBelowEditor > 0) {\n this.scrollTop(Math.ceil(scrollTop + cursorBelowEditor));\n }\n }\n /**\n * Set cursor position to end\n */\n ;\n\n _proto.moveCursorToEnd = function moveCursorToEnd() {\n this.getEditor().moveCursorToEnd();\n this.scrollIntoCursor();\n\n this._correctRangeAfterMoveCursor('end');\n }\n /**\n * Set cursor position to start\n */\n ;\n\n _proto.moveCursorToStart = function moveCursorToStart() {\n this.getEditor().moveCursorToStart();\n this.scrollTop(0);\n }\n /**\n * Set cursor position to start\n * @param {number} value Scroll amount\n * @returns {number} value of scrollTop\n */\n ;\n\n _proto.scrollTop = function scrollTop(value) {\n if (!isUndefined_default()(value)) {\n this.editorContainerEl.scrollTop = value;\n }\n\n return this.editorContainerEl.scrollTop;\n }\n /**\n * For arrange Range after moveCursorToEnd api invocation. Squire has bug in Firefox, IE.\n * @param {string} direction Direction of cursor move\n * @private\n */\n ;\n\n _proto._correctRangeAfterMoveCursor = function _correctRangeAfterMoveCursor(direction) {\n var range = this.getRange();\n var cursorContainer = this.getBody();\n\n if (direction === 'start') {\n while (cursorContainer.firstChild) {\n cursorContainer = cursorContainer.firstChild;\n }\n } else {\n while (cursorContainer.lastChild) {\n cursorContainer = cursorContainer.lastChild;\n }\n } // IE have problem with cursor after br\n\n\n if (cursorContainer.tagName === 'BR') {\n range.setStartBefore(cursorContainer);\n } else {\n range.setStartAfter(cursorContainer);\n }\n\n range.collapse(true);\n this.setRange(range);\n }\n /**\n * Get current Range object\n * @returns {Range}\n */\n ;\n\n _proto.getRange = function getRange() {\n return this.getEditor().getSelection().cloneRange();\n }\n /**\n * get IME range\n * cjk composition causes wrong caret position.\n * it returns fixed IME composition range\n * @returns {Range}\n */\n ;\n\n _proto.getIMERange = function getIMERange() {\n var range;\n var selection = getSelection();\n\n if (selection && selection.rangeCount) {\n range = selection.getRangeAt(0).cloneRange();\n }\n\n return range;\n }\n /**\n * get IME range\n * cjk composition causes wrong caret position.\n * it sets fixed IME composition range\n */\n ;\n\n _proto.fixIMERange = function fixIMERange() {\n var range = this.getIMERange(); // range exists and it's an WYSIWYG editor content\n\n if (range) {\n var contentElement = dom[\"a\" /* default */].getParentUntil(range.commonAncestorContainer, this.editorContainerEl);\n var foundEditorElement = !!(contentElement && contentElement.parentNode);\n\n if (foundEditorElement) {\n this.setRange(range);\n }\n }\n }\n /**\n * set range\n * @param {Range} range - range to set\n */\n ;\n\n _proto.setRange = function setRange(range) {\n this.getEditor().setSelection(range);\n }\n /**\n * Check whether passed range is in table or not\n * @param {Range} range range\n * @returns {boolean} result\n */\n ;\n\n _proto.isInTable = function isInTable(range) {\n var target = range.collapsed ? range.startContainer : range.commonAncestorContainer;\n return !!dom[\"a\" /* default */].closest(target, '[contenteditable=true] table');\n }\n /**\n * Get text object of current range\n * @param {Range} range Range object\n * @returns {WwTextObject}\n */\n ;\n\n _proto.getTextObject = function getTextObject(range) {\n return new wwTextObject(this, range);\n };\n\n _proto.defer = function defer(callback, delayOffset) {\n var _this9 = this;\n\n var delay = delayOffset ? delayOffset : 0;\n setTimeout(function () {\n if (_this9.isEditorValid()) {\n callback(_this9);\n }\n }, delay);\n };\n\n _proto.isEditorValid = function isEditorValid() {\n return this.getEditor() && dom[\"a\" /* default */].isContain(document.body, this.editorContainerEl);\n };\n\n _proto._isCursorNotInRestrictedAreaOfTabAction = function _isCursorNotInRestrictedAreaOfTabAction(editor) {\n return !editor.hasFormat('li') && !editor.hasFormat('blockquote') && !editor.hasFormat('table');\n };\n\n _proto.getSanitizer = function getSanitizer() {\n return this._sanitizer;\n }\n /**\n * WysiwygEditor factory method\n * @param {HTMLElement} el Container element for editor\n * @param {EventManager} eventManager EventManager instance\n * @param {object} [options={}] - option object\n * @returns {WysiwygEditor} wysiwygEditor\n * @ignore\n */\n ;\n\n WysiwygEditor.factory = function factory(el, eventManager, options) {\n var wwe = new WysiwygEditor(el, eventManager, options);\n wwe.init();\n wwe.componentManager.addManager(wwListManager);\n wwe.componentManager.addManager(wwTaskManager);\n wwe.componentManager.addManager(wwTableSelectionManager);\n wwe.componentManager.addManager(wwTableManager);\n wwe.componentManager.addManager(wwHrManager);\n wwe.componentManager.addManager(wwPManager);\n wwe.componentManager.addManager(wwHeadingManager);\n wwe.componentManager.addManager(wwCodeBlockManager);\n return wwe;\n };\n\n return WysiwygEditor;\n}();\n\n/* harmony default export */ var wysiwygEditor = (wysiwygEditor_WysiwygEditor);\n// CONCATENATED MODULE: ./src/js/layout.js\n/**\n * @fileoverview editor layout\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * Editor container template\n * @type {string}\n * @ignore\n */\n\nvar containerTmpl = ['
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    '].join('');\n/**\n * Class Layout\n * @param {object} options - Option object\n * @param {EventManager} eventManager - Event manager instance\n * @ignore\n */\n\nvar layout_Layout = /*#__PURE__*/function () {\n function Layout(options, eventManager) {\n this.el = options.el;\n this.height = options.height;\n this.type = options.initialEditType;\n this.eventManager = eventManager;\n this.init();\n\n this._initEvent();\n }\n /**\n * Initializer\n * @protected\n */\n\n\n var _proto = Layout.prototype;\n\n _proto.init = function init() {\n this._renderLayout();\n\n this._initMarkdownAndPreviewSection();\n\n this._initWysiwygSection();\n }\n /**\n * Initialize show and hide event\n * @private\n */\n ;\n\n _proto._initEvent = function _initEvent() {\n this.eventManager.listen('hide', this.hide.bind(this));\n this.eventManager.listen('show', this.show.bind(this));\n }\n /**\n * Create editor container with template\n * @private\n */\n ;\n\n _proto._renderLayout = function _renderLayout() {\n css_default()(this.el, {\n boxSizing: 'border-box'\n });\n this.containerEl = dom[\"a\" /* default */].createElementWith(containerTmpl, this.el);\n }\n /**\n * Switch editor mode to WYSIWYG\n */\n ;\n\n _proto.switchToWYSIWYG = function switchToWYSIWYG() {\n removeClass_default()(this.containerEl, 'te-md-mode');\n addClass_default()(this.containerEl, 'te-ww-mode');\n }\n /**\n * Switch editor mode to Markdown\n */\n ;\n\n _proto.switchToMarkdown = function switchToMarkdown() {\n removeClass_default()(this.containerEl, 'te-ww-mode');\n addClass_default()(this.containerEl, 'te-md-mode');\n }\n /**\n * Initialize editor to Markdown and set preview section\n * @private\n */\n ;\n\n _proto._initMarkdownAndPreviewSection = function _initMarkdownAndPreviewSection() {\n this.mdEditorContainerEl = this.containerEl.querySelector('.te-md-container .te-editor');\n this.previewEl = this.containerEl.querySelector('.te-md-container .te-preview');\n }\n /**\n * Initialize editor to WYSIWYG\n * @private\n */\n ;\n\n _proto._initWysiwygSection = function _initWysiwygSection() {\n this.wwEditorContainerEl = this.containerEl.querySelector('.te-ww-container .te-editor');\n }\n /**\n * Set preview to vertical split style\n * @private\n */\n ;\n\n _proto._verticalSplitStyle = function _verticalSplitStyle() {\n var mdContainer = this.containerEl.querySelector('.te-md-container');\n removeClass_default()(mdContainer, 'te-preview-style-tab');\n addClass_default()(mdContainer, 'te-preview-style-vertical');\n }\n /**\n * Set tab style preview mode\n * @private\n */\n ;\n\n _proto._tabStyle = function _tabStyle() {\n var mdContainer = this.containerEl.querySelector('.te-md-container');\n removeClass_default()(mdContainer, 'te-preview-style-vertical');\n addClass_default()(mdContainer, 'te-preview-style-tab');\n }\n /**\n * Toggle preview style between tab and vertical split\n * @param {string} style Preview style ('tab' or 'vertical')\n */\n ;\n\n _proto.changePreviewStyle = function changePreviewStyle(style) {\n if (style === 'tab') {\n this._tabStyle();\n } else if (style === 'vertical') {\n this._verticalSplitStyle();\n }\n }\n /**\n * Hide Editor\n */\n ;\n\n _proto.hide = function hide() {\n addClass_default()(this.el.querySelector('.tui-editor'), 'te-hide');\n }\n /**\n * Show Editor\n */\n ;\n\n _proto.show = function show() {\n removeClass_default()(this.el.querySelector('.tui-editor'), 'te-hide');\n }\n /**\n * Remove Editor\n */\n ;\n\n _proto.remove = function remove() {\n dom[\"a\" /* default */].remove(this.el.querySelector('.tui-editor'));\n }\n /**\n * Get wrapped editor container element\n * @returns {HTMLElement}\n */\n ;\n\n _proto.getEditorEl = function getEditorEl() {\n return this.containerEl;\n }\n /**\n * Get wrapped preview element\n * @returns {HTMLElement}\n */\n ;\n\n _proto.getPreviewEl = function getPreviewEl() {\n return this.previewEl;\n }\n /**\n * Get wrapped Markdown editor element\n * @returns {HTMLElement}\n */\n ;\n\n _proto.getMdEditorContainerEl = function getMdEditorContainerEl() {\n return this.mdEditorContainerEl;\n }\n /**\n * Get wrapped WYSIWYG editor element\n * @returns {HTMLElement}\n */\n ;\n\n _proto.getWwEditorContainerEl = function getWwEditorContainerEl() {\n return this.wwEditorContainerEl;\n };\n\n return Layout;\n}();\n\n/* harmony default export */ var js_layout = (layout_Layout);\n// EXTERNAL MODULE: ./src/js/eventManager.js\nvar js_eventManager = __webpack_require__(36);\n\n// EXTERNAL MODULE: ./src/js/commandManager.js + 1 modules\nvar commandManager = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/array/inArray.js\nvar inArray = __webpack_require__(14);\nvar inArray_default = /*#__PURE__*/__webpack_require__.n(inArray);\n\n// CONCATENATED MODULE: ./src/js/importManager.js\n/**\n * @fileoverview Implement Module for managing import external data such as image\n * @author NHN FE Development Lab \n */\n\n\nvar URLRegex = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})(\\/([^\\s]*))?$/g;\n/**\n * Class ImportManager\n * @param {EventManager} eventManager - eventManager\n * @ignore\n */\n\nvar importManager_ImportManager = /*#__PURE__*/function () {\n function ImportManager(eventManager) {\n this.eventManager = eventManager;\n\n this._initEvent();\n\n this._initDefaultImageImporter();\n }\n /**\n * graceful decode uri component\n * @param {string} originalURI - string to be decoded\n * @returns {string} decoded string\n * @static\n */\n\n\n ImportManager.decodeURIGraceful = function decodeURIGraceful(originalURI) {\n var uris = originalURI.split(' ');\n var decodedURIs = [];\n var decodedURI;\n forEachArray_default()(uris, function (uri) {\n try {\n decodedURI = decodeURIComponent(uri);\n decodedURI = decodedURI.replace(/ /g, '%20');\n } catch (e) {\n decodedURI = uri;\n }\n\n return decodedURIs.push(decodedURI);\n });\n return decodedURIs.join(' ');\n }\n /**\n * encode markdown critical characters\n * @param {string} text - string to encode\n * @returns {string} - markdown character encoded string\n * @static\n */\n ;\n\n ImportManager.encodeMarkdownCharacters = function encodeMarkdownCharacters(text) {\n return text.replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/\\[/g, '%5B').replace(/\\]/g, '%5D').replace(//g, '%3E');\n }\n /**\n * escape markdown critical characters\n * @param {string} text - string to escape\n * @returns {string} - markdown character escaped string\n * @static\n */\n ;\n\n ImportManager.escapeMarkdownCharacters = function escapeMarkdownCharacters(text) {\n return text.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)').replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]').replace(//g, '\\\\>');\n }\n /**\n * Initialize event handler\n * @private\n */\n ;\n\n var _proto = ImportManager.prototype;\n\n _proto._initEvent = function _initEvent() {\n var _this = this;\n\n this.eventManager.listen('drop', function (ev) {\n var items = ev.data.dataTransfer && ev.data.dataTransfer.files;\n\n _this._processBlobItems(items, ev.data);\n });\n this.eventManager.listen('willPaste', function (ev) {\n // IE has no interface to handle clipboard image. #976\n var fragment = ev.data.fragment;\n var descendant = fragment.querySelectorAll('*'); // only if paste event data has one img element and the element has base64 encoded image\n\n if (descendant.length !== 1 || descendant[0].tagName !== 'IMG' || !/^data:image/.test(descendant[0].src)) {\n return;\n }\n\n ev.data.preventDefault();\n var blob = dataURItoBlob(descendant[0].src);\n\n _this._emitAddImageBlobHook(blob, 'paste');\n });\n this.eventManager.listen('paste', function (ev) {\n _this._processClipboard(ev.data);\n });\n this.eventManager.listen('pasteBefore', function (ev) {\n _this._decodeURL(ev);\n });\n }\n /**\n * Initialize default image importer\n * @private\n */\n ;\n\n _proto._initDefaultImageImporter = function _initDefaultImageImporter() {\n this.eventManager.listen('addImageBlobHook', function (blob, callback) {\n var reader = new FileReader();\n\n reader.onload = function (event) {\n callback(event.target.result);\n };\n\n reader.readAsDataURL(blob);\n });\n }\n /**\n * Emit add image blob hook\n * @param {object} blob - blob or file\n * @param {string} type - type of an event the item belongs to. paste or drop\n * @private\n */\n ;\n\n _proto._emitAddImageBlobHook = function _emitAddImageBlobHook(blob, type) {\n var _this2 = this;\n\n this.eventManager.emit('addImageBlobHook', blob, function (imageUrl, altText) {\n _this2.eventManager.emit('command', 'AddImage', {\n imageUrl: imageUrl,\n altText: altText || blob.name || 'image'\n });\n }, type);\n }\n /**\n * Decode url when paste link\n * @param {object} ev - event object\n * @private\n */\n ;\n\n _proto._decodeURL = function _decodeURL(ev) {\n var decodeURIGraceful = ImportManager.decodeURIGraceful,\n encodeMarkdownCharacters = ImportManager.encodeMarkdownCharacters;\n\n if (ev.source === 'markdown' && ev.data.text) {\n var texts = ev.data.text;\n var text = texts[0];\n\n if (texts.length === 1 && text.match(URLRegex)) {\n text = decodeURIGraceful(text);\n text = encodeMarkdownCharacters(text);\n ev.data.update(null, null, [text]);\n }\n } else if (ev.source === 'wysiwyg') {\n var container = ev.clipboardContainer;\n var _container$childNodes = container.childNodes,\n firstChild = _container$childNodes[0];\n var _text = firstChild.innerText;\n\n if (container.childNodes.length === 1 && firstChild.tagName === 'A' && _text.match(URLRegex)) {\n firstChild.innerText = decodeURIGraceful(_text);\n firstChild.href = encodeMarkdownCharacters(firstChild.href);\n }\n }\n }\n /**\n * Get blob or excel data from clipboard\n * @param {object} evData Clipboard data\n * @private\n */\n ;\n\n _proto._processClipboard = function _processClipboard(evData) {\n var cbData = evData.clipboardData || window.clipboardData;\n var blobItems = cbData && cbData.items;\n var types = cbData.types;\n\n if (blobItems && types && types.length === 1 && inArray_default()('Files', [].slice.call(types)) !== -1) {\n this._processBlobItems(blobItems, evData);\n }\n }\n /**\n * Process for blob item\n * @param {Array.} items Item array\n * @param {object} evData Event data\n * @private\n */\n ;\n\n _proto._processBlobItems = function _processBlobItems(items, evData) {\n var _this3 = this;\n\n if (items) {\n forEachArray_default()(items, function (item) {\n if (item.type.indexOf('image') !== -1) {\n evData.preventDefault();\n evData.stopPropagation();\n evData.codemirrorIgnore = true;\n var blob = item.name ? item : item.getAsFile(); // Blob or File\n\n _this3._emitAddImageBlobHook(blob, evData.type);\n\n return false;\n }\n\n return true;\n });\n }\n };\n\n return ImportManager;\n}();\n/**\n * data URI to Blob\n * @param {string} dataURI - data URI string\n * @returns {Blob} - blob data\n * @ignore\n */\n\n\nfunction dataURItoBlob(dataURI) {\n var byteString = atob(dataURI.split(',')[1]);\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n var _dataURI$split = dataURI.split(','),\n mimeString = _dataURI$split[0];\n\n var blob = new Blob([ab], {\n type: mimeString.split(':')[1].split(';')[0]\n });\n return blob;\n}\n\n/* harmony default export */ var importManager = (importManager_ImportManager);\n// EXTERNAL MODULE: ./src/js/convertor.js\nvar convertor = __webpack_require__(37);\n\n// EXTERNAL MODULE: ./src/js/viewer.js\nvar viewer = __webpack_require__(46);\n\n// EXTERNAL MODULE: ./src/js/utils/map.js\nvar map = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./src/js/i18n.js\n/**\n * @fileoverview Implements i18n\n * @author NHN FE Development Lab \n */\n\n\nvar DEFAULT_CODE = 'en-US';\n/**\n * Class I18n\n * @ignore\n */\n\nvar i18n_I18n = /*#__PURE__*/function () {\n function I18n() {\n this._code = DEFAULT_CODE;\n this._langs = new map[\"a\" /* default */]();\n }\n /**\n * Set locale code\n * @param {string} code locale code\n */\n\n\n var _proto = I18n.prototype;\n\n _proto.setCode = function setCode(code) {\n this._code = code;\n }\n /**\n * Set language set\n * @param {string|string[]} codes locale code\n * @param {object} data language set\n */\n ;\n\n _proto.setLanguage = function setLanguage(codes, data) {\n var _this = this;\n\n codes = [].concat(codes);\n codes.forEach(function (code) {\n if (!_this._langs.has(code)) {\n _this._langs.set(code, data);\n } else {\n var langData = _this._langs.get(code);\n\n _this._langs.set(code, extend_default()(langData, data));\n }\n });\n }\n /**\n * Get text of key\n * @param {string} key key of text\n * @param {string} code locale code\n * @returns {string}\n */\n ;\n\n _proto.get = function get(key, code) {\n if (!code) {\n code = this._code;\n }\n\n var langSet = this._langs.get(code);\n\n if (!langSet) {\n langSet = this._langs.get(DEFAULT_CODE);\n }\n\n var text = langSet[key];\n\n if (!text) {\n throw new Error(\"There is no text key \\\"\" + key + \"\\\" in \" + code);\n }\n\n return text;\n };\n\n return I18n;\n}();\n\n\n/* harmony default export */ var i18n = (new i18n_I18n());\n// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js\nvar ResizeObserver_es = __webpack_require__(57);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isString.js\nvar isString = __webpack_require__(9);\nvar isString_default = /*#__PURE__*/__webpack_require__.n(isString);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isObject.js\nvar isObject = __webpack_require__(54);\nvar isObject_default = /*#__PURE__*/__webpack_require__.n(isObject);\n\n// EXTERNAL MODULE: ./node_modules/tui-code-snippet/customEvents/customEvents.js\nvar customEvents = __webpack_require__(58);\nvar customEvents_default = /*#__PURE__*/__webpack_require__.n(customEvents);\n\n// CONCATENATED MODULE: ./src/js/ui/uicontroller.js\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements ui controller\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\nvar DOM_EVENTS = ['click', 'mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'scroll'];\n\nvar _uiInstanceId = -1;\n/**\n * get ui instance id\n * @returns {number} - new instance id\n * @ignore\n */\n\n\nfunction makeUIInstanceId() {\n _uiInstanceId += 1;\n return _uiInstanceId;\n}\n/**\n * Class UIController\n * @param {Object} [options] - options\n * @param {HTMLElement} [options.rootElement] - root element\n * @param {string} [options.tagName] - tag name\n * @param {string} [options.className] - class name\n */\n\n\nvar uicontroller_UIController = /*#__PURE__*/function () {\n /**\n * tag name\n * @type {string}\n */\n\n /**\n * ui controller class name\n * @type {string}\n */\n\n /**\n * UI element\n * @type {Object}\n */\n\n /**\n * UI Id\n * @type {number}\n * @private\n */\n function UIController(options) {\n if (options === void 0) {\n options = {};\n }\n\n _defineProperty(this, \"tagName\", void 0);\n\n _defineProperty(this, \"className\", void 0);\n\n _defineProperty(this, \"el\", void 0);\n\n _defineProperty(this, \"_id\", void 0);\n\n options = extend_default()({\n tagName: 'div'\n }, options);\n this.tagName = options.tagName;\n this.className = options.className;\n this._id = makeUIInstanceId();\n this.customEventManager = new customEvents_default.a();\n\n this._setRootElement(options.rootElement);\n }\n /**\n * @param {string|object} aType - event name and selector string\n * @param {function} aFn - event handler\n */\n\n\n var _proto = UIController.prototype;\n\n _proto.on = function on(aType, aFn) {\n var _this = this;\n\n if (isObject_default()(aType)) {\n forEachOwnProperties_default()(aType, function (fn, type) {\n _this._addEvent(type, fn);\n });\n } else {\n this._addEvent(aType, aFn);\n }\n };\n\n _proto._bindDomEvent = function _bindDomEvent(event, selector, fn) {\n if (selector) {\n dom[\"a\" /* default */].findAll(this.el, selector).forEach(function (el) {\n on_default()(el, event, fn);\n });\n } else {\n on_default()(this.el, event, fn);\n }\n }\n /**\n * bind event\n * @param {string} type - event name and selector\n * @param {function} fn - handler function\n * @private\n */\n ;\n\n _proto._addEvent = function _addEvent(type, fn) {\n var _this$_parseEventType = this._parseEventType(type),\n event = _this$_parseEventType.event,\n selector = _this$_parseEventType.selector;\n\n if (inArray_default()(event, DOM_EVENTS) > -1) {\n this._bindDomEvent(event, selector, fn);\n } else {\n this.customEventManager.on(event, fn);\n }\n };\n\n _proto._unbindDomEvent = function _unbindDomEvent(event, selector, fn) {\n if (selector) {\n dom[\"a\" /* default */].findAll(this.el, selector).forEach(function (el) {\n off_default()(el, event, fn);\n });\n } else {\n off_default()(this.el, event, fn);\n }\n }\n /**\n * unbind event handler\n * @param {string} type - event name and selector\n * @param {function} fn - handler function\n */\n ;\n\n _proto.off = function off(type, fn) {\n var _this$_parseEventType2 = this._parseEventType(type),\n event = _this$_parseEventType2.event,\n selector = _this$_parseEventType2.selector;\n\n if (inArray_default()(event, DOM_EVENTS) > -1) {\n this._unbindDomEvent(event, selector, fn);\n } else {\n this.customEventManager.off(event, fn);\n }\n }\n /**\n * parse string into event name & selector\n * 'click td' => ['click', 'td']\n * @param {string} type - string to be parsed\n * @returns {Object} event, selector\n * @private\n */\n ;\n\n _proto._parseEventType = function _parseEventType(type) {\n var splitType = type.split(' ');\n var event = splitType.shift();\n var selector = splitType.join(' ');\n return {\n event: event,\n selector: selector\n };\n }\n /**\n * set root element\n * @param {HTMLElement} el - root element\n * @private\n */\n ;\n\n _proto._setRootElement = function _setRootElement(el) {\n if (!el) {\n var tagName = this.tagName;\n el = document.createElement(tagName);\n el.className = this.className || \"uic\" + this._id;\n }\n\n this.el = el;\n }\n /**\n * trigger event\n * @param {string} eventName - event name\n * @param {*} eventData - event data\n */\n ;\n\n _proto.trigger = function trigger(eventName, eventData) {\n this.customEventManager.fire(eventName, eventData);\n }\n /**\n * remove\n */\n ;\n\n _proto.remove = function remove() {\n if (this.el) {\n dom[\"a\" /* default */].remove(this.el);\n }\n }\n /**\n * destroy\n */\n ;\n\n _proto.destroy = function destroy() {\n var _this2 = this;\n\n this.remove();\n forEachOwnProperties_default()(this, function (value, key) {\n _this2[key] = null;\n });\n };\n\n return UIController;\n}();\n\n/* harmony default export */ var uicontroller = (uicontroller_UIController);\n// CONCATENATED MODULE: ./src/js/ui/toolbarItem.js\nfunction toolbarItem_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction toolbarItem_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements Toolbar Item\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Class ToolbarItem\n * @param {Object} [options={name: 'toolbar-item'}] [description]\n */\n\nvar toolbarItem_ToolbarItem = /*#__PURE__*/function (_UIController) {\n toolbarItem_inheritsLoose(ToolbarItem, _UIController);\n\n /**\n * item name\n * @type {String}\n * @static\n * @private\n */\n\n /**\n * toolbar item class name\n * @type {String}\n * @static\n * @private\n */\n function ToolbarItem(options) {\n var _this;\n\n if (options === void 0) {\n options = {\n name: ToolbarItem.name\n };\n }\n\n _this = _UIController.call(this, extend_default()({\n className: ToolbarItem.className\n }, options)) || this;\n _this._name = options.name;\n return _this;\n }\n /**\n * get the name of the toolbar item\n * @returns {string} - the name of the toolbar item\n */\n\n\n var _proto = ToolbarItem.prototype;\n\n _proto.getName = function getName() {\n return this._name;\n };\n\n return ToolbarItem;\n}(uicontroller);\n\ntoolbarItem_defineProperty(toolbarItem_ToolbarItem, \"name\", 'item');\n\ntoolbarItem_defineProperty(toolbarItem_ToolbarItem, \"className\", 'tui-toolbar-item');\n\n/* harmony default export */ var ui_toolbarItem = (toolbarItem_ToolbarItem);\n// CONCATENATED MODULE: ./src/js/ui/tooltip.js\n/**\n * @fileoverview Implements tooltip\n * @author NHN FE Development Lab \n */\n\n\nvar TOOLTIP_CONTENT = '
    ';\nvar TOOLTIP_TOP_INDENT = 7;\n/**\n * Class Tooltip\n * @ignore\n */\n\nvar tooltip_Tooltip = /*#__PURE__*/function () {\n function Tooltip() {\n this.el = dom[\"a\" /* default */].createElementWith(\"
    \" + TOOLTIP_CONTENT + \"
    \");\n document.body.appendChild(this.el);\n this.hide();\n }\n /**\n * show tooltop\n * @param {HTMLElement} target - target element to bind\n * @param {String} text - text to show\n */\n\n\n var _proto = Tooltip.prototype;\n\n _proto.show = function show(target, text) {\n var targetRect = target.getBoundingClientRect();\n var left = targetRect.left + window.pageXOffset;\n var top = targetRect.top + window.pageYOffset;\n css_default()(this.el, {\n top: top + target.clientHeight + TOOLTIP_TOP_INDENT + \"px\",\n left: left + 3 + \"px\"\n });\n this.el.querySelector('.text').innerHTML = text;\n css_default()(this.el, {\n display: 'block'\n });\n };\n\n _proto.hide = function hide() {\n css_default()(this.el, {\n display: 'none'\n });\n };\n\n _proto.remove = function remove() {\n dom[\"a\" /* default */].remove(this.el);\n };\n\n return Tooltip;\n}();\n\n/* harmony default export */ var tooltip = (new tooltip_Tooltip());\n// CONCATENATED MODULE: ./src/js/ui/toolbarButton.js\nfunction toolbarButton_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction toolbarButton_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction toolbarButton_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements UI ToolbarButton\n * @author NHN FE Development Lab \n */\n\n\n/**\n * @typedef {object} toolbarItemsValue\n * @property {string} type - type of toolbar item (default value is 'button')\n * @property {toolbarButtonOptions} options - options of toolbar item\n */\n\n/**\n * @typedef {object} toolbarButtonOptions\n * @property {HTMLElement} el - target element\n * @property {string} className - button's class name\n * @property {string} command - command name to execute on click\n * @property {string} event - event name to trigger on click\n * @property {string} text - text on button\n * @property {string} tooltip - text on tooltip\n * @property {string} style - button's style\n * @property {string} state - button's state\n */\n\n/**\n * Class ToolbarButton UI\n * @param {toolbarButtonOptions} options - button options\n * @ignore\n */\n\nvar toolbarButton_ToolbarButton = /*#__PURE__*/function (_ToolbarItem) {\n toolbarButton_inheritsLoose(ToolbarButton, _ToolbarItem);\n\n /**\n * item name\n * @type {String}\n * @static\n */\n\n /**\n * ToolbarItem className\n * @type {String}\n * @static\n */\n function ToolbarButton(options) {\n var _this;\n\n if (options === void 0) {\n options = {\n tagName: 'button',\n name: ToolbarButton.name\n };\n }\n\n _this = _ToolbarItem.call(this, {\n name: options.name,\n tagName: 'button',\n className: options.className + \" \" + ToolbarButton.className,\n rootElement: options.el\n }) || this;\n\n _this._setOptions(options);\n\n _this._render();\n\n _this.on('click', _this._onClick.bind(toolbarButton_assertThisInitialized(_this)));\n\n if (options.tooltip) {\n _this.on('mouseover', _this._onOver.bind(toolbarButton_assertThisInitialized(_this)));\n\n _this.on('mouseout', _this._onOut.bind(toolbarButton_assertThisInitialized(_this)));\n }\n\n return _this;\n }\n /**\n * set tooltip text\n * @param {string} text - tooltip text to show\n */\n\n\n var _proto = ToolbarButton.prototype;\n\n _proto.setTooltip = function setTooltip(text) {\n this._tooltip = text;\n };\n\n _proto._setOptions = function _setOptions(options) {\n this._command = options.command;\n this._event = options.event;\n this._text = options.text;\n this._tooltip = options.tooltip;\n this._style = options.style;\n this._state = options.state;\n };\n\n _proto._render = function _render() {\n var text = document.createTextNode(this._text || '');\n this.el.appendChild(text);\n this.el.setAttribute('type', 'button');\n\n if (this._style) {\n this.el.setAttribute('style', this._style);\n }\n };\n\n _proto._onClick = function _onClick() {\n if (!this.isEnabled()) {\n return;\n }\n\n if (this._command) {\n this.trigger('command', this._command);\n } else if (this._event) {\n this.trigger('event', this._event);\n }\n\n this.trigger('clicked');\n };\n\n _proto._onOver = function _onOver() {\n if (!this.isEnabled()) {\n return;\n }\n\n tooltip.show(this.el, this._tooltip);\n };\n\n _proto._onOut = function _onOut() {\n tooltip.hide();\n }\n /**\n * enable button\n */\n ;\n\n _proto.enable = function enable() {\n this.el.disabled = false;\n }\n /**\n * disable button\n */\n ;\n\n _proto.disable = function disable() {\n this.el.disabled = true;\n }\n /**\n * check whether this button is enabled\n * @returns {Boolean} - true for enabled\n */\n ;\n\n _proto.isEnabled = function isEnabled() {\n return !this.el.disabled;\n };\n\n return ToolbarButton;\n}(ui_toolbarItem);\n\ntoolbarButton_defineProperty(toolbarButton_ToolbarButton, \"name\", 'button');\n\ntoolbarButton_defineProperty(toolbarButton_ToolbarButton, \"className\", 'tui-toolbar-icons');\n\n/* harmony default export */ var toolbarButton = (toolbarButton_ToolbarButton);\n// CONCATENATED MODULE: ./src/js/ui/toolbarDivider.js\nfunction toolbarDivider_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction toolbarDivider_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements Toolbar Divider\n * @author NHN FE Development Lab \n */\n\n/**\n * Class ToolbarDivider\n * @ignore\n */\n\nvar ToolbarDivider = /*#__PURE__*/function (_ToolbarItem) {\n toolbarDivider_inheritsLoose(ToolbarDivider, _ToolbarItem);\n\n /**\n * item name\n * @type {String}\n * @static\n */\n\n /**\n * item class name\n * @type {String}\n * @static\n */\n function ToolbarDivider() {\n return _ToolbarItem.call(this, {\n name: ToolbarDivider.name,\n tagName: 'div',\n className: ToolbarDivider.className\n }) || this;\n }\n\n return ToolbarDivider;\n}(ui_toolbarItem);\n\ntoolbarDivider_defineProperty(ToolbarDivider, \"name\", 'divider');\n\ntoolbarDivider_defineProperty(ToolbarDivider, \"className\", 'tui-toolbar-divider');\n\n/* harmony default export */ var toolbarDivider = (ToolbarDivider);\n// CONCATENATED MODULE: ./src/js/ui/toolbarItemFactory.js\n/**\n * @fileoverview Implements Toolbar Item Factory\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * Toolbar Item Factory\n * @ignore\n */\n\nvar toolbarItemFactory_ToolbarItemFactory = /*#__PURE__*/function () {\n function ToolbarItemFactory() {}\n\n /**\n * create toolbar item instance\n * @param {string} name - toolbar item name\n * @param {object} [options] - options to the constructor\n * @return {ToolbarItem} - created toolbar item instance\n * @static\n */\n\n /* eslint-disable complexity */\n ToolbarItemFactory.create = function create(name, options) {\n var toolbarItem;\n\n switch (name) {\n case 'heading':\n toolbarItem = new toolbarButton({\n name: 'heading',\n className: 'tui-heading',\n event: 'openHeadingSelect',\n tooltip: i18n.get('Headings'),\n state: 'heading'\n });\n break;\n\n case 'bold':\n toolbarItem = new toolbarButton({\n name: 'bold',\n className: 'tui-bold',\n command: 'Bold',\n tooltip: i18n.get('Bold'),\n state: 'strong'\n });\n break;\n\n case 'italic':\n toolbarItem = new toolbarButton({\n name: 'italic',\n className: 'tui-italic',\n command: 'Italic',\n tooltip: i18n.get('Italic'),\n state: 'emph'\n });\n break;\n\n case 'strike':\n toolbarItem = new toolbarButton({\n name: 'strike',\n className: 'tui-strike',\n command: 'Strike',\n tooltip: i18n.get('Strike'),\n state: 'strike'\n });\n break;\n\n case 'hr':\n toolbarItem = new toolbarButton({\n name: 'hr',\n className: 'tui-hrline',\n command: 'HR',\n tooltip: i18n.get('Line'),\n state: 'thematicBreak'\n });\n break;\n\n case 'quote':\n toolbarItem = new toolbarButton({\n name: 'quote',\n className: 'tui-quote',\n command: 'Blockquote',\n tooltip: i18n.get('Blockquote'),\n state: 'blockQuote'\n });\n break;\n\n case 'ul':\n toolbarItem = new toolbarButton({\n name: 'ul',\n className: 'tui-ul',\n command: 'UL',\n tooltip: i18n.get('Unordered list'),\n state: 'list'\n });\n break;\n\n case 'ol':\n toolbarItem = new toolbarButton({\n name: 'ol',\n className: 'tui-ol',\n command: 'OL',\n tooltip: i18n.get('Ordered list'),\n state: 'orderedList'\n });\n break;\n\n case 'task':\n toolbarItem = new toolbarButton({\n name: 'task',\n className: 'tui-task',\n command: 'Task',\n tooltip: i18n.get('Task'),\n state: 'taskList'\n });\n break;\n\n case 'table':\n toolbarItem = new toolbarButton({\n name: 'table',\n className: 'tui-table',\n event: 'openPopupAddTable',\n tooltip: i18n.get('Insert table'),\n state: 'table'\n });\n break;\n\n case 'image':\n toolbarItem = new toolbarButton({\n name: 'image',\n className: 'tui-image',\n event: 'openPopupAddImage',\n tooltip: i18n.get('Insert image'),\n state: ''\n });\n break;\n\n case 'link':\n toolbarItem = new toolbarButton({\n name: 'link',\n className: 'tui-link',\n event: 'openPopupAddLink',\n tooltip: i18n.get('Insert link')\n });\n break;\n\n case 'code':\n toolbarItem = new toolbarButton({\n name: 'code',\n className: 'tui-code',\n command: 'Code',\n tooltip: i18n.get('Code'),\n state: 'code'\n });\n break;\n\n case 'codeblock':\n toolbarItem = new toolbarButton({\n name: 'codeblock',\n className: 'tui-codeblock',\n command: 'CodeBlock',\n tooltip: i18n.get('Insert CodeBlock'),\n state: 'codeBlock'\n });\n break;\n\n case 'indent':\n toolbarItem = new toolbarButton({\n name: 'indent',\n className: 'tui-indent',\n command: 'Indent',\n tooltip: i18n.get('Indent')\n });\n break;\n\n case 'outdent':\n toolbarItem = new toolbarButton({\n name: 'outdent',\n className: 'tui-outdent',\n command: 'Outdent',\n tooltip: i18n.get('Outdent')\n });\n break;\n\n case 'divider':\n toolbarItem = new toolbarDivider();\n break;\n\n case 'button':\n toolbarItem = new toolbarButton(options);\n break;\n\n case 'item':\n default:\n toolbarItem = new ui_toolbarItem(options);\n }\n\n return toolbarItem;\n }\n /* eslint-enable complexity */\n ;\n\n return ToolbarItemFactory;\n}();\n\n/* harmony default export */ var toolbarItemFactory = (toolbarItemFactory_ToolbarItemFactory);\n// CONCATENATED MODULE: ./src/js/ui/toolbar.js\nfunction toolbar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction toolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction toolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements toolbar\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n/**\n * Class Toolbar\n * @param {EventManager} eventManager - event manager\n * @param {ToolbarItem[]} [items=[]] - toolbar items\n */\n\nvar toolbar_Toolbar = /*#__PURE__*/function (_UIController) {\n toolbar_inheritsLoose(Toolbar, _UIController);\n\n /**\n * items\n * @type {Array}\n * @private\n */\n\n /**\n * event manager\n * @type {EventManager}\n * @private\n */\n function Toolbar(eventManager, items) {\n var _this;\n\n if (items === void 0) {\n items = [];\n }\n\n _this = _UIController.call(this, {\n tagName: 'div',\n className: 'tui-editor-defaultUI-toolbar'\n }) || this;\n\n toolbar_defineProperty(toolbar_assertThisInitialized(_this), \"_items\", []);\n\n toolbar_defineProperty(toolbar_assertThisInitialized(_this), \"_eventManager\", void 0);\n\n _this._eventManager = eventManager;\n\n _this.setItems(items);\n\n _this._initEvent(eventManager);\n\n return _this;\n }\n /**\n * init event\n * @param {EventManager} eventManager - event manager\n * @private\n * @override\n */\n\n\n var _proto = Toolbar.prototype;\n\n _proto._initEvent = function _initEvent(eventManager) {\n var _this2 = this;\n\n eventManager.listen('stateChange', function (ev) {\n _this2._items.forEach(function (item) {\n if (item._state) {\n dom[\"a\" /* default */].toggleClass(item.el, 'active', !!ev[item._state]);\n }\n });\n });\n eventManager.listen('changePreviewTabPreview', function () {\n return _this2.disableAllButton();\n });\n eventManager.listen('changePreviewTabWrite', function () {\n return _this2.enableAllButton();\n });\n eventManager.listen('changeMode', function () {\n return _this2.enableAllButton();\n });\n }\n /**\n * disable all toolbar button\n */\n ;\n\n _proto.disableAllButton = function disableAllButton() {\n this._items.forEach(function (item) {\n if (item instanceof toolbarButton) {\n item.disable();\n }\n });\n }\n /**\n * enable all toolbar button\n */\n ;\n\n _proto.enableAllButton = function enableAllButton() {\n this._items.forEach(function (item) {\n if (item instanceof toolbarButton) {\n item.enable();\n }\n });\n }\n /**\n * get toolbar items\n * @returns {ToolbarItem[]} - toolbar items\n */\n ;\n\n _proto.getItems = function getItems() {\n return this._items.slice(0);\n }\n /**\n * get toolbar item at given index\n * @param {number} index - item index\n * @returns {ToolbarItem} - toolbar item at the index\n */\n ;\n\n _proto.getItem = function getItem(index) {\n return this._items[index];\n }\n /**\n * set toolbar items\n * @param {ToolbarItem[]} items - toolbar items\n */\n ;\n\n _proto.setItems = function setItems(items) {\n this.removeAllItems();\n items.forEach(this.addItem.bind(this));\n }\n /**\n * add toolbar item\n * @param {ToolbarItem|string|object} item - toolbar item\n */\n ;\n\n _proto.addItem = function addItem(item) {\n this.insertItem(this._items.length, item);\n }\n /**\n * insert toolbar item\n * @param {number} index - index at given item inserted\n * @param {ToolbarItem|string|object} item - toolbar item\n */\n ;\n\n _proto.insertItem = function insertItem(index, item) {\n var _this3 = this;\n\n if (isString_default()(item)) {\n item = toolbarItemFactory.create(item);\n } else if (isString_default()(item.type)) {\n item = toolbarItemFactory.create(item.type, item.options);\n }\n\n var children = this.el.children;\n\n if (index >= 0 && index < children.length) {\n dom[\"a\" /* default */].insertBefore(item.el, children[index]);\n\n this._items.splice(index, 0, item);\n } else {\n this.el.appendChild(item.el);\n\n this._items.push(item);\n }\n\n item.onCommandHandler = function (commandName) {\n return _this3._eventManager.emit('command', commandName);\n };\n\n item.onEventHandler = function (eventName) {\n return _this3._eventManager.emit(eventName);\n };\n\n item.on('command', item.onCommandHandler);\n item.on('event', item.onEventHandler);\n }\n /**\n * get index of given item\n * @param {ToolbarItem} item - toolbar item\n * @returns {number} - index of given toolbar item\n */\n ;\n\n _proto.indexOfItem = function indexOfItem(item) {\n var index;\n\n if (item instanceof ui_toolbarItem) {\n index = this._items.indexOf(item);\n } else if (isString_default()(item)) {\n var itemName = item;\n index = this._items.map(function (itemToTest) {\n return itemToTest.getName();\n }).indexOf(itemName);\n }\n\n return index;\n }\n /**\n * remove an item\n * @param {ToolbarItem|number} item - an toolbar item or index of the item to remove\n * @param {boolean} destroy - destroy item or not\n * @returns {ToolbarItem|undefined} - removed item\n */\n ;\n\n _proto.removeItem = function removeItem(item, destroy) {\n if (destroy === void 0) {\n destroy = true;\n }\n\n var index;\n var removedItem;\n\n if (item instanceof ui_toolbarItem) {\n index = this.indexOfItem(item);\n } else {\n index = item;\n }\n\n if (index >= 0) {\n removedItem = this._items.splice(index, 1)[0];\n }\n\n if (removedItem) {\n if (destroy) {\n removedItem.destroy();\n } else {\n removedItem.off('command', removedItem.onCommandHandler);\n removedItem.off('event', removedItem.onEventHandler);\n dom[\"a\" /* default */].remove(removedItem.el);\n }\n }\n\n return removedItem;\n }\n /**\n * remove all toolbar items\n */\n ;\n\n _proto.removeAllItems = function removeAllItems() {\n while (this._items && this._items.length > 0) {\n this.removeItem(0);\n }\n }\n /**\n * destroy instance\n * @override\n */\n ;\n\n _proto.destroy = function destroy() {\n this.removeAllItems();\n\n _UIController.prototype.destroy.call(this);\n };\n\n return Toolbar;\n}(uicontroller);\n\n/* harmony default export */ var ui_toolbar = (toolbar_Toolbar);\n// CONCATENATED MODULE: ./src/js/ui/layerpopup.js\nfunction layerpopup_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction layerpopup_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements LayerPopup\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\nvar CLASS_PREFIX = 'tui-popup-';\nvar CLASS_FIT_WINDOW = 'fit-window';\nvar LAYOUT_TEMPLATE_MODELESS = \"
    \\n \\n
    \\n \\n
    \\n
    \\n
    \";\nvar LAYOUT_TEMPLATE_MODAL = \"
    \\n
    \\n \\n
    \\n \\n
    \\n
    \\n
    \\n
    \";\n/**\n * A number, or a string containing a number.\n * @typedef {object} LayerPopupOption\n * @property {string[]} [openerCssQuery] - Css Query list to bind clickevent that open popup\n * @property {string[]} [closerCssQuery] - Css Query list to bind clickevent that close popup\n * @property {HTMLElement} el - popup root element\n * @property {HTMLElement|string} [content] - popup content that html string or element\n * @property {string} [textContent] - popup text content\n * @property {string} title - popup title\n * @property {boolean} [header] - whether to draw header\n * @property {HTMLElement} [target] - element to append popup\n * @property {boolean} modal - true: modal, false: modeless\n * @property {string} [headerButtons] - replace header(close) button\n */\n\n/**\n * Class LayerPopup\n * @param {LayerPopupOption} options - popup option\n */\n\nvar layerpopup_LayerPopup = /*#__PURE__*/function (_UIController) {\n layerpopup_inheritsLoose(LayerPopup, _UIController);\n\n function LayerPopup(options) {\n var _this;\n\n options = extend_default()({\n header: true,\n target: document.body,\n textContent: ''\n }, options);\n _this = _UIController.call(this, {\n tagName: 'div',\n className: options.modal ? CLASS_PREFIX + \"modal-background\" : CLASS_PREFIX + \"wrapper\",\n rootElement: options.el\n }) || this;\n _this._clickEventMap = {};\n _this._onClickCloseButton = _this.hide.bind(layerpopup_assertThisInitialized(_this));\n\n _this._initInstance(options);\n\n _this._initDOM(options);\n\n _this._initDOMEvent(options);\n\n _this._initEditorEvent(options);\n\n return _this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n */\n\n\n var _proto = LayerPopup.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n this._target = options.target;\n\n if (options.el) {\n this.el = options.el;\n this._isExternalHtmlUse = true;\n }\n\n if (options.content) {\n this.content = options.content;\n } else {\n this.content = options.textContent;\n }\n\n this.options = options;\n }\n /**\n * initialize DOM, render popup\n * @private\n */\n ;\n\n _proto._initDOM = function _initDOM() {\n this._initLayout();\n\n if (!this._isExternalHtmlUse) {\n if (isExisty_default()(this.options.title)) {\n this.setTitle(this.options.title);\n }\n\n this.setContent(this.content);\n }\n\n var buttons = this.options.headerButtons;\n\n if (buttons) {\n var closeButtons = dom[\"a\" /* default */].findAll(this.el, \".\" + CLASS_PREFIX + \"close-button\");\n closeButtons.forEach(function (button) {\n dom[\"a\" /* default */].remove(button);\n });\n var buttonWrapper = this.el.querySelector(\".\" + CLASS_PREFIX + \"header-buttons\");\n dom[\"a\" /* default */].empty(buttonWrapper);\n buttonWrapper.innerHTML = buttons;\n }\n\n if (this.options.css) {\n css_default()(this.el, this.options.css);\n }\n }\n /**\n * bind DOM events\n * @private\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this2 = this;\n\n var _this$options = this.options,\n openerCssQuery = _this$options.openerCssQuery,\n closerCssQuery = _this$options.closerCssQuery;\n var _document = document,\n body = _document.body;\n\n if (openerCssQuery) {\n dom[\"a\" /* default */].findAll(body, openerCssQuery).forEach(function (el) {\n var eventKey = \"click.\" + _this2._id;\n _this2._clickEventMap[eventKey] = _this2.show.bind(_this2);\n on_default()(el, 'click', _this2._clickEventMap[eventKey]);\n });\n }\n\n if (closerCssQuery) {\n dom[\"a\" /* default */].findAll(body, closerCssQuery).forEach(function (el) {\n var eventKey = \"click.\" + _this2._id;\n _this2._clickEventMap[eventKey] = _this2.hide.bind(_this2);\n on_default()(el, 'click', _this2._clickEventMap[eventKey]);\n });\n }\n\n this.on(\"click .\" + CLASS_PREFIX + \"close-button\", this._onClickCloseButton);\n }\n /**\n * bind editor events\n * @private\n * @abstract\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {};\n\n _proto._initLayout = function _initLayout() {\n var options = this.options;\n\n if (!this._isExternalHtmlUse) {\n var layout = options.modal ? LAYOUT_TEMPLATE_MODAL : LAYOUT_TEMPLATE_MODELESS;\n this.el.innerHTML = layout;\n\n if (options.className) {\n addClass_default.a.apply(void 0, [this.el].concat(options.className.split(/\\s+/g)));\n }\n\n this.hide();\n\n this._target.appendChild(this.el);\n\n this.body = this.el.querySelector(\".\" + CLASS_PREFIX + \"body\");\n\n if (!options.header) {\n dom[\"a\" /* default */].remove(this.el.querySelector(\".\" + CLASS_PREFIX + \"header\"));\n }\n } else {\n this.hide();\n\n this._target.appendChild(this.el);\n }\n }\n /**\n * set popup content\n * @param {HTMLElement|string} content - content\n */\n ;\n\n _proto.setContent = function setContent(content) {\n dom[\"a\" /* default */].empty(this.body);\n\n if (isString_default()(content)) {\n this.body.innerHTML = content;\n } else {\n this.body.appendChild(content);\n }\n }\n /**\n * set title\n * @param {string} title - title text\n */\n ;\n\n _proto.setTitle = function setTitle(title) {\n var titleWrapper = this.el.querySelector(\".\" + CLASS_PREFIX + \"title\");\n dom[\"a\" /* default */].empty(titleWrapper);\n titleWrapper.innerHTML = title;\n }\n /**\n * get title element\n * @returns {HTMLElement} - title html element\n */\n ;\n\n _proto.getTitleElement = function getTitleElement() {\n return this.el.querySelector(\".\" + CLASS_PREFIX + \"title\");\n }\n /**\n * hide popup\n */\n ;\n\n _proto.hide = function hide() {\n css_default()(this.el, {\n display: 'none'\n });\n this._isShow = false;\n this.trigger('hidden', this);\n }\n /**\n * show popup\n */\n ;\n\n _proto.show = function show() {\n css_default()(this.el, {\n display: 'block'\n });\n this._isShow = true;\n this.trigger('shown', this);\n }\n /**\n * whether this popup is visible\n * @returns {boolean} - true: shown, false: hidden\n */\n ;\n\n _proto.isShow = function isShow() {\n return this._isShow;\n }\n /**\n * remove popup content\n */\n ;\n\n _proto.remove = function remove() {\n var _this3 = this;\n\n var _this$options2 = this.options,\n openerCssQuery = _this$options2.openerCssQuery,\n closerCssQuery = _this$options2.closerCssQuery;\n var _document2 = document,\n body = _document2.body;\n this.trigger('remove', this);\n this.off(\"click .\" + CLASS_PREFIX + \"close-button\", this._onClickCloseButton);\n\n if (openerCssQuery) {\n dom[\"a\" /* default */].findAll(body, openerCssQuery).forEach(function (opener) {\n off_default()(opener, 'click', _this3._clickEventMap[\"click.\" + _this3._id]);\n delete _this3._clickEventMap[\"click.\" + _this3._id];\n });\n }\n\n if (closerCssQuery) {\n dom[\"a\" /* default */].findAll(body, closerCssQuery).forEach(function (closer) {\n off_default()(closer, 'click', _this3._clickEventMap[\"click.\" + _this3._id]);\n delete _this3._clickEventMap[\"click.\" + _this3._id];\n });\n }\n\n dom[\"a\" /* default */].remove(this.el);\n this.el = null;\n }\n /**\n * make popup size fit to window\n * @param {boolean} fit - true to make popup fit to window\n * @protected\n * @ignore\n */\n ;\n\n _proto.setFitToWindow = function setFitToWindow(fit) {\n dom[\"a\" /* default */].toggleClass(this.el, CLASS_FIT_WINDOW, fit);\n }\n /**\n * make popup size fit to window\n * @returns {boolean} - true for fit to window\n * @protected\n * @ignore\n */\n ;\n\n _proto.isFitToWindow = function isFitToWindow() {\n return hasClass_default()(this.el, CLASS_FIT_WINDOW);\n }\n /**\n * toggle size fit to window\n * @returns {boolean} - true for fit to window\n * @protected\n * @ignore\n */\n ;\n\n _proto.toggleFitToWindow = function toggleFitToWindow() {\n var fitToWindow = !this.isFitToWindow();\n this.setFitToWindow(fitToWindow);\n return fitToWindow;\n };\n\n return LayerPopup;\n}(uicontroller);\n\n/* harmony default export */ var layerpopup = (layerpopup_LayerPopup);\n// CONCATENATED MODULE: ./src/js/ui/popupDropdownToolbar.js\nfunction popupDropdownToolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction popupDropdownToolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview implements DefaultToolbar\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n/**\n * Class PopupDropdownToolbar\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\nvar popupDropdownToolbar_PopupDropdownToolbar = /*#__PURE__*/function (_LayerPopup) {\n popupDropdownToolbar_inheritsLoose(PopupDropdownToolbar, _LayerPopup);\n\n /**\n * open event string\n * @type {string}\n */\n function PopupDropdownToolbar(options) {\n options = extend_default()({\n header: false,\n className: 'te-dropdown-toolbar'\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * get toolbar instance it contains\n * @returns {Toolbar} - toolbar instance\n */\n\n\n var _proto = PopupDropdownToolbar.prototype;\n\n _proto.getToolbar = function getToolbar() {\n return this._toolbar;\n }\n /**\n * get toolbar items\n * @returns {ToolbarItem[]} - toolbar items\n */\n ;\n\n _proto.getItems = function getItems() {\n return this.getToolbar().getItems();\n }\n /**\n * get toolbar item at given index\n * @param {number} index - item index\n * @returns {ToolbarItem} - toolbar item at the index\n */\n ;\n\n _proto.getItem = function getItem(index) {\n return this.getToolbar().getItem(index);\n }\n /**\n * set toolbar items\n * @param {ToolbarItem[]} items - toolbar items\n */\n ;\n\n _proto.setItems = function setItems(items) {\n this.getToolbar().setItems(items);\n }\n /**\n * add toolbar item\n * @param {ToolbarItem|string|object} item - toolbar item\n */\n ;\n\n _proto.addItem = function addItem(item) {\n this.getToolbar().addItem(item);\n }\n /**\n * insert toolbar item\n * @param {number} index - index at given item inserted\n * @param {ToolbarItem|string|object} item - toolbar item\n */\n ;\n\n _proto.insertItem = function insertItem(index, item) {\n this.getToolbar().insertItem(index, item);\n }\n /**\n * get index of given item\n * @param {ToolbarItem} item - toolbar item\n * @returns {number} - index of given toolbar item\n */\n ;\n\n _proto.indexOfItem = function indexOfItem(item) {\n return this.getToolbar().indexOfItem(item);\n }\n /**\n * remove an item\n * @param {number} index - item index to remove\n * @param {boolean} destroy - destroy item or not\n * @returns {ToolbarItem} - removed item\n */\n ;\n\n _proto.removeItem = function removeItem(index, destroy) {\n return this.getToolbar().removeItem(index, destroy);\n }\n /**\n * remove all toolbar items\n */\n ;\n\n _proto.removeAllItems = function removeAllItems() {\n this.getToolbar().removeAllItems();\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n ;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n var button = options.button,\n eventManager = options.eventManager;\n this._button = button;\n this._eventManager = eventManager;\n this._toolbar = new ui_toolbar(eventManager);\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM() {\n _LayerPopup.prototype._initDOM.call(this);\n\n this.setContent(this._toolbar.el);\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this._eventManager.listen('focus', function () {\n return _this.hide();\n });\n\n this._eventManager.listen('closeAllPopup', function () {\n return _this.hide();\n });\n\n this._eventManager.listen(PopupDropdownToolbar.OPEN_EVENT, function () {\n var isShown = _this.isShow();\n\n _this._eventManager.emit('closeAllPopup');\n\n if (!isShown) {\n _this.show();\n } // to give toolbar element enough width before the calculation\n\n\n css_default()(_this.el, {\n left: '-1000px'\n });\n var button = _this._button;\n var buttonOuterHeightWithMargin = dom[\"a\" /* default */].getOuterHeight(button, true);\n var buttonMarginBottom = (buttonOuterHeightWithMargin - dom[\"a\" /* default */].getOuterHeight(button)) / 2;\n var top = button.offsetTop + buttonOuterHeightWithMargin - buttonMarginBottom;\n var left = button.offsetLeft + dom[\"a\" /* default */].getOuterWidth(button, true) - dom[\"a\" /* default */].getOuterWidth(_this.el, true);\n css_default()(_this.el, {\n top: top + \"px\",\n left: left + \"px\"\n });\n });\n };\n\n return PopupDropdownToolbar;\n}(layerpopup);\n\npopupDropdownToolbar_defineProperty(popupDropdownToolbar_PopupDropdownToolbar, \"OPEN_EVENT\", 'openDropdownToolbar');\n\n/* harmony default export */ var popupDropdownToolbar = (popupDropdownToolbar_PopupDropdownToolbar);\n// CONCATENATED MODULE: ./src/js/ui/defaultToolbar.js\nfunction defaultToolbar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction defaultToolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction defaultToolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview implements DefaultToolbar\n * @author NHN FE Development Lab \n */\n\n\n\n\n\nvar MORE_BUTTON_NAME = 'more';\n/**\n * Class DefaultToolbar\n */\n\nvar defaultToolbar_DefaultToolbar = /*#__PURE__*/function (_Toolbar) {\n defaultToolbar_inheritsLoose(DefaultToolbar, _Toolbar);\n\n /**\n * more button\n * @type {ToolbarButton}\n * @private\n */\n\n /**\n * popup dropdown toolbar\n * @type {PopupDropdownToolbar}\n * @private\n */\n\n /**\n * resize observer\n * @type {ResizeObserver}\n * @private\n */\n function DefaultToolbar(eventManager, options) {\n var _this;\n\n _this = _Toolbar.call(this, eventManager, options) || this;\n\n defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), \"_moreButton\", void 0);\n\n defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), \"_popupDropdownToolbar\", void 0);\n\n defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), \"_observer\", void 0);\n\n _this._init(eventManager);\n\n _this._bindWidthChangedEvent();\n\n return _this;\n }\n /**\n * insert toolbar item\n * @param {number} index - index at given item inserted\n * @param {ToolbarItem|string|object} item - toolbar item\n * @override\n */\n\n\n var _proto = DefaultToolbar.prototype;\n\n _proto.insertItem = function insertItem(index, item) {\n _Toolbar.prototype.insertItem.call(this, index, item);\n\n this._arrangeMoreButton();\n };\n\n _proto._init = function _init(eventManager) {\n var moreButton = toolbarItemFactory.create('button', {\n name: MORE_BUTTON_NAME,\n className: 'tui-more',\n tooltip: i18n.get('More'),\n event: popupDropdownToolbar.OPEN_EVENT\n });\n this._moreButton = moreButton;\n this._popupDropdownToolbar = new popupDropdownToolbar({\n eventManager: eventManager,\n target: this.el,\n button: moreButton.el\n });\n this.addItem(moreButton);\n };\n\n _proto._bindWidthChangedEvent = function _bindWidthChangedEvent() {\n var _this2 = this;\n\n this._observer = new ResizeObserver_es[\"a\" /* default */](function () {\n _this2._popupDropdownToolbar.hide();\n\n _this2._balanceButtons();\n });\n\n this._observer.observe(this.el);\n };\n\n _proto._balanceButtons = function _balanceButtons() {\n var _this3 = this;\n\n var dropDownToolbarItems = this._popupDropdownToolbar.getItems();\n\n dropDownToolbarItems.forEach(function (item) {\n _this3._popupDropdownToolbar.removeItem(item, false);\n\n var itemLength = _this3.getItems().length;\n\n _Toolbar.prototype.insertItem.call(_this3, itemLength, item);\n });\n this.removeItem(this._moreButton, false);\n\n _Toolbar.prototype.insertItem.call(this, 0, this._moreButton);\n\n var defaultToolbarItems = this.getItems();\n var overflowItems = defaultToolbarItems.filter(function (item) {\n return item.el.offsetTop > _this3.el.clientHeight;\n });\n overflowItems.forEach(function (item) {\n _this3.removeItem(item, false);\n\n _this3._popupDropdownToolbar.addItem(item);\n });\n\n this._arrangeMoreButton();\n };\n\n _proto._arrangeMoreButton = function _arrangeMoreButton() {\n if (!this._popupDropdownToolbar) {\n return;\n }\n\n this.removeItem(this._moreButton, false);\n var hasOverflow = this._popupDropdownToolbar.getItems().length > 0;\n var itemLength = this.getItems().length;\n\n if (hasOverflow) {\n _Toolbar.prototype.insertItem.call(this, itemLength, this._moreButton);\n }\n }\n /**\n * destroy\n * @override\n */\n ;\n\n _proto.destroy = function destroy() {\n if (this._observer) {\n this._observer.disconnect();\n\n this._observer = null;\n }\n };\n\n return DefaultToolbar;\n}(ui_toolbar);\n\n/* harmony default export */ var defaultToolbar = (defaultToolbar_DefaultToolbar);\n// CONCATENATED MODULE: ./src/js/ui/tab.js\nfunction tab_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements tab button ui\n * @author NHN FE Development Lab \n */\n\n\n\n\nvar CLASS_TAB_ACTIVE = 'te-tab-active';\n/**\n * Class Tab\n * @param {object} options - options\n * @param {string} [options.initName] - name of the default activated button\n * @param {string[]} options.items - button names to be created\n * @param {DOMElement[]} options.sections - dom elements for tab\n * @param {function} [options.onItemClick] - when button is clicked pass button name to function\n * @ignore\n */\n\nvar tab_Tab = /*#__PURE__*/function (_UIController) {\n tab_inheritsLoose(Tab, _UIController);\n\n function Tab(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _UIController.call(this, {\n tagName: 'div',\n className: 'te-tab'\n }) || this;\n _this.sections = options.sections;\n _this._activeButton = null;\n\n _this._render(options);\n\n _this._initEvent(options);\n\n return _this;\n }\n\n var _proto = Tab.prototype;\n\n _proto._initEvent = function _initEvent(options) {\n var onItemClick = options.onItemClick;\n\n if (onItemClick) {\n this.on('itemClick', onItemClick);\n }\n\n this.on('click button', this._onTabButton.bind(this));\n };\n\n _proto._render = function _render(options) {\n var items = options.items,\n initName = options.initName;\n var tabButtons = [];\n\n for (var i = 0, len = items.length; i < len; i += 1) {\n tabButtons.push(\"\");\n }\n\n this.el.innerHTML = tabButtons.join('');\n this.activate(initName);\n };\n\n _proto._findButtonContained = function _findButtonContained(element, selector, text) {\n return dom[\"a\" /* default */].findAll(element, selector).filter(function (node) {\n return new RegExp(text).test(node.textContent);\n });\n }\n /**\n * Activate section & button\n * @param {string} name button name to activate\n */\n ;\n\n _proto.activate = function activate(name) {\n var _this$_findButtonCont = this._findButtonContained(this.el, 'button', name),\n button = _this$_findButtonCont[0];\n\n this._activateTabByButton(button);\n };\n\n _proto._onTabButton = function _onTabButton(ev) {\n var button = ev.target;\n\n this._activateTabByButton(button);\n\n this.trigger('itemClick', button.textContent);\n };\n\n _proto._activateTabByButton = function _activateTabByButton(button) {\n if (this._isActivatedButton(button)) {\n return;\n }\n\n this._updateClassByButton(button);\n };\n\n _proto._updateClassByButton = function _updateClassByButton(activeButton) {\n // deactivate previously activated button\n if (this._activeButton) {\n var sectionIndex = this._activeButton.getAttribute('data-index');\n\n removeClass_default()(this._activeButton, CLASS_TAB_ACTIVE);\n\n if (this.sections) {\n removeClass_default()(this.sections[sectionIndex], CLASS_TAB_ACTIVE);\n }\n } // activate new button\n\n\n addClass_default()(activeButton, CLASS_TAB_ACTIVE);\n this._activeButton = activeButton;\n var index = activeButton.getAttribute('data-index');\n\n if (this.sections) {\n addClass_default()(this.sections[index], CLASS_TAB_ACTIVE);\n }\n };\n\n _proto._isActivatedButton = function _isActivatedButton(button) {\n return this._activeButton && this._activeButton.textContent === button.textContent;\n };\n\n return Tab;\n}(uicontroller);\n\n/* harmony default export */ var tab = (tab_Tab);\n// CONCATENATED MODULE: ./src/js/ui/modeSwitch.js\nfunction modeSwitch_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction modeSwitch_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction modeSwitch_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview Implements ui mode switch\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\nvar MARKDOWN = 'markdown';\nvar WYSIWYG = 'wysiwyg';\n/**\n * Class ModeSwitch\n * UI Control for switch between Markdown and WYSIWYG\n * @param {HTMLElement} rootElement - root element\n * @param {string} initialType - initial type of editor\n */\n\nvar modeSwitch_ModeSwitch = /*#__PURE__*/function (_UIController) {\n modeSwitch_inheritsLoose(ModeSwitch, _UIController);\n\n /**\n * mode switch type\n * @property {string} MARKDOWN - Markdown\n * @property {string} WYSIWYG - WYSIWYG\n * @static\n * @ignore\n */\n\n /**\n * mode switch buttons\n * @type {Object}\n * @private\n */\n\n /**\n * current mode\n * @type {String}\n * @private\n */\n\n /**\n * root element\n * @type {HTMLElement}\n * @private\n */\n function ModeSwitch(rootElement, initialType, eventManager) {\n var _this;\n\n _this = _UIController.call(this, {\n tagName: 'div',\n className: 'te-mode-switch'\n }) || this;\n\n modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), \"_buttons\", {});\n\n modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), \"_type\", void 0);\n\n modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), \"_rootElement\", void 0);\n\n _this._eventManager = eventManager;\n\n _this._render(rootElement);\n\n _this._switchType(isExisty_default()(initialType) ? initialType : MARKDOWN);\n\n _this._initEvent();\n\n return _this;\n }\n /**\n * is the switch tab bar shown\n * @returns {Boolean} - showing status\n */\n\n\n var _proto = ModeSwitch.prototype;\n\n _proto.isShown = function isShown() {\n return this._rootElement.style.display === 'block';\n }\n /**\n * show switch tab bar\n */\n ;\n\n _proto.show = function show() {\n css_default()(this._rootElement, {\n display: 'block'\n });\n }\n /**\n * hide switch tab bar\n */\n ;\n\n _proto.hide = function hide() {\n css_default()(this._rootElement, {\n display: 'none'\n });\n };\n\n _proto._render = function _render(rootElement) {\n this._buttons.markdown = dom[\"a\" /* default */].createElementWith(\"\");\n this._buttons.wysiwyg = dom[\"a\" /* default */].createElementWith(\"\");\n this.el.appendChild(this._buttons.markdown);\n this.el.appendChild(this._buttons.wysiwyg);\n\n if (rootElement) {\n rootElement.appendChild(this.el);\n this._rootElement = rootElement;\n }\n\n this.on('click .markdown', this._changeMarkdown.bind(this));\n this.on('click .wysiwyg', this._changeWysiwyg.bind(this));\n this.show();\n };\n\n _proto._changeMarkdown = function _changeMarkdown() {\n this._switchType(MARKDOWN);\n };\n\n _proto._changeWysiwyg = function _changeWysiwyg() {\n this._switchType(WYSIWYG);\n };\n\n _proto._setActiveButton = function _setActiveButton(type) {\n removeClass_default()(this._buttons.markdown, 'active');\n removeClass_default()(this._buttons.wysiwyg, 'active');\n addClass_default()(this._buttons[\"\" + type], 'active');\n };\n\n _proto._switchType = function _switchType(type) {\n if (this._type === type) {\n return;\n }\n\n this._type = type;\n\n this._setActiveButton(type);\n\n this.trigger('modeSwitched', this._type);\n };\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this._eventManager.listen('changeMode', function (type) {\n if (_this2._type !== type) {\n _this2._type = type;\n\n _this2._setActiveButton(type);\n }\n });\n };\n\n return ModeSwitch;\n}(uicontroller);\n\nmodeSwitch_defineProperty(modeSwitch_ModeSwitch, \"TYPE\", {\n MARKDOWN: MARKDOWN,\n WYSIWYG: WYSIWYG\n});\n\n/* harmony default export */ var ui_modeSwitch = (modeSwitch_ModeSwitch);\n// CONCATENATED MODULE: ./src/js/ui/popupAddLink.js\nfunction popupAddLink_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements PopupAddLink\n * @author NHN FE Development Lab \n */\n\n\n\n\n\nvar URL_REGEX = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})(\\/([^\\s]*))?$/;\n/**\n * Class PopupAddLink\n * It implements a link Add Popup\n * @param {LayerPopupOption} options - layer popup options\n * @ignore\n */\n\nvar popupAddLink_PopupAddLink = /*#__PURE__*/function (_LayerPopup) {\n popupAddLink_inheritsLoose(PopupAddLink, _LayerPopup);\n\n function PopupAddLink(options) {\n var POPUP_CONTENT = \"\\n \\n \\n \\n \\n
    \\n \\n \\n
    \\n \";\n options = extend_default()({\n header: true,\n title: i18n.get('Insert link'),\n className: 'te-popup-add-link tui-editor-popup',\n content: POPUP_CONTENT\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupAddLink.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this._editor = options.editor;\n this._eventManager = options.editor.eventManager;\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM() {\n _LayerPopup.prototype._initDOM.call(this);\n\n var el = this.el;\n this._inputText = el.querySelector('.te-link-text-input');\n this._inputURL = el.querySelector('.te-url-input');\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this.on('click .te-close-button', function () {\n return _this.hide();\n });\n this.on('click .te-ok-button', function () {\n return _this._addLink();\n });\n this.on('shown', function () {\n var inputText = _this._inputText;\n var inputURL = _this._inputURL;\n\n var selectedText = _this._editor.getSelectedText().trim();\n\n inputText.value = selectedText;\n\n if (URL_REGEX.exec(selectedText)) {\n inputURL.value = selectedText;\n }\n\n inputURL.focus();\n });\n this.on('hidden', function () {\n _this._resetInputs();\n });\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n var eventManager = this._eventManager;\n eventManager.listen('focus', function () {\n return _this2.hide();\n });\n eventManager.listen('closeAllPopup', function () {\n return _this2.hide();\n });\n eventManager.listen('openPopupAddLink', function () {\n eventManager.emit('closeAllPopup');\n\n _this2.show();\n });\n };\n\n _proto._addLink = function _addLink() {\n var _this$_getValue = this._getValue(),\n url = _this$_getValue.url,\n linkText = _this$_getValue.linkText;\n\n this._clearValidationStyle();\n\n if (linkText.length < 1) {\n addClass_default()(this._inputText, 'wrong');\n return;\n }\n\n if (url.length < 1) {\n addClass_default()(this._inputURL, 'wrong');\n return;\n }\n\n this._eventManager.emit('command', 'AddLink', {\n linkText: linkText,\n url: url\n });\n\n this.hide();\n };\n\n _proto._getValue = function _getValue() {\n var url = this._inputURL.value;\n var linkText = this._inputText.value;\n return {\n url: url,\n linkText: linkText\n };\n };\n\n _proto._clearValidationStyle = function _clearValidationStyle() {\n removeClass_default()(this._inputURL, 'wrong');\n removeClass_default()(this._inputText, 'wrong');\n };\n\n _proto._resetInputs = function _resetInputs() {\n this._inputText.value = '';\n this._inputURL.value = '';\n\n this._clearValidationStyle();\n };\n\n return PopupAddLink;\n}(layerpopup);\n\n/* harmony default export */ var popupAddLink = (popupAddLink_PopupAddLink);\n// CONCATENATED MODULE: ./src/js/ui/popupAddImage.js\nfunction popupAddImage_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements PopupAddImage\n * @author NHN FE Development Lab \n */\n\n\n\n\n\nvar CLASS_IMAGE_URL_INPUT = 'te-image-url-input';\nvar CLASS_IMAGE_FILE_INPUT = 'te-image-file-input';\nvar CLASS_ALT_TEXT_INPUT = 'te-alt-text-input';\nvar CLASS_OK_BUTTON = 'te-ok-button';\nvar CLASS_CLOSE_BUTTON = 'te-close-button';\nvar CLASS_FILE_TYPE = 'te-file-type';\nvar CLASS_URL_TYPE = 'te-url-type';\nvar CLASS_TAB_SECTION = 'te-tab-section';\nvar TYPE_UI = 'ui';\n/**\n * Class PopupAddImage\n * It implements a Image Add Popup\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\nvar popupAddImage_PopupAddImage = /*#__PURE__*/function (_LayerPopup) {\n popupAddImage_inheritsLoose(PopupAddImage, _LayerPopup);\n\n function PopupAddImage(options) {\n var POPUP_CONTENT = \"\\n
    \\n
    \\n \\n \\n
    \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n \";\n options = extend_default()({\n header: true,\n title: i18n.get('Insert image'),\n className: 'te-popup-add-image tui-editor-popup',\n content: POPUP_CONTENT\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupAddImage.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this.eventManager = options.eventManager;\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM() {\n _LayerPopup.prototype._initDOM.call(this);\n\n var popup = this.el;\n this._imageUrlInput = popup.querySelector(\".\" + CLASS_IMAGE_URL_INPUT);\n this._imageFileInput = popup.querySelector(\".\" + CLASS_IMAGE_FILE_INPUT);\n this._altTextInput = popup.querySelector(\".\" + CLASS_ALT_TEXT_INPUT);\n var fileTypeSection = popup.querySelector(\".\" + CLASS_FILE_TYPE);\n var urlTypeSection = popup.querySelector(\".\" + CLASS_URL_TYPE);\n var tabSection = this.body.querySelector(\".\" + CLASS_TAB_SECTION);\n this.tab = new tab({\n initName: i18n.get('File'),\n items: [i18n.get('File'), i18n.get('URL')],\n sections: [fileTypeSection, urlTypeSection]\n });\n tabSection.appendChild(this.tab.el);\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this.on('shown', function () {\n return _this._imageUrlInput.focus();\n });\n this.on('hidden', function () {\n return _this._resetInputs();\n });\n this.on(\"change .\" + CLASS_IMAGE_FILE_INPUT, function () {\n var filename = _this._imageFileInput.value.split('\\\\').pop();\n\n _this._altTextInput.value = filename;\n });\n this.on(\"click .\" + CLASS_CLOSE_BUTTON, function () {\n return _this.hide();\n });\n this.on(\"click .\" + CLASS_OK_BUTTON, function () {\n var imageUrl = _this._imageUrlInput.value;\n var altText = _this._altTextInput.value;\n\n if (imageUrl) {\n _this._applyImage(imageUrl, altText);\n } else {\n var files = _this._imageFileInput.files;\n\n if (files.length) {\n var imageFile = files.item(0);\n\n var hookCallback = function hookCallback(url, text) {\n return _this._applyImage(url, text || altText);\n };\n\n _this.eventManager.emit('addImageBlobHook', imageFile, hookCallback, TYPE_UI);\n }\n }\n\n _this.hide();\n });\n this.tab.on('itemClick', function () {\n return _this._resetInputs();\n });\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this.eventManager.listen('focus', function () {\n return _this2.hide();\n });\n this.eventManager.listen('closeAllPopup', function () {\n return _this2.hide();\n });\n this.eventManager.listen('openPopupAddImage', function () {\n _this2.eventManager.emit('closeAllPopup');\n\n _this2.show();\n });\n };\n\n _proto._applyImage = function _applyImage(imageUrl, altText) {\n this.eventManager.emit('command', 'AddImage', {\n imageUrl: imageUrl,\n altText: altText || 'image'\n });\n this.hide();\n };\n\n _proto._resetInputs = function _resetInputs() {\n dom[\"a\" /* default */].findAll(this.el, 'input').forEach(function (input) {\n input.value = '';\n });\n }\n /**\n * Remove popup\n * @override\n */\n ;\n\n _proto.remove = function remove() {\n this.tab.remove();\n\n _LayerPopup.prototype.remove.call(this);\n };\n\n return PopupAddImage;\n}(layerpopup);\n\n/* harmony default export */ var popupAddImage = (popupAddImage_PopupAddImage);\n// CONCATENATED MODULE: ./src/js/ui/popupTableUtils.js\nfunction popupTableUtils_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements PopupTableUtils\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar REMOVE_ROW_MENU_CLASS_NAME = 'te-table-remove-row';\nvar DISABLED_MENU_CLASS_NAME = 'te-context-menu-disabled';\n/**\n * PopupTableUtils\n * It implements table utils popup\n * @param {LayerPopupOption} options - layer popup options\n */\n\nvar popupTableUtils_PopupTableUtils = /*#__PURE__*/function (_LayerPopup) {\n popupTableUtils_inheritsLoose(PopupTableUtils, _LayerPopup);\n\n function PopupTableUtils(options) {\n var POPUP_CONTENT = \"\\n \\n \\n \\n \\n
    \\n \\n \\n \\n
    \\n \\n \";\n options = extend_default()({\n header: false,\n className: 'te-popup-table-utils',\n content: POPUP_CONTENT\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupTableUtils.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this.eventManager = options.eventManager;\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this.on('click .te-table-add-row', function () {\n return _this.eventManager.emit('command', 'AddRow');\n });\n this.on('click .te-table-add-col', function () {\n return _this.eventManager.emit('command', 'AddCol');\n });\n this.on('click .te-table-col-align-left', function () {\n return _this.eventManager.emit('command', 'AlignCol', 'left');\n });\n this.on('click .te-table-col-align-center', function () {\n return _this.eventManager.emit('command', 'AlignCol', 'center');\n });\n this.on('click .te-table-col-align-right', function () {\n return _this.eventManager.emit('command', 'AlignCol', 'right');\n });\n this.on('click .te-table-remove-col', function () {\n return _this.eventManager.emit('command', 'RemoveCol');\n });\n this.on('click .te-table-remove', function () {\n return _this.eventManager.emit('command', 'RemoveTable');\n });\n\n this._bindClickEventOnRemoveRowMenu();\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this.eventManager.listen('focus', function () {\n return _this2.hide();\n });\n this.eventManager.listen('mousedown', function () {\n return _this2.hide();\n });\n this.eventManager.listen('closeAllPopup', function () {\n return _this2.hide();\n });\n this.eventManager.listen('openPopupTableUtils', function (ev) {\n var _this2$el$parentNode$ = _this2.el.parentNode.getBoundingClientRect(),\n left = _this2$el$parentNode$.left,\n top = _this2$el$parentNode$.top;\n\n _this2._disableRemoveRowMenu(ev.target);\n\n css_default()(_this2.el, {\n position: 'absolute',\n top: ev.clientY - top + 5 + \"px\",\n // beside mouse pointer\n left: ev.clientX - left + 10 + \"px\"\n });\n\n _this2.eventManager.emit('closeAllPopup');\n\n _this2.show();\n });\n };\n\n _proto._bindClickEventOnRemoveRowMenu = function _bindClickEventOnRemoveRowMenu() {\n var _this3 = this;\n\n this.on(\"click .\" + REMOVE_ROW_MENU_CLASS_NAME, function (ev) {\n var target = ev.target;\n\n if (hasClass_default()(target, DISABLED_MENU_CLASS_NAME)) {\n ev.preventDefault();\n } else {\n _this3.eventManager.emit('command', 'RemoveRow');\n }\n });\n };\n\n _proto._disableRemoveRowMenu = function _disableRemoveRowMenu(target) {\n var menu = this.el.querySelector(\".\" + REMOVE_ROW_MENU_CLASS_NAME);\n dom[\"a\" /* default */].toggleClass(menu, DISABLED_MENU_CLASS_NAME, target.nodeName === 'TH');\n };\n\n return PopupTableUtils;\n}(layerpopup);\n\n/* harmony default export */ var popupTableUtils = (popupTableUtils_PopupTableUtils);\n// CONCATENATED MODULE: ./src/js/ui/popupAddTable.js\nfunction popupAddTable_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements PopupAddTable\n * @author NHN FE Development Lab \n */\n\n\n\n\nvar CLASS_TABLE_SELECTION = 'te-table-selection';\nvar CLASS_TABLE_HEADER = 'te-table-header';\nvar CLASS_TABLE_BODY = 'te-table-body';\nvar CLASS_SELECTION_AREA = 'te-selection-area';\nvar CLASS_DESCRIPTION = 'te-description';\nvar popupAddTable_POPUP_CONTENT = \"\\n
    \\n
    \\n
    \\n
    \\n
    \\n

    \\n\";\nvar CELL_WIDTH = 25;\nvar CELL_HEIGHT = 17;\nvar MIN_ROW_INDEX = 7;\nvar MAX_ROW_INDEX = 14;\nvar MIN_COL_INDEX = 5;\nvar MAX_COL_INDEX = 9;\nvar MIN_ROW_SELECTION_INDEX = 1;\nvar MIN_COL_SELECTION_INDEX = 1;\nvar HEADER_ROW_COUNT = 1;\nvar LAST_BORDER = 1;\n/**\n * Class PopupAddTable\n * It implements Popup to add a table\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\nvar popupAddTable_PopupAddTable = /*#__PURE__*/function (_LayerPopup) {\n popupAddTable_inheritsLoose(PopupAddTable, _LayerPopup);\n\n function PopupAddTable(options) {\n options = extend_default()({\n header: false,\n className: 'te-popup-add-table',\n content: popupAddTable_POPUP_CONTENT\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupAddTable.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this._selectedBound = {};\n this._tableBound = {};\n this._eventManager = options.eventManager;\n this._button = options.button;\n this._eventHandlers = {\n onMousedown: this._selectTableRange.bind(this),\n onClick: this._fireCommandEvent.bind(this)\n };\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM() {\n _LayerPopup.prototype._initDOM.call(this);\n\n this._cacheElements();\n\n this._setTableSizeByBound(MIN_COL_INDEX, MIN_ROW_INDEX);\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent(options) {\n _LayerPopup.prototype._initDOMEvent.call(this, options);\n\n this.on(\"mousemove .\" + CLASS_TABLE_SELECTION, this._eventHandlers.onMousedown);\n this.on(\"click .\" + CLASS_TABLE_SELECTION, this._eventHandlers.onClick);\n };\n\n _proto._selectTableRange = function _selectTableRange(ev) {\n var x = ev.pageX - this._selectionOffset.left;\n var y = ev.pageY - this._selectionOffset.top;\n\n var bound = this._getSelectionBoundByOffset(x, y);\n\n this._resizeTableBySelectionIfNeed(bound.col, bound.row);\n\n this._setSelectionAreaByBound(bound.col, bound.row);\n\n this._setDisplayText(bound.col, bound.row);\n\n this._setSelectedBound(bound.col, bound.row);\n };\n\n _proto._fireCommandEvent = function _fireCommandEvent() {\n var tableSize = this._getSelectedTableSize();\n\n this._eventManager.emit('command', 'Table', tableSize.col, tableSize.row);\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this._eventManager.listen('focus', function () {\n return _this.hide();\n });\n\n this._eventManager.listen('closeAllPopup', function () {\n return _this.hide();\n });\n\n this._eventManager.listen('openPopupAddTable', function () {\n var button = _this._button;\n var offsetTop = button.offsetTop,\n offsetLeft = button.offsetLeft;\n css_default()(_this.el, {\n top: offsetTop + dom[\"a\" /* default */].getOuterHeight(button) + \"px\",\n left: offsetLeft + \"px\"\n });\n\n _this._eventManager.emit('closeAllPopup');\n\n _this.show();\n\n var _this$el$querySelecto = _this.el.querySelector(\".\" + CLASS_TABLE_SELECTION).getBoundingClientRect(),\n left = _this$el$querySelecto.left,\n top = _this$el$querySelecto.top;\n\n _this._selectionOffset = {\n left: left + window.pageXOffset,\n top: top + window.pageYOffset\n };\n });\n }\n /**\n * Cache elements for use\n * @private\n */\n ;\n\n _proto._cacheElements = function _cacheElements() {\n this.header = this.el.querySelector(\".\" + CLASS_TABLE_HEADER);\n this.body = this.el.querySelector(\".\" + CLASS_TABLE_BODY);\n this.selection = this.el.querySelector(\".\" + CLASS_SELECTION_AREA);\n this.desc = this.el.querySelector(\".\" + CLASS_DESCRIPTION);\n }\n /**\n * Resize table if need\n * @param {number} col column index\n * @param {number} row row index\n * @private\n */\n ;\n\n _proto._resizeTableBySelectionIfNeed = function _resizeTableBySelectionIfNeed(col, row) {\n var resizedBound = this._getResizedTableBound(col, row);\n\n if (resizedBound) {\n this._setTableSizeByBound(resizedBound.col, resizedBound.row);\n }\n }\n /**\n * Get resized table bound if Need\n * @param {number} col column index\n * @param {number} row row index\n * @returns {object} bound\n * @private\n */\n ;\n\n _proto._getResizedTableBound = function _getResizedTableBound(col, row) {\n var resizedCol, resizedRow, resizedBound;\n\n if (col >= MIN_COL_INDEX && col < MAX_COL_INDEX) {\n resizedCol = col + 1;\n } else if (col < MIN_COL_INDEX) {\n resizedCol = MIN_COL_INDEX;\n }\n\n if (row >= MIN_ROW_INDEX && row < MAX_ROW_INDEX) {\n resizedRow = row + 1;\n } else if (row < MIN_ROW_INDEX) {\n resizedRow = MIN_ROW_INDEX;\n }\n\n if (this._isNeedResizeTable(resizedCol, resizedRow)) {\n resizedBound = {\n row: resizedRow || this._tableBound.row,\n col: resizedCol || this._tableBound.col\n };\n }\n\n return resizedBound;\n }\n /**\n * check if need resize table\n * @param {number} col column index\n * @param {number} row row index\n * @returns {boolean} result\n * @private\n */\n ;\n\n _proto._isNeedResizeTable = function _isNeedResizeTable(col, row) {\n return col && col !== this._tableBound.col || row && row !== this._tableBound.row;\n }\n /**\n * Get bound by offset\n * @param {number} x offset\n * @param {number} y offset\n * @returns {object} bound\n * @private\n */\n ;\n\n _proto._getBoundByOffset = function _getBoundByOffset(x, y) {\n var row = parseInt(y / CELL_HEIGHT, 10);\n var col = parseInt(x / CELL_WIDTH, 10);\n return {\n row: row,\n col: col\n };\n }\n /**\n * Get offset by bound\n * @param {number} col column index\n * @param {number} row row index\n * @returns {object} offset\n * @private\n */\n ;\n\n _proto._getOffsetByBound = function _getOffsetByBound(col, row) {\n var x = col * CELL_WIDTH + CELL_WIDTH,\n y = row * CELL_HEIGHT + CELL_HEIGHT;\n return {\n x: x,\n y: y\n };\n }\n /**\n * Set table size with bound\n * @param {number} col column index\n * @param {number} row row index\n * @private\n */\n ;\n\n _proto._setTableSizeByBound = function _setTableSizeByBound(col, row) {\n var boundOffset = this._getOffsetByBound(col, row - HEADER_ROW_COUNT);\n\n this._setTableSize(boundOffset.x, boundOffset.y);\n\n this._tableBound.row = row;\n this._tableBound.col = col;\n }\n /**\n * Get selection bound that process with range by offset\n * @param {number} x offset\n * @param {number} y offset\n * @returns {object} bound\n * @private\n */\n ;\n\n _proto._getSelectionBoundByOffset = function _getSelectionBoundByOffset(x, y) {\n var bound = this._getBoundByOffset(x, y);\n\n if (bound.row < MIN_ROW_SELECTION_INDEX) {\n bound.row = MIN_ROW_SELECTION_INDEX;\n } else if (bound.row > this._tableBound.row) {\n bound.row = this._tableBound.row;\n }\n\n if (bound.col < MIN_COL_SELECTION_INDEX) {\n bound.col = MIN_COL_SELECTION_INDEX;\n } else if (bound.col > this._tableBound.col) {\n bound.col = this._tableBound.col;\n }\n\n return bound;\n }\n /**\n * Set selection area with bound\n * @param {number} col column index\n * @param {number} row row index\n * @private\n */\n ;\n\n _proto._setSelectionAreaByBound = function _setSelectionAreaByBound(col, row) {\n var boundOffset = this._getOffsetByBound(col, row);\n\n this._setSelectionArea(boundOffset.x, boundOffset.y);\n }\n /**\n * Set selected bound\n * @param {number} col column index\n * @param {number} row row index\n * @private\n */\n ;\n\n _proto._setSelectedBound = function _setSelectedBound(col, row) {\n this._selectedBound.col = col;\n this._selectedBound.row = row;\n }\n /**\n * Get selected table size\n * @returns {object} bound\n * @private\n */\n ;\n\n _proto._getSelectedTableSize = function _getSelectedTableSize() {\n return {\n row: this._selectedBound.row + 1,\n col: this._selectedBound.col + 1\n };\n }\n /**\n * Set selected table size text for display\n * @param {number} col column index\n * @param {number} row row index\n * @private\n */\n ;\n\n _proto._setDisplayText = function _setDisplayText(col, row) {\n this.desc.innerHTML = col + 1 + \" x \" + (row + 1);\n }\n /**\n * Set table element size\n * @param {number} x offset\n * @param {number} y offset\n * @private\n */\n ;\n\n _proto._setTableSize = function _setTableSize(x, y) {\n x += LAST_BORDER;\n y += LAST_BORDER;\n css_default()(this.header, {\n height: CELL_HEIGHT + \"px\",\n width: x + \"px\"\n });\n css_default()(this.body, {\n height: y + \"px\",\n width: x + \"px\"\n });\n css_default()(this.el, {\n width: x + 30 + \"px\"\n });\n }\n /**\n * Set selection element size\n * @param {number} x offset\n * @param {number} y offset\n * @private\n */\n ;\n\n _proto._setSelectionArea = function _setSelectionArea(x, y) {\n x += LAST_BORDER;\n y += LAST_BORDER;\n css_default()(this.selection, {\n height: y + \"px\",\n width: x + \"px\"\n });\n };\n\n _proto.remove = function remove() {\n this.off(\"mousemove .\" + CLASS_TABLE_SELECTION, this._eventHandlers.onMousedown);\n this.off(\"click .\" + CLASS_TABLE_SELECTION, this._eventHandlers.onClick);\n\n _LayerPopup.prototype.remove.call(this);\n };\n\n return PopupAddTable;\n}(layerpopup);\n\npopupAddTable_PopupAddTable.CELL_WIDTH = CELL_WIDTH;\npopupAddTable_PopupAddTable.CELL_HEIGHT = CELL_HEIGHT;\npopupAddTable_PopupAddTable.MIN_ROW_SELECTION_INDEX = MIN_ROW_SELECTION_INDEX;\npopupAddTable_PopupAddTable.MIN_COL_SELECTION_INDEX = MIN_COL_SELECTION_INDEX;\n/* harmony default export */ var popupAddTable = (popupAddTable_PopupAddTable);\n// CONCATENATED MODULE: ./src/js/ui/popupAddHeading.js\nfunction popupAddHeading_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements PopupAddHeading\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n/**\n * Class PopupAddHeading\n * It implements Popup to add headings\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\nvar popupAddHeading_PopupAddHeading = /*#__PURE__*/function (_LayerPopup) {\n popupAddHeading_inheritsLoose(PopupAddHeading, _LayerPopup);\n\n function PopupAddHeading(options) {\n var POPUP_CONTENT = \"\\n
      \\n
    • \" + i18n.get('Heading') + \" 1

    • \\n
    • \" + i18n.get('Heading') + \" 2

    • \\n
    • \" + i18n.get('Heading') + \" 3

    • \\n
    • \" + i18n.get('Heading') + \" 4

    • \\n
    • \" + i18n.get('Heading') + \" 5
    • \\n
    • \" + i18n.get('Heading') + \" 6
    • \\n
    • \" + i18n.get('Paragraph') + \"
    • \\n
    \\n \";\n options = extend_default()({\n header: false,\n className: 'te-heading-add',\n content: POPUP_CONTENT\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupAddHeading.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this._eventManager = options.eventManager;\n this._button = options.button;\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this.on('click li', function (ev) {\n var li = dom[\"a\" /* default */].closest(ev.target, 'li');\n\n _this._eventManager.emit('command', li.getAttribute('data-type'), li.getAttribute('data-value'));\n });\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this._eventManager.listen('focus', this.hide.bind(this));\n\n this._eventManager.listen('closeAllPopup', this.hide.bind(this));\n\n this._eventManager.listen('openHeadingSelect', function () {\n var button = _this2._button;\n var offsetTop = button.offsetTop,\n offsetLeft = button.offsetLeft;\n css_default()(_this2.el, {\n top: offsetTop + dom[\"a\" /* default */].getOuterHeight(button) + \"px\",\n left: offsetLeft + \"px\"\n });\n\n _this2._eventManager.emit('closeAllPopup');\n\n _this2.show();\n });\n };\n\n return PopupAddHeading;\n}(layerpopup);\n\n/* harmony default export */ var popupAddHeading = (popupAddHeading_PopupAddHeading);\n// CONCATENATED MODULE: ./src/js/ui/popupCodeBlockLanguages.js\nfunction popupCodeBlockLanguages_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements popup code block languages\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\nvar BUTTON_CLASS_PREFIX = 'te-popup-code-block-lang-';\n\nfunction getButtonsHTML(languages) {\n return languages.map(function (lang) {\n return \"\";\n }).join('');\n}\n/**\n * Class Popup code block languages select list\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\n\nvar popupCodeBlockLanguages_PopupCodeBlockLanguages = /*#__PURE__*/function (_LayerPopup) {\n popupCodeBlockLanguages_inheritsLoose(PopupCodeBlockLanguages, _LayerPopup);\n\n function PopupCodeBlockLanguages(options) {\n var _options = options,\n languages = _options.languages;\n options = extend_default()({\n header: false,\n className: 'te-popup-code-block-languages',\n content: getButtonsHTML(languages)\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupCodeBlockLanguages.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n var _this = this;\n\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this.eventManager = options.eventManager;\n this._onSelectedLanguage = null;\n this._onDismissed = null;\n this._currentButton = null;\n this._buttons = null;\n this._languages = options.languages;\n\n this._btnMousedownHandler = function (event) {\n var language = event.target.getAttribute('data-lang');\n\n if (_this._onSelectedLanguage) {\n _this._onSelectedLanguage(language);\n }\n\n _this.hide();\n };\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM(options) {\n _LayerPopup.prototype._initDOM.call(this, options);\n\n css_default()(this.el, 'zIndex', 10000);\n this._buttons = dom[\"a\" /* default */].findAll(this.el, 'button');\n\n this._activateButtonByIndex(0);\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this._addBtnMouseDownHandler();\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this.eventManager.listen('openPopupCodeBlockLanguages', function (data) {\n _this2.show(data.callback);\n\n css_default()(_this2.el, {\n top: data.offset.top + \"px\"\n });\n css_default()(_this2.el, {\n left: data.offset.left + \"px\"\n });\n\n _this2.setCurrentLanguage(data.language);\n\n return _this2;\n });\n this.eventManager.listen('focus', function () {\n return _this2.hide();\n });\n this.eventManager.listen('mousedown', function () {\n return _this2.hide();\n });\n this.eventManager.listen('closeAllPopup', function () {\n return _this2.hide();\n });\n this.eventManager.listen('closePopupCodeBlockLanguages', function () {\n return _this2.hide();\n });\n this.eventManager.listen('scroll', function () {\n return _this2.hide();\n });\n this.eventManager.listen('setCodeBlockLanguages', function (languages) {\n return _this2._changeLanguageButtons(languages);\n });\n }\n /**\n * activate an item by index\n * @param {number} index - item index\n * @private\n */\n ;\n\n _proto._activateButtonByIndex = function _activateButtonByIndex(index) {\n if (this._currentButton) {\n removeClass_default()(this._currentButton, 'active');\n }\n\n if (this._buttons.length) {\n this._currentButton = this._buttons[index];\n addClass_default()(this._currentButton, 'active');\n\n this._currentButton.scrollIntoView();\n }\n }\n /**\n * move to prev language\n */\n ;\n\n _proto.prev = function prev() {\n var index = inArray_default()(this._currentButton, this._buttons) - 1;\n\n if (index < 0) {\n index = this._buttons.length - 1;\n }\n\n this._activateButtonByIndex(index);\n }\n /**\n * move to next language\n */\n ;\n\n _proto.next = function next() {\n var index = inArray_default()(this._currentButton, this._buttons) + 1;\n\n if (index >= this._buttons.length) {\n index = 0;\n }\n\n this._activateButtonByIndex(index);\n }\n /**\n * current language\n * @returns {string} language\n */\n ;\n\n _proto.getCurrentLanguage = function getCurrentLanguage() {\n var language = this._currentButton.getAttribute('data-lang');\n\n return language;\n }\n /**\n * set current language\n * @param {string} language - current language\n */\n ;\n\n _proto.setCurrentLanguage = function setCurrentLanguage(language) {\n var item = this._buttons.filter(function (button) {\n return matches_default()(button, \".\" + BUTTON_CLASS_PREFIX + language);\n });\n\n if (item.length > 0) {\n var index = inArray_default()(item[0], this._buttons);\n\n this._activateButtonByIndex(index);\n }\n }\n /**\n * show popup\n * @param {object} callback - to be called on language selected & dismissed\n * @override\n */\n ;\n\n _proto.show = function show(callback) {\n this._onSelectedLanguage = callback.selected;\n this._onDismissed = callback.dismissed;\n\n _LayerPopup.prototype.show.call(this);\n }\n /**\n * hide popup\n * @override\n */\n ;\n\n _proto.hide = function hide() {\n if (this._onDismissed) {\n this._onDismissed();\n }\n\n this._onSelectedLanguage = null;\n this._onDismissed = null;\n\n _LayerPopup.prototype.hide.call(this);\n };\n\n _proto._addBtnMouseDownHandler = function _addBtnMouseDownHandler() {\n var _this3 = this;\n\n this._languages.forEach(function (lang) {\n _this3.off(\"mousedown .\" + BUTTON_CLASS_PREFIX + lang, _this3._btnMousedownHandler);\n\n _this3.on(\"mousedown .\" + BUTTON_CLASS_PREFIX + lang, _this3._btnMousedownHandler);\n });\n };\n\n _proto._changeLanguageButtons = function _changeLanguageButtons(languages) {\n this._languages = languages;\n\n if (languages && languages.length) {\n this.content = getButtonsHTML(languages);\n this.setContent(this.content);\n\n this._addBtnMouseDownHandler();\n\n this._buttons = dom[\"a\" /* default */].findAll(this.el, 'button');\n\n this._activateButtonByIndex(0);\n }\n };\n\n return PopupCodeBlockLanguages;\n}(layerpopup);\n\n/* harmony default export */ var popupCodeBlockLanguages = (popupCodeBlockLanguages_PopupCodeBlockLanguages);\n// CONCATENATED MODULE: ./src/js/ui/scrollSyncSplit.js\n/**\n * @fileoverview Implements scroll sync split\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\nvar CLASS_SPLIT_SCROLL = 'tui-split-scroll';\nvar CLASS_SINGLE_CONTENT = 'single-content';\nvar CLASS_SCROLL_SYNC = 'scroll-sync';\nvar CLASS_SCROLL_WRAPPER = 'tui-split-scroll-wrapper';\nvar CLASS_SCROLL_CONTENT = 'tui-split-scroll-content';\nvar CLASS_SPLITTER = 'tui-splitter';\nvar EVENT_REQUIRE_SCROLL_INTO_VIEW = 'requireScrollIntoView';\nvar CLASS_CONTENT_LEFT = 'tui-split-content-left';\nvar CLASS_CONTENT_RIGHT = 'tui-split-content-right';\nvar CLASS_CONTENT = {\n left: CLASS_CONTENT_LEFT,\n right: CLASS_CONTENT_RIGHT\n};\n/**\n * Class ScrollSyncSplit\n * @param {Element} baseElement - an element which attach a splitSyncSplit\n * @param {Element} leftElement - an element to be on left side split view\n * @param {Element} rightElement - an element to be on right side split view\n * @param {object} options - options\n * @param {boolean} [options.showScrollSyncButton=false] - show scroll sync button on top right corner\n * @param {boolean} [options.scrollSync=true] - true for enable scroll sync\n * @param {boolean} [options.splitView=true] - true for split, false for single view\n * @ignore\n */\n\nvar scrollSyncSplit_ScrollSyncSplit = /*#__PURE__*/function () {\n function ScrollSyncSplit(baseElement, leftElement, rightElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = extend_default()({\n showScrollSyncButton: false,\n scrollSync: true,\n splitView: true\n }, options);\n this._baseElement = baseElement;\n this._eventManager = options.eventManager;\n /**\n * left, right side content elements\n * @type {HTMLElement[]}\n * @private\n */\n\n this._contentElements = [];\n\n this._initDom(leftElement, rightElement, options);\n\n this._initDomEvent();\n }\n\n var _proto = ScrollSyncSplit.prototype;\n\n _proto._initDom = function _initDom(leftElement, rightElement, options) {\n var el = document.createElement('div');\n el.className = CLASS_SPLIT_SCROLL;\n this._el = el;\n var scrollWrapper = document.createElement('div');\n scrollWrapper.className = CLASS_SCROLL_WRAPPER;\n this._scrollWrapper = scrollWrapper;\n\n this._setScrollSync(options.scrollSync);\n\n this.setSplitView(options.splitView);\n var contentWrapper = document.createElement('div');\n contentWrapper.className = CLASS_SCROLL_CONTENT;\n this._contentWrapper = contentWrapper;\n var splitter = document.createElement('div');\n splitter.className = CLASS_SPLITTER;\n\n this._baseElement.appendChild(el);\n\n el.appendChild(scrollWrapper);\n scrollWrapper.appendChild(contentWrapper);\n scrollWrapper.appendChild(splitter);\n\n this._setLeft(leftElement);\n\n this._setRight(rightElement);\n };\n\n _proto._initDomEvent = function _initDomEvent() {\n this._contentWrapper.addEventListener('scroll', this.sync.bind(this));\n };\n\n _proto._requireScrollIntoView = function _requireScrollIntoView(element) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n targetTop = _element$getBoundingC.top,\n targetBottom = _element$getBoundingC.bottom;\n\n var wrapperElement;\n\n if (this.isScrollSynced()) {\n wrapperElement = this._contentWrapper;\n } else if (dom[\"a\" /* default */].parents(element, this._contentElements.left).length) {\n wrapperElement = this._contentElements.left;\n } else if (dom[\"a\" /* default */].parents(element, this._contentElements.right).length) {\n wrapperElement = this._contentElements.right;\n } else {\n return;\n }\n\n var _wrapperElement$getBo = wrapperElement.getBoundingClientRect(),\n wrapperTop = _wrapperElement$getBo.top,\n wrapperBottom = _wrapperElement$getBo.bottom;\n\n if (targetTop < wrapperTop) {\n wrapperElement.scrollTop = wrapperElement.scrollTop + targetTop - wrapperTop;\n } else if (targetBottom > wrapperBottom) {\n wrapperElement.scrollTop = wrapperElement.scrollTop + targetBottom - wrapperBottom;\n }\n\n this.sync();\n }\n /**\n * set content element for given side\n * @param {Element} element - content element\n * @param {string} side - 'left' | 'right'\n * @private\n */\n ;\n\n _proto._setContentElement = function _setContentElement(element, side) {\n var _this = this;\n\n var contentElement = this._contentElements[side];\n\n if (contentElement) {\n this._eventManager.removeEventHandler(EVENT_REQUIRE_SCROLL_INTO_VIEW);\n\n this._contentWrapper.removeChild(contentElement);\n }\n\n addClass_default()(element, CLASS_CONTENT[side]);\n\n this._contentWrapper.appendChild(element);\n\n this._eventManager.listen(EVENT_REQUIRE_SCROLL_INTO_VIEW, function (ev) {\n return _this._requireScrollIntoView(ev);\n });\n\n this._eventManager.listen('requireScrollSync', function () {\n return _this.sync();\n });\n\n this._contentElements[side] = element;\n this.sync();\n }\n /**\n * set left side element\n * @param {Element} element - an element to be on left side split view\n * @private\n */\n ;\n\n _proto._setLeft = function _setLeft(element) {\n this._setContentElement(element, 'left');\n }\n /**\n * set right side element\n * @param {Element} element - an element to be on right side split view\n * @private\n */\n ;\n\n _proto._setRight = function _setRight(element) {\n this._setContentElement(element, 'right');\n };\n\n _proto._setScrollSync = function _setScrollSync(activate) {\n dom[\"a\" /* default */].toggleClass(this._el, CLASS_SCROLL_SYNC, activate);\n }\n /**\n * toggle multi scroll\n */\n ;\n\n _proto.toggleScrollSync = function toggleScrollSync() {\n dom[\"a\" /* default */].toggleClass(this._el, CLASS_SCROLL_SYNC);\n };\n\n _proto.setSplitView = function setSplitView(activate) {\n if (!activate) {\n addClass_default()(this._el, CLASS_SINGLE_CONTENT);\n } else {\n removeClass_default()(this._el, CLASS_SINGLE_CONTENT);\n }\n }\n /**\n * toggle split\n */\n ;\n\n _proto.toggleSplitView = function toggleSplitView() {\n dom[\"a\" /* default */].toggleClass(this._el, CLASS_SINGLE_CONTENT);\n }\n /**\n * is scroll synced\n * @returns {boolean} - true for synced, false for each scroll\n */\n ;\n\n _proto.isScrollSynced = function isScrollSynced() {\n return hasClass_default()(this._el, CLASS_SCROLL_SYNC);\n }\n /**\n * is split view\n * @returns {boolean} - true for split view, false for single view\n */\n ;\n\n _proto.isSplitView = function isSplitView() {\n return !hasClass_default()(this._el, CLASS_SINGLE_CONTENT);\n }\n /**\n * sync scroll\n */\n ;\n\n _proto.sync = function sync() {\n if (!this._contentElements.left || !this._contentElements.right) {\n return;\n }\n\n var wrapperHeight = this._contentWrapper.clientHeight;\n var scrollTop = this._contentWrapper.scrollTop;\n var leftElement = this._contentElements.left;\n var rightElement = this._contentElements.right;\n var scrollingElement = leftElement.offsetHeight - wrapperHeight > 0 ? leftElement : rightElement;\n var followingElement = scrollingElement === leftElement ? rightElement : leftElement;\n var scrollingElementHeight = scrollingElement.offsetHeight;\n var scrollingElementScrollMax = Math.max(scrollingElementHeight - wrapperHeight, 0);\n var followingElementHeight = Math.max(followingElement.offsetHeight, wrapperHeight);\n var followingElementTopMax = scrollingElementHeight - followingElementHeight;\n css_default()(scrollingElement, {\n top: 0\n });\n css_default()(followingElement, {\n top: scrollTop / scrollingElementScrollMax * followingElementTopMax + \"px\"\n });\n }\n /**\n * scroll top\n * @param {number} top - scroll top in pixel\n */\n ;\n\n _proto.scrollTop = function scrollTop(top) {\n this._contentWrapper.scrollTop = top;\n };\n\n return ScrollSyncSplit;\n}();\n\n/* harmony default export */ var scrollSyncSplit = (scrollSyncSplit_ScrollSyncSplit);\n// CONCATENATED MODULE: ./src/js/codeBlockEditor.js\nfunction codeBlockEditor_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements code block editor\n * @author NHN FE Development Lab \n */\n\n/**\n * Class Code Block Editor\n * @param {HTMLElement} el - code block editor container element\n * @param {EventManager} eventManager - event manager\n * @ignore\n */\n\nvar CodeBlockEditor = /*#__PURE__*/function (_CodeMirrorExt) {\n codeBlockEditor_inheritsLoose(CodeBlockEditor, _CodeMirrorExt);\n\n function CodeBlockEditor(el, eventManager) {\n var _this;\n\n _this = _CodeMirrorExt.call(this, el, {\n singleCursorHeightPerLine: false,\n theme: 'none'\n }) || this;\n _this._language = '';\n _this._eventManager = eventManager;\n\n _this._initEvent();\n\n return _this;\n }\n\n var _proto = CodeBlockEditor.prototype;\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this.on('cursorActivity', this._onRequireScrollIntoView.bind(this));\n this.on('beforeChange', function (cm, ev) {\n if (ev.origin === 'paste') {\n _this2._eventManager.emit('pasteBefore', {\n source: 'codeblock',\n data: ev\n });\n }\n });\n };\n\n _proto._onRequireScrollIntoView = function _onRequireScrollIntoView() {\n var _this3 = this;\n\n var cursor = this.getCursor();\n var wrapper = this.getWrapperElement(); // CodeMirror cursorActivity event fires before actually attach a new line element to DOM\n // we should proceed at next tick\n\n setTimeout(function () {\n var lineElement = wrapper.querySelector(\"pre:nth-child(\" + (cursor.line + 1) + \")\");\n\n if (lineElement) {\n _this3._eventManager.emit('requireScrollIntoView', lineElement);\n }\n }, 0);\n }\n /**\n * load code from code block element\n * @param {HTMLElement} codeBlockElement - code block element\n */\n ;\n\n _proto.load = function load(codeBlockElement) {\n var el = codeBlockElement.cloneNode(true);\n this.setLanguage(el.getAttribute('data-language') || '');\n this.setEditorCodeText(el.textContent);\n }\n /**\n * save code to code block element\n * @param {HTMLElement} codeBlockElement - code block element\n */\n ;\n\n _proto.save = function save(codeBlockElement) {\n codeBlockElement.innerHTML = '';\n codeBlockElement.textContent = this.getEditorCodeText();\n codeBlockElement.setAttribute('data-language', this._language);\n\n this._eventManager.emit('changeLanguage');\n }\n /**\n * clear code and language\n */\n ;\n\n _proto.clear = function clear() {\n this.setLanguage('');\n this.setEditorCodeText('');\n }\n /**\n * get code language\n * @returns {string} - code language\n */\n ;\n\n _proto.getLanguage = function getLanguage() {\n return this._language;\n }\n /**\n * set code language\n * @param {string} [language=''] - code language\n */\n ;\n\n _proto.setLanguage = function setLanguage(language) {\n if (language === void 0) {\n language = '';\n }\n\n this._language = language;\n }\n /**\n * get code text\n * @returns {string} - code text\n */\n ;\n\n _proto.getEditorCodeText = function getEditorCodeText() {\n return this.getValue();\n }\n /**\n * set code text\n * @param {string} [code=''] - code text\n */\n ;\n\n _proto.setEditorCodeText = function setEditorCodeText(code) {\n if (code === void 0) {\n code = '';\n }\n\n this.setValue(code);\n }\n /**\n * refresh. call if codemirror resized\n */\n ;\n\n _proto.refresh = function refresh() {\n this.cm.refresh();\n };\n\n return CodeBlockEditor;\n}(codeMirrorExt);\n\n/* harmony default export */ var codeBlockEditor = (CodeBlockEditor);\n// EXTERNAL MODULE: ./src/js/preview.js + 1 modules\nvar js_preview = __webpack_require__(38);\n\n// CONCATENATED MODULE: ./src/js/codeBlockPreview.js\nfunction codeBlockPreview_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction codeBlockPreview_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements CodeBlockPreview\n * @author NHN FE Development Lab \n */\n\n/**\n * Class Code block preview\n * @param {HTMLElement} el - base element\n * @param {EventManager} eventManager - event manager\n * @param {Convertor} convertor - convertor\n * @param {CodeBlockEditor} codeBlockEditor - code block editor\n * @ignore\n */\n\nvar CodeBlockPreview = /*#__PURE__*/function (_Preview) {\n codeBlockPreview_inheritsLoose(CodeBlockPreview, _Preview);\n\n function CodeBlockPreview(el, eventManager, convertor, codeBlockEditor) {\n var _this;\n\n _this = _Preview.call(this, el, eventManager, convertor, true) || this;\n _this._codeBlockEditor = codeBlockEditor;\n\n _this._initEvent();\n\n _this.lazyRunner.registerLazyRunFunction('refresh', _this.refresh, _this.delayCodeBlockTime, codeBlockPreview_assertThisInitialized(_this));\n\n return _this;\n }\n\n var _proto = CodeBlockPreview.prototype;\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this._codeBlockEditor.on('update', function () {\n return _this2.lazyRunner.run('refresh');\n });\n }\n /**\n * refresh preview\n * @override\n */\n ;\n\n _proto.refresh = function refresh() {\n var language = this._codeBlockEditor.getLanguage();\n\n var codeText = this._codeBlockEditor.getEditorCodeText();\n\n _Preview.prototype.refresh.call(this, \"```\" + language + \"\\n\" + codeText + \"\\n```\");\n\n this.eventManager.emit('requireScrollSync');\n }\n /**\n * clear preview\n */\n ;\n\n _proto.clear = function clear() {\n _Preview.prototype.render.call(this, '');\n };\n\n return CodeBlockPreview;\n}(js_preview[\"a\" /* default */]);\n\n/* harmony default export */ var codeBlockPreview = (CodeBlockPreview);\n// CONCATENATED MODULE: ./src/js/ui/codeBlockLanguagesCombo.js\n/**\n * @fileoverview Implements UI code block languages combo\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n/**\n * Class CodeBlockLanguagesCombo\n * @param {EventManager} eventManager - event manager instance\n * @ignore\n */\n\nvar codeBlockLanguagesCombo_CodeBlockLanguagesCombo = /*#__PURE__*/function () {\n function CodeBlockLanguagesCombo(eventManager, languages) {\n this._eventManager = eventManager;\n this._languages = languages;\n\n this._initDOM();\n\n this._initDOMEvent();\n\n this._initEvent();\n }\n\n var _proto = CodeBlockLanguagesCombo.prototype;\n\n _proto._initDOM = function _initDOM() {\n this._inputLanguage = dom[\"a\" /* default */].createElementWith(\"\");\n this._wrapper = dom[\"a\" /* default */].createElementWith(\"\");\n\n this._wrapper.appendChild(this._inputLanguage);\n\n this._hide();\n };\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n this._inputLanguage.addEventListener('keydown', function (event) {\n return _this._onKeyEvent(event);\n });\n\n this._inputLanguage.addEventListener('focus', function () {\n return _this._showPopupCodeBlockLanguages();\n });\n\n this._inputLanguage.addEventListener('focusout', function () {\n return _this._onFocusOut();\n });\n\n this._wrapper.addEventListener('mousedown', function (ev) {\n if (ev.target !== _this._wrapper) {\n return;\n }\n\n ev.preventDefault();\n\n _this._toggleFocus();\n });\n };\n\n _proto._initEvent = function _initEvent() {\n var _this2 = this;\n\n this._eventManager.listen('setCodeBlockLanguages', function (languages) {\n _this2._languages = languages;\n\n if (languages && languages.length) {\n _this2._show();\n } else {\n _this2._hide();\n }\n });\n }\n /**\n * show popup\n * @private\n */\n ;\n\n _proto._showPopupCodeBlockLanguages = function _showPopupCodeBlockLanguages() {\n var _this3 = this;\n\n var clientRect = this._inputLanguage.getBoundingClientRect();\n\n addClass_default()(this._wrapper, 'active');\n this.active = true;\n this._popupCodeBlockLanguages = this._eventManager.emitReduce('openPopupCodeBlockLanguages', {\n language: this._prevStoredLanguage,\n offset: {\n left: clientRect.left,\n top: clientRect.bottom\n },\n callback: {\n selected: function selected(selectedLanguage) {\n return _this3._onLanguageSelectedFromList(selectedLanguage);\n },\n dismissed: function dismissed() {\n _this3._popupCodeBlockLanguages = null;\n }\n }\n });\n };\n\n _proto._toggleFocus = function _toggleFocus() {\n var inputLanguage = this._inputLanguage;\n\n if (hasClass_default()(this._wrapper, 'active')) {\n inputLanguage.blur();\n } else {\n inputLanguage.focus();\n }\n };\n\n _proto._onFocusOut = function _onFocusOut() {\n removeClass_default()(this._wrapper, 'active');\n this._inputLanguage.value = this._prevStoredLanguage;\n\n this._hidePopupCodeBlockLanguages();\n };\n\n _proto._onKeyEvent = function _onKeyEvent(event) {\n if (this._popupCodeBlockLanguages) {\n switch (event.which) {\n case keyMapper.keyCode('UP'):\n this._popupCodeBlockLanguages.prev();\n\n event.preventDefault();\n break;\n\n case keyMapper.keyCode('DOWN'):\n this._popupCodeBlockLanguages.next();\n\n event.preventDefault();\n break;\n\n case keyMapper.keyCode('ENTER'):\n case keyMapper.keyCode('TAB'):\n {\n var language = this._popupCodeBlockLanguages.getCurrentLanguage();\n\n this._inputLanguage.value = language;\n\n this._storeInputLanguage();\n\n event.preventDefault();\n break;\n }\n\n default:\n this._popupCodeBlockLanguages.hide();\n\n }\n } else if (event.which === keyMapper.keyCode('ENTER') || event.which === keyMapper.keyCode('TAB')) {\n this._storeInputLanguage();\n\n event.preventDefault();\n }\n };\n\n _proto._onLanguageSelectedFromList = function _onLanguageSelectedFromList(selectedLanguage) {\n this._inputLanguage.value = selectedLanguage;\n\n this._storeInputLanguage();\n }\n /**\n * set a callback to be called on language selected\n * @param {function} callback - callback function\n * @protected\n */\n ;\n\n _proto.setOnLanguageSelected = function setOnLanguageSelected(callback) {\n this._onLanguageSelected = callback;\n }\n /**\n * hide popup\n * @private\n */\n ;\n\n _proto._hidePopupCodeBlockLanguages = function _hidePopupCodeBlockLanguages() {\n this._eventManager.emit('closePopupCodeBlockLanguages');\n }\n /**\n * set language\n * @param {string} language - code block language\n * @protected\n */\n ;\n\n _proto.setLanguage = function setLanguage(language) {\n this._prevStoredLanguage = language;\n this._inputLanguage.value = language;\n }\n /**\n * store selection(typed) language & hide popup\n * @private\n */\n ;\n\n _proto._storeInputLanguage = function _storeInputLanguage() {\n var selectedLanguage = this._inputLanguage.value;\n this.setLanguage(selectedLanguage);\n\n if (this._onLanguageSelected) {\n this._onLanguageSelected(selectedLanguage);\n }\n\n this._hidePopupCodeBlockLanguages();\n }\n /**\n * get element body\n * @returns {HTMLElement} - CodeBlockLanguagesCombo body element\n * @protected\n */\n ;\n\n _proto.getElement = function getElement() {\n return this._wrapper;\n };\n\n _proto._show = function _show() {\n css_default()(this._wrapper, {\n display: 'inline-block'\n });\n };\n\n _proto._hide = function _hide() {\n css_default()(this._wrapper, {\n display: 'none'\n });\n };\n\n return CodeBlockLanguagesCombo;\n}();\n\n/* harmony default export */ var ui_codeBlockLanguagesCombo = (codeBlockLanguagesCombo_CodeBlockLanguagesCombo);\n// CONCATENATED MODULE: ./src/js/ui/popupCodeBlockEditor.js\nfunction popupCodeBlockEditor_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * @fileoverview Implements popup code block editor\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\nvar popupCodeBlockEditor_CLASS_PREFIX = 'popup-editor-';\nvar popupCodeBlockEditor_CLASS_OK_BUTTON = 'te-ok-button';\nvar popupCodeBlockEditor_CLASS_CLOSE_BUTTON = 'te-close-button';\nvar CLASS_POPUP_CLOSE_BUTTON = 'tui-popup-close-button';\nvar TEMPLATE_HEADER_BUTTONS = \"\\n \\n \\n \\n \\n\";\n/**\n * Class popup code block editor\n * @param {LayerPopupOption} options - layer popup option\n * @ignore\n */\n\nvar popupCodeBlockEditor_PopupCodeBlockEditor = /*#__PURE__*/function (_LayerPopup) {\n popupCodeBlockEditor_inheritsLoose(PopupCodeBlockEditor, _LayerPopup);\n\n function PopupCodeBlockEditor(options) {\n var TEMPLATE_CONTENT = \"\\n
    \\n
    \\n \\n \\n
    \\n \";\n options = extend_default()({\n header: true,\n title: 'CodeBlock Editor',\n content: TEMPLATE_CONTENT,\n className: 'tui-popup-code-block-editor',\n headerButtons: TEMPLATE_HEADER_BUTTONS,\n modal: true\n }, options);\n return _LayerPopup.call(this, options) || this;\n }\n /**\n * init instance.\n * store properties & prepare before initialize DOM\n * @param {LayerPopupOption} options - layer popup options\n * @private\n * @override\n */\n\n\n var _proto = PopupCodeBlockEditor.prototype;\n\n _proto._initInstance = function _initInstance(options) {\n _LayerPopup.prototype._initInstance.call(this, options);\n\n this.eventManager = options.eventManager;\n this.convertor = options.convertor;\n this.languages = options.languages;\n }\n /**\n * initialize DOM, render popup\n * @private\n * @override\n */\n ;\n\n _proto._initDOM = function _initDOM(options) {\n _LayerPopup.prototype._initDOM.call(this, options);\n\n var el = this.el,\n eventManager = this.eventManager;\n this._body = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_PREFIX + \"body\");\n this._toggleFitButton = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-fit\");\n this._togglePreviewButton = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-preview\");\n this._toggleScrollButton = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-scroll\");\n this._okButton = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_OK_BUTTON);\n this._closeButton = el.querySelector(\".\" + popupCodeBlockEditor_CLASS_CLOSE_BUTTON);\n this._codeMirrorWrapper = this._createCodeBlockEditor();\n this._previewWrapper = this._createPreview();\n this._scrollSyncSplit = new scrollSyncSplit(this._body, this._codeMirrorWrapper, this._previewWrapper, {\n eventManager: eventManager\n });\n\n this._updateFitWindowButton();\n\n this._updatePreviewButton();\n\n this._updateScrollButton();\n\n this._codeBlockLanguagesCombo = this._createCodeBlockLanguagesCombo();\n }\n /**\n * bind DOM events\n * @private\n * @override\n */\n ;\n\n _proto._initDOMEvent = function _initDOMEvent() {\n var _this = this;\n\n _LayerPopup.prototype._initDOMEvent.call(this);\n\n this.on('scroll', function (ev) {\n return ev.preventDefault();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-fit\", function () {\n return _this._toggleFitToWindow();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-preview\", function () {\n return _this._togglePreview();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_PREFIX + \"toggle-scroll\", function () {\n return _this._toggleScroll();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_OK_BUTTON, function () {\n return _this._save();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_CLOSE_BUTTON, function () {\n return _this.hide();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_PREFIX + \"close\", function () {\n return _this.hide();\n });\n this.on(\"click .\" + popupCodeBlockEditor_CLASS_PREFIX + \"editor-wrapper\", function (ev) {\n if (ev.target === _this._codeMirrorWrapper) {\n _this._focusEditor(true);\n }\n });\n }\n /**\n * bind editor events\n * @private\n * @override\n */\n ;\n\n _proto._initEditorEvent = function _initEditorEvent() {\n var _this2 = this;\n\n _LayerPopup.prototype._initEditorEvent.call(this);\n\n this.eventManager.listen('openPopupCodeBlockEditor', function (codeBlockElement) {\n _this2.eventManager.emit('closeAllPopup');\n\n _this2.show(codeBlockElement);\n\n return _this2;\n });\n this.eventManager.listen('closeAllPopup', this.hide.bind(this));\n this.eventManager.listen('closePopupCodeBlockEditor', this.hide.bind(this));\n };\n\n _proto._createCodeBlockEditor = function _createCodeBlockEditor() {\n var codeMirrorWrapper = document.createElement('div');\n codeMirrorWrapper.className = popupCodeBlockEditor_CLASS_PREFIX + \"editor-wrapper\";\n this._codeBlockEditor = new codeBlockEditor(codeMirrorWrapper, this.eventManager);\n return codeMirrorWrapper;\n };\n\n _proto._createPreview = function _createPreview() {\n var previewWrapper = document.createElement('div');\n this._codeBlockPreview = new codeBlockPreview(previewWrapper, this.eventManager, this.convertor, this._codeBlockEditor);\n return previewWrapper;\n };\n\n _proto._createCodeBlockLanguagesCombo = function _createCodeBlockLanguagesCombo() {\n var _this3 = this;\n\n var titleElement = this.getTitleElement();\n var codeBlockLanguagesCombo = new ui_codeBlockLanguagesCombo(this.eventManager, this.languages);\n codeBlockLanguagesCombo.setOnLanguageSelected(function (selectedLanguage) {\n _this3._codeBlockEditor.setLanguage(selectedLanguage);\n\n _this3._codeBlockEditor.refresh();\n\n _this3._focusEditor();\n });\n titleElement.innerHTML = 'CodeBlock Editor';\n titleElement.appendChild(codeBlockLanguagesCombo.getElement());\n return codeBlockLanguagesCombo;\n };\n\n _proto._updateFitWindowButton = function _updateFitWindowButton() {\n dom[\"a\" /* default */].toggleClass(this._toggleFitButton, 'active', this.isFitToWindow());\n };\n\n _proto._updatePreviewButton = function _updatePreviewButton() {\n dom[\"a\" /* default */].toggleClass(this._togglePreviewButton, 'active', this._scrollSyncSplit.isSplitView());\n };\n\n _proto._updateScrollButton = function _updateScrollButton() {\n if (this._scrollSyncSplit.isSplitView()) {\n css_default()(this._toggleScrollButton, {\n display: 'inline-block'\n });\n } else {\n css_default()(this._toggleScrollButton, {\n display: 'none'\n });\n }\n\n dom[\"a\" /* default */].toggleClass(this._toggleScrollButton, 'active', this._scrollSyncSplit.isScrollSynced());\n };\n\n _proto._focusEditor = function _focusEditor(cursorToEnd) {\n this._codeBlockEditor.focus();\n\n if (cursorToEnd) {\n this._codeBlockEditor.moveCursorToEnd();\n } else {\n this._codeBlockEditor.moveCursorToStart();\n }\n };\n\n _proto._togglePreview = function _togglePreview() {\n this._scrollSyncSplit.toggleSplitView();\n\n this._updatePreviewButton();\n\n this._updateScrollButton();\n\n this._codeBlockEditor.refresh();\n };\n\n _proto._toggleFitToWindow = function _toggleFitToWindow() {\n this.toggleFitToWindow();\n\n this._updateFitWindowButton();\n\n this._codeBlockEditor.refresh();\n };\n\n _proto._toggleScroll = function _toggleScroll() {\n this._scrollSyncSplit.toggleScrollSync();\n\n this._updateScrollButton();\n }\n /**\n * store code mirror text to wysiwyg code block\n * @private\n */\n ;\n\n _proto._save = function _save() {\n this._codeBlockEditor.save(this._codeBlockElement);\n\n this.hide();\n }\n /**\n * load code mirror text from wysiwyg code block\n * @param {HTMLElement} codeBlockElement - code block element instance to load code from\n * @private\n */\n ;\n\n _proto._load = function _load(codeBlockElement) {\n this._codeBlockElement = codeBlockElement;\n\n this._codeBlockEditor.load(codeBlockElement);\n\n this._codeBlockLanguagesCombo.setLanguage(this._codeBlockEditor.getLanguage());\n\n this._focusEditor();\n\n this._codeBlockPreview.refresh();\n }\n /**\n * show popup\n * @param {HTMLElement} codeBlockElement - code block element\n * @override\n */\n ;\n\n _proto.show = function show(codeBlockElement) {\n _LayerPopup.prototype.show.call(this);\n\n if (!codeBlockElement) {\n throw new Error('should be called with codeBlockElement');\n }\n\n this._load(codeBlockElement);\n }\n /**\n * hide popup\n * @override\n */\n ;\n\n _proto.hide = function hide() {\n this.setFitToWindow(false);\n\n if (this._codeBlockEditor) {\n this._codeBlockEditor.clear();\n }\n\n if (this._codeBlockPreview) {\n this._codeBlockPreview.clear();\n }\n\n this._codeBlockElement = null;\n\n _LayerPopup.prototype.hide.call(this);\n };\n\n return PopupCodeBlockEditor;\n}(layerpopup);\n\n/* harmony default export */ var popupCodeBlockEditor = (popupCodeBlockEditor_PopupCodeBlockEditor);\n// CONCATENATED MODULE: ./src/js/ui/defaultUI.js\nfunction defaultUI_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileoverview default UI\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CLASS_TOOLBAR = 'te-toolbar-section';\nvar CLASS_MARKDOWN_TAB = 'te-markdown-tab-section';\nvar CLASS_EDITOR = 'te-editor-section';\nvar CLASS_MODE_SWITCH = 'te-mode-switch-section';\nvar CONTAINER_TEMPLATE = ['
    ', \"
    \", \"
    \", \"
    \", '
    '].join('');\n/**\n * Class DefaultUI\n * @param {ToastUIEditor} editor - editor instance\n */\n\nvar defaultUI_DefaultUI = /*#__PURE__*/function () {\n /**\n * UI name\n * @type {string}\n */\n\n /**\n * DefaultToolbar wrapper element\n * @type {HTMLElement}\n */\n\n /**\n * DefaultToolbar instance\n * @type {DefaultToolbar}\n * @private\n */\n\n /**\n * @type {HTMLElement}\n * @private\n */\n\n /**\n * editor section element\n * @private\n * @type {HTMLElement}\n */\n\n /**\n * editor type ww/md\n * @private\n * @type {string}\n */\n\n /**\n * editor instance\n * @private\n * @type {ToastUIEditor}\n */\n\n /**\n * markdown tab section element\n * @private\n * @type {HTMLElement}\n */\n\n /**\n * markdown tab\n * @private\n * @type {Tab}\n */\n\n /**\n * mode switch instance\n * @private\n * @type {ModeSwitch}\n */\n\n /**\n * popup instances\n * @private\n * @type {Array}\n */\n function DefaultUI(editor) {\n defaultUI_defineProperty(this, \"name\", 'default');\n\n defaultUI_defineProperty(this, \"el\", void 0);\n\n defaultUI_defineProperty(this, \"_toolbar\", void 0);\n\n defaultUI_defineProperty(this, \"_container\", void 0);\n\n defaultUI_defineProperty(this, \"_editorSection\", void 0);\n\n defaultUI_defineProperty(this, \"_initialEditType\", void 0);\n\n defaultUI_defineProperty(this, \"_editor\", void 0);\n\n defaultUI_defineProperty(this, \"_markdownTabSection\", void 0);\n\n defaultUI_defineProperty(this, \"_markdownTab\", void 0);\n\n defaultUI_defineProperty(this, \"_modeSwitch\", void 0);\n\n defaultUI_defineProperty(this, \"_popups\", []);\n\n this._editor = editor;\n this._initialEditType = editor.options.initialEditType;\n\n this._init(editor.options);\n\n this._initEvent();\n }\n\n var _proto = DefaultUI.prototype;\n\n _proto._init = function _init(_ref) {\n var container = _ref.el,\n toolbarItems = _ref.toolbarItems,\n hideModeSwitch = _ref.hideModeSwitch;\n this.el = dom[\"a\" /* default */].createElementWith(CONTAINER_TEMPLATE, container);\n this._container = container;\n this._editorSection = this.el.querySelector(\".\" + CLASS_EDITOR);\n\n this._editorSection.appendChild(this._editor.layout.getEditorEl());\n\n this._initToolbar(this._editor.eventManager, toolbarItems);\n\n this._initModeSwitch(this._editor.eventManager, hideModeSwitch);\n\n this._initPopupAddLink();\n\n this._initPopupAddImage();\n\n this._initPopupAddTable();\n\n this._initPopupAddHeading();\n\n this._initPopupTableUtils();\n\n this._initPopupCodeBlockLanguages();\n\n this._initPopupCodeBlockEditor();\n\n this._initMarkdownTab();\n };\n\n _proto._initEvent = function _initEvent() {\n this._editor.eventManager.listen('hide', this.hide.bind(this));\n\n this._editor.eventManager.listen('show', this.show.bind(this));\n\n this._editor.eventManager.listen('changeMode', this._markdownTabControl.bind(this));\n\n this._editor.eventManager.listen('changePreviewStyle', this._markdownTabControl.bind(this));\n };\n\n _proto._initToolbar = function _initToolbar(eventManager, toolbarItems) {\n var toolbar = new defaultToolbar(eventManager, toolbarItems);\n this._toolbar = toolbar;\n this.el.querySelector(\".\" + CLASS_TOOLBAR).appendChild(toolbar.el);\n };\n\n _proto._initModeSwitch = function _initModeSwitch(eventManager, hideModeSwitch) {\n var _this = this;\n\n var modeSwitchTabBar = this.el.querySelector(\".\" + CLASS_MODE_SWITCH);\n var editType = this._initialEditType === 'markdown' ? ui_modeSwitch.TYPE.MARKDOWN : ui_modeSwitch.TYPE.WYSIWYG;\n var modeSwitch = new ui_modeSwitch(modeSwitchTabBar, editType, eventManager);\n this._modeSwitch = modeSwitch;\n\n if (hideModeSwitch) {\n modeSwitch.hide();\n }\n\n modeSwitch.on('modeSwitched', function (type) {\n return _this._editor.changeMode(type);\n });\n };\n\n _proto._initMarkdownTab = function _initMarkdownTab() {\n var editor = this._editor;\n this._markdownTab = new tab({\n initName: i18n.get('Write'),\n items: [i18n.get('Write'), i18n.get('Preview')],\n sections: [editor.layout.getMdEditorContainerEl(), editor.layout.getPreviewEl()]\n });\n this._markdownTabSection = this.el.querySelector(\".\" + CLASS_MARKDOWN_TAB);\n\n this._markdownTabSection.appendChild(this._markdownTab.el);\n\n this._markdownTab.on('itemClick', function (itemText) {\n if (itemText === i18n.get('Preview')) {\n editor.eventManager.emit('previewNeedsRefresh');\n editor.eventManager.emit('changePreviewTabPreview');\n editor.eventManager.emit('closeAllPopup');\n } else {\n editor.getCodeMirror().focus();\n editor.eventManager.emit('changePreviewTabWrite');\n }\n });\n };\n\n _proto._markdownTabControl = function _markdownTabControl() {\n if (this._editor.isMarkdownMode() && this._editor.getCurrentPreviewStyle() === 'tab') {\n css_default()(this._markdownTabSection, {\n display: 'block'\n });\n\n this._markdownTab.activate(i18n.get('Write'));\n } else {\n css_default()(this._markdownTabSection, {\n display: 'none'\n });\n }\n };\n\n _proto._initPopupAddLink = function _initPopupAddLink() {\n this._popups.push(new popupAddLink({\n target: this.el,\n editor: this._editor\n }));\n };\n\n _proto._initPopupAddImage = function _initPopupAddImage() {\n this._popups.push(new popupAddImage({\n target: this.el,\n eventManager: this._editor.eventManager\n }));\n };\n\n _proto._initPopupAddTable = function _initPopupAddTable() {\n this._popups.push(new popupAddTable({\n target: this._toolbar.el,\n eventManager: this._editor.eventManager,\n button: this.el.querySelector('button.tui-table'),\n css: {\n position: 'absolute'\n }\n }));\n };\n\n _proto._initPopupAddHeading = function _initPopupAddHeading() {\n this._popups.push(new popupAddHeading({\n target: this._toolbar.el,\n eventManager: this._editor.eventManager,\n button: this.el.querySelector('button.tui-heading'),\n css: {\n position: 'absolute'\n }\n }));\n };\n\n _proto._initPopupTableUtils = function _initPopupTableUtils() {\n var _this2 = this;\n\n this._editor.eventManager.listen('contextmenu', function (ev) {\n if (dom[\"a\" /* default */].parents(ev.data.target, '[contenteditable=true] table').length > 0) {\n ev.data.preventDefault();\n\n _this2._editor.eventManager.emit('openPopupTableUtils', ev.data);\n }\n });\n\n this._popups.push(new popupTableUtils({\n target: this.el,\n eventManager: this._editor.eventManager\n }));\n };\n\n _proto._initPopupCodeBlockLanguages = function _initPopupCodeBlockLanguages() {\n var editor = this._editor;\n\n this._popups.push(new popupCodeBlockLanguages({\n target: this.el,\n eventManager: editor.eventManager,\n languages: editor.codeBlockLanguages\n }));\n };\n\n _proto._initPopupCodeBlockEditor = function _initPopupCodeBlockEditor() {\n this._popups.push(new popupCodeBlockEditor({\n target: this.el,\n eventManager: this._editor.eventManager,\n convertor: this._editor.convertor,\n languages: this._editor.codeBlockLanguages\n }));\n }\n /**\n * get toolbar instance\n * @returns {Toolbar} - toolbar instance\n */\n ;\n\n _proto.getToolbar = function getToolbar() {\n return this._toolbar;\n }\n /**\n * set toolbar instance\n * @param {Toolbar} toolbar - toolbar\n */\n ;\n\n _proto.setToolbar = function setToolbar(toolbar) {\n this._toolbar.destroy();\n\n this._toolbar = toolbar;\n }\n /**\n * get mode switch instance\n * @returns {ModeSwitch} - mode switch instance\n */\n ;\n\n _proto.getModeSwitch = function getModeSwitch() {\n return this._modeSwitch;\n }\n /**\n * get editor section height\n * @returns {Number} - height of editor section\n */\n ;\n\n _proto.getEditorSectionHeight = function getEditorSectionHeight() {\n var clientRect = this._editorSection.getBoundingClientRect();\n\n return clientRect.bottom - clientRect.top;\n }\n /**\n * get editor height\n * @returns {Number} - height of editor\n */\n ;\n\n _proto.getEditorHeight = function getEditorHeight() {\n var clientRect = this._container.getBoundingClientRect();\n\n return clientRect.bottom - clientRect.top;\n }\n /**\n * get Table Popup\n * @returns {PopupTableUtils} - PopupTableUtils\n */\n ;\n\n _proto.getPopupTableUtils = function getPopupTableUtils() {\n var tablePopup;\n\n this._popups.forEach(function (popup) {\n if (popup instanceof popupTableUtils) {\n tablePopup = popup;\n }\n });\n\n return tablePopup;\n }\n /**\n * hide\n */\n ;\n\n _proto.hide = function hide() {\n addClass_default()(this.el, 'te-hide');\n }\n /**\n * show\n */\n ;\n\n _proto.show = function show() {\n removeClass_default()(this.el, 'te-hide');\n }\n /**\n * remove\n */\n ;\n\n _proto.remove = function remove() {\n dom[\"a\" /* default */].remove(this.el);\n\n this._markdownTab.remove();\n\n this._modeSwitch.remove();\n\n this._toolbar.destroy();\n\n this._popups.forEach(function (popup) {\n return popup.remove();\n });\n\n this._popups = [];\n tooltip.hide();\n }\n /**\n * creates popup\n * @param {LayerPopupOption} options - layerPopup options\n * @returns {LayerPopup} - crated layerPopup\n */\n ;\n\n _proto.createPopup = function createPopup(options) {\n return new layerpopup(options);\n };\n\n return DefaultUI;\n}();\n\n/* harmony default export */ var defaultUI = (defaultUI_DefaultUI);\n// EXTERNAL MODULE: ./src/js/codeBlockManager.js\nvar codeBlockManager = __webpack_require__(30);\n\n// EXTERNAL MODULE: /Users/nhn/Desktop/project/tui.editor/libs/to-mark/dist/to-mark.js\nvar to_mark = __webpack_require__(32);\nvar to_mark_default = /*#__PURE__*/__webpack_require__.n(to_mark);\n\n// CONCATENATED MODULE: ./src/js/toMarkRenderer.js\n\n\n/**\n * Check if given node is valid delimiter run.\n * According to common-mark spec, following examples are not valid delimiter runs.\n * 1. opening (*|**) preceded by an alphanumeric and followed by a punctuation.\n * (ex: a**~~c~~b**)\n * 2. closing (*|**) preceded by a punctuation and followed by an alphanumeric.\n * (ex: **b~~c~~**a)\n * @see {@link https://spec.commonmark.org/0.29/#delimiter-run}\n * @see {@link https://github.com/commonmark/commonmark-spec/issues/611#issuecomment-533578503}\n */\n\nfunction isValidDelimiterRun(node) {\n var isElemNode = dom[\"a\" /* default */].isElemNode,\n isTextNode = dom[\"a\" /* default */].isTextNode;\n var isInvalidOpener = isTextNode(node.previousSibling) && isElemNode(node.firstChild);\n var isInvalidCloser = isTextNode(node.nextSibling) && isElemNode(node.lastChild);\n return !isInvalidOpener && !isInvalidCloser;\n}\n\nfunction convertEmphasis(node, subContent, delimiter) {\n var FIND_BEFORE_AND_AFTER_SPACES_RX = /^(\\s*)((?:.|\\n)*\\S)(\\s*)$/m;\n\n var _subContent$match = subContent.match(FIND_BEFORE_AND_AFTER_SPACES_RX),\n beforeSpaces = _subContent$match[1],\n trimmedContent = _subContent$match[2],\n afterSpaces = _subContent$match[3];\n\n var convertedContent;\n\n if (isValidDelimiterRun(node)) {\n convertedContent = \"\" + delimiter + trimmedContent + delimiter;\n } else {\n var tagName = node.nodeName.toLowerCase();\n convertedContent = \"<\" + tagName + \">\" + trimmedContent + \"\";\n }\n\n return \"\" + beforeSpaces + convertedContent + afterSpaces;\n}\n\n/* harmony default export */ var toMarkRenderer = (to_mark_default.a.Renderer.factory(to_mark_default.a.gfmRenderer, {\n 'EM, I': function EMI(node, subContent) {\n if (this.isEmptyText(subContent)) {\n return '';\n }\n\n return convertEmphasis(node, subContent, '*');\n },\n 'STRONG, B': function STRONGB(node, subContent) {\n if (this.isEmptyText(subContent)) {\n return '';\n }\n\n return convertEmphasis(node, subContent, '**');\n },\n 'DEL, S': function DELS(node, subContent) {\n if (this.isEmptyText(subContent)) {\n return '';\n }\n\n return convertEmphasis(node, subContent, '~~');\n }\n}));\n// EXTERNAL MODULE: ./src/js/pluginHelper.js\nvar pluginHelper = __webpack_require__(31);\n\n// CONCATENATED MODULE: ./src/js/markdownCommands/emphasisCommon.js\n/**\n * @fileoverview This file is common logic for italic, bold, strike makrdown commands.\n * @author NHN FE Development Lab \n */\n\n/**\n * range expand according to expendSize\n * If can not expand, return null\n * @param {range} range - range\n * @param {number} expendSize - expendSize\n * @returns {object} expanded range or null\n * @ignore\n */\nvar getExpandedRange = function getExpandedRange(range, expendSize) {\n var start = range.start,\n end = range.end;\n var expendRange;\n\n if (start.ch >= expendSize) {\n var from = {\n line: start.line,\n ch: start.ch - expendSize\n };\n var to = {\n line: end.line,\n ch: end.ch + expendSize\n };\n expendRange = {\n from: from,\n to: to\n };\n }\n\n return expendRange;\n};\n/**\n * remove symbol in the front and back of text\n * @param {string} text - text\n * @param {string} symbol - text\n * @returns {string}\n * @ignore\n */\n\n\nvar removeSyntax = function removeSyntax(text, symbol) {\n var symbolLength = symbol.length;\n return text.substr(symbolLength, text.length - symbolLength * 2);\n};\n/**\n * append symbol in the front and back of text\n * @param {string} text - text\n * @param {string} symbol - text\n * @returns {string}\n * @ignore\n */\n\nvar appendSyntax = function appendSyntax(text, symbol) {\n return \"\" + symbol + text + symbol;\n};\n/**\n * check expanded text and replace text using replacer\n * @param {CodeMirror.doc} doc - doc of codemirror\n * @param {range} range - origin range\n * @param {number} expandSize - expandSize\n * @param {function} checker - sytax check function\n * @param {function} replacer - text replace function\n * @returns {boolean} - if replace text, return true.\n * @ignore\n */\n\nvar expandReplace = function expandReplace(doc, range, expandSize, checker, replacer) {\n var expendRange = getExpandedRange(range, expandSize);\n var result = false;\n\n if (expendRange) {\n var from = expendRange.from,\n to = expendRange.to;\n var expendRangeText = doc.getRange(from, to);\n\n if (checker(expendRangeText)) {\n doc.setSelection(from, to);\n doc.replaceSelection(replacer(expendRangeText), 'around');\n result = true;\n }\n }\n\n return result;\n};\n/**\n * check text and replace text using replacer\n * @param {CodeMirror.doc} doc - doc of codemirror\n * @param {string} text - text\n * @param {function} checker - sytax check function\n * @param {function} replacer - text replace function\n * @returns {boolean} - if replace text, return true.\n * @ignore\n */\n\nvar replace = function replace(doc, text, checker, replacer) {\n var result = false;\n\n if (checker(text)) {\n doc.replaceSelection(replacer(text), 'around');\n result = true;\n }\n\n return result;\n};\nvar changeSyntax = function changeSyntax(doc, range, symbol, syntaxRegex, contentRegex) {\n var _doc$getCursor = doc.getCursor(),\n line = _doc$getCursor.line,\n ch = _doc$getCursor.ch;\n\n var selectionStr = doc.getSelection();\n var symbolLength = symbol.length;\n\n var isSyntax = function isSyntax(t) {\n return syntaxRegex.test(t);\n }; // 1. expand text and check syntax => remove syntax\n // 2. check text is syntax => remove syntax\n // 3. If text does not match syntax, remove syntax inside text and then append syntax\n\n\n if (!(expandReplace(doc, range, symbolLength, isSyntax, function (t) {\n return removeSyntax(t, symbol);\n }) || replace(doc, selectionStr, isSyntax, function (t) {\n return removeSyntax(t, symbol);\n }))) {\n var removeSyntaxInsideText = selectionStr.replace(contentRegex, '$1');\n doc.replaceSelection(appendSyntax(removeSyntaxInsideText, symbol), 'around');\n }\n\n var afterSelectStr = doc.getSelection();\n var size = ch;\n\n if (!selectionStr) {\n // If text was not selected, after replace text, move cursor\n // For example **|** => | (move cusor -symbolLenth)\n if (isSyntax(afterSelectStr)) {\n size += symbolLength;\n } else {\n size -= symbolLength;\n }\n\n doc.setCursor(line, size);\n }\n};\n// CONCATENATED MODULE: ./src/js/markdownCommands/bold.js\n/**\n * @fileoverview Implements Bold markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar boldRangeRegex = /^(\\*{2}|_{2}).*\\1$/;\nvar boldContentRegex = /[*_]{2,}([^*_]*)[*_]{2,}/g;\nvar boldSymbol = '**';\n/**\n * Bold\n * Add bold markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Bold\n * @ignore\n */\n\nvar Bold = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Bold */\n{\n name: 'Bold',\n keyMap: ['CTRL+B', 'META+B'],\n\n /**\n * Command Handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var originRange = mde.getRange();\n changeSyntax(doc, originRange, boldSymbol, boldRangeRegex, boldContentRegex);\n cm.focus();\n }\n});\n/* harmony default export */ var bold = (Bold);\n// CONCATENATED MODULE: ./src/js/markdownCommands/italic.js\n/**\n * @fileoverview Implements Italic markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar boldItalicRangeRegex = /^(\\*{3}|_{3}).*\\1$/;\nvar italic_boldRangeRegex = /^(\\*{2}|_{2}).*\\1$/;\nvar italicRangeRegex = /^(\\*|_).*\\1$/;\nvar italicContentRegex = /([^*_])[*_]([^*_]+)[*_]([^*_])/g;\n\nvar isBoldItalic = function isBoldItalic(t) {\n return boldItalicRangeRegex.test(t);\n};\n\nvar isBold = function isBold(t) {\n return italic_boldRangeRegex.test(t);\n};\n\nvar isItalic = function isItalic(t) {\n return italicRangeRegex.test(t);\n};\n\nvar italicSymbol = '*';\nvar italic_boldSymbol = '**';\nvar boldItalicSymbol = '***';\nvar italicLength = italicSymbol.length;\nvar boldLength = italic_boldSymbol.length;\nvar boldItalicLength = boldItalicSymbol.length;\n/**\n * remove italic syntax in the middle of given text\n * @param {string} text - text selected\n * @returns {string} - text eliminated all italic in the middle of it's content\n * @ignore\n */\n\nvar removeItalicInsideText = function removeItalicInsideText(text) {\n return text ? text.replace(italicContentRegex, '$1$2$3') : '';\n};\n\nvar italic_replaceText = function replaceText(doc, text, range) {\n // Check 3 cases when both text and expand text\n // case 1 : bold & italic (when expand 3 both front and end) => remove italic\n // case 2 : bold (when expand 2 both front and end) => append\n // case 3 : italic (expand 1 both front and end) => remove\n var expandReplaceBind = expandReplace.bind(this, doc, range);\n return expandReplaceBind(boldItalicLength, isBoldItalic, function (t) {\n return removeSyntax(t, italicSymbol);\n }) || expandReplaceBind(boldLength, isBold, function (t) {\n return appendSyntax(removeItalicInsideText(t), italicSymbol);\n }) || expandReplaceBind(italicLength, isItalic, function (t) {\n return removeSyntax(t, italicSymbol);\n }) || replace(doc, text, isBoldItalic, function (t) {\n return removeSyntax(t, italicSymbol);\n }) || replace(doc, text, isBold, function (t) {\n return appendSyntax(removeItalicInsideText(t), italicSymbol);\n }) || replace(doc, text, isItalic, function (t) {\n return removeSyntax(t, italicSymbol);\n });\n};\n\nvar italic_replaceEmptyText = function replaceEmptyText(doc, range) {\n // Check 3 cases when expand text\n // case 1 : bold & italic => remove italic\n // case 2 : bold => append\n // case 3 : italic => remove\n // if there is no match, make italic\n return expandReplace(doc, range, boldItalicLength, isBoldItalic, function (t) {\n return removeSyntax(t, italicSymbol);\n }) || expandReplace(doc, range, boldLength, isBold, function (t) {\n return appendSyntax(t, italicSymbol);\n }) || expandReplace(doc, range, italicLength, isItalic, function () {\n return '';\n }) || doc.replaceSelection(\"\" + italicSymbol + italicSymbol, 'around');\n};\n/**\n * Italic\n * Add italic markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Italic\n * @ignore\n */\n\n\nvar Italic = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Italic */\n{\n name: 'Italic',\n keyMap: ['CTRL+I', 'META+I'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n\n var _doc$getCursor = doc.getCursor(),\n line = _doc$getCursor.line,\n ch = _doc$getCursor.ch;\n\n var range = mde.getRange();\n var selectionStr = doc.getSelection();\n\n if (selectionStr) {\n // check selectionStr match bold & italic, bold, italic and then\n // if there is no match, append italic\n if (!italic_replaceText(doc, selectionStr, range)) {\n // Before append italic, remove italic inside text and then append italic\n // Example: One*Two*Three => *OneTwoThree*\n doc.replaceSelection(appendSyntax(removeItalicInsideText(selectionStr), italicSymbol), 'around');\n }\n } else {\n italic_replaceEmptyText(doc, range);\n var afterSelectStr = doc.getSelection();\n var size = ch; // If text was not selected, after replace text, move cursor\n\n if (isBoldItalic(afterSelectStr) || isItalic(afterSelectStr) && !isBold(afterSelectStr)) {\n // For example **|** => ***|*** (move cusor +symbolLenth)\n size += italicLength;\n } else {\n // For example *|* => | (move cusor -symbolLenth)\n size -= italicLength;\n }\n\n doc.setCursor(line, size);\n }\n\n cm.focus();\n }\n});\n/* harmony default export */ var italic = (Italic);\n// CONCATENATED MODULE: ./src/js/markdownCommands/strike.js\n/**\n * @fileoverview Implements StrikeThrough markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar strikeRangeRegex = /^~~.*~~$/;\nvar strikeContentRegex = /~~([^~]*)~~/g;\nvar strikeSymbol = '~~';\n/**\n * Strike\n * Add strike markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Strike\n * @ignore\n */\n\nvar Strike = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Strike */\n{\n name: 'Strike',\n keyMap: ['CTRL+S', 'META+S'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var originRange = mde.getRange();\n changeSyntax(doc, originRange, strikeSymbol, strikeRangeRegex, strikeContentRegex);\n cm.focus();\n }\n});\n/* harmony default export */ var strike = (Strike);\n// CONCATENATED MODULE: ./src/js/markdownCommands/blockquote.js\n/**\n * @fileoverview Implements Blockquote markdown command\n * @author NHN FE Development Lab \n */\n\nvar BlockquoteRegex = /^> ?/;\n/**\n * Blockquote\n * Add blockquote markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Blockquote\n * @ignore\n */\n\nvar Blockquote = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Blockquote */\n{\n name: 'Blockquote',\n keyMap: ['ALT+Q', 'ALT+Q'],\n\n /**\n * command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: 0\n };\n var to = {\n line: range.to.line,\n ch: doc.getLineHandle(range.to.line).text.length\n };\n var textToModify = doc.getRange(from, to);\n var textLinesToModify = textToModify.split('\\n');\n\n var isNeedToRemove = this._haveBlockquote(textLinesToModify);\n\n var resultText;\n\n if (isNeedToRemove) {\n resultText = this._removeBlockquote(textLinesToModify);\n } else {\n resultText = this._addBlockquote(textLinesToModify);\n }\n\n doc.replaceRange(resultText.join('\\n'), from, to);\n\n if (isNeedToRemove) {\n var length = textLinesToModify.length;\n\n if (this._isBlockquoteWithSpace(textLinesToModify[length - 1])) {\n range.to.ch -= 2;\n } else {\n range.to.ch -= 1;\n }\n } else {\n range.to.ch += 2;\n }\n\n doc.setCursor(range.to);\n cm.focus();\n },\n\n /**\n * check all text in textArr starts with '>'\n * @param {Array} textArr - text array\n * @returns {boolean} - true if all text in textArr starts with '>'\n * @private\n */\n _haveBlockquote: function _haveBlockquote(textArr) {\n for (var i = 0; i < textArr.length; i += 1) {\n if (!BlockquoteRegex.test(textArr[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * add '> ' to all text in textArr\n * @param {Array} textArr - text array\n * @returns {Array} - new text array added '> '\n * @private\n */\n _addBlockquote: function _addBlockquote(textArr) {\n return textArr.map(function (text) {\n return \"> \" + text;\n });\n },\n\n /**\n * remove '> ' or '>' to all text in textArr\n * @param {Array} textArr - text array\n * @returns {Array} - new text array removed '> ' or '>'\n * @private\n */\n _removeBlockquote: function _removeBlockquote(textArr) {\n return textArr.map(function (text) {\n return text.replace(BlockquoteRegex, '');\n });\n },\n\n /**\n * check text start '> '\n * @param {string} text - text\n * @returns {boolean} - if text start '> ', true\n * @private\n */\n _isBlockquoteWithSpace: function _isBlockquoteWithSpace(text) {\n return /^> /.test(text);\n }\n});\n/* harmony default export */ var blockquote = (Blockquote);\n// CONCATENATED MODULE: ./src/js/markdownCommands/heading.js\n/**\n * @fileoverview Implements Heading markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar heading_FIND_HEADING_RX = /^#+\\s/g;\n/**\n * Heading\n * Add heading markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Heading\n * @ignore\n */\n\nvar Heading = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Heading */\n{\n name: 'Heading',\n\n /**\n * Command Handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n * @param {number} size heading size\n */\n exec: function exec(mde, size) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: 0\n };\n var to = {\n line: range.to.line,\n ch: doc.getLineHandle(range.to.line).text.length\n };\n var lengthOfCurrentLineBefore = doc.getLine(to.line).length;\n var textToModify = doc.getRange(from, to);\n var textLinesToModify = textToModify.split('\\n');\n toArray_default()(textLinesToModify).forEach(function (line, index) {\n textLinesToModify[index] = getHeadingMarkdown(line, size);\n });\n doc.replaceRange(textLinesToModify.join('\\n'), from, to);\n range.to.ch += doc.getLine(to.line).length - lengthOfCurrentLineBefore;\n doc.setSelection(from, range.to);\n cm.focus();\n }\n});\n/**\n * Get heading markdown\n * @param {string} text Source test\n * @param {number} size size\n * @returns {string}\n */\n\nfunction getHeadingMarkdown(text, size) {\n var foundedHeading = text.match(heading_FIND_HEADING_RX);\n var heading = '';\n\n do {\n heading += '#';\n size -= 1;\n } while (size > 0);\n\n if (foundedHeading) {\n var _text$split = text.split(foundedHeading[0]);\n\n text = _text$split[1];\n }\n\n return heading + \" \" + text;\n}\n\n/* harmony default export */ var markdownCommands_heading = (Heading);\n// CONCATENATED MODULE: ./src/js/markdownCommands/paragraph.js\n/**\n * @fileoverview Implements Paragraph markdown command\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Paragraph\n * Convert selected lines to paragraph\n * @extends Command\n * @module markdownCommands/Paragraph\n * @ignore\n */\n\nvar Paragraph = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Paragraph */\n{\n name: 'Paragraph',\n\n /**\n * Command Handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: 0\n };\n var to = {\n line: range.to.line,\n ch: doc.getLineHandle(range.to.line).text.length\n };\n var lengthOfCurrentLineBefore = doc.getLine(to.line).length;\n var textToModify = doc.getRange(from, to);\n var textLines = textToModify.split('\\n');\n toArray_default()(textLines).forEach(function (line, index) {\n textLines[index] = getParagraphMarkdown(line);\n });\n doc.replaceRange(textLines.join('\\n'), from, to);\n range.to.ch += doc.getLine(to.line).length - lengthOfCurrentLineBefore;\n doc.setSelection(from, to);\n cm.focus();\n }\n});\n/**\n * Get paragraph markdown lineText\n * @param {string} lineText line lineText\n * @returns {string}\n */\n\nfunction getParagraphMarkdown(lineText) {\n var headingRx = /^(#{1,6}| *((?:\\*|-|\\d\\.)(?: \\[[ xX]])?)) /;\n return lineText.replace(headingRx, '');\n}\n\n/* harmony default export */ var paragraph = (Paragraph);\n// CONCATENATED MODULE: ./src/js/markdownCommands/hr.js\n/**\n * @fileoverview Implements HR markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * HR\n * Add HR markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/HR\n * @ignore\n */\n\nvar HR = commandManager[\"a\" /* default */].command('markdown',\n/** @lends HR */\n{\n name: 'HR',\n keyMap: ['CTRL+L', 'META+L'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var replaceText = '';\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: range.from.ch\n };\n var to = {\n line: range.to.line,\n ch: range.to.ch\n };\n\n if (range.collapsed) {\n replaceText = doc.getLine(from.line);\n from.ch = 0;\n to.ch = doc.getLineHandle(range.to.line).text.length;\n }\n\n if (doc.getLine(from.line).length) {\n replaceText += '\\n\\n* * *\\n\\n';\n } else {\n replaceText += '\\n* * *\\n';\n }\n\n doc.replaceRange(replaceText, from, to);\n cm.focus();\n }\n});\n/* harmony default export */ var markdownCommands_hr = (HR);\n// CONCATENATED MODULE: ./src/js/markdownCommands/addLink.js\n/**\n * @fileoverview Implements Addlink markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar addLink_decodeURIGraceful = importManager.decodeURIGraceful,\n encodeMarkdownCharacters = importManager.encodeMarkdownCharacters,\n escapeMarkdownCharacters = importManager.escapeMarkdownCharacters;\n/**\n * AddLink\n * Add link markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/AddLink\n * @ignore\n */\n\nvar AddLink = commandManager[\"a\" /* default */].command('markdown',\n/** @lends AddLink */\n{\n name: 'AddLink',\n\n /**\n * command handler for AddLink\n * @param {MarkdownEditor} mde - MarkdownEditor instance\n * @param {object} data - data for image\n */\n exec: function exec(mde, data) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: range.from.ch\n };\n var to = {\n line: range.to.line,\n ch: range.to.ch\n };\n var linkText = data.linkText,\n url = data.url;\n linkText = addLink_decodeURIGraceful(linkText);\n linkText = escapeMarkdownCharacters(linkText);\n url = encodeMarkdownCharacters(url);\n var replaceText = \"[\" + linkText + \"](\" + url + \")\";\n doc.replaceRange(replaceText, from, to);\n cm.focus();\n }\n});\n/* harmony default export */ var addLink = (AddLink);\n// CONCATENATED MODULE: ./src/js/markdownCommands/addImage.js\n/**\n * @fileoverview Implments AddImage markdown command\n * @author NHN FE Development Lab \n */\n\n\nvar addImage_decodeURIGraceful = importManager.decodeURIGraceful,\n addImage_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters,\n addImage_escapeMarkdownCharacters = importManager.escapeMarkdownCharacters;\n/**\n * AddImage\n * Add Image markdown syntax to markdown Editor\n * @extends Command\n * @module markdownCommands/AddImage\n * @ignore\n */\n\nvar AddImage = commandManager[\"a\" /* default */].command('markdown',\n/** @lends AddImage */\n{\n name: 'AddImage',\n\n /**\n * Command Handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n * @param {object} data data for image\n */\n exec: function exec(mde, data) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var from = {\n line: range.from.line,\n ch: range.from.ch\n };\n var to = {\n line: range.to.line,\n ch: range.to.ch\n };\n var altText = data.altText,\n imageUrl = data.imageUrl;\n altText = addImage_decodeURIGraceful(altText);\n altText = addImage_escapeMarkdownCharacters(altText);\n imageUrl = addImage_encodeMarkdownCharacters(imageUrl);\n var replaceText = \"![\" + altText + \"](\" + imageUrl + \")\";\n doc.replaceRange(replaceText, from, to, '+addImage');\n cm.focus();\n }\n});\n/* harmony default export */ var addImage = (AddImage);\n// CONCATENATED MODULE: ./src/js/markdownCommands/ul.js\n/**\n * @fileoverview Implements UL markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * UL\n * Add unordered list markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/UL\n * @ignore\n */\n\nvar UL = commandManager[\"a\" /* default */].command('markdown',\n/** @lends UL */\n{\n name: 'UL',\n keyMap: ['CTRL+U', 'META+U'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var range = mde.getCurrentRange();\n var listManager = mde.componentManager.getManager('list');\n listManager.changeSyntax(range, 'ul');\n }\n});\n/* harmony default export */ var markdownCommands_ul = (UL);\n// CONCATENATED MODULE: ./src/js/markdownCommands/ol.js\n/**\n * @fileoverview Implements OL markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * OL\n * Add ordered list markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/OL\n * @ignore\n */\n\nvar OL = commandManager[\"a\" /* default */].command('markdown',\n/** @lends OL */\n{\n name: 'OL',\n keyMap: ['CTRL+O', 'META+O'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var range = mde.getCurrentRange();\n var listManager = mde.componentManager.getManager('list');\n listManager.changeSyntax(range, 'ol');\n }\n});\n/* harmony default export */ var ol = (OL);\n// CONCATENATED MODULE: ./src/js/markdownCommands/indent.js\n/**\n * @fileoverview Implements Indent markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * Indent\n * Add Indent markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/inent\n * @ignore\n */\n\nvar Indent = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Indent */\n{\n name: 'Indent',\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n cm.execCommand('indentOrderedList');\n }\n});\n/* harmony default export */ var markdownCommands_indent = (Indent);\n// CONCATENATED MODULE: ./src/js/markdownCommands/outdent.js\n/**\n * @fileoverview Implements Outdent markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * Outdent\n * Add Outdent markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/outdent\n * @ignore\n */\n\nvar Outdent = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Outdent */\n{\n name: 'Outdent',\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n cm.execCommand('indentLessOrderedList');\n }\n});\n/* harmony default export */ var outdent = (Outdent);\n// CONCATENATED MODULE: ./src/js/markdownCommands/table.js\n/**\n * @fileoverview Implements Table markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * Table\n * Add table markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Table\n * @ignore\n */\n\nvar Table = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Table */\n{\n name: 'Table',\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n * @param {number} col column count\n * @param {number} row row count\n * @param {Array} data initial table data\n */\n exec: function exec(mde, col, row, data) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var table = '\\n';\n\n if (cm.getCursor().ch > 0) {\n table += '\\n';\n }\n\n table += makeHeader(col, data);\n table += makeBody(col, row - 1, data);\n doc.replaceSelection(table);\n\n if (!data) {\n cm.setCursor(cm.getCursor().line - row, 2);\n }\n\n mde.focus();\n }\n});\n/**\n * makeHeader\n * make table header markdown string\n * @param {number} col Column count\n * @param {array} data Cell's text content\n * @returns {string} markdown string\n */\n\nfunction makeHeader(col, data) {\n var header = '|';\n var border = '|';\n var index = 0;\n\n while (col) {\n if (data) {\n header += \" \" + data[index] + \" |\";\n index += 1;\n } else {\n header += ' |';\n }\n\n border += ' --- |';\n col -= 1;\n }\n\n return header + \"\\n\" + border + \"\\n\";\n}\n/**\n * makeBody\n * make table body markdown string\n * @param {number} col column count\n * @param {number} row row count\n * @param {Array} data initial table data\n * @returns {string} html string\n */\n\n\nfunction makeBody(col, row, data) {\n var body = '';\n var index = col;\n\n for (var irow = 0; irow < row; irow += 1) {\n body += '|';\n\n for (var icol = 0; icol < col; icol += 1) {\n if (data) {\n body += \" \" + data[index] + \" |\";\n index += 1;\n } else {\n body += ' |';\n }\n }\n\n body += '\\n';\n }\n\n body = body.replace(/\\n$/g, '');\n return body;\n}\n\n/* harmony default export */ var markdownCommands_table = (Table);\n// CONCATENATED MODULE: ./src/js/markdownCommands/task.js\n/**\n * @fileoverview Implements Task markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * Task\n * @extends Command\n * @module markdownCommands/Task\n * @ignore\n */\n\nvar Task = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Task */\n{\n name: 'Task',\n keyMap: ['ALT+T', 'ALT+T'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var range = mde.getCurrentRange();\n var listManager = mde.componentManager.getManager('list');\n listManager.changeSyntax(range, 'task');\n }\n});\n/* harmony default export */ var markdownCommands_task = (Task);\n// CONCATENATED MODULE: ./src/js/markdownCommands/code.js\n/**\n * @fileoverview Implements Code markdown command\n * @author NHN FE Development Lab \n */\n\nvar codeRangeRegex = /^`([^`]+)`$/;\nvar codeContentRegex = /`([^`]+)`/g;\n/**\n * Code\n * Add code markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/Code\n * @ignore\n */\n\nvar Code = commandManager[\"a\" /* default */].command('markdown',\n/** @lends Code */\n{\n name: 'Code',\n keyMap: ['SHIFT+CTRL+C', 'SHIFT+META+C'],\n\n /**\n * Command Handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var selection = doc.getSelection();\n var cursor = cm.getCursor();\n var hasSyntax = this.hasStrikeSyntax(selection);\n var result;\n\n if (hasSyntax) {\n result = this.remove(selection);\n result = this._removeCodeSyntax(result);\n } else {\n result = this._removeCodeSyntax(selection);\n result = this.append(result);\n }\n\n doc.replaceSelection(result, 'around');\n\n if (!selection && !hasSyntax) {\n this.setCursorToCenter(doc, cursor, hasSyntax);\n }\n\n cm.focus();\n },\n\n /**\n * set cursor to center\n * @param {CodeMirror.doc} doc - codemirror document\n * @param {object} cursor - codemirror cursor\n * @param {boolean} isRemoved - whether it involes deletion\n */\n setCursorToCenter: function setCursorToCenter(doc, cursor, isRemoved) {\n var pos = isRemoved ? -1 : 1;\n doc.setCursor(cursor.line, cursor.ch + pos);\n },\n\n /**\n * has code syntax\n * @param {string} text Source text\n * @returns {boolean} true if the given text has a code syntax\n */\n hasStrikeSyntax: function hasStrikeSyntax(text) {\n return codeRangeRegex.test(text);\n },\n\n /**\n * apply Code\n * @param {string} text - selected text\n * @returns {string} - text after code syntax applied\n */\n append: function append(text) {\n return \"`\" + text + \"`\";\n },\n\n /**\n * remove Code\n * @param {string} text - selected text\n * @returns {string} - text after code syntax removed\n */\n remove: function remove(text) {\n return text.substr(1, text.length - 2);\n },\n\n /**\n * remove bold syntax in the middle of given text\n * @param {string} text - text selected\n * @returns {string} - text eliminated all code in the middle of it's content\n * @private\n */\n _removeCodeSyntax: function _removeCodeSyntax(text) {\n return text ? text.replace(codeContentRegex, '$1') : '';\n }\n});\n/* harmony default export */ var markdownCommands_code = (Code);\n// CONCATENATED MODULE: ./src/js/markdownCommands/codeBlock.js\n/**\n * @fileoverview Implements CodeBlock markdown command\n * @author NHN FE Development Lab \n */\n\n/**\n * CodeBlock\n * Add CodeBlock markdown syntax to markdown editor\n * @extends Command\n * @module markdownCommands/CodeBlock\n * @ignore\n */\n\nvar CodeBlock = commandManager[\"a\" /* default */].command('markdown',\n/** @lends CodeBlock */\n{\n name: 'CodeBlock',\n keyMap: ['SHIFT+CTRL+P', 'SHIFT+META+P'],\n\n /**\n * Command handler\n * @param {MarkdownEditor} mde MarkdownEditor instance\n */\n exec: function exec(mde) {\n var cm = mde.getEditor();\n var doc = cm.getDoc();\n var range = mde.getCurrentRange();\n var replaceText = ['```', doc.getSelection(), '```'];\n var cursorOffset = 1; // insert a line break to the front if the selection starts in the middle of a text\n\n if (range.from.ch !== 0) {\n replaceText.unshift('');\n cursorOffset += 1;\n } // insert a line break to the end if the selection has trailing text\n\n\n if (range.to.ch !== doc.getLine(range.to.line).length) {\n replaceText.push('');\n }\n\n doc.replaceSelection(replaceText.join('\\n'));\n cm.setCursor(range.from.line + cursorOffset, 0);\n cm.focus();\n }\n});\n/* harmony default export */ var markdownCommands_codeBlock = (CodeBlock);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/bold.js\n/**\n * @fileoverview Implements bold WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Bold\n * Add bold to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Bold\n * @ignore\n */\n\nvar bold_Bold = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Bold */\n{\n name: 'Bold',\n keyMap: ['CTRL+B', 'META+B'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var tableSelectionManager = wwe.componentManager.getManager('tableSelection');\n wwe.focus();\n\n if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) {\n tableSelectionManager.styleToSelectedCells(styleBold);\n var range = sq.getSelection();\n range.collapse(true);\n sq.setSelection(range);\n } else {\n styleBold(sq);\n dom[\"a\" /* default */].optimizeRange(sq.getSelection(), 'B');\n }\n }\n});\n/**\n * Style bold.\n * @param {object} sq - squire editor instance\n */\n\nfunction styleBold(sq) {\n if (sq.hasFormat('b') || sq.hasFormat('strong')) {\n sq.changeFormat(null, {\n tag: 'b'\n });\n } else if (!sq.hasFormat('PRE')) {\n if (sq.hasFormat('code')) {\n sq.changeFormat(null, {\n tag: 'code'\n });\n }\n\n sq.bold();\n }\n}\n\n/* harmony default export */ var wysiwygCommands_bold = (bold_Bold);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/italic.js\n/**\n * @fileoverview Implements italic WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Italic\n * Add Italic to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Italic\n * @ignore\n */\n\nvar italic_Italic = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Italic */\n{\n name: 'Italic',\n keyMap: ['CTRL+I', 'META+I'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var tableSelectionManager = wwe.componentManager.getManager('tableSelection');\n wwe.focus();\n\n if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) {\n tableSelectionManager.styleToSelectedCells(styleItalic);\n var range = sq.getSelection();\n range.collapse(true);\n sq.setSelection(range);\n } else {\n styleItalic(sq);\n dom[\"a\" /* default */].optimizeRange(sq.getSelection(), 'I');\n }\n }\n});\n/**\n * Style italic.\n * @param {object} sq - squire editor instance\n */\n\nfunction styleItalic(sq) {\n if (sq.hasFormat('i') || sq.hasFormat('em')) {\n sq.changeFormat(null, {\n tag: 'i'\n });\n } else if (!sq.hasFormat('PRE')) {\n if (sq.hasFormat('code')) {\n sq.changeFormat(null, {\n tag: 'code'\n });\n }\n\n sq.italic();\n }\n}\n\n/* harmony default export */ var wysiwygCommands_italic = (italic_Italic);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/strike.js\n/**\n * @fileoverview Implements strike WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Strike\n * Add strike to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Strike\n * @ignore\n */\n\nvar strike_Strike = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Strike */\n{\n name: 'Strike',\n keyMap: ['CTRL+S', 'META+S'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe WysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var tableSelectionManager = wwe.componentManager.getManager('tableSelection');\n wwe.focus();\n\n if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) {\n tableSelectionManager.styleToSelectedCells(styleStrike);\n var range = sq.getSelection();\n range.collapse(true);\n sq.setSelection(range);\n } else {\n styleStrike(sq);\n dom[\"a\" /* default */].optimizeRange(sq.getSelection(), 'S');\n }\n }\n});\n/**\n * Style strike.\n * @param {object} sq - squire editor instance\n */\n\nfunction styleStrike(sq) {\n if (sq.hasFormat('S')) {\n sq.changeFormat(null, {\n tag: 'S'\n });\n } else if (!sq.hasFormat('PRE')) {\n if (sq.hasFormat('code')) {\n sq.changeFormat(null, {\n tag: 'code'\n });\n }\n\n sq.strikethrough();\n }\n}\n\n/* harmony default export */ var wysiwygCommands_strike = (strike_Strike);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/blockquote.js\n/**\n * @fileoverview Implements block quote WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n/**\n * Blockquote\n * Add Blockquote to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Blockquote\n * @ignore\n */\n\nvar blockquote_Blockquote = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Blockquote */\n{\n name: 'Blockquote',\n keyMap: ['ALT+Q', 'ALT+Q'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n wwe.focus();\n\n if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) {\n if (sq.hasFormat('BLOCKQUOTE')) {\n sq.decreaseQuoteLevel();\n } else {\n sq.increaseQuoteLevel();\n }\n }\n }\n});\n/* harmony default export */ var wysiwygCommands_blockquote = (blockquote_Blockquote);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/addImage.js\n/**\n * @fileoverview Implements AddImage wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\nvar wysiwygCommands_addImage_decodeURIGraceful = importManager.decodeURIGraceful,\n wysiwygCommands_addImage_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters;\n/**\n * AddImage\n * Add Image markdown syntax to wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/AddImage\n * @ignore\n */\n\nvar addImage_AddImage = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends AddImage */\n{\n name: 'AddImage',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n * @param {object} data data for image\n */\n exec: function exec(wwe, data) {\n var sq = wwe.getEditor();\n var altText = data.altText,\n imageUrl = data.imageUrl;\n altText = wysiwygCommands_addImage_decodeURIGraceful(altText);\n imageUrl = wysiwygCommands_addImage_encodeMarkdownCharacters(imageUrl);\n wwe.focus();\n\n if (!sq.hasFormat('PRE')) {\n sq.insertImage(imageUrl, {\n alt: altText\n });\n }\n }\n});\n/* harmony default export */ var wysiwygCommands_addImage = (addImage_AddImage);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/addLink.js\n/**\n * @fileoverview Implements AddLink wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n\nvar wysiwygCommands_addLink_decodeURIGraceful = importManager.decodeURIGraceful,\n addLink_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters;\n/**\n * AddLink\n * Add link markdown syntax to wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/AddLink\n * @ignore\n */\n\nvar addLink_AddLink = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends AddLink */\n{\n name: 'AddLink',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe - wysiwygEditor instance\n * @param {object} data - data for image\n */\n exec: function exec(wwe, data) {\n var sq = wwe.getEditor();\n var linkAttibute = wwe.getLinkAttribute();\n var url = data.url,\n linkText = data.linkText;\n linkText = wysiwygCommands_addLink_decodeURIGraceful(linkText);\n url = addLink_encodeMarkdownCharacters(url);\n wwe.focus();\n\n if (!sq.hasFormat('PRE')) {\n sq.removeAllFormatting();\n\n if (sq.getSelectedText()) {\n sq.makeLink(url, linkAttibute);\n } else {\n var link = sq.createElement('A', extend_default()({\n href: url\n }, linkAttibute));\n link.textContent = linkText;\n sq.insertElement(link);\n }\n }\n }\n});\n/* harmony default export */ var wysiwygCommands_addLink = (addLink_AddLink);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/hr.js\n/**\n * @fileoverview Implements HR wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n/**\n * HR\n * Add horizontal line markdown syntax to wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/HR\n * @ignore\n */\n\nvar hr_HR = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends HR */\n{\n name: 'HR',\n keyMap: ['CTRL+L', 'META+L'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n\n if (range.collapsed && !sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) {\n var hr = document.createElement('hr');\n var currentNode = dom[\"a\" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset);\n var nextBlockNode = dom[\"a\" /* default */].getTopNextNodeUnder(currentNode, wwe.getBody()); // If nextBlockNode is div that has hr and has contenteditable as false,\n // nextBlockNode should be set as nextSibling that is normal block.\n\n if (nextBlockNode && !dom[\"a\" /* default */].isTextNode(nextBlockNode)) {\n while (nextBlockNode && nextBlockNode.getAttribute('contenteditable') === 'false') {\n nextBlockNode = nextBlockNode.nextSibling;\n }\n }\n\n if (!nextBlockNode) {\n nextBlockNode = dom[\"a\" /* default */].createEmptyLine();\n dom[\"a\" /* default */].append(wwe.getBody(), nextBlockNode);\n }\n\n sq.modifyBlocks(function (frag) {\n frag.appendChild(hr);\n return frag;\n });\n var previousSibling = hr.previousSibling;\n\n if (previousSibling && dom[\"a\" /* default */].isTextNode(previousSibling) && dom[\"a\" /* default */].getTextLength(previousSibling) === 0) {\n hr.parentNode.removeChild(previousSibling);\n }\n\n hr.parentNode.replaceChild(dom[\"a\" /* default */].createHorizontalRule(), hr);\n range.selectNodeContents(nextBlockNode);\n range.collapse(true);\n sq.setSelection(range);\n sq.saveUndoState(range);\n }\n\n wwe.focus();\n }\n});\n/* harmony default export */ var wysiwygCommands_hr = (hr_HR);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/heading.js\n/**\n * @fileoverview Implements Heading wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Heading\n * Convert selected root level contents to heading with size wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/Heading\n * @ignore\n */\n\nvar heading_Heading = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Heading */\n{\n name: 'Heading',\n\n /**\n * Command handler\n * @param {WysiwygEditor} wwe WYSIWYGEditor instance\n * @param {Number} size size\n */\n exec: function exec(wwe, size) {\n var sq = wwe.getEditor();\n var blockTagName = 'h1, h2, h3, h4, h5, h6, div';\n wwe.focus();\n\n if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) {\n sq.modifyBlocks(function (fragment) {\n var blocks = dom[\"a\" /* default */].children(fragment, blockTagName);\n toArray_default()(blocks).forEach(function (block) {\n var headingHTML = \"h\" + size;\n\n if (dom[\"a\" /* default */].getNodeName(block) === 'DIV') {\n dom[\"a\" /* default */].wrap(block, headingHTML);\n } else {\n var wrapperHeading = document.createElement(headingHTML);\n dom[\"a\" /* default */].insertBefore(wrapperHeading, block);\n wrapperHeading.innerHTML = block.innerHTML;\n dom[\"a\" /* default */].remove(block);\n }\n });\n return fragment;\n });\n }\n }\n});\n/* harmony default export */ var wysiwygCommands_heading = (heading_Heading);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/paragraph.js\n/**\n * @fileoverview Implements Paragraph wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * Paragraph\n * Convert selected contents to paragraph only heading and list\n * @extends Command\n * @module wysiwygCommands/Paragraph\n * @ignore\n */\n\nvar paragraph_Paragraph = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Paragraph */\n{\n name: 'Paragraph',\n\n /**\n * Command handler\n * @param {WysiwygEditor} wwe WYSIWYGEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n wwe.focus();\n\n if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) {\n sq.modifyBlocks(function (fragment) {\n var newFragment = document.createDocumentFragment();\n toArray_default()(fragment.childNodes).forEach(function (block) {\n if (block.nodeName.match(/h\\d/i)) {\n appendChildrenTo(newFragment, block.children);\n } else if (block.nodeName.match(/ul|ol/i)) {\n dom[\"a\" /* default */].findAll(block, 'li').forEach(function (listItem) {\n appendChildrenTo(newFragment, listItem.children);\n });\n } else {\n newFragment.appendChild(block);\n }\n });\n return newFragment;\n });\n }\n }\n});\n/**\n * Append children\n * @param {HTMLElement} parent - target to append\n * @param {Array.} children - appending children\n */\n\nfunction appendChildrenTo(parent, children) {\n toArray_default()(children).forEach(function (child) {\n parent.appendChild(child.cloneNode(true));\n });\n}\n\n/* harmony default export */ var wysiwygCommands_paragraph = (paragraph_Paragraph);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/ul.js\n/**\n * @fileoverview Implements ul WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n/**\n * UL\n * Add UL to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/UL\n * @ignore\n */\n\nvar ul_UL = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends UL */\n{\n name: 'UL',\n keyMap: ['CTRL+U', 'META+U'],\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe WYSIWYGEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var listManager = wwe.componentManager.getManager('list');\n var startContainer = range.startContainer,\n endContainer = range.endContainer,\n startOffset = range.startOffset,\n endOffset = range.endOffset;\n var newLIs = [];\n wwe.focus();\n sq.saveUndoState(range);\n\n if (listManager.isAvailableMakeListInTable()) {\n newLIs = listManager.createListInTable(range, 'UL');\n } else {\n var lines = listManager.getLinesOfSelection(startContainer, endContainer);\n\n for (var i = 0; i < lines.length; i += 1) {\n var newLI = this._changeFormatToUnorderedListIfNeed(wwe, lines[i]);\n\n if (newLI) {\n newLIs.push(newLI);\n }\n }\n }\n\n if (newLIs.length) {\n listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs);\n }\n },\n\n /**\n * Change format to unordered list if need\n * @param {WysiwygEditor} wwe Wysiwyg editor instance\n * @param {HTMLElement} target Element target for change\n * @returns {HTMLElement} newly created list\n * @private\n */\n _changeFormatToUnorderedListIfNeed: function _changeFormatToUnorderedListIfNeed(wwe, target) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var taskManager = wwe.componentManager.getManager('task');\n var newLI;\n\n if (!sq.hasFormat('PRE')) {\n range.setStart(target, 0);\n range.collapse(true);\n sq.setSelection(range);\n\n if (sq.hasFormat('LI')) {\n wwe.saveSelection(range);\n taskManager.unformatTask(range.startContainer);\n sq.replaceParent(range.startContainer, 'ol', 'ul');\n wwe.restoreSavedSelection();\n } else {\n wwe.unwrapBlockTag();\n sq.makeUnorderedList();\n }\n\n newLI = sq.getSelection().startContainer;\n }\n\n return newLI;\n }\n});\n/* harmony default export */ var wysiwygCommands_ul = (ul_UL);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/ol.js\n/**\n * @fileoverview Implements ol WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n/**\n * OL\n * Add OL to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/OL\n * @ignore\n */\n\nvar ol_OL = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends OL */\n{\n name: 'OL',\n keyMap: ['CTRL+O', 'META+O'],\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe WYSIWYGEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var listManager = wwe.componentManager.getManager('list');\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n var newLIs = [];\n wwe.focus();\n sq.saveUndoState(range);\n\n if (listManager.isAvailableMakeListInTable()) {\n newLIs = listManager.createListInTable(range, 'OL');\n } else {\n var lines = listManager.getLinesOfSelection(startContainer, endContainer);\n\n for (var i = 0; i < lines.length; i += 1) {\n var newLI = this._changeFormatToOrderedListIfNeed(wwe, lines[i]);\n\n if (newLI) {\n newLIs.push(newLI);\n }\n }\n }\n\n if (newLIs.length) {\n listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs);\n }\n },\n\n /**\n * Change format to unordered list if need\n * @param {WysiwygEditor} wwe Wysiwyg editor instance\n * @param {HTMLElement} target Element target for change\n * @returns {HTMLElement} newly created list item\n * @private\n */\n _changeFormatToOrderedListIfNeed: function _changeFormatToOrderedListIfNeed(wwe, target) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var taskManager = wwe.componentManager.getManager('task');\n var newLI;\n\n if (!sq.hasFormat('PRE')) {\n range.setStart(target, 0);\n range.collapse(true);\n sq.setSelection(range);\n\n if (sq.hasFormat('LI')) {\n wwe.saveSelection(range);\n taskManager.unformatTask(range.startContainer);\n sq.replaceParent(range.startContainer, 'ul', 'ol');\n wwe.restoreSavedSelection();\n } else {\n wwe.unwrapBlockTag();\n sq.makeOrderedList();\n }\n\n newLI = sq.getSelection().startContainer;\n }\n\n return newLI;\n }\n});\n/* harmony default export */ var wysiwygCommands_ol = (ol_OL);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/table.js\n/**\n * @fileoverview Implements table WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n/**\n * Table\n * Add table to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Table\n * @ignore\n */\n\nvar table_Table = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Table */\n{\n name: 'Table',\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n * @param {number} col column count\n * @param {number} row row count\n * @param {Array} data initial table data\n */\n exec: function exec(wwe, col, row, data) {\n var sq = wwe.getEditor();\n var tableIDClassName = wwe.componentManager.getManager('table').getTableIDClassName();\n var tableHTMLString;\n\n if (!sq.getSelection().collapsed || sq.hasFormat('TABLE') || sq.hasFormat('PRE')) {\n wwe.focus();\n return;\n }\n\n tableHTMLString = \"\";\n tableHTMLString += table_makeHeader(col, data);\n tableHTMLString += table_makeBody(col, row - 1, data);\n tableHTMLString += '
    ';\n sq.insertHTML(tableHTMLString);\n wwe.focus();\n\n if (!data) {\n focusToFirstTh(sq, wwe.getBody().querySelector(\".\" + tableIDClassName));\n }\n }\n});\n/**\n * Focus to first th\n * @param {Squire} sq Squire instance\n * @param {HTMLElement} table wrapped table element\n */\n\nfunction focusToFirstTh(sq, table) {\n var range = sq.getSelection();\n range.selectNodeContents(table.querySelector('th'));\n range.collapse(true);\n sq.setSelection(range);\n}\n/**\n * makeHeader\n * make table header html string\n * @param {number} col column count\n * @param {string} data cell data\n * @returns {string} html string\n */\n\n\nfunction table_makeHeader(col, data) {\n var header = '';\n var index = 0;\n\n while (col) {\n header += '';\n\n if (data) {\n header += data[index];\n index += 1;\n }\n\n header += '';\n col -= 1;\n }\n\n header += '';\n return header;\n}\n/**\n * makeBody\n * make table body html string\n * @param {number} col column count\n * @param {number} row row count\n * @param {string} data cell data\n * @returns {string} html string\n */\n\n\nfunction table_makeBody(col, row, data) {\n var body = '';\n var index = col;\n\n for (var irow = 0; irow < row; irow += 1) {\n body += '';\n\n for (var icol = 0; icol < col; icol += 1) {\n body += '';\n\n if (data) {\n body += data[index];\n index += 1;\n }\n\n body += '';\n }\n\n body += '';\n }\n\n body += '';\n return body;\n}\n\n/* harmony default export */ var wysiwygCommands_table = (table_Table);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAddRow.js\n/**\n * @fileoverview Implements table add row WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * AddRow\n * Add Row to selected table\n * @extends Command\n * @module wysiwygCommands/TableAddRow\n * @ignore\n */\n\nvar TableAddRow = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends AddRow */\n{\n name: 'AddRow',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var selectedRowLength = getSelectedRowsLength(wwe);\n var tr, newRow;\n wwe.focus();\n\n if (sq.hasFormat('TD')) {\n sq.saveUndoState(range);\n tr = dom[\"a\" /* default */].closest(range.startContainer, 'tr');\n\n for (var i = 0; i < selectedRowLength; i += 1) {\n newRow = getNewRow(tr);\n dom[\"a\" /* default */].insertAfter(newRow, tr);\n }\n\n focusToFirstTd(sq, newRow);\n } else if (sq.hasFormat('TH')) {\n sq.saveUndoState(range);\n tr = dom[\"a\" /* default */].closest(range.startContainer, 'tr');\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(tr, 'thead'),\n thead = _domUtils$parents[0];\n\n var tbody = thead.nextSibling;\n\n if (matches_default()(tbody, 'tbody')) {\n var _domUtils$children = dom[\"a\" /* default */].children(tbody, 'tr');\n\n tr = _domUtils$children[0];\n }\n\n for (var _i = 0; _i < selectedRowLength; _i += 1) {\n newRow = getNewRow(tr);\n dom[\"a\" /* default */].insertBefore(newRow, tr);\n }\n\n focusToFirstTd(sq, newRow);\n }\n }\n});\n/**\n * get number of selected rows\n * @param {WysiwygEditor} wwe - wysiwygEditor instance\n * @returns {number} - number of selected rows\n * @ignore\n */\n\nfunction getSelectedRowsLength(wwe) {\n var selectionMgr = wwe.componentManager.getManager('tableSelection');\n var selectedCells = selectionMgr.getSelectedCells();\n var length = 1;\n\n if (selectedCells.length > 1) {\n var first = selectedCells[0];\n var last = selectedCells[selectedCells.length - 1];\n var range = selectionMgr.getSelectionRangeFromTable(first, last);\n length = range.to.row - range.from.row + 1;\n }\n\n return length;\n}\n/**\n * Get new row of given row\n * @param {HTMLElement} tr - wrapped table row\n * @returns {HTMLElement} - new cloned element\n * @ignore\n */\n\n\nfunction getNewRow(tr) {\n var cloned = tr.cloneNode(true);\n var htmlString = browser_default.a.msie ? '' : '
    ';\n dom[\"a\" /* default */].findAll(cloned, 'td').forEach(function (td) {\n td.innerHTML = htmlString;\n });\n return cloned;\n}\n/**\n * Focus to first table cell\n * @param {Squire} sq - Squire instance\n * @param {HTMLElement} tr - wrapped table row\n * @ignore\n */\n\n\nfunction focusToFirstTd(sq, tr) {\n var range = sq.getSelection();\n range.selectNodeContents(tr.querySelector('td'));\n range.collapse(true);\n sq.setSelection(range);\n}\n\n/* harmony default export */ var tableAddRow = (TableAddRow);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAddCol.js\n/**\n * @fileoverview Implements table add column WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n/**\n * AddCol\n * Add col to selected table\n * @extends Command\n * @module wysiwygCommands/TableAddCol\n * @ignore\n */\n\nvar TableAddCol = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends AddCol */\n{\n name: 'AddCol',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var numberOfCols = getNumberOfCols(wwe);\n var cell;\n wwe.focus();\n\n if (sq.hasFormat('TR')) {\n sq.saveUndoState(range);\n cell = getCellByRange(range);\n addColToCellAfter(cell, numberOfCols);\n focusToNextCell(sq, cell);\n }\n }\n});\n/**\n * get number of selected cols\n * @param {WysiwygEditor} wwe - wysiwyg editor instance\n * @returns {number} - number of selected cols\n * @ignore\n */\n\nfunction getNumberOfCols(wwe) {\n var selectionMgr = wwe.componentManager.getManager('tableSelection');\n var selectedCells = selectionMgr.getSelectedCells();\n var length = 1;\n\n if (selectedCells.length > 0) {\n var maxLength = selectedCells[0].parentNode.querySelectorAll('td, th').length;\n length = Math.min(maxLength, selectedCells.length);\n }\n\n return length;\n}\n/**\n * Get cell by range object\n * @param {Range} range - range\n * @returns {HTMLElement} - html element\n * @ignore\n */\n\n\nfunction getCellByRange(range) {\n var cell = range.startContainer;\n\n if (dom[\"a\" /* default */].getNodeName(cell) !== 'TD' && dom[\"a\" /* default */].getNodeName(cell) !== 'TH') {\n cell = dom[\"a\" /* default */].closest(cell, 'td, th');\n }\n\n return cell;\n}\n/**\n * Add column to after the current cell\n * @param {HTMLElement} cell - wrapped table cell\n * @param {number} [numberOfCols=1] - number of cols\n * @ignore\n */\n\n\nfunction addColToCellAfter(cell, numberOfCols) {\n if (numberOfCols === void 0) {\n numberOfCols = 1;\n }\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(cell, 'table'),\n table = _domUtils$parents[0];\n\n if (table) {\n var index = inArray_default()(cell, toArray_default()(cell.parentNode.childNodes));\n var cellToAdd;\n dom[\"a\" /* default */].findAll(table, 'tr').forEach(function (tr) {\n var isTBody = dom[\"a\" /* default */].getNodeName(tr.parentNode) === 'TBODY';\n var isMSIE = browser_default.a.msie;\n var currentCell = tr.children[index];\n\n for (var i = 0; i < numberOfCols; i += 1) {\n if (isTBody) {\n cellToAdd = document.createElement('td');\n } else {\n cellToAdd = document.createElement('th');\n }\n\n if (!isMSIE) {\n cellToAdd.appendChild(document.createElement('br'));\n }\n\n dom[\"a\" /* default */].insertAfter(cellToAdd, currentCell);\n }\n });\n }\n}\n/**\n * Focus to next cell\n * @param {Squire} sq - Squire instance\n * @param {HTMLElement} cell - wrapped table cell\n * @ignore\n */\n\n\nfunction focusToNextCell(sq, cell) {\n var range = sq.getSelection();\n range.selectNodeContents(cell.nextSibling);\n range.collapse(true);\n sq.setSelection(range);\n}\n\n/* harmony default export */ var tableAddCol = (TableAddCol);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemoveRow.js\n/**\n * @fileoverview Implements table remove row WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * RemoveRow\n * remove Row to selected table\n * @extends Command\n * @module wysiwygCommands/TableRemoveRow\n * @ignore\n */\n\nvar TableRemoveRow = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends RemoveRow */\n{\n name: 'RemoveRow',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(range.startContainer, 'table'),\n table = _domUtils$parents[0];\n\n var selectionMgr = wwe.componentManager.getManager('tableSelection');\n var tableMgr = wwe.componentManager.getManager('table');\n var trs = getTrs(range, selectionMgr, table);\n var tbodyRowLength = table.querySelectorAll('tbody tr').length;\n wwe.focus();\n\n if ((sq.hasFormat('TD') || sq.hasFormat('TABLE')) && tbodyRowLength > 1) {\n sq.saveUndoState(range);\n var firstTr = trs[0];\n var lastTr = trs[trs.length - 1];\n var nextFocus = lastTr && lastTr.nextSibling ? lastTr.nextSibling : firstTr && firstTr.previousSibling;\n\n if (nextFocus) {\n tableRemoveRow_focusToFirstTd(sq, range, nextFocus, tableMgr);\n }\n\n trs.forEach(function (tr) {\n return dom[\"a\" /* default */].remove(tr);\n });\n }\n\n selectionMgr.removeClassAttrbuteFromAllCellsIfNeed();\n }\n});\n/**\n * Focus to first TD in given TR\n * @param {SquireExt} sq Squire instance\n * @param {Range} range Range object\n * @param {HTMLElement} tr HTMLElement wrapped TR\n * @param {object} tableMgr Table manager\n */\n\nfunction tableRemoveRow_focusToFirstTd(sq, range, tr, tableMgr) {\n var nextFocusCell = tr.querySelector('td');\n range.setStart(nextFocusCell, 0);\n range.collapse(true);\n tableMgr.setLastCellNode(nextFocusCell);\n sq.setSelection(range);\n}\n/**\n * Get start, end row index from current range\n * @param {HTMLElement} firstSelectedCell Range object\n * @param {object} rangeInformation Range information object\n * @param {HTMLElement} table HTMLElement wrapped TABLE\n * @returns {HTMLElement}\n */\n\n\nfunction getSelectedRows(firstSelectedCell, rangeInformation, table) {\n var tbodyRowLength = table.querySelectorAll('tbody tr').length;\n var isStartContainerInThead = dom[\"a\" /* default */].parents(firstSelectedCell, 'thead').length;\n var startRowIndex = rangeInformation.from.row;\n var endRowIndex = rangeInformation.to.row;\n\n if (isStartContainerInThead) {\n startRowIndex += 1;\n }\n\n var isWholeTbodySelected = (startRowIndex === 1 || isStartContainerInThead) && endRowIndex === tbodyRowLength;\n\n if (isWholeTbodySelected) {\n endRowIndex -= 1;\n }\n\n return dom[\"a\" /* default */].findAll(table, 'tr').slice(startRowIndex, endRowIndex + 1);\n}\n/**\n * Get TRs\n * @param {Range} range Range object\n * @param {object} selectionMgr Table selection manager\n * @param {HTMLElement} table current table\n * @returns {Array.}\n */\n\n\nfunction getTrs(range, selectionMgr, table) {\n var selectedCells = selectionMgr.getSelectedCells();\n var rangeInformation, trs;\n\n if (selectedCells.length) {\n rangeInformation = selectionMgr.getSelectionRangeFromTable(selectedCells[0], selectedCells[selectedCells.length - 1]);\n trs = getSelectedRows(selectedCells[0], rangeInformation, table);\n } else {\n var cell = dom[\"a\" /* default */].closest(range.startContainer, 'td,th');\n rangeInformation = selectionMgr.getSelectionRangeFromTable(cell, cell);\n trs = getSelectedRows(cell, rangeInformation, table);\n }\n\n return trs;\n}\n\n/* harmony default export */ var tableRemoveRow = (TableRemoveRow);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemoveCol.js\n/**\n * @fileoverview Implements table remove column WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * RemoveCol\n * remove Row to selected table\n * @extends Command\n * @module wysiwygCommands/TableRemoveCol\n * @ignore\n */\n\nvar TableRemoveCol = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends RemoveCol */\n{\n name: 'RemoveCol',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(range.startContainer, 'table'),\n table = _domUtils$parents[0];\n\n var tableMgr = wwe.componentManager.getManager('table');\n var selectionMgr = wwe.componentManager.getManager('tableSelection');\n var hasMultipleCols = dom[\"a\" /* default */].closest(range.startContainer, 'table').querySelectorAll('thead tr th').length > 1;\n wwe.focus(); // IE 800a025e error on removing part of selection range. collapse\n\n range.collapse(true);\n sq.setSelection(range);\n\n if (sq.hasFormat('TR', null, range) && hasMultipleCols) {\n var trs = table.querySelectorAll('tbody tr');\n var tbodyColLength = trs.length ? trs[0].querySelectorAll('td').length : 0;\n var selectedCells = selectionMgr.getSelectedCells();\n\n if (selectedCells.length < tbodyColLength) {\n sq.saveUndoState(range);\n var nextFocus;\n\n if (selectedCells.length > 1) {\n var tailCell = selectedCells[selectedCells.length - 1];\n var headCell = selectedCells[0];\n nextFocus = tailCell.nextSibling ? tailCell.nextSibling : headCell.previousSibling;\n removeMultipleColsByCells(selectedCells);\n } else {\n var cell = tableRemoveCol_getCellByRange(range);\n nextFocus = cell.nextSibling ? cell.nextSibling : cell.previousSibling;\n removeColByCell(cell);\n }\n\n focusToCell(sq, nextFocus, tableMgr);\n }\n }\n }\n});\n/**\n * Get cell by range object\n * @param {Range} range range\n * @returns {HTMLElement|Node}\n */\n\nfunction tableRemoveCol_getCellByRange(range) {\n var cell = range.startContainer;\n\n if (dom[\"a\" /* default */].getNodeName(cell) !== 'TD' && !dom[\"a\" /* default */].getNodeName(cell) === 'TH') {\n cell = dom[\"a\" /* default */].parentsUntil(cell, 'tr');\n }\n\n return cell;\n}\n/**\n * Remove columns by given cells\n * @param {HTMLElement} cells - table cells\n */\n\n\nfunction removeMultipleColsByCells(cells) {\n var numberOfCells = cells.length;\n\n for (var i = 0; i < numberOfCells; i += 1) {\n var cellToDelete = cells[i];\n\n if (cellToDelete) {\n removeColByCell(cells[i]);\n }\n }\n}\n/**\n * Remove column by given cell\n * @param {HTMLElement} cell - wrapped table cell\n */\n\n\nfunction removeColByCell(cell) {\n var _domUtils$parents2 = dom[\"a\" /* default */].parents(cell, 'table'),\n table = _domUtils$parents2[0];\n\n if (table) {\n var index = inArray_default()(cell, toArray_default()(cell.parentNode.childNodes));\n dom[\"a\" /* default */].findAll(table, 'tr').forEach(function (tr) {\n var td = tr.children[index];\n dom[\"a\" /* default */].remove(td);\n });\n }\n}\n/**\n * Focus to given cell\n * @param {Squire} sq - Squire instance\n * @param {HTMLElement} cell - wrapped table cell\n * @param {object} tableMgr - Table manager instance\n */\n\n\nfunction focusToCell(sq, cell, tableMgr) {\n var nextFocusCell = cell;\n\n if (cell && dom[\"a\" /* default */].isContain(document.body, cell)) {\n var range = sq.getSelection();\n range.selectNodeContents(cell);\n range.collapse(true);\n sq.setSelection(range);\n tableMgr.setLastCellNode(nextFocusCell);\n }\n}\n\n/* harmony default export */ var tableRemoveCol = (TableRemoveCol);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAlignCol.js\n/**\n * @fileoverview Implements table align column WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n\n/**\n * AlignCol\n * Align selected column's text content to given direction\n * @extends Command\n * @module wysiwygCommands/TableAlignCol\n * @ignore\n */\n\nvar TableAlignCol = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends AlignCol */\n{\n name: 'AlignCol',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n * @param {string} alignDirection Align direction\n */\n exec: function exec(wwe, alignDirection) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n var selectionMgr = wwe.componentManager.getManager('tableSelection');\n var rangeInformation = getRangeInformation(range, selectionMgr);\n wwe.focus();\n\n if (sq.hasFormat('TR')) {\n sq.saveUndoState(range);\n\n var _domUtils$parents = dom[\"a\" /* default */].parents(range.startContainer, 'table'),\n table = _domUtils$parents[0];\n\n var selectionInformation = getSelectionInformation(table, rangeInformation);\n setAlignAttributeToTableCells(table, alignDirection, selectionInformation);\n }\n\n selectionMgr.removeClassAttrbuteFromAllCellsIfNeed();\n }\n});\n/**\n * Set Column align\n * @param {HTMLElement} table wrapped TABLE\n * @param {string} alignDirection 'left' or 'center' or 'right'\n * @param {{\n * startColumnIndex: number,\n * endColumnIndex: number,\n * isDivided: boolean\n * }} selectionInformation start, end column index and boolean value for whether range divided or not\n */\n\nfunction setAlignAttributeToTableCells(table, alignDirection, selectionInformation) {\n var isDivided = selectionInformation.isDivided || false;\n var start = selectionInformation.startColumnIndex;\n var end = selectionInformation.endColumnIndex;\n var trs = dom[\"a\" /* default */].findAll(table, 'tr');\n var columnLength = trs.length ? trs[0].querySelectorAll('td,th').length : 0;\n trs.forEach(function (tr) {\n var cells = toArray_default()(dom[\"a\" /* default */].children(tr, 'td,th'));\n cells.forEach(function (cell, index) {\n if (isDivided && (start <= index && index <= columnLength || index <= end)) {\n cell.setAttribute('align', alignDirection);\n } else if (start <= index && index <= end) {\n cell.setAttribute('align', alignDirection);\n }\n });\n });\n}\n/**\n * Return start, end column index and boolean value for whether range divided or not\n * @param {HTMLElement} table wrapped TABLE\n * @param {{startColumnIndex: number, endColumnIndex: number}} rangeInformation Range information\n * @returns {{startColumnIndex: number, endColumnIndex: number, isDivided: boolean}}\n */\n\n\nfunction getSelectionInformation(table, rangeInformation) {\n var trs = table.querySelectorAll('tr');\n var columnLength = trs.length ? trs[0].querySelectorAll('td,th').length : 0;\n var from = rangeInformation.from,\n to = rangeInformation.to;\n var startColumnIndex, endColumnIndex, isDivided;\n\n if (from.row === to.row) {\n startColumnIndex = from.cell;\n endColumnIndex = to.cell;\n } else if (from.row < to.row) {\n if (from.cell <= to.cell) {\n startColumnIndex = 0;\n endColumnIndex = columnLength - 1;\n } else {\n startColumnIndex = from.cell;\n endColumnIndex = to.cell;\n isDivided = true;\n }\n }\n\n return {\n startColumnIndex: startColumnIndex,\n endColumnIndex: endColumnIndex,\n isDivided: isDivided\n };\n}\n/**\n * Get range information\n * @param {Range} range Range object\n * @param {object} selectionMgr Table selection manager\n * @returns {object}\n */\n\n\nfunction getRangeInformation(range, selectionMgr) {\n var selectedCells = selectionMgr.getSelectedCells();\n var rangeInformation, startCell;\n\n if (selectedCells.length) {\n rangeInformation = selectionMgr.getSelectionRangeFromTable(selectedCells[0], selectedCells[selectedCells.length - 1]);\n } else {\n var startContainer = range.startContainer;\n startCell = dom[\"a\" /* default */].isTextNode(startContainer) ? dom[\"a\" /* default */].parent(startContainer, 'td,th') : startContainer;\n rangeInformation = selectionMgr.getSelectionRangeFromTable(startCell, startCell);\n }\n\n return rangeInformation;\n}\n\n/* harmony default export */ var tableAlignCol = (TableAlignCol);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemove.js\n/**\n * @fileoverview Implements table remove WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * RemoveTable\n * Remove selected table\n * @extends Command\n * @module wysiwygCommands/TableRemove\n * @ignore\n */\n\nvar TableRemove = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends RemoveTable */\n{\n name: 'RemoveTable',\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n\n if (sq.hasFormat('TABLE')) {\n sq.saveUndoState(range);\n dom[\"a\" /* default */].remove(dom[\"a\" /* default */].closest(range.startContainer, 'table'));\n }\n\n wwe.focus();\n }\n});\n/* harmony default export */ var tableRemove = (TableRemove);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/indent.js\n/**\n * @fileoverview Implements Indent wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n\n\n/**\n * Indent\n * Indent list or task to wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/indent\n * @ignore\n */\n\nvar indent_Indent = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Indent */\n{\n name: 'Indent',\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var listManager = wwe.componentManager.getManager('list');\n var range = wwe.getEditor().getSelection();\n var node = dom[\"a\" /* default */].closest(range.startContainer, 'li');\n var prevClasses, nodeClasses, nextClasses;\n var prev = node && node.previousSibling;\n\n if (prev) {\n var next = node.querySelector('li');\n wwe.getEditor().saveUndoState();\n nodeClasses = node.className;\n prevClasses = prev.className;\n node.className = '';\n prev.className = '';\n\n if (next) {\n nextClasses = next.className;\n var divElements = toArray_default()(next.children).filter(function (child) {\n return matches_default()(child, 'div');\n });\n\n if (!divElements.length) {\n next.className = '';\n }\n }\n\n wwe.getEditor().increaseListLevel();\n listManager.mergeList(node);\n node.className = nodeClasses;\n prev.className = prevClasses;\n\n if (next) {\n next.className = nextClasses;\n }\n }\n }\n});\n/* harmony default export */ var wysiwygCommands_indent = (indent_Indent);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/outdent.js\n/**\n * @fileoverview Implements Outdent wysiwyg command\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Outdent\n * Outdent list or task to wysiwyg Editor\n * @extends Command\n * @module wysiwygCommands/Outdent\n * @ignore\n */\n\nvar outdent_Outdent = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Outdent */\n{\n name: 'Outdent',\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe WysiwygEditor instance\n */\n exec: function exec(wwe) {\n var node = getCurrentLi(wwe);\n\n if (node && isExecutable(node)) {\n wwe.getEditor().saveUndoState();\n var nodeClasses = node.className;\n wwe.getEditor().decreaseListLevel();\n node = getCurrentLi(wwe);\n\n if (node && nodeClasses) {\n node.className = nodeClasses;\n }\n }\n }\n});\n/**\n * test if outdent the given list item\n * arbitrary list allows list item to be in any position\n * while markdown spec does not\n * @param {HTMLElement} currentLiNode - list item element\n * @returns {boolean} - true to executable\n * @ignore\n */\n\nfunction isExecutable(currentLiNode) {\n var nodeName = dom[\"a\" /* default */].getNodeName(currentLiNode.nextSibling);\n return nodeName !== 'OL' && nodeName !== 'UL';\n}\n/**\n * Get list item element of current selection\n * @param {object} wwe Wysiwyg editor instance\n * @returns {HTMLElement}\n * @ignore\n */\n\n\nfunction getCurrentLi(wwe) {\n var range = wwe.getEditor().getSelection();\n return dom[\"a\" /* default */].closest(range.startContainer, 'li');\n}\n\n/* harmony default export */ var wysiwygCommands_outdent = (outdent_Outdent);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/task.js\n/**\n * @fileoverview Implements Task WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Task\n * Add Task to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Task\n * @ignore\n */\n\nvar task_Task = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Task */\n{\n name: 'Task',\n keyMap: ['ALT+T', 'ALT+T'],\n\n /**\n * Command Handler\n * @param {WysiwygEditor} wwe WYSIWYGEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var listManager = wwe.componentManager.getManager('list');\n var startContainer = range.startContainer,\n endContainer = range.endContainer,\n startOffset = range.startOffset,\n endOffset = range.endOffset;\n var newLIs = [];\n wwe.focus();\n sq.saveUndoState(range);\n\n if (listManager.isAvailableMakeListInTable()) {\n newLIs = listManager.createListInTable(range, 'TASK');\n } else {\n var lines = listManager.getLinesOfSelection(startContainer, endContainer);\n\n for (var i = 0; i < lines.length; i += 1) {\n var newLI = this._changeFormatToTaskIfNeed(wwe, lines[i]);\n\n if (newLI) {\n newLIs.push(newLI);\n }\n }\n }\n\n if (newLIs.length) {\n listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs);\n }\n },\n\n /**\n * Change format to unordered list and return current li element if need\n * @param {WysiwygEditor} wwe Wysiwyg editor instance\n * @param {HTMLElement} target Element target for change\n * @returns {HTMLElement} newly created list\n * @private\n */\n _changeFormatToTaskIfNeed: function _changeFormatToTaskIfNeed(wwe, target) {\n var sq = wwe.getEditor();\n var range = sq.getSelection();\n var taskManager = wwe.componentManager.getManager('task');\n var newLI;\n\n if (!sq.hasFormat('PRE')) {\n range.setStart(target, 0);\n range.collapse(true);\n sq.setSelection(range);\n\n if (!sq.hasFormat('li')) {\n sq.makeUnorderedList();\n target = sq.getSelection().startContainer;\n }\n\n if (hasClass_default()(target, 'task-list-item')) {\n taskManager.unformatTask(target);\n } else {\n taskManager.formatTask(target);\n }\n\n newLI = sq.getSelection().startContainer;\n }\n\n return newLI;\n }\n});\n/* harmony default export */ var wysiwygCommands_task = (task_Task);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/code.js\n/**\n * @fileoverview Implements code WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n/**\n * Code\n * Add bold to selected wysiwyg editor content\n * @extends Command\n * @module wysiwygCommands/Code\n * @ignore\n */\n\nvar code_Code = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends Code */\n{\n name: 'Code',\n keyMap: ['SHIFT+CTRL+C', 'SHIFT+META+C'],\n\n /**\n * command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n */\n exec: function exec(wwe) {\n var sq = wwe.getEditor();\n var tableSelectionManager = wwe.componentManager.getManager('tableSelection');\n\n var _styleCode = styleCode.bind(null, wwe.getEditor());\n\n wwe.focus();\n\n if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) {\n tableSelectionManager.styleToSelectedCells(_styleCode);\n var range = sq.getSelection();\n range.collapse(true);\n sq.setSelection(range);\n } else {\n _styleCode(sq);\n }\n }\n});\n/**\n * removeUnnecessaryCodeInNextToRange\n * Remove unnecessary code tag next to range, code tag made by squire\n * @param {Range} range range object\n */\n\nfunction removeUnnecessaryCodeInNextToRange(range) {\n if (dom[\"a\" /* default */].getNodeName(range.startContainer.nextSibling) === 'CODE' && dom[\"a\" /* default */].getTextLength(range.startContainer.nextSibling) === 0) {\n dom[\"a\" /* default */].remove(range.startContainer.nextSibling);\n }\n}\n/**\n * Style code.\n * @param {object} editor - editor instance\n * @param {object} sq - squire editor instance\n */\n\n\nfunction styleCode(editor, sq) {\n if (!sq.hasFormat('PRE') && sq.hasFormat('code')) {\n sq.changeFormat(null, {\n tag: 'code'\n });\n removeUnnecessaryCodeInNextToRange(editor.getSelection().cloneRange());\n } else if (!sq.hasFormat('a') && !sq.hasFormat('PRE')) {\n if (sq.hasFormat('b')) {\n sq.removeBold();\n } else if (sq.hasFormat('i')) {\n sq.removeItalic();\n }\n\n sq.changeFormat({\n tag: 'code'\n });\n var range = sq.getSelection().cloneRange();\n range.setStart(range.endContainer, range.endOffset);\n range.collapse(true);\n sq.setSelection(range);\n }\n}\n\n/* harmony default export */ var wysiwygCommands_code = (code_Code);\n// CONCATENATED MODULE: ./src/js/wysiwygCommands/codeBlock.js\n/**\n * @fileoverview Implements code block WysiwygCommand\n * @author NHN FE Development Lab \n */\n\n\n\nvar CODEBLOCK_CLASS_TEMP = 'te-content-codeblock-temp';\nvar codeBlock_CODEBLOCK_ATTR_NAME = 'data-te-codeblock';\n/**\n * CodeBlock\n * Add CodeBlock to wysiwygEditor\n * @extends Command\n * @module wysiwygCommands/Codeblock\n * @ignore\n */\n\nvar codeBlock_CodeBlock = commandManager[\"a\" /* default */].command('wysiwyg',\n/** @lends CodeBlock */\n{\n name: 'CodeBlock',\n keyMap: ['SHIFT+CTRL+P', 'SHIFT+META+P'],\n\n /**\n * Command handler\n * @param {WysiwygEditor} wwe wysiwygEditor instance\n * @param {string} type of language\n */\n exec: function exec(wwe, type) {\n var sq = wwe.getEditor();\n var range = sq.getSelection().cloneRange();\n\n if (!sq.hasFormat('PRE') && !sq.hasFormat('TABLE')) {\n var attr = codeBlock_CODEBLOCK_ATTR_NAME + \" class = \\\"\" + CODEBLOCK_CLASS_TEMP + \"\\\"\";\n\n if (type) {\n attr += \" data-language=\\\"\" + type + \"\\\"\";\n }\n\n var codeBlockBody = getCodeBlockBody(range, wwe);\n sq.insertHTML(\"
    \" + codeBlockBody + \"
    \");\n focusToFirstCode(wwe.getBody().querySelector(\".\" + CODEBLOCK_CLASS_TEMP), wwe);\n }\n\n wwe.focus();\n }\n});\n/**\n * focusToFirstCode\n * Focus to first code tag content of pre tag\n * @param {HTMLElement} pre pre tag\n * @param {WysiwygEditor} wwe wysiwygEditor\n */\n\nfunction focusToFirstCode(pre, wwe) {\n var range = wwe.getEditor().getSelection().cloneRange();\n removeClass_default()(pre, CODEBLOCK_CLASS_TEMP);\n range.setStartBefore(pre.firstChild);\n range.collapse(true);\n wwe.getEditor().setSelection(range);\n}\n/**\n * getCodeBlockBody\n * get text wrapped by code\n * @param {object} range range object\n * @param {object} wwe wysiwyg editor\n * @returns {string}\n */\n\n\nfunction getCodeBlockBody(range, wwe) {\n var mgr = wwe.componentManager.getManager('codeblock');\n var codeBlock;\n\n if (range.collapsed) {\n codeBlock = '
    ';\n } else {\n var contents = range.extractContents();\n var nodes = toArray_default()(contents.childNodes);\n var tempDiv = document.createElement('div');\n tempDiv.appendChild(mgr.prepareToPasteOnCodeblock(nodes));\n codeBlock = tempDiv.innerHTML;\n }\n\n return codeBlock;\n}\n\n/* harmony default export */ var wysiwygCommands_codeBlock = (codeBlock_CodeBlock);\n// CONCATENATED MODULE: ./src/js/scroll/animation.js\nvar ANIMATION_TIME = 200;\nvar SCROLL_BOCKING_RESET_DELAY = 15;\nvar currentTimeoutId = null;\nvar releaseTimer = null;\n\nfunction run(deltaScrollTop, _ref) {\n var syncScrollTop = _ref.syncScrollTop,\n releaseEventBlock = _ref.releaseEventBlock;\n clearTimeout(releaseTimer);\n syncScrollTop(deltaScrollTop);\n releaseTimer = setTimeout(function () {\n releaseEventBlock();\n }, SCROLL_BOCKING_RESET_DELAY);\n}\n\nfunction animate(sourceScrollTop, targetScrollTop, callbackObjForSync) {\n var diff = targetScrollTop - sourceScrollTop;\n var startTime = Date.now();\n /**\n * Each animation step\n */\n\n var step = function step() {\n var stepTime = Date.now();\n var progress = (stepTime - startTime) / ANIMATION_TIME;\n var deltaValue; // if already doing animation\n\n if (currentTimeoutId) {\n clearTimeout(currentTimeoutId);\n }\n\n if (progress < 1) {\n deltaValue = sourceScrollTop + diff * Math.cos((1 - progress) * Math.PI / 2);\n run(Math.ceil(deltaValue), callbackObjForSync);\n currentTimeoutId = setTimeout(step, 1);\n } else {\n run(targetScrollTop, callbackObjForSync);\n currentTimeoutId = null;\n }\n };\n\n step();\n}\n// EXTERNAL MODULE: ./src/js/scroll/helper.js\nvar helper = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./src/js/scroll/cache/offsetInfo.js\nvar offsetInfo = __webpack_require__(24);\n\n// CONCATENATED MODULE: ./src/js/scroll/editorScroll.js\n\n\n\n\nvar EDITING_POSITION_RATIO = 0.5;\nvar blockedPreviewScrollEvent = false;\nvar latestScrollTop = null;\n/* eslint-disable no-return-assign */\n\nfunction getAndSaveOffsetHeight(node, mdNodeId) {\n var cachedHeight = Object(offsetInfo[\"a\" /* getOffsetHeight */])(mdNodeId);\n var offsetHeight = cachedHeight || node.offsetHeight;\n\n if (!cachedHeight) {\n Object(offsetInfo[\"d\" /* setOffsetHeight */])(mdNodeId, offsetHeight);\n }\n\n return offsetHeight;\n}\n\nfunction getTopInfo(cm, startLine, mdNode, node, previewEl) {\n var mdNodeStartLine = Object(markdown[\"f\" /* getMdStartLine */])(mdNode);\n var height = cm.lineInfo(startLine).handle.height;\n var previewElHeight = getAndSaveOffsetHeight(previewEl, 0);\n var top = node.getBoundingClientRect().top - previewEl.getBoundingClientRect().top; // position editing node on middle of preview as default\n\n var additionalScrollTop = -previewElHeight * EDITING_POSITION_RATIO;\n\n if (Object(markdown[\"j\" /* isMultiLineNode */])(mdNode)) {\n var additionalTopPos = (startLine - mdNodeStartLine + 1) * height;\n additionalScrollTop = additionalTopPos;\n top += additionalTopPos;\n }\n\n return {\n top: top,\n additionalScrollTop: additionalScrollTop\n };\n}\n\nfunction syncPreviewScrollTopToMarkdown(editor, preview, scrollEvent) {\n var root = preview._previewContent,\n previewEl = preview.el;\n var cm = editor.cm,\n toastMark = editor.toastMark;\n\n var _cm$getScrollInfo = cm.getScrollInfo(),\n left = _cm$getScrollInfo.left,\n scrollTop = _cm$getScrollInfo.top,\n height = _cm$getScrollInfo.height,\n clientHeight = _cm$getScrollInfo.clientHeight;\n\n var isBottomPos = height - scrollTop <= clientHeight;\n var sourceScrollTop = previewEl.scrollTop;\n var targetScrollTop = isBottomPos ? previewEl.scrollHeight : 0;\n\n if (scrollTop && !isBottomPos) {\n var _ref = scrollEvent ? cm.coordsChar({\n left: left,\n top: scrollTop\n }, 'local') : cm.getCursor('from'),\n startLine = _ref.line;\n\n var firstMdNode = toastMark.findFirstNodeAtLine(startLine + 1);\n\n if (!firstMdNode || Object(markdown[\"g\" /* isHtmlNode */])(firstMdNode)) {\n return;\n } // if DOM element does not exist, should get its parent node using markdown node\n // in case of text node, rendererd DOM element is not matched to markdown node\n\n\n var nodeObj = Object(helper[\"f\" /* getParentNodeObj */])(firstMdNode);\n var node = nodeObj.node,\n mdNode = nodeObj.mdNode;\n var mdNodeStartLine = Object(markdown[\"f\" /* getMdStartLine */])(mdNode);\n var previewElHeight = getAndSaveOffsetHeight(previewEl, 0);\n targetScrollTop = Object(helper[\"g\" /* getTotalOffsetTop */])(node, root) || node.offsetTop;\n\n if (!scrollEvent) {\n var _getTopInfo = getTopInfo(cm, startLine, mdNode, node, previewEl),\n top = _getTopInfo.top,\n additionalScrollTop = _getTopInfo.additionalScrollTop;\n\n if (top > 0 && top < previewElHeight) {\n return;\n }\n\n targetScrollTop += additionalScrollTop; // assign the null to sync scrollTop position when scrolling\n\n latestScrollTop = null;\n } else if (Object(helper[\"h\" /* isNodeToBeCalculated */])(mdNode)) {\n var offsetHeight = getAndSaveOffsetHeight(node, mdNode.id);\n var offsetTop = cm.heightAtLine(mdNodeStartLine - 1, 'local');\n var cmNodeHeight = Object(helper[\"c\" /* getCmRangeHeight */])(mdNode, cm);\n targetScrollTop += Object(helper[\"b\" /* getAdditionalTopPos */])(scrollTop, offsetTop, cmNodeHeight, offsetHeight);\n var scrollTopInfo = {\n latestScrollTop: latestScrollTop,\n scrollTop: scrollTop,\n targetScrollTop: targetScrollTop,\n sourceScrollTop: sourceScrollTop\n };\n targetScrollTop = Object(helper[\"d\" /* getFallbackScrollTop */])(scrollTopInfo);\n latestScrollTop = scrollTop;\n\n if (targetScrollTop === sourceScrollTop) {\n return;\n }\n }\n }\n\n blockedPreviewScrollEvent = true;\n var callbackObjForSync = {\n syncScrollTop: function syncScrollTop(deltaScrollTop) {\n return previewEl.scrollTop = deltaScrollTop;\n },\n releaseEventBlock: function releaseEventBlock() {\n return blockedPreviewScrollEvent = false;\n }\n };\n animate(sourceScrollTop, targetScrollTop, callbackObjForSync);\n}\nfunction isBlockedPreviewScrollEvent() {\n return blockedPreviewScrollEvent;\n}\n// CONCATENATED MODULE: ./src/js/scroll/previewScroll.js\n\n\n\n\nvar blockedMarkdownScrollEvent = false;\nvar previewScroll_latestScrollTop = null;\n/* eslint-disable no-return-assign */\n\nfunction getAndSaveOffsetInfo(node, mdNodeId, root) {\n var cachedHeight = Object(offsetInfo[\"a\" /* getOffsetHeight */])(mdNodeId);\n var cachedTop = Object(offsetInfo[\"b\" /* getOffsetTop */])(mdNodeId);\n var offsetHeight = cachedHeight || node.offsetHeight;\n var offsetTop = cachedTop || Object(helper[\"g\" /* getTotalOffsetTop */])(node, root) || node.offsetTop;\n\n if (!cachedHeight) {\n Object(offsetInfo[\"d\" /* setOffsetHeight */])(mdNodeId, offsetHeight);\n }\n\n if (!cachedTop) {\n Object(offsetInfo[\"e\" /* setOffsetTop */])(mdNodeId, offsetTop);\n }\n\n return {\n offsetHeight: offsetHeight,\n offsetTop: offsetTop\n };\n}\n\nfunction getAncestorHavingId(node, root) {\n while (!node.getAttribute('data-nodeid') && node.parentElement !== root) {\n node = node.parentElement;\n }\n\n return node;\n}\n\nfunction syncMarkdownScrollTopToPreview(editor, preview, targetNode) {\n var toastMark = editor.toastMark,\n cm = editor.cm;\n var _preview$el = preview.el,\n scrollTop = _preview$el.scrollTop,\n clientHeight = _preview$el.clientHeight,\n scrollHeight = _preview$el.scrollHeight;\n var root = preview._previewContent;\n var isBottomPos = scrollHeight - scrollTop <= clientHeight;\n\n var _cm$getScrollInfo = cm.getScrollInfo(),\n left = _cm$getScrollInfo.left,\n sourceScrollTop = _cm$getScrollInfo.top,\n height = _cm$getScrollInfo.height;\n\n var targetScrollTop = isBottomPos ? height : 0;\n\n if (scrollTop && targetNode && !isBottomPos) {\n targetNode = getAncestorHavingId(targetNode, root);\n\n if (!targetNode.getAttribute('data-nodeid')) {\n return;\n }\n\n var _cm$coordsChar = cm.coordsChar({\n left: left,\n top: sourceScrollTop\n }, 'local'),\n startLine = _cm$coordsChar.line;\n\n var mdNodeId = Number(targetNode.getAttribute('data-nodeid'));\n\n var _getParentNodeObj = Object(helper[\"f\" /* getParentNodeObj */])(toastMark.findNodeById(mdNodeId)),\n mdNode = _getParentNodeObj.mdNode,\n node = _getParentNodeObj.node;\n\n var mdNodeStartLine = Object(markdown[\"f\" /* getMdStartLine */])(mdNode);\n targetScrollTop = cm.heightAtLine(mdNodeStartLine - 1, 'local');\n\n if (Object(markdown[\"i\" /* isListItemNode */])(mdNode)) {\n targetScrollTop += Object(helper[\"e\" /* getNextEmptyLineHeight */])(cm, mdNodeStartLine, startLine);\n }\n\n if (Object(helper[\"h\" /* isNodeToBeCalculated */])(mdNode)) {\n var cmNodeHeight = Object(helper[\"c\" /* getCmRangeHeight */])(mdNode, cm);\n\n var _getAndSaveOffsetInfo = getAndSaveOffsetInfo(node, mdNodeId, root),\n offsetHeight = _getAndSaveOffsetInfo.offsetHeight,\n offsetTop = _getAndSaveOffsetInfo.offsetTop;\n\n targetScrollTop += Object(helper[\"b\" /* getAdditionalTopPos */])(scrollTop, offsetTop, offsetHeight, cmNodeHeight);\n var scrollTopInfo = {\n latestScrollTop: previewScroll_latestScrollTop,\n scrollTop: scrollTop,\n targetScrollTop: targetScrollTop,\n sourceScrollTop: sourceScrollTop\n };\n targetScrollTop = Object(helper[\"d\" /* getFallbackScrollTop */])(scrollTopInfo);\n previewScroll_latestScrollTop = scrollTop;\n\n if (targetScrollTop === sourceScrollTop) {\n return;\n }\n }\n }\n\n blockedMarkdownScrollEvent = true;\n var callbackObjForSync = {\n syncScrollTop: function syncScrollTop(deltaScrollTop) {\n return cm.scrollTo(0, deltaScrollTop);\n },\n releaseEventBlock: function releaseEventBlock() {\n return blockedMarkdownScrollEvent = false;\n }\n };\n animate(sourceScrollTop, targetScrollTop, callbackObjForSync);\n}\nfunction isBlockedMarkdownScrollEvent() {\n return blockedMarkdownScrollEvent;\n}\n// CONCATENATED MODULE: ./src/js/scroll/ui/button.js\n\nvar button_className = 'tui-scrollsync';\nvar activeClassName = 'tui-scrollsync active';\nvar active = true;\nfunction isActive() {\n return active;\n}\nfunction createButton(editor) {\n if (editor.isViewer() || editor.getUI().name !== 'default') {\n return;\n }\n\n var i18n = editor.i18n;\n var tooltip = {\n ACTIVE: i18n.get('Auto scroll enabled'),\n INACTIVE: i18n.get('Auto scroll disabled')\n };\n var toolbar = editor.getUI().getToolbar();\n var buttonEl = document.createElement('button');\n buttonEl.className = activeClassName;\n toolbar.addItem('divider');\n toolbar.addItem({\n type: 'button',\n options: {\n command: 'scrollSyncToggle',\n tooltip: tooltip.ACTIVE,\n el: buttonEl\n }\n });\n var items = toolbar.getItems();\n var divider = items[items.length - 2].el;\n var button = items[items.length - 1];\n changeButtonVisiblityStateIfNeed(editor, button, divider);\n addEventListener(editor, button, divider);\n addEditorCommand(editor, button, tooltip);\n}\n\nfunction addEventListener(editor, button, divider) {\n // hide scroll follow button in wysiwyg\n editor.on('changeMode', function () {\n return changeButtonVisiblityStateIfNeed(editor, button, divider);\n });\n editor.on('changePreviewStyle', function () {\n return changeButtonVisiblityStateIfNeed(editor, button, divider);\n });\n}\n\nfunction addEditorCommand(editor, button, tooltip) {\n // Commands\n editor.addCommand('markdown', {\n name: 'scrollSyncToggle',\n exec: function exec() {\n active = !active;\n\n button._onOut();\n\n if (active) {\n button.el.className = activeClassName;\n button.setTooltip(tooltip.ACTIVE);\n } else {\n button.el.className = button_className;\n button.setTooltip(tooltip.INACTIVE);\n }\n\n button._onOver();\n }\n });\n}\n\nfunction changeButtonVisiblityStateIfNeed(editor, button, divider) {\n if (editor.mdPreviewStyle === 'vertical' && editor.currentMode === 'markdown') {\n css_default()(button.el, {\n display: 'inline-block'\n });\n css_default()(divider, {\n display: 'inline-block'\n });\n } else {\n css_default()(button.el, {\n display: 'none'\n });\n css_default()(divider, {\n display: 'none'\n });\n }\n}\n// CONCATENATED MODULE: ./src/js/scroll/sync.js\n\n\n\nvar isScrollable = true;\n/* eslint-disable no-return-assign */\n\nfunction register(editor) {\n var mdEditor = editor.mdEditor,\n preview = editor.preview;\n createButton(editor);\n addScrollEvent(mdEditor, preview);\n addPreviewRenderedEvent(mdEditor, preview);\n mdEditor.cm.on('change', function () {\n return isScrollable = false;\n });\n}\n\nfunction addPreviewRenderedEvent(editor, preview) {\n editor.eventManager.listen('previewRenderAfter', function () {\n // Immediately after the 'previewRenderAfter' event has occurred,\n // browser rendering is not yet complete.\n // So the size of elements can not be accurately measured.\n setTimeout(function () {\n if (isActive()) {\n syncPreviewScrollTopToMarkdown(editor, preview);\n }\n\n isScrollable = true;\n }, 200);\n });\n}\n\nfunction addScrollEvent(editor, preview) {\n var eventManager = editor.eventManager;\n eventManager.listen('scroll', function (_ref) {\n var source = _ref.source,\n data = _ref.data;\n\n if (!isActive()) {\n return;\n }\n\n if (isScrollable && preview.isVisible()) {\n if (source === 'markdown' && !isBlockedMarkdownScrollEvent()) {\n syncPreviewScrollTopToMarkdown(editor, preview, true);\n } else if (source === 'preview' && !isBlockedPreviewScrollEvent()) {\n syncMarkdownScrollTopToPreview(editor, preview, data);\n }\n }\n });\n}\n// CONCATENATED MODULE: ./src/js/editor.js\nfunction editor_extends() { editor_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return editor_extends.apply(this, arguments); }\n\n/**\n * @fileoverview Implements Editor\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // markdown commands\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // wysiwyg Commands\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar __nedInstance = [];\n/**\n * @callback addImageBlobHook\n * @param {File|Blob} fileOrBlob - image blob\n * @param {callback} callback - callback function to be called after\n * @param {string} source - source of an event the item belongs to. 'paste', 'drop', 'ui'\n */\n\n/**\n * ToastUI Editor\n * @param {Object} options Option object\n * @param {HTMLElement} options.el - container element\n * @param {string} [options.height='300px'] - Editor's height style value. Height is applied as border-box ex) '300px', '100%', 'auto'\n * @param {string} [options.minHeight='200px'] - Editor's min-height style value in pixel ex) '300px'\n * @param {string} [options.initialValue] - Editor's initial value\n * @param {string} [options.previewStyle] - Markdown editor's preview style (tab, vertical)\n * @param {boolean} [options.previewHighlight = true] - Highlight a preview element corresponds to the cursor position in the markdwon editor\n * @param {string} [options.initialEditType] - Initial editor type (markdown, wysiwyg)\n * @param {Object} [options.events] - Events\n * @param {function} [options.events.load] - It would be emitted when editor fully load\n * @param {function} [options.events.change] - It would be emitted when content changed\n * @param {function} [options.events.stateChange] - It would be emitted when format change by cursor position\n * @param {function} [options.events.focus] - It would be emitted when editor get focus\n * @param {function} [options.events.blur] - It would be emitted when editor loose focus\n * @param {Object} [options.hooks] - Hooks\n * @param {function} [options.hooks.previewBeforeHook] - Submit preview to hook URL before preview be shown\n * @param {addImageBlobHook} [options.hooks.addImageBlobHook] - hook for image upload\n * @param {string} [options.language='en-US'] - language\n * @param {boolean} [options.useCommandShortcut=true] - whether use keyboard shortcuts to perform commands\n * @param {boolean} [options.useDefaultHTMLSanitizer=true] - use default htmlSanitizer\n * @param {boolean} [options.usageStatistics=true] - send hostname to google analytics\n * @param {Array.} [options.toolbarItems] - toolbar items.\n * @param {boolean} [options.hideModeSwitch=false] - hide mode switch tab bar\n * @param {Array.} [options.plugins] - Array of plugins. A plugin can be either a function or an array in the form of [function, options].\n * @param {Object} [options.extendedAutolinks] - Using extended Autolinks specified in GFM spec\n * @param {Object} [options.customConvertor] - convertor extention\n * @param {string} [options.placeholder] - The placeholder text of the editable element.\n * @param {Object} [options.linkAttribute] - Attributes of anchor element that should be rel, target, contenteditable, hreflang, type\n * @param {Object} [options.customHTMLRenderer] - Object containing custom renderer functions correspond to markdown node\n * @param {boolean} [options.referenceDefinition=false] - whether use the specification of link reference definition\n * @param {function} [options.customHTMLSanitizer=null] - custom HTML sanitizer\n */\n\nvar editor_ToastUIEditor = /*#__PURE__*/function () {\n function ToastUIEditor(options) {\n var _this = this;\n\n this.initialHtml = options.el.innerHTML;\n options.el.innerHTML = '';\n this.options = extend_default()({\n previewStyle: 'tab',\n previewHighlight: true,\n initialEditType: 'markdown',\n height: '300px',\n minHeight: '200px',\n language: 'en-US',\n useDefaultHTMLSanitizer: true,\n useCommandShortcut: true,\n usageStatistics: true,\n toolbarItems: ['heading', 'bold', 'italic', 'strike', 'divider', 'hr', 'quote', 'divider', 'ul', 'ol', 'task', 'indent', 'outdent', 'divider', 'table', 'image', 'link', 'divider', 'code', 'codeblock'],\n hideModeSwitch: false,\n linkAttribute: null,\n extendedAutolinks: false,\n customConvertor: null,\n customHTMLRenderer: null,\n referenceDefinition: false,\n customHTMLSanitizer: null\n }, options);\n this.codeBlockLanguages = [];\n this.eventManager = new js_eventManager[\"a\" /* default */]();\n this.importManager = new importManager(this.eventManager);\n this.commandManager = new commandManager[\"a\" /* default */](this, {\n useCommandShortcut: this.options.useCommandShortcut\n });\n var linkAttribute = Object(utils_common[\"c\" /* sanitizeLinkAttribute */])(this.options.linkAttribute);\n\n var _getPluginInfo = Object(pluginHelper[\"a\" /* getPluginInfo */])(this.options.plugins),\n renderer = _getPluginInfo.renderer,\n parser = _getPluginInfo.parser,\n plugins = _getPluginInfo.plugins;\n\n var _this$options = this.options,\n customHTMLRenderer = _this$options.customHTMLRenderer,\n customHTMLSanitizer = _this$options.customHTMLSanitizer,\n extendedAutolinks = _this$options.extendedAutolinks,\n referenceDefinition = _this$options.referenceDefinition,\n useDefaultHTMLSanitizer = _this$options.useDefaultHTMLSanitizer;\n var rendererOptions = {\n linkAttribute: linkAttribute,\n customHTMLRenderer: editor_extends({}, renderer, customHTMLRenderer),\n extendedAutolinks: extendedAutolinks,\n referenceDefinition: referenceDefinition,\n customParser: parser\n };\n\n if (this.options.customConvertor) {\n // eslint-disable-next-line new-cap\n this.convertor = new this.options.customConvertor(this.eventManager, rendererOptions);\n } else {\n this.convertor = new convertor[\"a\" /* default */](this.eventManager, rendererOptions);\n }\n\n var sanitizer = customHTMLSanitizer || (useDefaultHTMLSanitizer ? htmlSanitizer[\"a\" /* default */] : null);\n\n if (sanitizer) {\n this.convertor.initHtmlSanitizer(sanitizer);\n }\n\n if (this.options.hooks) {\n forEachOwnProperties_default()(this.options.hooks, function (fn, key) {\n return _this.addHook(key, fn);\n });\n }\n\n if (this.options.events) {\n forEachOwnProperties_default()(this.options.events, function (fn, key) {\n return _this.on(key, fn);\n });\n }\n\n this.layout = new js_layout(options, this.eventManager);\n this.i18n = i18n;\n this.i18n.setCode(this.options.language);\n this.setUI(this.options.UI || new defaultUI(this));\n this.toastMark = new toastmark[\"ToastMark\"]('', {\n disallowedHtmlBlockTags: ['br'],\n extendedAutolinks: extendedAutolinks,\n referenceDefinition: referenceDefinition,\n disallowDeepHeading: true,\n customParser: parser\n });\n this.mdEditor = markdownEditor.factory(this.layout.getMdEditorContainerEl(), this.eventManager, this.toastMark, this.options);\n this.preview = new mdPreview[\"a\" /* default */](this.layout.getPreviewEl(), this.eventManager, this.convertor, editor_extends({}, rendererOptions, {\n isViewer: false,\n highlight: this.options.previewHighlight\n }));\n this.wwEditor = wysiwygEditor.factory(this.layout.getWwEditorContainerEl(), this.eventManager, {\n sanitizer: sanitizer,\n linkAttribute: linkAttribute\n });\n this.toMarkOptions = {\n gfm: true,\n renderer: toMarkRenderer\n };\n\n if (plugins) {\n Object(pluginHelper[\"b\" /* invokePlugins */])(plugins, this);\n }\n\n this.changePreviewStyle(this.options.previewStyle);\n this.changeMode(this.options.initialEditType, true);\n this.minHeight(this.options.minHeight);\n this.height(this.options.height);\n this.setMarkdown(this.options.initialValue, false);\n\n if (this.options.placeholder) {\n this.setPlaceholder(this.options.placeholder);\n }\n\n if (!this.options.initialValue) {\n this.setHtml(this.initialHtml, false);\n }\n\n this.eventManager.emit('load', this);\n\n __nedInstance.push(this);\n\n this._addDefaultCommands();\n\n if (this.options.usageStatistics) {\n Object(utils_common[\"d\" /* sendHostName */])();\n }\n\n register(this);\n }\n /**\n * change preview style\n * @param {string} style - 'tab'|'vertical'\n */\n\n\n var _proto = ToastUIEditor.prototype;\n\n _proto.changePreviewStyle = function changePreviewStyle(style) {\n this.layout.changePreviewStyle(style);\n this.mdPreviewStyle = style;\n this.eventManager.emit('changePreviewStyle', style);\n this.eventManager.emit('previewNeedsRefresh', this.getMarkdown());\n }\n /**\n * call commandManager's exec method\n * @param {*} ...args Command argument\n */\n ;\n\n _proto.exec = function exec() {\n var _this$commandManager;\n\n (_this$commandManager = this.commandManager).exec.apply(_this$commandManager, arguments);\n }\n /**\n * add default commands\n * @private\n */\n ;\n\n _proto._addDefaultCommands = function _addDefaultCommands() {\n this.addCommand(bold);\n this.addCommand(italic);\n this.addCommand(blockquote);\n this.addCommand(markdownCommands_heading);\n this.addCommand(paragraph);\n this.addCommand(markdownCommands_hr);\n this.addCommand(addLink);\n this.addCommand(addImage);\n this.addCommand(markdownCommands_ul);\n this.addCommand(ol);\n this.addCommand(markdownCommands_indent);\n this.addCommand(outdent);\n this.addCommand(markdownCommands_table);\n this.addCommand(markdownCommands_task);\n this.addCommand(markdownCommands_code);\n this.addCommand(markdownCommands_codeBlock);\n this.addCommand(strike);\n this.addCommand(wysiwygCommands_bold);\n this.addCommand(wysiwygCommands_italic);\n this.addCommand(wysiwygCommands_blockquote);\n this.addCommand(wysiwygCommands_ul);\n this.addCommand(wysiwygCommands_ol);\n this.addCommand(wysiwygCommands_addImage);\n this.addCommand(wysiwygCommands_addLink);\n this.addCommand(wysiwygCommands_hr);\n this.addCommand(wysiwygCommands_heading);\n this.addCommand(wysiwygCommands_paragraph);\n this.addCommand(wysiwygCommands_indent);\n this.addCommand(wysiwygCommands_outdent);\n this.addCommand(wysiwygCommands_task);\n this.addCommand(wysiwygCommands_table);\n this.addCommand(tableAddRow);\n this.addCommand(tableAddCol);\n this.addCommand(tableRemoveRow);\n this.addCommand(tableRemoveCol);\n this.addCommand(tableAlignCol);\n this.addCommand(tableRemove);\n this.addCommand(wysiwygCommands_code);\n this.addCommand(wysiwygCommands_codeBlock);\n this.addCommand(wysiwygCommands_strike);\n };\n\n _proto.addCommand = function addCommand(type, props) {\n if (!props) {\n this.commandManager.addCommand(type);\n } else {\n this.commandManager.addCommand(commandManager[\"a\" /* default */].command(type, props));\n }\n }\n /**\n * After added command.\n */\n ;\n\n _proto.afterAddedCommand = function afterAddedCommand() {\n this.eventManager.emit('afterAddedCommand', this);\n }\n /**\n * Bind eventHandler to event type\n * @param {string} type Event type\n * @param {function} handler Event handler\n */\n ;\n\n _proto.on = function on(type, handler) {\n this.eventManager.listen(type, handler);\n }\n /**\n * Unbind eventHandler from event type\n * @param {string} type Event type\n */\n ;\n\n _proto.off = function off(type) {\n this.eventManager.removeEventHandler(type);\n }\n /**\n * Add hook to TUIEditor event\n * @param {string} type Event type\n * @param {function} handler Event handler\n */\n ;\n\n _proto.addHook = function addHook(type, handler) {\n this.eventManager.removeEventHandler(type);\n this.eventManager.listen(type, handler);\n }\n /**\n * Remove hook from TUIEditor event\n * @param {string} type Event type\n */\n ;\n\n _proto.removeHook = function removeHook(type) {\n this.eventManager.removeEventHandler(type);\n }\n /**\n * Get CodeMirror instance\n * @returns {CodeMirror}\n */\n ;\n\n _proto.getCodeMirror = function getCodeMirror() {\n return this.mdEditor.getEditor();\n }\n /**\n * Get SquireExt instance\n * @returns {SquireExt}\n */\n ;\n\n _proto.getSquire = function getSquire() {\n return this.wwEditor.getEditor();\n }\n /**\n * Set focus to current Editor\n */\n ;\n\n _proto.focus = function focus() {\n this.getCurrentModeEditor().focus();\n }\n /**\n * Remove focus of current Editor\n */\n ;\n\n _proto.blur = function blur() {\n this.getCurrentModeEditor().blur();\n }\n /**\n * Set cursor position to end\n */\n ;\n\n _proto.moveCursorToEnd = function moveCursorToEnd() {\n this.getCurrentModeEditor().moveCursorToEnd();\n }\n /**\n * Set cursor position to start\n */\n ;\n\n _proto.moveCursorToStart = function moveCursorToStart() {\n this.getCurrentModeEditor().moveCursorToStart();\n }\n /**\n * Set markdown syntax text.\n * @param {string} markdown - markdown syntax text.\n * @param {boolean} [cursorToEnd=true] - move cursor to contents end\n */\n ;\n\n _proto.setMarkdown = function setMarkdown(markdown, cursorToEnd) {\n if (cursorToEnd === void 0) {\n cursorToEnd = true;\n }\n\n markdown = markdown || '';\n\n if (this.isMarkdownMode()) {\n this.mdEditor.setValue(markdown, cursorToEnd);\n } else {\n this.wwEditor.setValue(this.convertor.toHTML(markdown), cursorToEnd);\n }\n\n this.eventManager.emit('setMarkdownAfter', markdown);\n }\n /**\n * Set html value.\n * @param {string} html - html syntax text\n * @param {boolean} [cursorToEnd=true] - move cursor to contents end\n */\n ;\n\n _proto.setHtml = function setHtml(html, cursorToEnd) {\n if (cursorToEnd === void 0) {\n cursorToEnd = true;\n }\n\n html = html || '';\n this.wwEditor.setValue(html, cursorToEnd);\n\n if (this.isMarkdownMode()) {\n var markdown = this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions);\n this.mdEditor.setValue(markdown, cursorToEnd);\n this.eventManager.emit('setMarkdownAfter', markdown);\n }\n }\n /**\n * Get markdown syntax text.\n * @returns {string}\n */\n ;\n\n _proto.getMarkdown = function getMarkdown() {\n var markdown;\n\n if (this.isMarkdownMode()) {\n markdown = this.mdEditor.getValue();\n } else {\n markdown = this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions);\n }\n\n return markdown;\n }\n /**\n * Get html syntax text.\n * @returns {string}\n */\n ;\n\n _proto.getHtml = function getHtml() {\n if (this.isWysiwygMode()) {\n this.mdEditor.setValue(this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions));\n }\n\n return this.convertor.toHTML(this.mdEditor.getValue());\n }\n /**\n * Insert text\n * @param {string} text - text string to insert\n */\n ;\n\n _proto.insertText = function insertText(text) {\n if (this.isMarkdownMode()) {\n this.mdEditor.replaceSelection(text);\n } else {\n this.wwEditor.insertText(text);\n }\n }\n /**\n * Add widget to selection\n * @param {Range} selection Current selection\n * @param {Node} node widget node\n * @param {string} style Adding style \"over\" or \"bottom\"\n * @param {number} [offset] Offset for adjust position\n */\n ;\n\n _proto.addWidget = function addWidget(selection, node, style, offset) {\n this.getCurrentModeEditor().addWidget(selection, node, style, offset);\n }\n /**\n * Set and return edithr height\n * @param {string} height - editor height\n * @returns {string} editor height\n */\n ;\n\n _proto.height = function height(_height) {\n if (isExisty_default()(_height)) {\n var el = this.options.el;\n\n if (_height === 'auto') {\n addClass_default()(el, 'auto-height');\n this.minHeight(this.minHeight());\n } else {\n removeClass_default()(el, 'auto-height');\n this.minHeight(_height);\n }\n\n if (isNumber_default()(_height)) {\n _height = _height + \"px\";\n }\n\n css_default()(this.options.el, {\n height: _height\n });\n this._height = _height;\n }\n\n return this._height;\n }\n /**\n * Set / Get min content height\n * @param {string} minHeight - min content height in pixel\n * @returns {string} - min height in pixel\n */\n ;\n\n _proto.minHeight = function minHeight(_minHeight) {\n if (isExisty_default()(_minHeight)) {\n var editorHeight = this._ui.getEditorHeight();\n\n var editorSectionHeight = this._ui.getEditorSectionHeight();\n\n var diffHeight = editorHeight - editorSectionHeight;\n this._minHeight = _minHeight;\n _minHeight = parseInt(_minHeight, 10);\n _minHeight = Math.max(_minHeight - diffHeight, 0);\n this.wwEditor.setMinHeight(_minHeight);\n this.mdEditor.setMinHeight(_minHeight);\n this.preview.setMinHeight(_minHeight);\n }\n\n return this._minHeight;\n }\n /**\n * Get current editor mode name\n * @returns {Object} MarkdownEditor or WysiwygEditor\n */\n ;\n\n _proto.getCurrentModeEditor = function getCurrentModeEditor() {\n var editor;\n\n if (this.isMarkdownMode()) {\n editor = this.mdEditor;\n } else {\n editor = this.wwEditor;\n }\n\n return editor;\n }\n /**\n * Return true if current editor mode is Markdown\n * @returns {boolean}\n */\n ;\n\n _proto.isMarkdownMode = function isMarkdownMode() {\n return this.currentMode === 'markdown';\n }\n /**\n * Return true if current editor mode is WYSIWYG\n * @returns {boolean}\n */\n ;\n\n _proto.isWysiwygMode = function isWysiwygMode() {\n return this.currentMode === 'wysiwyg';\n }\n /**\n * Return false\n * @returns {boolean}\n */\n ;\n\n _proto.isViewer = function isViewer() {\n return false;\n }\n /**\n * Get current Markdown editor's preview style\n * @returns {string}\n */\n ;\n\n _proto.getCurrentPreviewStyle = function getCurrentPreviewStyle() {\n return this.mdPreviewStyle;\n }\n /**\n * Change editor's mode to given mode string\n * @param {string} mode - Editor mode name of want to change\n * @param {boolean} [isWithoutFocus] - Change mode without focus\n */\n ;\n\n _proto.changeMode = function changeMode(mode, isWithoutFocus) {\n if (this.currentMode === mode) {\n return;\n }\n\n this.eventManager.emit('changeModeBefore', this.currentMode);\n this.currentMode = mode;\n\n if (this.isWysiwygMode()) {\n this.layout.switchToWYSIWYG();\n this.wwEditor.setValue(this.convertor.toHTML(this.mdEditor.getValue()), !isWithoutFocus);\n this.eventManager.emit('changeModeToWysiwyg');\n } else {\n this.layout.switchToMarkdown();\n this.mdEditor.resetState();\n this.mdEditor.setValue(this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions), !isWithoutFocus);\n this.getCodeMirror().refresh();\n this.eventManager.emit('changeModeToMarkdown');\n }\n\n this.eventManager.emit('changeMode', mode);\n\n if (!isWithoutFocus) {\n this.focus();\n }\n }\n /**\n * Remove TUIEditor from document\n */\n ;\n\n _proto.remove = function remove() {\n var self = this;\n var i = __nedInstance.length - 1;\n this.wwEditor.remove();\n this.mdEditor.remove();\n this.layout.remove();\n this.preview.remove();\n\n if (this.getUI()) {\n this.getUI().remove();\n }\n\n this.eventManager.emit('removeEditor');\n this.eventManager.events.forEach(function (value, key) {\n self.off(key);\n });\n this.eventManager = null;\n\n for (; i >= 0; i -= 1) {\n if (__nedInstance[i] === this) {\n __nedInstance.splice(i, 1);\n }\n }\n }\n /**\n * Hide TUIEditor\n */\n ;\n\n _proto.hide = function hide() {\n this.eventManager.emit('hide', this);\n }\n /**\n * Show TUIEditor\n */\n ;\n\n _proto.show = function show() {\n this.eventManager.emit('show', this);\n this.getCodeMirror().refresh();\n }\n /**\n * Scroll Editor content to Top\n * @param {number} value Scroll amount\n * @returns {number}\n */\n ;\n\n _proto.scrollTop = function scrollTop(value) {\n return this.getCurrentModeEditor().scrollTop(value);\n }\n /**\n * Set UI to private UI property\n * @param {UI} UI UI instance\n */\n ;\n\n _proto.setUI = function setUI(UI) {\n this._ui = UI;\n }\n /**\n * Get _ui property\n * @returns {DefaultUI|UI}\n */\n ;\n\n _proto.getUI = function getUI() {\n return this._ui;\n }\n /**\n * Reset TUIEditor\n */\n ;\n\n _proto.reset = function reset() {\n this.wwEditor.reset();\n this.mdEditor.reset();\n }\n /**\n * Get current range\n * @returns {{start, end}|Range}\n */\n ;\n\n _proto.getRange = function getRange() {\n return this.getCurrentModeEditor().getRange();\n }\n /**\n * Get text object of current range\n * @param {{start, end}|Range} range Range object of each editor\n * @returns {MdTextObject|WwTextObject} TextObject class\n */\n ;\n\n _proto.getTextObject = function getTextObject(range) {\n return this.getCurrentModeEditor().getTextObject(range);\n }\n /**\n * get selected text\n * @returns {string} - selected text\n */\n ;\n\n _proto.getSelectedText = function getSelectedText() {\n var range = this.getRange();\n var textObject = this.getTextObject(range);\n return textObject.getTextContent() || '';\n }\n /**\n * Set the placeholder on all editors\n * @param {string} placeholder - placeholder to set\n */\n ;\n\n _proto.setPlaceholder = function setPlaceholder(placeholder) {\n this.mdEditor.setPlaceholder(placeholder);\n this.wwEditor.setPlaceholder(placeholder);\n }\n /**\n * Set code block languages\n * @param {Array} languages - code lauguage list\n */\n ;\n\n _proto.setCodeBlockLanguages = function setCodeBlockLanguages(languages) {\n var _this2 = this;\n\n if (languages === void 0) {\n languages = [];\n }\n\n languages.forEach(function (lang) {\n if (_this2.codeBlockLanguages.indexOf(lang) < 0) {\n _this2.codeBlockLanguages.push(lang);\n }\n });\n this.eventManager.emit('setCodeBlockLanguages', this.codeBlockLanguages);\n }\n /**\n * Get instance of TUIEditor\n * @returns {Array}\n */\n ;\n\n ToastUIEditor.getInstances = function getInstances() {\n return __nedInstance;\n }\n /**\n * Factory method for Editor\n * @param {object} options Option for initialize TUIEditor\n * @returns {object} ToastUIEditor or ToastUIEditorViewer\n */\n ;\n\n ToastUIEditor.factory = function factory(options) {\n var tuiEditor;\n\n if (options.viewer) {\n tuiEditor = new viewer[\"a\" /* default */](options);\n } else {\n tuiEditor = new ToastUIEditor(options);\n }\n\n return tuiEditor;\n }\n /**\n * Set language\n * @param {string} code - code for I18N language\n * @param {object} data - language set\n */\n ;\n\n ToastUIEditor.setLanguage = function setLanguage(code, data) {\n i18n.setLanguage(code, data);\n };\n\n return ToastUIEditor;\n}(); // (Not an official API)\n// Create a function converting markdown to HTML using the internal parser and renderer.\n\n\neditor_ToastUIEditor._createMarkdownToHTML = createMarkdownToHTML;\n/**\n * Check whether is viewer (using in plugins)\n * @type {boolean}\n */\n\neditor_ToastUIEditor.isViewer = false;\n/**\n * CodeBlockManager instance using in plugins\n * @type {CodeBlockManager}\n * @ignore\n */\n\neditor_ToastUIEditor.codeBlockManager = codeBlockManager[\"a\" /* default */];\n/**\n * WwCodeBlockManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\neditor_ToastUIEditor.WwCodeBlockManager = wwCodeBlockManager;\n/**\n * WwTableManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\neditor_ToastUIEditor.WwTableManager = wwTableManager;\n/**\n * WwTableManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\neditor_ToastUIEditor.WwTableSelectionManager = wwTableSelectionManager;\n/**\n * CommandManager class using in plugins\n * @type {Class.}\n * @ignore\n */\n\neditor_ToastUIEditor.CommandManager = commandManager[\"a\" /* default */];\n/* harmony default export */ var js_editor = (editor_ToastUIEditor);\n// EXTERNAL MODULE: ./src/css/editor.css\nvar css_editor = __webpack_require__(50);\n\n// EXTERNAL MODULE: ./src/css/contents.css\nvar css_contents = __webpack_require__(51);\n\n// EXTERNAL MODULE: ./src/css/preview-highlighting.css\nvar preview_highlighting = __webpack_require__(41);\n\n// EXTERNAL MODULE: ./src/css/md-syntax-highlighting.css\nvar md_syntax_highlighting = __webpack_require__(52);\n\n// CONCATENATED MODULE: ./src/js/i18n/en-us.js\n/**\n * @fileoverview I18N for English\n * @author NHN FE Development Lab \n */\n\njs_editor.setLanguage(['en', 'en-US'], {\n Markdown: 'Markdown',\n WYSIWYG: 'WYSIWYG',\n Write: 'Write',\n Preview: 'Preview',\n Headings: 'Headings',\n Paragraph: 'Paragraph',\n Bold: 'Bold',\n Italic: 'Italic',\n Strike: 'Strike',\n Code: 'Inline code',\n Line: 'Line',\n Blockquote: 'Blockquote',\n 'Unordered list': 'Unordered list',\n 'Ordered list': 'Ordered list',\n Task: 'Task',\n Indent: 'Indent',\n Outdent: 'Outdent',\n 'Insert link': 'Insert link',\n 'Insert CodeBlock': 'Insert codeBlock',\n 'Insert table': 'Insert table',\n 'Insert image': 'Insert image',\n Heading: 'Heading',\n 'Image URL': 'Image URL',\n 'Select image file': 'Select image file',\n Description: 'Description',\n OK: 'OK',\n More: 'More',\n Cancel: 'Cancel',\n File: 'File',\n URL: 'URL',\n 'Link text': 'Link text',\n 'Add row': 'Add row',\n 'Add col': 'Add col',\n 'Remove row': 'Remove row',\n 'Remove col': 'Remove col',\n 'Align left': 'Align left',\n 'Align center': 'Align center',\n 'Align right': 'Align right',\n 'Remove table': 'Remove table',\n 'Would you like to paste as table?': 'Would you like to paste as table?',\n 'Text color': 'Text color',\n 'Auto scroll enabled': 'Auto scroll enabled',\n 'Auto scroll disabled': 'Auto scroll disabled',\n 'Choose language': 'Choose language'\n});\n// CONCATENATED MODULE: ./src/js/index.js\n/**\n * @fileoverview entry point for editor\n * @author NHN FE Development Lab \n */\n\n\n\n\n\n\n/* harmony default export */ var js = __webpack_exports__[\"default\"] = (js_editor);\n\n/***/ })\n/******/ ])[\"default\"];\n});"],"sourceRoot":""}