{"version":3,"sources":["webpack:///./node_modules/dhx-richtext/codebase/richtext.js"],"names":["window","dhx","dhx_legacy","module","exports","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","dom","el","defineElement","sv","defineSvgElement","view","defineView","createView","inject","injectView","disableHelp","DEVMODE","mutations","warnings","verbose","UNKEYED_INPUT","resizer","handler","resize","ResizeObserver","activeHandler","node","height","offsetHeight","width","offsetWidth","_hooks","didInsert","observe","contentWindow","onresize","__assign","this","assign","arguments","length","locateNode","target","attr","Event","getAttribute","parentNode","toNode","document","getElementById","querySelector","body","eventHandler","prepare","hash","keys","ev","data","cssstring","css","split","j","indexOf","locate","getBox","elem","box","getBoundingClientRect","scrollTop","pageYOffset","scrollLeft","pageXOffset","top","left","right","bottom","Position","scrollWidth","getRealPosition","rects","calculatePosition","pos","config","_a","placeBottomOrTop","placeRightOrLeft","minWidth","position","getWindowBorders","rightBorder","innerWidth","bottomBorder","innerHeight","bottomDiff","topDiff","auto","centering","diff","horizontalCentering","leftDiff","rightDiff","verticalCentering","getScrollbarWidth","scrollDiv","createElement","appendChild","style","cssText","clientWidth","removeChild","fitPosition","isIE","ua","navigator","userAgent","Modifier","Action","RTEToolbarBlock","RichTextEvents","counter","Date","valueOf","uid","extend","source","deep","sobj","tobj","Array","copy","result","naturalSort","arr","sort","a","b","localeCompare","findIndex","predicate","len","isEqualString","from","to","toLowerCase","singleOuterClick","fn","click","e","removeEventListener","addEventListener","isObject","getTextHash","blockIndex","textIndex","getLinkRefer","index","hashToInfo","map","val","parseInt","actionIdToModifierValue","id","pop","textColor","color","textSelectColor","isEqual","sourceKeys","targetKeys","_i","sourceKeys_1","prop","copyWithout","obj","forbidden","startsWith","str","pattern","ts_toolbar_1","other_1","en_1","types_1","createToolbarFontSizes","res","fontSize","fontSizes","push","createToolbarFonts","font","fonts","getToolbarData","toolbarBlocks","defaultStyle","blocks","undo","tooltip","default","type","ItemType","button","icon","multiClick","$disabled","redo","fontFamily","selectFontFamily","items","selectFontSize","selectFormat","h1","h2","h3","h4","h5","h6","blockquote","active","selectTextColor","customHTMLButton","html","background","selectTextBackground","decoration","bold","markBold","hotkey","italic","markItalic","strike","markStrike","underline","markUnderline","align","alignLeft","alignCenter","alignRight","link","addLink","clear","clearFormat","stats","fullscreen","$fullscreen","reduce","block","apply","separator","emptyStyle","defaultBlocks","defaultFontSizeByBlock","defaultDiffrentStyle","dom_1","getCss","item","className","isArray","join","getIconButtonClass","count","iconName","slice","class","EventSystem","context","events","on","callback","event","detach","eStack","splice","fire","args","EventsMixin","eventSystem","detachEvent","attachEvent","callEvent","core_1","html_1","View","_container","_uid","mount","container","vnode","_view","tagName","attach","getRootView","paint","_doNotRepaint","redraw","DataEvents","DragBehaviour","DragMode","TreeFilterType","dataproxy_1","CsvDriver_1","JsonDriver_1","isEqualObj","naturalCompare","ax","bx","replace","_","$1","$2","Infinity","an","shift","bn","nn","findByConf","conf","by","match","isDebug","debug","dhxWarning","msg","dhxError","Error","toProxy","proxy","DataProxy","toDataDriver","driver","CsvDriver","JsonDriver","removeLink","edit","chars","charsExlSpace","words","DragEvents","SelectionEvents","global","setImmediate","queueId","queue","isRunningTask","nextTick","importScripts","setTimeout","postMessage","Deferred","resolver","TypeError","then","er","self","state","next","v","_fn","_er","_d","resolve","reject","finish","thennable","ref","cb","ec","cn","cnt","all","done","race","g","Function","Promise","url","load","_ajax","save","insert","delete","update","method","xhr","XMLHttpRequest","onload","status","response","responseText","statusText","onerror","open","setRequestHeader","send","JSON","stringify","NavigationBarEvents","NavigationType","__extends","extendStatics","setPrototypeOf","__proto__","__","constructor","events_1","Keymanager_1","view_1","ts_data_1","itemfactory_1","MenuBase","_super","element","_this","_isContextMenu","_documentHaveListener","_rootItem","TreeCollection","_documentClick","_close","_currentRoot","getRoot","_factory","createFactory","menuItem","_init","_initHandlers","_initEvents","_vpopups","disable","ids","_setProp","enable","show","hide","destructor","keyManager","removeHotKey","navigationType","_isActive","clearTimeout","_currentTimeout","_activeMenu","render","dhx_widget_id","_handlers","_drawPopups","onmousemove","haveItems","$position","_activeItemChange","onmouseleave","onclick","getItem","_setRoot","input","text","selectButton","_onMenuItemClick","imageButton","dhxButton","twoState","onmousedown","timeout","fireTime","fireAction","mouseup","change","_normalizeData","_resetHotkeys","parent","group","_groups","root","_activePosition","_getParents","itemId","_key","_getMode","$style","patch","tabindex","_drawMenuItems","reverse","_listenOuterClick","openMenu","addHotKey","_active","groups","eachChild","$openIcon","elements","addInGroups","_id","parentIds","afterRoot","currentItem","disabled","eachParent","forEach","__export","constants_1","calcTextNodeStyle","modifiers","calcBlockStyle","blockStyleToTag","blockquoteWrapper","dhx_offset","getComputedNodeStyle","textNode","defaultModifiers","computed","getComputedBlockStyle","isEmptyBlockStyle","RemoveTextResult","TextNode","isEmpty","offset","remove","prev","textIsEmpty","forceRemovePrevious","nullTextLength","complete","forceRemoveNext","ts_menu_1","loader_1","sort_1","helpers_1","DataCollection","_order","_pull","_changes","order","_initOrder","_sort","Sort","_loader","Loader","add","beforeAdd","_addCore","_onChange","afterAdd","beforeRemove","_removeCore","afterRemove","removeAll","_removeAll","exists","getNearId","silent","getIndex","getId","getLength","filter","rule","multiple","_filters","f","compare","fOrder","every","find","findAll","targetId","newid","move","spliced","parse","$parse","apx","approximate","_approximate","maxNum","_parse_data","isSaved","mapRange","acc","serialize","newItem","getInitialData","init","toString","_addToOrder","prep","data_1","values","vlen","rlen","Math","floor","newData","ceil","end","min","sum","z","saving","error","array","skipHeader","nameByHeader","row","column","getFields","headers","parts","trim","getRows","toJsonArray","rows","names","top_1","datacollection_1","addToOrder","store","_root","_childs","_initChilds","getParent","asObj","getItems","childs_1","child","childs","direct","childResult","concat","newChilds","_recursiveFilter","restoreOrder","currentChilds","canCopy","currentChilds_1","childId","childIndex","returnId","parentIndex","checkItem","loadItems","autoload","refreshItems","_serialize","childs_2","parent_1","_fastDeleteChilds","initChilds","current","level","condition","specific","leafs","customRule","filtered","childs_3","itemCopy","button_1","customHTMLButton_1","dhxButton_1","imageButton_1","input_1","menuItem_1","separator_1","spacer_1","text_1","itemfactory","$hidden","spacer","defaultType","forbiddenTypes","MessageContainerPosition","nodeTimeout","WeakMap","containers","Map","onExpire","fromClick","stack","message","props","messageBox","innerHTML","getComputedStyle","has","messageContainer","set","expire","PopupEvents","Key","preventDefault","keyToOperation","shiftKey","which","enter","action","down","up","backspace","del","space","newBlock","ctrlKey","metaKey","y","selectAll","x","u","char","altKey","defaultStats","word","getStats","customStats","customStats_1","name_1","statsRenderer","statSequence","stat","ColorpickerEvents","SplitResult","TextNode_1","Block","textNodes","splitTextNode","invalidNode","offsetStart","offsetEnd","newText","newTextNode","removeNodes","offsetToNodePosition","nodePositionToOffset","getBlockEnd","balance","serializeTextNode","raw","tags","inline","textInlineStyle","processText","inlineStyle","tagWithContent","content","tag","reduceRight","repeatStr","serializer","textInline","prevLink","linkContent","linkText","textNodes_1","serializeTextNodes","serializeBlock","Richtext_1","Richtext","w","i18n","i18","setLocale","component","richtext","ts_layout_1","composition_1","link_1","scroll_1","statistics_1","styles_1","toolbar_1","keyhandler_1","Editor_1","defaultBlockIndex","_initContainer","_composition","initSelection","_compositionEventsDestructor","listenCompositionEvents","_editor","selection","isActive","Editor","repaint","_toolbarHelper","RichTextToolbarHelper","toolbar","_linkEditor","LinkEditor","editor","_initUI","setValue","getValue","getSelectedText","_layout","unmount","fullScreen","classList","exitFullScreen","getEditorAPI","getSelection","setSelection","_restoreFocus","getPosition","getModel","setModel","innerAdd","modifier","modifierValue","layout","Layout","cols","_draw","hooks","didRedraw","cell","onkeydown","isVisible","operation","onpaste","paste","oncut","cut","oncopy","ondrop","ondragstart","selectionRefresh","_scrollHelper","restoreFocus","manager","execute","canUndo","canRedo","compositionStart","compositionEnd","_restoreFocusTimeout","saveScrollTop","refs","focus","restoreScrollTop","isUpdated","refresh","currentLinkRef","getCurrentLinkRef","linkRefer","currentLink","currentLinkArr","createScrollHelper","isLastBlockNode","_renderTextNode","linkRef","href","_ref","lastSymbolIsGap","ENV_DOM","rAF","requestAnimationFrame","emptyObj","noop","isArr","isSet","isPlainObj","insertArr","targ","rem","isVal","isFunc","assignObj","k","sliceArgs","offs","cmpObj","cmpArr","alen","raft","ctx","isEvProp","isSplProp","isStyleProp","isHydrated","vm","isDynProp","getVm","VNode","VNodeProto","attrs","flags","_class","_diff","_dead","_lis","idx","defineText","tagCache","RE_ATTRS","initElementNode","parsed","cls","cached","exec","cssTag","mergedAttrs","_data","_flags","preProc","vnew","ownVm","path","seg","deepSet","setRef","nh","vh","willRemove","didRemove","willUnmount","didUnmount","setDeepRemove","preProcBody","node2","unitlessProps","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","lineClamp","borderImageOutset","borderImageSlice","borderImageWidth","fontWeight","lineHeight","opacity","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","autoPx","isNaN","patchStyle","os","nv","didQueue","fireHook","immediate","drainDidHooks","doc","nextSib","sib","nextSibling","_removeChild","parEl","_node","deepUnref","deepNotifyRemove","wuRes","wrRes","isProm","curry","obody","o2","clearChildren","textContent","firstChild","insertBefore","refEl","inDom","insertAfter","onemit","onevent","bindEv","out","stopPropagation","handle","closestVNode","evDef","currentTarget","sel","matches","evDef2","patchEvent","nval","oval","remAttr","asProp","substr","removeAttribute","setAttr","initial","setAttribute","patchAttrs","donor","nattrs","oattrs","isDyn","opts","ViewModel","hydrateBody","vnode2","type2","hydrate","_redraw","withEl","createElementNS","createTextNode","createComment","syncDir","advSib","advNode","sibName","nodeName","invSibName","invNodeName","invInsert","convTest","lis","sibNode","tmpSib","lisMove","list","guess","max","binaryFindLarger","tombs","syncLft","syncRgt","previousSibling","syncChildren","lftNode","rgtNode","lftSib","rgtSib","converge","sortDOM","kids","childNodes","domIdxs","il","longestIncreasingSubsequence","alreadyAdopted","takeSeqIndex","fromIdx","findSeqThorough","findHashKeyed","_keys","nbody","oldIsArr","newIsArr","lazyList","patchChildren","nodeValue","nlen","olen","isLazy","isFixed","isKeyed","domSync","doFind","donor2","foundIdx","patched","everNonseq","fnode2","nbodyNew","remake","diffRes","tpl","_update","withDOM","_redrawAsync","_updateAsync","ViewModelProto","api","isRoot","asSub","sync","newParent","newIdx","oldDiff","newDiff","isRedrawRoot","isMounted","vold","cmpFn","reParent","arg1","arg2","SVG_NS","VView","VModel","nano","newCfg","cfg","emitCfg","defineComment","injectElement","newVals","oldVals","FIXED_BODY","DEEP_REMOVE","KEYED_LIST","LAZY_LIST","defineElementSpread","bodyIdx","doRepaint","aclass","patch$1","emit","evName","src","evs","nextSubVms","accum","n2","defineSvgElementSpread","factory","Element","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","Cell_1","_all","_parseConfig","views","activeView","_cells","_isViewLayout","toVDOM","roots","nodes","removeCell","addCell","_createCell","getRefs","_getCss","_xLayout","full","cells","Cell","resizeMode","_parent","Boolean","header","footer","hidden","getWidget","_ui","getCellView","_calculateStyle","canResize","_isLastCell","_isXDirection","_resizerHandlers","handlers","collapsed","canCollapse","collapse","headerIcon","blockOpts","range","xLayout","nextCell","size","resizerLength","percentsum","mouseUp","mouseMove","unknown","newValue","pixels","mixedpx1","mixedpx2","percents","mixedperc1","mixedperc2","_getNextCell","nextBlock","resizerBlock","_getResizerView","blockOffsets","resizerOffsets","nextBlockOffsets","block1","block2","isXLayout","getBlockRange","dir","conf1","conf2","field","is1perc","is2perc","is1px","is2px","getResizeMode","parseFloat","flexBasis","ts_message_1","Toolbar","_listeners","getValues","setValues","oninput","onmouseover","activeElement","force","$menuSeparator","ContextMenu","showAt","MouseEvent","_changeActivePosition","_item","_mode","getHotKeyCode","code","comp","check","KeyManager","_keysStorage","String","fromCharCode","actions","scope","keyStorage","toDelete","exist","addHotkeys","beforeCall","wrapHandler","changes","loadData","_loop_1","pending","prevEl_1","this_1","_findPrevState","rej","promise","_setPromise","catch","err","_removeFromOrder","_addToChain","saveData","_saving","Timeout","clearFn","_clearFn","setInterval","clearInterval","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","process","undefined","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","getPrototypeOf","runIfPresent","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","documentElement","script","onreadystatechange","installReadyStateChangeImplementation","task","run","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","marker","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","title","browser","env","argv","version","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","aa","_checkVal","as","bb","asc","desc","DropPosition","CollectionStore_1","treecollection_1","types_2","ghost","DragManager","_transferData","_canMove","_ghostTopPadding","_onMouseMove","pageX","pageY","abs","_onDragStart","_endDrop","_moveGhost","_onDrag","_onMouseUp","_removeGhost","_onDrop","setItem","collectionStore","onMouseDown","_lastCollectionId","getItemConfig","_lastId","beforeDrop","_move","dropComplete","dropPosition","dragMode","dragStart","pointerEvents","dragEventContent","beforeDrag","_toggleTextSelection","dragConfig","elementFromPoint","eventArgs","collectionId","behaviour","complex","clientY","bot","in","dragOut","_cancelCanDrop","dragIn","_canDrop","fromData","toData","sibling","dragEnd","collection","cancelDrop","canDrop","dragManager","CollectionStore","_store","Selection","_config","_selected","near","beforeUnSelect","$selected","afterUnSelect","beforeSelect","afterSelect","dhx_id","placeholder","inputCreated","for","label","Menu","blockKeys","contains","blockScreen","blocker","alert","buttons","unblock","blockerCss","alertBox","buttonsAlignment","confirm","answer","confirmBox","clickHandler","RealPosition","message_1","findPosition","targetRect","center","tooltipBox","tooltipText","activeListenersDestructor","lastNode","hideTimeout","showTimeout","showTooltip","_b","addListeners","_mousemove","enableTooltip","disableTooltip","compositionUpdate","ts_popup_1","_events","_getParentView","_popup","Popup","_apply","_editMode","_link","_text","esc","_currentLinkRef","_initText","linkInput","_destroyCurrentLinkRef","beforeHide","outer","afterHide","afterShow","selectionChange","_show","showLinkEditor","getLinkInfo","_drawViewMode","_drawEditMode","_modifyLink","isEmptyText","updateLinkText","popup","attached","beforeShow","_setPopupSize","_outerClickDestructor","_detectOuterClick","_hide","_html","attachHTML","getContainer","_timeout","outerClick","fromOuterClick","scrollHeight","newScrollHeight","ts_colorpicker_1","colorpicker","Colorpicker","_statsPopup","_defaultToolbarState","toolbarBlocks_1","_updateState","_updateUndoRedoState","colorChange","_colorpickerTarget","_toolbarAction","currentColor","_getColorState","isRange","_getCommonModifiers","commonTextStyle","commonBlockStyle","eachSelectedNode","eachSelectedBlock","initColor","defaultColor","isSame","colorHelpers_1","colors_1","_handleGripMove","paletteRect","picker_palette","clientX","_calculatePaletteGrip","_handleRangeMove","rangeRect","hue_range","_calculateRangeGrip","customColors","_pickerState","hsv","h","currentView","customHex","_onColorClick","mousedown","buttonsClick","customColorClick","_inputTimeout","isHex","HexToHSV","contextmenu","_getContent","side","pLeft","round","pTop","rangeLeft","_getCells","colors","cellClass","selected","_ev","_getGrayShades","grayShades","_getPalette","palette","total","_getPicker","rgb","HSVtoRGB","RGBToHex","currentBackground","gripTop","gripLeft","rangeWidth","rangeGripLeft","inputValue","maxlength","cancel","select","rightClickToDelete","oncontextmenu","HexToRGB","hex","shorthandRegex","_m","RGBToHSV","diffc","rdif","gdif","bdif","q","toUpperCase","test","markdown_1","minimizer_1","parser_1","serializer_1","Manager_1","SelectionHelper_1","Block_1","getTextElement","rootView","_getRootView","_repaint","SelectionHelper","Manager","_tempNode","getState","minimizeBlockStyle","minimizeTextNodeStyle","getCompact","setState","textNodeStyleFromMinimize","blockStyleFromMinimize","setCompact","parser","markdownSerializer","blockText","removeBlock","insertBlock","_splitCarret","currentLineNodes","nextLineNodes","nextLineBlockStyle","nextLineNodes_1","startNode","endNode","_splitRange","editorContent","startIndex","endIndex","_removeRange","_c","firstBlock","lastLineIndex","lastLineNodes","_e","newBlocks","blockEnd","_createNodeFromTemp","_removeSymbol","_createTempTextNode","leftTextNode","_eachLink","clearStyles","rightOffset","leftOffset","notChanged","linkLeftIndex","linkRightIndex","leftTextIndex","leftBlockIndex","leftSplitResult","rightTextIndex","isFull","isFullLeftRemove","isFullRightRemove","leftBlockEnd","repeat","previousBlockEnd","linkNodes","unshift","nodeStyle","tempStyle","newTextIndex","Decorator","serializeGroup","prevDecorators","textNodes_2","currentDecorators","decoratorsDif","decorator","blockPrefix","serializeBlockContent","formatting","minimal","alignToNumber","numberToAlign","1","2","3","styleToNumber","numberToStyle","4","5","6","marked","htmlElement","parseBlocks","getBlockStyle","blockTags","parseTextNodes","P","H1","H2","H3","H4","H5","H6","nodeType","TEXT_NODE","elementStyle","backgroundColor","textDecoration","fontStyle","tagStyle","tagToStyle","fullStyle","textAlign","newline","fences","hr","heading","nptable","def","table","lheading","paragraph","Lexer","options","tokens","links","defaults","rules","normal","pedantic","gfm","tables","_label","_title","getRegex","bullet","_tag","_comment","merge","lex","token","loose","cap","bull","listStart","listItems","isordered","istask","ischecked","substring","rtrim","lang","depth","splitCells","ordered","start","RegExp","smartLists","charAt","checked","sanitize","pre","sanitizer","charCodeAt","escape","autolink","reflink","nolink","strong","em","br","InlineLexer","renderer","Renderer","breaks","TextRenderer","Parser","encode","escapeTest","escapeReplace","ch","replacements","escapeTestNoEncode","escapeReplaceNoEncode","unescape","regex","opt","cleanUrl","base","prot","decodeURIComponent","originIndependentUrl","baseUrls","resolveUrl","encodeURI","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","output","prevCapZero","mangle","inLink","inRawBlock","outputLink","escapes","codespan","smartypants","image","escaped","highlight","langPrefix","quote","headerIds","headerPrefix","xhtml","listitem","checkbox","tablerow","tablecell","baseUrl","inlineText","tok","peek","parseText","tableRow","curr","invert","suffLen","currChar","setOptions","getDefaults","lexer","inlineLexer","buffer_1","clearChanges","_buffer","TextBuffer","_inactionTimer","_change","newChange","_setBuffer","clipboardData","getData","_rawText","_editorContent","htmlData","types","eventHTMLData","setData","selection_1","_selectionChange","_selectedText","_ignoreSelection","stateFromDom","_state","_waitUpdate","compact","_createRange","getPositionFromRange","anchorNode","last","selectionRange","_ignoreSelectionTimeout","rangeCount","getRangeAt","removeAllRanges","createRange","setStart","setEnd","addRange","rect","getClientRects","xStart","yStart","xEnd","yEnd","anchorOffset","focusNode","focusOffset","isCollapsed","leftNode","rightNode","isSelectionBackwards","leftKey","rightKey","leftInfo","rightInfo"],"mappings":"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","file":"chunk-da52ccfe.b598392798fbb6083a5c.js","sourcesContent":["/*\n@license\n\ndhtmlxRichtext v.1.1.1 GPL\n\nThis software is covered by GPL license.\nTo use it in non-GPL project, you need obtain Commercial or Enterprise license\nPlease contact sales@dhtmlx.com. Usage without proper license is prohibited.\n(c) Dinamenta, UAB.\n\n*/\nif (window.dhx){ window.dhx_legacy = dhx; delete window.dhx; }(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dhx\"] = factory();\n\telse\n\t\troot[\"dhx\"] = factory();\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 = \"/codebase/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 36);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dom = __webpack_require__(39);\nexports.el = dom.defineElement;\nexports.sv = dom.defineSvgElement;\nexports.view = dom.defineView;\nexports.create = dom.createView;\nexports.inject = dom.injectView;\nfunction disableHelp() {\n dom.DEVMODE.mutations = false;\n dom.DEVMODE.warnings = false;\n dom.DEVMODE.verbose = false;\n dom.DEVMODE.UNKEYED_INPUT = false;\n}\nexports.disableHelp = disableHelp;\nfunction resizer(handler) {\n var resize = window.ResizeObserver;\n var activeHandler = function (node) {\n var height = node.el.offsetHeight;\n var width = node.el.offsetWidth;\n handler(width, height);\n };\n if (resize) {\n return exports.el(\"div.dhx-resize-observer\", {\n _hooks: {\n didInsert: function (node) {\n new resize(function () { return activeHandler(node); }).observe(node.el);\n }\n }\n });\n }\n return exports.el(\"iframe.dhx-resize-observer\", {\n _hooks: {\n didInsert: function (node) {\n node.el.contentWindow.onresize = function () { return activeHandler(node); };\n activeHandler(node);\n }\n }\n });\n}\nexports.resizer = resizer;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(40);\nfunction toNode(node) {\n if (typeof node === \"string\") {\n node = (document.getElementById(node) || document.querySelector(node));\n }\n return node || document.body;\n}\nexports.toNode = toNode;\nfunction eventHandler(prepare, hash) {\n var keys = Object.keys(hash);\n return function (ev) {\n var data = prepare(ev);\n var node = ev.target;\n while (node) {\n var cssstring = node.getAttribute ? (node.getAttribute(\"class\") || \"\") : \"\";\n if (cssstring.length) {\n var css = cssstring.split(\" \");\n for (var j = 0; j < keys.length; j++) {\n if (css.indexOf(keys[j]) > -1) {\n return hash[keys[j]](ev, data);\n }\n }\n }\n node = node.parentNode;\n }\n return true;\n };\n}\nexports.eventHandler = eventHandler;\nfunction locate(target, attr) {\n if (attr === void 0) { attr = \"dhx_id\"; }\n var node = locateNode(target, attr);\n return node ? node.getAttribute(attr) : \"\";\n}\nexports.locate = locate;\nfunction locateNode(target, attr) {\n if (attr === void 0) { attr = \"dhx_id\"; }\n if (target instanceof Event) {\n target = target.target;\n }\n while (target) {\n if (target.getAttribute && target.getAttribute(attr)) {\n return target;\n }\n target = target.parentNode;\n }\n}\nexports.locateNode = locateNode;\nfunction getBox(elem) {\n var box = elem.getBoundingClientRect();\n var body = document.body;\n var scrollTop = window.pageYOffset || body.scrollTop;\n var scrollLeft = window.pageXOffset || body.scrollLeft;\n var top = box.top + scrollTop;\n var left = box.left + scrollLeft;\n var right = body.offsetWidth - box.right;\n var bottom = body.offsetHeight - box.bottom;\n var width = box.right - box.left;\n var height = box.bottom - box.top;\n return { top: top, left: left, right: right, bottom: bottom, width: width, height: height };\n}\nexports.getBox = getBox;\nvar scrollWidth = -1;\nfunction getScrollbarWidth() {\n if (scrollWidth > -1) {\n return scrollWidth;\n }\n var scrollDiv = document.createElement(\"div\");\n document.body.appendChild(scrollDiv);\n scrollDiv.style.cssText = \"position: absolute;left: -99999px;overflow:scroll;width: 100px;height: 100px;\";\n scrollWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollWidth;\n}\nexports.getScrollbarWidth = getScrollbarWidth;\nfunction fitPosition(node, config) {\n return calculatePosition(getRealPosition(node), config);\n}\nexports.fitPosition = fitPosition;\nfunction isIE() {\n var ua = window.navigator.userAgent;\n return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n}\nexports.isIE = isIE;\nfunction getRealPosition(node) {\n var rects = node.getBoundingClientRect();\n return {\n left: rects.left + window.pageXOffset,\n right: rects.right + window.pageXOffset,\n top: rects.top + window.pageYOffset,\n bottom: rects.bottom + window.pageYOffset\n };\n}\nexports.getRealPosition = getRealPosition;\nvar Position;\n(function (Position) {\n Position[\"left\"] = \"left\";\n Position[\"right\"] = \"right\";\n Position[\"bottom\"] = \"bottom\";\n Position[\"top\"] = \"top\";\n})(Position = exports.Position || (exports.Position = {}));\nfunction calculatePosition(pos, config) {\n var _a = config.mode === Position.bottom || config.mode === Position.top ?\n placeBottomOrTop(pos, config) :\n placeRightOrLeft(pos, config), left = _a.left, top = _a.top;\n return {\n left: left + \"px\",\n top: top + \"px\",\n minWidth: config.width + \"px\",\n position: \"absolute\"\n };\n}\nexports.calculatePosition = calculatePosition;\nfunction getWindowBorders() {\n return {\n rightBorder: window.pageXOffset + window.innerWidth,\n bottomBorder: window.pageYOffset + window.innerHeight\n };\n}\nfunction horizontalCentering(pos, width, rightBorder) {\n var nodeWidth = pos.right - pos.left;\n var diff = (width - nodeWidth) / 2;\n var left = pos.left - diff;\n var right = pos.right + diff;\n if (left >= 0 && right <= rightBorder) {\n return left;\n }\n if (left < 0) {\n return 0;\n }\n return rightBorder - width;\n}\nfunction verticalCentering(pos, height, bottomBorder) {\n var nodeHeight = pos.bottom - pos.top;\n var diff = (height - nodeHeight) / 2;\n var top = pos.top - diff;\n var bottom = pos.bottom + diff;\n if (top >= 0 && bottom <= bottomBorder) {\n return top;\n }\n if (top < 0) {\n return 0;\n }\n return bottomBorder - height;\n}\nfunction placeBottomOrTop(pos, config) {\n var _a = getWindowBorders(), rightBorder = _a.rightBorder, bottomBorder = _a.bottomBorder;\n var left;\n var top;\n var bottomDiff = bottomBorder - pos.bottom - config.height;\n var topDiff = pos.top - config.height;\n if (config.mode === Position.bottom) {\n if (bottomDiff >= 0) {\n top = pos.bottom;\n }\n else if (topDiff >= 0) {\n top = topDiff;\n }\n }\n else {\n if (topDiff >= 0) {\n top = topDiff;\n }\n else if (bottomDiff >= 0) {\n top = pos.bottom;\n }\n }\n if (bottomDiff < 0 && topDiff < 0) {\n if (config.auto) {\n return placeRightOrLeft(pos, __assign({}, config, { mode: Position.right, auto: false }));\n }\n top = bottomDiff > topDiff ? pos.bottom : topDiff;\n }\n if (config.centering) {\n left = horizontalCentering(pos, config.width, rightBorder);\n }\n else {\n var leftDiff = rightBorder - pos.left - config.width;\n var rightDiff = pos.right - config.width;\n if (leftDiff >= 0) {\n left = pos.left;\n }\n else if (rightDiff >= 0) {\n left = rightDiff;\n }\n else {\n left = rightDiff > leftDiff ? pos.left : rightDiff;\n }\n }\n return { left: left, top: top };\n}\nfunction placeRightOrLeft(pos, config) {\n var _a = getWindowBorders(), rightBorder = _a.rightBorder, bottomBorder = _a.bottomBorder;\n var left;\n var top;\n var rightDiff = rightBorder - pos.right - config.width;\n var leftDiff = pos.left - config.width;\n if (config.mode === Position.right) {\n if (rightDiff >= 0) {\n left = pos.right;\n }\n else if (leftDiff >= 0) {\n left = leftDiff;\n }\n }\n else {\n if (leftDiff >= 0) {\n left = leftDiff;\n }\n else if (rightDiff >= 0) {\n left = pos.right;\n }\n }\n if (leftDiff < 0 && rightDiff < 0) {\n if (config.auto) {\n return placeRightOrLeft(pos, __assign({}, config, { mode: Position.bottom, auto: false }));\n }\n left = leftDiff > rightDiff ? leftDiff : pos.right;\n }\n if (config.centering) {\n top = verticalCentering(pos, config.width, rightBorder);\n }\n else {\n var bottomDiff = pos.bottom - config.height;\n var topDiff = bottomBorder - pos.top - config.height;\n if (topDiff >= 0) {\n top = pos.top;\n }\n else if (bottomDiff > 0) {\n top = bottomDiff;\n }\n else {\n top = bottomDiff > topDiff ? bottomDiff : pos.top;\n }\n }\n return { left: left, top: top };\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Modifier;\n(function (Modifier) {\n Modifier[Modifier[\"none\"] = 0] = \"none\";\n // block mods\n Modifier[\"style\"] = \"style\";\n Modifier[\"align\"] = \"align\";\n Modifier[\"blockquote\"] = \"blockquote\";\n // text mods\n Modifier[\"bold\"] = \"bold\";\n Modifier[\"italic\"] = \"italic\";\n Modifier[\"strike\"] = \"strike\";\n Modifier[\"fontSize\"] = \"font-size\";\n Modifier[\"fontFamily\"] = \"font-family\";\n Modifier[\"underline\"] = \"underline\";\n Modifier[\"color\"] = \"color\";\n Modifier[\"background\"] = \"background\";\n Modifier[\"link\"] = \"link\";\n})(Modifier = exports.Modifier || (exports.Modifier = {}));\nvar Action;\n(function (Action) {\n Action[\"add\"] = \"add\";\n Action[\"innerAdd\"] = \"innerAdd\";\n Action[\"remove\"] = \"remove\";\n Action[\"update\"] = \"update\";\n Action[\"undo\"] = \"undo\";\n Action[\"paste\"] = \"paste\";\n Action[\"copy\"] = \"copy\";\n Action[\"cut\"] = \"cut\";\n Action[\"redo\"] = \"redo\";\n Action[\"clear\"] = \"clear\";\n Action[\"parse\"] = \"parse\";\n Action[\"selectAll\"] = \"selectAll\";\n})(Action = exports.Action || (exports.Action = {}));\nvar RTEToolbarBlock;\n(function (RTEToolbarBlock) {\n RTEToolbarBlock[\"default\"] = \"default\";\n RTEToolbarBlock[\"undo\"] = \"undo\";\n RTEToolbarBlock[\"style\"] = \"style\";\n RTEToolbarBlock[\"decoration\"] = \"decoration\";\n RTEToolbarBlock[\"color\"] = \"colors\";\n RTEToolbarBlock[\"align\"] = \"align\";\n RTEToolbarBlock[\"link\"] = \"link\";\n RTEToolbarBlock[\"clear\"] = \"clear\";\n RTEToolbarBlock[\"fullscreen\"] = \"fullscreen\";\n RTEToolbarBlock[\"stats\"] = \"stats\";\n})(RTEToolbarBlock = exports.RTEToolbarBlock || (exports.RTEToolbarBlock = {}));\nvar RichTextEvents;\n(function (RichTextEvents) {\n RichTextEvents[\"change\"] = \"change\";\n RichTextEvents[\"action\"] = \"action\";\n RichTextEvents[\"selectionChange\"] = \"selectionchange\";\n RichTextEvents[\"selectionRefresh\"] = \"selectionrefresh\";\n RichTextEvents[\"showLinkEditor\"] = \"showlinkeditor\";\n RichTextEvents[\"compositionStart\"] = \"compositionstart\";\n RichTextEvents[\"compositionUpdate\"] = \"compositionupdate\";\n RichTextEvents[\"compositionEnd\"] = \"compositionend\";\n})(RichTextEvents = exports.RichTextEvents || (exports.RichTextEvents = {}));\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar counter = (new Date()).valueOf();\nfunction uid() {\n return \"u\" + (counter++);\n}\nexports.uid = uid;\nfunction extend(target, source, deep) {\n if (deep === void 0) { deep = true; }\n if (source) {\n for (var key in source) {\n var sobj = source[key];\n var tobj = target[key];\n if (deep && typeof tobj === \"object\" && !(tobj instanceof Date) && !(tobj instanceof Array)) {\n extend(tobj, sobj);\n }\n else {\n target[key] = sobj;\n }\n }\n }\n return target;\n}\nexports.extend = extend;\nfunction copy(source) {\n var result = {};\n for (var key in source) {\n result[key] = source[key];\n }\n return result;\n}\nexports.copy = copy;\nfunction naturalSort(arr) {\n return arr.sort(function (a, b) {\n var nn = typeof a === \"string\" ? a.localeCompare(b) : a - b;\n return nn;\n });\n}\nexports.naturalSort = naturalSort;\nfunction findIndex(arr, predicate) {\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n if (predicate(arr[i])) {\n return i;\n }\n }\n return -1;\n}\nexports.findIndex = findIndex;\nfunction isEqualString(from, to) {\n if (from.length > to.length) {\n return false;\n }\n for (var i = 0; i < from.length; i++) {\n if (from[i].toLowerCase() !== to[i].toLowerCase()) {\n return false;\n }\n }\n return true;\n}\nexports.isEqualString = isEqualString;\nfunction singleOuterClick(fn) {\n var click = function (e) {\n if (fn(e)) {\n document.removeEventListener(\"click\", click);\n }\n };\n document.addEventListener(\"click\", click);\n}\nexports.singleOuterClick = singleOuterClick;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getTextHash(blockIndex, textIndex) {\n return blockIndex + \"_\" + textIndex;\n}\nexports.getTextHash = getTextHash;\nfunction getLinkRefer() {\n var index = 0;\n return function () { return \"link_ref_\" + index++; };\n}\nexports.getLinkRefer = getLinkRefer;\nfunction hashToInfo(hash) {\n if (hash === void 0) { hash = \"\"; }\n if (!hash) {\n return [];\n }\n return hash.split(\"_\").map(function (val) { return parseInt(val, 10); });\n}\nexports.hashToInfo = hashToInfo;\nfunction actionIdToModifierValue(id) {\n return id.split(\"-\").pop();\n}\nexports.actionIdToModifierValue = actionIdToModifierValue;\nfunction textColor(color) {\n return \"\";\n}\nexports.textColor = textColor;\nfunction textSelectColor(color) {\n return \"\";\n}\nexports.textSelectColor = textSelectColor;\nfunction isObject(target) {\n return target !== null && typeof target === \"object\" && !(target instanceof Date);\n}\nfunction isEqual(source, target, deep) {\n if (deep === void 0) { deep = false; }\n var sourceKeys = Object.keys(source);\n var targetKeys = Object.keys(target);\n if (sourceKeys.length !== targetKeys.length) {\n return false;\n }\n for (var _i = 0, sourceKeys_1 = sourceKeys; _i < sourceKeys_1.length; _i++) {\n var prop = sourceKeys_1[_i];\n if (deep && isObject(source[prop]) && isObject(target[prop])) {\n if (!isEqual(source[prop], target[prop], deep)) {\n return false;\n }\n }\n else if (source[prop] !== target[prop]) {\n return false;\n }\n }\n return true;\n}\nexports.isEqual = isEqual;\nfunction copyWithout(obj, forbidden) {\n var target = {};\n for (var key in obj) {\n if (!forbidden.hasOwnProperty(key)) {\n target[key] = obj[key];\n }\n }\n return target;\n}\nexports.copyWithout = copyWithout;\nfunction startsWith(str, pattern) {\n if (str.length < pattern.length) {\n return false;\n }\n for (var i = 0; i < pattern.length; i++) {\n if (str[i] !== pattern[i]) {\n return false;\n }\n }\n return true;\n}\nexports.startsWith = startsWith;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\nvar ts_toolbar_1 = __webpack_require__(21);\nvar other_1 = __webpack_require__(4);\nvar en_1 = __webpack_require__(11);\nvar types_1 = __webpack_require__(2);\nfunction getToolbarData(toolbarBlocks, defaultStyle) {\n var _a;\n var blocks = (_a = {},\n _a[types_1.RTEToolbarBlock.undo] = [\n {\n id: \"undo\",\n tooltip: en_1.default.undo,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-undo\",\n multiClick: true,\n $disabled: true\n },\n {\n id: \"redo\",\n tooltip: en_1.default.redo,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-redo\",\n multiClick: true,\n $disabled: true\n }\n ],\n _a[types_1.RTEToolbarBlock.style] = [\n {\n id: types_1.Modifier.fontFamily,\n value: defaultStyle[types_1.Modifier.fontFamily],\n tooltip: en_1.default.selectFontFamily,\n css: \"dhx_richtext__dropdown dhx_richtext__dropdown--force_max-width dhx_richtext__dropdown--mw_50\",\n type: ts_toolbar_1.ItemType.button,\n items: createToolbarFonts()\n },\n {\n id: types_1.Modifier.fontSize,\n value: defaultStyle[types_1.Modifier.fontSize],\n tooltip: en_1.default.selectFontSize,\n css: \"dhx_richtext__dropdown dhx_richtext__dropdown--force_max-width dhx_richtext__dropdown--mw_35\",\n type: ts_toolbar_1.ItemType.button,\n items: createToolbarFontSizes()\n },\n {\n id: types_1.Modifier.style,\n tooltip: en_1.default.selectFormat,\n value: en_1.default[defaultStyle[types_1.Modifier.style]],\n css: \"dhx_richtext__dropdown dhx_richtext__dropdown--force_max-width dhx_richtext__dropdown--mw_75\",\n type: ts_toolbar_1.ItemType.button,\n items: [\n {\n id: \"style-p\",\n value: en_1.default.p\n },\n {\n id: \"style-h1\",\n css: \"dhx_richtext__menu-text--h1\",\n value: en_1.default.h1\n },\n {\n id: \"style-h2\",\n css: \"dhx_richtext__menu-text--h2\",\n value: en_1.default.h2\n },\n {\n id: \"style-h3\",\n css: \"dhx_richtext__menu-text--h3\",\n value: en_1.default.h3\n },\n {\n id: \"style-h4\",\n css: \"dhx_richtext__menu-text--h4\",\n value: en_1.default.h4\n },\n {\n id: \"style-h5\",\n css: \"dhx_richtext__menu-text--h5\",\n value: en_1.default.h5\n },\n {\n id: \"style-h6\",\n css: \"dhx_richtext__menu-text--h6\",\n value: en_1.default.h6\n }\n ]\n },\n {\n id: types_1.Modifier.blockquote,\n tooltip: en_1.default.blockquote,\n active: defaultStyle[types_1.Modifier.blockquote],\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-format-quote-open\"\n }\n ],\n _a[types_1.RTEToolbarBlock.color] = [\n {\n id: types_1.Modifier.color,\n tooltip: en_1.default.selectTextColor,\n type: ts_toolbar_1.ItemType.customHTMLButton,\n css: \"dhx_toolbar__button dhx_toolbar-button dhx_toolbar-button--icon \",\n html: other_1.textColor(defaultStyle[types_1.Modifier.color])\n },\n {\n id: types_1.Modifier.background,\n tooltip: en_1.default.selectTextBackground,\n type: ts_toolbar_1.ItemType.customHTMLButton,\n css: \"dhx_toolbar__button dhx_toolbar-button dhx_toolbar-button--icon \",\n html: other_1.textSelectColor(defaultStyle[types_1.Modifier.background]),\n }\n ],\n _a[types_1.RTEToolbarBlock.decoration] = [\n {\n id: types_1.Modifier.bold,\n tooltip: en_1.default.markBold,\n icon: \"dxi-format-bold\",\n type: ts_toolbar_1.ItemType.button,\n hotkey: \"ctrl+b\",\n active: defaultStyle[types_1.Modifier.bold]\n },\n {\n id: types_1.Modifier.italic,\n tooltip: en_1.default.markItalic,\n icon: \"dxi-format-italic\",\n type: ts_toolbar_1.ItemType.button,\n hotkey: \"ctrl+i\",\n active: defaultStyle[types_1.Modifier.italic]\n },\n {\n id: types_1.Modifier.strike,\n tooltip: en_1.default.markStrike,\n icon: \"dxi-format-strikethrough\",\n type: ts_toolbar_1.ItemType.button,\n active: defaultStyle[types_1.Modifier.strike]\n },\n {\n id: types_1.Modifier.underline,\n tooltip: en_1.default.markUnderline,\n icon: \"dxi-format-underline\",\n type: ts_toolbar_1.ItemType.button,\n hotkey: \"ctrl+u\",\n active: defaultStyle[types_1.Modifier.underline]\n }\n ],\n _a[types_1.RTEToolbarBlock.align] = [\n {\n id: \"align-left\",\n tooltip: en_1.default.alignLeft,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-format-align-left\",\n active: defaultStyle[types_1.Modifier.align] === \"left\"\n },\n {\n id: \"align-center\",\n tooltip: en_1.default.alignCenter,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-format-align-center\",\n active: defaultStyle[types_1.Modifier.align] === \"center\"\n },\n {\n id: \"align-right\",\n tooltip: en_1.default.alignRight,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-format-align-right\",\n active: defaultStyle[types_1.Modifier.align] === \"right\"\n }\n ],\n _a[types_1.RTEToolbarBlock.link] = [\n {\n id: types_1.Modifier.link,\n tooltip: en_1.default.addLink,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-link-variant\"\n }\n ],\n _a[types_1.RTEToolbarBlock.clear] = [\n {\n id: \"clear-style\",\n tooltip: en_1.default.clearFormat,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-eraser\"\n }\n ],\n _a[types_1.RTEToolbarBlock.stats] = [\n {\n id: \"stats\",\n tooltip: en_1.default.stats,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-information-outline\"\n }\n ],\n _a[types_1.RTEToolbarBlock.fullscreen] = [\n {\n id: \"fullscreen\",\n $fullscreen: false,\n tooltip: en_1.default.fullscreen,\n type: ts_toolbar_1.ItemType.button,\n icon: \"dxi-arrow-expand\"\n }\n ],\n _a);\n var result = toolbarBlocks.reduce(function (config, block, i) {\n config.push.apply(config, blocks[block]);\n if (i !== toolbarBlocks.length - 1) {\n config.push({ type: ts_toolbar_1.ItemType.separator });\n }\n return config;\n }, []);\n return result;\n}\nexports.getToolbarData = getToolbarData;\nfunction createToolbarFontSizes() {\n var res = [];\n for (var fontSize in exports.fontSizes) {\n var value = parseInt(fontSize, 10);\n res.push({\n id: \"font-size-\" + value,\n value: fontSize\n });\n }\n return res;\n}\nfunction createToolbarFonts() {\n var res = [];\n for (var font in exports.fonts) {\n res.push({\n id: \"font-\" + font,\n value: font\n });\n }\n return res;\n}\nexports.fonts = {\n \"Roboto\": true,\n \"Arial\": true,\n \"Georgia\": true,\n \"Tahoma\": true,\n \"Times New Roman\": true,\n \"Verdana\": true\n};\nexports.fontSizes = {\n \"12px\": true,\n \"14px\": true,\n \"16px\": true,\n \"18px\": true,\n \"20px\": true,\n \"24px\": true,\n \"28px\": true,\n \"32px\": true,\n \"36px\": true\n};\nexports.emptyStyle = {};\nexports.defaultBlocks = [\n types_1.RTEToolbarBlock.undo,\n types_1.RTEToolbarBlock.style,\n types_1.RTEToolbarBlock.decoration,\n types_1.RTEToolbarBlock.color,\n types_1.RTEToolbarBlock.align,\n types_1.RTEToolbarBlock.link\n];\nexports.defaultFontSizeByBlock = {\n p: \"14px\",\n h1: \"36px\",\n h2: \"32px\",\n h3: \"28px\",\n h4: \"24px\",\n h5: \"20px\",\n h6: \"16px\"\n};\nexports.defaultDiffrentStyle = (_a = {},\n _a[types_1.Modifier.fontSize] = \"\",\n _a[types_1.Modifier.fontFamily] = \"\",\n _a[types_1.Modifier.style] = \"\",\n _a[types_1.Modifier.bold] = false,\n _a[types_1.Modifier.underline] = false,\n _a[types_1.Modifier.bold] = false,\n _a[types_1.Modifier.italic] = false,\n _a[types_1.Modifier.strike] = false,\n _a[types_1.Modifier.color] = \"#4c4c4c\",\n _a[types_1.Modifier.background] = \"#FFFFFF\",\n _a[types_1.Modifier.align] = false,\n _a);\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dom_1 = __webpack_require__(0);\nfunction getCss(item) {\n var className = \"\";\n if (item.active) {\n className += \" dhx_toolbar-button--active\";\n }\n if (item.css) {\n if (Array.isArray(item.css)) {\n className += item.css.join(\" \");\n }\n else {\n className += \" \" + item.css;\n }\n }\n return className;\n}\nexports.getCss = getCss;\nfunction getIconButtonClass(item) {\n var className = !item.value && item.icon && \"dhx_toolbar-button--icon \" || \"\";\n return className;\n}\nexports.getIconButtonClass = getIconButtonClass;\nfunction counter(item) {\n if (item.count) {\n return dom_1.el(\".dhx_toolbar-counter\", parseInt(item.count, 10) > 99 ? \"99+\" : item.count);\n }\n}\nexports.counter = counter;\nfunction icon(iconName, type) {\n if (iconName === void 0) { iconName = \"\"; }\n if (iconName.slice(0, 3) === \"dxi\") {\n iconName = \"dxi \" + iconName;\n }\n return dom_1.el(\"span\", {\n class: \"dhx_\" + type + \"__icon \" + iconName\n });\n}\nexports.icon = icon;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventSystem = /** @class */ (function () {\n function EventSystem(context) {\n this.events = {};\n this.context = context || this;\n }\n EventSystem.prototype.on = function (name, callback, context) {\n var event = name.toLowerCase();\n this.events[event] = this.events[event] || [];\n this.events[event].push({ callback: callback, context: context || this.context });\n };\n EventSystem.prototype.detach = function (name, context) {\n var event = name.toLowerCase();\n var eStack = this.events[event];\n if (context) {\n for (var i = eStack.length - 1; i >= 0; i--) {\n if (eStack[i].context === context) {\n eStack.splice(i, 1);\n }\n }\n }\n else {\n this.events[event] = [];\n }\n };\n EventSystem.prototype.fire = function (name, args) {\n if (typeof args === \"undefined\") {\n args = [];\n }\n var event = name.toLowerCase();\n if (this.events[event]) {\n var res = this.events[event].map(function (e) { return e.callback.apply(e.context, args); });\n return res.indexOf(false) < 0;\n }\n return true;\n };\n return EventSystem;\n}());\nexports.EventSystem = EventSystem;\nfunction EventsMixin(obj) {\n obj = obj || {};\n var eventSystem = new EventSystem(obj);\n obj.detachEvent = eventSystem.detach.bind(eventSystem);\n obj.attachEvent = eventSystem.on.bind(eventSystem);\n obj.callEvent = eventSystem.fire.bind(eventSystem);\n}\nexports.EventsMixin = EventsMixin;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar html_1 = __webpack_require__(1);\nvar View = /** @class */ (function () {\n function View(_container, config) {\n this._uid = core_1.uid();\n this.config = config || {};\n }\n View.prototype.mount = function (container, vnode) {\n if (vnode) {\n this._view = vnode;\n }\n if (container && this._view && this._view.mount) {\n // init view inside of HTML container\n this._container = html_1.toNode(container);\n if (this._container.tagName) {\n this._view.mount(this._container);\n }\n else if (this._container.attach) {\n this._container.attach(this);\n }\n }\n };\n View.prototype.getRootView = function () {\n return this._view;\n };\n View.prototype.paint = function () {\n if (this._view && ( // was mounted\n this._view.node || // already rendered node\n this._container)) { // not rendered, but has container\n this._doNotRepaint = false;\n this._view.redraw();\n }\n };\n return View;\n}());\nexports.View = View;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = __webpack_require__(12);\nexports.DataEvents = types_1.DataEvents;\nexports.DragBehaviour = types_1.DragBehaviour;\nexports.DragMode = types_1.DragMode;\nvar TreeFilterType;\n(function (TreeFilterType) {\n TreeFilterType[TreeFilterType[\"all\"] = 1] = \"all\";\n TreeFilterType[TreeFilterType[\"specific\"] = 2] = \"specific\";\n TreeFilterType[TreeFilterType[\"leafs\"] = 3] = \"leafs\";\n})(TreeFilterType = exports.TreeFilterType || (exports.TreeFilterType = {}));\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dataproxy_1 = __webpack_require__(15);\nvar CsvDriver_1 = __webpack_require__(24);\nvar JsonDriver_1 = __webpack_require__(25);\nfunction isEqualObj(a, b) {\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nexports.isEqualObj = isEqualObj;\nfunction naturalCompare(a, b) {\n var ax = [];\n var bx = [];\n a.replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { ax.push([$1 || Infinity, $2 || \"\"]); });\n b.replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { bx.push([$1 || Infinity, $2 || \"\"]); });\n while (ax.length && bx.length) {\n var an = ax.shift();\n var bn = bx.shift();\n var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);\n if (nn) {\n return nn;\n }\n }\n return ax.length - bx.length;\n}\nexports.naturalCompare = naturalCompare;\nfunction findByConf(item, conf) {\n if (typeof conf === \"function\") {\n if (conf.call(this, item)) {\n return item;\n }\n }\n else if (conf.by && conf.match) {\n if (item[conf.by] === conf.match) {\n return item;\n }\n }\n}\nexports.findByConf = findByConf;\nfunction isDebug() {\n var dhx = window.dhx;\n if (typeof dhx !== \"undefined\") {\n return typeof (dhx.debug) !== \"undefined\" && dhx.debug;\n }\n // return typeof DHX_DEBUG_MODE !== \"undefined\" && DHX_DEBUG_MODE;\n}\nexports.isDebug = isDebug;\nfunction dhxWarning(msg) {\n // tslint:disable-next-line:no-console\n console.warn(msg);\n}\nexports.dhxWarning = dhxWarning;\nfunction dhxError(msg) {\n throw new Error(msg);\n}\nexports.dhxError = dhxError;\nfunction toProxy(proxy) {\n var type = typeof proxy;\n if (type === \"string\") {\n return new dataproxy_1.DataProxy(proxy);\n }\n else if (type === \"object\") {\n return proxy;\n }\n}\nexports.toProxy = toProxy;\nfunction toDataDriver(driver) {\n var type = typeof driver;\n if (type === \"string\") {\n switch (driver) {\n case \"csv\":\n return new CsvDriver_1.CsvDriver();\n case \"json\":\n return new JsonDriver_1.JsonDriver();\n default:\n // tslint:disable-next-line:no-console\n console.warn(\"incorrect driver type\", driver);\n break;\n }\n }\n else if (typeof driver === \"object\") {\n return driver;\n }\n}\nexports.toDataDriver = toDataDriver;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar locale = {\n apply: \"Apply\",\n undo: \"Undo\",\n redo: \"Redo\",\n selectFontFamily: \"Font\",\n selectFontSize: \"Font size\",\n selectFormat: \"Style\",\n selectTextColor: \"Text color\",\n selectTextBackground: \"Background color\",\n markBold: \"Bold\",\n markItalic: \"Italic\",\n markStrike: \"Strike\",\n markUnderline: \"Underline\",\n alignLeft: \"Align left\",\n alignCenter: \"Align center\",\n alignRight: \"Align right\",\n addLink: \"Add link\",\n clearFormat: \"Clear formatting\",\n fullscreen: \"Fullscreen\",\n stats: \"Statistics\",\n removeLink: \"Remove link\",\n edit: \"Edit\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n h3: \"Heading 3\",\n h4: \"Heading 4\",\n h5: \"Heading 5\",\n h6: \"Heading 6\",\n p: \"Normal text\",\n blockquote: \"Block quote\",\n chars: \"chars\",\n charsExlSpace: \"Characters without spaces\",\n words: \"words\",\n};\nexports.default = locale;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataEvents;\n(function (DataEvents) {\n DataEvents[\"afterAdd\"] = \"afteradd\";\n DataEvents[\"beforeAdd\"] = \"beforeadd\";\n DataEvents[\"removeAll\"] = \"removeall\";\n DataEvents[\"beforeRemove\"] = \"beforeremove\";\n DataEvents[\"afterRemove\"] = \"afterremove\";\n DataEvents[\"change\"] = \"change\";\n DataEvents[\"load\"] = \"load\";\n})(DataEvents = exports.DataEvents || (exports.DataEvents = {}));\nvar DragEvents;\n(function (DragEvents) {\n DragEvents[\"beforeDrag\"] = \"beforedrag\";\n DragEvents[\"beforeDrop\"] = \"beforeDrop\";\n DragEvents[\"dragStart\"] = \"dragstart\";\n DragEvents[\"dragEnd\"] = \"dragend\";\n DragEvents[\"canDrop\"] = \"candrop\";\n DragEvents[\"cancelDrop\"] = \"canceldrop\";\n DragEvents[\"dropComplete\"] = \"dropcomplete\";\n DragEvents[\"dragOut\"] = \"dragOut\";\n DragEvents[\"dragIn\"] = \"dragIn\";\n})(DragEvents = exports.DragEvents || (exports.DragEvents = {}));\nvar DragMode;\n(function (DragMode) {\n DragMode[\"target\"] = \"target\";\n DragMode[\"both\"] = \"both\";\n DragMode[\"source\"] = \"source\";\n})(DragMode = exports.DragMode || (exports.DragMode = {}));\nvar DragBehaviour;\n(function (DragBehaviour) {\n DragBehaviour[\"child\"] = \"child\";\n DragBehaviour[\"sibling\"] = \"sibling\";\n DragBehaviour[\"complex\"] = \"complex\";\n})(DragBehaviour = exports.DragBehaviour || (exports.DragBehaviour = {}));\nvar SelectionEvents;\n(function (SelectionEvents) {\n SelectionEvents[\"beforeUnSelect\"] = \"beforeunselect\";\n SelectionEvents[\"afterUnSelect\"] = \"afterunselect\";\n SelectionEvents[\"beforeSelect\"] = \"beforeselect\";\n SelectionEvents[\"afterSelect\"] = \"afterselect\";\n})(SelectionEvents = exports.SelectionEvents || (exports.SelectionEvents = {}));\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, setImmediate) {(function () {\n global = this\n\n var queueId = 1\n var queue = {}\n var isRunningTask = false\n\n if (!global.setImmediate)\n global.addEventListener('message', function (e) {\n if (e.source == global){\n if (isRunningTask)\n nextTick(queue[e.data])\n else {\n isRunningTask = true\n try {\n queue[e.data]()\n } catch (e) {}\n\n delete queue[e.data]\n isRunningTask = false\n }\n }\n })\n\n function nextTick(fn) {\n if (global.setImmediate) setImmediate(fn)\n // if inside of web worker\n else if (global.importScripts) setTimeout(fn)\n else {\n queueId++\n queue[queueId] = fn\n global.postMessage(queueId, '*')\n }\n }\n\n Deferred.resolve = function (value) {\n if (!(this._d == 1))\n throw TypeError()\n\n if (value instanceof Deferred)\n return value\n\n return new Deferred(function (resolve) {\n resolve(value)\n })\n }\n\n Deferred.reject = function (value) {\n if (!(this._d == 1))\n throw TypeError()\n\n return new Deferred(function (resolve, reject) {\n reject(value)\n })\n }\n\n Deferred.all = function (arr) {\n if (!(this._d == 1))\n throw TypeError()\n\n if (!(arr instanceof Array))\n return Deferred.reject(TypeError())\n\n var d = new Deferred()\n\n function done(e, v) {\n if (v)\n return d.resolve(v)\n\n if (e)\n return d.reject(e)\n\n var unresolved = arr.reduce(function (cnt, v) {\n if (v && v.then)\n return cnt + 1\n return cnt\n }, 0)\n\n if(unresolved == 0)\n d.resolve(arr)\n\n arr.map(function (v, i) {\n if (v && v.then)\n v.then(function (r) {\n arr[i] = r\n done()\n return r\n }, done)\n })\n }\n\n done()\n\n return d\n }\n\n Deferred.race = function (arr) {\n if (!(this._d == 1))\n throw TypeError()\n\n if (!(arr instanceof Array))\n return Deferred.reject(TypeError())\n\n if (arr.length == 0)\n return new Deferred()\n\n var d = new Deferred()\n\n function done(e, v) {\n if (v)\n return d.resolve(v)\n\n if (e)\n return d.reject(e)\n\n var unresolved = arr.reduce(function (cnt, v) {\n if (v && v.then)\n return cnt + 1\n return cnt\n }, 0)\n\n if(unresolved == 0)\n d.resolve(arr)\n\n arr.map(function (v, i) {\n if (v && v.then)\n v.then(function (r) {\n done(null, r)\n }, done)\n })\n }\n\n done()\n\n return d\n }\n\n Deferred._d = 1\n\n\n /**\n * @constructor\n */\n function Deferred(resolver) {\n 'use strict'\n if (typeof resolver != 'function' && resolver != undefined)\n throw TypeError()\n\n if (typeof this != 'object' || (this && this.then))\n throw TypeError()\n\n // states\n // 0: pending\n // 1: resolving\n // 2: rejecting\n // 3: resolved\n // 4: rejected\n var self = this,\n state = 0,\n val = 0,\n next = [],\n fn, er;\n\n self['promise'] = self\n\n self['resolve'] = function (v) {\n fn = self.fn\n er = self.er\n if (!state) {\n val = v\n state = 1\n\n nextTick(fire)\n }\n return self\n }\n\n self['reject'] = function (v) {\n fn = self.fn\n er = self.er\n if (!state) {\n val = v\n state = 2\n\n nextTick(fire)\n\n }\n return self\n }\n\n self['_d'] = 1\n\n self['then'] = function (_fn, _er) {\n if (!(this._d == 1))\n throw TypeError()\n\n var d = new Deferred()\n\n d.fn = _fn\n d.er = _er\n if (state == 3) {\n d.resolve(val)\n }\n else if (state == 4) {\n d.reject(val)\n }\n else {\n next.push(d)\n }\n\n return d\n }\n\n self['catch'] = function (_er) {\n return self['then'](null, _er)\n }\n\n var finish = function (type) {\n state = type || 4\n next.map(function (p) {\n state == 3 && p.resolve(val) || p.reject(val)\n })\n }\n\n try {\n if (typeof resolver == 'function')\n resolver(self['resolve'], self['reject'])\n } catch (e) {\n self['reject'](e)\n }\n\n return self\n\n // ref : reference to 'then' function\n // cb, ec, cn : successCallback, failureCallback, notThennableCallback\n function thennable (ref, cb, ec, cn) {\n // Promises can be rejected with other promises, which should pass through\n if (state == 2) {\n return cn()\n }\n if ((typeof val == 'object' || typeof val == 'function') && typeof ref == 'function') {\n try {\n\n // cnt protects against abuse calls from spec checker\n var cnt = 0\n ref.call(val, function (v) {\n if (cnt++) return\n val = v\n cb()\n }, function (v) {\n if (cnt++) return\n val = v\n ec()\n })\n } catch (e) {\n val = e\n ec()\n }\n } else {\n cn()\n }\n };\n\n function fire() {\n\n // check if it's a thenable\n var ref;\n try {\n ref = val && val.then\n } catch (e) {\n val = e\n state = 2\n return fire()\n }\n\n thennable(ref, function () {\n state = 1\n fire()\n }, function () {\n state = 2\n fire()\n }, function () {\n try {\n if (state == 1 && typeof fn == 'function') {\n val = fn(val)\n }\n\n else if (state == 2 && typeof er == 'function') {\n val = er(val)\n state = 1\n }\n } catch (e) {\n val = e\n return finish()\n }\n\n if (val == self) {\n val = TypeError()\n finish()\n } else thennable(ref, function () {\n finish(3)\n }, finish, function () {\n finish(state == 1 && 3)\n })\n\n })\n }\n\n\n }\n\n // Export our library object, either for node.js or as a globally scoped variable\n if (true) {\n module['exports'] = Deferred\n } else {}\n})()\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(14), __webpack_require__(49).setImmediate))\n\n/***/ }),\n/* 14 */\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/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataProxy = /** @class */ (function () {\n function DataProxy(url) {\n this.url = url;\n }\n DataProxy.prototype.load = function () {\n return this._ajax(this.url);\n };\n DataProxy.prototype.save = function (data, mode) {\n var modes = {\n insert: \"POST\",\n delete: \"DELETE\",\n update: \"POST\"\n };\n return this._ajax(this.url, data, modes[mode] || \"POST\");\n };\n DataProxy.prototype._ajax = function (url, data, method) {\n if (method === void 0) { method = \"GET\"; }\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.response || xhr.responseText);\n }\n else {\n reject({\n status: xhr.status,\n statusText: xhr.statusText\n });\n }\n };\n xhr.onerror = function () {\n reject({\n status: xhr.status,\n statusText: xhr.statusText\n });\n };\n xhr.open(method, url);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n switch (method) {\n case \"POST\":\n case \"DELETE\":\n case \"PUT\":\n xhr.send(JSON.stringify(data));\n break;\n case \"GET\":\n xhr.send();\n break;\n default:\n xhr.send();\n break;\n }\n });\n };\n return DataProxy;\n}());\nexports.DataProxy = DataProxy;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = __webpack_require__(12);\nexports.DataEvents = types_1.DataEvents;\nvar ItemType;\n(function (ItemType) {\n ItemType[\"button\"] = \"button\";\n ItemType[\"dhxButton\"] = \"dhxButton\";\n ItemType[\"imageButton\"] = \"imageButton\";\n ItemType[\"selectButton\"] = \"selectButton\";\n ItemType[\"input\"] = \"input\";\n ItemType[\"separator\"] = \"separator\";\n ItemType[\"text\"] = \"text\";\n ItemType[\"spacer\"] = \"spacer\";\n ItemType[\"menuItem\"] = \"menuItem\";\n ItemType[\"block\"] = \"block\";\n ItemType[\"customHTMLButton\"] = \"customButton\";\n})(ItemType = exports.ItemType || (exports.ItemType = {}));\nvar NavigationBarEvents;\n(function (NavigationBarEvents) {\n NavigationBarEvents[\"inputCreated\"] = \"inputcreated\";\n NavigationBarEvents[\"click\"] = \"click\";\n NavigationBarEvents[\"openMenu\"] = \"openmenu\";\n})(NavigationBarEvents = exports.NavigationBarEvents || (exports.NavigationBarEvents = {}));\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pointer\"] = \"pointer\";\n NavigationType[\"click\"] = \"click\";\n})(NavigationType = exports.NavigationType || (exports.NavigationType = {}));\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar dom_1 = __webpack_require__(0);\nvar events_1 = __webpack_require__(7);\nvar html_1 = __webpack_require__(1);\nvar Keymanager_1 = __webpack_require__(46);\nvar view_1 = __webpack_require__(8);\nvar ts_data_1 = __webpack_require__(47);\nvar itemfactory_1 = __webpack_require__(27);\nvar types_1 = __webpack_require__(16);\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n function MenuBase(element, config) {\n var _this = _super.call(this, element, core_1.extend({}, config)) || this;\n _this._isContextMenu = false;\n _this._documentHaveListener = false;\n _this._rootItem = {};\n _this.events = new events_1.EventSystem();\n _this.data = new ts_data_1.TreeCollection({}, _this.events);\n _this._documentClick = function (e) {\n if (html_1.locate(e, \"dhx_widget_id\") !== _this._uid && _this._documentHaveListener) {\n document.removeEventListener(\"click\", _this._documentClick);\n _this._documentHaveListener = false;\n _this._close();\n }\n };\n _this._currentRoot = _this.data.getRoot();\n _this._factory = itemfactory_1.createFactory(types_1.ItemType.menuItem);\n _this._init();\n _this._initHandlers();\n _this._initEvents();\n return _this;\n }\n MenuBase.prototype.paint = function () {\n _super.prototype.paint.call(this);\n this._vpopups.redraw();\n };\n MenuBase.prototype.disable = function (ids) {\n this._setProp(ids, \"$disabled\", true);\n };\n MenuBase.prototype.enable = function (ids) {\n this._setProp(ids, \"$disabled\", false);\n };\n MenuBase.prototype.show = function (ids) {\n this._setProp(ids, \"$hidden\", false);\n };\n MenuBase.prototype.hide = function (ids) {\n this._setProp(ids, \"$hidden\", true);\n };\n MenuBase.prototype.destructor = function () {\n Keymanager_1.keyManager.removeHotKey(null, this);\n };\n MenuBase.prototype._close = function () {\n if (this.config.navigationType === types_1.NavigationType.click) {\n this._isActive = false;\n }\n clearTimeout(this._currentTimeout);\n this._activeMenu = null;\n this.paint();\n };\n MenuBase.prototype._init = function () {\n var _this = this;\n var render = function () { return dom_1.el(\"div\", __assign({ dhx_widget_id: _this._uid, class: \"menu-popups\" + (_this._isContextMenu ? \" context-menu\" : \"\") }, _this._handlers), _this._drawPopups()); };\n this._vpopups = dom_1.create({\n render: render\n });\n this._vpopups.mount(document.body);\n };\n MenuBase.prototype._initHandlers = function () {\n var _this = this;\n /*\n for navigation type click:\n first click open menu, _isActive = true\n after navigation use mousemove\n can be closed after outer click or menu leaf item click\n */\n this._isActive = this.config.navigationType !== types_1.NavigationType.click;\n this._handlers = {\n onmousemove: function (e) {\n if (!_this._isActive) {\n return;\n }\n var elem = html_1.locateNode(e);\n if (!elem) {\n _this._activeItemChange(null);\n return;\n }\n var id = elem.getAttribute(\"dhx_id\");\n if (_this._activeMenu !== id) {\n _this._activeMenu = id;\n if (_this.data.haveItems(id)) {\n var position = html_1.getRealPosition(elem);\n _this.data.update(id, { $position: position }, false);\n }\n _this._activeItemChange(id);\n }\n },\n onmouseleave: function () {\n if (_this.config.navigationType !== types_1.NavigationType.click) { // maybe all time when mouse leave close menu\n _this._activeItemChange(null);\n }\n },\n onclick: function (e) {\n var element = html_1.locateNode(e);\n if (!element) {\n return;\n }\n var id = element.getAttribute(\"dhx_id\");\n var item = _this.data.getItem(id);\n if (item.multiClick) {\n return;\n }\n if (_this.data.haveItems(id)) {\n if (id === _this._currentRoot) {\n _this._close();\n return;\n }\n if (!_this._isActive) {\n _this._isActive = true;\n }\n _this._setRoot(id);\n _this._activeMenu = id;\n var position = html_1.getRealPosition(element);\n _this.data.update(id, { $position: position }, false);\n _this._activeItemChange(id);\n }\n else {\n switch (item.type) {\n case types_1.ItemType.input:\n case types_1.ItemType.text:\n break;\n case types_1.ItemType.menuItem:\n case types_1.ItemType.selectButton:\n _this._onMenuItemClick(id, e);\n break;\n case types_1.ItemType.imageButton:\n case types_1.ItemType.dhxButton:\n case types_1.ItemType.button:\n case types_1.ItemType.customHTMLButton:\n if (item.twoState) {\n _this.data.update(item.id, { active: !item.active });\n }\n _this.events.fire(types_1.NavigationBarEvents.click, [id, e]);\n // missed break for trigger close\n default:\n _this._close();\n }\n }\n },\n onmousedown: function (e) {\n var element = html_1.locateNode(e);\n if (!element) {\n return;\n }\n var id = element.getAttribute(\"dhx_id\");\n var item = _this.data.getItem(id);\n if (!item.multiClick) {\n return;\n }\n var fireTime = 365;\n var timeout;\n var fireAction = function () {\n _this.events.fire(types_1.NavigationBarEvents.click, [id, e]);\n if (fireTime > 50) {\n fireTime -= 55;\n }\n timeout = setTimeout(fireAction, fireTime);\n };\n var mouseup = function () {\n clearTimeout(timeout);\n document.removeEventListener(\"mouseup\", mouseup);\n };\n fireAction();\n document.addEventListener(\"mouseup\", mouseup);\n }\n };\n };\n MenuBase.prototype._initEvents = function () {\n var _this = this;\n var timeout = null;\n this.data.events.on(types_1.DataEvents.change, function () {\n _this.paint();\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(function () {\n _this._normalizeData();\n _this._resetHotkeys();\n timeout = null;\n _this.paint();\n }, 100);\n });\n this.events.on(types_1.NavigationBarEvents.click, function (id) {\n var item = _this.data.getItem(id);\n var parent = _this.data.getItem(item.parent);\n if (parent && parent.type === types_1.ItemType.selectButton) {\n _this.data.update(item.parent, { value: item.value, icon: item.icon });\n }\n if (item.group) {\n var group = _this._groups[item.group];\n if (group.active) {\n _this.data.update(group.active, { active: false });\n }\n group.active = item.id;\n _this.data.update(item.id, { active: true });\n }\n });\n };\n MenuBase.prototype._drawPopups = function () {\n var _this = this;\n var id = this._activeMenu;\n if (!this._isContextMenu && !id) {\n return null;\n }\n var root = this._currentRoot;\n if (this._isContextMenu && !this._activePosition) {\n return null;\n }\n var parentIds = this._getParents(id, root);\n return parentIds.map(function (itemId) {\n if (!_this.data.haveItems(itemId)) {\n return null;\n }\n var item = _this.data.getItem(itemId) || _this._rootItem; // for root item\n return dom_1.el(\"ul\", {\n class: \"dhx_menu\",\n _key: itemId,\n _hooks: {\n didInsert: function (vnode) {\n var _a = vnode.el.getBoundingClientRect(), width = _a.width, height = _a.height;\n var position = _this._isContextMenu && _this._activePosition && itemId === root ? _this._activePosition : item.$position;\n var mode = _this._getMode(item, root, position === _this._activePosition);\n var style = html_1.calculatePosition(position, { mode: mode, width: width, height: height });\n item.$style = style;\n vnode.patch({ style: style });\n }\n },\n tabindex: 0,\n style: item.$style || {\n position: \"absolute\"\n }\n }, _this._drawMenuItems(itemId));\n }).reverse();\n };\n MenuBase.prototype._onMenuItemClick = function (id, e) {\n var item = this.data.getItem(id);\n if (item.$disabled) {\n return;\n }\n if (item.twoState) {\n this.data.update(item.id, { active: !item.active });\n }\n this.events.fire(types_1.NavigationBarEvents.click, [id, e]);\n this._close();\n };\n MenuBase.prototype._activeItemChange = function (id) {\n var _this = this;\n if (id && !this._documentHaveListener) {\n this._listenOuterClick();\n }\n if (id && this.data.haveItems(id)) {\n this.events.fire(types_1.NavigationBarEvents.openMenu);\n this._activeMenu = id;\n clearTimeout(this._currentTimeout);\n this.paint();\n }\n else {\n this._activeMenu = id;\n clearTimeout(this._currentTimeout);\n this._currentTimeout = setTimeout(function () { return _this.paint(); }, 400);\n }\n };\n MenuBase.prototype._resetHotkeys = function () {\n var _this = this;\n Keymanager_1.keyManager.removeHotKey(null, this);\n this.data.map(function (item) {\n if (item.hotkey) {\n Keymanager_1.keyManager.addHotKey(item.hotkey, function () { return _this._onMenuItemClick(item.id, null); }, _this);\n }\n });\n };\n MenuBase.prototype._listenOuterClick = function () {\n document.addEventListener(\"click\", this._documentClick);\n this._documentHaveListener = true;\n };\n MenuBase.prototype._getMode = function (item, root, _active) {\n if (_active === void 0) { _active = false; }\n return item.parent === root ? \"bottom\" : \"right\";\n };\n MenuBase.prototype._drawMenuItems = function (id) {\n var _this = this;\n return this.data.map(function (item) { return _this._factory(item, _this.events); }, id, false);\n };\n MenuBase.prototype._normalizeData = function () {\n var _this = this;\n var root = this.data.getRoot();\n var groups = {};\n this.data.eachChild(root, function (item) {\n if (_this.data.haveItems(item.id) && item.parent !== _this.data.getRoot()) {\n item.$openIcon = \"right\";\n }\n if (item.group) {\n addInGroups(groups, item);\n }\n }, true);\n this._groups = groups;\n };\n MenuBase.prototype._setRoot = function (_id) {\n return; // need only for toolbar\n };\n MenuBase.prototype._getParents = function (id, root) {\n var parentIds = [];\n var afterRoot = false;\n var currentItem = this.data.getItem(id);\n var disabled = currentItem && currentItem.$disabled;\n this.data.eachParent(id, function (item) {\n if (item.id === root) {\n parentIds.push(item.id);\n afterRoot = true;\n }\n else if (!afterRoot) {\n parentIds.push(item.id);\n }\n }, !disabled);\n if (this._isContextMenu && this._activePosition) {\n parentIds.push(root);\n }\n return parentIds;\n };\n MenuBase.prototype._setProp = function (id, key, value) {\n var _this = this;\n var _a;\n if (Array.isArray(id)) {\n id.forEach(function (itemId) {\n var _a;\n return _this.data.update(itemId, (_a = {}, _a[key] = value, _a));\n });\n }\n else {\n this.data.update(id, (_a = {}, _a[key] = value, _a));\n }\n };\n return MenuBase;\n}(view_1.View));\nexports.MenuBase = MenuBase;\nfunction addInGroups(groups, item) {\n if (groups[item.group]) {\n if (item.active) {\n groups[item.group].active = item.id;\n }\n groups[item.group].elements.push(item.id);\n }\n else {\n groups[item.group] = {\n active: item.active ? item.id : null,\n elements: [item.id]\n };\n }\n}\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(71));\n__export(__webpack_require__(30));\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dom_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(5);\nvar types_1 = __webpack_require__(2);\nfunction calcTextNodeStyle(modifiers) {\n var style = {};\n for (var key in modifiers) {\n if (!modifiers[key]) {\n continue;\n }\n switch (key) {\n case types_1.Modifier.bold:\n style[\"font-weight\"] = \"bold\";\n break;\n case types_1.Modifier.italic:\n style[\"font-style\"] = \"italic\";\n break;\n case types_1.Modifier.underline:\n if (style[\"text-decoration\"]) {\n style[\"text-decoration\"] += \" underline\";\n }\n else {\n style[\"text-decoration\"] = \"underline\";\n }\n break;\n case types_1.Modifier.strike:\n if (style[\"text-decoration\"]) {\n style[\"text-decoration\"] += \" line-through\";\n }\n else {\n style[\"text-decoration\"] = \"line-through\";\n }\n break;\n case types_1.Modifier.color:\n style.color = modifiers[key];\n break;\n case types_1.Modifier.background:\n style.background = modifiers[key];\n break;\n case types_1.Modifier.fontFamily:\n style[\"font-family\"] = modifiers[key];\n break;\n case types_1.Modifier.fontSize:\n style[\"font-size\"] = modifiers[key];\n break;\n }\n }\n return style;\n}\nexports.calcTextNodeStyle = calcTextNodeStyle;\nfunction calcBlockStyle(modifiers) {\n var style = {};\n for (var key in modifiers) {\n if (!modifiers[key]) {\n continue;\n }\n switch (key) {\n case types_1.Modifier.align:\n style[\"text-align\"] = modifiers[key];\n }\n }\n return style;\n}\nexports.calcBlockStyle = calcBlockStyle;\nfunction blockStyleToTag(style) {\n if (style[types_1.Modifier.style]) {\n return style[types_1.Modifier.style];\n }\n return \"p\";\n}\nexports.blockStyleToTag = blockStyleToTag;\nfunction blockquoteWrapper(style, blockIndex) {\n if (style[types_1.Modifier.blockquote]) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return dom_1.el(\"blockquote\", {\n dhx_offset: blockIndex,\n }, [dom_1.el.apply(void 0, args)]);\n };\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return dom_1.el.apply(void 0, args);\n };\n}\nexports.blockquoteWrapper = blockquoteWrapper;\nfunction getComputedNodeStyle(textNode, block, defaultModifiers) {\n var computed = {};\n for (var key in textNode.style) {\n computed[key] = textNode.style[key];\n }\n if (!computed[types_1.Modifier.fontSize]) {\n if (block.style[types_1.Modifier.style] && block.style[types_1.Modifier.style] !== \"p\") {\n computed[types_1.Modifier.fontSize] = constants_1.defaultFontSizeByBlock[block.style[types_1.Modifier.style]];\n }\n else {\n computed[types_1.Modifier.fontSize] = defaultModifiers[types_1.Modifier.fontSize];\n }\n }\n if (!computed[types_1.Modifier.fontFamily]) {\n computed[types_1.Modifier.fontFamily] = defaultModifiers[types_1.Modifier.fontFamily];\n }\n return computed;\n}\nexports.getComputedNodeStyle = getComputedNodeStyle;\nfunction getComputedBlockStyle(block, defaultModifiers) {\n var computed = {};\n for (var key in block.style) {\n computed[key] = block.style[key];\n }\n if (!computed[types_1.Modifier.style]) {\n computed[types_1.Modifier.style] = defaultModifiers[types_1.Modifier.style];\n }\n if (!computed[types_1.Modifier.align]) {\n computed[types_1.Modifier.align] = defaultModifiers[types_1.Modifier.align];\n }\n if (!computed[types_1.Modifier.blockquote]) {\n computed[types_1.Modifier.blockquote] = defaultModifiers[types_1.Modifier.blockquote];\n }\n return computed;\n}\nexports.getComputedBlockStyle = getComputedBlockStyle;\nfunction isEmptyBlockStyle(style) {\n return !style[types_1.Modifier.blockquote] && !style[types_1.Modifier.align];\n}\nexports.isEmptyBlockStyle = isEmptyBlockStyle;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(5);\nvar RemoveTextResult;\n(function (RemoveTextResult) {\n RemoveTextResult[RemoveTextResult[\"textIsEmpty\"] = 0] = \"textIsEmpty\";\n RemoveTextResult[RemoveTextResult[\"complete\"] = 1] = \"complete\";\n RemoveTextResult[RemoveTextResult[\"nullTextLength\"] = 2] = \"nullTextLength\";\n RemoveTextResult[RemoveTextResult[\"forceRemovePrevious\"] = 3] = \"forceRemovePrevious\";\n RemoveTextResult[RemoveTextResult[\"forceRemoveNext\"] = 4] = \"forceRemoveNext\";\n})(RemoveTextResult = exports.RemoveTextResult || (exports.RemoveTextResult = {}));\nvar TextNode = /** @class */ (function () {\n function TextNode(text, style) {\n this.text = text;\n this.style = style || constants_1.emptyStyle;\n }\n TextNode.prototype.isEmpty = function () {\n return this.text.length === 0;\n };\n TextNode.prototype.insert = function (data, offset) {\n this.text = this.text.slice(0, offset) + data + this.text.slice(offset);\n };\n TextNode.prototype.remove = function (offset, prev) {\n if (this.isEmpty()) {\n return RemoveTextResult.textIsEmpty;\n }\n if (offset === 0 && prev) {\n return RemoveTextResult.forceRemovePrevious;\n }\n if (offset === this.text.length && !prev) {\n return RemoveTextResult.forceRemoveNext;\n }\n if (prev) {\n this.text = this.text.slice(0, offset - 1) + this.text.slice(offset);\n }\n else {\n this.text = this.text.slice(0, offset) + this.text.slice(offset + 1);\n }\n if (this.text.length === 0) {\n return RemoveTextResult.nullTextLength;\n }\n return RemoveTextResult.complete;\n };\n return TextNode;\n}());\nexports.TextNode = TextNode;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(44));\nvar ts_menu_1 = __webpack_require__(22);\nexports.ItemType = ts_menu_1.ItemType;\nexports.NavigationBarEvents = ts_menu_1.NavigationBarEvents;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(45));\n__export(__webpack_require__(65));\n__export(__webpack_require__(17));\n__export(__webpack_require__(27));\n__export(__webpack_require__(16));\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = __webpack_require__(7);\nvar loader_1 = __webpack_require__(48);\nvar sort_1 = __webpack_require__(52);\nvar dataproxy_1 = __webpack_require__(15);\nvar helpers_1 = __webpack_require__(10);\nvar types_1 = __webpack_require__(9);\nvar core_1 = __webpack_require__(3);\nvar DataCollection = /** @class */ (function () {\n function DataCollection(config, events) {\n this.config = config || {};\n this._order = [];\n this._pull = {};\n this._changes = { order: [] };\n this._initOrder = null;\n this._sort = new sort_1.Sort();\n this._loader = new loader_1.Loader(this, this._changes);\n this.events = events || new events_1.EventSystem(this);\n }\n DataCollection.prototype.add = function (obj, index) {\n if (!this.events.fire(types_1.DataEvents.beforeAdd, [obj])) {\n return;\n }\n var id = this._addCore(obj, index);\n this._onChange(\"add\", obj.id, obj);\n this.events.fire(types_1.DataEvents.afterAdd, [obj]);\n return id;\n };\n DataCollection.prototype.remove = function (id) {\n var obj = this._pull[id];\n if (obj) {\n if (!this.events.fire(types_1.DataEvents.beforeRemove, [obj])) {\n return;\n }\n this._removeCore(obj.id);\n this._onChange(\"remove\", id, obj);\n }\n this.events.fire(types_1.DataEvents.afterRemove, [obj]);\n };\n DataCollection.prototype.removeAll = function () {\n this._removeAll();\n this.events.fire(types_1.DataEvents.removeAll);\n this.events.fire(types_1.DataEvents.change);\n };\n DataCollection.prototype.exists = function (id) {\n return !!this._pull[id];\n };\n DataCollection.prototype.getNearId = function (id) {\n var item = this._pull[id];\n if (!item) {\n return this._order[0].id || \"\";\n }\n };\n DataCollection.prototype.getItem = function (id) {\n return this._pull[id];\n };\n DataCollection.prototype.update = function (id, obj, silent) {\n var item = this.getItem(id);\n if (item) {\n if (helpers_1.isEqualObj(obj, item)) {\n return;\n }\n if (obj.id && id !== obj.id) {\n helpers_1.dhxWarning(\"this method doesn't allow change id\");\n if (helpers_1.isDebug()) {\n // tslint:disable-next-line:no-debugger\n debugger;\n }\n }\n else {\n core_1.extend(this._pull[id], obj, false);\n if (this.config.update) {\n this.config.update(this._pull[id]);\n }\n if (!silent) {\n this._onChange(\"update\", id, this._pull[id]);\n }\n }\n }\n else {\n helpers_1.dhxWarning(\"item not found\");\n }\n };\n DataCollection.prototype.getIndex = function (id) {\n var res = core_1.findIndex(this._order, function (item) { return item.id === id; });\n if (this._pull[id] && res >= 0) {\n return res;\n }\n return -1;\n };\n DataCollection.prototype.getId = function (index) {\n if (!this._order[index]) {\n return;\n }\n return this._order[index].id;\n };\n DataCollection.prototype.getLength = function () {\n return this._order.length;\n };\n DataCollection.prototype.filter = function (rule, config) {\n var _this = this;\n config = core_1.extend({\n add: false,\n multiple: true\n }, config);\n if (!config.add) {\n this._order = this._initOrder || this._order;\n this._initOrder = null;\n }\n this._filters = this._filters || {};\n if (!config.multiple || !rule) {\n this._filters = {};\n }\n if (rule) {\n if (typeof rule === \"function\") {\n var f = \"_\";\n this._filters[f] = {\n match: f,\n compare: rule\n };\n }\n else {\n if (!rule.match) {\n delete this._filters[rule.by];\n }\n else {\n rule.compare = rule.compare || (function (val, match) { return val === match; });\n this._filters[rule.by] = rule;\n }\n }\n var fOrder = this._order.filter(function (item) {\n return Object.keys(_this._filters).every(function (key) {\n return item[key] ?\n _this._filters[key].compare(item[key], _this._filters[key].match, item)\n : _this._filters[key].compare(item);\n });\n });\n if (!this._initOrder) {\n this._initOrder = this._order;\n this._order = fOrder;\n }\n }\n this.events.fire(types_1.DataEvents.change);\n };\n DataCollection.prototype.find = function (conf) {\n for (var key in this._pull) {\n var res = helpers_1.findByConf(this._pull[key], conf);\n if (res) {\n return res;\n }\n }\n return null;\n };\n DataCollection.prototype.findAll = function (conf) {\n var res = [];\n for (var key in this._pull) {\n var item = helpers_1.findByConf(this._pull[key], conf);\n if (item) {\n res.push(item);\n }\n }\n return res;\n };\n DataCollection.prototype.sort = function (by) {\n this._sort.sort(this._order, by);\n if (this._initOrder && this._initOrder.length) {\n this._sort.sort(this._initOrder, by);\n }\n this.events.fire(types_1.DataEvents.change);\n };\n DataCollection.prototype.copy = function (id, index, target, targetId) {\n if (!this.exists(id)) {\n return null;\n }\n var newid = core_1.uid();\n if (target) {\n if (targetId) {\n target.add(__assign({}, this.getItem(id)), index, targetId);\n return;\n }\n if (target.exists(id)) {\n target.add(__assign({}, this.getItem(id), { id: newid }), index);\n return newid;\n }\n else {\n target.add(this.getItem(id), index);\n return id;\n }\n }\n this.add(__assign({}, this.getItem(id), { id: newid }), index);\n return newid;\n };\n DataCollection.prototype.move = function (id, index, target, targetId) {\n if (target && target !== this && this.exists(id)) {\n var item = this.getItem(id);\n if (target.exists(id)) {\n item.id = core_1.uid();\n }\n if (targetId) {\n item.parent = targetId;\n }\n target.add(item, index);\n // remove data from original collection\n this.remove(item.id);\n return item.id;\n }\n if (this.getIndex(id) === index) {\n return null;\n }\n // move other elements\n var spliced = this._order.splice(this.getIndex(id), 1)[0];\n if (index === -1) {\n index = this._order.length;\n }\n this._order.splice(index, 0, spliced);\n this.events.fire(types_1.DataEvents.change); // if target not this, it trigger add and remove\n return id;\n };\n DataCollection.prototype.load = function (url, driver) {\n if (typeof url === \"string\") {\n url = new dataproxy_1.DataProxy(url);\n }\n return this._loader.load(url, driver);\n };\n DataCollection.prototype.parse = function (data, driver) {\n this._removeAll();\n return this._loader.parse(data, driver);\n };\n DataCollection.prototype.$parse = function (data) {\n var apx = this.config.approximate;\n if (apx) {\n data = this._approximate(data, apx.value, apx.maxNum);\n }\n this._parse_data(data);\n this.events.fire(types_1.DataEvents.change);\n this.events.fire(types_1.DataEvents.load);\n };\n DataCollection.prototype.save = function (url) {\n this._loader.save(url);\n };\n // todo: loop through the array and check saved statuses\n DataCollection.prototype.isSaved = function () {\n return !this._changes.order.length; // todo: bad solution, errors and holded elments are missed...\n };\n DataCollection.prototype.map = function (cb) {\n var result = [];\n for (var i = 0; i < this._order.length; i++) {\n result.push(cb.call(this, this._order[i], i));\n }\n return result;\n };\n DataCollection.prototype.mapRange = function (from, to, cb) {\n if (from < 0) {\n from = 0;\n }\n if (to > this._order.length - 1) {\n to = this._order.length - 1;\n }\n var result = [];\n for (var i = from; i <= to; i++) {\n result.push(cb.call(this, this._order[i], i));\n }\n return result;\n };\n DataCollection.prototype.reduce = function (cb, acc) {\n for (var i = 0; i < this._order.length; i++) {\n acc = cb.call(this, acc, this._order[i], i);\n }\n return acc;\n };\n DataCollection.prototype.serialize = function () {\n return this.map(function (item) {\n var newItem = __assign({}, item);\n Object.keys(newItem).forEach(function (key) {\n if (key[0] === \"$\") {\n delete newItem[key];\n }\n });\n return newItem;\n });\n };\n DataCollection.prototype.getInitialData = function () {\n return this._initOrder;\n };\n DataCollection.prototype._removeAll = function () {\n this._pull = {};\n this._order = [];\n this._changes.order = [];\n this._initOrder = null;\n };\n DataCollection.prototype._addCore = function (obj, index) {\n if (this.config.init) {\n obj = this.config.init(obj);\n }\n obj.id = obj.id ? obj.id.toString() : core_1.uid();\n if (this._pull[obj.id]) {\n helpers_1.dhxError(\"Item already exist\");\n }\n // todo: not ideal solution\n if (this._initOrder && this._initOrder.length) {\n this._addToOrder(this._initOrder, obj, index);\n }\n this._addToOrder(this._order, obj, index);\n return obj.id;\n };\n DataCollection.prototype._removeCore = function (id) {\n if (this.getIndex(id) >= 0) {\n this._order = this._order.filter(function (el) { return el.id !== id; });\n delete this._pull[id];\n }\n if (this._initOrder && this._initOrder.length) {\n this._initOrder = this._initOrder.filter(function (el) { return el.id !== id; });\n }\n };\n DataCollection.prototype._parse_data = function (data) {\n var index = this._order.length;\n if (this.config.prep) {\n data = this.config.prep(data);\n }\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var obj = data_1[_i];\n if (this.config.init) {\n obj = this.config.init(obj);\n }\n obj.id = (obj.id || obj.id === 0) ? obj.id : core_1.uid();\n this._pull[obj.id] = obj;\n this._order[index++] = obj;\n }\n };\n DataCollection.prototype._approximate = function (data, values, maxNum) {\n var len = data.length;\n var vlen = values.length;\n var rlen = Math.floor(len / maxNum);\n var newData = Array(Math.ceil(len / rlen));\n var index = 0;\n for (var i = 0; i < len; i += rlen) {\n var newItem = core_1.copy(data[i]);\n var end = Math.min(len, i + rlen);\n for (var j = 0; j < vlen; j++) {\n var sum = 0;\n for (var z = i; z < end; z++) {\n sum += data[z][values[j]];\n }\n newItem[values[j]] = sum / (end - i);\n }\n newData[index++] = newItem;\n }\n return newData;\n };\n DataCollection.prototype._onChange = function (status, id, obj) {\n for (var _i = 0, _a = this._changes.order; _i < _a.length; _i++) {\n var item = _a[_i];\n // update pending item if previous state is \"saving\" or if item not saved yet\n if (item.id === id && !item.saving) {\n // update item\n if (item.error) {\n item.error = false;\n }\n item = __assign({}, item, { obj: obj, status: status });\n this.events.fire(types_1.DataEvents.change, [id, status, obj]);\n return;\n }\n }\n this._changes.order.push({ id: id, status: status, obj: __assign({}, obj), saving: false });\n this.events.fire(types_1.DataEvents.change, [id, status, obj]);\n };\n DataCollection.prototype._addToOrder = function (array, obj, index) {\n if (index >= 0 && array[index]) {\n this._pull[obj.id] = obj;\n array.splice(index, 0, obj);\n }\n else {\n this._pull[obj.id] = obj;\n array.push(obj);\n }\n };\n return DataCollection;\n}());\nexports.DataCollection = DataCollection;\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CsvDriver = /** @class */ (function () {\n function CsvDriver(config) {\n if (config === void 0) { config = {}; }\n var initConfig = {\n skipHeader: 0,\n nameByHeader: false,\n row: \"\\n\",\n column: \",\",\n };\n this.config = __assign({}, initConfig, config);\n if (this.config.nameByHeader) {\n this.config.skipHeader = 1;\n }\n }\n CsvDriver.prototype.getFields = function (row, headers) {\n var parts = row.trim().split(this.config.column);\n var obj = {};\n for (var i = 0; i < parts.length; i++) {\n obj[headers ? headers[i] : i + 1] = parts[i];\n }\n return obj;\n };\n CsvDriver.prototype.getRows = function (data) {\n return data.trim().split(this.config.row);\n };\n CsvDriver.prototype.toJsonArray = function (data) {\n var _this = this;\n var rows = this.getRows(data);\n var names = this.config.names;\n if (this.config.skipHeader) {\n var top_1 = rows.splice(0, this.config.skipHeader);\n if (this.config.nameByHeader) {\n names = top_1[0].trim().split(this.config.column);\n }\n }\n return rows.map(function (row) { return _this.getFields(row, names); });\n };\n return CsvDriver;\n}());\nexports.CsvDriver = CsvDriver;\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar JsonDriver = /** @class */ (function () {\n function JsonDriver() {\n }\n JsonDriver.prototype.toJsonArray = function (data) {\n return this.getRows(data);\n };\n JsonDriver.prototype.getFields = function (row) {\n return row;\n };\n JsonDriver.prototype.getRows = function (data) {\n return typeof data === \"string\" ? JSON.parse(data) : data;\n };\n return JsonDriver;\n}());\nexports.JsonDriver = JsonDriver;\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar datacollection_1 = __webpack_require__(23);\nvar dataproxy_1 = __webpack_require__(15);\nvar helpers_1 = __webpack_require__(10);\nvar types_1 = __webpack_require__(9);\nfunction addToOrder(store, obj, parent, index) {\n if (index !== undefined && index !== -1 && store[parent] && store[parent][index]) {\n store[parent].splice(index, 0, obj);\n }\n else {\n if (!store[parent]) {\n store[parent] = [];\n }\n store[parent].push(obj);\n }\n}\nvar TreeCollection = /** @class */ (function (_super) {\n __extends(TreeCollection, _super);\n function TreeCollection(config, events) {\n var _a;\n var _this = _super.call(this, config, events) || this;\n var root = _this._root = \"_ROOT_\" + core_1.uid();\n _this._childs = (_a = {}, _a[root] = [], _a);\n _this._initChilds = null;\n return _this;\n }\n TreeCollection.prototype.add = function (obj, index, parent) {\n if (index === void 0) { index = -1; }\n if (parent === void 0) { parent = this._root; }\n if (typeof obj !== \"object\") {\n obj = {\n value: obj\n };\n }\n obj.parent = obj.parent ? obj.parent.toString() : parent;\n var id = _super.prototype.add.call(this, obj, index);\n if (Array.isArray(obj.items)) {\n for (var _i = 0, _a = obj.items; _i < _a.length; _i++) {\n var item = _a[_i];\n this.add(item, -1, obj.id);\n }\n }\n return id;\n };\n TreeCollection.prototype.getRoot = function () {\n return this._root;\n };\n TreeCollection.prototype.getParent = function (id, asObj) {\n if (asObj === void 0) { asObj = false; }\n if (!this._pull[id]) {\n return null;\n }\n var parent = this._pull[id].parent;\n return asObj ? this._pull[parent] : parent;\n };\n TreeCollection.prototype.getItems = function (id) {\n if (this._childs && this._childs[id]) {\n return this._childs[id];\n }\n return [];\n };\n TreeCollection.prototype.getLength = function (id) {\n if (id === void 0) { id = this._root; }\n if (!this._childs[id]) {\n return null;\n }\n return this._childs[id].length;\n };\n TreeCollection.prototype.removeAll = function (id) {\n var _a;\n if (id) {\n var childs = this._childs[id].slice();\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n this.remove(child.id);\n }\n }\n else {\n _super.prototype.removeAll.call(this);\n var root = this._root;\n this._initChilds = null;\n this._childs = (_a = {}, _a[root] = [], _a);\n }\n };\n TreeCollection.prototype.getIndex = function (id) {\n var parent = this.getParent(id);\n if (!parent || !this._childs[parent]) {\n return -1;\n }\n return core_1.findIndex(this._childs[parent], function (item) { return item.id === id; });\n };\n TreeCollection.prototype.sort = function (conf) {\n var childs = this._childs;\n for (var key in childs) {\n this._sort.sort(childs[key], conf);\n }\n this.events.fire(types_1.DataEvents.change);\n };\n TreeCollection.prototype.map = function (cb, parent, direct) {\n if (parent === void 0) { parent = this._root; }\n if (direct === void 0) { direct = true; }\n var result = [];\n if (!this.haveItems(parent)) {\n return result;\n }\n for (var i = 0; i < this._childs[parent].length; i++) {\n result.push(cb.call(this, this._childs[parent][i], i));\n if (direct) {\n var childResult = this.map(cb, this._childs[parent][i].id, direct);\n result = result.concat(childResult);\n }\n }\n return result;\n };\n TreeCollection.prototype.filter = function (conf) {\n if (!conf) {\n this.restoreOrder();\n return;\n }\n if (!this._initChilds) {\n this._initChilds = this._childs;\n }\n conf.type = conf.type || types_1.TreeFilterType.all;\n var newChilds = {};\n this._recursiveFilter(conf, this._root, 0, newChilds);\n this._childs = newChilds;\n this.events.fire(types_1.DataEvents.change);\n };\n TreeCollection.prototype.restoreOrder = function () {\n if (this._initChilds) {\n this._childs = this._initChilds;\n this._initChilds = null;\n }\n this.events.fire(types_1.DataEvents.change);\n };\n TreeCollection.prototype.copy = function (id, index, target, targetId) {\n if (target === void 0) { target = this; }\n if (targetId === void 0) { targetId = this._root; }\n if (!this.exists(id)) {\n return null;\n }\n var currentChilds = this._childs[id];\n if (target === this && !this.canCopy(id, targetId)) {\n return null;\n }\n if (!(target instanceof TreeCollection)) { // copy to datacollection\n target.add(this._pull[id]);\n return;\n }\n if (this.exists(id)) {\n var item = __assign({}, this.getItem(id));\n if (target.exists(id)) {\n item.id = core_1.uid();\n }\n else {\n item.id = id;\n }\n item.parent = targetId;\n target.add(item, index);\n id = item.id;\n }\n if (currentChilds) {\n for (var _i = 0, currentChilds_1 = currentChilds; _i < currentChilds_1.length; _i++) {\n var child = currentChilds_1[_i];\n var childId = child.id;\n var childIndex = this.getIndex(childId);\n this.copy(childId, childIndex, target, id);\n }\n }\n return id;\n };\n TreeCollection.prototype.move = function (id, index, target, targetId) {\n if (target === void 0) { target = this; }\n if (targetId === void 0) { targetId = this._root; }\n if (!this.exists(id)) {\n return null;\n }\n if (target !== this) {\n if (!(target instanceof TreeCollection)) { // move to datacollection\n target.add(this._pull[id]);\n this.remove(id);\n return;\n }\n var returnId = this.copy(id, index, target, targetId);\n this.remove(id);\n return returnId;\n }\n // move inside\n if (!this.canCopy(id, targetId)) {\n return null;\n }\n var parent = this.getParent(id);\n var parentIndex = this.getIndex(id);\n // get item from parent array and move to target array\n var spliced = this._childs[parent].splice(parentIndex, 1)[0];\n spliced.parent = targetId; // need for next moving, ... not best solution, may be full method for get item\n if (!this._childs[parent].length) {\n delete this._childs[parent];\n }\n if (!this.haveItems(targetId)) {\n this._childs[targetId] = [];\n }\n if (index === -1) {\n index = this._childs[targetId].push(spliced);\n }\n else {\n this._childs[targetId].splice(index, 0, spliced);\n }\n this.events.fire(types_1.DataEvents.change);\n return id;\n };\n TreeCollection.prototype.eachChild = function (id, cb, direct, checkItem) {\n if (direct === void 0) { direct = true; }\n if (checkItem === void 0) { checkItem = function () { return true; }; }\n if (!this.haveItems(id)) {\n return;\n }\n for (var i = 0; i < this._childs[id].length; i++) {\n cb.call(this, this._childs[id][i], i);\n if (direct && checkItem(this._childs[id][i])) {\n this.eachChild(this._childs[id][i].id, cb, direct, checkItem);\n }\n }\n };\n TreeCollection.prototype.getNearId = function (id) {\n return id; // for selection\n };\n TreeCollection.prototype.loadItems = function (id, driver) {\n var _this = this;\n if (driver === void 0) { driver = \"json\"; }\n var url = this.config.autoload + \"?id=\" + id;\n var proxy = new dataproxy_1.DataProxy(url);\n proxy.load().then(function (data) {\n driver = helpers_1.toDataDriver(driver);\n data = driver.toJsonArray(data);\n _this._parse_data(data, id);\n _this.events.fire(types_1.DataEvents.change);\n });\n };\n TreeCollection.prototype.refreshItems = function (id, driver) {\n if (driver === void 0) { driver = \"json\"; }\n this.removeAll(id);\n this.loadItems(id, driver);\n };\n TreeCollection.prototype.eachParent = function (id, cb, self) {\n if (self === void 0) { self = false; }\n var item = this.getItem(id);\n if (!item) {\n return;\n }\n if (self) {\n cb.call(this, item);\n }\n if (item.parent === this._root) {\n return;\n }\n var parent = this.getItem(item.parent);\n cb.call(this, parent);\n this.eachParent(item.parent, cb);\n };\n TreeCollection.prototype.haveItems = function (id) {\n return id in this._childs;\n };\n TreeCollection.prototype.canCopy = function (id, target) {\n if (id === target) {\n return false;\n }\n var canCopy = true;\n this.eachParent(target, function (item) { return item.id === id ? canCopy = false : null; }); // locate return string\n return canCopy;\n };\n TreeCollection.prototype.serialize = function (fn) {\n return this._serialize(this._root, fn);\n };\n TreeCollection.prototype.getId = function (index, parent) {\n if (parent === void 0) { parent = this._root; }\n if (!this._childs[parent] || !this._childs[parent][index]) {\n return;\n }\n return this._childs[parent][index].id;\n };\n TreeCollection.prototype._removeAll = function (id) {\n var _a;\n if (id) {\n var childs = this._childs[id].slice();\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n this.remove(child.id);\n }\n }\n else {\n _super.prototype._removeAll.call(this);\n var root = this._root;\n this._initChilds = null;\n this._childs = (_a = {}, _a[root] = [], _a);\n }\n };\n TreeCollection.prototype._removeCore = function (id) {\n if (this._pull[id]) {\n var parent_1 = this.getParent(id);\n this._childs[parent_1] = this._childs[parent_1].filter(function (item) { return item.id !== id; });\n if (parent_1 !== this._root && !this._childs[parent_1].length) {\n delete this._childs[parent_1];\n }\n if (this._initChilds && this._initChilds[parent_1]) {\n this._initChilds[parent_1] = this._initChilds[parent_1].filter(function (item) { return item.id !== id; });\n if (parent_1 !== this._root && !this._initChilds[parent_1].length) {\n delete this._initChilds[parent_1];\n }\n }\n this._fastDeleteChilds(this._childs, id);\n if (this._initChilds) {\n this._fastDeleteChilds(this._initChilds, id);\n }\n }\n };\n TreeCollection.prototype._addToOrder = function (_order, obj, index) {\n var childs = this._childs;\n var initChilds = this._initChilds;\n var parent = obj.parent;\n this._pull[obj.id] = obj;\n addToOrder(childs, obj, parent, index);\n if (initChilds) {\n addToOrder(initChilds, obj, parent, index);\n }\n };\n TreeCollection.prototype._parse_data = function (data, parent) {\n if (parent === void 0) { parent = this._root; }\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var obj = data_1[_i];\n if (this.config.init) {\n obj = this.config.init(obj);\n }\n if (typeof obj !== \"object\") {\n obj = {\n value: obj\n };\n }\n obj.id = obj.id ? obj.id.toString() : core_1.uid();\n obj.parent = obj.parent ? obj.parent.toString() : parent;\n this._pull[obj.id] = obj;\n if (!this._childs[obj.parent]) {\n this._childs[obj.parent] = [];\n }\n this._childs[obj.parent].push(obj);\n if (obj.items && obj.items instanceof Object) {\n this._parse_data(obj.items, obj.id);\n }\n }\n };\n TreeCollection.prototype._fastDeleteChilds = function (target, id) {\n if (this._pull[id]) {\n delete this._pull[id];\n }\n if (!target[id]) {\n return;\n }\n for (var i = 0; i < target[id].length; i++) {\n this._fastDeleteChilds(target, target[id][i].id);\n }\n delete target[id];\n };\n TreeCollection.prototype._recursiveFilter = function (conf, current, level, newChilds) {\n var _this = this;\n var childs = this._childs[current];\n if (!childs) {\n return;\n }\n var condition = function (item) {\n switch (conf.type) {\n case types_1.TreeFilterType.all: {\n return true;\n }\n case types_1.TreeFilterType.specific: {\n return level === conf.specific;\n }\n case types_1.TreeFilterType.leafs: {\n return !_this.haveItems(item.id);\n }\n }\n };\n if (conf.by && conf.match) {\n var customRule = function (item) { return !condition(item) || item[conf.by].toString().toLowerCase().indexOf(conf.match.toString().toLowerCase()) !== -1; };\n newChilds[current] = childs.filter(customRule);\n }\n else if (conf.rule && typeof conf.rule === \"function\") {\n var customRule = function (item) { return !condition(item) || conf.rule(item); };\n var filtered = childs.filter(customRule);\n if (filtered.length) {\n newChilds[current] = filtered;\n }\n }\n for (var _i = 0, childs_3 = childs; _i < childs_3.length; _i++) {\n var child = childs_3[_i];\n this._recursiveFilter(conf, child.id, level + 1, newChilds);\n }\n };\n TreeCollection.prototype._serialize = function (parent, fn) {\n var _this = this;\n if (parent === void 0) { parent = this._root; }\n return this.map(function (item) {\n var itemCopy = {};\n for (var key in item) {\n if (key === \"parent\" || key === \"childs\") {\n continue;\n }\n itemCopy[key] = item[key];\n }\n if (fn) {\n itemCopy = fn(itemCopy);\n }\n if (_this.haveItems(item.id)) {\n itemCopy.childs = _this._serialize(item.id, fn);\n }\n return itemCopy;\n }, parent, false);\n };\n return TreeCollection;\n}(datacollection_1.DataCollection));\nexports.TreeCollection = TreeCollection;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar button_1 = __webpack_require__(56);\nvar customHTMLButton_1 = __webpack_require__(57);\nvar dhxButton_1 = __webpack_require__(58);\nvar imageButton_1 = __webpack_require__(59);\nvar input_1 = __webpack_require__(60);\nvar menuItem_1 = __webpack_require__(61);\nvar separator_1 = __webpack_require__(62);\nvar spacer_1 = __webpack_require__(63);\nvar text_1 = __webpack_require__(64);\nvar types_1 = __webpack_require__(16);\nfunction itemfactory(item, events) {\n if (item.$hidden) {\n return null;\n }\n switch (item.type) {\n case types_1.ItemType.button:\n return button_1.button(item);\n case types_1.ItemType.text:\n return text_1.text(item);\n case types_1.ItemType.separator:\n return separator_1.separator(item);\n case types_1.ItemType.spacer:\n return spacer_1.spacer(item);\n case types_1.ItemType.input:\n return input_1.input(item, events);\n case types_1.ItemType.imageButton:\n return imageButton_1.imageButton(item);\n case types_1.ItemType.selectButton:\n case types_1.ItemType.menuItem:\n return menuItem_1.menuItem(item);\n case types_1.ItemType.dhxButton:\n return dhxButton_1.dhxButton(item);\n case types_1.ItemType.customHTMLButton:\n return customHTMLButton_1.customHTMLButton(item);\n case types_1.ItemType.block:\n default:\n throw new Error(\"unknown item type \" + item.type);\n }\n}\nexports.itemfactory = itemfactory;\nfunction createFactory(defaultType, forbiddenTypes) {\n if (forbiddenTypes === void 0) { forbiddenTypes = []; }\n var forbidden = {};\n forbiddenTypes.forEach(function (type) { return forbidden[type] = true; });\n return function (item, events) {\n item.type = item.type || defaultType;\n if (forbidden[item.type]) {\n item.type = defaultType;\n }\n return itemfactory(item, events);\n };\n}\nexports.createFactory = createFactory;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(29));\n__export(__webpack_require__(66));\n__export(__webpack_require__(68));\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar html_1 = __webpack_require__(1);\nvar Position;\n(function (Position) {\n Position[\"right\"] = \"right\";\n Position[\"bottom\"] = \"bottom\";\n Position[\"center\"] = \"center\";\n})(Position = exports.Position || (exports.Position = {}));\nvar MessageContainerPosition;\n(function (MessageContainerPosition) {\n MessageContainerPosition[\"topLeft\"] = \"top-left\";\n MessageContainerPosition[\"topRight\"] = \"top-right\";\n MessageContainerPosition[\"bottomLeft\"] = \"bottom-left\";\n MessageContainerPosition[\"bottomRight\"] = \"bottom-right\";\n})(MessageContainerPosition = exports.MessageContainerPosition || (exports.MessageContainerPosition = {}));\nvar nodeTimeout = new WeakMap();\nvar containers = new Map();\nfunction onExpire(node, fromClick) {\n if (fromClick) {\n clearTimeout(nodeTimeout.get(node));\n }\n var parent = node.parentNode.parentNode;\n var _a = containers.get(parent), stack = _a.stack, container = _a.container;\n var index = stack.indexOf(node);\n if (index !== -1) {\n container.removeChild(node);\n stack.splice(index, 1);\n if (stack.length === 0) {\n parent.removeChild(container);\n }\n return;\n }\n}\nfunction message(props) {\n if (typeof props === \"string\") {\n props = { text: props };\n }\n var messageBox = document.createElement(\"div\");\n messageBox.className = \"dhx_message \" + (props.css || \"\");\n messageBox.innerHTML = \"\" + props.text + \"\\n\\t\";\n var parent = props.node ? html_1.toNode(props.node) : document.body;\n var position = getComputedStyle(parent).position;\n if (position === \"static\") {\n parent.style.position = \"relative\";\n }\n if (!containers.has(parent)) {\n var messageContainer = document.createElement(\"div\");\n messageContainer.className = \"dhx-message-container \" +\n (props.position ? \"dhx-message-container--\" + props.position : \"dhx-message-container--top-right\") +\n (parent === document.body ? \" dhx-message-container--in-body\" : \"\");\n containers.set(parent, {\n stack: [],\n container: messageContainer\n });\n }\n var _a = containers.get(parent), stack = _a.stack, container = _a.container;\n if (stack.length === 0) {\n parent.appendChild(container);\n }\n stack.push(messageBox);\n container.appendChild(messageBox);\n if (props.expire) {\n var timeout = setTimeout(function () { return onExpire(messageBox); }, props.expire);\n nodeTimeout.set(messageBox, timeout);\n }\n messageBox.onclick = function () { return onExpire(messageBox, true); };\n}\nexports.message = message;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PopupEvents;\n(function (PopupEvents) {\n PopupEvents[\"beforeHide\"] = \"beforehide\";\n PopupEvents[\"beforeShow\"] = \"beforeshow\";\n PopupEvents[\"afterHide\"] = \"afterhide\";\n PopupEvents[\"afterShow\"] = \"aftershow\";\n})(PopupEvents = exports.PopupEvents || (exports.PopupEvents = {}));\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = __webpack_require__(2);\nvar Key;\n(function (Key) {\n Key[Key[\"backspace\"] = 8] = \"backspace\";\n Key[Key[\"enter\"] = 13] = \"enter\";\n Key[Key[\"tab\"] = 9] = \"tab\";\n Key[Key[\"esc\"] = 27] = \"esc\";\n Key[Key[\"space\"] = 32] = \"space\";\n Key[Key[\"left\"] = 37] = \"left\";\n Key[Key[\"up\"] = 38] = \"up\";\n Key[Key[\"right\"] = 39] = \"right\";\n Key[Key[\"down\"] = 40] = \"down\";\n Key[Key[\"insert\"] = 45] = \"insert\";\n Key[Key[\"del\"] = 46] = \"del\";\n Key[Key[\"ctrl\"] = 17] = \"ctrl\";\n Key[Key[\"a\"] = 65] = \"a\";\n Key[Key[\"b\"] = 66] = \"b\";\n Key[Key[\"c\"] = 67] = \"c\";\n Key[Key[\"s\"] = 83] = \"s\";\n Key[Key[\"u\"] = 85] = \"u\";\n Key[Key[\"v\"] = 86] = \"v\";\n Key[Key[\"x\"] = 88] = \"x\";\n Key[Key[\"y\"] = 89] = \"y\";\n Key[Key[\"z\"] = 90] = \"z\";\n Key[Key[\"i\"] = 73] = \"i\";\n})(Key = exports.Key || (exports.Key = {}));\nfunction keyToOperation(e) {\n if (e.shiftKey && e.which === Key.enter) {\n e.preventDefault();\n return {\n action: types_1.Action.add,\n data: \"\\n\"\n };\n }\n switch (e.which) {\n case Key.insert:\n e.preventDefault();\n return;\n case Key.left:\n case Key.right:\n case Key.down:\n case Key.up:\n return;\n case Key.backspace:\n e.preventDefault();\n return {\n action: types_1.Action.remove,\n data: true\n };\n case Key.del:\n e.preventDefault();\n return {\n action: types_1.Action.remove,\n data: false\n };\n case Key.space:\n e.preventDefault();\n return {\n action: types_1.Action.add,\n data: \" \"\n };\n case Key.enter:\n e.preventDefault();\n return {\n action: types_1.Action.add,\n data: { newBlock: true }\n };\n }\n if (e.ctrlKey || e.metaKey) {\n return ctrlKey(e);\n }\n var char = e.key;\n if (char.length > 1 || e.altKey) {\n return;\n }\n e.preventDefault();\n return {\n action: types_1.Action.add,\n data: char\n };\n}\nexports.keyToOperation = keyToOperation;\nfunction ctrlKey(e) {\n var key = e.which;\n switch (key) {\n case Key.z:\n return {\n action: e.shiftKey ? types_1.Action.redo : types_1.Action.undo\n };\n case Key.y:\n return {\n action: types_1.Action.redo\n };\n case Key.a:\n return {\n action: types_1.Action.selectAll\n };\n case Key.v:\n case Key.x:\n case Key.c:\n return;\n case Key.u:\n case Key.i:\n case Key.b:\n e.preventDefault();\n return;\n }\n return;\n}\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dom_1 = __webpack_require__(0);\nvar en_1 = __webpack_require__(11);\nfunction charsExlSpace(text) {\n return text.replace(/[\\n ]/g, \"\").length;\n}\nfunction chars(text) {\n return text.replace(/[\\n]/g, \"\").length;\n}\nfunction words(text) {\n return text.split(/[\\n !.?,:;]+/g).filter(function (word) { return word.length > 0; }).length;\n}\nvar defaultStats = {\n words: words,\n chars: chars,\n charsExlSpace: charsExlSpace\n};\nfunction getStats(text, customStats) {\n if (customStats) {\n var stats = {};\n for (var _i = 0, customStats_1 = customStats; _i < customStats_1.length; _i++) {\n var _a = customStats_1[_i], cb = _a.cb, name_1 = _a.name;\n if (typeof cb === \"function\") {\n stats[name_1] = cb(text);\n }\n else if (!cb && name_1 in defaultStats) {\n stats[name_1] = defaultStats[name_1](text);\n }\n else if (typeof cb === \"string\" && cb in defaultStats) {\n stats[name_1] = defaultStats[cb](text);\n }\n }\n return stats;\n }\n return {\n chars: defaultStats.chars(text),\n words: defaultStats.words(text),\n charsExlSpace: defaultStats.charsExlSpace(text)\n };\n}\nexports.getStats = getStats;\nfunction getDefaultRenderStat() {\n return [\n { name: \"chars\" },\n { name: \"charsExlSpace\" },\n { name: \"words\" }\n ];\n}\nfunction statsRenderer(stats, statSequence) {\n if (statSequence === void 0) { statSequence = getDefaultRenderStat(); }\n return function () { return dom_1.el(\"ul.dhx_richtext-stat\", statSequence.map(function (stat) {\n return dom_1.el(\"li.dhx_richtext-stat__item\", [\n dom_1.el(\"span.dhx_richtext-stat__name\", en_1.default[stat.name] || stat.name),\n dom_1.el(\"span.dhx_richtext-stat__value\", stats[stat.name])\n ]);\n })); };\n}\nexports.statsRenderer = statsRenderer;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ColorpickerEvents;\n(function (ColorpickerEvents) {\n ColorpickerEvents[\"colorChange\"] = \"colorChange\";\n})(ColorpickerEvents = exports.ColorpickerEvents || (exports.ColorpickerEvents = {}));\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(5);\nvar other_1 = __webpack_require__(4);\nvar TextNode_1 = __webpack_require__(20);\nvar SplitResult;\n(function (SplitResult) {\n SplitResult[SplitResult[\"invalidNode\"] = 0] = \"invalidNode\";\n SplitResult[SplitResult[\"offsetStart\"] = 1] = \"offsetStart\";\n SplitResult[SplitResult[\"offsetEnd\"] = 2] = \"offsetEnd\";\n SplitResult[SplitResult[\"complete\"] = 3] = \"complete\";\n})(SplitResult = exports.SplitResult || (exports.SplitResult = {}));\nvar Block = /** @class */ (function () {\n function Block(textNodes, style) {\n this.style = style || constants_1.emptyStyle;\n if (!textNodes || textNodes.length === 0) {\n this.clear();\n }\n else {\n this.textNodes = textNodes;\n }\n }\n Block.prototype.clear = function () {\n this.textNodes = [new TextNode_1.TextNode(\"\", constants_1.emptyStyle)];\n };\n Block.prototype.isEmpty = function () {\n return this.textNodes.length === 1 && this.textNodes[0].isEmpty();\n };\n Block.prototype.splitTextNode = function (index, offset) {\n var textNode = this.textNodes[index];\n if (!textNode) {\n return SplitResult.invalidNode;\n }\n if (offset === 0) {\n return SplitResult.offsetStart;\n }\n if (offset >= textNode.text.length) {\n return SplitResult.offsetEnd;\n }\n var text = textNode.text.slice(0, offset);\n var newText = textNode.text.slice(offset);\n var newTextNode = new TextNode_1.TextNode(newText, textNode.style);\n textNode.text = text;\n this.textNodes.splice(index + 1, 0, newTextNode);\n return SplitResult.complete;\n };\n Block.prototype.removeNodes = function (index, left) {\n // for right selection -> remove from 0 to index\n // for left selection -> remove from index to end\n if (left) {\n if (index === 0) {\n return true;\n }\n this.textNodes = this.textNodes.slice(0, index);\n return false;\n }\n if (index === this.textNodes.length - 1) {\n return true;\n }\n this.textNodes = this.textNodes.slice(index + 1);\n return false;\n };\n Block.prototype.offsetToNodePosition = function (offset) {\n if (offset === 0) {\n return {\n textIndex: 0,\n offset: 0\n };\n }\n var textNodes = this.textNodes;\n for (var i = 0; i < textNodes.length; i++) {\n var len = textNodes[i].text.length;\n if (offset <= len) {\n return {\n textIndex: i,\n offset: offset\n };\n }\n offset -= len;\n }\n };\n Block.prototype.nodePositionToOffset = function (textIndex, offset) {\n for (var i = 0; i < textIndex; i++) {\n offset += this.textNodes[i].text.length;\n }\n return offset;\n };\n Block.prototype.getBlockEnd = function () {\n return {\n textIndex: this.textNodes.length - 1,\n offset: this.textNodes[this.textNodes.length - 1].text.length\n };\n };\n Block.prototype.balance = function () {\n var textNodes = this.textNodes;\n var len = textNodes.length;\n var index = 1;\n while (index < textNodes.length) {\n if (other_1.isEqual(textNodes[index - 1].style, textNodes[index].style)) {\n textNodes[index - 1].text += textNodes[index].text;\n textNodes.splice(index, 1);\n }\n else {\n index++;\n }\n }\n return len !== textNodes.length;\n };\n return Block;\n}());\nexports.Block = Block;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = __webpack_require__(2);\nfunction serializer(blocks) {\n return blocks.reduce(function (result, block) { return result + serializeBlock(block); }, \"\");\n}\nexports.serializer = serializer;\nfunction serializeBlock(block) {\n var inline = \"\";\n var style = block.style, textNodes = block.textNodes;\n var tags = [];\n if (block.style[types_1.Modifier.blockquote]) {\n tags.push(\"blockquote\");\n }\n tags.push(style[types_1.Modifier.style] || \"p\");\n var align = style[types_1.Modifier.align] ? \"text-align: \" + style[types_1.Modifier.align] + \";\" : \"\";\n if (textNodes.length === 1 && !textNodes[0].style[types_1.Modifier.link]) {\n var res = serializeTextNode(textNodes[0], true);\n tags.push.apply(tags, res.tags);\n var textInline = res.inline;\n if (textInline || align) {\n inline = \" style=\\\"\" + textInline + align + \"\\\"\";\n }\n return tagWithContent(tags, inline, res.text);\n }\n if (align) {\n inline = \" style=\\\"\" + align + \"\\\"\";\n }\n return tagWithContent(tags, inline, serializeTextNodes(textNodes));\n}\nfunction serializeTextNode(textNode, raw) {\n if (raw === void 0) { raw = false; }\n var style = textNode.style, text = textNode.text;\n var tags = [];\n if (style[types_1.Modifier.underline]) {\n tags.push(\"u\");\n }\n if (style[types_1.Modifier.strike]) {\n tags.push(\"s\");\n }\n if (style[types_1.Modifier.bold]) {\n tags.push(\"strong\");\n }\n if (style[types_1.Modifier.italic]) {\n tags.push(\"i\");\n }\n if (raw) {\n return {\n tags: tags,\n inline: textInlineStyle(style, true),\n text: processText(text)\n };\n }\n var inlineStyle = textInlineStyle(style);\n if (inlineStyle && tags.length === 0) {\n tags.push(\"span\");\n }\n return tagWithContent(tags, inlineStyle, processText(text));\n}\nfunction serializeTextNodes(textNodes) {\n var res = \"\";\n var linkContent = \"\";\n var linkText = \"\";\n var prevLink;\n for (var _i = 0, textNodes_1 = textNodes; _i < textNodes_1.length; _i++) {\n var textNode = textNodes_1[_i];\n if (textNode.style.link) {\n if (prevLink === textNode.style.link) {\n linkContent += serializeTextNode(textNode);\n linkText += textNode.text.replace(/\\\"/g, \"'\");\n }\n else {\n linkContent = serializeTextNode(textNode);\n linkText = textNode.text.replace(/\\\"/g, \"'\");\n }\n }\n else {\n if (prevLink) {\n res += tagWithContent([\"a\"], \" href=\\\"\" + prevLink + \"\\\" title=\\\"\" + linkText + \"\\\"\", linkContent);\n }\n res += serializeTextNode(textNode);\n }\n prevLink = textNode.style.link;\n }\n if (prevLink) {\n res += tagWithContent([\"a\"], \" href=\\\"\" + prevLink + \"\\\" title=\\\"\" + linkText + \"\\\"\", linkContent);\n }\n return res;\n}\nfunction textInlineStyle(style, raw) {\n if (raw === void 0) { raw = false; }\n var inline = \"\";\n for (var key in style) {\n switch (key) {\n case types_1.Modifier.background:\n inline += \"background: \" + style[key] + \";\";\n break;\n case types_1.Modifier.color:\n inline += \"color: \" + style[key] + \";\";\n break;\n case types_1.Modifier.fontFamily:\n inline += \"font-family: \" + style[key] + \";\";\n break;\n case types_1.Modifier.fontSize:\n inline += \"font-size: \" + style[key] + \";\";\n break;\n }\n }\n if (raw) {\n return inline;\n }\n if (inline) {\n return \" style=\\\"\" + inline + \"\\\"\";\n }\n return \"\";\n}\nfunction tagWithContent(tags, inlineStyle, content) {\n if (tags.length === 0 && content.trim() === \"\") {\n tags.push(\"span\");\n }\n var openTags = tags.reduce(function (res, tag, i) { return res + (i === 0 ? \"<\" + tag + inlineStyle + \">\" : \"<\" + tag + \">\"); }, \"\");\n var closeTags = tags.reduceRight(function (res, tag) { return res + (\"\"); }, \"\");\n return openTags + content + closeTags;\n}\nfunction repeatStr(str, count) {\n var res = \"\";\n while (count--) {\n res += str;\n }\n return res;\n}\nfunction processText(text) {\n return text\n .replace(//g, \">\")\n .replace(/\\n/g, \"
\")\n .replace(/[ ]{2,}/g, function (match) { return \" \" + repeatStr(\" \", match.length - 1); });\n}\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(37);\nvar Richtext_1 = __webpack_require__(38);\nexports.Richtext = Richtext_1.Richtext;\nvar en_1 = __webpack_require__(11);\nvar w = window;\nexports.i18n = (w.dhx && w.dhx.i18n) ? w.dhx.i18 : {};\nexports.i18n.setLocale = function (component, value) {\n var target = exports.i18n[component];\n for (var key in value) {\n target[key] = value[key];\n }\n};\nexports.i18n.richtext = exports.i18n.richtext || en_1.default;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar dom_1 = __webpack_require__(0);\nvar events_1 = __webpack_require__(7);\nvar html_1 = __webpack_require__(1);\nvar view_1 = __webpack_require__(8);\nvar ts_layout_1 = __webpack_require__(41);\nvar constants_1 = __webpack_require__(5);\nvar composition_1 = __webpack_require__(69);\nvar link_1 = __webpack_require__(70);\nvar other_1 = __webpack_require__(4);\nvar scroll_1 = __webpack_require__(72);\nvar statistics_1 = __webpack_require__(32);\nvar styles_1 = __webpack_require__(19);\nvar toolbar_1 = __webpack_require__(73);\nvar keyhandler_1 = __webpack_require__(31);\nvar Editor_1 = __webpack_require__(79);\nvar types_1 = __webpack_require__(2);\nvar Richtext = /** @class */ (function (_super) {\n __extends(Richtext, _super);\n function Richtext(container, config) {\n var _a;\n var _this = _super.call(this, container, core_1.extend({\n mode: \"classic\",\n toolbarBlocks: [\n types_1.RTEToolbarBlock.undo,\n types_1.RTEToolbarBlock.style,\n types_1.RTEToolbarBlock.decoration,\n types_1.RTEToolbarBlock.color,\n types_1.RTEToolbarBlock.align,\n types_1.RTEToolbarBlock.link\n // RTEToolbarBlock.clear,\n // RTEToolbarBlock.fullscreen\n ]\n }, config)) || this;\n var defaultBlockIndex = _this.config.toolbarBlocks.indexOf(types_1.RTEToolbarBlock.default);\n if (defaultBlockIndex !== -1) {\n (_a = _this.config.toolbarBlocks).splice.apply(_a, [defaultBlockIndex, 1].concat(constants_1.defaultBlocks));\n }\n _this._initContainer = html_1.toNode(container);\n _this.events = new events_1.EventSystem();\n var getRootView = function () { return _this.getRootView(); };\n _this._composition = {\n active: false,\n initSelection: null\n };\n _this._compositionEventsDestructor = composition_1.listenCompositionEvents(_this.events, function () { return _this._editor.selection.isActive(); });\n _this._editor = new Editor_1.Editor({\n events: _this.events,\n uid: _this._uid,\n getRootView: getRootView,\n repaint: function () { return _this.paint(); }\n });\n _this._toolbarHelper = new toolbar_1.RichTextToolbarHelper(_this, _this._editor);\n _this.toolbar = _this._toolbarHelper.toolbar;\n _this._linkEditor = new link_1.LinkEditor(null, {\n events: _this.events,\n editor: _this._editor,\n getRootView: getRootView\n });\n _this._initHandlers();\n _this._initUI(_this._initContainer);\n _this._initEvents();\n return _this;\n }\n Richtext.prototype.setValue = function (value, mode) {\n if (mode === void 0) { mode = \"html\"; }\n this.events.fire(types_1.RichTextEvents.action, [types_1.Action.parse, { value: value, mode: mode }, false]);\n };\n Richtext.prototype.getValue = function (mode) {\n if (mode === void 0) { mode = \"html\"; }\n return this._editor.serialize(mode);\n };\n Richtext.prototype.getStats = function (selection) {\n var text = selection ? this._editor.selection.getSelectedText() : this.getValue(\"text\");\n return statistics_1.getStats(text, this.config.customStats);\n };\n Richtext.prototype.destructor = function () {\n this._compositionEventsDestructor();\n this._editor.selection.destructor();\n this.toolbar.destructor();\n this._layout.getRootView().unmount();\n };\n Richtext.prototype.fullScreen = function () {\n if (this.toolbar.data.exists(\"fullscreen\")) {\n this.toolbar.data.update(\"fullscreen\", {\n icon: \"dxi-arrow-collapse\",\n $fullscreen: true\n });\n }\n document.body.classList.add(\"dhx_richtext--fullscreen\", \"dhx_widget--fullscreen\");\n var view = this._layout.getRootView();\n view.mount(document.body);\n };\n Richtext.prototype.exitFullScreen = function () {\n if (this.toolbar.data.exists(\"fullscreen\")) {\n this.toolbar.data.update(\"fullscreen\", {\n icon: \"dxi-arrow-expand\",\n $fullscreen: false\n });\n }\n document.body.classList.remove(\"dhx_richtext--fullscreen\", \"dhx_widget--fullscreen\");\n var view = this._layout.getRootView();\n view.mount(this._initContainer);\n };\n Richtext.prototype.getEditorAPI = function () {\n var _this = this;\n return {\n getSelection: function () { return _this._editor.selection.get(); },\n setSelection: function (selection) {\n _this._editor.selection.set(selection);\n _this._restoreFocus();\n },\n getPosition: function (selection) { return _this._editor.selection.getPosition(selection); },\n getModel: function () { return _this._editor.blocks.map(function (block) { return ({\n style: __assign({}, block.style),\n textNodes: block.textNodes.map(function (textNode) { return ({\n style: __assign({}, textNode.style),\n text: textNode.text\n }); })\n }); }); },\n setModel: function (blocks, selection) {\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.parse, { value: blocks, mode: \"inner\" }, false]);\n if (selection) {\n _this._editor.selection.set(selection);\n }\n },\n add: function (config, selection) {\n if (selection) {\n _this._editor.selection.set(selection);\n }\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.innerAdd, config, true]);\n },\n remove: function (selection) {\n if (selection) {\n _this._editor.selection.set(selection);\n }\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.remove, true, true]);\n },\n update: function (config, selection) {\n if (selection) {\n _this._editor.selection.set(selection);\n }\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.update, {\n modifier: config.modifier,\n modifierValue: config.value\n }]);\n }\n };\n };\n Richtext.prototype._initUI = function (container) {\n var _this = this;\n var layout = this._layout = new ts_layout_1.Layout(container, {\n css: \"dhx_richtext\" + \" dhx_richtext--mode_\" + this.config.mode,\n cols: [{\n css: \"dhx_toolbar__height-holder\",\n rows: [\n { id: \"toolbar\", on: { click: function () { return _this._restoreFocus(); } }, css: \"dhx_richtext__toolbar-holder\" },\n { id: \"editor\", css: \"dhx_richtext__editor-holder\" }\n ]\n }]\n });\n this.mount(null, dom_1.create({\n render: function () { return _this._draw(); },\n hooks: {\n didRedraw: function () {\n if (_this._editor.selection.isActive()) {\n var isUpdated = _this._editor.selection.update();\n if (!isUpdated) {\n _this._restoreFocus();\n }\n }\n }\n }\n }));\n layout.cell(\"editor\").attach(this);\n layout.cell(\"toolbar\").attach(this.toolbar);\n };\n Richtext.prototype._initHandlers = function () {\n var _this = this;\n this._handlers = {\n onkeydown: function (e) {\n if (_this._composition.active || (_this._linkEditor.isVisible() && !_this._editor.selection.isActive())) {\n return;\n }\n var operation = keyhandler_1.keyToOperation(e);\n if (!operation) {\n return;\n }\n _this.events.fire(types_1.RichTextEvents.action, [operation.action, operation.data]);\n },\n onpaste: function (e) {\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.paste, e, false]);\n },\n oncut: function (e) {\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.cut, e, false]);\n },\n oncopy: function (e) {\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.copy, e, false]);\n },\n ondrop: function (e) {\n e.preventDefault();\n },\n ondragstart: function (e) {\n e.preventDefault();\n }\n };\n };\n Richtext.prototype._initEvents = function () {\n var _this = this;\n this.events.on(types_1.RichTextEvents.selectionRefresh, function () { return _this._scrollHelper.update(); });\n this.events.on(types_1.RichTextEvents.action, function (action, data, restoreFocus) {\n var isChanged = _this._editor.manager.execute({ action: action, data: data });\n if (isChanged) {\n _this.events.fire(types_1.RichTextEvents.change, [action, _this._editor.manager.canUndo(), _this._editor.manager.canRedo()]);\n _this.paint();\n }\n if (restoreFocus) {\n _this._restoreFocus();\n }\n });\n this.events.on(types_1.RichTextEvents.compositionStart, function () {\n _this._composition.active = true;\n _this._composition.initSelection = _this._editor.selection.get();\n });\n this.events.on(types_1.RichTextEvents.compositionEnd, function (data) {\n _this._editor.selection.set(_this._composition.initSelection);\n _this.events.fire(types_1.RichTextEvents.action, [types_1.Action.add, data, true]);\n _this._composition.active = false;\n _this._composition.initSelection = null;\n });\n };\n Richtext.prototype._restoreFocus = function () {\n var _this = this;\n if (this._restoreFocusTimeout) {\n clearTimeout(this._restoreFocusTimeout);\n }\n this._restoreFocusTimeout = setTimeout(function () {\n _this._scrollHelper.saveScrollTop();\n _this.getRootView().refs.editor.el.focus();\n _this._scrollHelper.restoreScrollTop();\n var isUpdated = _this._editor.selection.refresh();\n _this._restoreFocusTimeout = null;\n if (!isUpdated) {\n _this._restoreFocus();\n }\n }, 25);\n };\n Richtext.prototype._draw = function () {\n var _this = this;\n var currentLinkRef = this._linkEditor.getCurrentLinkRef();\n var linkRefer = other_1.getLinkRefer();\n var currentLink = null;\n var currentLinkArr = [];\n return dom_1.el(\".dhx_richtext__overflow-wrapper\", {\n _hooks: this.config.mode === \"document\" && {\n didInsert: function (node) {\n _this._scrollHelper = scroll_1.createScrollHelper(node.el);\n }\n }\n }, [\n dom_1.el(\".dhx_richtext__editor.dhx_richtext-editor\", __assign({ \"dhx_widget_id\": this._uid, \"_ref\": \"editor\", \"contentEditable\": \"true\", \"role\": \"textbox\", \"data-gramm\": \"false\", \"spellcheck\": \"false\", \"_hooks\": this.config.mode !== \"document\" && {\n didInsert: function (node) {\n _this._scrollHelper = scroll_1.createScrollHelper(node.el);\n }\n } }, this._handlers), this._editor.blocks.map(function (block, blockIndex) {\n if (currentLinkArr.length) {\n currentLinkArr = [];\n currentLink = null;\n }\n return styles_1.blockquoteWrapper(block.style, blockIndex)(styles_1.blockStyleToTag(block.style), {\n style: styles_1.calcBlockStyle(block.style),\n dhx_offset: blockIndex\n }, block.textNodes.map(function (textNode, textIndex) {\n var hash = other_1.getTextHash(blockIndex, textIndex);\n var isLastBlockNode = textIndex === block.textNodes.length - 1;\n if (textNode.style.link) {\n if (currentLink !== textNode.style.link) {\n currentLinkArr = [_this._renderTextNode(textNode, hash, isLastBlockNode)];\n currentLink = textNode.style.link;\n var linkRef = linkRefer();\n return dom_1.el(\"a\", {\n href: textNode.style.link,\n class: linkRef === currentLinkRef ? \"dhx--link_edited\" : \"\",\n _ref: linkRef\n }, currentLinkArr);\n }\n else {\n currentLinkArr.push(_this._renderTextNode(textNode, hash, isLastBlockNode));\n return;\n }\n }\n currentLink = textNode.style.link;\n return _this._renderTextNode(textNode, hash, isLastBlockNode);\n }));\n }))\n ]);\n };\n Richtext.prototype._renderTextNode = function (textNode, hash, isLastBlockNode) {\n var text = textNode.text;\n var lastSymbolIsGap = text[text.length - 1] === \"\\n\" && isLastBlockNode;\n return dom_1.el(\"span\", {\n _ref: hash,\n dhx_offset: hash,\n style: styles_1.calcTextNodeStyle(textNode.style)\n }, text.length === 0 ? [dom_1.el(\"br\")] : lastSymbolIsGap ? [text + \"\\n\"] : text);\n };\n return Richtext;\n}(view_1.View));\nexports.Richtext = Richtext;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* Copyright (c) 2017, Leon Sorokin\n* All rights reserved. (MIT Licensed)\n*\n* domvm.js (DOM ViewModel)\n* A thin, fast, dependency-free vdom view layer\n* @preserve https://github.com/leeoniya/domvm (v3.2.6, micro build)\n*/\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\tundefined;\n}(this, (function () { 'use strict';\n\n// NOTE: if adding a new *VNode* type, make it < COMMENT and renumber rest.\n// There are some places that test <= COMMENT to assert if node is a VNode\n\n// VNode types\nvar ELEMENT\t= 1;\nvar TEXT\t\t= 2;\nvar COMMENT\t= 3;\n\n// placeholder types\nvar VVIEW\t\t= 4;\nvar VMODEL\t\t= 5;\n\nvar ENV_DOM = typeof window !== \"undefined\";\nvar win = ENV_DOM ? window : {};\nvar rAF = win.requestAnimationFrame;\n\nvar emptyObj = {};\n\nfunction noop() {}\n\nvar isArr = Array.isArray;\n\nfunction isSet(val) {\n\treturn val != null;\n}\n\nfunction isPlainObj(val) {\n\treturn val != null && val.constructor === Object;\t\t// && typeof val === \"object\"\n}\n\nfunction insertArr(targ, arr, pos, rem) {\n\ttarg.splice.apply(targ, [pos, rem].concat(arr));\n}\n\nfunction isVal(val) {\n\tvar t = typeof val;\n\treturn t === \"string\" || t === \"number\";\n}\n\nfunction isFunc(val) {\n\treturn typeof val === \"function\";\n}\n\nfunction isProm(val) {\n\treturn typeof val === \"object\" && isFunc(val.then);\n}\n\n\n\nfunction assignObj(targ) {\n\tvar args = arguments;\n\n\tfor (var i = 1; i < args.length; i++)\n\t\t{ for (var k in args[i])\n\t\t\t{ targ[k] = args[i][k]; } }\n\n\treturn targ;\n}\n\n// export const defProp = Object.defineProperty;\n\nfunction deepSet(targ, path, val) {\n\tvar seg;\n\n\twhile (seg = path.shift()) {\n\t\tif (path.length === 0)\n\t\t\t{ targ[seg] = val; }\n\t\telse\n\t\t\t{ targ[seg] = targ = targ[seg] || {}; }\n\t}\n}\n\n/*\nexport function deepUnset(targ, path) {\n\tvar seg;\n\n\twhile (seg = path.shift()) {\n\t\tif (path.length === 0)\n\t\t\ttarg[seg] = val;\n\t\telse\n\t\t\ttarg[seg] = targ = targ[seg] || {};\n\t}\n}\n*/\n\nfunction sliceArgs(args, offs) {\n\tvar arr = [];\n\tfor (var i = offs; i < args.length; i++)\n\t\t{ arr.push(args[i]); }\n\treturn arr;\n}\n\nfunction cmpObj(a, b) {\n\tfor (var i in a)\n\t\t{ if (a[i] !== b[i])\n\t\t\t{ return false; } }\n\n\treturn true;\n}\n\nfunction cmpArr(a, b) {\n\tvar alen = a.length;\n\n\tif (b.length !== alen)\n\t\t{ return false; }\n\n\tfor (var i = 0; i < alen; i++)\n\t\t{ if (a[i] !== b[i])\n\t\t\t{ return false; } }\n\n\treturn true;\n}\n\n// https://github.com/darsain/raft\n// rAF throttler, aggregates multiple repeated redraw calls within single animframe\nfunction raft(fn) {\n\tif (!rAF)\n\t\t{ return fn; }\n\n\tvar id, ctx, args;\n\n\tfunction call() {\n\t\tid = 0;\n\t\tfn.apply(ctx, args);\n\t}\n\n\treturn function() {\n\t\tctx = this;\n\t\targs = arguments;\n\t\tif (!id) { id = rAF(call); }\n\t};\n}\n\nfunction curry(fn, args, ctx) {\n\treturn function() {\n\t\treturn fn.apply(ctx, args);\n\t};\n}\n\n/*\nexport function prop(val, cb, ctx, args) {\n\treturn function(newVal, execCb) {\n\t\tif (newVal !== undefined && newVal !== val) {\n\t\t\tval = newVal;\n\t\t\texecCb !== false && isFunc(cb) && cb.apply(ctx, args);\n\t\t}\n\n\t\treturn val;\n\t};\n}\n*/\n\n/*\n// adapted from https://github.com/Olical/binary-search\nexport function binaryKeySearch(list, item) {\n var min = 0;\n var max = list.length - 1;\n var guess;\n\n\tvar bitwise = (max <= 2147483647) ? true : false;\n\tif (bitwise) {\n\t\twhile (min <= max) {\n\t\t\tguess = (min + max) >> 1;\n\t\t\tif (list[guess].key === item) { return guess; }\n\t\t\telse {\n\t\t\t\tif (list[guess].key < item) { min = guess + 1; }\n\t\t\t\telse { max = guess - 1; }\n\t\t\t}\n\t\t}\n\t} else {\n\t\twhile (min <= max) {\n\t\t\tguess = Math.floor((min + max) / 2);\n\t\t\tif (list[guess].key === item) { return guess; }\n\t\t\telse {\n\t\t\t\tif (list[guess].key < item) { min = guess + 1; }\n\t\t\t\telse { max = guess - 1; }\n\t\t\t}\n\t\t}\n\t}\n\n return -1;\n}\n*/\n\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\n// impl borrowed from https://github.com/ivijs/ivi\nfunction longestIncreasingSubsequence(a) {\n\tvar p = a.slice();\n\tvar result = [];\n\tresult.push(0);\n\tvar u;\n\tvar v;\n\n\tfor (var i = 0, il = a.length; i < il; ++i) {\n\t\tvar j = result[result.length - 1];\n\t\tif (a[j] < a[i]) {\n\t\t\tp[i] = j;\n\t\t\tresult.push(i);\n\t\t\tcontinue;\n\t\t}\n\n\t\tu = 0;\n\t\tv = result.length - 1;\n\n\t\twhile (u < v) {\n\t\t\tvar c = ((u + v) / 2) | 0;\n\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\tu = c + 1;\n\t\t\t} else {\n\t\t\t\tv = c;\n\t\t\t}\n\t\t}\n\n\t\tif (a[i] < a[result[u]]) {\n\t\t\tif (u > 0) {\n\t\t\t\tp[i] = result[u - 1];\n\t\t\t}\n\t\t\tresult[u] = i;\n\t\t}\n\t}\n\n\tu = result.length;\n\tv = result[u - 1];\n\n\twhile (u-- > 0) {\n\t\tresult[u] = v;\n\t\tv = p[v];\n\t}\n\n\treturn result;\n}\n\n// based on https://github.com/Olical/binary-search\nfunction binaryFindLarger(item, list) {\n\tvar min = 0;\n\tvar max = list.length - 1;\n\tvar guess;\n\n\tvar bitwise = (max <= 2147483647) ? true : false;\n\tif (bitwise) {\n\t\twhile (min <= max) {\n\t\t\tguess = (min + max) >> 1;\n\t\t\tif (list[guess] === item) { return guess; }\n\t\t\telse {\n\t\t\t\tif (list[guess] < item) { min = guess + 1; }\n\t\t\t\telse { max = guess - 1; }\n\t\t\t}\n\t\t}\n\t} else {\n\t\twhile (min <= max) {\n\t\t\tguess = Math.floor((min + max) / 2);\n\t\t\tif (list[guess] === item) { return guess; }\n\t\t\telse {\n\t\t\t\tif (list[guess] < item) { min = guess + 1; }\n\t\t\t\telse { max = guess - 1; }\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (min == list.length) ? null : min;\n\n//\treturn -1;\n}\n\nfunction isEvProp(name) {\n\treturn name[0] === \"o\" && name[1] === \"n\";\n}\n\nfunction isSplProp(name) {\n\treturn name[0] === \"_\";\n}\n\nfunction isStyleProp(name) {\n\treturn name === \"style\";\n}\n\nfunction repaint(node) {\n\tnode && node.el && node.el.offsetHeight;\n}\n\nfunction isHydrated(vm) {\n\treturn vm.node != null && vm.node.el != null;\n}\n\n// tests interactive props where real val should be compared\nfunction isDynProp(tag, attr) {\n//\tswitch (tag) {\n//\t\tcase \"input\":\n//\t\tcase \"textarea\":\n//\t\tcase \"select\":\n//\t\tcase \"option\":\n\t\t\tswitch (attr) {\n\t\t\t\tcase \"value\":\n\t\t\t\tcase \"checked\":\n\t\t\t\tcase \"selected\":\n//\t\t\t\tcase \"selectedIndex\":\n\t\t\t\t\treturn true;\n\t\t\t}\n//\t}\n\n\treturn false;\n}\n\nfunction getVm(n) {\n\tn = n || emptyObj;\n\twhile (n.vm == null && n.parent)\n\t\t{ n = n.parent; }\n\treturn n.vm;\n}\n\nfunction VNode() {}\n\nvar VNodeProto = VNode.prototype = {\n\tconstructor: VNode,\n\n\ttype:\tnull,\n\n\tvm:\t\tnull,\n\n\t// all this stuff can just live in attrs (as defined) just have getters here for it\n\tkey:\tnull,\n\tref:\tnull,\n\tdata:\tnull,\n\thooks:\tnull,\n\tns:\t\tnull,\n\n\tel:\t\tnull,\n\n\ttag:\tnull,\n\tattrs:\tnull,\n\tbody:\tnull,\n\n\tflags:\t0,\n\n\t_class:\tnull,\n\t_diff:\tnull,\n\n\t// pending removal on promise resolution\n\t_dead:\tfalse,\n\t// part of longest increasing subsequence?\n\t_lis:\tfalse,\n\n\tidx:\tnull,\n\tparent:\tnull,\n\n\t/*\n\t// break out into optional fluent module\n\tkey:\tfunction(val) { this.key\t= val; return this; },\n\tref:\tfunction(val) { this.ref\t= val; return this; },\t\t// deep refs\n\tdata:\tfunction(val) { this.data\t= val; return this; },\n\thooks:\tfunction(val) { this.hooks\t= val; return this; },\t\t// h(\"div\").hooks()\n\thtml:\tfunction(val) { this.html\t= true; return this.body(val); },\n\n\tbody:\tfunction(val) { this.body\t= val; return this; },\n\t*/\n};\n\nfunction defineText(body) {\n\tvar node = new VNode;\n\tnode.type = TEXT;\n\tnode.body = body;\n\treturn node;\n}\n\n// creates a one-shot self-ending stream that redraws target vm\n// TODO: if it's already registered by any parent vm, then ignore to avoid simultaneous parent & child refresh\n\nvar tagCache = {};\n\nvar RE_ATTRS = /\\[(\\w+)(?:=(\\w+))?\\]/g;\n\nfunction cssTag(raw) {\n\t{\n\t\tvar cached = tagCache[raw];\n\n\t\tif (cached == null) {\n\t\t\tvar tag, id, cls, attr;\n\n\t\t\ttagCache[raw] = cached = {\n\t\t\t\ttag:\t(tag\t= raw.match( /^[-\\w]+/))\t\t?\ttag[0]\t\t\t\t\t\t: \"div\",\n\t\t\t\tid:\t\t(id\t\t= raw.match( /#([-\\w]+)/))\t\t? \tid[1]\t\t\t\t\t\t: null,\n\t\t\t\tclass:\t(cls\t= raw.match(/\\.([-\\w.]+)/))\t\t?\tcls[1].replace(/\\./g, \" \")\t: null,\n\t\t\t\tattrs:\tnull,\n\t\t\t};\n\n\t\t\twhile (attr = RE_ATTRS.exec(raw)) {\n\t\t\t\tif (cached.attrs == null)\n\t\t\t\t\t{ cached.attrs = {}; }\n\t\t\t\tcached.attrs[attr[1]] = attr[2] || \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn cached;\n\t}\n}\n\n// (de)optimization flags\n\n// forces slow bottom-up removeChild to fire deep willRemove/willUnmount hooks,\nvar DEEP_REMOVE = 1;\n// prevents inserting/removing/reordering of children\nvar FIXED_BODY = 2;\n// enables fast keyed lookup of children via binary search, expects homogeneous keyed body\nvar KEYED_LIST = 4;\n// indicates an vnode match/diff/recycler function for body\nvar LAZY_LIST = 8;\n\nfunction initElementNode(tag, attrs, body, flags) {\n\tvar node = new VNode;\n\n\tnode.type = ELEMENT;\n\n\tif (isSet(flags))\n\t\t{ node.flags = flags; }\n\n\tnode.attrs = attrs;\n\n\tvar parsed = cssTag(tag);\n\n\tnode.tag = parsed.tag;\n\n\t// meh, weak assertion, will fail for id=0, etc.\n\tif (parsed.id || parsed.class || parsed.attrs) {\n\t\tvar p = node.attrs || {};\n\n\t\tif (parsed.id && !isSet(p.id))\n\t\t\t{ p.id = parsed.id; }\n\n\t\tif (parsed.class) {\n\t\t\tnode._class = parsed.class;\t\t// static class\n\t\t\tp.class = parsed.class + (isSet(p.class) ? (\" \" + p.class) : \"\");\n\t\t}\n\t\tif (parsed.attrs) {\n\t\t\tfor (var key in parsed.attrs)\n\t\t\t\t{ if (!isSet(p[key]))\n\t\t\t\t\t{ p[key] = parsed.attrs[key]; } }\n\t\t}\n\n//\t\tif (node.attrs !== p)\n\t\t\tnode.attrs = p;\n\t}\n\n\tvar mergedAttrs = node.attrs;\n\n\tif (isSet(mergedAttrs)) {\n\t\tif (isSet(mergedAttrs._key))\n\t\t\t{ node.key = mergedAttrs._key; }\n\n\t\tif (isSet(mergedAttrs._ref))\n\t\t\t{ node.ref = mergedAttrs._ref; }\n\n\t\tif (isSet(mergedAttrs._hooks))\n\t\t\t{ node.hooks = mergedAttrs._hooks; }\n\n\t\tif (isSet(mergedAttrs._data))\n\t\t\t{ node.data = mergedAttrs._data; }\n\n\t\tif (isSet(mergedAttrs._flags))\n\t\t\t{ node.flags = mergedAttrs._flags; }\n\n\t\tif (!isSet(node.key)) {\n\t\t\tif (isSet(node.ref))\n\t\t\t\t{ node.key = node.ref; }\n\t\t\telse if (isSet(mergedAttrs.id))\n\t\t\t\t{ node.key = mergedAttrs.id; }\n\t\t\telse if (isSet(mergedAttrs.name))\n\t\t\t\t{ node.key = mergedAttrs.name + (mergedAttrs.type === \"radio\" || mergedAttrs.type === \"checkbox\" ? mergedAttrs.value : \"\"); }\n\t\t}\n\t}\n\n\tif (body != null)\n\t\t{ node.body = body; }\n\n\treturn node;\n}\n\nfunction setRef(vm, name, node) {\n\tvar path = [\"refs\"].concat(name.split(\".\"));\n\tdeepSet(vm, path, node);\n}\n\nfunction setDeepRemove(node) {\n\twhile (node = node.parent)\n\t\t{ node.flags |= DEEP_REMOVE; }\n}\n\n// vnew, vold\nfunction preProc(vnew, parent, idx, ownVm) {\n\tif (vnew.type === VMODEL || vnew.type === VVIEW)\n\t\t{ return; }\n\n\tvnew.parent = parent;\n\tvnew.idx = idx;\n\tvnew.vm = ownVm;\n\n\tif (vnew.ref != null)\n\t\t{ setRef(getVm(vnew), vnew.ref, vnew); }\n\n\tvar nh = vnew.hooks,\n\t\tvh = ownVm && ownVm.hooks;\n\n\tif (nh && (nh.willRemove || nh.didRemove) ||\n\t\tvh && (vh.willUnmount || vh.didUnmount))\n\t\t{ setDeepRemove(vnew); }\n\n\tif (isArr(vnew.body))\n\t\t{ preProcBody(vnew); }\n\telse {}\n}\n\nfunction preProcBody(vnew) {\n\tvar body = vnew.body;\n\n\tfor (var i = 0; i < body.length; i++) {\n\t\tvar node2 = body[i];\n\n\t\t// remove false/null/undefined\n\t\tif (node2 === false || node2 == null)\n\t\t\t{ body.splice(i--, 1); }\n\t\t// flatten arrays\n\t\telse if (isArr(node2)) {\n\t\t\tinsertArr(body, node2, i--, 1);\n\t\t}\n\t\telse {\n\t\t\tif (node2.type == null)\n\t\t\t\t{ body[i] = node2 = defineText(\"\"+node2); }\n\n\t\t\tif (node2.type === TEXT) {\n\t\t\t\t// remove empty text nodes\n\t\t\t\tif (node2.body == null || node2.body === \"\")\n\t\t\t\t\t{ body.splice(i--, 1); }\n\t\t\t\t// merge with previous text node\n\t\t\t\telse if (i > 0 && body[i-1].type === TEXT) {\n\t\t\t\t\tbody[i-1].body += node2.body;\n\t\t\t\t\tbody.splice(i--, 1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\t{ preProc(node2, vnew, i, null); }\n\t\t\t}\n\t\t\telse\n\t\t\t\t{ preProc(node2, vnew, i, null); }\n\t\t}\n\t}\n}\n\nvar unitlessProps = {\n\tanimationIterationCount: true,\n\tboxFlex: true,\n\tboxFlexGroup: true,\n\tboxOrdinalGroup: true,\n\tcolumnCount: true,\n\tflex: true,\n\tflexGrow: true,\n\tflexPositive: true,\n\tflexShrink: true,\n\tflexNegative: true,\n\tflexOrder: true,\n\tgridRow: true,\n\tgridColumn: true,\n\torder: true,\n\tlineClamp: true,\n\n\tborderImageOutset: true,\n\tborderImageSlice: true,\n\tborderImageWidth: true,\n\tfontWeight: true,\n\tlineHeight: true,\n\topacity: true,\n\torphans: true,\n\ttabSize: true,\n\twidows: true,\n\tzIndex: true,\n\tzoom: true,\n\n\tfillOpacity: true,\n\tfloodOpacity: true,\n\tstopOpacity: true,\n\tstrokeDasharray: true,\n\tstrokeDashoffset: true,\n\tstrokeMiterlimit: true,\n\tstrokeOpacity: true,\n\tstrokeWidth: true\n};\n\nfunction autoPx(name, val) {\n\t{\n\t\t// typeof val === 'number' is faster but fails for numeric strings\n\t\treturn !isNaN(val) && !unitlessProps[name] ? (val + \"px\") : val;\n\t}\n}\n\n// assumes if styles exist both are objects or both are strings\nfunction patchStyle(n, o) {\n\tvar ns = (n.attrs || emptyObj).style;\n\tvar os = o ? (o.attrs || emptyObj).style : null;\n\n\t// replace or remove in full\n\tif (ns == null || isVal(ns))\n\t\t{ n.el.style.cssText = ns; }\n\telse {\n\t\tfor (var nn in ns) {\n\t\t\tvar nv = ns[nn];\n\n\t\t\tif (os == null || nv != null && nv !== os[nn])\n\t\t\t\t{ n.el.style[nn] = autoPx(nn, nv); }\n\t\t}\n\n\t\t// clean old\n\t\tif (os) {\n\t\t\tfor (var on in os) {\n\t\t\t\tif (ns[on] == null)\n\t\t\t\t\t{ n.el.style[on] = \"\"; }\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar didQueue = [];\n\nfunction fireHook(hooks, name, o, n, immediate) {\n\tif (hooks != null) {\n\t\tvar fn = o.hooks[name];\n\n\t\tif (fn) {\n\t\t\tif (name[0] === \"d\" && name[1] === \"i\" && name[2] === \"d\") {\t// did*\n\t\t\t\t//\tconsole.log(name + \" should queue till repaint\", o, n);\n\t\t\t\timmediate ? repaint(o.parent) && fn(o, n) : didQueue.push([fn, o, n]);\n\t\t\t}\n\t\t\telse {\t\t// will*\n\t\t\t\t//\tconsole.log(name + \" may delay by promise\", o, n);\n\t\t\t\treturn fn(o, n);\t\t// or pass done() resolver\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction drainDidHooks(vm) {\n\tif (didQueue.length) {\n\t\trepaint(vm.node);\n\n\t\tvar item;\n\t\twhile (item = didQueue.shift())\n\t\t\t{ item[0](item[1], item[2]); }\n\t}\n}\n\nvar doc = ENV_DOM ? document : null;\n\nfunction closestVNode(el) {\n\twhile (el._node == null)\n\t\t{ el = el.parentNode; }\n\treturn el._node;\n}\n\nfunction createElement(tag, ns) {\n\tif (ns != null)\n\t\t{ return doc.createElementNS(ns, tag); }\n\treturn doc.createElement(tag);\n}\n\nfunction createTextNode(body) {\n\treturn doc.createTextNode(body);\n}\n\nfunction createComment(body) {\n\treturn doc.createComment(body);\n}\n\n// ? removes if !recycled\nfunction nextSib(sib) {\n\treturn sib.nextSibling;\n}\n\n// ? removes if !recycled\nfunction prevSib(sib) {\n\treturn sib.previousSibling;\n}\n\n// TODO: this should collect all deep proms from all hooks and return Promise.all()\nfunction deepNotifyRemove(node) {\n\tvar vm = node.vm;\n\n\tvar wuRes = vm != null && fireHook(vm.hooks, \"willUnmount\", vm, vm.data);\n\n\tvar wrRes = fireHook(node.hooks, \"willRemove\", node);\n\n\tif ((node.flags & DEEP_REMOVE) === DEEP_REMOVE && isArr(node.body)) {\n\t\tfor (var i = 0; i < node.body.length; i++)\n\t\t\t{ deepNotifyRemove(node.body[i]); }\n\t}\n\n\treturn wuRes || wrRes;\n}\n\nfunction _removeChild(parEl, el, immediate) {\n\tvar node = el._node, vm = node.vm;\n\n\tif (isArr(node.body)) {\n\t\tif ((node.flags & DEEP_REMOVE) === DEEP_REMOVE) {\n\t\t\tfor (var i = 0; i < node.body.length; i++)\n\t\t\t\t{ _removeChild(el, node.body[i].el); }\n\t\t}\n\t\telse\n\t\t\t{ deepUnref(node); }\n\t}\n\n\tdelete el._node;\n\n\tparEl.removeChild(el);\n\n\tfireHook(node.hooks, \"didRemove\", node, null, immediate);\n\n\tif (vm != null) {\n\t\tfireHook(vm.hooks, \"didUnmount\", vm, vm.data, immediate);\n\t\tvm.node = null;\n\t}\n}\n\n// todo: should delay parent unmount() by returning res prom?\nfunction removeChild(parEl, el) {\n\tvar node = el._node;\n\n\t// already marked for removal\n\tif (node._dead) { return; }\n\n\tvar res = deepNotifyRemove(node);\n\n\tif (res != null && isProm(res)) {\n\t\tnode._dead = true;\n\t\tres.then(curry(_removeChild, [parEl, el, true]));\n\t}\n\telse\n\t\t{ _removeChild(parEl, el); }\n}\n\nfunction deepUnref(node) {\n\tvar obody = node.body;\n\n\tfor (var i = 0; i < obody.length; i++) {\n\t\tvar o2 = obody[i];\n\t\tdelete o2.el._node;\n\n\t\tif (o2.vm != null)\n\t\t\t{ o2.vm.node = null; }\n\n\t\tif (isArr(o2.body))\n\t\t\t{ deepUnref(o2); }\n\t}\n}\n\nfunction clearChildren(parent) {\n\tvar parEl = parent.el;\n\n\tif ((parent.flags & DEEP_REMOVE) === 0) {\n\t\tisArr(parent.body) && deepUnref(parent);\n\t\tparEl.textContent = null;\n\t}\n\telse {\n\t\tvar el = parEl.firstChild;\n\n\t\tdo {\n\t\t\tvar next = nextSib(el);\n\t\t\tremoveChild(parEl, el);\n\t\t} while (el = next);\n\t}\n}\n\n// todo: hooks\nfunction insertBefore(parEl, el, refEl) {\n\tvar node = el._node, inDom = el.parentNode != null;\n\n\t// el === refEl is asserted as a no-op insert called to fire hooks\n\tvar vm = (el === refEl || !inDom) ? node.vm : null;\n\n\tif (vm != null)\n\t\t{ fireHook(vm.hooks, \"willMount\", vm, vm.data); }\n\n\tfireHook(node.hooks, inDom ? \"willReinsert\" : \"willInsert\", node);\n\tparEl.insertBefore(el, refEl);\n\tfireHook(node.hooks, inDom ? \"didReinsert\" : \"didInsert\", node);\n\n\tif (vm != null)\n\t\t{ fireHook(vm.hooks, \"didMount\", vm, vm.data); }\n}\n\nfunction insertAfter(parEl, el, refEl) {\n\tinsertBefore(parEl, el, refEl ? nextSib(refEl) : null);\n}\n\nvar onemit = {};\n\nfunction emitCfg(cfg) {\n\tassignObj(onemit, cfg);\n}\n\nfunction emit(evName) {\n\tvar targ = this,\n\t\tsrc = targ;\n\n\tvar args = sliceArgs(arguments, 1).concat(src, src.data);\n\n\tdo {\n\t\tvar evs = targ.onemit;\n\t\tvar fn = evs ? evs[evName] : null;\n\n\t\tif (fn) {\n\t\t\tfn.apply(targ, args);\n\t\t\tbreak;\n\t\t}\n\t} while (targ = targ.parent());\n\n\tif (onemit[evName])\n\t\t{ onemit[evName].apply(targ, args); }\n}\n\nvar onevent = noop;\n\nfunction config(newCfg) {\n\tonevent = newCfg.onevent || onevent;\n\n\t{\n\t\tif (newCfg.onemit)\n\t\t\t{ emitCfg(newCfg.onemit); }\n\t}\n\n\t\n}\n\nfunction bindEv(el, type, fn) {\n\tel[type] = fn;\n}\n\nfunction exec(fn, args, e, node, vm) {\n\tvar out = fn.apply(vm, args.concat([e, node, vm, vm.data]));\n\n\t// should these respect out === false?\n\tvm.onevent(e, node, vm, vm.data, args);\n\tonevent.call(null, e, node, vm, vm.data, args);\n\n\tif (out === false) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}\n}\n\nfunction handle(e) {\n\tvar node = closestVNode(e.target);\n\tvar vm = getVm(node);\n\n\tvar evDef = e.currentTarget._node.attrs[\"on\" + e.type], fn, args;\n\n\tif (isArr(evDef)) {\n\t\tfn = evDef[0];\n\t\targs = evDef.slice(1);\n\t\texec(fn, args, e, node, vm);\n\t}\n\telse {\n\t\tfor (var sel in evDef) {\n\t\t\tif (e.target.matches(sel)) {\n\t\t\t\tvar evDef2 = evDef[sel];\n\n\t\t\t\tif (isArr(evDef2)) {\n\t\t\t\t\tfn = evDef2[0];\n\t\t\t\t\targs = evDef2.slice(1);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfn = evDef2;\n\t\t\t\t\targs = [];\n\t\t\t\t}\n\n\t\t\t\texec(fn, args, e, node, vm);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction patchEvent(node, name, nval, oval) {\n\tif (nval === oval)\n\t\t{ return; }\n\n\tvar el = node.el;\n\n\tif (nval == null || isFunc(nval))\n\t\t{ bindEv(el, name, nval); }\n\telse if (oval == null)\n\t\t{ bindEv(el, name, handle); }\n}\n\nfunction remAttr(node, name, asProp) {\n\tif (name[0] === \".\") {\n\t\tname = name.substr(1);\n\t\tasProp = true;\n\t}\n\n\tif (asProp)\n\t\t{ node.el[name] = \"\"; }\n\telse\n\t\t{ node.el.removeAttribute(name); }\n}\n\n// setAttr\n// diff, \".\", \"on*\", bool vals, skip _*, value/checked/selected selectedIndex\nfunction setAttr(node, name, val, asProp, initial) {\n\tvar el = node.el;\n\n\tif (val == null)\n\t\t{ !initial && remAttr(node, name, false); }\t\t// will also removeAttr of style: null\n\telse if (node.ns != null)\n\t\t{ el.setAttribute(name, val); }\n\telse if (name === \"class\")\n\t\t{ el.className = val; }\n\telse if (name === \"id\" || typeof val === \"boolean\" || asProp)\n\t\t{ el[name] = val; }\n\telse if (name[0] === \".\")\n\t\t{ el[name.substr(1)] = val; }\n\telse\n\t\t{ el.setAttribute(name, val); }\n}\n\nfunction patchAttrs(vnode, donor, initial) {\n\tvar nattrs = vnode.attrs || emptyObj;\n\tvar oattrs = donor.attrs || emptyObj;\n\n\tif (nattrs === oattrs) {\n\t\t\n\t}\n\telse {\n\t\tfor (var key in nattrs) {\n\t\t\tvar nval = nattrs[key];\n\t\t\tvar isDyn = isDynProp(vnode.tag, key);\n\t\t\tvar oval = isDyn ? vnode.el[key] : oattrs[key];\n\n\t\t\tif (nval === oval) {}\n\t\t\telse if (isStyleProp(key))\n\t\t\t\t{ patchStyle(vnode, donor); }\n\t\t\telse if (isSplProp(key)) {}\n\t\t\telse if (isEvProp(key))\n\t\t\t\t{ patchEvent(vnode, key, nval, oval); }\n\t\t\telse\n\t\t\t\t{ setAttr(vnode, key, nval, isDyn, initial); }\n\t\t}\n\n\t\t// TODO: bench style.cssText = \"\" vs removeAttribute(\"style\")\n\t\tfor (var key in oattrs) {\n\t\t\t!(key in nattrs) &&\n\t\t\t!isSplProp(key) &&\n\t\t\tremAttr(vnode, key, isDynProp(vnode.tag, key) || isEvProp(key));\n\t\t}\n\t}\n}\n\nfunction createView(view, data, key, opts) {\n\tif (view.type === VVIEW) {\n\t\tdata\t= view.data;\n\t\tkey\t\t= view.key;\n\t\topts\t= view.opts;\n\t\tview\t= view.view;\n\t}\n\n\treturn new ViewModel(view, data, key, opts);\n}\n\n//import { XML_NS, XLINK_NS } from './defineSvgElement';\nfunction hydrateBody(vnode) {\n\tfor (var i = 0; i < vnode.body.length; i++) {\n\t\tvar vnode2 = vnode.body[i];\n\t\tvar type2 = vnode2.type;\n\n\t\t// ELEMENT,TEXT,COMMENT\n\t\tif (type2 <= COMMENT)\n\t\t\t{ insertBefore(vnode.el, hydrate(vnode2)); }\t\t// vnode.el.appendChild(hydrate(vnode2))\n\t\telse if (type2 === VVIEW) {\n\t\t\tvar vm = createView(vnode2.view, vnode2.data, vnode2.key, vnode2.opts)._redraw(vnode, i, false);\t\t// todo: handle new data updates\n\t\t\ttype2 = vm.node.type;\n\t\t\tinsertBefore(vnode.el, hydrate(vm.node));\n\t\t}\n\t\telse if (type2 === VMODEL) {\n\t\t\tvar vm = vnode2.vm;\n\t\t\tvm._redraw(vnode, i);\t\t\t\t\t// , false\n\t\t\ttype2 = vm.node.type;\n\t\t\tinsertBefore(vnode.el, vm.node.el);\t\t// , hydrate(vm.node)\n\t\t}\n\t}\n}\n\n// TODO: DRY this out. reusing normal patch here negatively affects V8's JIT\nfunction hydrate(vnode, withEl) {\n\tif (vnode.el == null) {\n\t\tif (vnode.type === ELEMENT) {\n\t\t\tvnode.el = withEl || createElement(vnode.tag, vnode.ns);\n\n\t\t//\tif (vnode.tag === \"svg\")\n\t\t//\t\tvnode.el.setAttributeNS(XML_NS, 'xmlns:xlink', XLINK_NS);\n\n\t\t\tif (vnode.attrs != null)\n\t\t\t\t{ patchAttrs(vnode, emptyObj, true); }\n\n\t\t\tif ((vnode.flags & LAZY_LIST) === LAZY_LIST)\t// vnode.body instanceof LazyList\n\t\t\t\t{ vnode.body.body(vnode); }\n\n\t\t\tif (isArr(vnode.body))\n\t\t\t\t{ hydrateBody(vnode); }\n\t\t\telse if (vnode.body != null && vnode.body !== \"\")\n\t\t\t\t{ vnode.el.textContent = vnode.body; }\n\t\t}\n\t\telse if (vnode.type === TEXT)\n\t\t\t{ vnode.el = withEl || createTextNode(vnode.body); }\n\t\telse if (vnode.type === COMMENT)\n\t\t\t{ vnode.el = withEl || createComment(vnode.body); }\n\t}\n\n\tvnode.el._node = vnode;\n\n\treturn vnode.el;\n}\n\n// prevent GCC from inlining some large funcs (which negatively affects Chrome's JIT)\n//window.syncChildren = syncChildren;\nwindow.lisMove = lisMove;\n\nfunction nextNode(node, body) {\n\treturn body[node.idx + 1];\n}\n\nfunction prevNode(node, body) {\n\treturn body[node.idx - 1];\n}\n\nfunction parentNode(node) {\n\treturn node.parent;\n}\n\nvar BREAK = 1;\nvar BREAK_ALL = 2;\n\nfunction syncDir(advSib, advNode, insert, sibName, nodeName, invSibName, invNodeName, invInsert) {\n\treturn function(node, parEl, body, state, convTest, lis) {\n\t\tvar sibNode, tmpSib;\n\n\t\tif (state[sibName] != null) {\n\t\t\t// skip dom elements not created by domvm\n\t\t\tif ((sibNode = state[sibName]._node) == null) {\n\t\t\t\tstate[sibName] = advSib(state[sibName]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (parentNode(sibNode) !== node) {\n\t\t\t\ttmpSib = advSib(state[sibName]);\n\t\t\t\tsibNode.vm != null ? sibNode.vm.unmount(true) : removeChild(parEl, state[sibName]);\n\t\t\t\tstate[sibName] = tmpSib;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (state[nodeName] == convTest)\n\t\t\t{ return BREAK_ALL; }\n\t\telse if (state[nodeName].el == null) {\n\t\t\tinsert(parEl, hydrate(state[nodeName]), state[sibName]);\t// should lis be updated here?\n\t\t\tstate[nodeName] = advNode(state[nodeName], body);\t\t// also need to advance sib?\n\t\t}\n\t\telse if (state[nodeName].el === state[sibName]) {\n\t\t\tstate[nodeName] = advNode(state[nodeName], body);\n\t\t\tstate[sibName] = advSib(state[sibName]);\n\t\t}\n\t\t// head->tail or tail->head\n\t\telse if (!lis && sibNode === state[invNodeName]) {\n\t\t\ttmpSib = state[sibName];\n\t\t\tstate[sibName] = advSib(tmpSib);\n\t\t\tinvInsert(parEl, tmpSib, state[invSibName]);\n\t\t\tstate[invSibName] = tmpSib;\n\t\t}\n\t\telse {\n\t\t\tif (lis && state[sibName] != null)\n\t\t\t\t{ return lisMove(advSib, advNode, insert, sibName, nodeName, parEl, body, sibNode, state); }\n\n\t\t\treturn BREAK;\n\t\t}\n\t};\n}\n\nfunction lisMove(advSib, advNode, insert, sibName, nodeName, parEl, body, sibNode, state) {\n\tif (sibNode._lis) {\n\t\tinsert(parEl, state[nodeName].el, state[sibName]);\n\t\tstate[nodeName] = advNode(state[nodeName], body);\n\t}\n\telse {\n\t\t// find closest tomb\n\t\tvar t = binaryFindLarger(sibNode.idx, state.tombs);\n\t\tsibNode._lis = true;\n\t\tvar tmpSib = advSib(state[sibName]);\n\t\tinsert(parEl, state[sibName], t != null ? body[state.tombs[t]].el : t);\n\n\t\tif (t == null)\n\t\t\t{ state.tombs.push(sibNode.idx); }\n\t\telse\n\t\t\t{ state.tombs.splice(t, 0, sibNode.idx); }\n\n\t\tstate[sibName] = tmpSib;\n\t}\n}\n\nvar syncLft = syncDir(nextSib, nextNode, insertBefore, \"lftSib\", \"lftNode\", \"rgtSib\", \"rgtNode\", insertAfter);\nvar syncRgt = syncDir(prevSib, prevNode, insertAfter, \"rgtSib\", \"rgtNode\", \"lftSib\", \"lftNode\", insertBefore);\n\nfunction syncChildren(node, donor) {\n\tvar obody\t= donor.body,\n\t\tparEl\t= node.el,\n\t\tbody\t= node.body,\n\t\tstate = {\n\t\t\tlftNode:\tbody[0],\n\t\t\trgtNode:\tbody[body.length - 1],\n\t\t\tlftSib:\t\t((obody)[0] || emptyObj).el,\n\t\t\trgtSib:\t\t(obody[obody.length - 1] || emptyObj).el,\n\t\t};\n\n\tconverge:\n\twhile (1) {\n//\t\tfrom_left:\n\t\twhile (1) {\n\t\t\tvar l = syncLft(node, parEl, body, state, null, false);\n\t\t\tif (l === BREAK) { break; }\n\t\t\tif (l === BREAK_ALL) { break converge; }\n\t\t}\n\n//\t\tfrom_right:\n\t\twhile (1) {\n\t\t\tvar r = syncRgt(node, parEl, body, state, state.lftNode, false);\n\t\t\tif (r === BREAK) { break; }\n\t\t\tif (r === BREAK_ALL) { break converge; }\n\t\t}\n\n\t\tsortDOM(node, parEl, body, state);\n\t\tbreak;\n\t}\n}\n\n// TODO: also use the state.rgtSib and state.rgtNode bounds, plus reduce LIS range\nfunction sortDOM(node, parEl, body, state) {\n\tvar kids = Array.prototype.slice.call(parEl.childNodes);\n\tvar domIdxs = [];\n\n\tfor (var k = 0; k < kids.length; k++) {\n\t\tvar n = kids[k]._node;\n\n\t\tif (n.parent === node)\n\t\t\t{ domIdxs.push(n.idx); }\n\t}\n\n\t// list of non-movable vnode indices (already in correct order in old dom)\n\tvar tombs = longestIncreasingSubsequence(domIdxs).map(function (i) { return domIdxs[i]; });\n\n\tfor (var i = 0; i < tombs.length; i++)\n\t\t{ body[tombs[i]]._lis = true; }\n\n\tstate.tombs = tombs;\n\n\twhile (1) {\n\t\tvar r = syncLft(node, parEl, body, state, null, true);\n\t\tif (r === BREAK_ALL) { break; }\n\t}\n}\n\nfunction alreadyAdopted(vnode) {\n\treturn vnode.el._node.parent !== vnode.parent;\n}\n\nfunction takeSeqIndex(n, obody, fromIdx) {\n\treturn obody[fromIdx];\n}\n\nfunction findSeqThorough(n, obody, fromIdx) {\t\t// pre-tested isView?\n\tfor (; fromIdx < obody.length; fromIdx++) {\n\t\tvar o = obody[fromIdx];\n\n\t\tif (o.vm != null) {\n\t\t\t// match by key & viewFn || vm\n\t\t\tif (n.type === VVIEW && o.vm.view === n.view && o.vm.key === n.key || n.type === VMODEL && o.vm === n.vm)\n\t\t\t\t{ return o; }\n\t\t}\n\t\telse if (!alreadyAdopted(o) && n.tag === o.tag && n.type === o.type && n.key === o.key && (n.flags & ~DEEP_REMOVE) === (o.flags & ~DEEP_REMOVE))\n\t\t\t{ return o; }\n\t}\n\n\treturn null;\n}\n\nfunction findHashKeyed(n, obody, fromIdx) {\n\treturn obody[obody._keys[n.key]];\n}\n\n/*\n// list must be a sorted list of vnodes by key\nfunction findBinKeyed(n, list) {\n\tvar idx = binaryKeySearch(list, n.key);\n\treturn idx > -1 ? list[idx] : null;\n}\n*/\n\n// have it handle initial hydrate? !donor?\n// types (and tags if ELEM) are assumed the same, and donor exists\nfunction patch(vnode, donor) {\n\tfireHook(donor.hooks, \"willRecycle\", donor, vnode);\n\n\tvar el = vnode.el = donor.el;\n\n\tvar obody = donor.body;\n\tvar nbody = vnode.body;\n\n\tel._node = vnode;\n\n\t// \"\" => \"\"\n\tif (vnode.type === TEXT && nbody !== obody) {\n\t\tel.nodeValue = nbody;\n\t\treturn;\n\t}\n\n\tif (vnode.attrs != null || donor.attrs != null)\n\t\t{ patchAttrs(vnode, donor, false); }\n\n\t// patch events\n\n\tvar oldIsArr = isArr(obody);\n\tvar newIsArr = isArr(nbody);\n\tvar lazyList = (vnode.flags & LAZY_LIST) === LAZY_LIST;\n\n//\tvar nonEqNewBody = nbody != null && nbody !== obody;\n\n\tif (oldIsArr) {\n\t\t// [] => []\n\t\tif (newIsArr || lazyList)\n\t\t\t{ patchChildren(vnode, donor); }\n\t\t// [] => \"\" | null\n\t\telse if (nbody !== obody) {\n\t\t\tif (nbody != null)\n\t\t\t\t{ el.textContent = nbody; }\n\t\t\telse\n\t\t\t\t{ clearChildren(donor); }\n\t\t}\n\t}\n\telse {\n\t\t// \"\" | null => []\n\t\tif (newIsArr) {\n\t\t\tclearChildren(donor);\n\t\t\thydrateBody(vnode);\n\t\t}\n\t\t// \"\" | null => \"\" | null\n\t\telse if (nbody !== obody) {\n\t\t\tif (el.firstChild)\n\t\t\t\t{ el.firstChild.nodeValue = nbody; }\n\t\t\telse\n\t\t\t\t{ el.textContent = nbody; }\n\t\t}\n\t}\n\n\tfireHook(donor.hooks, \"didRecycle\", donor, vnode);\n}\n\n// larger qtys of KEYED_LIST children will use binary search\n//const SEQ_FAILS_MAX = 100;\n\n// TODO: modify vtree matcher to work similar to dom reconciler for keyed from left -> from right -> head/tail -> binary\n// fall back to binary if after failing nri - nli > SEQ_FAILS_MAX\n// while-advance non-keyed fromIdx\n// [] => []\nfunction patchChildren(vnode, donor) {\n\tvar nbody\t\t= vnode.body,\n\t\tnlen\t\t= nbody.length,\n\t\tobody\t\t= donor.body,\n\t\tolen\t\t= obody.length,\n\t\tisLazy\t\t= (vnode.flags & LAZY_LIST) === LAZY_LIST,\n\t\tisFixed\t\t= (vnode.flags & FIXED_BODY) === FIXED_BODY,\n\t\tisKeyed\t\t= (vnode.flags & KEYED_LIST) === KEYED_LIST,\n\t\tdomSync\t\t= !isFixed && vnode.type === ELEMENT,\n\t\tdoFind\t\t= true,\n\t\tfind\t\t= (\n\t\t\tisKeyed ? findHashKeyed :\t\t\t\t// keyed lists/lazyLists\n\t\t\tisFixed || isLazy ? takeSeqIndex :\t\t// unkeyed lazyLists and FIXED_BODY\n\t\t\tfindSeqThorough\t\t\t\t\t\t\t// more complex stuff\n\t\t);\n\n\tif (isKeyed) {\n\t\tvar keys = {};\n\t\tfor (var i = 0; i < obody.length; i++)\n\t\t\t{ keys[obody[i].key] = i; }\n\t\tobody._keys = keys;\n\t}\n\n\tif (domSync && nlen === 0) {\n\t\tclearChildren(donor);\n\t\tif (isLazy)\n\t\t\t{ vnode.body = []; }\t// nbody.tpl(all);\n\t\treturn;\n\t}\n\n\tvar donor2,\n\t\tnode2,\n\t\tfoundIdx,\n\t\tpatched = 0,\n\t\teverNonseq = false,\n\t\tfromIdx = 0;\t\t// first unrecycled node (search head)\n\n\tif (isLazy) {\n\t\tvar fnode2 = {key: null};\n\t\tvar nbodyNew = Array(nlen);\n\t}\n\n\tfor (var i = 0; i < nlen; i++) {\n\t\tif (isLazy) {\n\t\t\tvar remake = false;\n\t\t\tvar diffRes = null;\n\n\t\t\tif (doFind) {\n\t\t\t\tif (isKeyed)\n\t\t\t\t\t{ fnode2.key = nbody.key(i); }\n\n\t\t\t\tdonor2 = find(fnode2, obody, fromIdx);\n\t\t\t}\n\n\t\t\tif (donor2 != null) {\n foundIdx = donor2.idx;\n\t\t\t\tdiffRes = nbody.diff(i, donor2);\n\n\t\t\t\t// diff returns same, so cheaply adopt vnode without patching\n\t\t\t\tif (diffRes === true) {\n\t\t\t\t\tnode2 = donor2;\n\t\t\t\t\tnode2.parent = vnode;\n\t\t\t\t\tnode2.idx = i;\n\t\t\t\t\tnode2._lis = false;\n\t\t\t\t}\n\t\t\t\t// diff returns new diffVals, so generate new vnode & patch\n\t\t\t\telse\n\t\t\t\t\t{ remake = true; }\n\t\t\t}\n\t\t\telse\n\t\t\t\t{ remake = true; }\n\n\t\t\tif (remake) {\n\t\t\t\tnode2 = nbody.tpl(i);\t\t\t// what if this is a VVIEW, VMODEL, injected element?\n\t\t\t\tpreProc(node2, vnode, i);\n\n\t\t\t\tnode2._diff = diffRes != null ? diffRes : nbody.diff(i);\n\n\t\t\t\tif (donor2 != null)\n\t\t\t\t\t{ patch(node2, donor2); }\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// TODO: flag tmp FIXED_BODY on unchanged nodes?\n\n\t\t\t\t// domSync = true;\t\tif any idx changes or new nodes added/removed\n\t\t\t}\n\n\t\t\tnbodyNew[i] = node2;\n\t\t}\n\t\telse {\n\t\t\tvar node2 = nbody[i];\n\t\t\tvar type2 = node2.type;\n\n\t\t\t// ELEMENT,TEXT,COMMENT\n\t\t\tif (type2 <= COMMENT) {\n\t\t\t\tif (donor2 = doFind && find(node2, obody, fromIdx)) {\n\t\t\t\t\tpatch(node2, donor2);\n\t\t\t\t\tfoundIdx = donor2.idx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (type2 === VVIEW) {\n\t\t\t\tif (donor2 = doFind && find(node2, obody, fromIdx)) {\t\t// update/moveTo\n\t\t\t\t\tfoundIdx = donor2.idx;\n\t\t\t\t\tvar vm = donor2.vm._update(node2.data, vnode, i);\t\t// withDOM\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\t{ var vm = createView(node2.view, node2.data, node2.key, node2.opts)._redraw(vnode, i, false); }\t// createView, no dom (will be handled by sync below)\n\n\t\t\t\ttype2 = vm.node.type;\n\t\t\t}\n\t\t\telse if (type2 === VMODEL) {\n\t\t\t\t// if the injected vm has never been rendered, this vm._update() serves as the\n\t\t\t\t// initial vtree creator, but must avoid hydrating (creating .el) because syncChildren()\n\t\t\t\t// which is responsible for mounting below (and optionally hydrating), tests .el presence\n\t\t\t\t// to determine if hydration & mounting are needed\n\t\t\t\tvar withDOM = isHydrated(node2.vm);\n\n\t\t\t\tvar vm = node2.vm._update(node2.data, vnode, i, withDOM);\n\t\t\t\ttype2 = vm.node.type;\n\t\t\t}\n\t\t}\n\n\t\t// found donor & during a sequential search ...at search head\n\t\tif (!isKeyed && donor2 != null) {\n\t\t\tif (foundIdx === fromIdx) {\n\t\t\t\t// advance head\n\t\t\t\tfromIdx++;\n\t\t\t\t// if all old vnodes adopted and more exist, stop searching\n\t\t\t\tif (fromIdx === olen && nlen > olen) {\n\t\t\t\t\t// short-circuit find, allow loop just create/init rest\n\t\t\t\t\tdonor2 = null;\n\t\t\t\t\tdoFind = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t\t{ everNonseq = true; }\n\n\t\t\tif (olen > 100 && everNonseq && ++patched % 10 === 0)\n\t\t\t\t{ while (fromIdx < olen && alreadyAdopted(obody[fromIdx]))\n\t\t\t\t\t{ fromIdx++; } }\n\t\t}\n\t}\n\n\t// replace List w/ new body\n\tif (isLazy)\n\t\t{ vnode.body = nbodyNew; }\n\n\tdomSync && syncChildren(vnode, donor);\n}\n\n// view + key serve as the vm's unique identity\nfunction ViewModel(view, data, key, opts) {\n\tvar vm = this;\n\n\tvm.view = view;\n\tvm.data = data;\n\tvm.key = key;\n\n\tif (opts) {\n\t\tvm.opts = opts;\n\t\tvm.config(opts);\n\t}\n\n\tvar out = isPlainObj(view) ? view : view.call(vm, vm, data, key, opts);\n\n\tif (isFunc(out))\n\t\t{ vm.render = out; }\n\telse {\n\t\tvm.render = out.render;\n\t\tvm.config(out);\n\t}\n\n\t// these must be wrapped here since they're debounced per view\n\tvm._redrawAsync = raft(function (_) { return vm.redraw(true); });\n\tvm._updateAsync = raft(function (newData) { return vm.update(newData, true); });\n\n\tvm.init && vm.init.call(vm, vm, vm.data, vm.key, opts);\n}\n\nvar ViewModelProto = ViewModel.prototype = {\n\tconstructor: ViewModel,\n\n\t_diff:\tnull,\t// diff cache\n\n\tinit:\tnull,\n\tview:\tnull,\n\tkey:\tnull,\n\tdata:\tnull,\n\tstate:\tnull,\n\tapi:\tnull,\n\topts:\tnull,\n\tnode:\tnull,\n\thooks:\tnull,\n\tonevent: noop,\n\trefs:\tnull,\n\trender:\tnull,\n\n\tmount: mount,\n\tunmount: unmount,\n\tconfig: function(opts) {\n\t\tvar t = this;\n\n\t\tif (opts.init)\n\t\t\t{ t.init = opts.init; }\n\t\tif (opts.diff)\n\t\t\t{ t.diff = opts.diff; }\n\t\tif (opts.onevent)\n\t\t\t{ t.onevent = opts.onevent; }\n\n\t\t// maybe invert assignment order?\n\t\tif (opts.hooks)\n\t\t\t{ t.hooks = assignObj(t.hooks || {}, opts.hooks); }\n\n\t\t{\n\t\t\tif (opts.onemit)\n\t\t\t\t{ t.onemit = assignObj(t.onemit || {}, opts.onemit); }\n\t\t}\n\t},\n\tparent: function() {\n\t\treturn getVm(this.node.parent);\n\t},\n\troot: function() {\n\t\tvar p = this.node;\n\n\t\twhile (p.parent)\n\t\t\t{ p = p.parent; }\n\n\t\treturn p.vm;\n\t},\n\tredraw: function(sync) {\n\t\tvar vm = this;\n\t\tsync ? vm._redraw(null, null, isHydrated(vm)) : vm._redrawAsync();\n\t\treturn vm;\n\t},\n\tupdate: function(newData, sync) {\n\t\tvar vm = this;\n\t\tsync ? vm._update(newData, null, null, isHydrated(vm)) : vm._updateAsync(newData);\n\t\treturn vm;\n\t},\n\n\t_update: updateSync,\n\t_redraw: redrawSync,\n\t_redrawAsync: null,\n\t_updateAsync: null,\n};\n\nfunction mount(el, isRoot) {\n\tvar vm = this;\n\n\tif (isRoot) {\n\t\tclearChildren({el: el, flags: 0});\n\n\t\tvm._redraw(null, null, false);\n\n\t\t// if placeholder node doesnt match root tag\n\t\tif (el.nodeName.toLowerCase() !== vm.node.tag) {\n\t\t\thydrate(vm.node);\n\t\t\tinsertBefore(el.parentNode, vm.node.el, el);\n\t\t\tel.parentNode.removeChild(el);\n\t\t}\n\t\telse\n\t\t\t{ insertBefore(el.parentNode, hydrate(vm.node, el), el); }\n\t}\n\telse {\n\t\tvm._redraw(null, null);\n\n\t\tif (el)\n\t\t\t{ insertBefore(el, vm.node.el); }\n\t}\n\n\tif (el)\n\t\t{ drainDidHooks(vm); }\n\n\treturn vm;\n}\n\n// asSub means this was called from a sub-routine, so don't drain did* hook queue\nfunction unmount(asSub) {\n\tvar vm = this;\n\n\tvar node = vm.node;\n\tvar parEl = node.el.parentNode;\n\n\t// edge bug: this could also be willRemove promise-delayed; should .then() or something to make sure hooks fire in order\n\tremoveChild(parEl, node.el);\n\n\tif (!asSub)\n\t\t{ drainDidHooks(vm); }\n}\n\nfunction reParent(vm, vold, newParent, newIdx) {\n\tif (newParent != null) {\n\t\tnewParent.body[newIdx] = vold;\n\t\tvold.idx = newIdx;\n\t\tvold.parent = newParent;\n\t\tvold._lis = false;\n\t}\n\treturn vm;\n}\n\nfunction redrawSync(newParent, newIdx, withDOM) {\n\tvar isRedrawRoot = newParent == null;\n\tvar vm = this;\n\tvar isMounted = vm.node && vm.node.el && vm.node.el.parentNode;\n\n\tvar vold = vm.node, oldDiff, newDiff;\n\n\tif (vm.diff != null) {\n\t\toldDiff = vm._diff;\n\t\tvm._diff = newDiff = vm.diff(vm, vm.data);\n\n\t\tif (vold != null) {\n\t\t\tvar cmpFn = isArr(oldDiff) ? cmpArr : cmpObj;\n\t\t\tvar isSame = oldDiff === newDiff || cmpFn(oldDiff, newDiff);\n\n\t\t\tif (isSame)\n\t\t\t\t{ return reParent(vm, vold, newParent, newIdx); }\n\t\t}\n\t}\n\n\tisMounted && fireHook(vm.hooks, \"willRedraw\", vm, vm.data);\n\n\tvar vnew = vm.render.call(vm, vm, vm.data, oldDiff, newDiff);\n\n\tif (vnew === vold)\n\t\t{ return reParent(vm, vold, newParent, newIdx); }\n\n\t// todo: test result of willRedraw hooks before clearing refs\n\tvm.refs = null;\n\n\t// always assign vm key to root vnode (this is a de-opt)\n\tif (vm.key != null && vnew.key !== vm.key)\n\t\t{ vnew.key = vm.key; }\n\n\tvm.node = vnew;\n\n\tif (newParent) {\n\t\tpreProc(vnew, newParent, newIdx, vm);\n\t\tnewParent.body[newIdx] = vnew;\n\t}\n\telse if (vold && vold.parent) {\n\t\tpreProc(vnew, vold.parent, vold.idx, vm);\n\t\tvold.parent.body[vold.idx] = vnew;\n\t}\n\telse\n\t\t{ preProc(vnew, null, null, vm); }\n\n\tif (withDOM !== false) {\n\t\tif (vold) {\n\t\t\t// root node replacement\n\t\t\tif (vold.tag !== vnew.tag || vold.key !== vnew.key) {\n\t\t\t\t// hack to prevent the replacement from triggering mount/unmount\n\t\t\t\tvold.vm = vnew.vm = null;\n\n\t\t\t\tvar parEl = vold.el.parentNode;\n\t\t\t\tvar refEl = nextSib(vold.el);\n\t\t\t\tremoveChild(parEl, vold.el);\n\t\t\t\tinsertBefore(parEl, hydrate(vnew), refEl);\n\n\t\t\t\t// another hack that allows any higher-level syncChildren to set\n\t\t\t\t// reconciliation bounds using a live node\n\t\t\t\tvold.el = vnew.el;\n\n\t\t\t\t// restore\n\t\t\t\tvnew.vm = vm;\n\t\t\t}\n\t\t\telse\n\t\t\t\t{ patch(vnew, vold); }\n\t\t}\n\t\telse\n\t\t\t{ hydrate(vnew); }\n\t}\n\n\tisMounted && fireHook(vm.hooks, \"didRedraw\", vm, vm.data);\n\n\tif (isRedrawRoot && isMounted)\n\t\t{ drainDidHooks(vm); }\n\n\treturn vm;\n}\n\n// this also doubles as moveTo\n// TODO? @withRedraw (prevent redraw from firing)\nfunction updateSync(newData, newParent, newIdx, withDOM) {\n\tvar vm = this;\n\n\tif (newData != null) {\n\t\tif (vm.data !== newData) {\n\t\t\tfireHook(vm.hooks, \"willUpdate\", vm, newData);\n\t\t\tvm.data = newData;\n\n\t\t\t\n\t\t}\n\t}\n\n\treturn vm._redraw(newParent, newIdx, withDOM);\n}\n\nfunction defineElement(tag, arg1, arg2, flags) {\n\tvar attrs, body;\n\n\tif (arg2 == null) {\n\t\tif (isPlainObj(arg1))\n\t\t\t{ attrs = arg1; }\n\t\telse\n\t\t\t{ body = arg1; }\n\t}\n\telse {\n\t\tattrs = arg1;\n\t\tbody = arg2;\n\t}\n\n\treturn initElementNode(tag, attrs, body, flags);\n}\n\n//export const XML_NS = \"http://www.w3.org/2000/xmlns/\";\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\n\nfunction defineSvgElement(tag, arg1, arg2, flags) {\n\tvar n = defineElement(tag, arg1, arg2, flags);\n\tn.ns = SVG_NS;\n\treturn n;\n}\n\nfunction defineComment(body) {\n\tvar node = new VNode;\n\tnode.type = COMMENT;\n\tnode.body = body;\n\treturn node;\n}\n\n// placeholder for declared views\nfunction VView(view, data, key, opts) {\n\tthis.view = view;\n\tthis.data = data;\n\tthis.key = key;\n\tthis.opts = opts;\n}\n\nVView.prototype = {\n\tconstructor: VView,\n\n\ttype: VVIEW,\n\tview: null,\n\tdata: null,\n\tkey: null,\n\topts: null,\n};\n\nfunction defineView(view, data, key, opts) {\n\treturn new VView(view, data, key, opts);\n}\n\n// placeholder for injected ViewModels\nfunction VModel(vm) {\n\tthis.vm = vm;\n}\n\nVModel.prototype = {\n\tconstructor: VModel,\n\n\ttype: VMODEL,\n\tvm: null,\n};\n\nfunction injectView(vm) {\n//\tif (vm.node == null)\n//\t\tvm._redraw(null, null, false);\n\n//\treturn vm.node;\n\n\treturn new VModel(vm);\n}\n\nfunction injectElement(el) {\n\tvar node = new VNode;\n\tnode.type = ELEMENT;\n\tnode.el = node.key = el;\n\treturn node;\n}\n\nfunction lazyList(items, cfg) {\n\tvar len = items.length;\n\n\tvar self = {\n\t\titems: items,\n\t\tlength: len,\n\t\t// defaults to returning item identity (or position?)\n\t\tkey: function(i) {\n\t\t\treturn cfg.key(items[i], i);\n\t\t},\n\t\t// default returns 0?\n\t\tdiff: function(i, donor) {\n\t\t\tvar newVals = cfg.diff(items[i], i);\n\t\t\tif (donor == null)\n\t\t\t\t{ return newVals; }\n\t\t\tvar oldVals = donor._diff;\n\t\t\tvar same = newVals === oldVals || isArr(oldVals) ? cmpArr(newVals, oldVals) : cmpObj(newVals, oldVals);\n\t\t\treturn same || newVals;\n\t\t},\n\t\ttpl: function(i) {\n\t\t\treturn cfg.tpl(items[i], i);\n\t\t},\n\t\tmap: function(tpl) {\n\t\t\tcfg.tpl = tpl;\n\t\t\treturn self;\n\t\t},\n\t\tbody: function(vnode) {\n\t\t\tvar nbody = Array(len);\n\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar vnode2 = self.tpl(i);\n\n\t\t\t//\tif ((vnode.flags & KEYED_LIST) === KEYED_LIST && self. != null)\n\t\t\t//\t\tvnode2.key = getKey(item);\n\n\t\t\t\tvnode2._diff = self.diff(i);\t\t\t// holds oldVals for cmp\n\n\t\t\t\tnbody[i] = vnode2;\n\n\t\t\t\t// run preproc pass (should this be just preProc in above loop?) bench\n\t\t\t\tpreProc(vnode2, vnode, i);\n\t\t\t}\n\n\t\t\t// replace List with generated body\n\t\t\tvnode.body = nbody;\n\t\t}\n\t};\n\n\treturn self;\n}\n\nvar nano = {\n\tconfig: config,\n\n\tViewModel: ViewModel,\n\tVNode: VNode,\n\n\tcreateView: createView,\n\n\tdefineElement: defineElement,\n\tdefineSvgElement: defineSvgElement,\n\tdefineText: defineText,\n\tdefineComment: defineComment,\n\tdefineView: defineView,\n\n\tinjectView: injectView,\n\tinjectElement: injectElement,\n\n\tlazyList: lazyList,\n\n\tFIXED_BODY: FIXED_BODY,\n\tDEEP_REMOVE: DEEP_REMOVE,\n\tKEYED_LIST: KEYED_LIST,\n\tLAZY_LIST: LAZY_LIST,\n};\n\nfunction protoPatch(n, doRepaint) {\n\tpatch$1(this, n, doRepaint);\n}\n\n// newNode can be either {class: style: } or full new VNode\n// will/didPatch hooks?\nfunction patch$1(o, n, doRepaint) {\n\tif (n.type != null) {\n\t\t// no full patching of view roots, just use redraw!\n\t\tif (o.vm != null)\n\t\t\t{ return; }\n\n\t\tpreProc(n, o.parent, o.idx, null);\n\t\to.parent.body[o.idx] = n;\n\t\tpatch(n, o);\n\t\tdoRepaint && repaint(n);\n\t\tdrainDidHooks(getVm(n));\n\t}\n\telse {\n\t\t// TODO: re-establish refs\n\n\t\t// shallow-clone target\n\t\tvar donor = Object.create(o);\n\t\t// fixate orig attrs\n\t\tdonor.attrs = assignObj({}, o.attrs);\n\t\t// assign new attrs into live targ node\n\t\tvar oattrs = assignObj(o.attrs, n);\n\t\t// prepend any fixed shorthand class\n\t\tif (o._class != null) {\n\t\t\tvar aclass = oattrs.class;\n\t\t\toattrs.class = aclass != null && aclass !== \"\" ? o._class + \" \" + aclass : o._class;\n\t\t}\n\n\t\tpatchAttrs(o, donor);\n\n\t\tdoRepaint && repaint(o);\n\t}\n}\n\nVNodeProto.patch = protoPatch;\n\nfunction nextSubVms(n, accum) {\n\tvar body = n.body;\n\n\tif (isArr(body)) {\n\t\tfor (var i = 0; i < body.length; i++) {\n\t\t\tvar n2 = body[i];\n\n\t\t\tif (n2.vm != null)\n\t\t\t\t{ accum.push(n2.vm); }\n\t\t\telse\n\t\t\t\t{ nextSubVms(n2, accum); }\n\t\t}\n\t}\n\n\treturn accum;\n}\n\nfunction defineElementSpread(tag) {\n\tvar args = arguments;\n\tvar len = args.length;\n\tvar body, attrs;\n\n\tif (len > 1) {\n\t\tvar bodyIdx = 1;\n\n\t\tif (isPlainObj(args[1])) {\n\t\t\tattrs = args[1];\n\t\t\tbodyIdx = 2;\n\t\t}\n\n\t\tif (len === bodyIdx + 1 && (isVal(args[bodyIdx]) || isArr(args[bodyIdx]) || attrs && (attrs._flags & LAZY_LIST) === LAZY_LIST))\n\t\t\t{ body = args[bodyIdx]; }\n\t\telse\n\t\t\t{ body = sliceArgs(args, bodyIdx); }\n\t}\n\n\treturn initElementNode(tag, attrs, body);\n}\n\nfunction defineSvgElementSpread() {\n\tvar n = defineElementSpread.apply(null, arguments);\n\tn.ns = SVG_NS;\n\treturn n;\n}\n\nViewModelProto.emit = emit;\nViewModelProto.onemit = null;\n\nViewModelProto.body = function() {\n\treturn nextSubVms(this.node, []);\n};\n\nnano.defineElementSpread = defineElementSpread;\nnano.defineSvgElementSpread = defineSvgElementSpread;\n\nreturn nano;\n\n})));\n//# sourceMappingURL=domvm.micro.js.map\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nif (Element && !Element.prototype.matches) {\n var proto = Element.prototype;\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector || proto.msMatchesSelector ||\n proto.oMatchesSelector || proto.webkitMatchesSelector;\n}\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(42));\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Cell_1 = __webpack_require__(43);\nvar dom_1 = __webpack_require__(0);\nvar Layout = /** @class */ (function (_super) {\n __extends(Layout, _super);\n function Layout(parent, config) {\n var _this = _super.call(this, parent, config) || this;\n // root layout\n _this._root = _this.config.parent || _this;\n _this._all = {};\n _this._parseConfig();\n if (_this.config.views) {\n _this.config.activeView = _this.config.activeView || _this._cells[0].id;\n _this._isViewLayout = true;\n }\n if (!config.parent) {\n var view = dom_1.create({ render: function () { return _this.toVDOM(); } }, _this);\n _this.mount(parent, view);\n }\n return _this;\n }\n Layout.prototype.cell = function (id) {\n // FIXME\n return this._root._all[id];\n };\n Layout.prototype.toVDOM = function () {\n if (this._isViewLayout) {\n var roots = [this.cell(this.config.activeView).toVDOM()];\n return _super.prototype.toVDOM.call(this, roots);\n }\n var nodes = [];\n this._cells.forEach(function (cell) {\n var node = cell.toVDOM();\n if (Array.isArray(node)) {\n nodes = nodes.concat(node);\n }\n else {\n nodes.push(node);\n }\n });\n return _super.prototype.toVDOM.call(this, nodes);\n };\n Layout.prototype.removeCell = function (id) {\n var root = (this.config.parent || this);\n if (root !== this) {\n return root.removeCell(id);\n }\n // this === root layout\n var view = this.cell(id);\n if (view) {\n var parent_1 = view.getParent();\n delete this._all[id];\n parent_1._cells = parent_1._cells.filter(function (cell) { return cell.id !== id; });\n parent_1.paint();\n }\n };\n Layout.prototype.addCell = function (config, index) {\n if (index === void 0) { index = -1; }\n var view = this._createCell(config);\n if (index < 0) {\n index = this._cells.length + index + 1;\n }\n this._cells.splice(index, 0, view);\n this.paint();\n };\n Layout.prototype.getId = function (index) {\n if (index < 0) {\n index = this._cells.length + index;\n }\n return this._cells[index] ? this._cells[index].id : undefined;\n };\n Layout.prototype.getRefs = function (name) {\n return this._root.getRootView().refs[name];\n };\n Layout.prototype._getCss = function (content) {\n if (content) {\n return (this._xLayout ? \" dhx_layout-columns\" : \" dhx_layout-rows\");\n }\n else {\n return (this.config.parent ? _super.prototype._getCss.call(this) : \"dhx_widget dhx_layout\") +\n (this.config.full\n ? (!this.config.parent\n ? \" dhx_layout-cell\"\n : \"\")\n : (this._xLayout ? \" dhx_layout-columns\" : \" dhx_layout-rows\"));\n }\n };\n Layout.prototype._parseConfig = function () {\n var _this = this;\n var config = this.config;\n var cells = config.rows || config.cols || config.views;\n this._xLayout = !config.rows;\n this._cells = cells.map(function (a) { return _this._createCell(a); });\n };\n Layout.prototype._createCell = function (cell) {\n var view;\n if (cell.rows || cell.cols || cell.views) {\n cell.parent = this._root;\n view = new Layout(this, cell);\n }\n else {\n view = new Cell_1.Cell(this, cell);\n }\n // FIxME\n this._root._all[view.id] = view;\n return view;\n };\n return Layout;\n}(Cell_1.Cell));\nexports.Layout = Layout;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar dom_1 = __webpack_require__(0);\nvar view_1 = __webpack_require__(8);\nvar resizeMode;\n(function (resizeMode) {\n resizeMode[resizeMode[\"unknown\"] = 0] = \"unknown\";\n resizeMode[resizeMode[\"percents\"] = 1] = \"percents\";\n resizeMode[resizeMode[\"pixels\"] = 2] = \"pixels\";\n resizeMode[resizeMode[\"mixedpx1\"] = 3] = \"mixedpx1\";\n resizeMode[resizeMode[\"mixedpx2\"] = 4] = \"mixedpx2\";\n resizeMode[resizeMode[\"mixedperc1\"] = 5] = \"mixedperc1\";\n resizeMode[resizeMode[\"mixedperc2\"] = 6] = \"mixedperc2\";\n})(resizeMode || (resizeMode = {}));\nfunction getResizeMode(dir, conf1, conf2) {\n var field = dir ? \"width\" : \"height\";\n var is1perc = conf1[field] && conf1[field].indexOf(\"%\") !== -1;\n var is2perc = conf2[field] && conf2[field].indexOf(\"%\") !== -1;\n var is1px = conf1[field] && conf1[field].indexOf(\"px\") !== -1;\n var is2px = conf2[field] && conf2[field].indexOf(\"px\") !== -1;\n if (is1perc && is2perc) {\n return resizeMode.percents;\n }\n if (is1px && is2px) {\n return resizeMode.pixels;\n }\n if (is1px && !is2px) {\n return resizeMode.mixedpx1;\n }\n if (is2px && !is1px) {\n return resizeMode.mixedpx2;\n }\n if (is1perc) {\n return resizeMode.mixedperc1;\n }\n if (is2perc) {\n return resizeMode.mixedperc2;\n }\n return resizeMode.unknown;\n}\nfunction getBlockRange(block1, block2, isXLayout) {\n if (isXLayout === void 0) { isXLayout = true; }\n if (isXLayout) {\n return {\n min: block1.left + window.pageXOffset,\n max: block2.right + window.pageXOffset\n };\n }\n return {\n min: block1.top + window.pageYOffset,\n max: block2.bottom + window.pageYOffset\n };\n}\nvar Cell = /** @class */ (function (_super) {\n __extends(Cell, _super);\n function Cell(parent, config) {\n var _this = _super.call(this, parent, config) || this;\n var p = parent;\n if (p && p.isVisible) {\n _this._parent = p;\n }\n _this.config.full = _this.config.full === undefined ? Boolean(_this.config.header || _this.config.footer) : _this.config.full;\n _this._initHandlers();\n _this.id = _this.config.id || core_1.uid();\n return _this;\n }\n Cell.prototype.paint = function () {\n if (this.isVisible()) {\n var view = this.getRootView();\n if (view) {\n view.redraw();\n }\n else {\n this._parent.paint();\n }\n }\n };\n Cell.prototype.isVisible = function () {\n // top level node\n if (!this._parent) {\n if (this._container && this._container.tagName) {\n return true;\n }\n return false;\n }\n // check active view in case of multiview\n var active = this._parent.config.activeView;\n if (active && active !== this.id) {\n return false;\n }\n // check that all parents of the cell are visible as well\n return !this.config.hidden && (!this._parent || this._parent.isVisible());\n };\n Cell.prototype.hide = function () {\n this.config.hidden = true;\n if (this._parent && this._parent.paint) {\n this._parent.paint();\n }\n };\n Cell.prototype.show = function () {\n if (this._parent && this._parent.config.activeView) {\n this._parent.config.activeView = this.id;\n }\n else {\n this.config.hidden = false;\n }\n if (this._parent && !this._parent.isVisible()) {\n this._parent.show();\n }\n this.paint();\n };\n Cell.prototype.getParent = function () {\n return this._parent;\n };\n Cell.prototype.destructor = function () {\n this.config = null;\n };\n Cell.prototype.getWidget = function () {\n return this._ui;\n };\n Cell.prototype.getCellView = function () {\n return this._parent && this._parent.getRefs(this._uid);\n };\n Cell.prototype.attach = function (name, config) {\n if (typeof name === \"object\") {\n name._container = this;\n this._ui = name;\n }\n else if (typeof name === \"string\") {\n this._ui = new window.dhx[name](null, config);\n }\n else if (typeof name === \"function\") {\n if (name.prototype instanceof view_1.View) {\n this._ui = new name(null, config);\n }\n else {\n this._ui = {\n getRootView: function () {\n return name(config);\n }\n };\n }\n }\n this.paint();\n return this._ui;\n };\n Cell.prototype.toVDOM = function (nodes) {\n var _a;\n var conf = this.config;\n if (conf.hidden) {\n return;\n }\n var style = this._calculateStyle();\n var kids;\n if (this.config.html) {\n kids = [dom_1.el(\".dhx_inner-html-content\", { \".innerHTML\": this.config.html })];\n }\n else if (this._ui) {\n var view = this._ui.getRootView();\n if (view.render) {\n view = dom_1.inject(view);\n }\n kids = [view];\n }\n else {\n kids = nodes || null;\n }\n var resizer = this.config.canResize && !this._isLastCell() ?\n dom_1.el(\".dhx_layout-resizer.\" + (this._isXDirection() ? \"dhx_layout-resizer--x\" : \"dhx_layout-resizer--y\"), __assign({}, this._resizerHandlers, { _ref: \"resizer_\" + this._uid }), [dom_1.el(\"span.dhx_layout-resizer__icon\", {\n class: \"dxi \" + (this._isXDirection() ? \"dxi-dots-vertical\" : \"dxi-dots-horizontal\")\n })]) : null;\n var handlers = {};\n if (this.config.on) {\n for (var key in this.config.on) {\n handlers[\"on\" + key] = this.config.on[key];\n }\n }\n var cell = dom_1.el(\"div\", __assign((_a = { _key: this._uid, style: style, _ref: this._uid, id: this.config.id || this._uid }, _a[\"aria-labelledby\"] = this.config.id ? \"tab-content-\" + this.config.id : null, _a), handlers, { class: \"\" + this._getCss(false) + (this.config.css ? \" \" + this.config.css : \"\") }), this.config.full ? [\n this.config.header ? dom_1.el(\"div\", {\n class: \"dhx_layout-cell-header\" +\n (\"\" + (this.config.collapsed ? \" dhx_layout-cell-header--collapsed\" : \"\")) +\n (\"\" + (this.config.canCollapse ? \" dhx_layout-cell-header--collapseble\" : \"\")),\n onclick: this._handlers.collapse\n }, [\n this.config.headerIcon && dom_1.el(\"span.dhx_layout-cell-header__icon.dxi.\" + this.config.headerIcon),\n dom_1.el(\".dhx_layout-cell-header__title\", this.config.header),\n this.config.canCollapse ? dom_1.el(\"div.dhx_layout-cell-header__collapse-icon\", {\n \"tabindex\": \"0\",\n \"role\": \"button\",\n \"aria-label\": \"collapse\",\n \"class\": \"dxi dxi-chevron-down\"\n }) : null,\n ]) : null,\n !this.config.collapsed ? dom_1.el(\"div\", {\n class: \"dhx_layout-cell--content\" + this._getCss(true),\n }, kids) : null,\n ] : kids);\n return resizer ? [\n cell,\n resizer\n ] : cell;\n };\n Cell.prototype._getCss = function (content) {\n return \"dhx_layout-cell \";\n };\n Cell.prototype._initHandlers = function () {\n var _this = this;\n var blockOpts = {\n left: null,\n top: null,\n isActive: false,\n range: null,\n xLayout: null,\n nextCell: null,\n size: null,\n resizerLength: null,\n mode: null,\n percentsum: null\n };\n var mouseUp = function () {\n blockOpts.isActive = false;\n document.body.classList.remove(\"dhx_no-select\");\n document.removeEventListener(\"mouseup\", mouseUp);\n document.removeEventListener(\"mousemove\", mouseMove);\n };\n var mouseMove = function (e) {\n if (!blockOpts.isActive || blockOpts.mode === resizeMode.unknown) {\n return;\n }\n var newValue = blockOpts.xLayout ? e.x - blockOpts.range.min - window.pageXOffset :\n e.y - blockOpts.range.min - window.pageYOffset;\n var prop = blockOpts.xLayout ? \"width\" : \"height\";\n if (newValue < 0) {\n newValue = blockOpts.resizerLength / 2;\n }\n else if (newValue > blockOpts.size) {\n newValue = blockOpts.size - blockOpts.resizerLength;\n }\n switch (blockOpts.mode) {\n case resizeMode.pixels:\n _this.config[prop] = newValue - blockOpts.resizerLength / 2 + \"px\";\n blockOpts.nextCell.config[prop] = blockOpts.size - newValue - blockOpts.resizerLength / 2 + \"px\";\n break;\n case resizeMode.mixedpx1:\n _this.config[prop] = newValue - blockOpts.resizerLength / 2 + \"px\";\n break;\n case resizeMode.mixedpx2:\n blockOpts.nextCell.config[prop] = blockOpts.size - newValue - blockOpts.resizerLength / 2 + \"px\";\n break;\n case resizeMode.percents:\n _this.config[prop] = newValue / blockOpts.size * blockOpts.percentsum + \"%\";\n blockOpts.nextCell.config[prop] = (blockOpts.size - newValue) / blockOpts.size * blockOpts.percentsum + \"%\";\n break;\n case resizeMode.mixedperc1:\n _this.config[prop] = newValue / blockOpts.size * blockOpts.percentsum + \"%\";\n break;\n case resizeMode.mixedperc2:\n blockOpts.nextCell.config[prop] = (blockOpts.size - newValue) / blockOpts.size * blockOpts.percentsum + \"%\";\n break;\n }\n _this.paint();\n };\n this._handlers = {\n collapse: function () {\n if (!_this.config.canCollapse) {\n return;\n }\n _this.config.collapsed = !_this.config.collapsed;\n _this.paint();\n }\n };\n this._resizerHandlers = {\n onmousedown: function (e) {\n if (e.which === 3) {\n return;\n }\n if (blockOpts.isActive) {\n mouseUp();\n }\n document.body.classList.add(\"dhx_no-select\");\n var block = _this.getCellView();\n var nextCell = _this._getNextCell();\n var nextBlock = nextCell.getCellView();\n var resizerBlock = _this._getResizerView();\n var blockOffsets = block.el.getBoundingClientRect();\n var resizerOffsets = resizerBlock.el.getBoundingClientRect();\n var nextBlockOffsets = nextBlock.el.getBoundingClientRect();\n blockOpts.xLayout = _this._isXDirection();\n blockOpts.left = blockOffsets.left + window.pageXOffset;\n blockOpts.top = blockOffsets.top + window.pageYOffset;\n blockOpts.range = getBlockRange(blockOffsets, nextBlockOffsets, blockOpts.xLayout);\n blockOpts.size = blockOpts.range.max - blockOpts.range.min;\n blockOpts.isActive = true;\n blockOpts.nextCell = nextCell;\n blockOpts.resizerLength = blockOpts.xLayout ? resizerOffsets.width : resizerOffsets.height;\n blockOpts.mode = getResizeMode(blockOpts.xLayout, _this.config, nextCell.config);\n if (blockOpts.mode === resizeMode.percents) {\n var field = blockOpts.xLayout ? \"width\" : \"height\";\n blockOpts.percentsum = parseFloat(_this.config[field]) + parseFloat(nextCell.config[field]);\n }\n if (blockOpts.mode === resizeMode.mixedperc1) {\n var field = blockOpts.xLayout ? \"width\" : \"height\";\n blockOpts.percentsum = 1 / (blockOffsets[field] / (blockOpts.size - blockOpts.resizerLength)) * parseFloat(_this.config[field]);\n }\n if (blockOpts.mode === resizeMode.mixedperc2) {\n var field = blockOpts.xLayout ? \"width\" : \"height\";\n blockOpts.percentsum = 1 / (nextBlockOffsets[field] / (blockOpts.size - blockOpts.resizerLength)) * parseFloat(nextCell.config[field]);\n }\n document.addEventListener(\"mouseup\", mouseUp);\n document.addEventListener(\"mousemove\", mouseMove);\n },\n ondragstart: function (e) { return e.preventDefault(); }\n };\n };\n Cell.prototype._isLastCell = function () {\n var parent = this._parent;\n return parent && parent._cells.indexOf(this) === parent._cells.length - 1;\n };\n Cell.prototype._getNextCell = function () {\n var parent = this._parent;\n var index = parent._cells.indexOf(this);\n return parent._cells[index + 1];\n };\n Cell.prototype._getResizerView = function () {\n return this._parent.getRefs(\"resizer_\" + this._uid);\n };\n Cell.prototype._isXDirection = function () {\n return this._parent && this._parent._xLayout;\n };\n Cell.prototype._calculateStyle = function () {\n var conf = this.config;\n var style = {};\n if (this._isXDirection()) {\n if (this.config.width !== undefined) {\n style.flexBasis = conf.width;\n }\n if (conf.height !== undefined) {\n style.height = conf.height;\n }\n }\n else {\n if (this.config.height !== undefined) {\n style.flexBasis = conf.height;\n }\n if (conf.width !== undefined) {\n style.width = conf.width;\n }\n }\n return style;\n };\n return Cell;\n}(view_1.View));\nexports.Cell = Cell;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(3);\nvar dom_1 = __webpack_require__(0);\nvar html_1 = __webpack_require__(1);\nvar ts_menu_1 = __webpack_require__(22);\nvar ts_message_1 = __webpack_require__(28);\nfunction addInGroups(groups, item) {\n if (groups[item.group]) {\n if (item.active) {\n groups[item.group].active = item.id;\n }\n groups[item.group].elements.push(item.id);\n }\n else {\n groups[item.group] = {\n active: item.active ? item.id : null,\n elements: [item.id]\n };\n }\n}\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar(element, config) {\n var _this = _super.call(this, element, core_1.extend({\n navigationType: \"click\"\n }, config)) || this;\n _this._listeners = {\n input: function (e) {\n var id = html_1.locate(e);\n _this.data.update(id, { value: e.target.value });\n },\n tooltip: function (e) {\n var elem = html_1.locateNode(e);\n if (!elem) {\n return;\n }\n var id = elem.getAttribute(\"dhx_id\");\n var item = _this.data.getItem(id);\n if (item.tooltip) {\n ts_message_1.tooltip(item.tooltip, {\n node: elem,\n position: ts_message_1.Position.bottom\n });\n }\n }\n };\n _this._currentRoot = null;\n _this._factory = ts_menu_1.createFactory(ts_menu_1.ItemType.button);\n var render = function () { return _this._draw(); };\n _this.mount(element, dom_1.create({ render: render }));\n return _this;\n }\n Toolbar.prototype.getValues = function () {\n var state = {};\n this.data.eachChild(this.data.getRoot(), function (item) {\n if (item.twoState) {\n state[item.id] = item.active;\n }\n else if (item.type === ts_menu_1.ItemType.input) {\n state[item.id] = item.value;\n }\n }, false);\n for (var key in this._groups) {\n if (this._groups[key].active) {\n state[key] = this._groups[key].active;\n }\n }\n return state;\n };\n Toolbar.prototype.setValues = function (state) {\n for (var key in state) {\n if (this._groups[key]) {\n if (this._groups[key].active) {\n this.data.update(this._groups[key].active, { active: false });\n this._groups[key].active = state[key];\n this.data.update(state[key], { active: true });\n }\n }\n else {\n var item = this.data.getItem(key);\n if (item.type === ts_menu_1.ItemType.input) {\n this.data.update(key, { value: state[key] });\n }\n else {\n this.data.update(key, { active: state[key] });\n }\n }\n }\n };\n Toolbar.prototype._draw = function () {\n var _this = this;\n return dom_1.el(\"nav.dhx_toolbar.dhx_widget\" + (this.config.css ? \".\" + this.config.css : \"\"), [\n dom_1.el(\"ul.dhx_toolbar__list\", {\n dhx_widget_id: this._uid,\n tabindex: 0,\n onclick: this._handlers.onclick,\n onmousedown: this._handlers.onmousedown,\n oninput: this._listeners.input,\n onmouseover: this._listeners.tooltip,\n _hooks: {\n didInsert: function (node) {\n node.el.addEventListener(\"keyup\", function (e) {\n if (e.which !== 9) {\n return;\n }\n var elem = html_1.locateNode(document.activeElement);\n if (!elem) {\n return;\n }\n var id = elem.getAttribute(\"dhx_id\");\n var item = _this.data.getItem(id);\n if (item.tooltip) {\n ts_message_1.tooltip(item.tooltip, {\n node: elem,\n position: ts_message_1.Position.bottom,\n force: true\n });\n }\n }, true);\n }\n }\n }, this.data.map(function (item) { return _this._factory(item, _this.events); }, this.data.getRoot(), false))\n ]);\n };\n Toolbar.prototype._getMode = function (item, root) {\n return item.id === root ? \"bottom\" : \"right\";\n };\n Toolbar.prototype._close = function () {\n this._activePosition = null;\n this._currentRoot = null;\n _super.prototype._close.call(this);\n };\n Toolbar.prototype._normalizeData = function () {\n var _this = this;\n var root = this.data.getRoot();\n var groups = {};\n this.data.eachChild(root, function (item) {\n if (item.type === ts_menu_1.ItemType.separator) {\n item.$menuSeparator = item.parent !== _this.data.getRoot();\n }\n if (_this.data.haveItems(item.id)) {\n _this.data.eachChild(item.id, function (child) { return child.type = child.type || ts_menu_1.ItemType.menuItem; }, false);\n if (item.parent !== root) {\n item.$openIcon = \"right\";\n }\n else {\n item.$openIcon = \"bot\";\n }\n }\n if (item.group) {\n addInGroups(groups, item);\n }\n }, true);\n this._groups = groups;\n };\n Toolbar.prototype._setRoot = function (id) {\n if (this.data.getParent(id) === this.data.getRoot()) {\n this._currentRoot = id;\n }\n };\n return Toolbar;\n}(ts_menu_1.MenuBase));\nexports.Toolbar = Toolbar;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar html_1 = __webpack_require__(1);\nvar MenuBase_1 = __webpack_require__(17);\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n function ContextMenu() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._isContextMenu = true;\n return _this;\n }\n ContextMenu.prototype.showAt = function (elem, showAt) {\n if (showAt === void 0) { showAt = \"bottom\"; }\n if (elem instanceof MouseEvent) {\n this._changeActivePosition({\n left: window.pageXOffset + elem.x + 1,\n right: window.pageXOffset + elem.x + 1,\n top: window.pageYOffset + elem.y,\n bottom: window.pageYOffset + elem.y\n }, showAt);\n }\n else {\n var node = html_1.toNode(elem);\n this._changeActivePosition(html_1.getRealPosition(node), showAt);\n }\n };\n ContextMenu.prototype._close = function () {\n this._activeMenu = null;\n this._changeActivePosition(null, null);\n };\n ContextMenu.prototype._normalizeData = function () {\n var _this = this;\n var root = this.data.getRoot();\n this.data.eachChild(root, function (item) {\n if (_this.data.haveItems(item.id)) {\n item.$openIcon = \"right\";\n }\n }, true);\n };\n ContextMenu.prototype._getMode = function (_item, _root, active) {\n return active ? this._mode : \"right\";\n };\n ContextMenu.prototype._changeActivePosition = function (position, mode) {\n this._activePosition = position;\n this._mode = mode;\n this._listenOuterClick();\n this.paint();\n };\n return ContextMenu;\n}(MenuBase_1.MenuBase));\nexports.ContextMenu = ContextMenu;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getHotKeyCode(code) {\n var matches = code.toLowerCase().match(/\\w+/g);\n var comp = 0;\n var key = \"\";\n for (var i = 0; i < matches.length; i++) {\n var check = matches[i];\n if (check === \"ctrl\") {\n comp += 4;\n }\n else if (check === \"shift\") {\n comp += 2;\n }\n else if (check === \"alt\") {\n comp += 1;\n }\n else {\n key = check;\n }\n }\n return comp + key;\n}\nvar KeyManager = /** @class */ (function () {\n function KeyManager() {\n var _this = this;\n this._keysStorage = {};\n document.addEventListener(\"keydown\", function (e) {\n var comp = (e.ctrlKey || e.metaKey ? 4 : 0) + (e.shiftKey ? 2 : 0) + (e.altKey ? 1 : 0);\n var key;\n if ((e.which >= 48 && e.which <= 57) || (e.which >= 65 && e.which <= 90)) { // A-Z 0-9\n key = String.fromCharCode(e.which);\n }\n else {\n key = e.key;\n }\n var code = comp + key.toLowerCase();\n var actions = _this._keysStorage[code];\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n actions[i].handler(e);\n }\n }\n });\n }\n KeyManager.prototype.addHotKey = function (key, handler, scope) {\n var code = getHotKeyCode(key);\n if (!this._keysStorage[code]) {\n this._keysStorage[code] = [];\n }\n this._keysStorage[code].push({\n handler: handler,\n scope: scope\n });\n };\n KeyManager.prototype.removeHotKey = function (key, scope) {\n var keyStorage = this._keysStorage;\n if (key) {\n var code = getHotKeyCode(key);\n delete keyStorage[code];\n }\n if (scope) {\n for (var code in keyStorage) {\n var toDelete = []; // items index to delete\n for (var i = 0; i < keyStorage[code].length; i++) {\n if (keyStorage[code][i].scope === scope) {\n toDelete.push(i);\n }\n }\n if (keyStorage[code].length === toDelete.length) {\n delete keyStorage[code];\n }\n else {\n for (var i = toDelete.length - 1; i >= 0; i--) { // begin from last coz splice change other index\n keyStorage[code].splice(toDelete[i], 1);\n }\n }\n }\n }\n };\n KeyManager.prototype.exist = function (key) {\n var code = getHotKeyCode(key);\n return !!this._keysStorage[code];\n };\n return KeyManager;\n}());\nexports.keyManager = new KeyManager();\nfunction addHotkeys(handlers, beforeCall) {\n var context = new Date();\n var wrapHandler = function (handler) { return function (e) {\n if (beforeCall && beforeCall() === false) {\n return;\n }\n handler(e);\n }; };\n for (var key in handlers) {\n exports.keyManager.addHotKey(key, wrapHandler(handlers[key]), context);\n }\n return function () { return exports.keyManager.removeHotKey(undefined, context); };\n}\nexports.addHotkeys = addHotkeys;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(9));\n__export(__webpack_require__(23));\n__export(__webpack_require__(26));\n__export(__webpack_require__(53));\n__export(__webpack_require__(15));\n__export(__webpack_require__(10));\n__export(__webpack_require__(24));\n__export(__webpack_require__(25));\n__export(__webpack_require__(55));\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = __webpack_require__(10);\nvar Loader = /** @class */ (function () {\n function Loader(parent, changes) {\n this._parent = parent;\n this._changes = changes; // todo: [dirty] mutation\n }\n Loader.prototype.load = function (url, driver) {\n var _this = this;\n return this._parent.loadData = url.load().then(function (data) {\n _this._parent.removeAll();\n _this.parse(data, driver);\n });\n };\n Loader.prototype.parse = function (data, driver) {\n if (driver === void 0) { driver = \"json\"; }\n driver = helpers_1.toDataDriver(driver);\n data = driver.toJsonArray(data);\n this._parent.$parse(data);\n };\n Loader.prototype.save = function (url) {\n var _this = this;\n var _loop_1 = function (el) {\n if (el.saving || el.pending) {\n helpers_1.dhxWarning(\"item is saving\");\n }\n else {\n var prevEl_1 = this_1._findPrevState(el.id);\n if (prevEl_1 && prevEl_1.saving) {\n var pending = new Promise(function (res, rej) {\n prevEl_1.promise.then(function () {\n el.pending = false;\n res(_this._setPromise(el, url));\n }).catch(function (err) {\n _this._removeFromOrder(prevEl_1);\n _this._setPromise(el, url);\n helpers_1.dhxWarning(err);\n rej(err);\n });\n });\n this_1._addToChain(pending);\n el.pending = true;\n }\n else {\n this_1._setPromise(el, url);\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this._changes.order; _i < _a.length; _i++) {\n var el = _a[_i];\n _loop_1(el);\n }\n this._parent.saveData.then(function () {\n _this._saving = false;\n });\n };\n Loader.prototype._setPromise = function (el, url) {\n var _this = this;\n el.promise = url.save(el.obj, el.status);\n el.promise.then(function () {\n _this._removeFromOrder(el);\n }).catch(function (err) {\n el.saving = false;\n el.error = true;\n helpers_1.dhxError(err);\n });\n el.saving = true;\n this._saving = true;\n this._addToChain(el.promise);\n return el.promise;\n };\n Loader.prototype._addToChain = function (promise) {\n // tslint:disable-next-line:prefer-conditional-expression\n if (this._parent.saveData && this._saving) {\n this._parent.saveData = this._parent.saveData.then(function () { return promise; });\n }\n else {\n this._parent.saveData = promise;\n }\n };\n Loader.prototype._findPrevState = function (id) {\n for (var _i = 0, _a = this._changes.order; _i < _a.length; _i++) {\n var el = _a[_i];\n if (el.id === id) {\n return el;\n }\n }\n return null;\n };\n Loader.prototype._removeFromOrder = function (el) {\n this._changes.order = this._changes.order.filter(function (item) { return !helpers_1.isEqualObj(item, el); });\n };\n return Loader;\n}());\nexports.Loader = Loader;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(50);\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(14)))\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a