{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/tinymce/tinymce.js","webpack:///./src/assets/js/tinymce/plugins/code/plugin.js","webpack:///./src/common/components/loading.vue?c98c","webpack:///./src/common/cache.js","webpack:///./src/common/directives/datepicker.js","webpack:///./src/assets/js/tinymce/plugins/link/plugin.js","webpack:///./src/assets/images/logo_cna_circulo.png","webpack:///./src/assets/js/tinymce/plugins/paste/plugin.js","webpack:///./src/common/api.js","webpack:///./src/assets/js/tinymce/plugins/media/plugin.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/redefinirsenha/index.vue?4a76","webpack:///./src/assets/js/tinymce/plugins/advlist/plugin.js","webpack:///./src/assets/js/tinymce/plugins/preview/plugin.js","webpack:///./src/App.vue?33dd","webpack:///./src/App.vue","webpack:///./src/views/home/index.vue?24f7","webpack:///src/views/home/index.vue","webpack:///./src/views/home/index.vue?fcbb","webpack:///./src/views/home/index.vue","webpack:///./src/views/authorized/index.vue?35b6","webpack:///src/views/authorized/index.vue","webpack:///./src/views/authorized/index.vue?2b21","webpack:///./src/views/authorized/index.vue","webpack:///./src/views/acessonegado/index.vue?21ac","webpack:///src/views/acessonegado/index.vue","webpack:///./src/views/acessonegado/index.vue?4b38","webpack:///./src/views/acessonegado/index.vue","webpack:///./src/views/perfil/index.vue?3c3f","webpack:///./src/views/perfil/novasenha.vue?833c","webpack:///src/views/perfil/novasenha.vue","webpack:///./src/views/perfil/novasenha.vue?ef80","webpack:///./src/views/perfil/novasenha.vue","webpack:///src/views/perfil/index.vue","webpack:///./src/views/perfil/index.vue?fa5c","webpack:///./src/views/perfil/index.vue?d713","webpack:///./src/views/redefinirsenha/index.vue?2f40","webpack:///src/views/redefinirsenha/index.vue","webpack:///./src/views/redefinirsenha/index.vue?ca0f","webpack:///./src/views/redefinirsenha/index.vue?35c7","webpack:///./src/views/cadastro/index.vue?930d","webpack:///./src/common/components/loading.vue?92df","webpack:///src/common/components/loading.vue","webpack:///./src/common/components/loading.vue?df9f","webpack:///./src/common/components/loading.vue?b5e0","webpack:///./src/template/header.vue?9a07","webpack:///src/template/header.vue","webpack:///./src/template/header.vue?2cff","webpack:///./src/template/header.vue","webpack:///./src/views/cadastro/acesso.vue?baef","webpack:///src/views/cadastro/acesso.vue","webpack:///./src/views/cadastro/acesso.vue?934a","webpack:///./src/views/cadastro/acesso.vue","webpack:///./src/views/cadastro/dados-pessoais.vue?6a9c","webpack:///src/views/cadastro/dados-pessoais.vue","webpack:///./src/views/cadastro/dados-pessoais.vue?7abb","webpack:///./src/views/cadastro/dados-pessoais.vue","webpack:///./src/views/cadastro/finalizar.vue?72b3","webpack:///src/views/cadastro/finalizar.vue","webpack:///./src/views/cadastro/finalizar.vue?d5c9","webpack:///./src/views/cadastro/finalizar.vue","webpack:///./src/views/cadastro/identificacao.vue?c119","webpack:///src/views/cadastro/identificacao.vue","webpack:///./src/views/cadastro/identificacao.vue?93bc","webpack:///./src/views/cadastro/identificacao.vue","webpack:///./src/views/cadastro/senha.vue?91be","webpack:///src/views/cadastro/senha.vue","webpack:///./src/views/cadastro/senha.vue?d38a","webpack:///./src/views/cadastro/senha.vue","webpack:///src/views/cadastro/index.vue","webpack:///./src/views/cadastro/index.vue?1b06","webpack:///./src/views/cadastro/index.vue","webpack:///./src/views/novocadastro/index.vue?a3e5","webpack:///src/views/novocadastro/index.vue","webpack:///./src/views/novocadastro/index.vue?2970","webpack:///./src/views/novocadastro/index.vue","webpack:///./src/template/index.vue?ce50","webpack:///src/template/index.vue","webpack:///./src/template/index.vue?7dc0","webpack:///./src/template/index.vue","webpack:///./src/views/esquecisenha/index.vue?79ca","webpack:///src/views/esquecisenha/index.vue","webpack:///./src/views/esquecisenha/index.vue?d9b9","webpack:///./src/views/esquecisenha/index.vue","webpack:///./src/views/esquecisenha/trocarsenha.vue?6d3f","webpack:///src/views/esquecisenha/trocarsenha.vue","webpack:///./src/views/esquecisenha/trocarsenha.vue?c631","webpack:///./src/views/esquecisenha/trocarsenha.vue","webpack:///./src/router/generated.js","webpack:///./src/router/index.js","webpack:///./src/common/directives/select.js","webpack:///./src/common/directives/canaccess.js","webpack:///./src/main.js","webpack:///./src/common/components/pagination.vue?68c4","webpack:///src/common/components/pagination.vue","webpack:///./src/common/components/pagination.vue?786b","webpack:///./src/common/components/pagination.vue","webpack:///./src/common/base.js","webpack:///./src/assets/js/tinymce/plugins/lists/plugin.js","webpack:///./src/common/cookie.js","webpack:///./src/common/auth.js","webpack:///./src/common/global.js","webpack:///./src/assets/js/tinymce/plugins/image/plugin.js","webpack:///./src/assets/js/tinymce/themes/modern/theme.js","webpack:///./src/assets/logo.png","webpack:///./src/views/perfil/index.vue?b510","webpack:///./src/common/directives/htmleditor.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","opera","webkit","ie","ie11","ie12","gecko","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","noop","x","_i","arguments","compose","fa","fb","constant","identity","curry","f","args","Array","newArgs","all","concat","die","msg","Error","never","always","never$1","always$1","none","NONE","eq","isNone","call$$1","thunk","id","noop$$1","nul","undef","me","fold","is","isSome","getOr","getOrThunk","getOrDie","getOrNull","getOrUndefined","or","orThunk","map","ap","each","flatten","exists","forall","filter","equals","equals_","toArray","toString","freeze","some","a","constant_a","self","v","optfab","fab","elementEq","b","from","undefined","Option","typeOf","isPrototypeOf","String","isType","type","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","pIndexOf","indexOf","fastIndex","xs","slowIndex","slowIndexOf","contains","pred","findIndex","len","eachr","partition","pass","fail","arr","foldr","acc","foldl","find","output","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","head","last","from$1","Global","Function","path","parts","scope","resolve","split","unsafe","actual","$_89i3w1cjkmcwk2c","url","createObjectURL","blob","revokeObjectURL","u","$_ci16mbjkmcwk2b","nav","navigator","userAgent","matchMediaQuery","query","matchMedia","matches","test","appName","exec","requestAnimationFramePromise","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","contentEditable","parseInt","match","$_cvvl9iajkmcwk25","iOS","transparentSrc","caretAfter","range","getSelection","documentMode","document","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","promise","fn","thisArg","Promise","this","TypeError","_state","_value","_deferreds","doResolve","reject","asap","immediateFn","setImmediate","setTimeout","handle","deferred","cb","onFulfilled","onRejected","ret","e","newValue","then","finale","Handler","done","reason","ex","catch","remaining","res","val","constructor","race","values","promiseObj","requestAnimationFrame$$1","callback","element","requestAnimationFrameFunc","requestAnimationFrame","vendors","featurefill","wrappedSetTimeout","time","wrappedSetInterval","setInterval","wrappedClearTimeout","clearTimeout","wrappedClearInterval","clearInterval","debounce","timer","func","stop","$_3l01gcijkmcwk99","body","setEditorTimeout","editor","removed","setEditorInterval","throttle","eventExpandoPrefix","mouseEventRe","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","hasIsDefaultPrevented","event$$1","isDefaultPrevented","returnTrue","returnFalse","addEvent","target","name$$1","capture","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","getTargetFromShadowDom","defaultTarget","composedPath","fix","originalEvent","srcElement","pageX","clientX","eventDoc","ownerDocument","doc","documentElement","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","preventDefault","stopPropagation","isPropagationStopped","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","metaKey","bindOnReady","win","eventUtils","domLoaded","isDocReady","readyState","readyHandler","waitForDomLoaded","tryScroll","doScroll","top","EventUtils","count","expando","hasFocusIn","hasMouseEnterLeave","mouseEnterLeave","self$$1","events","Date","mouseenter","mouseleave","executeHandlers","evt","callbackList","names","fakeName","nativeHandler","defaultNativeHandler","event","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","clean","children","getElementsByTagName","destroy","cancel","Event","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","push$1","slice$1","indexOf$1","elem","booleans","whitespace","identifier","attributes","pseudos","rtrim","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","childNodes","els","Sizzle","selector","context","results","seed","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","hasCompare","parent$$1","getTop","getById","attrId","tag","tmp","className","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attr","attrHandle","getAttributeNode","specified","error","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","dir","first","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","input","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","parent","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","filters","parseOnly","soFar","preFilters","cached","token","compiled","isArray$1","obj","array","each$1","map$1","out","item","index","filter$1","indexOf$2","reduce","collection","iteratee","accumulator","findIndex$1","predicate","find$1","last$1","$_9g1fibmjkmcwkbu","whiteSpaceRegExp","trim","str","makeMap","items","delim","prop","sp","cn","scn","de","createNS","onCreate","extend","static","ext","walk","resolve$1","explode","_addCacheSuffix","$_4ujg4tljkmcwkbk","grep","inArray","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","isWindow","createFragment","html","fragDoc","frag","createElement","createDocumentFragment","innerHTML","appendChild","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","hasClass","wrap","wrapper","lastParent","newWrapper","cloneNode","insertBefore","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","init","whiteSpaceRegExp$1","trim$1","each$2","charAt","add","nodes","unique","hook","set","removeAttr","css","elm","camel","toUpperCase","dashed","style","removeProperty","currentStyle","getComputedStyle","getPropertyValue","remove","removeChild","append","host","prepend","before","after","appendTo","prependTo","replaceWith","content","wrapAll","wrapInner","contents","unwrap","clone","addClass","toggleClass","removeClass","state","existingClassName","classState","on","off","trigger","show","hide","closest","offset","docElm","pos","y","getBoundingClientRect","left","el","until","sibling","siblingName","firstSibling","parents","next","prev","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","defaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","size","cssText","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","detect","versionRegexes","cleanedAgent","unknown","$_2kio3msjkmcwkcv","edge","chrome","ie$1","opera$1","firefox","safari","isBrowser","unknown$1","nu$1","version","info","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","$_ei4lq0rjkmcwkcq","windows","ios","android$1","linux","osx","solaris","freebsd","isOS","unknown$2","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","$_85w4ndtjkmcwkcx","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","search","detectBrowser","browsers","detectOs","oses","$_6qxoukvjkmcwkd5","contains$2","substr","trim$2","normalVersionRegex","checkContains","uastring","monstrosity","$_6vxr68wjkmcwkdc","detect$2","deviceType","$_c5ox8vqjkmcwkco","detect$3","$_b1ykk4ojkmcwkcj","fromHtml","div","hasChildNodes","console","fromDom","fromTag","fromText","createTextNode","dom","fromPoint","elementFromPoint","Element$$1","$_c8e5uh12jkmcwke2","ATTRIBUTE","Node","ATTRIBUTE_NODE","CDATA_SECTION","CDATA_SECTION_NODE","COMMENT","COMMENT_NODE","DOCUMENT","DOCUMENT_NODE","DOCUMENT_TYPE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT","DOCUMENT_FRAGMENT_NODE","ELEMENT","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE","ENTITY_REFERENCE_NODE","ENTITY","ENTITY_NODE","NOTATION","NOTATION_NODE","isType$1","isComment","isElement","isText","isDocument","$_2xwdjv11jkmcwke0","each$3","props","k","map$2","tupleMap","tuple","bifilter","branch","rawSet","setAll","attrs","hasAttribute","hasNone","transferOne","source","destination","transfer","$_29helg15jkmcwkf0","inBody","getBody","$_g4uup916jkmcwkfg","isSupported","$_crv2n17jkmcwkfl","internalSet","setProperty","internalRemove","set$1","setAll$1","setOptions","get$1","styles","getUnsafeProperty","getRaw","raw","getAllRaw","ruleName","isValidValue","remove$1","preserve","oldStyles","restore","sourceDom","targetDom","reflow","offsetWidth","transferOne$1","transfer$1","$_4enzit13jkmcwke5","Immutable","fields","struct","toArray$1","recurse","$_ea405s1djkmcwkgi","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","documentPositionContainedBy","DOCUMENT_POSITION_CONTAINED_BY","$_ggq6431fjkmcwkgt","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","querySelector","$_4jv6d81gjkmcwkgv","e1","e2","isEqualNode","member","regularContains","d1","d2","ieContains","contains$3","$_e4hu6h1ejkmcwkgj","owner","findIndex$2","kin","isRoot","rawParent","siblings","filterSelf","offsetParent","prevSibling","previousSibling","prevSiblings","nextSiblings","child","childNodesCount","spot","leaf","cs","$_ca6pc118jkmcwkfs","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","getPos","rootElm","offsetLeft","$_5o0xi0njkmcwkbz","nu$3","baseFn","callbacks","map$$1","nCallback","isReady","run","cbs","pure$1","LazyValue","pure","bounce","nu$4","aFutureB","anonBind","futureB","toLazy","pure$2","Future","par","asyncValues","asyncValue","par$1","futures","value$1","opt","onValue","toOption","isValue","isError","message","onError","Result","StyleSheetLoader","document$$1","settings","maxLoadTime","idCount","loadedStates","appendToHead","load","loadedCallback","errorCallback","link","startTime","passed","status","failed","isOldWebKit","webKitChunks","wait","testCallback","waitCallback","getTime","waitForWebKitLinkLoaded","styleSheet","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","rel","async","defer","onload","onerror","loadF","unbox","loadAll","urls","success","failure","TreeWalker","startNode","rootNode","findSibling","startName","shallow","findPreviousNode","prev2","namedEntities","baseEntities","reverseEntities","blocks","voids","tableCells","tableSections","textBlocks","headings","listItems","lists","wsElements","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","matchStyleValues","cssValue","computed","hasPropValue","propName","propValue","attrName","attrValue","hasAttributeValue","isBogus","isBogusAll","isTable","tagName","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","$_bjermr1rjkmcwkij","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","$_br9sxm1pjkmcwki4","makeMap$1","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","128","130","131","132","133","134","135","136","137","138","139","140","142","145","146","147","148","149","150","151","152","153","154","155","156","158","159","'","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeAllRaw","encodeNumeric","charCodeAt","encodeNamed","entities","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","decode","$_33qwr1sjkmcwkip","mapCache","dummyObj","makeMap$2","each$4","extend$1","explode$1","inArray$1","compileSchema","globalAttributes","blockContent","phrasingContent","flowContent","html4BlockContent","html4PhrasingContent","schema","ni","attributesOrder","arrayToMap","addAttrs","schemaItem","table","script","compileElementMap","Schema","validStyles","invalidStyles","schemaItems","whiteSpaceElementsMap","selfClosingElementsMap","shortEndedElementsMap","boolAttrMap","validClasses","blockElementsMap","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","textBlockElementsMap","textInlineElementsMap","patternElements","customElementsMap","specialElements","createLookupTable","option","defaultValue","extendWith","verify_html","valid_elements","valid_styles","invalid_styles","valid_classes","special","patternToRegExp","addValidElements","validElements","ei","ai","al","attrData","elementName","attrType","prefix","outputName","globalAttributesOrder","elementRuleRegExp","attrRuleRegExp","hasPatternsRegExp","paddEmpty","removeEmpty","removeEmptyAttrs","attributesRequired","required","attributesDefault","attributesForced","forcedValue","validValues","attributePatterns","setValidElements","addCustomElements","customElements","customElementRegExp","text_block_elements","block_elements","rule","inline","cloneName","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","getElementRule","custom_elements","valid_children","extended_valid_elements","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getBlockElements","getTextBlockElements","getTextInlineElements","getShortEndedElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","encodingItems","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","color","parse","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","suffix","noJoin","right","bottom","box","canCompress","compress2","encode","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","lastIndex","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","getContext","keepValues","keep_values","keepUrlHook","$elm","src","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","_this","addedStyles","files","counter","stdMode","boxModel","styleSheetLoader","boundEvents","ownEvents","proxy","$","getRoot","getElementsByName","$$","getAttrib","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","deep","clone_1","root_element","getViewPort","argWin","actWin","pageXOffset","pageYOffset","w","innerWidth","clientWidth","h","innerHeight","clientHeight","setStyle","update_styles","setStyles","stylesArg","getStyle","getSize","getRect","elms","getParents","collect","selectorVal","getParent","_findSib","getNext","getPrev","setAttribs","setHTML","canHaveHTML","parentElm","newElm","createHTML","outHtml","keepChildren","$node","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","DOM","loadCSS","cls","isHidden","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","oldElm","replaceChild","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","createRng","createRange","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditable","getContentEditableParent","isChildOf","dumpRng","startContainer","startOffset","endContainer","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","QUEUED","LOADING","LOADED","FAILED","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","onreadystatechange","log","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","instance","dependencies","requireLangPack","languages","language","languageLoad","addOn","listener","createUrl","baseUrl","dep","resource","addComponents","pluginName","pluginUrl","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","substring","lastIndexOf","waitFor","PluginManager","ThemeManager","marker","appendAt","wrap$1","$_f4qt4v1yjkmcwkl2","before$1","after$1","prepend$1","append$1","$_1ev7t1xjkmcwkky","rogue","remove$2","$_eualm21wjkmcwkku","first$1","rate","last$3","Cell","initial","Toggler","turnOff","turnOn","active","toggle","isOn","read","remove$3","$_4m1njo26jkmcwkme","supports","classList","get$2","add$1","clazz","remove$4","$_ewhsr825jkmcwkm2","add$2","cleanClass","remove$5","toggle$1","toggler","hasClasslist","has$1","$_ftm4v023jkmcwklz","all$1","descendants","ancestors","siblings$1","children$1","$_733l9k28jkmcwkmj","all$2","ancestors$1","siblings$2","children$2","descendants$1","$_2gqm0n27jkmcwkmi","ClosestOrAncestor","ancestor","first$2","descendant","sibling$1","child$1","descend","$_253nd92ajkmcwkmp","first$3","ancestor$1","sibling$2","child$2","descendant$1","closest$1","$_4ki4d929jkmcwkmn","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","selection","getRng","an","newStart","getAttr","uid","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","setup","registry","changeCallbacks","initData","listeners","previous","withCallbacks","updateCallbacks","callbackMap","outputData","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","optAnnotation","serializer","addNodeFilter","spans","persistent","create$1","register","generate","date","floor","add$3","classes","remove$6","toggle$2","hasAll","hasAny","getNative","get$3","$_dw1myr2hjkmcwko1","clone$1","original","shallowAs","copy$1","cloneChildren","mutate","$_44uvy22ijkmcwko5","slice$3","constant$1","negate","compose$2","and","curry$1","tempArgs","noop$1","$_fl2rax2ljkmcwkot","ZWSP","isZwsp","trim$3","$_cadvcr2pjkmcwkph","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","trimBogusBr","brs","lastBr","showCaretContainerBlock","caretContainer","isRangeInCaretContainerBlock","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isAtomic","isEditableCaretCandidate","round","clone$2","rect","width","height","collapse","toStart","isEqual","rect1","rect2","isValidOverflow","overflowY","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getOverflow","getSelectedNode","getNode","extendingChars","isExtendingChar","ch","liftN","isElement$3","isCaretCandidate$1","isBlock$1","isFloated","isValidElementCaretCandidate","isNotPre","isText$4","isBr$3","resolveIndex","isWhiteSpace","isRange","isHiddenWhiteSpaceRange","range$$1","getBrClientRect","brNode","clientRect","nbsp","getBoundingClientRectWebKitText","sc","ec","so","eo","newRng","cloneRange","setEndAfter","isZeroRect","clientRects","getClientRects","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","beforeNode","addUniqueAndValidRect","addCharacterOffset","isAtEnd","CaretPosition","isAtStart","toRange","isVisible","isEqual$$1","getNode$$1","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","HDirection","CaretPosition$1","isText$5","isBogus$1","nodeIndex$1","normalizedParent","getChildNodes","normalizedTextOffset","equal$1","normalizedNodeIndex","numTextFragments","createPathItem","create$2","outputOffset","resolvePathItem","findTextPosition","dataLen","targetOffset","resolve$2","isContentEditableFalse$2","getNormalizedTextOffset","trimmedOffset","getPoint","point","max","getLocation","bookmark","isCollapsed","end","trimEmptyTextNode","findIndex$3","moveEndPoint","normalizeTableCellSelection","findAdjacentContentEditableFalseElm","getOffsetBookmark","getCaretBookmark","getRangeBookmark","createBookmarkSpan","filled","getPersistentBookmark","collapsed","rng2","endBookmarkNode","insertNode","startBookmarkNode","moveToBookmark","keep","getBookmark","$_aw3zi52jjkmcwkoa","getUndoBookmark","CARET_ID","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","removeAndReposition","caretContainerNode","$_xl2r331jkmcwkri","isContentEditableTrue$2","isContentEditableFalse$3","showCaret","direction","scrollIntoView","_selectionOverrides","getNodeRange","selectNode","renderCaretAtRange","normalizedRange","normalizeRange","caretPositionNode","caretPositionBeforeNode","ceRoot","renderRangeCaret","caretRange","BreakType","isContentEditableFalse$4","isText$7","isElement$5","isBr$4","isCaretCandidate$2","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","isForwards","isBackwards","isBrBeforeBlock","findCaretPosition","isInSameBlock","startPos","nextNode","innerNode","rootContentEditableFalseElm","findNode","CaretWalker","Forwards","Backwards","flip","positions","walk$1","caretWalker","getBreakType","currentPos","nextPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","newPos","lastPos","lastRect","newRect","lastDist","abs","newDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","getFirstLinePositions","$_1m3f3j2yjkmcwkqg","firstPositionIn","getLastLinePositions","lastPositionIn","deflate","delta","getCorners","getYAxisValue","tds","cell","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","getClosestCell","isTargetCorner","cells","corner","getBottomValue","getTopValue","isAbove$1","isBelow$1","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","scrollElementIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","getWin","scrollTo","getViewPortRect","scrollBy","dx","dy","scrollRangeIntoView","rngRect","bodyRect","overflow","margin","$_a6610x37jkmcwkt5","getBodySetting","getParam","bodyObj","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","block","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","$_2ycm1438jkmcwkta","browser$2","isFakeCaretTableBrowser","moveToRange","setRng","isAtTableCellLine","lineInfo","breakPos","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","caretPos","positionIn","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","down","forcedRootBlock","undoManager","transact","moveCaret","last$$1","navigateVertically","moveH","moveV","isContentEditableFalse$5","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","cursorInterval","lastVisualCaret","caret","caretState","startBlink","reposition","getCss","isFakeCaretTarget","isContentEditableFalse$6","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","curry$2","isElement$6","isCaretCandidate$3","skipCaretContainers","predicateFn","getParentBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","walkToPositionIn","position","fromPosition","afterElement","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","isAtBr","shouldSkipPosition","navigate","nextPosition","prevPosition","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","alt","o1","o2","resolvePaths","resolveId","endPos","spos","epos","resolveIndex$1","resolve$3","$_1fx23n2wjkmcwkq6","getBookmark$1","isBookmarkNode$1","$_e4btcc2vjkmcwkq3","isInlineBlock","moveStart","isWhiteSpaceNode","getNonWhiteSpaceSibling","inc","isTextBlock$1","ed","replaceVars","vars","isEq","str1","normalizeStyleValue","getTextDecoration","decoration","getParents$1","$_dli08w3ajkmcwktg","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","isBogusBr","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","format","curFormat","findBlockEndPoint","scopeRoot","findParentContainer","block_expand","expandRng","endPoint","expand","$_97afwh2ujkmcwkpw","each$8","getEndChild","walk$2","startPoint","exclude","collectSiblings","endNode","findEndPoint","walkBoundary","$_cuckrv3bjkmcwktk","zeroWidth","NodeValue","getOption","getOptionIE10","getOptionSafe","api","get$4","set$2","$_ckzc193ejkmcwktu","isZeroWidth","wrapName","__rest","getOwnPropertySymbols","applyWordGrab","annotate","decorate","_b","newWrappers","master","_c","_d","_e","finishWrapper","getOrOpenWrapper","processElements","processElement","ctx","processNodes","annotateWithBookmark","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","blockElements","isEmptyFragmentElement","nonEmptyElements","isListFragment","fragment","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","isListItemPadded","isEmptyOrPadded","trimListItems","getParentLi","parentBlock","isParentBlockLi","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","newCaretPos","findLastOf","insertMiddle","insertAtCaret","liTarget","liElms","BEGINNING","END","isAt","$_e6q31u3jjkmcwkvd","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","removeTrailingBr","allBrs","fillWithPaddingBr","isPaddingContents","isPaddedElement","trimBlockTrailingBr","lastChildPrevSibling","$_zygeg3ljkmcwkvo","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","cdata","comment","pi","doctype","getContent","HtmlSerializer","writer","validate","handlers","3","8","7","10","4","11","sortedAttrs","elementRule","handler","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","normalize","$_bx30le3ojkmcwkw9","isTableCell$2","validInsertion","setContent","trimBrsFromTableCell","insertHtmlAtCaret","details","parser","bookmarkHtml","merge","textInlineElements","trimOrPaddLeftRight","hasSiblingText","trimNbspAfterDeleteAndPaddValue","reduceInlineTextElements","root_1","elementUtils_1","testNode","markFragmentElements","umarkFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","getContentEditableFalseParent","findNextCaretRng","paste","caretElement","parentElement","getDoc","execCommand","parserArgs","insert","showBlockCaretContainer","invalid","getStart","addVisual","processValue","insertAtCaret$1","$_g2yj883ijkmcwkv2","sectionResult","detection","mobilePlugins","defaultMobileSettings","theme","normalizePlugins","plugins","pluginNames","trimmedPlugins","filterMobilePlugins","extractSections","keys$$1","getSection","sections","sectionSettings","hasSection","getDefaultSettings","documentBaseUrl","delta_width","delta_height","popup_css","document_base_url","add_form_submit_trigger","submit_patch","add_unload_trigger","convert_urls","relative_urls","remove_script_host","object_resizing","visual","font_size_style_values","font_size_legacy_values","forced_root_block","hidden_input","render_ui","indentation","inline_styles","convert_fonts_to_spans","convertURL","ie7_compat","getExternalPlugins","overrideSettings","userDefinedExternalPlugins","external_plugins","combinePlugins","forcedPlugins","processPlugins","isTouchDevice","defaultOverrideSettings","forced_plugins","platformPlugins","combinedPlugins","isOnMobile","combineSettings","defaultSettings","extendedSettings","content_editable","getEditorSettings","getFiltered","getString","getParamObject","isArrayOf","strongRtl","hasStrongRtl","isInlineTarget","isRtl","findInlineParents","findRootInline","hasSameParentBlock","block1","block2","isAtZwsp","normalizePosition","normalizeForwards","normalizeBackwards","$_crqmqb3tjkmcwkxd","isBeforeRoot","getParentBlock$1","placeCaretInEmptyBody","setCursorLocation","paddEmptyBody","willDeleteLastPositionInElement","fromPos","firstPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","prevPos","$_8z75uj3sjkmcwkx3","any","ancestor$2","sibling$3","child$3","descendant$2","closest$2","$_6rijl23xjkmcwl24","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","isEmpty$1","$_1jnfso3wjkmcwl1v","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","read$1","$_2x2kic3rjkmcwkwi","dropLast","parentsUntil$1","parents$1","parentsAndSelf","$_cir6zl3zjkmcwl2j","getChildrenUntilBlockBoundary","extractChildren","trimBr","removeEmptyRoot","findParentInsertPoint","toBlock","getInsertionPoint","fromBlock","mergeBlockInto","children_1","mergeBlocks","$_ezyxdl3yjkmcwl27","backspaceDelete","$_1wrlyf3qjkmcwkwe","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","backspaceDelete$1","$_egxtcx40jkmcwl2q","generate$1","cases","constructors","adt","acase","argLength","branches","branchKeys","allReqd","reqKey","label","params","Adt","isCompoundElement","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","needsReposition","beforeOrStartOf","afterOrEndOf","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","eqRawNode","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","afterDeletePos","prevNode","deleteElement","normalizedAfterDeletePos","paddPos","$_4yq1i444jkmcwl3w","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","deleteOffscreenSelection","backspaceDeleteRange","selectedElement","getContentEditableRoot","paddEmptyElement","backspaceDelete$2","$_1hyiiy41jkmcwl2z","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","insertData","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","$_efgx6546jkmcwl4n","evaluateUntil","fns","$_8hyv6o49jkmcwl58","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","getElement","readLocation","getName","outside","inside","isEq$1","location1","location2","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","findLocationTraverse","findLocationSimple","findLocation","$_gau9ep48jkmcwl4x","prevLocation","nextLocation","hasSelectionModifyApi","getSel","modify","moveRel","moveByWord","$_dessn94bjkmcwl5p","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","move","moveWord","setupSelectedState","moveNextWord","movePrevWord","$_dl6t9m4ajkmcwl5b","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","backspaceDelete$3","$_dqvreg45jkmcwl4e","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell$1","getClosestTable","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","getSelectedCells","startIndex","endIndex","getAction","getActionFromCells","getActionFromRange","$_2x2sml4djkmcwl68","getRanges","ranges","rangeCount","getRangeAt","getSelectedNodes","hasMultipleRanges","$_admly54fjkmcwl6u","getCellsFromRanges","getCellsFromElement","selectedCells","getCellsFromElementOrRanges","rangeCells","getCellsFromEditor","$_7q5gk44ejkmcwl6p","deleteTableElement","deleteCellRange","action","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","backspaceDelete$4","$_5lrlvq4cjkmcwl5t","nativeCommand","command","deleteCommand","forwardDeleteCommand","$_3ahn8y3pjkmcwkwc","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","toPt","fontSize","normalizeFontFamily","fontFamily","getComputedFontProp","getFontProp","$_3qs0f64hjkmcwl74","getFontSize","getFontFamily","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","fontNameQuery","fontSizeAction","fontSizeQuery","isEq$2","rng1","$_axtxv74kjkmcwl84","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","normalize$1","normRng","$_21c07i4jjkmcwl7w","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isBeforeBr","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","anchorLocation","$_dc07up4ijkmcwl7n","cata","subject","onBefore","onOn","onAfter","situ","$_1s5vuk4njkmcwl8r","type$1","domRange","exact","range$1","exactFromRange","simRange","soffset","finish","foffset","getStart$1","startSitu","finishSitu","$_2v8ne64mjkmcwl8l","browser$3","clamp","normalizeRng","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","store","newBookmark","storeNative","$_39c3zs4ljkmcwl86","indentElement","useMargin","unit","indentStyleName","styleValue","indentUnit","indentValue","queryCommandState","getSelectedBlocks","each$10","extend$2","map$3","inArray$2","EditorCommands","commands","ui","customCommand","skip_focus","quirks","queryCommandValue","addCommands","commandList","addCommand","queryCommandSupported","addQueryStateHandler","addQueryValueHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","queryCommandEnabled","translate","notificationManager","open","align","listElm","listParent","hasVisual","anchor","editingHost","selectNodeContents","alignStates","matchNode","paddingLeft","getEnd","list","Undo","undo","Redo","redo","nativeEvents","Dispatcher","toggleEvent","bindings","beforeFire","once","extra","bindingName","hi","isNative","customEventRootDelegates","getEventDispatcher","_eventDispatcher","toggleNativeEvent","$_ed2ug44qjkmcwl97","bubble","hasEventListeners","firePreProcess","firePostProcess","fireRemove","fireSwitchMode","fireObjectResizeStart","fireObjectResized","$_q3ric4tjkmcwl9q","setEditorCommandState","cmd","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","activeEditor","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getContainer","EditorObservable$1","each$11","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","ctrl","meta","createShortcut","desc","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","any$1","ancestor$3","closest$3","sibling$4","child$4","descendant$3","$_szg1f4xjkmcwlad","focus$$1","blur$$1","blur","_doc","focusInside","$_468a0m4wjkmcwla6","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasElementFocus","hasIframeFocus","iframeElement","hasInlineFocus","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","focus$1","skipFocus","$_e3v8sn4vjkmcwl9y","getProp","rawElm","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","deltaX","deltaY","isXYInContentArea","targetElm","transposedPoint","fromDomSafe","isEditorAttachedToDom","rawContainer","getContentAreaContainer","$_8we2e850jkmcwlaw","NotificationManagerImpl","unimplemented","close","getArgs","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","getTopNotification","progressBar","timeout","addNotification","notification","closeNotification","otherNotification","getNotifications","registerEvents","serviceMessage","service_message","icon","WindowManagerImpl","alert","confirm","getParams","setParams","WindowManager","getWindowManagerImpl","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","matchUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","uploadError","pluginLoadError","initError","console$$1","$_b9je0i54jkmcwlbe","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","pathJoin","path1","path2","defaultHandler","blobInfo","progress","xhr","formData","withCredentials","credentials","upload","onprogress","loaded","total","json","JSON","responseText","basePath","FormData","filename","send","noUpload","handlerSuccess","handlerFailure","resolvePending","blobUri","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","isDefaultHandler","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","Blob","properties","FileReader","Uint8Array","requestAnimationFrame$1","atob","base64","$_b0eesx5hjkmcwld6","blobUriToBlob","rejectWithError","responseType","response","parseDataUri","uri","decodeURIComponent","dataUriToBlob","uriToBlob","blobToDataUri","reader","onloadend","readAsDataURL","$_7eufcj5djkmcwlcv","imageToBlobInfo","blobCache","img","getByUri","dataUri","err","findFirst","cachedBlobInfo","getAllImages","ImageScanner","cachedPromises","images","promises","imageInfo","newPromise","count$1","rnd","now","uuid","$_8flfjw5jjkmcwldd","BlobCache","mimeToExt","mime","mimes","toBlobInfo","removeByUri","UploadStatus","PENDING","UPLOADED","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","EditorUpload","uploader","imageScanner","aliveGuard","cacheInvalidator","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","level","fragments","replaceImageUri","images_reuse_filename","uploadImages","images_upload_url","images_upload_base_path","images_upload_credentials","images_upload_handler","scanForImages","imageInfos","filteredResult","uploadInfo","images_replace_blob_uris","uploadImagesAuto","automatic_uploads","isValidDataUriImage","imgElm","images_dataimg_filter","resultItem","replaceBlobUris","editorUpload","source_view","isBlockElement","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forced_root_block_attrs","setup$2","$_5utnj35ljkmcwldh","getStartNode","getEndNode","getFirstChildren","getLastChildren$1","hasAllContentsSelected","moveEndPoint$1","hasAnyRanges","sel","NodeChange","lastRng","lastPath","isSameElementPath","currentPath","nativeRng","fakeRng","selectionChange","disable_nodechange","VDirection","getAbsolutePosition","getBodyPosition","getScrollPosition","getBodyScroll","inlineScroll","iframeScroll","getMousePosition","iframePosition","scrollPosition","calculatePosition","bodyPosition","mousePosition","calc","$_7vqqhl5qjkmcwlfd","isContentEditableFalse$7","isContentEditableTrue$4","isDraggable","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","padding","boxSizing","appendGhostToBody","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","dragging","targetPos","getRawTarget","drop","targetClone_1","targetClone","insertContent","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","$_amfo0m5pjkmcwlf7","getNodeClientRects","toArrayWithNode","findUntil","walkUntil","isAboveFn","isBeflowFn","targetClientRect","line","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$8","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","isXYWithinRange","$_95lcbc5ujkmcwlg1","setup$3","renderFocusCaret","$_8glegd5vjkmcwlg3","$_6bj5795wjkmcwlg6","BACKSPACE","DELETE","DOWN","ENTER","LEFT","RIGHT","SPACEBAR","TAB","UP","modifierPressed","metaKeyPressed","isContentEditableTrue$5","isContentEditableFalse$9","isAfterContentEditableFalse$1","isBeforeContentEditableFalse$1","getContentEditableRoot$1","SelectionOverrides","selectedContentEditableNode","fakeCaret","realSelectionId","isFakeSelectionElement","getRealSelectionElement","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","blockCaretContainer","contentEditableRoot","removeContentEditableSelection","handleTouchSelect","moved","setContentEditableSelection","hasNormalCaretPosition","isInSameBlock$$1","hasBetterMouseTarget","targetBlock","caretBlock","isPasteBin","isRangeInCaretContainer","clipboardData","realSelectionElement","clearData","setData","outerText","addCss","contentStyles","rootClass","isWithinCaretContainer","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","isValidPrefixAttrName","trimComments","isInvalidUri","allow_html_data_urls","findEndTagIndex","tokenRegExp","shortEndedElements","SaxParser","fix_self_closing","endRegExp","attrList","textData","isInternalElement","removeInternalElements","fillAttrsMap","isShortEnded","isValidElement","attribsValue","validAttributesMap","validAttributePatterns","processHtml","anyAttributesRequired","selfClosing","attrRegExp","fixSelfClosing","stack","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","trimRegExp","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","endTagIndex","matchLength","bogusAllRegExp","getTempAttrs","trimExternal","$_2varuf5zjkmcwlgq","KEEP","INSERT","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","$_3xze2m62jkmcwlh7","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","read$3","write","currentFragments","$_cyedqm61jkmcwlh3","fromHtml$1","fromTags","tags","fromText$1","texts","fromDom$1","$_bos53z64jkmcwlhd","get$6","set$3","docDom","contentElements","getOuter","$_xg5463jkmcwlhb","undoLevelDocument","lazyTempDocument","implementation","createHTMLDocument","hasIframes","createFragmentedLevel","beforeBookmark","createCompleteLevel","createFromEditor","trimmedFragments","trimmed","applyToEditor","getLevelContent","getCleanLevelContent","hasEqualContent","level1","level2","hasEqualCleanedContent","isEq$3","$_3cqp0r5yjkmcwlgf","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertReplacementText","inputType","isInsertTextDataNull","addShortcut","currentLevel","custom_undo_redo_levels","clear","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","$_axwnk168jkmcwlim","split$1","$_bnmynr69jkmcwlir","ZWSP$1","CARET_ID$1","importNode","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","inlineElements","postProcessHooks","filter$2","each$12","addPostProcessHook","postProcess","isPre","hasPreSibling","pre","joinPre","pre1","pre2","$_dp9y746ajkmcwlit","MCE_ATTR_RE","each$13","isEq$5","isTableCell$4","lastIdx","wrap$2","matchName$1","isColorFormatAndAnchor","links","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","remove$8","splitToFormatRoot","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","$_2vklhc6cjkmcwlj5","each$14","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","mergeUnderlineAndColor","mergeBackgroundColorAndFontSize","backgroundColor","mergeSubSup","mergeSiblings","merge_siblings","clearChildStyles","clear_child_styles","mergeWithChildren","mergeWithParents","merge_with_parents","$_ehzows6bjkmcwliw","each$15","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildCount","getChildElementNode","mergeStyles","curSelNode","$_bcenmc66jkmcwlhp","each$16","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","formatChanged","formatChangeState","$_5j3j9s6djkmcwljg","get$7","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","textAlign","aligncenter","display","marginLeft","marginRight","alignright","alignjustify","bold","fontWeight","italic","fontStyle","underline","strikethrough","forecolor","hilitecolor","fontname","fontsize","fontsize_class","blockquote","subscript","superscript","code","removeformat","$_8oc5be6fjkmcwljl","FormatRegistry","unregister","each$17","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","selectorToHtml","parseSelector","parseSelectorItem","$0","$1","$2","$3","$4","getCssText","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","numValue","parseFloat","$_ga7lpr6gjkmcwlk1","toggle$3","$_1zpcor6hjkmcwlk7","setup$6","$_2ind0x6ijkmcwlk8","Formatter","hasOwnProperty$1","shallow$1","baseMerge","merger","objects","curObject","htmlParser","addAttributeFilter","internalName","cleanup","trimTrailingBr","brNode1","brNode2","$_ft0zjh6mjkmcwlkr","preProcess","impl","oldDoc","shouldFireEvent","no_events","$_27apc6njkmcwll3","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","register$1","$_2klegh6pjkmcwllk","whiteSpaceRegExp$3","typeLookup","walk$3","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","brPreferred","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","appendRel","addNoOpener","newRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$18","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getNodeFilters","getAttributeFilters","fi","fl","isInWhiteSpacePreservedElement","invalidChildren","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","outArgs","getHtmlFromNode","getInner","parseHtml","serializeNode","htmlSerializer","toHtml","DomSerializer","addRules","rules","setRules","DomSerializer$1","domSerializer","BookmarkManager","BookmarkManager$1","isContentEditableFalse$10","isContentEditableTrue$6","getContentEditableRoot$2","ControlSelection","selectedElm","selectedElmGhost","resizeHelper","resizeHandles","selectedHandle","startX","startY","selectedElmX","selectedElmY","startW","startH","ratio","resizeStarted","startScrollWidth","startScrollHeight","editableDoc","nw","ne","se","sw","isImage","isEventOnImageOutsideRange","contextMenuSelectImage","getResizeTarget","isResizable","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","fromPoint$1","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","$_52q21w6wjkmcwlna","processRanges","$_8161126xjkmcwlnd","fromElements","$_a3l7fy70jkmcwloa","tableModel","tableRow","cellPosition","getSpan","isNaN","fillout","rowspan","colspan","rows","y2","x2","cellExists","skipCellsX","getWidth","row","findElementPos","extractRows","sx","sy","ey","newRows","subTable","createDomTable","tableElement","tableBody","modelRowsToDomRows","fromDom$2","tableElm","toDom","subsection","endElement","$_6wuzo771jkmcwlof","findParentListContainer","getFullySelectedListWrappers","listCont","wrap$3","innerElm","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","getParentTable","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","read$4","$_2bm266zjkmcwlnj","tmpElm","contextual","htmlText","$_eu7sms6yjkmcwlnf","createContextualFragment","pasteHTML","$_b7rwud72jkmcwlow","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$19","isNativeIeSelection","isAttachedToDom","isValidRange","Selection$1","bookmarkManager","selectedRange","explicitRange","selectorChangedData","getEnd$$1","compareEndPoints","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","setNode","getSelectedBlocks$$1","isForward","anchorRange","focusRange","anchorOffset","focusOffset","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$11","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","isMoveInsideSameBlock","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","moveH$1","moveV$1","defaultPatterns","patterns","matchesEvent","match$1","execute","$_3olmgr77jkmcwlpj","executeKeydownOverride","setup$7","$_emza9w75jkmcwlp9","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","backspaceDelete$5","$_7tr96779jkmcwlpz","executeKeydownOverride$1","executeKeyupOverride","setup$8","$_4dsl7478jkmcwlpw","firstNonWhiteSpaceNodeSibling","moveToCaretPosition","tempElm","lastNode","getEditableRoot","editableRoot","getParentBlock$2","getParentBlockName","isListItemParentBlock","$_79nvm87ejkmcwlqu","hasFirstChild","hasParent$1","isListBlock","isNestedList","getContainerBlock","containerBlockParent","isFirstOrLastLi","insert$1","createNewBlock","newBlockName","tmpRng","$_5ckamj7djkmcwlqo","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","insert$2","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","$_dr0y3j7cjkmcwlqe","shouldInsertBr","shouldBlockNewLine","$_g7oj6o7gjkmcwlr8","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","brMode","inListBlock","inBlock","inPreBlock","inSummaryBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","isMatch","getAction$1","$_47r1sh7fjkmcwlr1","insert$3","$_fs2ah67bjkmcwlq8","endTypingLevel","handleEnterKeyEvent","setup$9","$_ni5l67ajkmcwlq7","isValidInsertPoint","isAtStartOrEnd","insertNbspAtPosition","insertAtLocation","insertAtCaret$2","boundaryLocation","insertAtSelection","$_2cwo047ijkmcwlrj","executeKeydownOverride$2","setup$10","$_agfz917hjkmcwlrh","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","setup$11","$_gfp1h7jjkmcwlrn","setup$12","$_ejk8vk74jkmcwlp8","Quirks","isGecko","isWebKit","mceInternalUrlPrefix","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","insertClipboardContents","internal","emptyEditorWhenDeleting","serializeRng","allContentsSelected","allRng","allSelection","selectAll","inputMethodFocus","removeHrOnBackspace","Range","body_1","selectControlElements","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","template","setAttributeNode","isSelectionAcrossElements","applyAttributes","disableBackspaceIntoATable","removeBlockQuoteOnBackSpace","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","fixLinks","setDefaultBlockType","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","disableAutoUrlDetect","tapLinksAndImages","blockFormSubmitInsideEditor","removeAppleInterchangeBrs","ieInternalDragAndDrop","isTextBlockNode","normalizeSelection$1","setup$13","detail","preventSummaryToggle","filterDetails","setup$14","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","initContentBody","skipWrite","contentCssText","visibility","orgVisibility","iframeHTML","bodyEl","content_document","content_window","bodyElement","hex_colors","force_hex_style_colors","class_filter","annotator","_nodeChangeDispatcher","browser_spellcheck","gecko_spellcheck","spellcheck","directionality","nowrap","whiteSpace","protect","startContent","contentCSS","content_style","$_fssayf58jkmcwlbz","DOM$3","relaxDomain","ifr","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","title","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","init$1","boxInfo","editorContainer","orgDisplay","$_9jv4e17njkmcwlsj","DOM$4","initPlugin","initializedPlugins","pluginInstance","Plugin","trimLegacyPrefix","initPlugins","initTheme","Theme","renderFromLoadedTheme","minHeight","re","min_height","renderUI","deltaWidth","deltaHeight","iframeHeight","renderFromThemeFunc","createThemeFalseResult","renderThemeFalseIframe","renderThemeFalse","renderThemeUi","init$2","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","$_4z079955jkmcwlbj","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","language_url","loadTheme","themeUrl","theme_url","loadPlugins","render","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","windowManager","encoding","save","_beforeUnload","set_dirty","$_9u29xe4yjkmcwlai","add$4","sidebars","$_gcw4n27ojkmcwlsr","each$20","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","baseUri","base_uri","isProtocolRelative","protocol","toAbsPath","part","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","pathname","defaultFormat","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","filter$$1","filter$3","defaultFormat$1","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$21","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","addButton","onclick","stateSelector","tooltip","addSidebar","addMenuItem","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","documentFocusInHandler","beforeUnloadDelegate","EditorManager","isEditorUIElement","$_48zpgt7xjkmcwlum","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","register$3","$_d657g07yjkmcwlun","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","setup$15","$_6zk6867wjkmcwluj","$_9pp0ut7zjkmcwlut","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$22","extend$5","instanceCounter","boundGlobalEvents","legacyEditors","isValidLegacyKey","globalEventDelegate","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","purgeDestroyedEditor","majorVersion","minorVersion","releaseDate","preInit","tinymce","tinyMCEPreInit","srcScript","currentScript","base_url","pluginBaseUrls","plugin_base_urls","invalidInlineTargets","isInvalidInlineTarget","createId","findTargets","targets","types","forms","editor_deselector","editor_selector","provideResults","initEditors","initCount","createEditor","existingEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","extendClass","initializing","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","findBestRelativePosition","constrainRect","rels","inflate","intersect","cropRect","x1","y1","clamp$1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","$_es7eh281jkmcwlv1","$_e5pe6n82jkmcwlv8","typeClass","lctype","controlType","ControlType","each$23","extend$6","Class$1","_super","Class","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","quote","$_6nxmdo85jkmcwlvi","$_cygb5686jkmcwlvk","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","extend$7","JSONRequest","sendRPC","ecb","scb","ty","method","localStorage$$1","create$4","storage","getItem","setItem","removeItem","configurable","localStorage","LocalStorage","publicApi","geom","Rect","util","Delay","Tools","VK","EventDispatcher","Observable","I18n","JSONP","Serializer","Selection","Entities","Factory","Env","FocusManager","isMac","Tinymce","exportToModuleLoaders","exportToWindowGlobal","tinyMCE","global","global$1","getMinWidth","getMinHeight","$_2agnwba2jkmcwo8k","$_gf01w3a4jkmcwo8n","minWidth","multiline","onSubmit","$_4xs1xna1jkmcwo8j","$_atmzsea0jkmcwo8i","$_f9f308a5jkmcwo8o","_get","sessionStorage","_add","_update","_remove","_reset","update","Vue","directive","twoWay","binding","vnode","picker","Pikaday","field","onSelect","setVModelValue","previousMonth","nextMonth","months","weekdays","weekdaysShort","findVModelName","directives","expression","eval","assumeExternalTargets","editorSettings","link_assume_external_targets","hasContextToolbar","link_context_toolbar","getLinkList","link_list","hasDefaultLinkTarget","default_link_target","getDefaultLinkTarget","getTargetList","target_list","setTargetList","shouldShowTargetList","getRelList","rel_list","hasRelList","getLinkClassList","link_class_list","hasLinkClassList","shouldShowLinkTitle","link_title","allowUnsafeLinkTarget","$_7h5h1kfvjkmcwp8j","global$2","global$3","appendClickRemove","dispatchEvent","open$$1","createEvent","initMouseEvent","opener","$_50rjczfwjkmcwp8l","global$4","toggleTargetRules","isUnsafe","addTargetRules","removeTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","getAnchorText","anchorElm","isLink","hasLinks","isOnlyTextSelected","attachState","linkAttrs","attach","linkImageFigure","unlink","unlinkImageFigure","fig","$_f96xu2g0jkmcwp91","global$5","global$6","createLinkList","linkList","buildListItems","inputList","itemCallback","startItems","appendItems","menuItem","menu","delayedConfirm","showDialog","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","classListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","lastControl","control","buildAnchorListControl","anchorList","onselect","updateText","urlChange","inp","onBeforeCall","toJSON","onchange","onPostRender","textStyle","filetype","autofocus","onkeyup","onpaste","onbeforecall","insertLink","removeLink","resultData","open$1","$_1hdbnpg2jkmcwp96","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","openDialog","gotoSelectedLink","leftClickedOnAHref","setupGotoLinks","toggleActiveState","toggleViewLinkState","toggleVisibility","$_dlew49ftjkmcwp8f","$_3nvo42fsjkmcwp8b","$_aoohpyg5jkmcwp9f","setupButtons","onpostrender","setupMenuItems","prependToContext","setupContextToolbars","$_3wxsofg6jkmcwp9g","hasProPlugin","$_ee0gktiejkmcwpkb","clipboard","$_6khw6eigjkmcwpkp","firePastePreProcess","isWordHtml","wordContent","firePastePostProcess","firePastePlainTextToggle","firePaste","ieFake","$_d8ovv8ijjkmcwpku","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","defaultValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","$_5peev0ikjkmcwpkv","shouldInformUserAboutPlainText","userIsInformedState","togglePlainTextPaste","pasteFormat","$_7rw4pkiijkmcwpks","pasteHtml","pasteText","$_gh26txihjkmcwpkr","internalMimeType","internalMark","mark","unmark","isMarked","$_93gcj3irjkmcwpld","internalHtmlMime","isPlainText","toBRs","openContainer","rootTag","rootAttrs","toBlockElements","tagOpen","tagClose","paragraphs","stitch","convert","$_3nag2qisjkmcwple","global$7","global$8","global$9","ignoreElements","trimSpaces","s1","s2","createIdGenerator","isMsEdge","$_2u5gcyj0jkmcwplv","isWordContent","isNumericList","isBulletList","convertFakeListsToProperLists","currentListNode","prevListNode","txt","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","listName","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","$_759xt5ivjkmcwplk","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","$_7a37nniujkmcwplh","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","insertImage","smartInsertContent","$_3wqigwj1jkmcwplz","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","contentType","getClipboardContent","clipboardEvent","hasContentType","clipboardContent","mimeType","hasHtmlOrText","getBase64FromUri","extractFilename","pasteImage","Image","existingBlobInfo","isClipboardEvent","pasteImageData","processItems","hadImage","getAsFile","paste_data_images","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPastePlainTextState","keyboardPasteTimeStamp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","removePasteBinOnKeyUp","getLastRng","clipboardTimer","clipboardDelay","getEl","registerEventsAndFilters","isPasteInsert","isWebKitFakeUrl","isDataUri","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","toElm","fromElm","PasteBin","Clipboard","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","fallback","markedHtml","contenteditable","offscreenRange","cut","$_5k6lg4j3jkmcwpmg","global$10","getCaretRangeFromEvent","isPlainTextFileUrl","plainTextContent","setFocusedRange","draggingInternallyState","dropContent","content_1","$_eiqz0aj4jkmcwpmj","$_9alamfj6jkmcwpmm","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStyles","webKitStylesSetting","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","$_ca6muwj7jkmcwpmo","stateChange","postRender","selectable","$_98erksj8jkmcwpmr","Api","endpoint","Resourse","EndPoint","defaultFilter","pageSize","pageIndex","isPaginate","byCache","hasDefaultFilters","lastAction","post","_post","put","_put","delete","_delete","dataItem","_dataItem","export","_export","_upload","folder","makeUri","axios","handleSuccess","handleError","model","_filters","assign","END_POINT_DEFAULT","configHeaders","accesstoken","Cache","ACCESS_TOKEN","headers","common","addCache","Auth","login","Data","DataList","stringify","Add","theString","regEx","$httpParamSerializer","entries","use","VueAxios","getScripts","getAudioTemplateCallback","getVideoTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","hasDimensions","$_6qt1nth3jkmcwpf2","getVideoScriptMatch","prefixes","$_5qpz66h7jkmcwpf7","trimPx","addPx","setSize","$_1gasfuh8jkmcwpf8","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","source1","movie","videoScript","source2","poster","ephoxEmbedHtmlToData","htmlToData","$_1f89fyh4jkmcwpf3","guess","mp3","wav","mp4","webm","ogg","swf","fileEnd","$_e86s3ihcjkmcwpfk","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","hasImage","sourceCount","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","updateHtml","$_6s992lhdjkmcwpfn","urlPatterns","regex","allowFullscreen","getUrl","_loop_1","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","source2mime","getVideoHtml","videoTemplateCallback","source1mime","getScriptHtml","dataToHtml","dataIn","embed","$_65qpjdhbjkmcwpfc","embedPromise","rej","wrappedResolve","defaultPromise","loadedData","getEmbedHtml","embedHandler","isCached","$_74pv8fh9jkmcwpf9","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newWidth","newHeight","syncSize","updateSize","createUi","onChange","recalcSize","layout","spacing","ariaLabel","$_gd8vqohhjkmcwpg2","embedChange","errorMessage","dataEmbed","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","populateMeta","generalFormItems","advancedFormItems","reserialise","embedTextBox","flex","updateValueOnChange","forId","bodyType","$_3njyjoh0jkmcwpew","$_eg0prjgzjkmcwpeu","$_8o48izhijkmcwpg5","sanitize","blocked","$_f1oicehmjkmcwpge","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","createPreviewIframeNode","previewWrapper","previewNode","shimNode","allowfullscreen","frameborder","sourceNode","innerHtml","isWithinEphoxEmbed","placeHolderConverter","$_f6hjinhljkmcwpga","boolAttrs","realElm","realElmName","$_b6ycdhhjjkmcwpg6","$_c1o1r8hnjkmcwpgg","selectedNode","objectType","$_8yods0hojkmcwpgh","$_ew8gthhpjkmcwpgk","webpackContext","req","webpackContextResolve","applyListFormat","$_55fky08fjkmcwo2a","$_cjqqqe8ejkmcwo28","getNumberStyles","getBulletStyles","$_2zo4iv8hjkmcwo2f","isChildOfBody","isTableCellNode","isListNode","getSelectedStyleType","$_djj0lo8ijkmcwo2g","styleValueToText","toMenuItems","$_cbyrf58jjkmcwo2h","listState","tableCellIndex","updateSelection","listStyleType","addSplitButton","onshow","addControl","$_d74fz58gjkmcwo2b","hasPlugin","getPreviewDialogWidth","getPreviewDialogHeight","getContentStyle","$_6hy26xjfjkmcwppy","getPreviewHtml","previewHtml","headHtml","contentStyle","body_id","body_class","preventClicksOnLinksScript","dirAttr","injectIframeContent","sandbox","encodeURIComponent","$_5s7etcjgjkmcwppz","dialogHtml","dialogWidth","dialogHeight","iframeElm","$_4mmnpbjdjkmcwppw","$_c197icjcjkmcwppv","$_eluyd4jijkmcwpq6","_vm","_h","$createElement","_self","staticRenderFns","component","staticClass","staticStyle","_v","$event","acessarShopping","_m","logout","_s","nome","ref","executeEdit","rawName","domProps","$set","email","emailAlternativo","cpF_CNPJFormatado","$$v","sexo","_q","buscarCep","dialogAlteraSenha","hideAll","dialogConfirmarSenha","confirmarSenha","onBack","alteraSenha","components","methods","formValidate","showLoading","_cep","validaTamanho","foto","$refs","$eventHub","$emit","$form","_valid","checkValidity","mounted","$route","senhaAlterada","step","stepIdentificacaoFinished","goStep","stepDadosPessoaisFinished","stepAcessoFinished","stepSenhaFinished","stepFinalizarFinished","_l","metodoAcessoId","loginExibicao","sendBack","confirmarMetodoAcesso","dialogCodigoAcesso","metodoAcesso","confirmarCodigoAcesso","confirmarDados","redirecionar","buscarPorCodigoAcesso","criarSenhaManual","senhaPreConfigurada","senhaCriada","senhaCriadaConfirmacao","finalizaCadastro","cadastroRealizado","mudaPasso","routers","Router","childrens","routersgenerated","Home","Perfil","RedefinirSenha","router","routes","Authorized","AcessoNegado","Cadastro","NovoCadastro","EsqueciSenha","TrocarSenha","redirect","Template","requiresAuth","beforeEach","record","logged","canAccess","_addOption","_addItems","default","dataitem","cachekey","fromcache","notcache","dataList","can","BootstrapVue","VueTheMask","VueMask","money","vSelect","VueSweetalert2","config","productionTip","App","$on","_config","toast","IsMobile","showConfirmButton","showCancelButton","cancelButtonText","modal","$swal","beforeDestroy","$off","$mount","navClass","ulClass","showPrevious","liClass","internalCurrentPage","previousText","ariaPrevious","changePage","num","showNext","lastPage","nextText","ariaNext","pagination","mask_data","mask_cpf","mask_rg","mask_tel","mask_cel","mask_cep","mask_ddd","decimal","thousands","masked","defaultPageChanged","defaultOrderBy","orderByType","orderFields","isOrderByDynamic","defaultSuccessResult","hideLoading","defaultErrorResult","errors","configNotification","$notify","duration","speed","failLoading","isTextNode","isListItemNode","isFirstChild","isLastChild","keepBookmarks","$_eyfb4cgljkmcwpc0","getNormalizedEndPoint","textNodeOffset","outRng","rangeStart","rangeEnd","$_8n62cfgkjkmcwpbw","createBookmark","setupEndPoint","resolveBookmark","$_aredwjgjjkmcwpbt","normalizeList","ul","normalizeLists","$_f0sxyjgmjkmcwpc3","getParentList","selectionStart","getClosestListRootElm","isParentListSelected","parentList","findSubLists","getSelectedSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","parentTableCell","$_g5359xgnjkmcwpc5","createNewTextBlock","contentNode","hasContentNode","$_givla1gqjkmcwpcb","splitList","bookmarks","removeAndKeepBookmarks","$_3aykwpgpjkmcwpc8","removeEmptyLi","outdent","ulParent","outdentSelection","listElements","$_80fi2gghjkmcwpbq","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listItemName","listBlock","mergeWithAdjacentLists","removeList","emptyListItems","rootList","isValidLists","list1","list2","hasSameListStyle","targetStyle","hasSameClasses","elm1","elm2","shouldMerge","updateList","newList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","toggleList","selectedSubLists","$_8bvl87gejkmcwpbi","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","otherLi","selectionStartElm","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","startListParent","$_17li1sgajkmcwpb9","$_4wrbe2g9jkmcwpb7","mergeLists","listStyle","indentSelection","$_fhzwh2gtjkmcwpco","queryListCommandState","isHandled","$_7snno4gsjkmcwpcf","shouldIndentOnTab","$_7hi6itgvjkmcwpcr","setupTabKey","$_fv3b7wgujkmcwpcq","indentPostRender","listItemBlocks","disable","$_e09q6ogwjkmcwpct","authorize_url","SSO_END_POINT","addclaims_authorize_url","endsession_url","redirect_uri","SSO_REDIRECT_LOGIN_URL","post_logout_redirect_uri","SSO_REDIRECT_LOGOUT_URL","client_id","SSO_CLIENT_ID","response_type","SSO_RESPONSE_TYPE","SSO_SCOPE","menu_key","permissoes_key","loadfinished_key","lastlocation_key","getToken","ID_TOKEN","getAccessToken","getState","ID_STATE","saveActualPage","getCurrentUser","_user","pessoacna","USER_INFO","currentUser","processTokenCallback","itens","access_token","expires_in","id_token","claimsAddLoginSso","claim_type","claim_value","getPermissoes","_fromcache","getMenu","END_POINT_PORTAL_CORPORATIVO","CHAVE_IDENTIFICACAO_SISTEMA","URL_SHOPPING_CNA","URL_PORTAL_CORPORATIVO","URL_DOWNLOAD","image_dimensions","hasAdvTab","image_advtab","getPrependUrl","getClassList","hasDescription","image_description","hasImageTitle","image_title","hasImageCaption","image_caption","getImageList","hasUploadUrl","hasUploadHandler","getUploadUrl","getUploadHandler","getUploadBasePath","getUploadCredentials","$_gc1jdictjkmcwomd","$_db9o2scwjkmcwomp","parseIntAndGetMax","val1","getImageSize","removePixelSuffix","addPixelSuffix","mergeMargins","splitMargin","createImageList","imageList","waitLoadImage","selectImage","$_9v7cmwcujkmcwomi","getHspace","getVspace","marginTop","marginBottom","getBorder","borderWidth","hasCaption","wrapInFigure","figureElm","removeFigure","toggleCaption","normalizeStyle","normalizeCss","setHspace","pxValue","setVspace","setBorder","setBorderStyle","borderStyle","getBorderStyle","isFigure","defaultData","hspace","vspace","getStyleValue","figure","updateProp","oldData","newData","_name","mergedCss","compressed","getSelectedImage","splitTextBlock","readImageDataFromSelection","insertImageAtCaret","insertedElm","syncSrcAttr","deleteImage","writeImageDataToSelection","insertOrUpdateImage","updateVSpaceHSpaceBorder","rootControl","updateStyle","makeTab","pack","packV","columns","maxWidth","$_4qd61kd3jkmcwonl","$_14kdtjdajkmcwoo8","onSrcChange","srcURL","prependURL","absoluteURLPattern","imageListCtrl","getGeneralItems","makeTab$1","$_bpqbuud9jkmcwoo5","$_e8tsx4dcjkmcwooe","uploadBlob","onFileInput","Throbber","throbber","finalize","dataUrl","activateTab","acceptExts","makeTab$2","accept","$_26ghgddbjkmcwooa","Dialog","altCtrl","$_cwg86qcrjkmcwom6","hasImageClass","toggleContentEditableState","toggleContentEditable","$_8m7aavdhjkmcwooq","$_2zobs0dijkmcwoos","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getRemovedMenuItems","isSkinDisabled","skin","getResize","resize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","toolbar","mainToolbar","getToolbars","fireSkinLoaded","fireResizeEditor","fireBeforeRenderUI","$_1jkxpltzjkmcwsg4","panel","addKeys","$_1mdekmu0jkmcwsg5","getUiContainerDelta","uiContainer","getUiContainer","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","$_5kmlp5u4jkmcwsge","createToolbar","buttonGroup","toolbarItems","bindSelectorChanged","disabledStateSelector","createToolbars","addToolbar","ariaRoot","ariaRemember","$_5g1hacu7jkmcwsgn","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","addContextualToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","smallElementWidthThreshold","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","role","autohide","autofix","oncancel","renderTo","hideAllContextToolbars","$_44ggy0u1jkmcwsg7","defaultMenus","edit","view","tools","help","delimiterMenuNamePair","createMenuNameItemPair","hasItemName","namedMenuItems","namedMenuItem","isSeparator","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menus","menuButton","isUserDefined","separator","getDefaultMenubar","defaultMenuBar","createMenuButtons","menuButtons","menubar","enabledMenuNames","$_3ke8tlu8jkmcwsgq","resizeTo","containerSize","iframeSize","resizeBy","dw","dh","$_focm2tubjkmcwsh5","sidebar","callbackName","hidePanels","visible","deactivateButtons","findSidebar","showPanel","btnCtrl","isModernBrowser","hasSidebar","createSidebar","$_93h32bucjkmcwsh7","fireSkinLoaded$1","$_2tsyb2uejkmcwsha","switchMode","editArea","editAreaContainer","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","linkHtml","brandingLabel","renderBefore","$_9mz4sntvjkmcwsft","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","viewport","getWindowViewPort","getUiContainerViewPort","customUiContainer","$_77p0ikukjkmcwsie","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$11","$_79d0aauqjkmcwsj9","parseBox","measureBox","computedStyle","getSide","ClassList","_map","uniqueItems","__checked","_change","curState","clsValue","Collection","Collection$1","proto","chunker","Selector","compileNameFilter","compileIdFilter","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","sl","Collection$2","Binding","otherModel","otherName","fromSelfToOther","fromOtherToSelf","_bindings","global$12","isNode","animationFrameRequested","Control","ObservableObject","oldValue","dirtyCtrls","$_921m08uxjkmcwsk2","_layout","_id","hasMouseWheelEventSupport","hasWheelEventSupport","classPrefix","idCounter","proto$1","defaultClasses","applyClasses","_aria","_elmCache","borderBox","paddingBox","marginBox","getContainerElm","getParentCtrl","controlIdLookup","initLayoutRect","autoResize","startMinWidth","startMinHeight","initialSize","deltaW","deltaH","maxW","maxH","maxHeight","_layoutRect","contentW","contentH","innerW","innerH","minW","minH","scrollW","_lastLayoutRect","lastLayoutRect","repaintControls","curRect","bodyStyle","borderW","borderH","lastRepaintRect","_lastRepaintRect","_hasBody","updateLayoutRect","_lastRect","resolveCallbackName","parentControls","$el","aria","ariaTarget","newItems","controls","_eventsRoot","renderHtml","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","bindStates","parentCtrl","getOffset","parentWidth","parentHeight","eventCtrl","eventRootCtrl","mouseLeaveHandler","_lastHoverCtrl","mouseEnterHandler","lastParents","lastCtrl","fixWheelEvent","wheelDelta","wheelDeltaX","eventRootDelegates","_delegates","_hasMouseEnter","Control$1","hasTabstopData","KeyboardNavigation","focusedElement","focusedControl","getRole","getParentRole","getAriaProp","isTextInputElement","canFocus","getFocusElements","getNavigationRoot","targetControl","navigationRoot","focusFirst","focusElements","moveFocusToIndex","lastAriaIndex","moveFocus","parentRole","submenu","enter","up","tab","handleNonTabOrEscEvent","selectorCache","Container","_items","bodyClasses","containerCls","keyboard","focusCtrl","keyboardNav","statusbar","oldItem","newItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","drag","handleElement","cursor","docSize","runtimeStyle","zIndex","documentClickHandler","documentScrollHandler","windowResizeHandler","hasModal","$_c9juz9uzjkmcwskb","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","scrollSize","posNameLower","sizeNameLower","addScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","autoScroll","_hasScroll","Panel","_preBodyHtml","$_4ci2x6v1jkmcwski","resizeToContent","visiblePanels","zOrder","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","render$1","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","$_aqv3nuufjkmcwshc","$_575jhev2jkmcwskj","$_7k92xgtrjkmcwsfn","Tooltip","Widget","tooltips","_tooltip","Progress","setValue","updateLiveRegion","Notification","closeButton","notificationStyle","getEditorContainer","getContainerWidth","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","contentValue","noScaleMetaValue","toggleBodyFullScreenClasses","checkFullscreenWindows","_fullscreen","handleWindowResize","lastSize_1","Window$$1","closeClass","needsRecalc","statusbar$$1","headerW","headEl","headerH","headerHtml","footerHtml","fullscreen","slowRendering","_timer","_initial","dragHelper","getContentWindow","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClick","onClose","onCancel","features","alert$$1","choiceCallback","confirm$$1","close$$1","window$$1","$_f0tepxtqjkmcwsfm","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnStyle","btnElm","ariaPressed","textHtml","textCls","setButtonText","$span","iconElm","BrowseButton","multiple","click","ButtonGroup","Checkbox","global$13","ComboBox","subinput","showMenu","statusLevel","statusMessage","lineHeight","openElm","innerPadding","inputElm","openBtnHtml","extraAttrs","statusHtml","placeholder","showAutoComplete","term","previewUrl","hideMenu","statusIconElm","focusIdx","ColorBox","onaction","repaintColor","background","PanelButton","panelSettings","hidePanel","rtlRels","ltrRels","popoverAlign","isTop","ColorButton","_color","resetColor","onClickHandler","global$14","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","rgb","_rendered","hueHtml","stops","getOldIeFallbackHtml","gradientPrefix","stopsList","gradientCssText","DropZone","cfg","hidefocus","toggleDragClass","Path","delimiter","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","labelGap","formItemDefaults","formItem","recalcLabels","maxLabelWidth","labels","labelGapCalc","labelCtrl","labelWidth","FieldSet","unique$1","$_g9js5fw5jkmcwsoh","$_dg0wqww4jkmcwsog","$_9gi0tmw2jkmcwsob","$_9vmnzpwcjkmcwsph","$_22q3m2wfjkmcwsps","$_60zxbqwejkmcwspr","$_7ota5pwljkmcwsq4","$_fknyifwkjkmcwsq1","windows$1","$_4dmnqawmjkmcwsq6","$_21yllowojkmcwsqc","$_993j3rwpjkmcwsqg","$_4sbeluwjjkmcwsq0","$_g4vzapwijkmcwspx","$_3tbwnywtjkmcwsqr","$_622morwdjkmcwspi","$_adk4mbw6jkmcwsok","$_bf8vd5w1jkmcwso8","$_4ig9ruw0jkmcwso7","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","find$3","$_cb7rvvvxjkmcwsnn","getActiveEditor","history","HISTORY_LENGTH","clearHistory","toMenuItem","staticMenuItem","isUniqueUrl","foundTarget","getSetting","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","anchorMenuItems","topAnchor","bottomAchor","bothEmpty","typeahead_urls","filterByQuery","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","autocomplete","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","validateUrl_1","uiState","FilePicker","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_picker_types","file_browser_callback_types","file_picker_callback","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","ctrlSettings","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxSizeItems","maxFlexSize","FlowLayout","endClass","$_13w0c1wzjkmcwsri","$_epq3p6wyjkmcwsrh","addFormatChangedListener","changed","postRenderFormatToggle","alignFormats","defaultAlign","alignMenuItems","onShowMenu","formatName","alignnone","$_ffg0cgx1jkmcwsrx","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","defaultFontsFormats","fonts","font_formats","registerButtons","fixedWidth","$_1be6fjx3jkmcwss1","findMatchingValue$1","pt","px","createFontSizeListBoxChangeHandler","getFontSizeItems","defaultFontsizeFormats","fontsizeFormats","fontsize_formats","registerButtons$1","$_fnu5cxx4jkmcwss4","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","createStylesMenu","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","$_cmdomhx5jkmcwss6","defaultBlocks","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","register$4","block_formats","$_cl4rffx6jkmcwssb","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","register$5","$_7ix8zax7jkmcwssd","registerFormatButtons","registerCommandButtons","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","register$6","$_gbsmm2x8jkmcwssh","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","register$7","$_1bdkmax9jkmcwssr","toggleVisualAidState","registerMenuItems$3","register$8","$_21pl3hxajkmcwsst","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","$_drujjnwxjkmcwsrc","GridLayout","cols","posX","posY","spacingH","spacingV","alignH","alignV","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","colWidths","rowHeights","ceil","flexV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","animate","activeMenu","hasVisibleSiblingMenu","overCtrl","Menu","itemsFactory","factory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","menuValues","_values","matchingValues","activateMenuItemsByValue","hasMenus","getSelectedItem","selectedItem","toggleTextStyle","_textStyle","textElm","MenuItem","ariaHideMenu","_parentMenu","_lastRel","iconHtml","convertShortcut","escapeRegExp","markMatches","boldMatches","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","options","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","maxHandlePos","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","toFraction","fromFraction","handleKeyboard","alter","handleDrag","startHandlePos","handlePos","_dragHelper","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","TabPanel","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","getApi","ReflowQueue","Scrollable","Movable","Resizable","Window","FormatControls","Iframe","Toolbar","registerToFactory","inserted","_lastfileuploaded","_interval","_hascustomtag","_pluginWindowsCustomTag","onsubmit","description","hascustomtag","media_live_embeds"],"mappings":"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,KAAK0hB,KAAO,SAAU+U,GAEpB,OADAnnB,EAAOinB,EAAYjnB,EAAM,aAAc,cAAemnB,GAC/CnnB,GAETtP,KAAK2hB,KAAO,SAAU8U,GAEpB,OADAnnB,EAAOinB,EAAYjnB,EAAM,YAAa,kBAAmBmnB,GAClDnnB,GAETtP,KAAK22B,MAAQ,SAAUF,GAErB,OADAnnB,EAAOonB,EAAiBpnB,EAAM,YAAa,kBAAmBmnB,GACvDnnB,GAIX,IAkSIsnB,GACAC,GACAC,GApSAC,GAAS,CACX,UACA,QACA,UACA,MACA,KACA,aACA,SACA,OACA,WACA,SACA,SACA,OACA,OACA,MACA,UACA,UACA,OACA,IACA,KACA,WACA,KACA,SACA,UACA,SACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,MACA,MACA,YACA,OACA,MACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,WAEEC,GAAQ,CACV,OACA,OACA,WACA,KACA,MACA,QACA,KACA,MACA,QACA,UACA,OACA,OACA,QACA,QACA,SACA,MACA,SAEEC,GAAa,CACf,KACA,MAEEC,GAAgB,CAClB,QACA,QACA,SAEEC,GAAa,CACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,UACA,MACA,OACA,aACA,SACA,MACA,WACA,SACA,SACA,UACA,UACA,SACA,QACA,MACA,UAEEC,GAAW,CACb,KACA,KACA,KACA,KACA,KACA,MAEEC,GAAY,CACd,KACA,KACA,MAEEC,GAAQ,CACV,KACA,KACA,MAEEC,GAAa,CACf,MACA,SACA,WACA,SAEEC,GAAa,SAAUrd,GACzB,IAAIsd,EACJ,OAAO,SAAUnoB,GAEf,OADAmoB,EAASA,GAAkBl8B,GAAY4e,EAAO9kB,GAAS,IAChDoiC,EAAO1mC,eAAe85B,GAAmBr4B,KAAK8c,MAGrDooB,GAAYF,GAAWJ,IACvBO,GAAUH,GAAWT,IACrBa,GAAW,SAAUtoB,GACvB,OAAOub,GAAmBH,UAAUpb,KAAUqoB,GAAQroB,IAEpDuoB,GAAO,SAAUvoB,GACnB,OAA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","file":"js/app.3cf10dd5.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// 4.8.2 (2018-08-09)\r\n(function () {\r\n(function () {\r\n 'use strict';\r\n\r\n var noop = function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n };\r\n\r\n var compose = function (fa, fb) {\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n return fa(fb.apply(null, arguments));\r\n };\r\n };\r\n var constant = function (value) {\r\n return function () {\r\n return value;\r\n };\r\n };\r\n var identity = function (x) {\r\n return x;\r\n };\r\n\r\n var curry = function (f) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = new Array(arguments.length - 1);\r\n for (var i = 1; i < arguments.length; i++)\r\n args[i - 1] = arguments[i];\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var newArgs = new Array(arguments.length);\r\n for (var j = 0; j < newArgs.length; j++)\r\n newArgs[j] = arguments[j];\r\n var all = args.concat(newArgs);\r\n return f.apply(null, all);\r\n };\r\n };\r\n\r\n var die = function (msg) {\r\n return function () {\r\n throw new Error(msg);\r\n };\r\n };\r\n\r\n\r\n var never = constant(false);\r\n var always = constant(true);\r\n\r\n var never$1 = never;\r\n var always$1 = always;\r\n var none = function () {\r\n return NONE;\r\n };\r\n var NONE = function () {\r\n var eq = function (o) {\r\n return o.isNone();\r\n };\r\n var call$$1 = function (thunk) {\r\n return thunk();\r\n };\r\n var id = function (n) {\r\n return n;\r\n };\r\n var noop$$1 = function () {\r\n };\r\n var nul = function () {\r\n return null;\r\n };\r\n var undef = function () {\r\n return undefined;\r\n };\r\n var me = {\r\n fold: function (n, s) {\r\n return n();\r\n },\r\n is: never$1,\r\n isSome: never$1,\r\n isNone: always$1,\r\n getOr: id,\r\n getOrThunk: call$$1,\r\n getOrDie: function (msg) {\r\n throw new Error(msg || 'error: getOrDie called on none.');\r\n },\r\n getOrNull: nul,\r\n getOrUndefined: undef,\r\n or: id,\r\n orThunk: call$$1,\r\n map: none,\r\n ap: none,\r\n each: noop$$1,\r\n bind: none,\r\n flatten: none,\r\n exists: never$1,\r\n forall: always$1,\r\n filter: none,\r\n equals: eq,\r\n equals_: eq,\r\n toArray: function () {\r\n return [];\r\n },\r\n toString: constant('none()')\r\n };\r\n if (Object.freeze)\r\n Object.freeze(me);\r\n return me;\r\n }();\r\n var some = function (a) {\r\n var constant_a = function () {\r\n return a;\r\n };\r\n var self = function () {\r\n return me;\r\n };\r\n var map = function (f) {\r\n return some(f(a));\r\n };\r\n var bind = function (f) {\r\n return f(a);\r\n };\r\n var me = {\r\n fold: function (n, s) {\r\n return s(a);\r\n },\r\n is: function (v) {\r\n return a === v;\r\n },\r\n isSome: always$1,\r\n isNone: never$1,\r\n getOr: constant_a,\r\n getOrThunk: constant_a,\r\n getOrDie: constant_a,\r\n getOrNull: constant_a,\r\n getOrUndefined: constant_a,\r\n or: self,\r\n orThunk: self,\r\n map: map,\r\n ap: function (optfab) {\r\n return optfab.fold(none, function (fab) {\r\n return some(fab(a));\r\n });\r\n },\r\n each: function (f) {\r\n f(a);\r\n },\r\n bind: bind,\r\n flatten: constant_a,\r\n exists: bind,\r\n forall: bind,\r\n filter: function (f) {\r\n return f(a) ? me : NONE;\r\n },\r\n equals: function (o) {\r\n return o.is(a);\r\n },\r\n equals_: function (o, elementEq) {\r\n return o.fold(never$1, function (b) {\r\n return elementEq(a, b);\r\n });\r\n },\r\n toArray: function () {\r\n return [a];\r\n },\r\n toString: function () {\r\n return 'some(' + a + ')';\r\n }\r\n };\r\n return me;\r\n };\r\n var from = function (value) {\r\n return value === null || value === undefined ? NONE : some(value);\r\n };\r\n var Option = {\r\n some: some,\r\n none: none,\r\n from: from\r\n };\r\n\r\n var typeOf = function (x) {\r\n if (x === null)\r\n return 'null';\r\n var t = typeof x;\r\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\r\n return 'array';\r\n if (t === 'object' && String.prototype.isPrototypeOf(x))\r\n return 'string';\r\n return t;\r\n };\r\n var isType = function (type) {\r\n return function (value) {\r\n return typeOf(value) === type;\r\n };\r\n };\r\n var isString = isType('string');\r\n var isObject = isType('object');\r\n var isArray = isType('array');\r\n var isNull = isType('null');\r\n var isBoolean = isType('boolean');\r\n\r\n var isFunction = isType('function');\r\n var isNumber = isType('number');\r\n\r\n var rawIndexOf = function () {\r\n var pIndexOf = Array.prototype.indexOf;\r\n var fastIndex = function (xs, x) {\r\n return pIndexOf.call(xs, x);\r\n };\r\n var slowIndex = function (xs, x) {\r\n return slowIndexOf(xs, x);\r\n };\r\n return pIndexOf === undefined ? slowIndex : fastIndex;\r\n }();\r\n var indexOf = function (xs, x) {\r\n var r = rawIndexOf(xs, x);\r\n return r === -1 ? Option.none() : Option.some(r);\r\n };\r\n var contains = function (xs, x) {\r\n return rawIndexOf(xs, x) > -1;\r\n };\r\n var exists = function (xs, pred) {\r\n return findIndex(xs, pred).isSome();\r\n };\r\n\r\n\r\n var map = function (xs, f) {\r\n var len = xs.length;\r\n var r = new Array(len);\r\n for (var i = 0; i < len; i++) {\r\n var x = xs[i];\r\n r[i] = f(x, i, xs);\r\n }\r\n return r;\r\n };\r\n var each = function (xs, f) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n f(x, i, xs);\r\n }\r\n };\r\n var eachr = function (xs, f) {\r\n for (var i = xs.length - 1; i >= 0; i--) {\r\n var x = xs[i];\r\n f(x, i, xs);\r\n }\r\n };\r\n var partition = function (xs, pred) {\r\n var pass = [];\r\n var fail = [];\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n var arr = pred(x, i, xs) ? pass : fail;\r\n arr.push(x);\r\n }\r\n return {\r\n pass: pass,\r\n fail: fail\r\n };\r\n };\r\n var filter = function (xs, pred) {\r\n var r = [];\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n r.push(x);\r\n }\r\n }\r\n return r;\r\n };\r\n\r\n var foldr = function (xs, f, acc) {\r\n eachr(xs, function (x) {\r\n acc = f(acc, x);\r\n });\r\n return acc;\r\n };\r\n var foldl = function (xs, f, acc) {\r\n each(xs, function (x) {\r\n acc = f(acc, x);\r\n });\r\n return acc;\r\n };\r\n var find = function (xs, pred) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n return Option.some(x);\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var findIndex = function (xs, pred) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n return Option.some(i);\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var slowIndexOf = function (xs, x) {\r\n for (var i = 0, len = xs.length; i < len; ++i) {\r\n if (xs[i] === x) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n var push = Array.prototype.push;\r\n var flatten = function (xs) {\r\n var r = [];\r\n for (var i = 0, len = xs.length; i < len; ++i) {\r\n if (!Array.prototype.isPrototypeOf(xs[i]))\r\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\r\n push.apply(r, xs[i]);\r\n }\r\n return r;\r\n };\r\n var bind = function (xs, f) {\r\n var output = map(xs, f);\r\n return flatten(output);\r\n };\r\n var forall = function (xs, pred) {\r\n for (var i = 0, len = xs.length; i < len; ++i) {\r\n var x = xs[i];\r\n if (pred(x, i, xs) !== true) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n var slice = Array.prototype.slice;\r\n var reverse = function (xs) {\r\n var r = slice.call(xs, 0);\r\n r.reverse();\r\n return r;\r\n };\r\n var difference = function (a1, a2) {\r\n return filter(a1, function (x) {\r\n return !contains(a2, x);\r\n });\r\n };\r\n var mapToObject = function (xs, f) {\r\n var r = {};\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n r[String(x)] = f(x, i);\r\n }\r\n return r;\r\n };\r\n\r\n var sort = function (xs, comparator) {\r\n var copy = slice.call(xs, 0);\r\n copy.sort(comparator);\r\n return copy;\r\n };\r\n var head = function (xs) {\r\n return xs.length === 0 ? Option.none() : Option.some(xs[0]);\r\n };\r\n var last = function (xs) {\r\n return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\r\n };\r\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\r\n return slice.call(x);\r\n };\r\n\r\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\r\n\r\n var path = function (parts, scope) {\r\n var o = scope !== undefined && scope !== null ? scope : Global;\r\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\r\n o = o[parts[i]];\r\n return o;\r\n };\r\n var resolve = function (p, scope) {\r\n var parts = p.split('.');\r\n return path(parts, scope);\r\n };\r\n\r\n var unsafe = function (name, scope) {\r\n return resolve(name, scope);\r\n };\r\n var getOrDie = function (name, scope) {\r\n var actual = unsafe(name, scope);\r\n if (actual === undefined || actual === null)\r\n throw name + ' not available on this browser';\r\n return actual;\r\n };\r\n var $_89i3w1cjkmcwk2c = { getOrDie: getOrDie };\r\n\r\n var url = function () {\r\n return $_89i3w1cjkmcwk2c.getOrDie('URL');\r\n };\r\n var createObjectURL = function (blob) {\r\n return url().createObjectURL(blob);\r\n };\r\n var revokeObjectURL = function (u) {\r\n url().revokeObjectURL(u);\r\n };\r\n var $_ci16mbjkmcwk2b = {\r\n createObjectURL: createObjectURL,\r\n revokeObjectURL: revokeObjectURL\r\n };\r\n\r\n var nav = navigator;\r\n var userAgent = nav.userAgent;\r\n var opera;\r\n var webkit;\r\n var ie;\r\n var ie11;\r\n var ie12;\r\n var gecko;\r\n var mac;\r\n var iDevice;\r\n var android;\r\n var fileApi;\r\n var phone;\r\n var tablet;\r\n var windowsPhone;\r\n var matchMediaQuery = function (query) {\r\n return 'matchMedia' in window ? matchMedia(query).matches : false;\r\n };\r\n opera = false;\r\n android = /Android/.test(userAgent);\r\n webkit = /WebKit/.test(userAgent);\r\n ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);\r\n ie = ie && /MSIE (\\w+)\\./.exec(userAgent)[1];\r\n ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;\r\n ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;\r\n ie = ie || ie11 || ie12;\r\n gecko = !webkit && !ie11 && /Gecko/.test(userAgent);\r\n mac = userAgent.indexOf('Mac') !== -1;\r\n iDevice = /(iPad|iPhone)/.test(userAgent);\r\n fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_ci16mbjkmcwk2b.createObjectURL;\r\n phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);\r\n tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);\r\n windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\r\n if (ie12) {\r\n webkit = false;\r\n }\r\n var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\\/(\\d*)/)[1], 10) >= 534;\r\n var $_cvvl9iajkmcwk25 = {\r\n opera: opera,\r\n webkit: webkit,\r\n ie: ie,\r\n gecko: gecko,\r\n mac: mac,\r\n iOS: iDevice,\r\n android: android,\r\n contentEditable: contentEditable,\r\n transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\r\n caretAfter: ie !== 8,\r\n range: window.getSelection && 'Range' in window,\r\n documentMode: ie && !ie12 ? document.documentMode || 7 : 10,\r\n fileApi: fileApi,\r\n ceFalse: ie === false || ie > 8,\r\n cacheSuffix: null,\r\n container: null,\r\n overrideViewPort: null,\r\n experimentalShadowDom: false,\r\n canHaveCSP: ie === false || ie > 11,\r\n desktop: !phone && !tablet,\r\n windowsPhone: windowsPhone\r\n };\r\n\r\n var promise = function () {\r\n function bind(fn, thisArg) {\r\n return function () {\r\n fn.apply(thisArg, arguments);\r\n };\r\n }\r\n var isArray = Array.isArray || function (value) {\r\n return Object.prototype.toString.call(value) === '[object Array]';\r\n };\r\n var Promise = function (fn) {\r\n if (typeof this !== 'object') {\r\n throw new TypeError('Promises must be constructed via new');\r\n }\r\n if (typeof fn !== 'function') {\r\n throw new TypeError('not a function');\r\n }\r\n this._state = null;\r\n this._value = null;\r\n this._deferreds = [];\r\n doResolve(fn, bind(resolve, this), bind(reject, this));\r\n };\r\n var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) {\r\n setTimeout(fn, 1);\r\n };\r\n function handle(deferred) {\r\n var me = this;\r\n if (this._state === null) {\r\n this._deferreds.push(deferred);\r\n return;\r\n }\r\n asap(function () {\r\n var cb = me._state ? deferred.onFulfilled : deferred.onRejected;\r\n if (cb === null) {\r\n (me._state ? deferred.resolve : deferred.reject)(me._value);\r\n return;\r\n }\r\n var ret;\r\n try {\r\n ret = cb(me._value);\r\n } catch (e) {\r\n deferred.reject(e);\r\n return;\r\n }\r\n deferred.resolve(ret);\r\n });\r\n }\r\n function resolve(newValue) {\r\n try {\r\n if (newValue === this) {\r\n throw new TypeError('A promise cannot be resolved with itself.');\r\n }\r\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\r\n var then = newValue.then;\r\n if (typeof then === 'function') {\r\n doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\r\n return;\r\n }\r\n }\r\n this._state = true;\r\n this._value = newValue;\r\n finale.call(this);\r\n } catch (e) {\r\n reject.call(this, e);\r\n }\r\n }\r\n function reject(newValue) {\r\n this._state = false;\r\n this._value = newValue;\r\n finale.call(this);\r\n }\r\n function finale() {\r\n for (var i = 0, len = this._deferreds.length; i < len; i++) {\r\n handle.call(this, this._deferreds[i]);\r\n }\r\n this._deferreds = null;\r\n }\r\n function Handler(onFulfilled, onRejected, resolve, reject) {\r\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\r\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n }\r\n function doResolve(fn, onFulfilled, onRejected) {\r\n var done = false;\r\n try {\r\n fn(function (value) {\r\n if (done) {\r\n return;\r\n }\r\n done = true;\r\n onFulfilled(value);\r\n }, function (reason) {\r\n if (done) {\r\n return;\r\n }\r\n done = true;\r\n onRejected(reason);\r\n });\r\n } catch (ex) {\r\n if (done) {\r\n return;\r\n }\r\n done = true;\r\n onRejected(ex);\r\n }\r\n }\r\n Promise.prototype.catch = function (onRejected) {\r\n return this.then(null, onRejected);\r\n };\r\n Promise.prototype.then = function (onFulfilled, onRejected) {\r\n var me = this;\r\n return new Promise(function (resolve, reject) {\r\n handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\r\n });\r\n };\r\n Promise.all = function () {\r\n var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\r\n return new Promise(function (resolve, reject) {\r\n if (args.length === 0) {\r\n return resolve([]);\r\n }\r\n var remaining = args.length;\r\n function res(i, val) {\r\n try {\r\n if (val && (typeof val === 'object' || typeof val === 'function')) {\r\n var then = val.then;\r\n if (typeof then === 'function') {\r\n then.call(val, function (val) {\r\n res(i, val);\r\n }, reject);\r\n return;\r\n }\r\n }\r\n args[i] = val;\r\n if (--remaining === 0) {\r\n resolve(args);\r\n }\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n }\r\n for (var i = 0; i < args.length; i++) {\r\n res(i, args[i]);\r\n }\r\n });\r\n };\r\n Promise.resolve = function (value) {\r\n if (value && typeof value === 'object' && value.constructor === Promise) {\r\n return value;\r\n }\r\n return new Promise(function (resolve) {\r\n resolve(value);\r\n });\r\n };\r\n Promise.reject = function (value) {\r\n return new Promise(function (resolve, reject) {\r\n reject(value);\r\n });\r\n };\r\n Promise.race = function (values) {\r\n return new Promise(function (resolve, reject) {\r\n for (var i = 0, len = values.length; i < len; i++) {\r\n values[i].then(resolve, reject);\r\n }\r\n });\r\n };\r\n return Promise;\r\n };\r\n var promiseObj = window.Promise ? window.Promise : promise();\r\n\r\n var requestAnimationFramePromise;\r\n var requestAnimationFrame$$1 = function (callback, element) {\r\n var i, requestAnimationFrameFunc = window.requestAnimationFrame;\r\n var vendors = [\r\n 'ms',\r\n 'moz',\r\n 'webkit'\r\n ];\r\n var featurefill = function (callback) {\r\n window.setTimeout(callback, 0);\r\n };\r\n for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {\r\n requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame'];\r\n }\r\n if (!requestAnimationFrameFunc) {\r\n requestAnimationFrameFunc = featurefill;\r\n }\r\n requestAnimationFrameFunc(callback, element);\r\n };\r\n var wrappedSetTimeout = function (callback, time) {\r\n if (typeof time !== 'number') {\r\n time = 0;\r\n }\r\n return setTimeout(callback, time);\r\n };\r\n var wrappedSetInterval = function (callback, time) {\r\n if (typeof time !== 'number') {\r\n time = 1;\r\n }\r\n return setInterval(callback, time);\r\n };\r\n var wrappedClearTimeout = function (id) {\r\n return clearTimeout(id);\r\n };\r\n var wrappedClearInterval = function (id) {\r\n return clearInterval(id);\r\n };\r\n var debounce = function (callback, time) {\r\n var timer, func;\r\n func = function () {\r\n var args = arguments;\r\n clearTimeout(timer);\r\n timer = wrappedSetTimeout(function () {\r\n callback.apply(this, args);\r\n }, time);\r\n };\r\n func.stop = function () {\r\n clearTimeout(timer);\r\n };\r\n return func;\r\n };\r\n var $_3l01gcijkmcwk99 = {\r\n requestAnimationFrame: function (callback, element) {\r\n if (requestAnimationFramePromise) {\r\n requestAnimationFramePromise.then(callback);\r\n return;\r\n }\r\n requestAnimationFramePromise = new promiseObj(function (resolve) {\r\n if (!element) {\r\n element = document.body;\r\n }\r\n requestAnimationFrame$$1(resolve, element);\r\n }).then(callback);\r\n },\r\n setTimeout: wrappedSetTimeout,\r\n setInterval: wrappedSetInterval,\r\n setEditorTimeout: function (editor, callback, time) {\r\n return wrappedSetTimeout(function () {\r\n if (!editor.removed) {\r\n callback();\r\n }\r\n }, time);\r\n },\r\n setEditorInterval: function (editor, callback, time) {\r\n var timer;\r\n timer = wrappedSetInterval(function () {\r\n if (!editor.removed) {\r\n callback();\r\n } else {\r\n clearInterval(timer);\r\n }\r\n }, time);\r\n return timer;\r\n },\r\n debounce: debounce,\r\n throttle: debounce,\r\n clearInterval: wrappedClearInterval,\r\n clearTimeout: wrappedClearTimeout\r\n };\r\n\r\n var eventExpandoPrefix = 'mce-data-';\r\n var mouseEventRe = /^(?:mouse|contextmenu)|click/;\r\n var deprecated = {\r\n keyLocation: 1,\r\n layerX: 1,\r\n layerY: 1,\r\n returnValue: 1,\r\n webkitMovementX: 1,\r\n webkitMovementY: 1,\r\n keyIdentifier: 1\r\n };\r\n var hasIsDefaultPrevented = function (event$$1) {\r\n return event$$1.isDefaultPrevented === returnTrue || event$$1.isDefaultPrevented === returnFalse;\r\n };\r\n var returnFalse = function () {\r\n return false;\r\n };\r\n var returnTrue = function () {\r\n return true;\r\n };\r\n var addEvent = function (target, name$$1, callback, capture) {\r\n if (target.addEventListener) {\r\n target.addEventListener(name$$1, callback, capture || false);\r\n } else if (target.attachEvent) {\r\n target.attachEvent('on' + name$$1, callback);\r\n }\r\n };\r\n var removeEvent = function (target, name$$1, callback, capture) {\r\n if (target.removeEventListener) {\r\n target.removeEventListener(name$$1, callback, capture || false);\r\n } else if (target.detachEvent) {\r\n target.detachEvent('on' + name$$1, callback);\r\n }\r\n };\r\n var getTargetFromShadowDom = function (event$$1, defaultTarget) {\r\n if (event$$1.composedPath) {\r\n var composedPath = event$$1.composedPath();\r\n if (composedPath && composedPath.length > 0) {\r\n return composedPath[0];\r\n }\r\n }\r\n return defaultTarget;\r\n };\r\n var fix = function (originalEvent, data) {\r\n var name$$1;\r\n var event$$1 = data || {};\r\n for (name$$1 in originalEvent) {\r\n if (!deprecated[name$$1]) {\r\n event$$1[name$$1] = originalEvent[name$$1];\r\n }\r\n }\r\n if (!event$$1.target) {\r\n event$$1.target = event$$1.srcElement || document;\r\n }\r\n if ($_cvvl9iajkmcwk25.experimentalShadowDom) {\r\n event$$1.target = getTargetFromShadowDom(originalEvent, event$$1.target);\r\n }\r\n if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {\r\n var eventDoc = event$$1.target.ownerDocument || document;\r\n var doc = eventDoc.documentElement;\r\n var body = eventDoc.body;\r\n event$$1.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\r\n event$$1.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\r\n }\r\n event$$1.preventDefault = function () {\r\n event$$1.isDefaultPrevented = returnTrue;\r\n if (originalEvent) {\r\n if (originalEvent.preventDefault) {\r\n originalEvent.preventDefault();\r\n } else {\r\n originalEvent.returnValue = false;\r\n }\r\n }\r\n };\r\n event$$1.stopPropagation = function () {\r\n event$$1.isPropagationStopped = returnTrue;\r\n if (originalEvent) {\r\n if (originalEvent.stopPropagation) {\r\n originalEvent.stopPropagation();\r\n } else {\r\n originalEvent.cancelBubble = true;\r\n }\r\n }\r\n };\r\n event$$1.stopImmediatePropagation = function () {\r\n event$$1.isImmediatePropagationStopped = returnTrue;\r\n event$$1.stopPropagation();\r\n };\r\n if (hasIsDefaultPrevented(event$$1) === false) {\r\n event$$1.isDefaultPrevented = returnFalse;\r\n event$$1.isPropagationStopped = returnFalse;\r\n event$$1.isImmediatePropagationStopped = returnFalse;\r\n }\r\n if (typeof event$$1.metaKey === 'undefined') {\r\n event$$1.metaKey = false;\r\n }\r\n return event$$1;\r\n };\r\n var bindOnReady = function (win, callback, eventUtils) {\r\n var doc = win.document, event$$1 = { type: 'ready' };\r\n if (eventUtils.domLoaded) {\r\n callback(event$$1);\r\n return;\r\n }\r\n var isDocReady = function () {\r\n return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\r\n };\r\n var readyHandler = function () {\r\n if (!eventUtils.domLoaded) {\r\n eventUtils.domLoaded = true;\r\n callback(event$$1);\r\n }\r\n };\r\n var waitForDomLoaded = function () {\r\n if (isDocReady()) {\r\n removeEvent(doc, 'readystatechange', waitForDomLoaded);\r\n readyHandler();\r\n }\r\n };\r\n var tryScroll = function () {\r\n try {\r\n doc.documentElement.doScroll('left');\r\n } catch (ex) {\r\n $_3l01gcijkmcwk99.setTimeout(tryScroll);\r\n return;\r\n }\r\n readyHandler();\r\n };\r\n if (doc.addEventListener && !($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11)) {\r\n if (isDocReady()) {\r\n readyHandler();\r\n } else {\r\n addEvent(win, 'DOMContentLoaded', readyHandler);\r\n }\r\n } else {\r\n addEvent(doc, 'readystatechange', waitForDomLoaded);\r\n if (doc.documentElement.doScroll && win.self === win.top) {\r\n tryScroll();\r\n }\r\n }\r\n addEvent(win, 'load', readyHandler);\r\n };\r\n var EventUtils = function () {\r\n var self$$1 = this;\r\n var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;\r\n expando = eventExpandoPrefix + (+new Date()).toString(32);\r\n hasMouseEnterLeave = 'onmouseenter' in document.documentElement;\r\n hasFocusIn = 'onfocusin' in document.documentElement;\r\n mouseEnterLeave = {\r\n mouseenter: 'mouseover',\r\n mouseleave: 'mouseout'\r\n };\r\n count = 1;\r\n self$$1.domLoaded = false;\r\n self$$1.events = events;\r\n var executeHandlers = function (evt, id) {\r\n var callbackList, i, l, callback;\r\n var container = events[id];\r\n callbackList = container && container[evt.type];\r\n if (callbackList) {\r\n for (i = 0, l = callbackList.length; i < l; i++) {\r\n callback = callbackList[i];\r\n if (callback && callback.func.call(callback.scope, evt) === false) {\r\n evt.preventDefault();\r\n }\r\n if (evt.isImmediatePropagationStopped()) {\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n self$$1.bind = function (target, names, callback, scope) {\r\n var id, callbackList, i, name$$1, fakeName, nativeHandler, capture;\r\n var win = window;\r\n var defaultNativeHandler = function (evt) {\r\n executeHandlers(fix(evt || win.event), id);\r\n };\r\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\r\n return;\r\n }\r\n if (!target[expando]) {\r\n id = count++;\r\n target[expando] = id;\r\n events[id] = {};\r\n } else {\r\n id = target[expando];\r\n }\r\n scope = scope || target;\r\n names = names.split(' ');\r\n i = names.length;\r\n while (i--) {\r\n name$$1 = names[i];\r\n nativeHandler = defaultNativeHandler;\r\n fakeName = capture = false;\r\n if (name$$1 === 'DOMContentLoaded') {\r\n name$$1 = 'ready';\r\n }\r\n if (self$$1.domLoaded && name$$1 === 'ready' && target.readyState === 'complete') {\r\n callback.call(scope, fix({ type: name$$1 }));\r\n continue;\r\n }\r\n if (!hasMouseEnterLeave) {\r\n fakeName = mouseEnterLeave[name$$1];\r\n if (fakeName) {\r\n nativeHandler = function (evt) {\r\n var current, related;\r\n current = evt.currentTarget;\r\n related = evt.relatedTarget;\r\n if (related && current.contains) {\r\n related = current.contains(related);\r\n } else {\r\n while (related && related !== current) {\r\n related = related.parentNode;\r\n }\r\n }\r\n if (!related) {\r\n evt = fix(evt || win.event);\r\n evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';\r\n evt.target = current;\r\n executeHandlers(evt, id);\r\n }\r\n };\r\n }\r\n }\r\n if (!hasFocusIn && (name$$1 === 'focusin' || name$$1 === 'focusout')) {\r\n capture = true;\r\n fakeName = name$$1 === 'focusin' ? 'focus' : 'blur';\r\n nativeHandler = function (evt) {\r\n evt = fix(evt || win.event);\r\n evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';\r\n executeHandlers(evt, id);\r\n };\r\n }\r\n callbackList = events[id][name$$1];\r\n if (!callbackList) {\r\n events[id][name$$1] = callbackList = [{\r\n func: callback,\r\n scope: scope\r\n }];\r\n callbackList.fakeName = fakeName;\r\n callbackList.capture = capture;\r\n callbackList.nativeHandler = nativeHandler;\r\n if (name$$1 === 'ready') {\r\n bindOnReady(target, nativeHandler, self$$1);\r\n } else {\r\n addEvent(target, fakeName || name$$1, nativeHandler, capture);\r\n }\r\n } else {\r\n if (name$$1 === 'ready' && self$$1.domLoaded) {\r\n callback({ type: name$$1 });\r\n } else {\r\n callbackList.push({\r\n func: callback,\r\n scope: scope\r\n });\r\n }\r\n }\r\n }\r\n target = callbackList = 0;\r\n return callback;\r\n };\r\n self$$1.unbind = function (target, names, callback) {\r\n var id, callbackList, i, ci, name$$1, eventMap;\r\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\r\n return self$$1;\r\n }\r\n id = target[expando];\r\n if (id) {\r\n eventMap = events[id];\r\n if (names) {\r\n names = names.split(' ');\r\n i = names.length;\r\n while (i--) {\r\n name$$1 = names[i];\r\n callbackList = eventMap[name$$1];\r\n if (callbackList) {\r\n if (callback) {\r\n ci = callbackList.length;\r\n while (ci--) {\r\n if (callbackList[ci].func === callback) {\r\n var nativeHandler = callbackList.nativeHandler;\r\n var fakeName = callbackList.fakeName, capture = callbackList.capture;\r\n callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\r\n callbackList.nativeHandler = nativeHandler;\r\n callbackList.fakeName = fakeName;\r\n callbackList.capture = capture;\r\n eventMap[name$$1] = callbackList;\r\n }\r\n }\r\n }\r\n if (!callback || callbackList.length === 0) {\r\n delete eventMap[name$$1];\r\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\r\n }\r\n }\r\n }\r\n } else {\r\n for (name$$1 in eventMap) {\r\n callbackList = eventMap[name$$1];\r\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\r\n }\r\n eventMap = {};\r\n }\r\n for (name$$1 in eventMap) {\r\n return self$$1;\r\n }\r\n delete events[id];\r\n try {\r\n delete target[expando];\r\n } catch (ex) {\r\n target[expando] = null;\r\n }\r\n }\r\n return self$$1;\r\n };\r\n self$$1.fire = function (target, name$$1, args) {\r\n var id;\r\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\r\n return self$$1;\r\n }\r\n args = fix(null, args);\r\n args.type = name$$1;\r\n args.target = target;\r\n do {\r\n id = target[expando];\r\n if (id) {\r\n executeHandlers(args, id);\r\n }\r\n target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\r\n } while (target && !args.isPropagationStopped());\r\n return self$$1;\r\n };\r\n self$$1.clean = function (target) {\r\n var i, children;\r\n var unbind = self$$1.unbind;\r\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\r\n return self$$1;\r\n }\r\n if (target[expando]) {\r\n unbind(target);\r\n }\r\n if (!target.getElementsByTagName) {\r\n target = target.document;\r\n }\r\n if (target && target.getElementsByTagName) {\r\n unbind(target);\r\n children = target.getElementsByTagName('*');\r\n i = children.length;\r\n while (i--) {\r\n target = children[i];\r\n if (target[expando]) {\r\n unbind(target);\r\n }\r\n }\r\n }\r\n return self$$1;\r\n };\r\n self$$1.destroy = function () {\r\n events = {};\r\n };\r\n self$$1.cancel = function (e) {\r\n if (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n return false;\r\n };\r\n };\r\n EventUtils.Event = new EventUtils();\r\n EventUtils.Event.bind(window, 'ready', function () {\r\n });\r\n\r\n var i;\r\n var support;\r\n var Expr;\r\n var getText;\r\n var isXML;\r\n var tokenize;\r\n var compile;\r\n var select;\r\n var outermostContext;\r\n var sortInput;\r\n var hasDuplicate;\r\n var setDocument;\r\n var document$1;\r\n var docElem;\r\n var documentIsHTML;\r\n var rbuggyQSA;\r\n var rbuggyMatches;\r\n var matches;\r\n var contains$1;\r\n var expando = 'sizzle' + -new Date();\r\n var preferredDoc = window.document;\r\n var dirruns = 0;\r\n var done = 0;\r\n var classCache = createCache();\r\n var tokenCache = createCache();\r\n var compilerCache = createCache();\r\n var sortOrder = function (a, b) {\r\n if (a === b) {\r\n hasDuplicate = true;\r\n }\r\n return 0;\r\n };\r\n var strundefined = typeof undefined;\r\n var MAX_NEGATIVE = 1 << 31;\r\n var hasOwn = {}.hasOwnProperty;\r\n var arr = [];\r\n var pop = arr.pop;\r\n var push_native = arr.push;\r\n var push$1 = arr.push;\r\n var slice$1 = arr.slice;\r\n var indexOf$1 = arr.indexOf || function (elem) {\r\n var i = 0, len = this.length;\r\n for (; i < len; i++) {\r\n if (this[i] === elem) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped';\r\n var whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]';\r\n var identifier = '(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+';\r\n var attributes = '\\\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\"|(' + identifier + '))|)' + whitespace + '*\\\\]';\r\n var pseudos = ':(' + identifier + ')(?:\\\\((' + '(\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\")|' + '((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|' + attributes + ')*)|' + '.*' + ')\\\\)|)';\r\n var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g');\r\n var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*');\r\n var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*');\r\n var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\\\]\\'\"]*?)' + whitespace + '*\\\\]', 'g');\r\n var rpseudo = new RegExp(pseudos);\r\n var ridentifier = new RegExp('^' + identifier + '$');\r\n var matchExpr = {\r\n ID: new RegExp('^#(' + identifier + ')'),\r\n CLASS: new RegExp('^\\\\.(' + identifier + ')'),\r\n TAG: new RegExp('^(' + identifier + '|[*])'),\r\n ATTR: new RegExp('^' + attributes),\r\n PSEUDO: new RegExp('^' + pseudos),\r\n CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(' + whitespace + '*(even|odd|(([+-]|)(\\\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\\\d+)|))' + whitespace + '*\\\\)|)', 'i'),\r\n bool: new RegExp('^(?:' + booleans + ')$', 'i'),\r\n needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(' + whitespace + '*((?:-\\\\d)?\\\\d*)' + whitespace + '*\\\\)|)(?=[^-]|$)', 'i')\r\n };\r\n var rinputs = /^(?:input|select|textarea|button)$/i;\r\n var rheader = /^h\\d$/i;\r\n var rnative = /^[^{]+\\{\\s*\\[native \\w/;\r\n var rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/;\r\n var rsibling = /[+~]/;\r\n var rescape = /'|\\\\/g;\r\n var runescape = new RegExp('\\\\\\\\([\\\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');\r\n var funescape = function (_, escaped, escapedWhitespace) {\r\n var high = '0x' + escaped - 65536;\r\n return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);\r\n };\r\n try {\r\n push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes);\r\n arr[preferredDoc.childNodes.length].nodeType;\r\n } catch (e) {\r\n push$1 = {\r\n apply: arr.length ? function (target, els) {\r\n push_native.apply(target, slice$1.call(els));\r\n } : function (target, els) {\r\n var j = target.length, i = 0;\r\n while (target[j++] = els[i++]) {\r\n }\r\n target.length = j - 1;\r\n }\r\n };\r\n }\r\n var Sizzle = function (selector, context, results, seed) {\r\n var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;\r\n if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) {\r\n setDocument(context);\r\n }\r\n context = context || document$1;\r\n results = results || [];\r\n if (!selector || typeof selector !== 'string') {\r\n return results;\r\n }\r\n if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) {\r\n return [];\r\n }\r\n if (documentIsHTML && !seed) {\r\n if (match = rquickExpr.exec(selector)) {\r\n if (m = match[1]) {\r\n if (nodeType === 9) {\r\n elem = context.getElementById(m);\r\n if (elem && elem.parentNode) {\r\n if (elem.id === m) {\r\n results.push(elem);\r\n return results;\r\n }\r\n } else {\r\n return results;\r\n }\r\n } else {\r\n if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) {\r\n results.push(elem);\r\n return results;\r\n }\r\n }\r\n } else if (match[2]) {\r\n push$1.apply(results, context.getElementsByTagName(selector));\r\n return results;\r\n } else if ((m = match[3]) && support.getElementsByClassName) {\r\n push$1.apply(results, context.getElementsByClassName(m));\r\n return results;\r\n }\r\n }\r\n if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\r\n nid = old = expando;\r\n newContext = context;\r\n newSelector = nodeType === 9 && selector;\r\n if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') {\r\n groups = tokenize(selector);\r\n if (old = context.getAttribute('id')) {\r\n nid = old.replace(rescape, '\\\\$&');\r\n } else {\r\n context.setAttribute('id', nid);\r\n }\r\n nid = '[id=\\'' + nid + '\\'] ';\r\n i = groups.length;\r\n while (i--) {\r\n groups[i] = nid + toSelector(groups[i]);\r\n }\r\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\r\n newSelector = groups.join(',');\r\n }\r\n if (newSelector) {\r\n try {\r\n push$1.apply(results, newContext.querySelectorAll(newSelector));\r\n return results;\r\n } catch (qsaError) {\r\n } finally {\r\n if (!old) {\r\n context.removeAttribute('id');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return select(selector.replace(rtrim, '$1'), context, results, seed);\r\n };\r\n function createCache() {\r\n var keys = [];\r\n function cache(key, value) {\r\n if (keys.push(key + ' ') > Expr.cacheLength) {\r\n delete cache[keys.shift()];\r\n }\r\n return cache[key + ' '] = value;\r\n }\r\n return cache;\r\n }\r\n function markFunction(fn) {\r\n fn[expando] = true;\r\n return fn;\r\n }\r\n function siblingCheck(a, b) {\r\n var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);\r\n if (diff) {\r\n return diff;\r\n }\r\n if (cur) {\r\n while (cur = cur.nextSibling) {\r\n if (cur === b) {\r\n return -1;\r\n }\r\n }\r\n }\r\n return a ? 1 : -1;\r\n }\r\n function createInputPseudo(type) {\r\n return function (elem) {\r\n var name$$1 = elem.nodeName.toLowerCase();\r\n return name$$1 === 'input' && elem.type === type;\r\n };\r\n }\r\n function createButtonPseudo(type) {\r\n return function (elem) {\r\n var name$$1 = elem.nodeName.toLowerCase();\r\n return (name$$1 === 'input' || name$$1 === 'button') && elem.type === type;\r\n };\r\n }\r\n function createPositionalPseudo(fn) {\r\n return markFunction(function (argument) {\r\n argument = +argument;\r\n return markFunction(function (seed, matches) {\r\n var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;\r\n while (i--) {\r\n if (seed[j = matchIndexes[i]]) {\r\n seed[j] = !(matches[j] = seed[j]);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n function testContext(context) {\r\n return context && typeof context.getElementsByTagName !== strundefined && context;\r\n }\r\n support = Sizzle.support = {};\r\n isXML = Sizzle.isXML = function (elem) {\r\n var documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n return documentElement ? documentElement.nodeName !== 'HTML' : false;\r\n };\r\n setDocument = Sizzle.setDocument = function (node) {\r\n var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent$$1 = doc.defaultView;\r\n function getTop(win) {\r\n try {\r\n return win.top;\r\n } catch (ex) {\r\n }\r\n return null;\r\n }\r\n if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) {\r\n return document$1;\r\n }\r\n document$1 = doc;\r\n docElem = doc.documentElement;\r\n documentIsHTML = !isXML(doc);\r\n if (parent$$1 && parent$$1 !== getTop(parent$$1)) {\r\n if (parent$$1.addEventListener) {\r\n parent$$1.addEventListener('unload', function () {\r\n setDocument();\r\n }, false);\r\n } else if (parent$$1.attachEvent) {\r\n parent$$1.attachEvent('onunload', function () {\r\n setDocument();\r\n });\r\n }\r\n }\r\n support.attributes = true;\r\n support.getElementsByTagName = true;\r\n support.getElementsByClassName = rnative.test(doc.getElementsByClassName);\r\n support.getById = true;\r\n Expr.find.ID = function (id, context) {\r\n if (typeof context.getElementById !== strundefined && documentIsHTML) {\r\n var m = context.getElementById(id);\r\n return m && m.parentNode ? [m] : [];\r\n }\r\n };\r\n Expr.filter.ID = function (id) {\r\n var attrId = id.replace(runescape, funescape);\r\n return function (elem) {\r\n return elem.getAttribute('id') === attrId;\r\n };\r\n };\r\n Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {\r\n if (typeof context.getElementsByTagName !== strundefined) {\r\n return context.getElementsByTagName(tag);\r\n }\r\n } : function (tag, context) {\r\n var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);\r\n if (tag === '*') {\r\n while (elem = results[i++]) {\r\n if (elem.nodeType === 1) {\r\n tmp.push(elem);\r\n }\r\n }\r\n return tmp;\r\n }\r\n return results;\r\n };\r\n Expr.find.CLASS = support.getElementsByClassName && function (className, context) {\r\n if (documentIsHTML) {\r\n return context.getElementsByClassName(className);\r\n }\r\n };\r\n rbuggyMatches = [];\r\n rbuggyQSA = [];\r\n support.disconnectedMatch = true;\r\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));\r\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));\r\n hasCompare = rnative.test(docElem.compareDocumentPosition);\r\n contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\r\n var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;\r\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\r\n } : function (a, b) {\r\n if (b) {\r\n while (b = b.parentNode) {\r\n if (b === a) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n sortOrder = hasCompare ? function (a, b) {\r\n if (a === b) {\r\n hasDuplicate = true;\r\n return 0;\r\n }\r\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n if (compare) {\r\n return compare;\r\n }\r\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;\r\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\r\n if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) {\r\n return -1;\r\n }\r\n if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) {\r\n return 1;\r\n }\r\n return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\r\n }\r\n return compare & 4 ? -1 : 1;\r\n } : function (a, b) {\r\n if (a === b) {\r\n hasDuplicate = true;\r\n return 0;\r\n }\r\n var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];\r\n if (!aup || !bup) {\r\n return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\r\n } else if (aup === bup) {\r\n return siblingCheck(a, b);\r\n }\r\n cur = a;\r\n while (cur = cur.parentNode) {\r\n ap.unshift(cur);\r\n }\r\n cur = b;\r\n while (cur = cur.parentNode) {\r\n bp.unshift(cur);\r\n }\r\n while (ap[i] === bp[i]) {\r\n i++;\r\n }\r\n return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\r\n };\r\n return doc;\r\n };\r\n Sizzle.matches = function (expr, elements) {\r\n return Sizzle(expr, null, null, elements);\r\n };\r\n Sizzle.matchesSelector = function (elem, expr) {\r\n if ((elem.ownerDocument || elem) !== document$1) {\r\n setDocument(elem);\r\n }\r\n expr = expr.replace(rattributeQuotes, '=\\'$1\\']');\r\n if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\r\n try {\r\n var ret = matches.call(elem, expr);\r\n if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {\r\n return ret;\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n return Sizzle(expr, document$1, null, [elem]).length > 0;\r\n };\r\n Sizzle.contains = function (context, elem) {\r\n if ((context.ownerDocument || context) !== document$1) {\r\n setDocument(context);\r\n }\r\n return contains$1(context, elem);\r\n };\r\n Sizzle.attr = function (elem, name$$1) {\r\n if ((elem.ownerDocument || elem) !== document$1) {\r\n setDocument(elem);\r\n }\r\n var fn = Expr.attrHandle[name$$1.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name$$1.toLowerCase()) ? fn(elem, name$$1, !documentIsHTML) : undefined;\r\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name$$1) : (val = elem.getAttributeNode(name$$1)) && val.specified ? val.value : null;\r\n };\r\n Sizzle.error = function (msg) {\r\n throw new Error('Syntax error, unrecognized expression: ' + msg);\r\n };\r\n Sizzle.uniqueSort = function (results) {\r\n var elem, duplicates = [], j = 0, i = 0;\r\n hasDuplicate = !support.detectDuplicates;\r\n sortInput = !support.sortStable && results.slice(0);\r\n results.sort(sortOrder);\r\n if (hasDuplicate) {\r\n while (elem = results[i++]) {\r\n if (elem === results[i]) {\r\n j = duplicates.push(i);\r\n }\r\n }\r\n while (j--) {\r\n results.splice(duplicates[j], 1);\r\n }\r\n }\r\n sortInput = null;\r\n return results;\r\n };\r\n getText = Sizzle.getText = function (elem) {\r\n var node, ret = '', i = 0, nodeType = elem.nodeType;\r\n if (!nodeType) {\r\n while (node = elem[i++]) {\r\n ret += getText(node);\r\n }\r\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\r\n if (typeof elem.textContent === 'string') {\r\n return elem.textContent;\r\n } else {\r\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\r\n ret += getText(elem);\r\n }\r\n }\r\n } else if (nodeType === 3 || nodeType === 4) {\r\n return elem.nodeValue;\r\n }\r\n return ret;\r\n };\r\n Expr = Sizzle.selectors = {\r\n cacheLength: 50,\r\n createPseudo: markFunction,\r\n match: matchExpr,\r\n attrHandle: {},\r\n find: {},\r\n relative: {\r\n '>': {\r\n dir: 'parentNode',\r\n first: true\r\n },\r\n ' ': { dir: 'parentNode' },\r\n '+': {\r\n dir: 'previousSibling',\r\n first: true\r\n },\r\n '~': { dir: 'previousSibling' }\r\n },\r\n preFilter: {\r\n ATTR: function (match) {\r\n match[1] = match[1].replace(runescape, funescape);\r\n match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);\r\n if (match[2] === '~=') {\r\n match[3] = ' ' + match[3] + ' ';\r\n }\r\n return match.slice(0, 4);\r\n },\r\n CHILD: function (match) {\r\n match[1] = match[1].toLowerCase();\r\n if (match[1].slice(0, 3) === 'nth') {\r\n if (!match[3]) {\r\n Sizzle.error(match[0]);\r\n }\r\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd'));\r\n match[5] = +(match[7] + match[8] || match[3] === 'odd');\r\n } else if (match[3]) {\r\n Sizzle.error(match[0]);\r\n }\r\n return match;\r\n },\r\n PSEUDO: function (match) {\r\n var excess, unquoted = !match[6] && match[2];\r\n if (matchExpr.CHILD.test(match[0])) {\r\n return null;\r\n }\r\n if (match[3]) {\r\n match[2] = match[4] || match[5] || '';\r\n } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {\r\n match[0] = match[0].slice(0, excess);\r\n match[2] = unquoted.slice(0, excess);\r\n }\r\n return match.slice(0, 3);\r\n }\r\n },\r\n filter: {\r\n TAG: function (nodeNameSelector) {\r\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\r\n return nodeNameSelector === '*' ? function () {\r\n return true;\r\n } : function (elem) {\r\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n };\r\n },\r\n CLASS: function (className) {\r\n var pattern = classCache[className + ' '];\r\n return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) {\r\n return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || '');\r\n });\r\n },\r\n ATTR: function (name$$1, operator, check) {\r\n return function (elem) {\r\n var result = Sizzle.attr(elem, name$$1);\r\n if (result == null) {\r\n return operator === '!=';\r\n }\r\n if (!operator) {\r\n return true;\r\n }\r\n result += '';\r\n return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false;\r\n };\r\n },\r\n CHILD: function (type, what, argument, first, last) {\r\n var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';\r\n return first === 1 && last === 0 ? function (elem) {\r\n return !!elem.parentNode;\r\n } : function (elem, context, xml) {\r\n var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent$$1 = elem.parentNode, name$$1 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;\r\n if (parent$$1) {\r\n if (simple) {\r\n while (dir) {\r\n node = elem;\r\n while (node = node[dir]) {\r\n if (ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) {\r\n return false;\r\n }\r\n }\r\n start = dir = type === 'only' && !start && 'nextSibling';\r\n }\r\n return true;\r\n }\r\n start = [forward ? parent$$1.firstChild : parent$$1.lastChild];\r\n if (forward && useCache) {\r\n outerCache = parent$$1[expando] || (parent$$1[expando] = {});\r\n cache = outerCache[type] || [];\r\n nodeIndex = cache[0] === dirruns && cache[1];\r\n diff = cache[0] === dirruns && cache[2];\r\n node = nodeIndex && parent$$1.childNodes[nodeIndex];\r\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\r\n if (node.nodeType === 1 && ++diff && node === elem) {\r\n outerCache[type] = [\r\n dirruns,\r\n nodeIndex,\r\n diff\r\n ];\r\n break;\r\n }\r\n }\r\n } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) {\r\n diff = cache[1];\r\n } else {\r\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\r\n if ((ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) && ++diff) {\r\n if (useCache) {\r\n (node[expando] || (node[expando] = {}))[type] = [\r\n dirruns,\r\n diff\r\n ];\r\n }\r\n if (node === elem) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n diff -= last;\r\n return diff === first || diff % first === 0 && diff / first >= 0;\r\n }\r\n };\r\n },\r\n PSEUDO: function (pseudo, argument) {\r\n var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);\r\n if (fn[expando]) {\r\n return fn(argument);\r\n }\r\n if (fn.length > 1) {\r\n args = [\r\n pseudo,\r\n pseudo,\r\n '',\r\n argument\r\n ];\r\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\r\n var idx, matched = fn(seed, argument), i = matched.length;\r\n while (i--) {\r\n idx = indexOf$1.call(seed, matched[i]);\r\n seed[idx] = !(matches[idx] = matched[i]);\r\n }\r\n }) : function (elem) {\r\n return fn(elem, 0, args);\r\n };\r\n }\r\n return fn;\r\n }\r\n },\r\n pseudos: {\r\n not: markFunction(function (selector) {\r\n var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));\r\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\r\n var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;\r\n while (i--) {\r\n if (elem = unmatched[i]) {\r\n seed[i] = !(matches[i] = elem);\r\n }\r\n }\r\n }) : function (elem, context, xml) {\r\n input[0] = elem;\r\n matcher(input, null, xml, results);\r\n return !results.pop();\r\n };\r\n }),\r\n has: markFunction(function (selector) {\r\n return function (elem) {\r\n return Sizzle(selector, elem).length > 0;\r\n };\r\n }),\r\n contains: markFunction(function (text) {\r\n text = text.replace(runescape, funescape);\r\n return function (elem) {\r\n return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;\r\n };\r\n }),\r\n lang: markFunction(function (lang) {\r\n if (!ridentifier.test(lang || '')) {\r\n Sizzle.error('unsupported lang: ' + lang);\r\n }\r\n lang = lang.replace(runescape, funescape).toLowerCase();\r\n return function (elem) {\r\n var elemLang;\r\n do {\r\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) {\r\n elemLang = elemLang.toLowerCase();\r\n return elemLang === lang || elemLang.indexOf(lang + '-') === 0;\r\n }\r\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\r\n return false;\r\n };\r\n }),\r\n target: function (elem) {\r\n var hash = window.location && window.location.hash;\r\n return hash && hash.slice(1) === elem.id;\r\n },\r\n root: function (elem) {\r\n return elem === docElem;\r\n },\r\n focus: function (elem) {\r\n return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n },\r\n enabled: function (elem) {\r\n return elem.disabled === false;\r\n },\r\n disabled: function (elem) {\r\n return elem.disabled === true;\r\n },\r\n checked: function (elem) {\r\n var nodeName = elem.nodeName.toLowerCase();\r\n return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;\r\n },\r\n selected: function (elem) {\r\n if (elem.parentNode) {\r\n elem.parentNode.selectedIndex;\r\n }\r\n return elem.selected === true;\r\n },\r\n empty: function (elem) {\r\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\r\n if (elem.nodeType < 6) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n parent: function (elem) {\r\n return !Expr.pseudos.empty(elem);\r\n },\r\n header: function (elem) {\r\n return rheader.test(elem.nodeName);\r\n },\r\n input: function (elem) {\r\n return rinputs.test(elem.nodeName);\r\n },\r\n button: function (elem) {\r\n var name$$1 = elem.nodeName.toLowerCase();\r\n return name$$1 === 'input' && elem.type === 'button' || name$$1 === 'button';\r\n },\r\n text: function (elem) {\r\n var attr;\r\n return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text');\r\n },\r\n first: createPositionalPseudo(function () {\r\n return [0];\r\n }),\r\n last: createPositionalPseudo(function (matchIndexes, length$$1) {\r\n return [length$$1 - 1];\r\n }),\r\n eq: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\r\n return [argument < 0 ? argument + length$$1 : argument];\r\n }),\r\n even: createPositionalPseudo(function (matchIndexes, length$$1) {\r\n var i = 0;\r\n for (; i < length$$1; i += 2) {\r\n matchIndexes.push(i);\r\n }\r\n return matchIndexes;\r\n }),\r\n odd: createPositionalPseudo(function (matchIndexes, length$$1) {\r\n var i = 1;\r\n for (; i < length$$1; i += 2) {\r\n matchIndexes.push(i);\r\n }\r\n return matchIndexes;\r\n }),\r\n lt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\r\n var i = argument < 0 ? argument + length$$1 : argument;\r\n for (; --i >= 0;) {\r\n matchIndexes.push(i);\r\n }\r\n return matchIndexes;\r\n }),\r\n gt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\r\n var i = argument < 0 ? argument + length$$1 : argument;\r\n for (; ++i < length$$1;) {\r\n matchIndexes.push(i);\r\n }\r\n return matchIndexes;\r\n })\r\n }\r\n };\r\n Expr.pseudos.nth = Expr.pseudos.eq;\r\n for (i in {\r\n radio: true,\r\n checkbox: true,\r\n file: true,\r\n password: true,\r\n image: true\r\n }) {\r\n Expr.pseudos[i] = createInputPseudo(i);\r\n }\r\n for (i in {\r\n submit: true,\r\n reset: true\r\n }) {\r\n Expr.pseudos[i] = createButtonPseudo(i);\r\n }\r\n function setFilters() {\r\n }\r\n setFilters.prototype = Expr.filters = Expr.pseudos;\r\n Expr.setFilters = new setFilters();\r\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\r\n var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];\r\n if (cached) {\r\n return parseOnly ? 0 : cached.slice(0);\r\n }\r\n soFar = selector;\r\n groups = [];\r\n preFilters = Expr.preFilter;\r\n while (soFar) {\r\n if (!matched || (match = rcomma.exec(soFar))) {\r\n if (match) {\r\n soFar = soFar.slice(match[0].length) || soFar;\r\n }\r\n groups.push(tokens = []);\r\n }\r\n matched = false;\r\n if (match = rcombinators.exec(soFar)) {\r\n matched = match.shift();\r\n tokens.push({\r\n value: matched,\r\n type: match[0].replace(rtrim, ' ')\r\n });\r\n soFar = soFar.slice(matched.length);\r\n }\r\n for (type in Expr.filter) {\r\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\r\n matched = match.shift();\r\n tokens.push({\r\n value: matched,\r\n type: type,\r\n matches: match\r\n });\r\n soFar = soFar.slice(matched.length);\r\n }\r\n }\r\n if (!matched) {\r\n break;\r\n }\r\n }\r\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);\r\n };\r\n function toSelector(tokens) {\r\n var i = 0, len = tokens.length, selector = '';\r\n for (; i < len; i++) {\r\n selector += tokens[i].value;\r\n }\r\n return selector;\r\n }\r\n function addCombinator(matcher, combinator, base) {\r\n var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;\r\n return combinator.first ? function (elem, context, xml) {\r\n while (elem = elem[dir]) {\r\n if (elem.nodeType === 1 || checkNonElements) {\r\n return matcher(elem, context, xml);\r\n }\r\n }\r\n } : function (elem, context, xml) {\r\n var oldCache, outerCache, newCache = [\r\n dirruns,\r\n doneName\r\n ];\r\n if (xml) {\r\n while (elem = elem[dir]) {\r\n if (elem.nodeType === 1 || checkNonElements) {\r\n if (matcher(elem, context, xml)) {\r\n return true;\r\n }\r\n }\r\n }\r\n } else {\r\n while (elem = elem[dir]) {\r\n if (elem.nodeType === 1 || checkNonElements) {\r\n outerCache = elem[expando] || (elem[expando] = {});\r\n if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\r\n return newCache[2] = oldCache[2];\r\n } else {\r\n outerCache[dir] = newCache;\r\n if (newCache[2] = matcher(elem, context, xml)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n function elementMatcher(matchers) {\r\n return matchers.length > 1 ? function (elem, context, xml) {\r\n var i = matchers.length;\r\n while (i--) {\r\n if (!matchers[i](elem, context, xml)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } : matchers[0];\r\n }\r\n function multipleContexts(selector, contexts, results) {\r\n var i = 0, len = contexts.length;\r\n for (; i < len; i++) {\r\n Sizzle(selector, contexts[i], results);\r\n }\r\n return results;\r\n }\r\n function condense(unmatched, map, filter, context, xml) {\r\n var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;\r\n for (; i < len; i++) {\r\n if (elem = unmatched[i]) {\r\n if (!filter || filter(elem, context, xml)) {\r\n newUnmatched.push(elem);\r\n if (mapped) {\r\n map.push(i);\r\n }\r\n }\r\n }\r\n }\r\n return newUnmatched;\r\n }\r\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\r\n if (postFilter && !postFilter[expando]) {\r\n postFilter = setMatcher(postFilter);\r\n }\r\n if (postFinder && !postFinder[expando]) {\r\n postFinder = setMatcher(postFinder, postSelector);\r\n }\r\n return markFunction(function (seed, results, context, xml) {\r\n var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;\r\n if (matcher) {\r\n matcher(matcherIn, matcherOut, context, xml);\r\n }\r\n if (postFilter) {\r\n temp = condense(matcherOut, postMap);\r\n postFilter(temp, [], context, xml);\r\n i = temp.length;\r\n while (i--) {\r\n if (elem = temp[i]) {\r\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\r\n }\r\n }\r\n }\r\n if (seed) {\r\n if (postFinder || preFilter) {\r\n if (postFinder) {\r\n temp = [];\r\n i = matcherOut.length;\r\n while (i--) {\r\n if (elem = matcherOut[i]) {\r\n temp.push(matcherIn[i] = elem);\r\n }\r\n }\r\n postFinder(null, matcherOut = [], temp, xml);\r\n }\r\n i = matcherOut.length;\r\n while (i--) {\r\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) {\r\n seed[temp] = !(results[temp] = elem);\r\n }\r\n }\r\n }\r\n } else {\r\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\r\n if (postFinder) {\r\n postFinder(null, results, matcherOut, xml);\r\n } else {\r\n push$1.apply(results, matcherOut);\r\n }\r\n }\r\n });\r\n }\r\n function matcherFromTokens(tokens) {\r\n var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {\r\n return elem === checkContext;\r\n }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {\r\n return indexOf$1.call(checkContext, elem) > -1;\r\n }, implicitRelative, true), matchers = [function (elem, context, xml) {\r\n return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\r\n }];\r\n for (; i < len; i++) {\r\n if (matcher = Expr.relative[tokens[i].type]) {\r\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\r\n } else {\r\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\r\n if (matcher[expando]) {\r\n j = ++i;\r\n for (; j < len; j++) {\r\n if (Expr.relative[tokens[j].type]) {\r\n break;\r\n }\r\n }\r\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\r\n }\r\n matchers.push(matcher);\r\n }\r\n }\r\n return elementMatcher(matchers);\r\n }\r\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\r\n var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {\r\n var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;\r\n if (outermost) {\r\n outermostContext = context !== document$1 && context;\r\n }\r\n for (; i !== len && (elem = elems[i]) != null; i++) {\r\n if (byElement && elem) {\r\n j = 0;\r\n while (matcher = elementMatchers[j++]) {\r\n if (matcher(elem, context, xml)) {\r\n results.push(elem);\r\n break;\r\n }\r\n }\r\n if (outermost) {\r\n dirruns = dirrunsUnique;\r\n }\r\n }\r\n if (bySet) {\r\n if (elem = !matcher && elem) {\r\n matchedCount--;\r\n }\r\n if (seed) {\r\n unmatched.push(elem);\r\n }\r\n }\r\n }\r\n matchedCount += i;\r\n if (bySet && i !== matchedCount) {\r\n j = 0;\r\n while (matcher = setMatchers[j++]) {\r\n matcher(unmatched, setMatched, context, xml);\r\n }\r\n if (seed) {\r\n if (matchedCount > 0) {\r\n while (i--) {\r\n if (!(unmatched[i] || setMatched[i])) {\r\n setMatched[i] = pop.call(results);\r\n }\r\n }\r\n }\r\n setMatched = condense(setMatched);\r\n }\r\n push$1.apply(results, setMatched);\r\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\r\n Sizzle.uniqueSort(results);\r\n }\r\n }\r\n if (outermost) {\r\n dirruns = dirrunsUnique;\r\n outermostContext = contextBackup;\r\n }\r\n return unmatched;\r\n };\r\n return bySet ? markFunction(superMatcher) : superMatcher;\r\n }\r\n compile = Sizzle.compile = function (selector, match) {\r\n var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];\r\n if (!cached) {\r\n if (!match) {\r\n match = tokenize(selector);\r\n }\r\n i = match.length;\r\n while (i--) {\r\n cached = matcherFromTokens(match[i]);\r\n if (cached[expando]) {\r\n setMatchers.push(cached);\r\n } else {\r\n elementMatchers.push(cached);\r\n }\r\n }\r\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\r\n cached.selector = selector;\r\n }\r\n return cached;\r\n };\r\n select = Sizzle.select = function (selector, context, results, seed) {\r\n var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);\r\n results = results || [];\r\n if (match.length === 1) {\r\n tokens = match[0] = match[0].slice(0);\r\n if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\r\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\r\n if (!context) {\r\n return results;\r\n } else if (compiled) {\r\n context = context.parentNode;\r\n }\r\n selector = selector.slice(tokens.shift().value.length);\r\n }\r\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\r\n while (i--) {\r\n token = tokens[i];\r\n if (Expr.relative[type = token.type]) {\r\n break;\r\n }\r\n if (find = Expr.find[type]) {\r\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\r\n tokens.splice(i, 1);\r\n selector = seed.length && toSelector(tokens);\r\n if (!selector) {\r\n push$1.apply(results, seed);\r\n return results;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context);\r\n return results;\r\n };\r\n support.sortStable = expando.split('').sort(sortOrder).join('') === expando;\r\n support.detectDuplicates = !!hasDuplicate;\r\n setDocument();\r\n support.sortDetached = true;\r\n\r\n var isArray$1 = Array.isArray;\r\n var toArray = function (obj) {\r\n var array = obj, i, l;\r\n if (!isArray$1(obj)) {\r\n array = [];\r\n for (i = 0, l = obj.length; i < l; i++) {\r\n array[i] = obj[i];\r\n }\r\n }\r\n return array;\r\n };\r\n var each$1 = function (o, cb, s) {\r\n var n, l;\r\n if (!o) {\r\n return 0;\r\n }\r\n s = s || o;\r\n if (o.length !== undefined) {\r\n for (n = 0, l = o.length; n < l; n++) {\r\n if (cb.call(s, o[n], n, o) === false) {\r\n return 0;\r\n }\r\n }\r\n } else {\r\n for (n in o) {\r\n if (o.hasOwnProperty(n)) {\r\n if (cb.call(s, o[n], n, o) === false) {\r\n return 0;\r\n }\r\n }\r\n }\r\n }\r\n return 1;\r\n };\r\n var map$1 = function (array, callback) {\r\n var out = [];\r\n each$1(array, function (item, index) {\r\n out.push(callback(item, index, array));\r\n });\r\n return out;\r\n };\r\n var filter$1 = function (a, f) {\r\n var o = [];\r\n each$1(a, function (v, index) {\r\n if (!f || f(v, index, a)) {\r\n o.push(v);\r\n }\r\n });\r\n return o;\r\n };\r\n var indexOf$2 = function (a, v) {\r\n var i, l;\r\n if (a) {\r\n for (i = 0, l = a.length; i < l; i++) {\r\n if (a[i] === v) {\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n };\r\n var reduce = function (collection, iteratee, accumulator, thisArg) {\r\n var i = 0;\r\n if (arguments.length < 3) {\r\n accumulator = collection[0];\r\n }\r\n for (; i < collection.length; i++) {\r\n accumulator = iteratee.call(thisArg, accumulator, collection[i], i);\r\n }\r\n return accumulator;\r\n };\r\n var findIndex$1 = function (array, predicate, thisArg) {\r\n var i, l;\r\n for (i = 0, l = array.length; i < l; i++) {\r\n if (predicate.call(thisArg, array[i], i, array)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n var find$1 = function (array, predicate, thisArg) {\r\n var idx = findIndex$1(array, predicate, thisArg);\r\n if (idx !== -1) {\r\n return array[idx];\r\n }\r\n return undefined;\r\n };\r\n var last$1 = function (collection) {\r\n return collection[collection.length - 1];\r\n };\r\n var $_9g1fibmjkmcwkbu = {\r\n isArray: isArray$1,\r\n toArray: toArray,\r\n each: each$1,\r\n map: map$1,\r\n filter: filter$1,\r\n indexOf: indexOf$2,\r\n reduce: reduce,\r\n findIndex: findIndex$1,\r\n find: find$1,\r\n last: last$1\r\n };\r\n\r\n var whiteSpaceRegExp = /^\\s*|\\s*$/g;\r\n var trim = function (str) {\r\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, '');\r\n };\r\n var is = function (obj, type) {\r\n if (!type) {\r\n return obj !== undefined;\r\n }\r\n if (type === 'array' && $_9g1fibmjkmcwkbu.isArray(obj)) {\r\n return true;\r\n }\r\n return typeof obj === type;\r\n };\r\n var makeMap = function (items, delim, map) {\r\n var i;\r\n items = items || [];\r\n delim = delim || ',';\r\n if (typeof items === 'string') {\r\n items = items.split(delim);\r\n }\r\n map = map || {};\r\n i = items.length;\r\n while (i--) {\r\n map[items[i]] = {};\r\n }\r\n return map;\r\n };\r\n var hasOwnProperty = function (obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n };\r\n var create = function (s, p, root) {\r\n var self$$1 = this;\r\n var sp, ns, cn, scn, c, de = 0;\r\n s = /^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);\r\n cn = s[3].match(/(^|\\.)(\\w+)$/i)[2];\r\n ns = self$$1.createNS(s[3].replace(/\\.\\w+$/, ''), root);\r\n if (ns[cn]) {\r\n return;\r\n }\r\n if (s[2] === 'static') {\r\n ns[cn] = p;\r\n if (this.onCreate) {\r\n this.onCreate(s[2], s[3], ns[cn]);\r\n }\r\n return;\r\n }\r\n if (!p[cn]) {\r\n p[cn] = function () {\r\n };\r\n de = 1;\r\n }\r\n ns[cn] = p[cn];\r\n self$$1.extend(ns[cn].prototype, p);\r\n if (s[5]) {\r\n sp = self$$1.resolve(s[5]).prototype;\r\n scn = s[5].match(/\\.(\\w+)$/i)[1];\r\n c = ns[cn];\r\n if (de) {\r\n ns[cn] = function () {\r\n return sp[scn].apply(this, arguments);\r\n };\r\n } else {\r\n ns[cn] = function () {\r\n this.parent = sp[scn];\r\n return c.apply(this, arguments);\r\n };\r\n }\r\n ns[cn].prototype[cn] = ns[cn];\r\n self$$1.each(sp, function (f, n) {\r\n ns[cn].prototype[n] = sp[n];\r\n });\r\n self$$1.each(p, function (f, n) {\r\n if (sp[n]) {\r\n ns[cn].prototype[n] = function () {\r\n this.parent = sp[n];\r\n return f.apply(this, arguments);\r\n };\r\n } else {\r\n if (n !== cn) {\r\n ns[cn].prototype[n] = f;\r\n }\r\n }\r\n });\r\n }\r\n self$$1.each(p.static, function (f, n) {\r\n ns[cn][n] = f;\r\n });\r\n };\r\n var extend = function (obj, ext) {\r\n var x = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n x[_i - 2] = arguments[_i];\r\n }\r\n var i, l, name$$1;\r\n var args = arguments;\r\n var value;\r\n for (i = 1, l = args.length; i < l; i++) {\r\n ext = args[i];\r\n for (name$$1 in ext) {\r\n if (ext.hasOwnProperty(name$$1)) {\r\n value = ext[name$$1];\r\n if (value !== undefined) {\r\n obj[name$$1] = value;\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n };\r\n var walk = function (o, f, n, s) {\r\n s = s || this;\r\n if (o) {\r\n if (n) {\r\n o = o[n];\r\n }\r\n $_9g1fibmjkmcwkbu.each(o, function (o, i) {\r\n if (f.call(s, o, i, n) === false) {\r\n return false;\r\n }\r\n walk(o, f, n, s);\r\n });\r\n }\r\n };\r\n var createNS = function (n, o) {\r\n var i, v;\r\n o = o || window;\r\n n = n.split('.');\r\n for (i = 0; i < n.length; i++) {\r\n v = n[i];\r\n if (!o[v]) {\r\n o[v] = {};\r\n }\r\n o = o[v];\r\n }\r\n return o;\r\n };\r\n var resolve$1 = function (n, o) {\r\n var i, l;\r\n o = o || window;\r\n n = n.split('.');\r\n for (i = 0, l = n.length; i < l; i++) {\r\n o = o[n[i]];\r\n if (!o) {\r\n break;\r\n }\r\n }\r\n return o;\r\n };\r\n var explode = function (s, d) {\r\n if (!s || is(s, 'array')) {\r\n return s;\r\n }\r\n return $_9g1fibmjkmcwkbu.map(s.split(d || ','), trim);\r\n };\r\n var _addCacheSuffix = function (url) {\r\n var cacheSuffix = $_cvvl9iajkmcwk25.cacheSuffix;\r\n if (cacheSuffix) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\r\n }\r\n return url;\r\n };\r\n var $_4ujg4tljkmcwkbk = {\r\n trim: trim,\r\n isArray: $_9g1fibmjkmcwkbu.isArray,\r\n is: is,\r\n toArray: $_9g1fibmjkmcwkbu.toArray,\r\n makeMap: makeMap,\r\n each: $_9g1fibmjkmcwkbu.each,\r\n map: $_9g1fibmjkmcwkbu.map,\r\n grep: $_9g1fibmjkmcwkbu.filter,\r\n inArray: $_9g1fibmjkmcwkbu.indexOf,\r\n hasOwn: hasOwnProperty,\r\n extend: extend,\r\n create: create,\r\n walk: walk,\r\n createNS: createNS,\r\n resolve: resolve$1,\r\n explode: explode,\r\n _addCacheSuffix: _addCacheSuffix\r\n };\r\n\r\n var doc = document;\r\n var push$2 = Array.prototype.push;\r\n var slice$2 = Array.prototype.slice;\r\n var rquickExpr$1 = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\r\n var Event$$1 = EventUtils.Event;\r\n var skipUniques = $_4ujg4tljkmcwkbk.makeMap('children,contents,next,prev');\r\n var isDefined = function (obj) {\r\n return typeof obj !== 'undefined';\r\n };\r\n var isString$1 = function (obj) {\r\n return typeof obj === 'string';\r\n };\r\n var isWindow = function (obj) {\r\n return obj && obj === obj.window;\r\n };\r\n var createFragment = function (html, fragDoc) {\r\n var frag, node, container;\r\n fragDoc = fragDoc || doc;\r\n container = fragDoc.createElement('div');\r\n frag = fragDoc.createDocumentFragment();\r\n container.innerHTML = html;\r\n while (node = container.firstChild) {\r\n frag.appendChild(node);\r\n }\r\n return frag;\r\n };\r\n var domManipulate = function (targetNodes, sourceItem, callback, reverse) {\r\n var i;\r\n if (isString$1(sourceItem)) {\r\n sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));\r\n } else if (sourceItem.length && !sourceItem.nodeType) {\r\n sourceItem = DomQuery.makeArray(sourceItem);\r\n if (reverse) {\r\n for (i = sourceItem.length - 1; i >= 0; i--) {\r\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\r\n }\r\n } else {\r\n for (i = 0; i < sourceItem.length; i++) {\r\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\r\n }\r\n }\r\n return targetNodes;\r\n }\r\n if (sourceItem.nodeType) {\r\n i = targetNodes.length;\r\n while (i--) {\r\n callback.call(targetNodes[i], sourceItem);\r\n }\r\n }\r\n return targetNodes;\r\n };\r\n var hasClass = function (node, className) {\r\n return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;\r\n };\r\n var wrap = function (elements, wrapper, all) {\r\n var lastParent, newWrapper;\r\n wrapper = DomQuery(wrapper)[0];\r\n elements.each(function () {\r\n var self$$1 = this;\r\n if (!all || lastParent !== self$$1.parentNode) {\r\n lastParent = self$$1.parentNode;\r\n newWrapper = wrapper.cloneNode(false);\r\n self$$1.parentNode.insertBefore(newWrapper, self$$1);\r\n newWrapper.appendChild(self$$1);\r\n } else {\r\n newWrapper.appendChild(self$$1);\r\n }\r\n });\r\n return elements;\r\n };\r\n var numericCssMap = $_4ujg4tljkmcwkbk.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');\r\n var booleanMap = $_4ujg4tljkmcwkbk.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');\r\n var propFix = {\r\n for: 'htmlFor',\r\n class: 'className',\r\n readonly: 'readOnly'\r\n };\r\n var cssFix = { float: 'cssFloat' };\r\n var attrHooks = {};\r\n var cssHooks = {};\r\n var DomQuery = function (selector, context) {\r\n return new DomQuery.fn.init(selector, context);\r\n };\r\n var inArray = function (item, array) {\r\n var i;\r\n if (array.indexOf) {\r\n return array.indexOf(item);\r\n }\r\n i = array.length;\r\n while (i--) {\r\n if (array[i] === item) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n var whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\r\n var trim$1 = function (str) {\r\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\r\n };\r\n var each$2 = function (obj, callback) {\r\n var length$$1, key, i, value;\r\n if (obj) {\r\n length$$1 = obj.length;\r\n if (length$$1 === undefined) {\r\n for (key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n value = obj[key];\r\n if (callback.call(value, key, value) === false) {\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n for (i = 0; i < length$$1; i++) {\r\n value = obj[i];\r\n if (callback.call(value, i, value) === false) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n };\r\n var grep = function (array, callback) {\r\n var out = [];\r\n each$2(array, function (i, item) {\r\n if (callback(item, i)) {\r\n out.push(item);\r\n }\r\n });\r\n return out;\r\n };\r\n var getElementDocument = function (element) {\r\n if (!element) {\r\n return doc;\r\n }\r\n if (element.nodeType === 9) {\r\n return element;\r\n }\r\n return element.ownerDocument;\r\n };\r\n DomQuery.fn = DomQuery.prototype = {\r\n constructor: DomQuery,\r\n selector: '',\r\n context: null,\r\n length: 0,\r\n init: function (selector, context) {\r\n var self$$1 = this;\r\n var match, node;\r\n if (!selector) {\r\n return self$$1;\r\n }\r\n if (selector.nodeType) {\r\n self$$1.context = self$$1[0] = selector;\r\n self$$1.length = 1;\r\n return self$$1;\r\n }\r\n if (context && context.nodeType) {\r\n self$$1.context = context;\r\n } else {\r\n if (context) {\r\n return DomQuery(selector).attr(context);\r\n }\r\n self$$1.context = context = document;\r\n }\r\n if (isString$1(selector)) {\r\n self$$1.selector = selector;\r\n if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {\r\n match = [\r\n null,\r\n selector,\r\n null\r\n ];\r\n } else {\r\n match = rquickExpr$1.exec(selector);\r\n }\r\n if (match) {\r\n if (match[1]) {\r\n node = createFragment(selector, getElementDocument(context)).firstChild;\r\n while (node) {\r\n push$2.call(self$$1, node);\r\n node = node.nextSibling;\r\n }\r\n } else {\r\n node = getElementDocument(context).getElementById(match[2]);\r\n if (!node) {\r\n return self$$1;\r\n }\r\n if (node.id !== match[2]) {\r\n return self$$1.find(selector);\r\n }\r\n self$$1.length = 1;\r\n self$$1[0] = node;\r\n }\r\n } else {\r\n return DomQuery(context).find(selector);\r\n }\r\n } else {\r\n this.add(selector, false);\r\n }\r\n return self$$1;\r\n },\r\n toArray: function () {\r\n return $_4ujg4tljkmcwkbk.toArray(this);\r\n },\r\n add: function (items, sort) {\r\n var self$$1 = this;\r\n var nodes, i;\r\n if (isString$1(items)) {\r\n return self$$1.add(DomQuery(items));\r\n }\r\n if (sort !== false) {\r\n nodes = DomQuery.unique(self$$1.toArray().concat(DomQuery.makeArray(items)));\r\n self$$1.length = nodes.length;\r\n for (i = 0; i < nodes.length; i++) {\r\n self$$1[i] = nodes[i];\r\n }\r\n } else {\r\n push$2.apply(self$$1, DomQuery.makeArray(items));\r\n }\r\n return self$$1;\r\n },\r\n attr: function (name$$1, value) {\r\n var self$$1 = this;\r\n var hook;\r\n if (typeof name$$1 === 'object') {\r\n each$2(name$$1, function (name$$1, value) {\r\n self$$1.attr(name$$1, value);\r\n });\r\n } else if (isDefined(value)) {\r\n this.each(function () {\r\n var hook;\r\n if (this.nodeType === 1) {\r\n hook = attrHooks[name$$1];\r\n if (hook && hook.set) {\r\n hook.set(this, value);\r\n return;\r\n }\r\n if (value === null) {\r\n this.removeAttribute(name$$1, 2);\r\n } else {\r\n this.setAttribute(name$$1, value, 2);\r\n }\r\n }\r\n });\r\n } else {\r\n if (self$$1[0] && self$$1[0].nodeType === 1) {\r\n hook = attrHooks[name$$1];\r\n if (hook && hook.get) {\r\n return hook.get(self$$1[0], name$$1);\r\n }\r\n if (booleanMap[name$$1]) {\r\n return self$$1.prop(name$$1) ? name$$1 : undefined;\r\n }\r\n value = self$$1[0].getAttribute(name$$1, 2);\r\n if (value === null) {\r\n value = undefined;\r\n }\r\n }\r\n return value;\r\n }\r\n return self$$1;\r\n },\r\n removeAttr: function (name$$1) {\r\n return this.attr(name$$1, null);\r\n },\r\n prop: function (name$$1, value) {\r\n var self$$1 = this;\r\n name$$1 = propFix[name$$1] || name$$1;\r\n if (typeof name$$1 === 'object') {\r\n each$2(name$$1, function (name$$1, value) {\r\n self$$1.prop(name$$1, value);\r\n });\r\n } else if (isDefined(value)) {\r\n this.each(function () {\r\n if (this.nodeType === 1) {\r\n this[name$$1] = value;\r\n }\r\n });\r\n } else {\r\n if (self$$1[0] && self$$1[0].nodeType && name$$1 in self$$1[0]) {\r\n return self$$1[0][name$$1];\r\n }\r\n return value;\r\n }\r\n return self$$1;\r\n },\r\n css: function (name$$1, value) {\r\n var self$$1 = this;\r\n var elm, hook;\r\n var camel = function (name$$1) {\r\n return name$$1.replace(/-(\\D)/g, function (a, b) {\r\n return b.toUpperCase();\r\n });\r\n };\r\n var dashed = function (name$$1) {\r\n return name$$1.replace(/[A-Z]/g, function (a) {\r\n return '-' + a;\r\n });\r\n };\r\n if (typeof name$$1 === 'object') {\r\n each$2(name$$1, function (name$$1, value) {\r\n self$$1.css(name$$1, value);\r\n });\r\n } else {\r\n if (isDefined(value)) {\r\n name$$1 = camel(name$$1);\r\n if (typeof value === 'number' && !numericCssMap[name$$1]) {\r\n value = value.toString() + 'px';\r\n }\r\n self$$1.each(function () {\r\n var style = this.style;\r\n hook = cssHooks[name$$1];\r\n if (hook && hook.set) {\r\n hook.set(this, value);\r\n return;\r\n }\r\n try {\r\n this.style[cssFix[name$$1] || name$$1] = value;\r\n } catch (ex) {\r\n }\r\n if (value === null || value === '') {\r\n if (style.removeProperty) {\r\n style.removeProperty(dashed(name$$1));\r\n } else {\r\n style.removeAttribute(name$$1);\r\n }\r\n }\r\n });\r\n } else {\r\n elm = self$$1[0];\r\n hook = cssHooks[name$$1];\r\n if (hook && hook.get) {\r\n return hook.get(elm);\r\n }\r\n if (elm.ownerDocument.defaultView) {\r\n try {\r\n return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name$$1));\r\n } catch (ex) {\r\n return undefined;\r\n }\r\n } else if (elm.currentStyle) {\r\n return elm.currentStyle[camel(name$$1)];\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n return self$$1;\r\n },\r\n remove: function () {\r\n var self$$1 = this;\r\n var node, i = this.length;\r\n while (i--) {\r\n node = self$$1[i];\r\n Event$$1.clean(node);\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n }\r\n return this;\r\n },\r\n empty: function () {\r\n var self$$1 = this;\r\n var node, i = this.length;\r\n while (i--) {\r\n node = self$$1[i];\r\n while (node.firstChild) {\r\n node.removeChild(node.firstChild);\r\n }\r\n }\r\n return this;\r\n },\r\n html: function (value) {\r\n var self$$1 = this;\r\n var i;\r\n if (isDefined(value)) {\r\n i = self$$1.length;\r\n try {\r\n while (i--) {\r\n self$$1[i].innerHTML = value;\r\n }\r\n } catch (ex) {\r\n DomQuery(self$$1[i]).empty().append(value);\r\n }\r\n return self$$1;\r\n }\r\n return self$$1[0] ? self$$1[0].innerHTML : '';\r\n },\r\n text: function (value) {\r\n var self$$1 = this;\r\n var i;\r\n if (isDefined(value)) {\r\n i = self$$1.length;\r\n while (i--) {\r\n if ('innerText' in self$$1[i]) {\r\n self$$1[i].innerText = value;\r\n } else {\r\n self$$1[0].textContent = value;\r\n }\r\n }\r\n return self$$1;\r\n }\r\n return self$$1[0] ? self$$1[0].innerText || self$$1[0].textContent : '';\r\n },\r\n append: function () {\r\n return domManipulate(this, arguments, function (node) {\r\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\r\n this.appendChild(node);\r\n }\r\n });\r\n },\r\n prepend: function () {\r\n return domManipulate(this, arguments, function (node) {\r\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\r\n this.insertBefore(node, this.firstChild);\r\n }\r\n }, true);\r\n },\r\n before: function () {\r\n var self$$1 = this;\r\n if (self$$1[0] && self$$1[0].parentNode) {\r\n return domManipulate(self$$1, arguments, function (node) {\r\n this.parentNode.insertBefore(node, this);\r\n });\r\n }\r\n return self$$1;\r\n },\r\n after: function () {\r\n var self$$1 = this;\r\n if (self$$1[0] && self$$1[0].parentNode) {\r\n return domManipulate(self$$1, arguments, function (node) {\r\n this.parentNode.insertBefore(node, this.nextSibling);\r\n }, true);\r\n }\r\n return self$$1;\r\n },\r\n appendTo: function (val) {\r\n DomQuery(val).append(this);\r\n return this;\r\n },\r\n prependTo: function (val) {\r\n DomQuery(val).prepend(this);\r\n return this;\r\n },\r\n replaceWith: function (content) {\r\n return this.before(content).remove();\r\n },\r\n wrap: function (content) {\r\n return wrap(this, content);\r\n },\r\n wrapAll: function (content) {\r\n return wrap(this, content, true);\r\n },\r\n wrapInner: function (content) {\r\n this.each(function () {\r\n DomQuery(this).contents().wrapAll(content);\r\n });\r\n return this;\r\n },\r\n unwrap: function () {\r\n return this.parent().each(function () {\r\n DomQuery(this).replaceWith(this.childNodes);\r\n });\r\n },\r\n clone: function () {\r\n var result = [];\r\n this.each(function () {\r\n result.push(this.cloneNode(true));\r\n });\r\n return DomQuery(result);\r\n },\r\n addClass: function (className) {\r\n return this.toggleClass(className, true);\r\n },\r\n removeClass: function (className) {\r\n return this.toggleClass(className, false);\r\n },\r\n toggleClass: function (className, state) {\r\n var self$$1 = this;\r\n if (typeof className !== 'string') {\r\n return self$$1;\r\n }\r\n if (className.indexOf(' ') !== -1) {\r\n each$2(className.split(' '), function () {\r\n self$$1.toggleClass(this, state);\r\n });\r\n } else {\r\n self$$1.each(function (index, node) {\r\n var existingClassName, classState;\r\n classState = hasClass(node, className);\r\n if (classState !== state) {\r\n existingClassName = node.className;\r\n if (classState) {\r\n node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' '));\r\n } else {\r\n node.className += existingClassName ? ' ' + className : className;\r\n }\r\n }\r\n });\r\n }\r\n return self$$1;\r\n },\r\n hasClass: function (className) {\r\n return hasClass(this[0], className);\r\n },\r\n each: function (callback) {\r\n return each$2(this, callback);\r\n },\r\n on: function (name$$1, callback) {\r\n return this.each(function () {\r\n Event$$1.bind(this, name$$1, callback);\r\n });\r\n },\r\n off: function (name$$1, callback) {\r\n return this.each(function () {\r\n Event$$1.unbind(this, name$$1, callback);\r\n });\r\n },\r\n trigger: function (name$$1) {\r\n return this.each(function () {\r\n if (typeof name$$1 === 'object') {\r\n Event$$1.fire(this, name$$1.type, name$$1);\r\n } else {\r\n Event$$1.fire(this, name$$1);\r\n }\r\n });\r\n },\r\n show: function () {\r\n return this.css('display', '');\r\n },\r\n hide: function () {\r\n return this.css('display', 'none');\r\n },\r\n slice: function () {\r\n return new DomQuery(slice$2.apply(this, arguments));\r\n },\r\n eq: function (index) {\r\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\r\n },\r\n first: function () {\r\n return this.eq(0);\r\n },\r\n last: function () {\r\n return this.eq(-1);\r\n },\r\n find: function (selector) {\r\n var i, l;\r\n var ret = [];\r\n for (i = 0, l = this.length; i < l; i++) {\r\n DomQuery.find(selector, this[i], ret);\r\n }\r\n return DomQuery(ret);\r\n },\r\n filter: function (selector) {\r\n if (typeof selector === 'function') {\r\n return DomQuery(grep(this.toArray(), function (item, i) {\r\n return selector(i, item);\r\n }));\r\n }\r\n return DomQuery(DomQuery.filter(selector, this.toArray()));\r\n },\r\n closest: function (selector) {\r\n var result = [];\r\n if (selector instanceof DomQuery) {\r\n selector = selector[0];\r\n }\r\n this.each(function (i, node) {\r\n while (node) {\r\n if (typeof selector === 'string' && DomQuery(node).is(selector)) {\r\n result.push(node);\r\n break;\r\n } else if (node === selector) {\r\n result.push(node);\r\n break;\r\n }\r\n node = node.parentNode;\r\n }\r\n });\r\n return DomQuery(result);\r\n },\r\n offset: function (offset) {\r\n var elm, doc, docElm;\r\n var x = 0, y = 0, pos;\r\n if (!offset) {\r\n elm = this[0];\r\n if (elm) {\r\n doc = elm.ownerDocument;\r\n docElm = doc.documentElement;\r\n if (elm.getBoundingClientRect) {\r\n pos = elm.getBoundingClientRect();\r\n x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;\r\n y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;\r\n }\r\n }\r\n return {\r\n left: x,\r\n top: y\r\n };\r\n }\r\n return this.css(offset);\r\n },\r\n push: push$2,\r\n sort: [].sort,\r\n splice: [].splice\r\n };\r\n $_4ujg4tljkmcwkbk.extend(DomQuery, {\r\n extend: $_4ujg4tljkmcwkbk.extend,\r\n makeArray: function (object) {\r\n if (isWindow(object) || object.nodeType) {\r\n return [object];\r\n }\r\n return $_4ujg4tljkmcwkbk.toArray(object);\r\n },\r\n inArray: inArray,\r\n isArray: $_4ujg4tljkmcwkbk.isArray,\r\n each: each$2,\r\n trim: trim$1,\r\n grep: grep,\r\n find: Sizzle,\r\n expr: Sizzle.selectors,\r\n unique: Sizzle.uniqueSort,\r\n text: Sizzle.getText,\r\n contains: Sizzle.contains,\r\n filter: function (expr, elems, not) {\r\n var i = elems.length;\r\n if (not) {\r\n expr = ':not(' + expr + ')';\r\n }\r\n while (i--) {\r\n if (elems[i].nodeType !== 1) {\r\n elems.splice(i, 1);\r\n }\r\n }\r\n if (elems.length === 1) {\r\n elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];\r\n } else {\r\n elems = DomQuery.find.matches(expr, elems);\r\n }\r\n return elems;\r\n }\r\n });\r\n var dir = function (el, prop, until) {\r\n var matched = [];\r\n var cur = el[prop];\r\n if (typeof until !== 'string' && until instanceof DomQuery) {\r\n until = until[0];\r\n }\r\n while (cur && cur.nodeType !== 9) {\r\n if (until !== undefined) {\r\n if (cur === until) {\r\n break;\r\n }\r\n if (typeof until === 'string' && DomQuery(cur).is(until)) {\r\n break;\r\n }\r\n }\r\n if (cur.nodeType === 1) {\r\n matched.push(cur);\r\n }\r\n cur = cur[prop];\r\n }\r\n return matched;\r\n };\r\n var sibling = function (node, siblingName, nodeType, until) {\r\n var result = [];\r\n if (until instanceof DomQuery) {\r\n until = until[0];\r\n }\r\n for (; node; node = node[siblingName]) {\r\n if (nodeType && node.nodeType !== nodeType) {\r\n continue;\r\n }\r\n if (until !== undefined) {\r\n if (node === until) {\r\n break;\r\n }\r\n if (typeof until === 'string' && DomQuery(node).is(until)) {\r\n break;\r\n }\r\n }\r\n result.push(node);\r\n }\r\n return result;\r\n };\r\n var firstSibling = function (node, siblingName, nodeType) {\r\n for (node = node[siblingName]; node; node = node[siblingName]) {\r\n if (node.nodeType === nodeType) {\r\n return node;\r\n }\r\n }\r\n return null;\r\n };\r\n each$2({\r\n parent: function (node) {\r\n var parent$$1 = node.parentNode;\r\n return parent$$1 && parent$$1.nodeType !== 11 ? parent$$1 : null;\r\n },\r\n parents: function (node) {\r\n return dir(node, 'parentNode');\r\n },\r\n next: function (node) {\r\n return firstSibling(node, 'nextSibling', 1);\r\n },\r\n prev: function (node) {\r\n return firstSibling(node, 'previousSibling', 1);\r\n },\r\n children: function (node) {\r\n return sibling(node.firstChild, 'nextSibling', 1);\r\n },\r\n contents: function (node) {\r\n return $_4ujg4tljkmcwkbk.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);\r\n }\r\n }, function (name$$1, fn) {\r\n DomQuery.fn[name$$1] = function (selector) {\r\n var self$$1 = this;\r\n var result = [];\r\n self$$1.each(function () {\r\n var nodes = fn.call(result, this, selector, result);\r\n if (nodes) {\r\n if (DomQuery.isArray(nodes)) {\r\n result.push.apply(result, nodes);\r\n } else {\r\n result.push(nodes);\r\n }\r\n }\r\n });\r\n if (this.length > 1) {\r\n if (!skipUniques[name$$1]) {\r\n result = DomQuery.unique(result);\r\n }\r\n if (name$$1.indexOf('parents') === 0) {\r\n result = result.reverse();\r\n }\r\n }\r\n result = DomQuery(result);\r\n if (selector) {\r\n return result.filter(selector);\r\n }\r\n return result;\r\n };\r\n });\r\n each$2({\r\n parentsUntil: function (node, until) {\r\n return dir(node, 'parentNode', until);\r\n },\r\n nextUntil: function (node, until) {\r\n return sibling(node, 'nextSibling', 1, until).slice(1);\r\n },\r\n prevUntil: function (node, until) {\r\n return sibling(node, 'previousSibling', 1, until).slice(1);\r\n }\r\n }, function (name$$1, fn) {\r\n DomQuery.fn[name$$1] = function (selector, filter) {\r\n var self$$1 = this;\r\n var result = [];\r\n self$$1.each(function () {\r\n var nodes = fn.call(result, this, selector, result);\r\n if (nodes) {\r\n if (DomQuery.isArray(nodes)) {\r\n result.push.apply(result, nodes);\r\n } else {\r\n result.push(nodes);\r\n }\r\n }\r\n });\r\n if (this.length > 1) {\r\n result = DomQuery.unique(result);\r\n if (name$$1.indexOf('parents') === 0 || name$$1 === 'prevUntil') {\r\n result = result.reverse();\r\n }\r\n }\r\n result = DomQuery(result);\r\n if (filter) {\r\n return result.filter(filter);\r\n }\r\n return result;\r\n };\r\n });\r\n DomQuery.fn.is = function (selector) {\r\n return !!selector && this.filter(selector).length > 0;\r\n };\r\n DomQuery.fn.init.prototype = DomQuery.fn;\r\n DomQuery.overrideDefaults = function (callback) {\r\n var defaults;\r\n var sub = function (selector, context) {\r\n defaults = defaults || callback();\r\n if (arguments.length === 0) {\r\n selector = defaults.element;\r\n }\r\n if (!context) {\r\n context = defaults.context;\r\n }\r\n return new sub.fn.init(selector, context);\r\n };\r\n DomQuery.extend(sub, this);\r\n return sub;\r\n };\r\n var appendHooks = function (targetHooks, prop, hooks) {\r\n each$2(hooks, function (name$$1, func) {\r\n targetHooks[name$$1] = targetHooks[name$$1] || {};\r\n targetHooks[name$$1][prop] = func;\r\n });\r\n };\r\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 8) {\r\n appendHooks(attrHooks, 'get', {\r\n maxlength: function (elm) {\r\n var value = elm.maxLength;\r\n if (value === 2147483647) {\r\n return undefined;\r\n }\r\n return value;\r\n },\r\n size: function (elm) {\r\n var value = elm.size;\r\n if (value === 20) {\r\n return undefined;\r\n }\r\n return value;\r\n },\r\n class: function (elm) {\r\n return elm.className;\r\n },\r\n style: function (elm) {\r\n var value = elm.style.cssText;\r\n if (value.length === 0) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n });\r\n appendHooks(attrHooks, 'set', {\r\n class: function (elm, value) {\r\n elm.className = value;\r\n },\r\n style: function (elm, value) {\r\n elm.style.cssText = value;\r\n }\r\n });\r\n }\r\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 9) {\r\n cssFix.float = 'styleFloat';\r\n appendHooks(cssHooks, 'set', {\r\n opacity: function (elm, value) {\r\n var style = elm.style;\r\n if (value === null || value === '') {\r\n style.removeAttribute('filter');\r\n } else {\r\n style.zoom = 1;\r\n style.filter = 'alpha(opacity=' + value * 100 + ')';\r\n }\r\n }\r\n });\r\n }\r\n DomQuery.attrHooks = attrHooks;\r\n DomQuery.cssHooks = cssHooks;\r\n\r\n var cached = function (f) {\r\n var called = false;\r\n var r;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!called) {\r\n called = true;\r\n r = f.apply(null, args);\r\n }\r\n return r;\r\n };\r\n };\r\n\r\n var firstMatch = function (regexes, s) {\r\n for (var i = 0; i < regexes.length; i++) {\r\n var x = regexes[i];\r\n if (x.test(s))\r\n return x;\r\n }\r\n return undefined;\r\n };\r\n var find$2 = function (regexes, agent) {\r\n var r = firstMatch(regexes, agent);\r\n if (!r)\r\n return {\r\n major: 0,\r\n minor: 0\r\n };\r\n var group = function (i) {\r\n return Number(agent.replace(r, '$' + i));\r\n };\r\n return nu(group(1), group(2));\r\n };\r\n var detect = function (versionRegexes, agent) {\r\n var cleanedAgent = String(agent).toLowerCase();\r\n if (versionRegexes.length === 0)\r\n return unknown();\r\n return find$2(versionRegexes, cleanedAgent);\r\n };\r\n var unknown = function () {\r\n return nu(0, 0);\r\n };\r\n var nu = function (major, minor) {\r\n return {\r\n major: major,\r\n minor: minor\r\n };\r\n };\r\n var $_2kio3msjkmcwkcv = {\r\n nu: nu,\r\n detect: detect,\r\n unknown: unknown\r\n };\r\n\r\n var edge = 'Edge';\r\n var chrome = 'Chrome';\r\n var ie$1 = 'IE';\r\n var opera$1 = 'Opera';\r\n var firefox = 'Firefox';\r\n var safari = 'Safari';\r\n var isBrowser = function (name, current) {\r\n return function () {\r\n return current === name;\r\n };\r\n };\r\n var unknown$1 = function () {\r\n return nu$1({\r\n current: undefined,\r\n version: $_2kio3msjkmcwkcv.unknown()\r\n });\r\n };\r\n var nu$1 = function (info) {\r\n var current = info.current;\r\n var version = info.version;\r\n return {\r\n current: current,\r\n version: version,\r\n isEdge: isBrowser(edge, current),\r\n isChrome: isBrowser(chrome, current),\r\n isIE: isBrowser(ie$1, current),\r\n isOpera: isBrowser(opera$1, current),\r\n isFirefox: isBrowser(firefox, current),\r\n isSafari: isBrowser(safari, current)\r\n };\r\n };\r\n var $_ei4lq0rjkmcwkcq = {\r\n unknown: unknown$1,\r\n nu: nu$1,\r\n edge: constant(edge),\r\n chrome: constant(chrome),\r\n ie: constant(ie$1),\r\n opera: constant(opera$1),\r\n firefox: constant(firefox),\r\n safari: constant(safari)\r\n };\r\n\r\n var windows = 'Windows';\r\n var ios = 'iOS';\r\n var android$1 = 'Android';\r\n var linux = 'Linux';\r\n var osx = 'OSX';\r\n var solaris = 'Solaris';\r\n var freebsd = 'FreeBSD';\r\n var isOS = function (name, current) {\r\n return function () {\r\n return current === name;\r\n };\r\n };\r\n var unknown$2 = function () {\r\n return nu$2({\r\n current: undefined,\r\n version: $_2kio3msjkmcwkcv.unknown()\r\n });\r\n };\r\n var nu$2 = function (info) {\r\n var current = info.current;\r\n var version = info.version;\r\n return {\r\n current: current,\r\n version: version,\r\n isWindows: isOS(windows, current),\r\n isiOS: isOS(ios, current),\r\n isAndroid: isOS(android$1, current),\r\n isOSX: isOS(osx, current),\r\n isLinux: isOS(linux, current),\r\n isSolaris: isOS(solaris, current),\r\n isFreeBSD: isOS(freebsd, current)\r\n };\r\n };\r\n var $_85w4ndtjkmcwkcx = {\r\n unknown: unknown$2,\r\n nu: nu$2,\r\n windows: constant(windows),\r\n ios: constant(ios),\r\n android: constant(android$1),\r\n linux: constant(linux),\r\n osx: constant(osx),\r\n solaris: constant(solaris),\r\n freebsd: constant(freebsd)\r\n };\r\n\r\n function DeviceType (os, browser, userAgent) {\r\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\r\n var isiPhone = os.isiOS() && !isiPad;\r\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\r\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\r\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\r\n var isTouch = os.isiOS() || os.isAndroid();\r\n var isPhone = isTouch && !isTablet;\r\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\r\n return {\r\n isiPad: constant(isiPad),\r\n isiPhone: constant(isiPhone),\r\n isTablet: constant(isTablet),\r\n isPhone: constant(isPhone),\r\n isTouch: constant(isTouch),\r\n isAndroid: os.isAndroid,\r\n isiOS: os.isiOS,\r\n isWebView: constant(iOSwebview)\r\n };\r\n }\r\n\r\n var detect$1 = function (candidates, userAgent) {\r\n var agent = String(userAgent).toLowerCase();\r\n return find(candidates, function (candidate) {\r\n return candidate.search(agent);\r\n });\r\n };\r\n var detectBrowser = function (browsers, userAgent) {\r\n return detect$1(browsers, userAgent).map(function (browser) {\r\n var version = $_2kio3msjkmcwkcv.detect(browser.versionRegexes, userAgent);\r\n return {\r\n current: browser.name,\r\n version: version\r\n };\r\n });\r\n };\r\n var detectOs = function (oses, userAgent) {\r\n return detect$1(oses, userAgent).map(function (os) {\r\n var version = $_2kio3msjkmcwkcv.detect(os.versionRegexes, userAgent);\r\n return {\r\n current: os.name,\r\n version: version\r\n };\r\n });\r\n };\r\n var $_6qxoukvjkmcwkd5 = {\r\n detectBrowser: detectBrowser,\r\n detectOs: detectOs\r\n };\r\n\r\n var contains$2 = function (str, substr) {\r\n return str.indexOf(substr) !== -1;\r\n };\r\n\r\n\r\n\r\n var trim$2 = function (str) {\r\n return str.replace(/^\\s+|\\s+$/g, '');\r\n };\r\n\r\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\r\n var checkContains = function (target) {\r\n return function (uastring) {\r\n return contains$2(uastring, target);\r\n };\r\n };\r\n var browsers = [\r\n {\r\n name: 'Edge',\r\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\r\n search: function (uastring) {\r\n var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');\r\n return monstrosity;\r\n }\r\n },\r\n {\r\n name: 'Chrome',\r\n versionRegexes: [\r\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\r\n normalVersionRegex\r\n ],\r\n search: function (uastring) {\r\n return contains$2(uastring, 'chrome') && !contains$2(uastring, 'chromeframe');\r\n }\r\n },\r\n {\r\n name: 'IE',\r\n versionRegexes: [\r\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\r\n /.*?rv:([0-9]+)\\.([0-9]+).*/\r\n ],\r\n search: function (uastring) {\r\n return contains$2(uastring, 'msie') || contains$2(uastring, 'trident');\r\n }\r\n },\r\n {\r\n name: 'Opera',\r\n versionRegexes: [\r\n normalVersionRegex,\r\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\r\n ],\r\n search: checkContains('opera')\r\n },\r\n {\r\n name: 'Firefox',\r\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\r\n search: checkContains('firefox')\r\n },\r\n {\r\n name: 'Safari',\r\n versionRegexes: [\r\n normalVersionRegex,\r\n /.*?cpu os ([0-9]+)_([0-9]+).*/\r\n ],\r\n search: function (uastring) {\r\n return (contains$2(uastring, 'safari') || contains$2(uastring, 'mobile/')) && contains$2(uastring, 'applewebkit');\r\n }\r\n }\r\n ];\r\n var oses = [\r\n {\r\n name: 'Windows',\r\n search: checkContains('win'),\r\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\r\n },\r\n {\r\n name: 'iOS',\r\n search: function (uastring) {\r\n return contains$2(uastring, 'iphone') || contains$2(uastring, 'ipad');\r\n },\r\n versionRegexes: [\r\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\r\n /.*cpu os ([0-9]+)_([0-9]+).*/,\r\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\r\n ]\r\n },\r\n {\r\n name: 'Android',\r\n search: checkContains('android'),\r\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\r\n },\r\n {\r\n name: 'OSX',\r\n search: checkContains('os x'),\r\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\r\n },\r\n {\r\n name: 'Linux',\r\n search: checkContains('linux'),\r\n versionRegexes: []\r\n },\r\n {\r\n name: 'Solaris',\r\n search: checkContains('sunos'),\r\n versionRegexes: []\r\n },\r\n {\r\n name: 'FreeBSD',\r\n search: checkContains('freebsd'),\r\n versionRegexes: []\r\n }\r\n ];\r\n var $_6vxr68wjkmcwkdc = {\r\n browsers: constant(browsers),\r\n oses: constant(oses)\r\n };\r\n\r\n var detect$2 = function (userAgent) {\r\n var browsers = $_6vxr68wjkmcwkdc.browsers();\r\n var oses = $_6vxr68wjkmcwkdc.oses();\r\n var browser = $_6qxoukvjkmcwkd5.detectBrowser(browsers, userAgent).fold($_ei4lq0rjkmcwkcq.unknown, $_ei4lq0rjkmcwkcq.nu);\r\n var os = $_6qxoukvjkmcwkd5.detectOs(oses, userAgent).fold($_85w4ndtjkmcwkcx.unknown, $_85w4ndtjkmcwkcx.nu);\r\n var deviceType = DeviceType(os, browser, userAgent);\r\n return {\r\n browser: browser,\r\n os: os,\r\n deviceType: deviceType\r\n };\r\n };\r\n var $_c5ox8vqjkmcwkco = { detect: detect$2 };\r\n\r\n var detect$3 = cached(function () {\r\n var userAgent = navigator.userAgent;\r\n return $_c5ox8vqjkmcwkco.detect(userAgent);\r\n });\r\n var $_b1ykk4ojkmcwkcj = { detect: detect$3 };\r\n\r\n var fromHtml = function (html, scope) {\r\n var doc = scope || document;\r\n var div = doc.createElement('div');\r\n div.innerHTML = html;\r\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\r\n console.error('HTML does not have a single root node', html);\r\n throw 'HTML must have a single root node';\r\n }\r\n return fromDom(div.childNodes[0]);\r\n };\r\n var fromTag = function (tag, scope) {\r\n var doc = scope || document;\r\n var node = doc.createElement(tag);\r\n return fromDom(node);\r\n };\r\n var fromText = function (text, scope) {\r\n var doc = scope || document;\r\n var node = doc.createTextNode(text);\r\n return fromDom(node);\r\n };\r\n var fromDom = function (node) {\r\n if (node === null || node === undefined)\r\n throw new Error('Node cannot be null or undefined');\r\n return { dom: constant(node) };\r\n };\r\n var fromPoint = function (docElm, x, y) {\r\n var doc = docElm.dom();\r\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\r\n };\r\n var Element$$1 = {\r\n fromHtml: fromHtml,\r\n fromTag: fromTag,\r\n fromText: fromText,\r\n fromDom: fromDom,\r\n fromPoint: fromPoint\r\n };\r\n\r\n var $_c8e5uh12jkmcwke2 = {\r\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\r\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\r\n COMMENT: Node.COMMENT_NODE,\r\n DOCUMENT: Node.DOCUMENT_NODE,\r\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\r\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\r\n ELEMENT: Node.ELEMENT_NODE,\r\n TEXT: Node.TEXT_NODE,\r\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\r\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\r\n ENTITY: Node.ENTITY_NODE,\r\n NOTATION: Node.NOTATION_NODE\r\n };\r\n\r\n var name = function (element) {\r\n var r = element.dom().nodeName;\r\n return r.toLowerCase();\r\n };\r\n var type = function (element) {\r\n return element.dom().nodeType;\r\n };\r\n var value = function (element) {\r\n return element.dom().nodeValue;\r\n };\r\n var isType$1 = function (t) {\r\n return function (element) {\r\n return type(element) === t;\r\n };\r\n };\r\n var isComment = function (element) {\r\n return type(element) === $_c8e5uh12jkmcwke2.COMMENT || name(element) === '#comment';\r\n };\r\n var isElement = isType$1($_c8e5uh12jkmcwke2.ELEMENT);\r\n var isText = isType$1($_c8e5uh12jkmcwke2.TEXT);\r\n var isDocument = isType$1($_c8e5uh12jkmcwke2.DOCUMENT);\r\n var $_2xwdjv11jkmcwke0 = {\r\n name: name,\r\n type: type,\r\n value: value,\r\n isElement: isElement,\r\n isText: isText,\r\n isDocument: isDocument,\r\n isComment: isComment\r\n };\r\n\r\n var keys = Object.keys;\r\n var each$3 = function (obj, f) {\r\n var props = keys(obj);\r\n for (var k = 0, len = props.length; k < len; k++) {\r\n var i = props[k];\r\n var x = obj[i];\r\n f(x, i, obj);\r\n }\r\n };\r\n var map$2 = function (obj, f) {\r\n return tupleMap(obj, function (x, i, obj) {\r\n return {\r\n k: i,\r\n v: f(x, i, obj)\r\n };\r\n });\r\n };\r\n var tupleMap = function (obj, f) {\r\n var r = {};\r\n each$3(obj, function (x, i) {\r\n var tuple = f(x, i, obj);\r\n r[tuple.k] = tuple.v;\r\n });\r\n return r;\r\n };\r\n var bifilter = function (obj, pred) {\r\n var t = {};\r\n var f = {};\r\n each$3(obj, function (x, i) {\r\n var branch = pred(x, i) ? t : f;\r\n branch[i] = x;\r\n });\r\n return {\r\n t: t,\r\n f: f\r\n };\r\n };\r\n\r\n var rawSet = function (dom, key, value) {\r\n if (isString(value) || isBoolean(value) || isNumber(value)) {\r\n dom.setAttribute(key, value + '');\r\n } else {\r\n console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);\r\n throw new Error('Attribute value was not simple');\r\n }\r\n };\r\n var set = function (element, key, value) {\r\n rawSet(element.dom(), key, value);\r\n };\r\n var setAll = function (element, attrs) {\r\n var dom = element.dom();\r\n each$3(attrs, function (v, k) {\r\n rawSet(dom, k, v);\r\n });\r\n };\r\n var get = function (element, key) {\r\n var v = element.dom().getAttribute(key);\r\n return v === null ? undefined : v;\r\n };\r\n var has = function (element, key) {\r\n var dom = element.dom();\r\n return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\r\n };\r\n var remove = function (element, key) {\r\n element.dom().removeAttribute(key);\r\n };\r\n var hasNone = function (element) {\r\n var attrs = element.dom().attributes;\r\n return attrs === undefined || attrs === null || attrs.length === 0;\r\n };\r\n var clone = function (element) {\r\n return foldl(element.dom().attributes, function (acc, attr) {\r\n acc[attr.name] = attr.value;\r\n return acc;\r\n }, {});\r\n };\r\n var transferOne = function (source, destination, attr) {\r\n if (has(source, attr) && !has(destination, attr))\r\n set(destination, attr, get(source, attr));\r\n };\r\n var transfer = function (source, destination, attrs) {\r\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\r\n return;\r\n each(attrs, function (attr) {\r\n transferOne(source, destination, attr);\r\n });\r\n };\r\n var $_29helg15jkmcwkf0 = {\r\n clone: clone,\r\n set: set,\r\n setAll: setAll,\r\n get: get,\r\n has: has,\r\n remove: remove,\r\n hasNone: hasNone,\r\n transfer: transfer\r\n };\r\n\r\n var inBody = function (element) {\r\n var dom = $_2xwdjv11jkmcwke0.isText(element) ? element.dom().parentNode : element.dom();\r\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\r\n };\r\n var body = cached(function () {\r\n return getBody(Element$$1.fromDom(document));\r\n });\r\n var getBody = function (doc) {\r\n var body = doc.dom().body;\r\n if (body === null || body === undefined)\r\n throw 'Body is not available yet';\r\n return Element$$1.fromDom(body);\r\n };\r\n var $_g4uup916jkmcwkfg = {\r\n body: body,\r\n getBody: getBody,\r\n inBody: inBody\r\n };\r\n\r\n var isSupported = function (dom) {\r\n return dom.style !== undefined;\r\n };\r\n var $_crv2n17jkmcwkfl = { isSupported: isSupported };\r\n\r\n var internalSet = function (dom, property, value) {\r\n if (!isString(value)) {\r\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\r\n throw new Error('CSS value must be a string: ' + value);\r\n }\r\n if ($_crv2n17jkmcwkfl.isSupported(dom))\r\n dom.style.setProperty(property, value);\r\n };\r\n var internalRemove = function (dom, property) {\r\n if ($_crv2n17jkmcwkfl.isSupported(dom))\r\n dom.style.removeProperty(property);\r\n };\r\n var set$1 = function (element, property, value) {\r\n var dom = element.dom();\r\n internalSet(dom, property, value);\r\n };\r\n var setAll$1 = function (element, css) {\r\n var dom = element.dom();\r\n each$3(css, function (v, k) {\r\n internalSet(dom, k, v);\r\n });\r\n };\r\n var setOptions = function (element, css) {\r\n var dom = element.dom();\r\n each$3(css, function (v, k) {\r\n v.fold(function () {\r\n internalRemove(dom, k);\r\n }, function (value) {\r\n internalSet(dom, k, value);\r\n });\r\n });\r\n };\r\n var get$1 = function (element, property) {\r\n var dom = element.dom();\r\n var styles = window.getComputedStyle(dom);\r\n var r = styles.getPropertyValue(property);\r\n var v = r === '' && !$_g4uup916jkmcwkfg.inBody(element) ? getUnsafeProperty(dom, property) : r;\r\n return v === null ? undefined : v;\r\n };\r\n var getUnsafeProperty = function (dom, property) {\r\n return $_crv2n17jkmcwkfl.isSupported(dom) ? dom.style.getPropertyValue(property) : '';\r\n };\r\n var getRaw = function (element, property) {\r\n var dom = element.dom();\r\n var raw = getUnsafeProperty(dom, property);\r\n return Option.from(raw).filter(function (r) {\r\n return r.length > 0;\r\n });\r\n };\r\n var getAllRaw = function (element) {\r\n var css = {};\r\n var dom = element.dom();\r\n if ($_crv2n17jkmcwkfl.isSupported(dom)) {\r\n for (var i = 0; i < dom.style.length; i++) {\r\n var ruleName = dom.style.item(i);\r\n css[ruleName] = dom.style[ruleName];\r\n }\r\n }\r\n return css;\r\n };\r\n var isValidValue = function (tag, property, value) {\r\n var element = Element$$1.fromTag(tag);\r\n set$1(element, property, value);\r\n var style = getRaw(element, property);\r\n return style.isSome();\r\n };\r\n var remove$1 = function (element, property) {\r\n var dom = element.dom();\r\n internalRemove(dom, property);\r\n if ($_29helg15jkmcwkf0.has(element, 'style') && trim$2($_29helg15jkmcwkf0.get(element, 'style')) === '') {\r\n $_29helg15jkmcwkf0.remove(element, 'style');\r\n }\r\n };\r\n var preserve = function (element, f) {\r\n var oldStyles = $_29helg15jkmcwkf0.get(element, 'style');\r\n var result = f(element);\r\n var restore = oldStyles === undefined ? $_29helg15jkmcwkf0.remove : $_29helg15jkmcwkf0.set;\r\n restore(element, 'style', oldStyles);\r\n return result;\r\n };\r\n var copy = function (source, target) {\r\n var sourceDom = source.dom();\r\n var targetDom = target.dom();\r\n if ($_crv2n17jkmcwkfl.isSupported(sourceDom) && $_crv2n17jkmcwkfl.isSupported(targetDom)) {\r\n targetDom.style.cssText = sourceDom.style.cssText;\r\n }\r\n };\r\n var reflow = function (e) {\r\n return e.dom().offsetWidth;\r\n };\r\n var transferOne$1 = function (source, destination, style) {\r\n getRaw(source, style).each(function (value) {\r\n if (getRaw(destination, style).isNone())\r\n set$1(destination, style, value);\r\n });\r\n };\r\n var transfer$1 = function (source, destination, styles) {\r\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\r\n return;\r\n each(styles, function (style) {\r\n transferOne$1(source, destination, style);\r\n });\r\n };\r\n var $_4enzit13jkmcwke5 = {\r\n copy: copy,\r\n set: set$1,\r\n preserve: preserve,\r\n setAll: setAll$1,\r\n setOptions: setOptions,\r\n remove: remove$1,\r\n get: get$1,\r\n getRaw: getRaw,\r\n getAllRaw: getAllRaw,\r\n isValidValue: isValidValue,\r\n reflow: reflow,\r\n transfer: transfer$1\r\n };\r\n\r\n var Immutable = function () {\r\n var fields = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n fields[_i] = arguments[_i];\r\n }\r\n return function () {\r\n var values = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n values[_i] = arguments[_i];\r\n }\r\n if (fields.length !== values.length) {\r\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\r\n }\r\n var struct = {};\r\n each(fields, function (name, i) {\r\n struct[name] = constant(values[i]);\r\n });\r\n return struct;\r\n };\r\n };\r\n\r\n var toArray$1 = function (target, f) {\r\n var r = [];\r\n var recurse = function (e) {\r\n r.push(e);\r\n return f(e);\r\n };\r\n var cur = f(target);\r\n do {\r\n cur = cur.bind(recurse);\r\n } while (cur.isSome());\r\n return r;\r\n };\r\n var $_ea405s1djkmcwkgi = { toArray: toArray$1 };\r\n\r\n var node = function () {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('Node');\r\n return f;\r\n };\r\n var compareDocumentPosition = function (a, b, match) {\r\n return (a.compareDocumentPosition(b) & match) !== 0;\r\n };\r\n var documentPositionPreceding = function (a, b) {\r\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\r\n };\r\n var documentPositionContainedBy = function (a, b) {\r\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\r\n };\r\n var $_ggq6431fjkmcwkgt = {\r\n documentPositionPreceding: documentPositionPreceding,\r\n documentPositionContainedBy: documentPositionContainedBy\r\n };\r\n\r\n var ELEMENT = $_c8e5uh12jkmcwke2.ELEMENT;\r\n var DOCUMENT = $_c8e5uh12jkmcwke2.DOCUMENT;\r\n var is$1 = function (element, selector) {\r\n var elem = element.dom();\r\n if (elem.nodeType !== ELEMENT)\r\n return false;\r\n else if (elem.matches !== undefined)\r\n return elem.matches(selector);\r\n else if (elem.msMatchesSelector !== undefined)\r\n return elem.msMatchesSelector(selector);\r\n else if (elem.webkitMatchesSelector !== undefined)\r\n return elem.webkitMatchesSelector(selector);\r\n else if (elem.mozMatchesSelector !== undefined)\r\n return elem.mozMatchesSelector(selector);\r\n else\r\n throw new Error('Browser lacks native selectors');\r\n };\r\n var bypassSelector = function (dom) {\r\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\r\n };\r\n var all = function (selector, scope) {\r\n var base = scope === undefined ? document : scope.dom();\r\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\r\n };\r\n var one = function (selector, scope) {\r\n var base = scope === undefined ? document : scope.dom();\r\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\r\n };\r\n var $_4jv6d81gjkmcwkgv = {\r\n all: all,\r\n is: is$1,\r\n one: one\r\n };\r\n\r\n var eq = function (e1, e2) {\r\n return e1.dom() === e2.dom();\r\n };\r\n var isEqualNode = function (e1, e2) {\r\n return e1.dom().isEqualNode(e2.dom());\r\n };\r\n var member = function (element, elements) {\r\n return exists(elements, curry(eq, element));\r\n };\r\n var regularContains = function (e1, e2) {\r\n var d1 = e1.dom(), d2 = e2.dom();\r\n return d1 === d2 ? false : d1.contains(d2);\r\n };\r\n var ieContains = function (e1, e2) {\r\n return $_ggq6431fjkmcwkgt.documentPositionContainedBy(e1.dom(), e2.dom());\r\n };\r\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\r\n var contains$3 = browser.isIE() ? ieContains : regularContains;\r\n var $_e4hu6h1ejkmcwkgj = {\r\n eq: eq,\r\n isEqualNode: isEqualNode,\r\n member: member,\r\n contains: contains$3,\r\n is: $_4jv6d81gjkmcwkgv.is\r\n };\r\n\r\n var owner = function (element) {\r\n return Element$$1.fromDom(element.dom().ownerDocument);\r\n };\r\n var documentElement = function (element) {\r\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\r\n };\r\n var defaultView = function (element) {\r\n var el = element.dom();\r\n var defaultView = el.ownerDocument.defaultView;\r\n return Element$$1.fromDom(defaultView);\r\n };\r\n var parent = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\r\n };\r\n var findIndex$2 = function (element) {\r\n return parent(element).bind(function (p) {\r\n var kin = children(p);\r\n return findIndex(kin, function (elem) {\r\n return $_e4hu6h1ejkmcwkgj.eq(element, elem);\r\n });\r\n });\r\n };\r\n var parents = function (element, isRoot) {\r\n var stop = isFunction(isRoot) ? isRoot : constant(false);\r\n var dom = element.dom();\r\n var ret = [];\r\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\r\n var rawParent = dom.parentNode;\r\n var parent = Element$$1.fromDom(rawParent);\r\n ret.push(parent);\r\n if (stop(parent) === true)\r\n break;\r\n else\r\n dom = rawParent;\r\n }\r\n return ret;\r\n };\r\n var siblings = function (element) {\r\n var filterSelf = function (elements) {\r\n return filter(elements, function (x) {\r\n return !$_e4hu6h1ejkmcwkgj.eq(element, x);\r\n });\r\n };\r\n return parent(element).map(children).map(filterSelf).getOr([]);\r\n };\r\n var offsetParent = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\r\n };\r\n var prevSibling = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\r\n };\r\n var nextSibling = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\r\n };\r\n var prevSiblings = function (element) {\r\n return reverse($_ea405s1djkmcwkgi.toArray(element, prevSibling));\r\n };\r\n var nextSiblings = function (element) {\r\n return $_ea405s1djkmcwkgi.toArray(element, nextSibling);\r\n };\r\n var children = function (element) {\r\n var dom = element.dom();\r\n return map(dom.childNodes, Element$$1.fromDom);\r\n };\r\n var child = function (element, index) {\r\n var children = element.dom().childNodes;\r\n return Option.from(children[index]).map(Element$$1.fromDom);\r\n };\r\n var firstChild = function (element) {\r\n return child(element, 0);\r\n };\r\n var lastChild = function (element) {\r\n return child(element, element.dom().childNodes.length - 1);\r\n };\r\n var childNodesCount = function (element) {\r\n return element.dom().childNodes.length;\r\n };\r\n var hasChildNodes = function (element) {\r\n return element.dom().hasChildNodes();\r\n };\r\n var spot = Immutable('element', 'offset');\r\n var leaf = function (element, offset) {\r\n var cs = children(element);\r\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\r\n };\r\n var $_ca6pc118jkmcwkfs = {\r\n owner: owner,\r\n defaultView: defaultView,\r\n documentElement: documentElement,\r\n parent: parent,\r\n findIndex: findIndex$2,\r\n parents: parents,\r\n siblings: siblings,\r\n prevSibling: prevSibling,\r\n offsetParent: offsetParent,\r\n prevSiblings: prevSiblings,\r\n nextSibling: nextSibling,\r\n nextSiblings: nextSiblings,\r\n children: children,\r\n child: child,\r\n firstChild: firstChild,\r\n lastChild: lastChild,\r\n childNodesCount: childNodesCount,\r\n hasChildNodes: hasChildNodes,\r\n leaf: leaf\r\n };\r\n\r\n var browser$1 = $_b1ykk4ojkmcwkcj.detect().browser;\r\n var firstElement = function (nodes) {\r\n return find(nodes, $_2xwdjv11jkmcwke0.isElement);\r\n };\r\n var getTableCaptionDeltaY = function (elm) {\r\n if (browser$1.isFirefox() && $_2xwdjv11jkmcwke0.name(elm) === 'table') {\r\n return firstElement($_ca6pc118jkmcwkfs.children(elm)).filter(function (elm) {\r\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\r\n }).bind(function (caption) {\r\n return firstElement($_ca6pc118jkmcwkfs.nextSiblings(caption)).map(function (body) {\r\n var bodyTop = body.dom().offsetTop;\r\n var captionTop = caption.dom().offsetTop;\r\n var captionHeight = caption.dom().offsetHeight;\r\n return bodyTop <= captionTop ? -captionHeight : 0;\r\n });\r\n }).getOr(0);\r\n } else {\r\n return 0;\r\n }\r\n };\r\n var getPos = function (body, elm, rootElm) {\r\n var x = 0, y = 0, offsetParent;\r\n var doc = body.ownerDocument;\r\n var pos;\r\n rootElm = rootElm ? rootElm : body;\r\n if (elm) {\r\n if (rootElm === body && elm.getBoundingClientRect && $_4enzit13jkmcwke5.get(Element$$1.fromDom(body), 'position') === 'static') {\r\n pos = elm.getBoundingClientRect();\r\n x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\r\n y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n }\r\n offsetParent = elm;\r\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\r\n x += offsetParent.offsetLeft || 0;\r\n y += offsetParent.offsetTop || 0;\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n offsetParent = elm.parentNode;\r\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\r\n x -= offsetParent.scrollLeft || 0;\r\n y -= offsetParent.scrollTop || 0;\r\n offsetParent = offsetParent.parentNode;\r\n }\r\n y += getTableCaptionDeltaY(Element$$1.fromDom(elm));\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n };\r\n var $_5o0xi0njkmcwkbz = { getPos: getPos };\r\n\r\n var nu$3 = function (baseFn) {\r\n var data = Option.none();\r\n var callbacks = [];\r\n var map$$1 = function (f) {\r\n return nu$3(function (nCallback) {\r\n get(function (data) {\r\n nCallback(f(data));\r\n });\r\n });\r\n };\r\n var get = function (nCallback) {\r\n if (isReady())\r\n call(nCallback);\r\n else\r\n callbacks.push(nCallback);\r\n };\r\n var set = function (x) {\r\n data = Option.some(x);\r\n run(callbacks);\r\n callbacks = [];\r\n };\r\n var isReady = function () {\r\n return data.isSome();\r\n };\r\n var run = function (cbs) {\r\n each(cbs, call);\r\n };\r\n var call = function (cb) {\r\n data.each(function (x) {\r\n setTimeout(function () {\r\n cb(x);\r\n }, 0);\r\n });\r\n };\r\n baseFn(set);\r\n return {\r\n get: get,\r\n map: map$$1,\r\n isReady: isReady\r\n };\r\n };\r\n var pure$1 = function (a) {\r\n return nu$3(function (callback) {\r\n callback(a);\r\n });\r\n };\r\n var LazyValue = {\r\n nu: nu$3,\r\n pure: pure$1\r\n };\r\n\r\n var bounce = function (f) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var me = this;\r\n setTimeout(function () {\r\n f.apply(me, args);\r\n }, 0);\r\n };\r\n };\r\n\r\n var nu$4 = function (baseFn) {\r\n var get = function (callback) {\r\n baseFn(bounce(callback));\r\n };\r\n var map = function (fab) {\r\n return nu$4(function (callback) {\r\n get(function (a) {\r\n var value = fab(a);\r\n callback(value);\r\n });\r\n });\r\n };\r\n var bind = function (aFutureB) {\r\n return nu$4(function (callback) {\r\n get(function (a) {\r\n aFutureB(a).get(callback);\r\n });\r\n });\r\n };\r\n var anonBind = function (futureB) {\r\n return nu$4(function (callback) {\r\n get(function (a) {\r\n futureB.get(callback);\r\n });\r\n });\r\n };\r\n var toLazy = function () {\r\n return LazyValue.nu(get);\r\n };\r\n return {\r\n map: map,\r\n bind: bind,\r\n anonBind: anonBind,\r\n toLazy: toLazy,\r\n get: get\r\n };\r\n };\r\n var pure$2 = function (a) {\r\n return nu$4(function (callback) {\r\n callback(a);\r\n });\r\n };\r\n var Future = {\r\n nu: nu$4,\r\n pure: pure$2\r\n };\r\n\r\n var par = function (asyncValues, nu) {\r\n return nu(function (callback) {\r\n var r = [];\r\n var count = 0;\r\n var cb = function (i) {\r\n return function (value) {\r\n r[i] = value;\r\n count++;\r\n if (count >= asyncValues.length) {\r\n callback(r);\r\n }\r\n };\r\n };\r\n if (asyncValues.length === 0) {\r\n callback([]);\r\n } else {\r\n each(asyncValues, function (asyncValue, i) {\r\n asyncValue.get(cb(i));\r\n });\r\n }\r\n });\r\n };\r\n\r\n var par$1 = function (futures) {\r\n return par(futures, Future.nu);\r\n };\r\n\r\n var value$1 = function (o) {\r\n var is = function (v) {\r\n return o === v;\r\n };\r\n var or = function (opt) {\r\n return value$1(o);\r\n };\r\n var orThunk = function (f) {\r\n return value$1(o);\r\n };\r\n var map = function (f) {\r\n return value$1(f(o));\r\n };\r\n var each = function (f) {\r\n f(o);\r\n };\r\n var bind = function (f) {\r\n return f(o);\r\n };\r\n var fold = function (_, onValue) {\r\n return onValue(o);\r\n };\r\n var exists = function (f) {\r\n return f(o);\r\n };\r\n var forall = function (f) {\r\n return f(o);\r\n };\r\n var toOption = function () {\r\n return Option.some(o);\r\n };\r\n return {\r\n is: is,\r\n isValue: always,\r\n isError: never,\r\n getOr: constant(o),\r\n getOrThunk: constant(o),\r\n getOrDie: constant(o),\r\n or: or,\r\n orThunk: orThunk,\r\n fold: fold,\r\n map: map,\r\n each: each,\r\n bind: bind,\r\n exists: exists,\r\n forall: forall,\r\n toOption: toOption\r\n };\r\n };\r\n var error = function (message) {\r\n var getOrThunk = function (f) {\r\n return f();\r\n };\r\n var getOrDie = function () {\r\n return die(String(message))();\r\n };\r\n var or = function (opt) {\r\n return opt;\r\n };\r\n var orThunk = function (f) {\r\n return f();\r\n };\r\n var map = function (f) {\r\n return error(message);\r\n };\r\n var bind = function (f) {\r\n return error(message);\r\n };\r\n var fold = function (onError, _) {\r\n return onError(message);\r\n };\r\n return {\r\n is: never,\r\n isValue: never,\r\n isError: always,\r\n getOr: identity,\r\n getOrThunk: getOrThunk,\r\n getOrDie: getOrDie,\r\n or: or,\r\n orThunk: orThunk,\r\n fold: fold,\r\n map: map,\r\n each: noop,\r\n bind: bind,\r\n exists: never,\r\n forall: always,\r\n toOption: Option.none\r\n };\r\n };\r\n var Result = {\r\n value: value$1,\r\n error: error\r\n };\r\n\r\n function StyleSheetLoader(document$$1, settings) {\r\n var idCount = 0;\r\n var loadedStates = {};\r\n var maxLoadTime;\r\n settings = settings || {};\r\n maxLoadTime = settings.maxLoadTime || 5000;\r\n var appendToHead = function (node) {\r\n document$$1.getElementsByTagName('head')[0].appendChild(node);\r\n };\r\n var load = function (url, loadedCallback, errorCallback) {\r\n var link, style, startTime, state;\r\n var passed = function () {\r\n var callbacks = state.passed;\r\n var i = callbacks.length;\r\n while (i--) {\r\n callbacks[i]();\r\n }\r\n state.status = 2;\r\n state.passed = [];\r\n state.failed = [];\r\n };\r\n var failed = function () {\r\n var callbacks = state.failed;\r\n var i = callbacks.length;\r\n while (i--) {\r\n callbacks[i]();\r\n }\r\n state.status = 3;\r\n state.passed = [];\r\n state.failed = [];\r\n };\r\n var isOldWebKit = function () {\r\n var webKitChunks = navigator.userAgent.match(/WebKit\\/(\\d*)/);\r\n return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);\r\n };\r\n var wait = function (testCallback, waitCallback) {\r\n if (!testCallback()) {\r\n if (new Date().getTime() - startTime < maxLoadTime) {\r\n $_3l01gcijkmcwk99.setTimeout(waitCallback);\r\n } else {\r\n failed();\r\n }\r\n }\r\n };\r\n var waitForWebKitLinkLoaded = function () {\r\n wait(function () {\r\n var styleSheets = document$$1.styleSheets;\r\n var styleSheet, i = styleSheets.length, owner;\r\n while (i--) {\r\n styleSheet = styleSheets[i];\r\n owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;\r\n if (owner && owner.id === link.id) {\r\n passed();\r\n return true;\r\n }\r\n }\r\n }, waitForWebKitLinkLoaded);\r\n };\r\n var waitForGeckoLinkLoaded = function () {\r\n wait(function () {\r\n try {\r\n var cssRules = style.sheet.cssRules;\r\n passed();\r\n return !!cssRules;\r\n } catch (ex) {\r\n }\r\n }, waitForGeckoLinkLoaded);\r\n };\r\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\r\n if (!loadedStates[url]) {\r\n state = {\r\n passed: [],\r\n failed: []\r\n };\r\n loadedStates[url] = state;\r\n } else {\r\n state = loadedStates[url];\r\n }\r\n if (loadedCallback) {\r\n state.passed.push(loadedCallback);\r\n }\r\n if (errorCallback) {\r\n state.failed.push(errorCallback);\r\n }\r\n if (state.status === 1) {\r\n return;\r\n }\r\n if (state.status === 2) {\r\n passed();\r\n return;\r\n }\r\n if (state.status === 3) {\r\n failed();\r\n return;\r\n }\r\n state.status = 1;\r\n link = document$$1.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.type = 'text/css';\r\n link.id = 'u' + idCount++;\r\n link.async = false;\r\n link.defer = false;\r\n startTime = new Date().getTime();\r\n if ('onload' in link && !isOldWebKit()) {\r\n link.onload = waitForWebKitLinkLoaded;\r\n link.onerror = failed;\r\n } else {\r\n if (navigator.userAgent.indexOf('Firefox') > 0) {\r\n style = document$$1.createElement('style');\r\n style.textContent = '@import \"' + url + '\"';\r\n waitForGeckoLinkLoaded();\r\n appendToHead(style);\r\n return;\r\n }\r\n waitForWebKitLinkLoaded();\r\n }\r\n appendToHead(link);\r\n link.href = url;\r\n };\r\n var loadF = function (url) {\r\n return Future.nu(function (resolve) {\r\n load(url, compose(resolve, constant(Result.value(url))), compose(resolve, constant(Result.error(url))));\r\n });\r\n };\r\n var unbox = function (result) {\r\n return result.fold(identity, identity);\r\n };\r\n var loadAll = function (urls, success, failure) {\r\n par$1(map(urls, loadF)).get(function (result) {\r\n var parts = partition(result, function (r) {\r\n return r.isValue();\r\n });\r\n if (parts.fail.length > 0) {\r\n failure(parts.fail.map(unbox));\r\n } else {\r\n success(parts.pass.map(unbox));\r\n }\r\n });\r\n };\r\n return {\r\n load: load,\r\n loadAll: loadAll\r\n };\r\n }\r\n\r\n function TreeWalker (startNode, rootNode) {\r\n var node = startNode;\r\n var findSibling = function (node, startName, siblingName, shallow) {\r\n var sibling, parent;\r\n if (node) {\r\n if (!shallow && node[startName]) {\r\n return node[startName];\r\n }\r\n if (node !== rootNode) {\r\n sibling = node[siblingName];\r\n if (sibling) {\r\n return sibling;\r\n }\r\n for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) {\r\n sibling = parent[siblingName];\r\n if (sibling) {\r\n return sibling;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var findPreviousNode = function (node, startName, siblingName, shallow) {\r\n var sibling, parent, child;\r\n if (node) {\r\n sibling = node[siblingName];\r\n if (rootNode && sibling === rootNode) {\r\n return;\r\n }\r\n if (sibling) {\r\n if (!shallow) {\r\n for (child = sibling[startName]; child; child = child[startName]) {\r\n if (!child[startName]) {\r\n return child;\r\n }\r\n }\r\n }\r\n return sibling;\r\n }\r\n parent = node.parentNode;\r\n if (parent && parent !== rootNode) {\r\n return parent;\r\n }\r\n }\r\n };\r\n this.current = function () {\r\n return node;\r\n };\r\n this.next = function (shallow) {\r\n node = findSibling(node, 'firstChild', 'nextSibling', shallow);\r\n return node;\r\n };\r\n this.prev = function (shallow) {\r\n node = findSibling(node, 'lastChild', 'previousSibling', shallow);\r\n return node;\r\n };\r\n this.prev2 = function (shallow) {\r\n node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow);\r\n return node;\r\n };\r\n }\r\n\r\n var blocks = [\r\n 'article',\r\n 'aside',\r\n 'details',\r\n 'div',\r\n 'dt',\r\n 'figcaption',\r\n 'footer',\r\n 'form',\r\n 'fieldset',\r\n 'header',\r\n 'hgroup',\r\n 'html',\r\n 'main',\r\n 'nav',\r\n 'section',\r\n 'summary',\r\n 'body',\r\n 'p',\r\n 'dl',\r\n 'multicol',\r\n 'dd',\r\n 'figure',\r\n 'address',\r\n 'center',\r\n 'blockquote',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'listing',\r\n 'xmp',\r\n 'pre',\r\n 'plaintext',\r\n 'menu',\r\n 'dir',\r\n 'ul',\r\n 'ol',\r\n 'li',\r\n 'hr',\r\n 'table',\r\n 'tbody',\r\n 'thead',\r\n 'tfoot',\r\n 'th',\r\n 'tr',\r\n 'td',\r\n 'caption'\r\n ];\r\n var voids = [\r\n 'area',\r\n 'base',\r\n 'basefont',\r\n 'br',\r\n 'col',\r\n 'frame',\r\n 'hr',\r\n 'img',\r\n 'input',\r\n 'isindex',\r\n 'link',\r\n 'meta',\r\n 'param',\r\n 'embed',\r\n 'source',\r\n 'wbr',\r\n 'track'\r\n ];\r\n var tableCells = [\r\n 'td',\r\n 'th'\r\n ];\r\n var tableSections = [\r\n 'thead',\r\n 'tbody',\r\n 'tfoot'\r\n ];\r\n var textBlocks = [\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'p',\r\n 'div',\r\n 'address',\r\n 'pre',\r\n 'form',\r\n 'blockquote',\r\n 'center',\r\n 'dir',\r\n 'fieldset',\r\n 'header',\r\n 'footer',\r\n 'article',\r\n 'section',\r\n 'hgroup',\r\n 'aside',\r\n 'nav',\r\n 'figure'\r\n ];\r\n var headings = [\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6'\r\n ];\r\n var listItems = [\r\n 'li',\r\n 'dd',\r\n 'dt'\r\n ];\r\n var lists = [\r\n 'ul',\r\n 'ol',\r\n 'dl'\r\n ];\r\n var wsElements = [\r\n 'pre',\r\n 'script',\r\n 'textarea',\r\n 'style'\r\n ];\r\n var lazyLookup = function (items) {\r\n var lookup;\r\n return function (node) {\r\n lookup = lookup ? lookup : mapToObject(items, constant(true));\r\n return lookup.hasOwnProperty($_2xwdjv11jkmcwke0.name(node));\r\n };\r\n };\r\n var isHeading = lazyLookup(headings);\r\n var isBlock = lazyLookup(blocks);\r\n var isInline = function (node) {\r\n return $_2xwdjv11jkmcwke0.isElement(node) && !isBlock(node);\r\n };\r\n var isBr = function (node) {\r\n return $_2xwdjv11jkmcwke0.isElement(node) && $_2xwdjv11jkmcwke0.name(node) === 'br';\r\n };\r\n var isTextBlock = lazyLookup(textBlocks);\r\n var isList = lazyLookup(lists);\r\n var isListItem = lazyLookup(listItems);\r\n var isVoid = lazyLookup(voids);\r\n var isTableSection = lazyLookup(tableSections);\r\n var isTableCell = lazyLookup(tableCells);\r\n var isWsPreserveElement = lazyLookup(wsElements);\r\n\r\n var isNodeType = function (type) {\r\n return function (node) {\r\n return !!node && node.nodeType === type;\r\n };\r\n };\r\n var isElement$1 = isNodeType(1);\r\n var matchNodeNames = function (names) {\r\n var items = names.toLowerCase().split(' ');\r\n return function (node) {\r\n var i, name;\r\n if (node && node.nodeType) {\r\n name = node.nodeName.toLowerCase();\r\n for (i = 0; i < items.length; i++) {\r\n if (name === items[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var matchStyleValues = function (name, values) {\r\n var items = values.toLowerCase().split(' ');\r\n return function (node) {\r\n var i, cssValue;\r\n if (isElement$1(node)) {\r\n for (i = 0; i < items.length; i++) {\r\n var computed = node.ownerDocument.defaultView.getComputedStyle(node, null);\r\n cssValue = computed ? computed.getPropertyValue(name) : null;\r\n if (cssValue === items[i]) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var hasPropValue = function (propName, propValue) {\r\n return function (node) {\r\n return isElement$1(node) && node[propName] === propValue;\r\n };\r\n };\r\n var hasAttribute = function (attrName, attrValue) {\r\n return function (node) {\r\n return isElement$1(node) && node.hasAttribute(attrName);\r\n };\r\n };\r\n var hasAttributeValue = function (attrName, attrValue) {\r\n return function (node) {\r\n return isElement$1(node) && node.getAttribute(attrName) === attrValue;\r\n };\r\n };\r\n var isBogus = function (node) {\r\n return isElement$1(node) && node.hasAttribute('data-mce-bogus');\r\n };\r\n var isBogusAll = function (node) {\r\n return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all';\r\n };\r\n var isTable = function (node) {\r\n return isElement$1(node) && node.tagName === 'TABLE';\r\n };\r\n var hasContentEditableState = function (value) {\r\n return function (node) {\r\n if (isElement$1(node)) {\r\n if (node.contentEditable === value) {\r\n return true;\r\n }\r\n if (node.getAttribute('data-mce-contenteditable') === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var isText$1 = isNodeType(3);\r\n var isComment$1 = isNodeType(8);\r\n var isDocument$1 = isNodeType(9);\r\n var isBr$1 = matchNodeNames('br');\r\n var isContentEditableTrue = hasContentEditableState('true');\r\n var isContentEditableFalse = hasContentEditableState('false');\r\n var $_bjermr1rjkmcwkij = {\r\n isText: isText$1,\r\n isElement: isElement$1,\r\n isComment: isComment$1,\r\n isDocument: isDocument$1,\r\n isBr: isBr$1,\r\n isContentEditableTrue: isContentEditableTrue,\r\n isContentEditableFalse: isContentEditableFalse,\r\n matchNodeNames: matchNodeNames,\r\n hasPropValue: hasPropValue,\r\n hasAttribute: hasAttribute,\r\n hasAttributeValue: hasAttributeValue,\r\n matchStyleValues: matchStyleValues,\r\n isBogus: isBogus,\r\n isBogusAll: isBogusAll,\r\n isTable: isTable\r\n };\r\n\r\n var surroundedBySpans = function (node) {\r\n var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN';\r\n var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN';\r\n return previousIsSpan && nextIsSpan;\r\n };\r\n var isBookmarkNode = function (node) {\r\n return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\r\n };\r\n var trimNode = function (dom, node) {\r\n var i, children = node.childNodes;\r\n if ($_bjermr1rjkmcwkij.isElement(node) && isBookmarkNode(node)) {\r\n return;\r\n }\r\n for (i = children.length - 1; i >= 0; i--) {\r\n trimNode(dom, children[i]);\r\n }\r\n if ($_bjermr1rjkmcwkij.isDocument(node) === false) {\r\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\r\n var trimmedLength = $_4ujg4tljkmcwkbk.trim(node.nodeValue).length;\r\n if (dom.isBlock(node.parentNode) || trimmedLength > 0) {\r\n return;\r\n }\r\n if (trimmedLength === 0 && surroundedBySpans(node)) {\r\n return;\r\n }\r\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n children = node.childNodes;\r\n if (children.length === 1 && isBookmarkNode(children[0])) {\r\n node.parentNode.insertBefore(children[0], node);\r\n }\r\n if (children.length || isVoid(Element$$1.fromDom(node))) {\r\n return;\r\n }\r\n }\r\n dom.remove(node);\r\n }\r\n return node;\r\n };\r\n var $_br9sxm1pjkmcwki4 = { trimNode: trimNode };\r\n\r\n var makeMap$1 = $_4ujg4tljkmcwkbk.makeMap;\r\n var namedEntities;\r\n var baseEntities;\r\n var reverseEntities;\r\n var attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\r\n var textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\r\n var rawCharsRegExp = /[<>&\\\"\\']/g;\r\n var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\r\n var asciiMap = {\r\n 128: '\\u20AC',\r\n 130: '\\u201A',\r\n 131: '\\u0192',\r\n 132: '\\u201E',\r\n 133: '\\u2026',\r\n 134: '\\u2020',\r\n 135: '\\u2021',\r\n 136: '\\u02c6',\r\n 137: '\\u2030',\r\n 138: '\\u0160',\r\n 139: '\\u2039',\r\n 140: '\\u0152',\r\n 142: '\\u017d',\r\n 145: '\\u2018',\r\n 146: '\\u2019',\r\n 147: '\\u201C',\r\n 148: '\\u201D',\r\n 149: '\\u2022',\r\n 150: '\\u2013',\r\n 151: '\\u2014',\r\n 152: '\\u02DC',\r\n 153: '\\u2122',\r\n 154: '\\u0161',\r\n 155: '\\u203A',\r\n 156: '\\u0153',\r\n 158: '\\u017e',\r\n 159: '\\u0178'\r\n };\r\n baseEntities = {\r\n '\"': '"',\r\n '\\'': ''',\r\n '<': '<',\r\n '>': '>',\r\n '&': '&',\r\n '`': '`'\r\n };\r\n reverseEntities = {\r\n '<': '<',\r\n '>': '>',\r\n '&': '&',\r\n '"': '\"',\r\n ''': '\\''\r\n };\r\n var nativeDecode = function (text) {\r\n var elm;\r\n elm = Element$$1.fromTag('div').dom();\r\n elm.innerHTML = text;\r\n return elm.textContent || elm.innerText || text;\r\n };\r\n var buildEntitiesLookup = function (items, radix) {\r\n var i, chr, entity;\r\n var lookup = {};\r\n if (items) {\r\n items = items.split(',');\r\n radix = radix || 10;\r\n for (i = 0; i < items.length; i += 2) {\r\n chr = String.fromCharCode(parseInt(items[i], radix));\r\n if (!baseEntities[chr]) {\r\n entity = '&' + items[i + 1] + ';';\r\n lookup[chr] = entity;\r\n lookup[entity] = chr;\r\n }\r\n }\r\n return lookup;\r\n }\r\n };\r\n namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\r\n var encodeRaw = function (text, attr) {\r\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\r\n return baseEntities[chr] || chr;\r\n });\r\n };\r\n var encodeAllRaw = function (text) {\r\n return ('' + text).replace(rawCharsRegExp, function (chr) {\r\n return baseEntities[chr] || chr;\r\n });\r\n };\r\n var encodeNumeric = function (text, attr) {\r\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\r\n if (chr.length > 1) {\r\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\r\n }\r\n return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\r\n });\r\n };\r\n var encodeNamed = function (text, attr, entities) {\r\n entities = entities || namedEntities;\r\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\r\n return baseEntities[chr] || entities[chr] || chr;\r\n });\r\n };\r\n var getEncodeFunc = function (name, entities) {\r\n var entitiesMap = buildEntitiesLookup(entities) || namedEntities;\r\n var encodeNamedAndNumeric = function (text, attr) {\r\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\r\n if (baseEntities[chr] !== undefined) {\r\n return baseEntities[chr];\r\n }\r\n if (entitiesMap[chr] !== undefined) {\r\n return entitiesMap[chr];\r\n }\r\n if (chr.length > 1) {\r\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\r\n }\r\n return '&#' + chr.charCodeAt(0) + ';';\r\n });\r\n };\r\n var encodeCustomNamed = function (text, attr) {\r\n return encodeNamed(text, attr, entitiesMap);\r\n };\r\n var nameMap = makeMap$1(name.replace(/\\+/g, ','));\r\n if (nameMap.named && nameMap.numeric) {\r\n return encodeNamedAndNumeric;\r\n }\r\n if (nameMap.named) {\r\n if (entities) {\r\n return encodeCustomNamed;\r\n }\r\n return encodeNamed;\r\n }\r\n if (nameMap.numeric) {\r\n return encodeNumeric;\r\n }\r\n return encodeRaw;\r\n };\r\n var decode = function (text) {\r\n return text.replace(entityRegExp, function (all, numeric) {\r\n if (numeric) {\r\n if (numeric.charAt(0).toLowerCase() === 'x') {\r\n numeric = parseInt(numeric.substr(1), 16);\r\n } else {\r\n numeric = parseInt(numeric, 10);\r\n }\r\n if (numeric > 65535) {\r\n numeric -= 65536;\r\n return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\r\n }\r\n return asciiMap[numeric] || String.fromCharCode(numeric);\r\n }\r\n return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\r\n });\r\n };\r\n var $_33qwr1sjkmcwkip = {\r\n encodeRaw: encodeRaw,\r\n encodeAllRaw: encodeAllRaw,\r\n encodeNumeric: encodeNumeric,\r\n encodeNamed: encodeNamed,\r\n getEncodeFunc: getEncodeFunc,\r\n decode: decode\r\n };\r\n\r\n var mapCache = {};\r\n var dummyObj = {};\r\n var makeMap$2 = $_4ujg4tljkmcwkbk.makeMap;\r\n var each$4 = $_4ujg4tljkmcwkbk.each;\r\n var extend$1 = $_4ujg4tljkmcwkbk.extend;\r\n var explode$1 = $_4ujg4tljkmcwkbk.explode;\r\n var inArray$1 = $_4ujg4tljkmcwkbk.inArray;\r\n var split = function (items, delim) {\r\n items = $_4ujg4tljkmcwkbk.trim(items);\r\n return items ? items.split(delim || ' ') : [];\r\n };\r\n var compileSchema = function (type) {\r\n var schema = {};\r\n var globalAttributes, blockContent;\r\n var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;\r\n var add = function (name, attributes, children) {\r\n var ni, attributesOrder, element;\r\n var arrayToMap = function (array, obj) {\r\n var map = {};\r\n var i, l;\r\n for (i = 0, l = array.length; i < l; i++) {\r\n map[array[i]] = obj || {};\r\n }\r\n return map;\r\n };\r\n children = children || [];\r\n attributes = attributes || '';\r\n if (typeof children === 'string') {\r\n children = split(children);\r\n }\r\n name = split(name);\r\n ni = name.length;\r\n while (ni--) {\r\n attributesOrder = split([\r\n globalAttributes,\r\n attributes\r\n ].join(' '));\r\n element = {\r\n attributes: arrayToMap(attributesOrder),\r\n attributesOrder: attributesOrder,\r\n children: arrayToMap(children, dummyObj)\r\n };\r\n schema[name[ni]] = element;\r\n }\r\n };\r\n var addAttrs = function (name, attributes) {\r\n var ni, schemaItem, i, l;\r\n name = split(name);\r\n ni = name.length;\r\n attributes = split(attributes);\r\n while (ni--) {\r\n schemaItem = schema[name[ni]];\r\n for (i = 0, l = attributes.length; i < l; i++) {\r\n schemaItem.attributes[attributes[i]] = {};\r\n schemaItem.attributesOrder.push(attributes[i]);\r\n }\r\n }\r\n };\r\n if (mapCache[type]) {\r\n return mapCache[type];\r\n }\r\n globalAttributes = 'id accesskey class dir lang style tabindex title role';\r\n blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\r\n phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\r\n if (type !== 'html4') {\r\n globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\r\n blockContent += ' article aside details dialog figure header footer hgroup section nav';\r\n phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen';\r\n }\r\n if (type !== 'html5-strict') {\r\n globalAttributes += ' xml:lang';\r\n html4PhrasingContent = 'acronym applet basefont big font strike tt';\r\n phrasingContent = [\r\n phrasingContent,\r\n html4PhrasingContent\r\n ].join(' ');\r\n each$4(split(html4PhrasingContent), function (name) {\r\n add(name, '', phrasingContent);\r\n });\r\n html4BlockContent = 'center dir isindex noframes';\r\n blockContent = [\r\n blockContent,\r\n html4BlockContent\r\n ].join(' ');\r\n flowContent = [\r\n blockContent,\r\n phrasingContent\r\n ].join(' ');\r\n each$4(split(html4BlockContent), function (name) {\r\n add(name, '', flowContent);\r\n });\r\n }\r\n flowContent = flowContent || [\r\n blockContent,\r\n phrasingContent\r\n ].join(' ');\r\n add('html', 'manifest', 'head body');\r\n add('head', '', 'base command link meta noscript script style title');\r\n add('title hr noscript br');\r\n add('base', 'href target');\r\n add('link', 'href rel media hreflang type sizes hreflang');\r\n add('meta', 'name http-equiv content charset');\r\n add('style', 'media type scoped');\r\n add('script', 'src async defer type charset');\r\n add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\r\n add('address dt dd div caption', '', flowContent);\r\n add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\r\n add('blockquote', 'cite', flowContent);\r\n add('ol', 'reversed start type', 'li');\r\n add('ul', '', 'li');\r\n add('li', 'value', flowContent);\r\n add('dl', '', 'dt dd');\r\n add('a', 'href target rel media hreflang type', phrasingContent);\r\n add('q', 'cite', phrasingContent);\r\n add('ins del', 'cite datetime', flowContent);\r\n add('img', 'src sizes srcset alt usemap ismap width height');\r\n add('iframe', 'src name width height', flowContent);\r\n add('embed', 'src type width height');\r\n add('object', 'data type typemustmatch name usemap form width height', [\r\n flowContent,\r\n 'param'\r\n ].join(' '));\r\n add('param', 'name value');\r\n add('map', 'name', [\r\n flowContent,\r\n 'area'\r\n ].join(' '));\r\n add('area', 'alt coords shape href target rel media hreflang type');\r\n add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\r\n add('colgroup', 'span', 'col');\r\n add('col', 'span');\r\n add('tbody thead tfoot', '', 'tr');\r\n add('tr', '', 'td th');\r\n add('td', 'colspan rowspan headers', flowContent);\r\n add('th', 'colspan rowspan headers scope abbr', flowContent);\r\n add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\r\n add('fieldset', 'disabled form name', [\r\n flowContent,\r\n 'legend'\r\n ].join(' '));\r\n add('label', 'form for', phrasingContent);\r\n add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\r\n add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\r\n add('select', 'disabled form multiple name required size', 'option optgroup');\r\n add('optgroup', 'disabled label', 'option');\r\n add('option', 'disabled label selected value');\r\n add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\r\n add('menu', 'type label', [\r\n flowContent,\r\n 'li'\r\n ].join(' '));\r\n add('noscript', '', flowContent);\r\n if (type !== 'html4') {\r\n add('wbr');\r\n add('ruby', '', [\r\n phrasingContent,\r\n 'rt rp'\r\n ].join(' '));\r\n add('figcaption', '', flowContent);\r\n add('mark rt rp summary bdi', '', phrasingContent);\r\n add('canvas', 'width height', flowContent);\r\n add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [\r\n flowContent,\r\n 'track source'\r\n ].join(' '));\r\n add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [\r\n flowContent,\r\n 'track source'\r\n ].join(' '));\r\n add('picture', '', 'img source');\r\n add('source', 'src srcset type media sizes');\r\n add('track', 'kind src srclang label default');\r\n add('datalist', '', [\r\n phrasingContent,\r\n 'option'\r\n ].join(' '));\r\n add('article section nav aside header footer', '', flowContent);\r\n add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\r\n add('figure', '', [\r\n flowContent,\r\n 'figcaption'\r\n ].join(' '));\r\n add('time', 'datetime', phrasingContent);\r\n add('dialog', 'open', flowContent);\r\n add('command', 'type label icon disabled checked radiogroup command');\r\n add('output', 'for form name', phrasingContent);\r\n add('progress', 'value max', phrasingContent);\r\n add('meter', 'value min max low high optimum', phrasingContent);\r\n add('details', 'open', [\r\n flowContent,\r\n 'summary'\r\n ].join(' '));\r\n add('keygen', 'autofocus challenge disabled form keytype name');\r\n }\r\n if (type !== 'html5-strict') {\r\n addAttrs('script', 'language xml:space');\r\n addAttrs('style', 'xml:space');\r\n addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\r\n addAttrs('embed', 'align name hspace vspace');\r\n addAttrs('param', 'valuetype type');\r\n addAttrs('a', 'charset name rev shape coords');\r\n addAttrs('br', 'clear');\r\n addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\r\n addAttrs('img', 'name longdesc align border hspace vspace');\r\n addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\r\n addAttrs('font basefont', 'size color face');\r\n addAttrs('input', 'usemap align');\r\n addAttrs('select', 'onchange');\r\n addAttrs('textarea');\r\n addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\r\n addAttrs('ul', 'type compact');\r\n addAttrs('li', 'type');\r\n addAttrs('ol dl menu dir', 'compact');\r\n addAttrs('pre', 'width xml:space');\r\n addAttrs('hr', 'align noshade size width');\r\n addAttrs('isindex', 'prompt');\r\n addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\r\n addAttrs('col', 'width align char charoff valign');\r\n addAttrs('colgroup', 'width align char charoff valign');\r\n addAttrs('thead', 'align char charoff valign');\r\n addAttrs('tr', 'align char charoff valign bgcolor');\r\n addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\r\n addAttrs('form', 'accept');\r\n addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\r\n addAttrs('tfoot', 'align char charoff valign');\r\n addAttrs('tbody', 'align char charoff valign');\r\n addAttrs('area', 'nohref');\r\n addAttrs('body', 'background bgcolor text link vlink alink');\r\n }\r\n if (type !== 'html4') {\r\n addAttrs('input button select textarea', 'autofocus');\r\n addAttrs('input textarea', 'placeholder');\r\n addAttrs('a', 'download');\r\n addAttrs('link script img', 'crossorigin');\r\n addAttrs('iframe', 'sandbox seamless allowfullscreen');\r\n }\r\n each$4(split('a form meter progress dfn'), function (name) {\r\n if (schema[name]) {\r\n delete schema[name].children[name];\r\n }\r\n });\r\n delete schema.caption.children.table;\r\n delete schema.script;\r\n mapCache[type] = schema;\r\n return schema;\r\n };\r\n var compileElementMap = function (value, mode) {\r\n var styles;\r\n if (value) {\r\n styles = {};\r\n if (typeof value === 'string') {\r\n value = { '*': value };\r\n }\r\n each$4(value, function (value, key) {\r\n styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/);\r\n });\r\n }\r\n return styles;\r\n };\r\n function Schema(settings) {\r\n var elements = {};\r\n var children = {};\r\n var patternElements = [];\r\n var validStyles;\r\n var invalidStyles;\r\n var schemaItems;\r\n var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;\r\n var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;\r\n var customElementsMap = {}, specialElements = {};\r\n var createLookupTable = function (option, defaultValue, extendWith) {\r\n var value = settings[option];\r\n if (!value) {\r\n value = mapCache[option];\r\n if (!value) {\r\n value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\r\n value = extend$1(value, extendWith);\r\n mapCache[option] = value;\r\n }\r\n } else {\r\n value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\r\n }\r\n return value;\r\n };\r\n settings = settings || {};\r\n schemaItems = compileSchema(settings.schema);\r\n if (settings.verify_html === false) {\r\n settings.valid_elements = '*[*]';\r\n }\r\n validStyles = compileElementMap(settings.valid_styles);\r\n invalidStyles = compileElementMap(settings.invalid_styles, 'map');\r\n validClasses = compileElementMap(settings.valid_classes, 'map');\r\n whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\r\n selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\r\n shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\r\n boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls');\r\n nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap);\r\n moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);\r\n textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure');\r\n blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary', textBlockElementsMap);\r\n textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp');\r\n each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) {\r\n specialElements[name] = new RegExp(']*>', 'gi');\r\n });\r\n var patternToRegExp = function (str) {\r\n return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\r\n };\r\n var addValidElements = function (validElements) {\r\n var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value;\r\n var elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)\\])?$/, attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/;\r\n if (validElements) {\r\n validElements = split(validElements, ',');\r\n if (elements['@']) {\r\n globalAttributes = elements['@'].attributes;\r\n globalAttributesOrder = elements['@'].attributesOrder;\r\n }\r\n for (ei = 0, el = validElements.length; ei < el; ei++) {\r\n matches = elementRuleRegExp.exec(validElements[ei]);\r\n if (matches) {\r\n prefix = matches[1];\r\n elementName = matches[2];\r\n outputName = matches[3];\r\n attrData = matches[5];\r\n attributes = {};\r\n attributesOrder = [];\r\n element = {\r\n attributes: attributes,\r\n attributesOrder: attributesOrder\r\n };\r\n if (prefix === '#') {\r\n element.paddEmpty = true;\r\n }\r\n if (prefix === '-') {\r\n element.removeEmpty = true;\r\n }\r\n if (matches[4] === '!') {\r\n element.removeEmptyAttrs = true;\r\n }\r\n if (globalAttributes) {\r\n for (key in globalAttributes) {\r\n attributes[key] = globalAttributes[key];\r\n }\r\n attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\r\n }\r\n if (attrData) {\r\n attrData = split(attrData, '|');\r\n for (ai = 0, al = attrData.length; ai < al; ai++) {\r\n matches = attrRuleRegExp.exec(attrData[ai]);\r\n if (matches) {\r\n attr = {};\r\n attrType = matches[1];\r\n attrName = matches[2].replace(/[\\\\:]:/g, ':');\r\n prefix = matches[3];\r\n value = matches[4];\r\n if (attrType === '!') {\r\n element.attributesRequired = element.attributesRequired || [];\r\n element.attributesRequired.push(attrName);\r\n attr.required = true;\r\n }\r\n if (attrType === '-') {\r\n delete attributes[attrName];\r\n attributesOrder.splice(inArray$1(attributesOrder, attrName), 1);\r\n continue;\r\n }\r\n if (prefix) {\r\n if (prefix === '=') {\r\n element.attributesDefault = element.attributesDefault || [];\r\n element.attributesDefault.push({\r\n name: attrName,\r\n value: value\r\n });\r\n attr.defaultValue = value;\r\n }\r\n if (prefix === ':') {\r\n element.attributesForced = element.attributesForced || [];\r\n element.attributesForced.push({\r\n name: attrName,\r\n value: value\r\n });\r\n attr.forcedValue = value;\r\n }\r\n if (prefix === '<') {\r\n attr.validValues = makeMap$2(value, '?');\r\n }\r\n }\r\n if (hasPatternsRegExp.test(attrName)) {\r\n element.attributePatterns = element.attributePatterns || [];\r\n attr.pattern = patternToRegExp(attrName);\r\n element.attributePatterns.push(attr);\r\n } else {\r\n if (!attributes[attrName]) {\r\n attributesOrder.push(attrName);\r\n }\r\n attributes[attrName] = attr;\r\n }\r\n }\r\n }\r\n }\r\n if (!globalAttributes && elementName === '@') {\r\n globalAttributes = attributes;\r\n globalAttributesOrder = attributesOrder;\r\n }\r\n if (outputName) {\r\n element.outputName = elementName;\r\n elements[outputName] = element;\r\n }\r\n if (hasPatternsRegExp.test(elementName)) {\r\n element.pattern = patternToRegExp(elementName);\r\n patternElements.push(element);\r\n } else {\r\n elements[elementName] = element;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var setValidElements = function (validElements) {\r\n elements = {};\r\n patternElements = [];\r\n addValidElements(validElements);\r\n each$4(schemaItems, function (element, name) {\r\n children[name] = element.children;\r\n });\r\n };\r\n var addCustomElements = function (customElements) {\r\n var customElementRegExp = /^(~)?(.+)$/;\r\n if (customElements) {\r\n mapCache.text_block_elements = mapCache.block_elements = null;\r\n each$4(split(customElements, ','), function (rule) {\r\n var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2];\r\n children[name] = children[cloneName];\r\n customElementsMap[name] = cloneName;\r\n if (!inline) {\r\n blockElementsMap[name.toUpperCase()] = {};\r\n blockElementsMap[name] = {};\r\n }\r\n if (!elements[name]) {\r\n var customRule = elements[cloneName];\r\n customRule = extend$1({}, customRule);\r\n delete customRule.removeEmptyAttrs;\r\n delete customRule.removeEmpty;\r\n elements[name] = customRule;\r\n }\r\n each$4(children, function (element, elmName) {\r\n if (element[cloneName]) {\r\n children[elmName] = element = extend$1({}, children[elmName]);\r\n element[name] = element[cloneName];\r\n }\r\n });\r\n });\r\n }\r\n };\r\n var addValidChildren = function (validChildren) {\r\n var childRuleRegExp = /^([+\\-]?)(\\w+)\\[([^\\]]+)\\]$/;\r\n mapCache[settings.schema] = null;\r\n if (validChildren) {\r\n each$4(split(validChildren, ','), function (rule) {\r\n var matches = childRuleRegExp.exec(rule);\r\n var parent, prefix;\r\n if (matches) {\r\n prefix = matches[1];\r\n if (prefix) {\r\n parent = children[matches[2]];\r\n } else {\r\n parent = children[matches[2]] = { '#comment': {} };\r\n }\r\n parent = children[matches[2]];\r\n each$4(split(matches[3], '|'), function (child) {\r\n if (prefix === '-') {\r\n delete parent[child];\r\n } else {\r\n parent[child] = {};\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n var getElementRule = function (name) {\r\n var element = elements[name], i;\r\n if (element) {\r\n return element;\r\n }\r\n i = patternElements.length;\r\n while (i--) {\r\n element = patternElements[i];\r\n if (element.pattern.test(name)) {\r\n return element;\r\n }\r\n }\r\n };\r\n if (!settings.valid_elements) {\r\n each$4(schemaItems, function (element, name) {\r\n elements[name] = {\r\n attributes: element.attributes,\r\n attributesOrder: element.attributesOrder\r\n };\r\n children[name] = element.children;\r\n });\r\n if (settings.schema !== 'html5') {\r\n each$4(split('strong/b em/i'), function (item) {\r\n item = split(item, '/');\r\n elements[item[1]].outputName = item[0];\r\n });\r\n }\r\n each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) {\r\n if (elements[name]) {\r\n elements[name].removeEmpty = true;\r\n }\r\n });\r\n each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) {\r\n elements[name].paddEmpty = true;\r\n });\r\n each$4(split('span'), function (name) {\r\n elements[name].removeEmptyAttrs = true;\r\n });\r\n } else {\r\n setValidElements(settings.valid_elements);\r\n }\r\n addCustomElements(settings.custom_elements);\r\n addValidChildren(settings.valid_children);\r\n addValidElements(settings.extended_valid_elements);\r\n addValidChildren('+ol[ul|ol],+ul[ul|ol]');\r\n each$4({\r\n dd: 'dl',\r\n dt: 'dl',\r\n li: 'ul ol',\r\n td: 'tr',\r\n th: 'tr',\r\n tr: 'tbody thead tfoot',\r\n tbody: 'table',\r\n thead: 'table',\r\n tfoot: 'table',\r\n legend: 'fieldset',\r\n area: 'map',\r\n param: 'video audio object'\r\n }, function (parents, item) {\r\n if (elements[item]) {\r\n elements[item].parentsRequired = split(parents);\r\n }\r\n });\r\n if (settings.invalid_elements) {\r\n each$4(explode$1(settings.invalid_elements), function (item) {\r\n if (elements[item]) {\r\n delete elements[item];\r\n }\r\n });\r\n }\r\n if (!getElementRule('span')) {\r\n addValidElements('span[!data-mce-type|*]');\r\n }\r\n var getValidStyles = function () {\r\n return validStyles;\r\n };\r\n var getInvalidStyles = function () {\r\n return invalidStyles;\r\n };\r\n var getValidClasses = function () {\r\n return validClasses;\r\n };\r\n var getBoolAttrs = function () {\r\n return boolAttrMap;\r\n };\r\n var getBlockElements = function () {\r\n return blockElementsMap;\r\n };\r\n var getTextBlockElements = function () {\r\n return textBlockElementsMap;\r\n };\r\n var getTextInlineElements = function () {\r\n return textInlineElementsMap;\r\n };\r\n var getShortEndedElements = function () {\r\n return shortEndedElementsMap;\r\n };\r\n var getSelfClosingElements = function () {\r\n return selfClosingElementsMap;\r\n };\r\n var getNonEmptyElements = function () {\r\n return nonEmptyElementsMap;\r\n };\r\n var getMoveCaretBeforeOnEnterElements = function () {\r\n return moveCaretBeforeOnEnterElementsMap;\r\n };\r\n var getWhiteSpaceElements = function () {\r\n return whiteSpaceElementsMap;\r\n };\r\n var getSpecialElements = function () {\r\n return specialElements;\r\n };\r\n var isValidChild = function (name, child) {\r\n var parent = children[name.toLowerCase()];\r\n return !!(parent && parent[child.toLowerCase()]);\r\n };\r\n var isValid = function (name, attr) {\r\n var attrPatterns, i;\r\n var rule = getElementRule(name);\r\n if (rule) {\r\n if (attr) {\r\n if (rule.attributes[attr]) {\r\n return true;\r\n }\r\n attrPatterns = rule.attributePatterns;\r\n if (attrPatterns) {\r\n i = attrPatterns.length;\r\n while (i--) {\r\n if (attrPatterns[i].pattern.test(name)) {\r\n return true;\r\n }\r\n }\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var getCustomElements = function () {\r\n return customElementsMap;\r\n };\r\n return {\r\n children: children,\r\n elements: elements,\r\n getValidStyles: getValidStyles,\r\n getValidClasses: getValidClasses,\r\n getBlockElements: getBlockElements,\r\n getInvalidStyles: getInvalidStyles,\r\n getShortEndedElements: getShortEndedElements,\r\n getTextBlockElements: getTextBlockElements,\r\n getTextInlineElements: getTextInlineElements,\r\n getBoolAttrs: getBoolAttrs,\r\n getElementRule: getElementRule,\r\n getSelfClosingElements: getSelfClosingElements,\r\n getNonEmptyElements: getNonEmptyElements,\r\n getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements,\r\n getWhiteSpaceElements: getWhiteSpaceElements,\r\n getSpecialElements: getSpecialElements,\r\n isValidChild: isValidChild,\r\n isValid: isValid,\r\n getCustomElements: getCustomElements,\r\n addValidElements: addValidElements,\r\n setValidElements: setValidElements,\r\n addCustomElements: addCustomElements,\r\n addValidChildren: addValidChildren\r\n };\r\n }\r\n\r\n var toHex = function (match, r, g, b) {\r\n var hex = function (val) {\r\n val = parseInt(val, 10).toString(16);\r\n return val.length > 1 ? val : '0' + val;\r\n };\r\n return '#' + hex(r) + hex(g) + hex(b);\r\n };\r\n function Styles(settings, schema) {\r\n var rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\r\n var urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\r\n var styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\r\n var trimRightRegExp = /\\s+$/;\r\n var i;\r\n var encodingLookup = {};\r\n var encodingItems;\r\n var validStyles;\r\n var invalidStyles;\r\n var invisibleChar = '\\uFEFF';\r\n settings = settings || {};\r\n if (schema) {\r\n validStyles = schema.getValidStyles();\r\n invalidStyles = schema.getInvalidStyles();\r\n }\r\n encodingItems = ('\\\\\" \\\\\\' \\\\; \\\\: ; : ' + invisibleChar).split(' ');\r\n for (i = 0; i < encodingItems.length; i++) {\r\n encodingLookup[encodingItems[i]] = invisibleChar + i;\r\n encodingLookup[invisibleChar + i] = encodingItems[i];\r\n }\r\n return {\r\n toHex: function (color) {\r\n return color.replace(rgbRegExp, toHex);\r\n },\r\n parse: function (css) {\r\n var styles = {};\r\n var matches, name, value, isEncoded;\r\n var urlConverter = settings.url_converter;\r\n var urlConverterScope = settings.url_converter_scope || this;\r\n var compress = function (prefix, suffix, noJoin) {\r\n var top, right, bottom, left;\r\n top = styles[prefix + '-top' + suffix];\r\n if (!top) {\r\n return;\r\n }\r\n right = styles[prefix + '-right' + suffix];\r\n if (!right) {\r\n return;\r\n }\r\n bottom = styles[prefix + '-bottom' + suffix];\r\n if (!bottom) {\r\n return;\r\n }\r\n left = styles[prefix + '-left' + suffix];\r\n if (!left) {\r\n return;\r\n }\r\n var box = [\r\n top,\r\n right,\r\n bottom,\r\n left\r\n ];\r\n i = box.length - 1;\r\n while (i--) {\r\n if (box[i] !== box[i + 1]) {\r\n break;\r\n }\r\n }\r\n if (i > -1 && noJoin) {\r\n return;\r\n }\r\n styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\r\n delete styles[prefix + '-top' + suffix];\r\n delete styles[prefix + '-right' + suffix];\r\n delete styles[prefix + '-bottom' + suffix];\r\n delete styles[prefix + '-left' + suffix];\r\n };\r\n var canCompress = function (key) {\r\n var value = styles[key], i;\r\n if (!value) {\r\n return;\r\n }\r\n value = value.split(' ');\r\n i = value.length;\r\n while (i--) {\r\n if (value[i] !== value[0]) {\r\n return false;\r\n }\r\n }\r\n styles[key] = value[0];\r\n return true;\r\n };\r\n var compress2 = function (target, a, b, c) {\r\n if (!canCompress(a)) {\r\n return;\r\n }\r\n if (!canCompress(b)) {\r\n return;\r\n }\r\n if (!canCompress(c)) {\r\n return;\r\n }\r\n styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\r\n delete styles[a];\r\n delete styles[b];\r\n delete styles[c];\r\n };\r\n var encode = function (str) {\r\n isEncoded = true;\r\n return encodingLookup[str];\r\n };\r\n var decode = function (str, keepSlashes) {\r\n if (isEncoded) {\r\n str = str.replace(/\\uFEFF[0-9]/g, function (str) {\r\n return encodingLookup[str];\r\n });\r\n }\r\n if (!keepSlashes) {\r\n str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\r\n }\r\n return str;\r\n };\r\n var decodeSingleHexSequence = function (escSeq) {\r\n return String.fromCharCode(parseInt(escSeq.slice(1), 16));\r\n };\r\n var decodeHexSequences = function (value) {\r\n return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\r\n };\r\n var processUrl = function (match, url, url2, url3, str, str2) {\r\n str = str || str2;\r\n if (str) {\r\n str = decode(str);\r\n return '\\'' + str.replace(/\\'/g, '\\\\\\'') + '\\'';\r\n }\r\n url = decode(url || url2 || url3);\r\n if (!settings.allow_script_urls) {\r\n var scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\r\n if (/(java|vb)script:/i.test(scriptUrl)) {\r\n return '';\r\n }\r\n if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\r\n return '';\r\n }\r\n }\r\n if (urlConverter) {\r\n url = urlConverter.call(urlConverterScope, url, 'style');\r\n }\r\n return 'url(\\'' + url.replace(/\\'/g, '\\\\\\'') + '\\')';\r\n };\r\n if (css) {\r\n css = css.replace(/[\\u0000-\\u001F]/g, '');\r\n css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, function (str) {\r\n return str.replace(/[;:]/g, encode);\r\n });\r\n while (matches = styleRegExp.exec(css)) {\r\n styleRegExp.lastIndex = matches.index + matches[0].length;\r\n name = matches[1].replace(trimRightRegExp, '').toLowerCase();\r\n value = matches[2].replace(trimRightRegExp, '');\r\n if (name && value) {\r\n name = decodeHexSequences(name);\r\n value = decodeHexSequences(value);\r\n if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\r\n continue;\r\n }\r\n if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\r\n continue;\r\n }\r\n if (name === 'font-weight' && value === '700') {\r\n value = 'bold';\r\n } else if (name === 'color' || name === 'background-color') {\r\n value = value.toLowerCase();\r\n }\r\n value = value.replace(rgbRegExp, toHex);\r\n value = value.replace(urlOrStrRegExp, processUrl);\r\n styles[name] = isEncoded ? decode(value, true) : value;\r\n }\r\n }\r\n compress('border', '', true);\r\n compress('border', '-width');\r\n compress('border', '-color');\r\n compress('border', '-style');\r\n compress('padding', '');\r\n compress('margin', '');\r\n compress2('border', 'border-width', 'border-style', 'border-color');\r\n if (styles.border === 'medium none') {\r\n delete styles.border;\r\n }\r\n if (styles['border-image'] === 'none') {\r\n delete styles['border-image'];\r\n }\r\n }\r\n return styles;\r\n },\r\n serialize: function (styles, elementName) {\r\n var css = '', name, value;\r\n var serializeStyles = function (name) {\r\n var styleList, i, l, value;\r\n styleList = validStyles[name];\r\n if (styleList) {\r\n for (i = 0, l = styleList.length; i < l; i++) {\r\n name = styleList[i];\r\n value = styles[name];\r\n if (value) {\r\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r\n }\r\n }\r\n }\r\n };\r\n var isValid = function (name, elementName) {\r\n var styleMap;\r\n styleMap = invalidStyles['*'];\r\n if (styleMap && styleMap[name]) {\r\n return false;\r\n }\r\n styleMap = invalidStyles[elementName];\r\n if (styleMap && styleMap[name]) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n if (elementName && validStyles) {\r\n serializeStyles('*');\r\n serializeStyles(elementName);\r\n } else {\r\n for (name in styles) {\r\n value = styles[name];\r\n if (value && (!invalidStyles || isValid(name, elementName))) {\r\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r\n }\r\n }\r\n }\r\n return css;\r\n }\r\n };\r\n }\r\n\r\n var each$5 = $_4ujg4tljkmcwkbk.each;\r\n var grep$1 = $_4ujg4tljkmcwkbk.grep;\r\n var isIE = $_cvvl9iajkmcwk25.ie;\r\n var simpleSelectorRe = /^([a-z0-9],?)+$/i;\r\n var whiteSpaceRegExp$2 = /^[ \\t\\r\\n]*$/;\r\n var setupAttrHooks = function (styles, settings, getContext) {\r\n var attrHooks = {};\r\n var keepValues = settings.keep_values;\r\n var keepUrlHook = {\r\n set: function ($elm, value, name$$1) {\r\n if (settings.url_converter) {\r\n value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name$$1, $elm[0]);\r\n }\r\n $elm.attr('data-mce-' + name$$1, value).attr(name$$1, value);\r\n },\r\n get: function ($elm, name$$1) {\r\n return $elm.attr('data-mce-' + name$$1) || $elm.attr(name$$1);\r\n }\r\n };\r\n attrHooks = {\r\n style: {\r\n set: function ($elm, value) {\r\n if (value !== null && typeof value === 'object') {\r\n $elm.css(value);\r\n return;\r\n }\r\n if (keepValues) {\r\n $elm.attr('data-mce-style', value);\r\n }\r\n $elm.attr('style', value);\r\n },\r\n get: function ($elm) {\r\n var value = $elm.attr('data-mce-style') || $elm.attr('style');\r\n value = styles.serialize(styles.parse(value), $elm[0].nodeName);\r\n return value;\r\n }\r\n }\r\n };\r\n if (keepValues) {\r\n attrHooks.href = attrHooks.src = keepUrlHook;\r\n }\r\n return attrHooks;\r\n };\r\n var updateInternalStyleAttr = function (styles, $elm) {\r\n var rawValue = $elm.attr('style');\r\n var value = styles.serialize(styles.parse(rawValue), $elm[0].nodeName);\r\n if (!value) {\r\n value = null;\r\n }\r\n $elm.attr('data-mce-style', value);\r\n };\r\n var findNodeIndex = function (node, normalized) {\r\n var idx = 0, lastNodeType, nodeType;\r\n if (node) {\r\n for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {\r\n nodeType = node.nodeType;\r\n if (normalized && nodeType === 3) {\r\n if (nodeType === lastNodeType || !node.nodeValue.length) {\r\n continue;\r\n }\r\n }\r\n idx++;\r\n lastNodeType = nodeType;\r\n }\r\n }\r\n return idx;\r\n };\r\n function DOMUtils(doc, settings) {\r\n var _this = this;\r\n if (settings === void 0) {\r\n settings = {};\r\n }\r\n var attrHooks;\r\n var addedStyles = {};\r\n var win = window;\r\n var files = {};\r\n var counter = 0;\r\n var stdMode = true;\r\n var boxModel = true;\r\n var styleSheetLoader = StyleSheetLoader(doc);\r\n var boundEvents = [];\r\n var schema = settings.schema ? settings.schema : Schema({});\r\n var styles = Styles({\r\n url_converter: settings.url_converter,\r\n url_converter_scope: settings.url_converter_scope\r\n }, settings.schema);\r\n var events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;\r\n var blockElementsMap = schema.getBlockElements();\r\n var $ = DomQuery.overrideDefaults(function () {\r\n return {\r\n context: doc,\r\n element: self$$1.getRoot()\r\n };\r\n });\r\n var isBlock = function (node) {\r\n if (typeof node === 'string') {\r\n return !!blockElementsMap[node];\r\n } else if (node) {\r\n var type = node.nodeType;\r\n if (type) {\r\n return !!(type === 1 && blockElementsMap[node.nodeName]);\r\n }\r\n }\r\n return false;\r\n };\r\n var get = function (elm) {\r\n if (elm && doc && typeof elm === 'string') {\r\n var node = doc.getElementById(elm);\r\n if (node && node.id !== elm) {\r\n return doc.getElementsByName(elm)[1];\r\n } else {\r\n return node;\r\n }\r\n }\r\n return elm;\r\n };\r\n var $$ = function (elm) {\r\n if (typeof elm === 'string') {\r\n elm = get(elm);\r\n }\r\n return $(elm);\r\n };\r\n var getAttrib = function (elm, name$$1, defaultVal) {\r\n var hook, value;\r\n var $elm = $$(elm);\r\n if ($elm.length) {\r\n hook = attrHooks[name$$1];\r\n if (hook && hook.get) {\r\n value = hook.get($elm, name$$1);\r\n } else {\r\n value = $elm.attr(name$$1);\r\n }\r\n }\r\n if (typeof value === 'undefined') {\r\n value = defaultVal || '';\r\n }\r\n return value;\r\n };\r\n var getAttribs = function (elm) {\r\n var node = get(elm);\r\n if (!node) {\r\n return [];\r\n }\r\n return node.attributes;\r\n };\r\n var setAttrib = function (elm, name$$1, value) {\r\n var originalValue, hook;\r\n if (value === '') {\r\n value = null;\r\n }\r\n var $elm = $$(elm);\r\n originalValue = $elm.attr(name$$1);\r\n if (!$elm.length) {\r\n return;\r\n }\r\n hook = attrHooks[name$$1];\r\n if (hook && hook.set) {\r\n hook.set($elm, value, name$$1);\r\n } else {\r\n $elm.attr(name$$1, value);\r\n }\r\n if (originalValue !== value && settings.onSetAttrib) {\r\n settings.onSetAttrib({\r\n attrElm: $elm,\r\n attrName: name$$1,\r\n attrValue: value\r\n });\r\n }\r\n };\r\n var clone = function (node, deep) {\r\n if (!isIE || node.nodeType !== 1 || deep) {\r\n return node.cloneNode(deep);\r\n }\r\n if (!deep) {\r\n var clone_1 = doc.createElement(node.nodeName);\r\n each$5(getAttribs(node), function (attr) {\r\n setAttrib(clone_1, attr.nodeName, getAttrib(node, attr.nodeName));\r\n });\r\n return clone_1;\r\n }\r\n return null;\r\n };\r\n var getRoot = function () {\r\n return settings.root_element || doc.body;\r\n };\r\n var getViewPort = function (argWin) {\r\n var actWin = !argWin ? win : argWin;\r\n var doc = actWin.document;\r\n var rootElm = boxModel ? doc.documentElement : doc.body;\r\n return {\r\n x: actWin.pageXOffset || rootElm.scrollLeft,\r\n y: actWin.pageYOffset || rootElm.scrollTop,\r\n w: actWin.innerWidth || rootElm.clientWidth,\r\n h: actWin.innerHeight || rootElm.clientHeight\r\n };\r\n };\r\n var getPos = function (elm, rootElm) {\r\n return $_5o0xi0njkmcwkbz.getPos(doc.body, get(elm), rootElm);\r\n };\r\n var setStyle = function (elm, name$$1, value) {\r\n var $elm = $$(elm).css(name$$1, value);\r\n if (settings.update_styles) {\r\n updateInternalStyleAttr(styles, $elm);\r\n }\r\n };\r\n var setStyles = function (elm, stylesArg) {\r\n var $elm = $$(elm).css(stylesArg);\r\n if (settings.update_styles) {\r\n updateInternalStyleAttr(styles, $elm);\r\n }\r\n };\r\n var getStyle = function (elm, name$$1, computed) {\r\n var $elm = $$(elm);\r\n if (computed) {\r\n return $elm.css(name$$1);\r\n }\r\n name$$1 = name$$1.replace(/-(\\D)/g, function (a, b) {\r\n return b.toUpperCase();\r\n });\r\n if (name$$1 === 'float') {\r\n name$$1 = $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12 ? 'styleFloat' : 'cssFloat';\r\n }\r\n return $elm[0] && $elm[0].style ? $elm[0].style[name$$1] : undefined;\r\n };\r\n var getSize = function (elm) {\r\n var w, h;\r\n elm = get(elm);\r\n w = getStyle(elm, 'width');\r\n h = getStyle(elm, 'height');\r\n if (w.indexOf('px') === -1) {\r\n w = 0;\r\n }\r\n if (h.indexOf('px') === -1) {\r\n h = 0;\r\n }\r\n return {\r\n w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,\r\n h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight\r\n };\r\n };\r\n var getRect = function (elm) {\r\n var pos, size;\r\n elm = get(elm);\r\n pos = getPos(elm);\r\n size = getSize(elm);\r\n return {\r\n x: pos.x,\r\n y: pos.y,\r\n w: size.w,\r\n h: size.h\r\n };\r\n };\r\n var is = function (elm, selector) {\r\n var i;\r\n if (!elm) {\r\n return false;\r\n }\r\n if (!Array.isArray(elm)) {\r\n if (selector === '*') {\r\n return elm.nodeType === 1;\r\n }\r\n if (simpleSelectorRe.test(selector)) {\r\n var selectors = selector.toLowerCase().split(/,/);\r\n var elmName = elm.nodeName.toLowerCase();\r\n for (i = selectors.length - 1; i >= 0; i--) {\r\n if (selectors[i] === elmName) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n if (elm.nodeType && elm.nodeType !== 1) {\r\n return false;\r\n }\r\n }\r\n var elms = !Array.isArray(elm) ? [elm] : elm;\r\n return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;\r\n };\r\n var getParents = function (elm, selector, root, collect) {\r\n var result = [];\r\n var selectorVal;\r\n var node = get(elm);\r\n collect = collect === undefined;\r\n root = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\r\n if ($_4ujg4tljkmcwkbk.is(selector, 'string')) {\r\n selectorVal = selector;\r\n if (selector === '*') {\r\n selector = function (node) {\r\n return node.nodeType === 1;\r\n };\r\n } else {\r\n selector = function (node) {\r\n return is(node, selectorVal);\r\n };\r\n }\r\n }\r\n while (node) {\r\n if (node === root || !node.nodeType || node.nodeType === 9) {\r\n break;\r\n }\r\n if (!selector || typeof selector === 'function' && selector(node)) {\r\n if (collect) {\r\n result.push(node);\r\n } else {\r\n return [node];\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n return collect ? result : null;\r\n };\r\n var getParent = function (node, selector, root) {\r\n var parents = getParents(node, selector, root, false);\r\n return parents && parents.length > 0 ? parents[0] : null;\r\n };\r\n var _findSib = function (node, selector, name$$1) {\r\n var func = selector;\r\n if (node) {\r\n if (typeof selector === 'string') {\r\n func = function (node) {\r\n return is(node, selector);\r\n };\r\n }\r\n for (node = node[name$$1]; node; node = node[name$$1]) {\r\n if (typeof func === 'function' && func(node)) {\r\n return node;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n var getNext = function (node, selector) {\r\n return _findSib(node, selector, 'nextSibling');\r\n };\r\n var getPrev = function (node, selector) {\r\n return _findSib(node, selector, 'previousSibling');\r\n };\r\n var select = function (selector, scope) {\r\n return Sizzle(selector, get(scope) || settings.root_element || doc, []);\r\n };\r\n var run = function (elm, func, scope) {\r\n var result;\r\n var node = typeof elm === 'string' ? get(elm) : elm;\r\n if (!node) {\r\n return false;\r\n }\r\n if ($_4ujg4tljkmcwkbk.isArray(node) && (node.length || node.length === 0)) {\r\n result = [];\r\n each$5(node, function (elm, i) {\r\n if (elm) {\r\n if (typeof elm === 'string') {\r\n elm = get(elm);\r\n }\r\n result.push(func.call(scope, elm, i));\r\n }\r\n });\r\n return result;\r\n }\r\n var context = scope ? scope : _this;\r\n return func.call(context, node);\r\n };\r\n var setAttribs = function (elm, attrs) {\r\n $$(elm).each(function (i, node) {\r\n each$5(attrs, function (value, name$$1) {\r\n setAttrib(node, name$$1, value);\r\n });\r\n });\r\n };\r\n var setHTML = function (elm, html) {\r\n var $elm = $$(elm);\r\n if (isIE) {\r\n $elm.each(function (i, target) {\r\n if (target.canHaveHTML === false) {\r\n return;\r\n }\r\n while (target.firstChild) {\r\n target.removeChild(target.firstChild);\r\n }\r\n try {\r\n target.innerHTML = '
' + html;\r\n target.removeChild(target.firstChild);\r\n } catch (ex) {\r\n DomQuery('
').html('
' + html).contents().slice(1).appendTo(target);\r\n }\r\n return html;\r\n });\r\n } else {\r\n $elm.html(html);\r\n }\r\n };\r\n var add = function (parentElm, name$$1, attrs, html, create) {\r\n return run(parentElm, function (parentElm) {\r\n var newElm = typeof name$$1 === 'string' ? doc.createElement(name$$1) : name$$1;\r\n setAttribs(newElm, attrs);\r\n if (html) {\r\n if (typeof html !== 'string' && html.nodeType) {\r\n newElm.appendChild(html);\r\n } else if (typeof html === 'string') {\r\n setHTML(newElm, html);\r\n }\r\n }\r\n return !create ? parentElm.appendChild(newElm) : newElm;\r\n });\r\n };\r\n var create = function (name$$1, attrs, html) {\r\n return add(doc.createElement(name$$1), name$$1, attrs, html, true);\r\n };\r\n var decode = $_33qwr1sjkmcwkip.decode;\r\n var encode = $_33qwr1sjkmcwkip.encodeAllRaw;\r\n var createHTML = function (name$$1, attrs, html) {\r\n var outHtml = '', key;\r\n outHtml += '<' + name$$1;\r\n for (key in attrs) {\r\n if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {\r\n outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\r\n }\r\n }\r\n if (typeof html !== 'undefined') {\r\n return outHtml + '>' + html + '';\r\n }\r\n return outHtml + ' />';\r\n };\r\n var createFragment = function (html) {\r\n var node;\r\n var container = doc.createElement('div');\r\n var frag = doc.createDocumentFragment();\r\n if (html) {\r\n container.innerHTML = html;\r\n }\r\n while (node = container.firstChild) {\r\n frag.appendChild(node);\r\n }\r\n return frag;\r\n };\r\n var remove = function (node, keepChildren) {\r\n var $node = $$(node);\r\n if (keepChildren) {\r\n $node.each(function () {\r\n var child;\r\n while (child = this.firstChild) {\r\n if (child.nodeType === 3 && child.data.length === 0) {\r\n this.removeChild(child);\r\n } else {\r\n this.parentNode.insertBefore(child, this);\r\n }\r\n }\r\n }).remove();\r\n } else {\r\n $node.remove();\r\n }\r\n return $node.length > 1 ? $node.toArray() : $node[0];\r\n };\r\n var removeAllAttribs = function (e) {\r\n return run(e, function (e) {\r\n var i;\r\n var attrs = e.attributes;\r\n for (i = attrs.length - 1; i >= 0; i--) {\r\n e.removeAttributeNode(attrs.item(i));\r\n }\r\n });\r\n };\r\n var parseStyle = function (cssText) {\r\n return styles.parse(cssText);\r\n };\r\n var serializeStyle = function (stylesArg, name$$1) {\r\n return styles.serialize(stylesArg, name$$1);\r\n };\r\n var addStyle = function (cssText) {\r\n var head, styleElm;\r\n if (self$$1 !== DOMUtils.DOM && doc === document) {\r\n if (addedStyles[cssText]) {\r\n return;\r\n }\r\n addedStyles[cssText] = true;\r\n }\r\n styleElm = doc.getElementById('mceDefaultStyles');\r\n if (!styleElm) {\r\n styleElm = doc.createElement('style');\r\n styleElm.id = 'mceDefaultStyles';\r\n styleElm.type = 'text/css';\r\n head = doc.getElementsByTagName('head')[0];\r\n if (head.firstChild) {\r\n head.insertBefore(styleElm, head.firstChild);\r\n } else {\r\n head.appendChild(styleElm);\r\n }\r\n }\r\n if (styleElm.styleSheet) {\r\n styleElm.styleSheet.cssText += cssText;\r\n } else {\r\n styleElm.appendChild(doc.createTextNode(cssText));\r\n }\r\n };\r\n var loadCSS = function (url) {\r\n var head;\r\n if (self$$1 !== DOMUtils.DOM && doc === document) {\r\n DOMUtils.DOM.loadCSS(url);\r\n return;\r\n }\r\n if (!url) {\r\n url = '';\r\n }\r\n head = doc.getElementsByTagName('head')[0];\r\n each$5(url.split(','), function (url) {\r\n var link;\r\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\r\n if (files[url]) {\r\n return;\r\n }\r\n files[url] = true;\r\n link = create('link', {\r\n rel: 'stylesheet',\r\n href: url\r\n });\r\n head.appendChild(link);\r\n });\r\n };\r\n var toggleClass = function (elm, cls, state) {\r\n $$(elm).toggleClass(cls, state).each(function () {\r\n if (this.className === '') {\r\n DomQuery(this).attr('class', null);\r\n }\r\n });\r\n };\r\n var addClass = function (elm, cls) {\r\n $$(elm).addClass(cls);\r\n };\r\n var removeClass = function (elm, cls) {\r\n toggleClass(elm, cls, false);\r\n };\r\n var hasClass = function (elm, cls) {\r\n return $$(elm).hasClass(cls);\r\n };\r\n var show = function (elm) {\r\n $$(elm).show();\r\n };\r\n var hide = function (elm) {\r\n $$(elm).hide();\r\n };\r\n var isHidden = function (elm) {\r\n return $$(elm).css('display') === 'none';\r\n };\r\n var uniqueId = function (prefix) {\r\n return (!prefix ? 'mce_' : prefix) + counter++;\r\n };\r\n var getOuterHTML = function (elm) {\r\n var node = typeof elm === 'string' ? get(elm) : elm;\r\n return $_bjermr1rjkmcwkij.isElement(node) ? node.outerHTML : DomQuery('
').append(DomQuery(node).clone()).html();\r\n };\r\n var setOuterHTML = function (elm, html) {\r\n $$(elm).each(function () {\r\n try {\r\n if ('outerHTML' in this) {\r\n this.outerHTML = html;\r\n return;\r\n }\r\n } catch (ex) {\r\n }\r\n remove(DomQuery(this).html(html), true);\r\n });\r\n };\r\n var insertAfter = function (node, reference) {\r\n var referenceNode = get(reference);\r\n return run(node, function (node) {\r\n var parent$$1, nextSibling;\r\n parent$$1 = referenceNode.parentNode;\r\n nextSibling = referenceNode.nextSibling;\r\n if (nextSibling) {\r\n parent$$1.insertBefore(node, nextSibling);\r\n } else {\r\n parent$$1.appendChild(node);\r\n }\r\n return node;\r\n });\r\n };\r\n var replace = function (newElm, oldElm, keepChildren) {\r\n return run(oldElm, function (oldElm) {\r\n if ($_4ujg4tljkmcwkbk.is(oldElm, 'array')) {\r\n newElm = newElm.cloneNode(true);\r\n }\r\n if (keepChildren) {\r\n each$5(grep$1(oldElm.childNodes), function (node) {\r\n newElm.appendChild(node);\r\n });\r\n }\r\n return oldElm.parentNode.replaceChild(newElm, oldElm);\r\n });\r\n };\r\n var rename = function (elm, name$$1) {\r\n var newElm;\r\n if (elm.nodeName !== name$$1.toUpperCase()) {\r\n newElm = create(name$$1);\r\n each$5(getAttribs(elm), function (attrNode) {\r\n setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\r\n });\r\n replace(newElm, elm, true);\r\n }\r\n return newElm || elm;\r\n };\r\n var findCommonAncestor = function (a, b) {\r\n var ps = a, pe;\r\n while (ps) {\r\n pe = b;\r\n while (pe && ps !== pe) {\r\n pe = pe.parentNode;\r\n }\r\n if (ps === pe) {\r\n break;\r\n }\r\n ps = ps.parentNode;\r\n }\r\n if (!ps && a.ownerDocument) {\r\n return a.ownerDocument.documentElement;\r\n }\r\n return ps;\r\n };\r\n var toHex = function (rgbVal) {\r\n return styles.toHex($_4ujg4tljkmcwkbk.trim(rgbVal));\r\n };\r\n var isEmpty = function (node, elements) {\r\n var i, attributes, type, whitespace, walker, name$$1, brCount = 0;\r\n node = node.firstChild;\r\n if (node) {\r\n walker = new TreeWalker(node, node.parentNode);\r\n elements = elements || (schema ? schema.getNonEmptyElements() : null);\r\n whitespace = schema ? schema.getWhiteSpaceElements() : {};\r\n do {\r\n type = node.nodeType;\r\n if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n var bogusVal = node.getAttribute('data-mce-bogus');\r\n if (bogusVal) {\r\n node = walker.next(bogusVal === 'all');\r\n continue;\r\n }\r\n name$$1 = node.nodeName.toLowerCase();\r\n if (elements && elements[name$$1]) {\r\n if (name$$1 === 'br') {\r\n brCount++;\r\n node = walker.next();\r\n continue;\r\n }\r\n return false;\r\n }\r\n attributes = getAttribs(node);\r\n i = attributes.length;\r\n while (i--) {\r\n name$$1 = attributes[i].nodeName;\r\n if (name$$1 === 'name' || name$$1 === 'data-mce-bookmark') {\r\n return false;\r\n }\r\n }\r\n }\r\n if (type === 8) {\r\n return false;\r\n }\r\n if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) {\r\n return false;\r\n }\r\n if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) {\r\n return false;\r\n }\r\n node = walker.next();\r\n } while (node);\r\n }\r\n return brCount <= 1;\r\n };\r\n var createRng = function () {\r\n return doc.createRange();\r\n };\r\n var split = function (parentElm, splitElm, replacementElm) {\r\n var r = createRng(), bef, aft, pa;\r\n if (parentElm && splitElm) {\r\n r.setStart(parentElm.parentNode, findNodeIndex(parentElm));\r\n r.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\r\n bef = r.extractContents();\r\n r = createRng();\r\n r.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\r\n r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);\r\n aft = r.extractContents();\r\n pa = parentElm.parentNode;\r\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, bef), parentElm);\r\n if (replacementElm) {\r\n pa.insertBefore(replacementElm, parentElm);\r\n } else {\r\n pa.insertBefore(splitElm, parentElm);\r\n }\r\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, aft), parentElm);\r\n remove(parentElm);\r\n return replacementElm || splitElm;\r\n }\r\n };\r\n var bind = function (target, name$$1, func, scope) {\r\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\r\n var i = target.length;\r\n while (i--) {\r\n target[i] = bind(target[i], name$$1, func, scope);\r\n }\r\n return target;\r\n }\r\n if (settings.collect && (target === doc || target === win)) {\r\n boundEvents.push([\r\n target,\r\n name$$1,\r\n func,\r\n scope\r\n ]);\r\n }\r\n return events.bind(target, name$$1, func, scope || self$$1);\r\n };\r\n var unbind = function (target, name$$1, func) {\r\n var i;\r\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\r\n i = target.length;\r\n while (i--) {\r\n target[i] = unbind(target[i], name$$1, func);\r\n }\r\n return target;\r\n }\r\n if (boundEvents && (target === doc || target === win)) {\r\n i = boundEvents.length;\r\n while (i--) {\r\n var item = boundEvents[i];\r\n if (target === item[0] && (!name$$1 || name$$1 === item[1]) && (!func || func === item[2])) {\r\n events.unbind(item[0], item[1], item[2]);\r\n }\r\n }\r\n }\r\n return events.unbind(target, name$$1, func);\r\n };\r\n var fire = function (target, name$$1, evt) {\r\n return events.fire(target, name$$1, evt);\r\n };\r\n var getContentEditable = function (node) {\r\n if (node && $_bjermr1rjkmcwkij.isElement(node)) {\r\n var contentEditable = node.getAttribute('data-mce-contenteditable');\r\n if (contentEditable && contentEditable !== 'inherit') {\r\n return contentEditable;\r\n }\r\n return node.contentEditable !== 'inherit' ? node.contentEditable : null;\r\n } else {\r\n return null;\r\n }\r\n };\r\n var getContentEditableParent = function (node) {\r\n var root = getRoot();\r\n var state = null;\r\n for (; node && node !== root; node = node.parentNode) {\r\n state = getContentEditable(node);\r\n if (state !== null) {\r\n break;\r\n }\r\n }\r\n return state;\r\n };\r\n var destroy = function () {\r\n if (boundEvents) {\r\n var i = boundEvents.length;\r\n while (i--) {\r\n var item = boundEvents[i];\r\n events.unbind(item[0], item[1], item[2]);\r\n }\r\n }\r\n if (Sizzle.setDocument) {\r\n Sizzle.setDocument();\r\n }\r\n };\r\n var isChildOf = function (node, parent$$1) {\r\n while (node) {\r\n if (parent$$1 === node) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n };\r\n var dumpRng = function (r) {\r\n return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\r\n };\r\n var self$$1 = {\r\n doc: doc,\r\n settings: settings,\r\n win: win,\r\n files: files,\r\n stdMode: stdMode,\r\n boxModel: boxModel,\r\n styleSheetLoader: styleSheetLoader,\r\n boundEvents: boundEvents,\r\n styles: styles,\r\n schema: schema,\r\n events: events,\r\n isBlock: isBlock,\r\n $: $,\r\n $$: $$,\r\n root: null,\r\n clone: clone,\r\n getRoot: getRoot,\r\n getViewPort: getViewPort,\r\n getRect: getRect,\r\n getSize: getSize,\r\n getParent: getParent,\r\n getParents: getParents,\r\n get: get,\r\n getNext: getNext,\r\n getPrev: getPrev,\r\n select: select,\r\n is: is,\r\n add: add,\r\n create: create,\r\n createHTML: createHTML,\r\n createFragment: createFragment,\r\n remove: remove,\r\n setStyle: setStyle,\r\n getStyle: getStyle,\r\n setStyles: setStyles,\r\n removeAllAttribs: removeAllAttribs,\r\n setAttrib: setAttrib,\r\n setAttribs: setAttribs,\r\n getAttrib: getAttrib,\r\n getPos: getPos,\r\n parseStyle: parseStyle,\r\n serializeStyle: serializeStyle,\r\n addStyle: addStyle,\r\n loadCSS: loadCSS,\r\n addClass: addClass,\r\n removeClass: removeClass,\r\n hasClass: hasClass,\r\n toggleClass: toggleClass,\r\n show: show,\r\n hide: hide,\r\n isHidden: isHidden,\r\n uniqueId: uniqueId,\r\n setHTML: setHTML,\r\n getOuterHTML: getOuterHTML,\r\n setOuterHTML: setOuterHTML,\r\n decode: decode,\r\n encode: encode,\r\n insertAfter: insertAfter,\r\n replace: replace,\r\n rename: rename,\r\n findCommonAncestor: findCommonAncestor,\r\n toHex: toHex,\r\n run: run,\r\n getAttribs: getAttribs,\r\n isEmpty: isEmpty,\r\n createRng: createRng,\r\n nodeIndex: findNodeIndex,\r\n split: split,\r\n bind: bind,\r\n unbind: unbind,\r\n fire: fire,\r\n getContentEditable: getContentEditable,\r\n getContentEditableParent: getContentEditableParent,\r\n destroy: destroy,\r\n isChildOf: isChildOf,\r\n dumpRng: dumpRng\r\n };\r\n attrHooks = setupAttrHooks(styles, settings, function () {\r\n return self$$1;\r\n });\r\n return self$$1;\r\n }\r\n (function (DOMUtils) {\r\n DOMUtils.DOM = DOMUtils(document);\r\n DOMUtils.nodeIndex = findNodeIndex;\r\n }(DOMUtils || (DOMUtils = {})));\r\n var DOMUtils$1 = DOMUtils;\r\n\r\n var DOM = DOMUtils$1.DOM;\r\n var each$6 = $_4ujg4tljkmcwkbk.each;\r\n var grep$2 = $_4ujg4tljkmcwkbk.grep;\r\n var isFunction$1 = function (f) {\r\n return typeof f === 'function';\r\n };\r\n var ScriptLoader = function () {\r\n var QUEUED = 0;\r\n var LOADING = 1;\r\n var LOADED = 2;\r\n var FAILED = 3;\r\n var states = {};\r\n var queue = [];\r\n var scriptLoadedCallbacks = {};\r\n var queueLoadedCallbacks = [];\r\n var loading = 0;\r\n var loadScript = function (url, success, failure) {\r\n var dom = DOM;\r\n var elm, id;\r\n var done = function () {\r\n dom.remove(id);\r\n if (elm) {\r\n elm.onreadystatechange = elm.onload = elm = null;\r\n }\r\n success();\r\n };\r\n var error = function () {\r\n if (isFunction$1(failure)) {\r\n failure();\r\n } else {\r\n if (typeof console !== 'undefined' && console.log) {\r\n console.log('Failed to load script: ' + url);\r\n }\r\n }\r\n };\r\n id = dom.uniqueId();\r\n elm = document.createElement('script');\r\n elm.id = id;\r\n elm.type = 'text/javascript';\r\n elm.src = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\r\n elm.onload = done;\r\n elm.onerror = error;\r\n (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\r\n };\r\n this.isDone = function (url) {\r\n return states[url] === LOADED;\r\n };\r\n this.markDone = function (url) {\r\n states[url] = LOADED;\r\n };\r\n this.add = this.load = function (url, success, scope, failure) {\r\n var state = states[url];\r\n if (state === undefined) {\r\n queue.push(url);\r\n states[url] = QUEUED;\r\n }\r\n if (success) {\r\n if (!scriptLoadedCallbacks[url]) {\r\n scriptLoadedCallbacks[url] = [];\r\n }\r\n scriptLoadedCallbacks[url].push({\r\n success: success,\r\n failure: failure,\r\n scope: scope || this\r\n });\r\n }\r\n };\r\n this.remove = function (url) {\r\n delete states[url];\r\n delete scriptLoadedCallbacks[url];\r\n };\r\n this.loadQueue = function (success, scope, failure) {\r\n this.loadScripts(queue, success, scope, failure);\r\n };\r\n this.loadScripts = function (scripts, success, scope, failure) {\r\n var loadScripts;\r\n var failures = [];\r\n var execCallbacks = function (name$$1, url) {\r\n each$6(scriptLoadedCallbacks[url], function (callback) {\r\n if (isFunction$1(callback[name$$1])) {\r\n callback[name$$1].call(callback.scope);\r\n }\r\n });\r\n scriptLoadedCallbacks[url] = undefined;\r\n };\r\n queueLoadedCallbacks.push({\r\n success: success,\r\n failure: failure,\r\n scope: scope || this\r\n });\r\n loadScripts = function () {\r\n var loadingScripts = grep$2(scripts);\r\n scripts.length = 0;\r\n each$6(loadingScripts, function (url) {\r\n if (states[url] === LOADED) {\r\n execCallbacks('success', url);\r\n return;\r\n }\r\n if (states[url] === FAILED) {\r\n execCallbacks('failure', url);\r\n return;\r\n }\r\n if (states[url] !== LOADING) {\r\n states[url] = LOADING;\r\n loading++;\r\n loadScript(url, function () {\r\n states[url] = LOADED;\r\n loading--;\r\n execCallbacks('success', url);\r\n loadScripts();\r\n }, function () {\r\n states[url] = FAILED;\r\n loading--;\r\n failures.push(url);\r\n execCallbacks('failure', url);\r\n loadScripts();\r\n });\r\n }\r\n });\r\n if (!loading) {\r\n var notifyCallbacks = queueLoadedCallbacks.slice(0);\r\n queueLoadedCallbacks.length = 0;\r\n each$6(notifyCallbacks, function (callback) {\r\n if (failures.length === 0) {\r\n if (isFunction$1(callback.success)) {\r\n callback.success.call(callback.scope);\r\n }\r\n } else {\r\n if (isFunction$1(callback.failure)) {\r\n callback.failure.call(callback.scope, failures);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n loadScripts();\r\n };\r\n };\r\n ScriptLoader.ScriptLoader = new ScriptLoader();\r\n\r\n var each$7 = $_4ujg4tljkmcwkbk.each;\r\n function AddOnManager() {\r\n var _this = this;\r\n var items = [];\r\n var urls = {};\r\n var lookup = {};\r\n var _listeners = [];\r\n var get = function (name) {\r\n if (lookup[name]) {\r\n return lookup[name].instance;\r\n }\r\n return undefined;\r\n };\r\n var dependencies = function (name) {\r\n var result;\r\n if (lookup[name]) {\r\n result = lookup[name].dependencies;\r\n }\r\n return result || [];\r\n };\r\n var requireLangPack = function (name, languages) {\r\n var language = AddOnManager.language;\r\n if (language && AddOnManager.languageLoad !== false) {\r\n if (languages) {\r\n languages = ',' + languages + ',';\r\n if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) {\r\n language = language.substr(0, 2);\r\n } else if (languages.indexOf(',' + language + ',') === -1) {\r\n return;\r\n }\r\n }\r\n ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\r\n }\r\n };\r\n var add = function (id, addOn, dependencies) {\r\n items.push(addOn);\r\n lookup[id] = {\r\n instance: addOn,\r\n dependencies: dependencies\r\n };\r\n var result = partition(_listeners, function (listener) {\r\n return listener.name === id;\r\n });\r\n _listeners = result.fail;\r\n each$7(result.pass, function (listener) {\r\n listener.callback();\r\n });\r\n return addOn;\r\n };\r\n var remove = function (name) {\r\n delete urls[name];\r\n delete lookup[name];\r\n };\r\n var createUrl = function (baseUrl, dep) {\r\n if (typeof dep === 'object') {\r\n return dep;\r\n }\r\n return typeof baseUrl === 'string' ? {\r\n prefix: '',\r\n resource: dep,\r\n suffix: ''\r\n } : {\r\n prefix: baseUrl.prefix,\r\n resource: dep,\r\n suffix: baseUrl.suffix\r\n };\r\n };\r\n var addComponents = function (pluginName, scripts) {\r\n var pluginUrl = _this.urls[pluginName];\r\n each$7(scripts, function (script) {\r\n ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script);\r\n });\r\n };\r\n var loadDependencies = function (name, addOnUrl, success, scope) {\r\n var deps = dependencies(name);\r\n each$7(deps, function (dep) {\r\n var newUrl = createUrl(addOnUrl, dep);\r\n load(newUrl.resource, newUrl, undefined, undefined);\r\n });\r\n if (success) {\r\n if (scope) {\r\n success.call(scope);\r\n } else {\r\n success.call(ScriptLoader);\r\n }\r\n }\r\n };\r\n var load = function (name, addOnUrl, success, scope, failure) {\r\n if (urls[name]) {\r\n return;\r\n }\r\n var urlString = typeof addOnUrl === 'string' ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\r\n if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\r\n urlString = AddOnManager.baseURL + '/' + urlString;\r\n }\r\n urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\r\n if (lookup[name]) {\r\n loadDependencies(name, addOnUrl, success, scope);\r\n } else {\r\n ScriptLoader.ScriptLoader.add(urlString, function () {\r\n return loadDependencies(name, addOnUrl, success, scope);\r\n }, scope, failure);\r\n }\r\n };\r\n var waitFor = function (name, callback) {\r\n if (lookup.hasOwnProperty(name)) {\r\n callback();\r\n } else {\r\n _listeners.push({\r\n name: name,\r\n callback: callback\r\n });\r\n }\r\n };\r\n return {\r\n items: items,\r\n urls: urls,\r\n lookup: lookup,\r\n _listeners: _listeners,\r\n get: get,\r\n dependencies: dependencies,\r\n requireLangPack: requireLangPack,\r\n add: add,\r\n remove: remove,\r\n createUrl: createUrl,\r\n addComponents: addComponents,\r\n load: load,\r\n waitFor: waitFor\r\n };\r\n }\r\n (function (AddOnManager) {\r\n AddOnManager.PluginManager = AddOnManager();\r\n AddOnManager.ThemeManager = AddOnManager();\r\n }(AddOnManager || (AddOnManager = {})));\r\n\r\n var before = function (marker, element) {\r\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\r\n parent.each(function (v) {\r\n v.dom().insertBefore(element.dom(), marker.dom());\r\n });\r\n };\r\n var after = function (marker, element) {\r\n var sibling = $_ca6pc118jkmcwkfs.nextSibling(marker);\r\n sibling.fold(function () {\r\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\r\n parent.each(function (v) {\r\n append(v, element);\r\n });\r\n }, function (v) {\r\n before(v, element);\r\n });\r\n };\r\n var prepend = function (parent, element) {\r\n var firstChild = $_ca6pc118jkmcwkfs.firstChild(parent);\r\n firstChild.fold(function () {\r\n append(parent, element);\r\n }, function (v) {\r\n parent.dom().insertBefore(element.dom(), v.dom());\r\n });\r\n };\r\n var append = function (parent, element) {\r\n parent.dom().appendChild(element.dom());\r\n };\r\n var appendAt = function (parent, element, index) {\r\n $_ca6pc118jkmcwkfs.child(parent, index).fold(function () {\r\n append(parent, element);\r\n }, function (v) {\r\n before(v, element);\r\n });\r\n };\r\n var wrap$1 = function (element, wrapper) {\r\n before(element, wrapper);\r\n append(wrapper, element);\r\n };\r\n var $_f4qt4v1yjkmcwkl2 = {\r\n before: before,\r\n after: after,\r\n prepend: prepend,\r\n append: append,\r\n appendAt: appendAt,\r\n wrap: wrap$1\r\n };\r\n\r\n var before$1 = function (marker, elements) {\r\n each(elements, function (x) {\r\n $_f4qt4v1yjkmcwkl2.before(marker, x);\r\n });\r\n };\r\n var after$1 = function (marker, elements) {\r\n each(elements, function (x, i) {\r\n var e = i === 0 ? marker : elements[i - 1];\r\n $_f4qt4v1yjkmcwkl2.after(e, x);\r\n });\r\n };\r\n var prepend$1 = function (parent, elements) {\r\n each(elements.slice().reverse(), function (x) {\r\n $_f4qt4v1yjkmcwkl2.prepend(parent, x);\r\n });\r\n };\r\n var append$1 = function (parent, elements) {\r\n each(elements, function (x) {\r\n $_f4qt4v1yjkmcwkl2.append(parent, x);\r\n });\r\n };\r\n var $_1ev7t1xjkmcwkky = {\r\n before: before$1,\r\n after: after$1,\r\n prepend: prepend$1,\r\n append: append$1\r\n };\r\n\r\n var empty = function (element) {\r\n element.dom().textContent = '';\r\n each($_ca6pc118jkmcwkfs.children(element), function (rogue) {\r\n remove$2(rogue);\r\n });\r\n };\r\n var remove$2 = function (element) {\r\n var dom = element.dom();\r\n if (dom.parentNode !== null)\r\n dom.parentNode.removeChild(dom);\r\n };\r\n var unwrap = function (wrapper) {\r\n var children = $_ca6pc118jkmcwkfs.children(wrapper);\r\n if (children.length > 0)\r\n $_1ev7t1xjkmcwkky.before(wrapper, children);\r\n remove$2(wrapper);\r\n };\r\n var $_eualm21wjkmcwkku = {\r\n empty: empty,\r\n remove: remove$2,\r\n unwrap: unwrap\r\n };\r\n\r\n var first$1 = function (fn, rate) {\r\n var timer = null;\r\n var cancel = function () {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n var throttle = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (timer === null) {\r\n timer = setTimeout(function () {\r\n fn.apply(null, args);\r\n timer = null;\r\n }, rate);\r\n }\r\n };\r\n return {\r\n cancel: cancel,\r\n throttle: throttle\r\n };\r\n };\r\n var last$3 = function (fn, rate) {\r\n var timer = null;\r\n var cancel = function () {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n var throttle = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (timer !== null)\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n fn.apply(null, args);\r\n timer = null;\r\n }, rate);\r\n };\r\n return {\r\n cancel: cancel,\r\n throttle: throttle\r\n };\r\n };\r\n\r\n var Cell = function (initial) {\r\n var value = initial;\r\n var get = function () {\r\n return value;\r\n };\r\n var set = function (v) {\r\n value = v;\r\n };\r\n var clone = function () {\r\n return Cell(get());\r\n };\r\n return {\r\n get: get,\r\n set: set,\r\n clone: clone\r\n };\r\n };\r\n\r\n function Toggler (turnOff, turnOn, initial) {\r\n var active = initial || false;\r\n var on = function () {\r\n turnOn();\r\n active = true;\r\n };\r\n var off = function () {\r\n turnOff();\r\n active = false;\r\n };\r\n var toggle = function () {\r\n var f = active ? off : on;\r\n f();\r\n };\r\n var isOn = function () {\r\n return active;\r\n };\r\n return {\r\n on: on,\r\n off: off,\r\n toggle: toggle,\r\n isOn: isOn\r\n };\r\n }\r\n\r\n var read = function (element, attr) {\r\n var value = $_29helg15jkmcwkf0.get(element, attr);\r\n return value === undefined || value === '' ? [] : value.split(' ');\r\n };\r\n var add = function (element, attr, id) {\r\n var old = read(element, attr);\r\n var nu = old.concat([id]);\r\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\r\n return true;\r\n };\r\n var remove$3 = function (element, attr, id) {\r\n var nu = filter(read(element, attr), function (v) {\r\n return v !== id;\r\n });\r\n if (nu.length > 0)\r\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\r\n else\r\n $_29helg15jkmcwkf0.remove(element, attr);\r\n return false;\r\n };\r\n var $_4m1njo26jkmcwkme = {\r\n read: read,\r\n add: add,\r\n remove: remove$3\r\n };\r\n\r\n var supports = function (element) {\r\n return element.dom().classList !== undefined;\r\n };\r\n var get$2 = function (element) {\r\n return $_4m1njo26jkmcwkme.read(element, 'class');\r\n };\r\n var add$1 = function (element, clazz) {\r\n return $_4m1njo26jkmcwkme.add(element, 'class', clazz);\r\n };\r\n var remove$4 = function (element, clazz) {\r\n return $_4m1njo26jkmcwkme.remove(element, 'class', clazz);\r\n };\r\n var toggle = function (element, clazz) {\r\n if (contains(get$2(element), clazz)) {\r\n return remove$4(element, clazz);\r\n } else {\r\n return add$1(element, clazz);\r\n }\r\n };\r\n var $_ewhsr825jkmcwkm2 = {\r\n get: get$2,\r\n add: add$1,\r\n remove: remove$4,\r\n toggle: toggle,\r\n supports: supports\r\n };\r\n\r\n var add$2 = function (element, clazz) {\r\n if ($_ewhsr825jkmcwkm2.supports(element))\r\n element.dom().classList.add(clazz);\r\n else\r\n $_ewhsr825jkmcwkm2.add(element, clazz);\r\n };\r\n var cleanClass = function (element) {\r\n var classList = $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList : $_ewhsr825jkmcwkm2.get(element);\r\n if (classList.length === 0) {\r\n $_29helg15jkmcwkf0.remove(element, 'class');\r\n }\r\n };\r\n var remove$5 = function (element, clazz) {\r\n if ($_ewhsr825jkmcwkm2.supports(element)) {\r\n var classList = element.dom().classList;\r\n classList.remove(clazz);\r\n } else\r\n $_ewhsr825jkmcwkm2.remove(element, clazz);\r\n cleanClass(element);\r\n };\r\n var toggle$1 = function (element, clazz) {\r\n return $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList.toggle(clazz) : $_ewhsr825jkmcwkm2.toggle(element, clazz);\r\n };\r\n var toggler = function (element, clazz) {\r\n var hasClasslist = $_ewhsr825jkmcwkm2.supports(element);\r\n var classList = element.dom().classList;\r\n var off = function () {\r\n if (hasClasslist)\r\n classList.remove(clazz);\r\n else\r\n $_ewhsr825jkmcwkm2.remove(element, clazz);\r\n };\r\n var on = function () {\r\n if (hasClasslist)\r\n classList.add(clazz);\r\n else\r\n $_ewhsr825jkmcwkm2.add(element, clazz);\r\n };\r\n return Toggler(off, on, has$1(element, clazz));\r\n };\r\n var has$1 = function (element, clazz) {\r\n return $_ewhsr825jkmcwkm2.supports(element) && element.dom().classList.contains(clazz);\r\n };\r\n var $_ftm4v023jkmcwklz = {\r\n add: add$2,\r\n remove: remove$5,\r\n toggle: toggle$1,\r\n toggler: toggler,\r\n has: has$1\r\n };\r\n\r\n var all$1 = function (predicate) {\r\n return descendants($_g4uup916jkmcwkfg.body(), predicate);\r\n };\r\n var ancestors = function (scope, predicate, isRoot) {\r\n return filter($_ca6pc118jkmcwkfs.parents(scope, isRoot), predicate);\r\n };\r\n var siblings$1 = function (scope, predicate) {\r\n return filter($_ca6pc118jkmcwkfs.siblings(scope), predicate);\r\n };\r\n var children$1 = function (scope, predicate) {\r\n return filter($_ca6pc118jkmcwkfs.children(scope), predicate);\r\n };\r\n var descendants = function (scope, predicate) {\r\n var result = [];\r\n each($_ca6pc118jkmcwkfs.children(scope), function (x) {\r\n if (predicate(x)) {\r\n result = result.concat([x]);\r\n }\r\n result = result.concat(descendants(x, predicate));\r\n });\r\n return result;\r\n };\r\n var $_733l9k28jkmcwkmj = {\r\n all: all$1,\r\n ancestors: ancestors,\r\n siblings: siblings$1,\r\n children: children$1,\r\n descendants: descendants\r\n };\r\n\r\n var all$2 = function (selector) {\r\n return $_4jv6d81gjkmcwkgv.all(selector);\r\n };\r\n var ancestors$1 = function (scope, selector, isRoot) {\r\n return $_733l9k28jkmcwkmj.ancestors(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n }, isRoot);\r\n };\r\n var siblings$2 = function (scope, selector) {\r\n return $_733l9k28jkmcwkmj.siblings(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n });\r\n };\r\n var children$2 = function (scope, selector) {\r\n return $_733l9k28jkmcwkmj.children(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n });\r\n };\r\n var descendants$1 = function (scope, selector) {\r\n return $_4jv6d81gjkmcwkgv.all(selector, scope);\r\n };\r\n var $_2gqm0n27jkmcwkmi = {\r\n all: all$2,\r\n ancestors: ancestors$1,\r\n siblings: siblings$2,\r\n children: children$2,\r\n descendants: descendants$1\r\n };\r\n\r\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\r\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\r\n }\r\n\r\n var first$2 = function (predicate) {\r\n return descendant($_g4uup916jkmcwkfg.body(), predicate);\r\n };\r\n var ancestor = function (scope, predicate, isRoot) {\r\n var element = scope.dom();\r\n var stop = isFunction(isRoot) ? isRoot : constant(false);\r\n while (element.parentNode) {\r\n element = element.parentNode;\r\n var el = Element$$1.fromDom(element);\r\n if (predicate(el))\r\n return Option.some(el);\r\n else if (stop(el))\r\n break;\r\n }\r\n return Option.none();\r\n };\r\n var closest = function (scope, predicate, isRoot) {\r\n var is = function (scope) {\r\n return predicate(scope);\r\n };\r\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\r\n };\r\n var sibling$1 = function (scope, predicate) {\r\n var element = scope.dom();\r\n if (!element.parentNode)\r\n return Option.none();\r\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\r\n return !$_e4hu6h1ejkmcwkgj.eq(scope, x) && predicate(x);\r\n });\r\n };\r\n var child$1 = function (scope, predicate) {\r\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\r\n return result.map(Element$$1.fromDom);\r\n };\r\n var descendant = function (scope, predicate) {\r\n var descend = function (node) {\r\n for (var i = 0; i < node.childNodes.length; i++) {\r\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\r\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\r\n var res = descend(node.childNodes[i]);\r\n if (res.isSome())\r\n return res;\r\n }\r\n return Option.none();\r\n };\r\n return descend(scope.dom());\r\n };\r\n var $_253nd92ajkmcwkmp = {\r\n first: first$2,\r\n ancestor: ancestor,\r\n closest: closest,\r\n sibling: sibling$1,\r\n child: child$1,\r\n descendant: descendant\r\n };\r\n\r\n var first$3 = function (selector) {\r\n return $_4jv6d81gjkmcwkgv.one(selector);\r\n };\r\n var ancestor$1 = function (scope, selector, isRoot) {\r\n return $_253nd92ajkmcwkmp.ancestor(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n }, isRoot);\r\n };\r\n var sibling$2 = function (scope, selector) {\r\n return $_253nd92ajkmcwkmp.sibling(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n });\r\n };\r\n var child$2 = function (scope, selector) {\r\n return $_253nd92ajkmcwkmp.child(scope, function (e) {\r\n return $_4jv6d81gjkmcwkgv.is(e, selector);\r\n });\r\n };\r\n var descendant$1 = function (scope, selector) {\r\n return $_4jv6d81gjkmcwkgv.one(selector, scope);\r\n };\r\n var closest$1 = function (scope, selector, isRoot) {\r\n return ClosestOrAncestor($_4jv6d81gjkmcwkgv.is, ancestor$1, scope, selector, isRoot);\r\n };\r\n var $_4ki4d929jkmcwkmn = {\r\n first: first$3,\r\n ancestor: ancestor$1,\r\n sibling: sibling$2,\r\n child: child$2,\r\n descendant: descendant$1,\r\n closest: closest$1\r\n };\r\n\r\n var annotation = constant('mce-annotation');\r\n var dataAnnotation = constant('data-mce-annotation');\r\n var dataAnnotationId = constant('data-mce-annotation-uid');\r\n\r\n var identify = function (editor, annotationName) {\r\n var rng = editor.selection.getRng();\r\n var start = Element$$1.fromDom(rng.startContainer);\r\n var root = Element$$1.fromDom(editor.getBody());\r\n var selector = annotationName.fold(function () {\r\n return '.' + annotation();\r\n }, function (an) {\r\n return '[' + dataAnnotation() + '=\"' + an + '\"]';\r\n });\r\n var newStart = $_ca6pc118jkmcwkfs.child(start, rng.startOffset).getOr(start);\r\n var closest = $_4ki4d929jkmcwkmn.closest(newStart, selector, function (n) {\r\n return $_e4hu6h1ejkmcwkgj.eq(n, root);\r\n });\r\n var getAttr = function (c, property) {\r\n if ($_29helg15jkmcwkf0.has(c, property)) {\r\n return Option.some($_29helg15jkmcwkf0.get(c, property));\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n return closest.bind(function (c) {\r\n return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {\r\n return getAttr(c, '' + dataAnnotation()).map(function (name) {\r\n var elements = findMarkers(editor, uid);\r\n return {\r\n uid: uid,\r\n name: name,\r\n elements: elements\r\n };\r\n });\r\n });\r\n });\r\n };\r\n var isAnnotation = function (elem) {\r\n return $_2xwdjv11jkmcwke0.isElement(elem) && $_ftm4v023jkmcwklz.has(elem, annotation());\r\n };\r\n var findMarkers = function (editor, uid) {\r\n var body = Element$$1.fromDom(editor.getBody());\r\n return $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotationId() + '=\"' + uid + '\"]');\r\n };\r\n var findAll = function (editor, name) {\r\n var body = Element$$1.fromDom(editor.getBody());\r\n var markers = $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotation() + '=\"' + name + '\"]');\r\n var directory = {};\r\n each(markers, function (m) {\r\n var uid = $_29helg15jkmcwkf0.get(m, dataAnnotationId());\r\n var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];\r\n directory[uid] = nodesAlready.concat([m]);\r\n });\r\n return directory;\r\n };\r\n\r\n var setup = function (editor, registry) {\r\n var changeCallbacks = Cell({});\r\n var initData = function () {\r\n return {\r\n listeners: [],\r\n previous: Cell(Option.none())\r\n };\r\n };\r\n var withCallbacks = function (name, f) {\r\n updateCallbacks(name, function (data) {\r\n f(data);\r\n return data;\r\n });\r\n };\r\n var updateCallbacks = function (name, f) {\r\n var callbackMap = changeCallbacks.get();\r\n var data = callbackMap.hasOwnProperty(name) ? callbackMap[name] : initData();\r\n var outputData = f(data);\r\n callbackMap[name] = outputData;\r\n changeCallbacks.set(callbackMap);\r\n };\r\n var fireCallbacks = function (name, uid, elements) {\r\n withCallbacks(name, function (data) {\r\n each(data.listeners, function (f) {\r\n return f(true, name, {\r\n uid: uid,\r\n nodes: map(elements, function (elem) {\r\n return elem.dom();\r\n })\r\n });\r\n });\r\n });\r\n };\r\n var fireNoAnnotation = function (name) {\r\n withCallbacks(name, function (data) {\r\n each(data.listeners, function (f) {\r\n return f(false, name);\r\n });\r\n });\r\n };\r\n var onNodeChange = last$3(function () {\r\n var callbackMap = changeCallbacks.get();\r\n var annotations = sort(keys(callbackMap));\r\n each(annotations, function (name) {\r\n updateCallbacks(name, function (data) {\r\n var prev = data.previous.get();\r\n identify(editor, Option.some(name)).fold(function () {\r\n if (prev.isSome()) {\r\n fireNoAnnotation(name);\r\n data.previous.set(Option.none());\r\n }\r\n }, function (_a) {\r\n var uid = _a.uid, name = _a.name, elements = _a.elements;\r\n if (!prev.is(uid)) {\r\n fireCallbacks(name, uid, elements);\r\n data.previous.set(Option.some(uid));\r\n }\r\n });\r\n return {\r\n previous: data.previous,\r\n listeners: data.listeners\r\n };\r\n });\r\n });\r\n }, 30);\r\n editor.on('remove', function () {\r\n onNodeChange.cancel();\r\n });\r\n editor.on('nodeChange', function () {\r\n onNodeChange.throttle();\r\n });\r\n var addListener = function (name, f) {\r\n updateCallbacks(name, function (data) {\r\n return {\r\n previous: data.previous,\r\n listeners: data.listeners.concat([f])\r\n };\r\n });\r\n };\r\n return { addListener: addListener };\r\n };\r\n\r\n var setup$1 = function (editor, registry) {\r\n var identifyParserNode = function (span) {\r\n var optAnnotation = Option.from(span.attributes.map[dataAnnotation()]);\r\n return optAnnotation.bind(registry.lookup);\r\n };\r\n editor.on('init', function () {\r\n editor.serializer.addNodeFilter('span', function (spans) {\r\n each(spans, function (span) {\r\n identifyParserNode(span).each(function (settings) {\r\n if (settings.persistent === false) {\r\n span.unwrap();\r\n }\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n var create$1 = function () {\r\n var annotations = {};\r\n var register = function (name, settings) {\r\n annotations[name] = {\r\n name: name,\r\n settings: settings\r\n };\r\n };\r\n var lookup = function (name) {\r\n return annotations.hasOwnProperty(name) ? Option.from(annotations[name]).map(function (a) {\r\n return a.settings;\r\n }) : Option.none();\r\n };\r\n return {\r\n register: register,\r\n lookup: lookup\r\n };\r\n };\r\n\r\n var unique = 0;\r\n var generate = function (prefix) {\r\n var date = new Date();\r\n var time = date.getTime();\r\n var random = Math.floor(Math.random() * 1000000000);\r\n unique++;\r\n return prefix + '_' + random + unique + String(time);\r\n };\r\n\r\n var add$3 = function (element, classes) {\r\n each(classes, function (x) {\r\n $_ftm4v023jkmcwklz.add(element, x);\r\n });\r\n };\r\n var remove$6 = function (element, classes) {\r\n each(classes, function (x) {\r\n $_ftm4v023jkmcwklz.remove(element, x);\r\n });\r\n };\r\n var toggle$2 = function (element, classes) {\r\n each(classes, function (x) {\r\n $_ftm4v023jkmcwklz.toggle(element, x);\r\n });\r\n };\r\n var hasAll = function (element, classes) {\r\n return forall(classes, function (clazz) {\r\n return $_ftm4v023jkmcwklz.has(element, clazz);\r\n });\r\n };\r\n var hasAny = function (element, classes) {\r\n return exists(classes, function (clazz) {\r\n return $_ftm4v023jkmcwklz.has(element, clazz);\r\n });\r\n };\r\n var getNative = function (element) {\r\n var classList = element.dom().classList;\r\n var r = new Array(classList.length);\r\n for (var i = 0; i < classList.length; i++) {\r\n r[i] = classList.item(i);\r\n }\r\n return r;\r\n };\r\n var get$3 = function (element) {\r\n return $_ewhsr825jkmcwkm2.supports(element) ? getNative(element) : $_ewhsr825jkmcwkm2.get(element);\r\n };\r\n var $_dw1myr2hjkmcwko1 = {\r\n add: add$3,\r\n remove: remove$6,\r\n toggle: toggle$2,\r\n hasAll: hasAll,\r\n hasAny: hasAny,\r\n get: get$3\r\n };\r\n\r\n var clone$1 = function (original, deep) {\r\n return Element$$1.fromDom(original.dom().cloneNode(deep));\r\n };\r\n var shallow = function (original) {\r\n return clone$1(original, false);\r\n };\r\n var deep = function (original) {\r\n return clone$1(original, true);\r\n };\r\n var shallowAs = function (original, tag) {\r\n var nu = Element$$1.fromTag(tag);\r\n var attributes = $_29helg15jkmcwkf0.clone(original);\r\n $_29helg15jkmcwkf0.setAll(nu, attributes);\r\n return nu;\r\n };\r\n var copy$1 = function (original, tag) {\r\n var nu = shallowAs(original, tag);\r\n var cloneChildren = $_ca6pc118jkmcwkfs.children(deep(original));\r\n $_1ev7t1xjkmcwkky.append(nu, cloneChildren);\r\n return nu;\r\n };\r\n var mutate = function (original, tag) {\r\n var nu = shallowAs(original, tag);\r\n $_f4qt4v1yjkmcwkl2.before(original, nu);\r\n var children = $_ca6pc118jkmcwkfs.children(original);\r\n $_1ev7t1xjkmcwkky.append(nu, children);\r\n $_eualm21wjkmcwkku.remove(original);\r\n return nu;\r\n };\r\n var $_44uvy22ijkmcwko5 = {\r\n shallow: shallow,\r\n shallowAs: shallowAs,\r\n deep: deep,\r\n copy: copy$1,\r\n mutate: mutate\r\n };\r\n\r\n var slice$3 = [].slice;\r\n var constant$1 = function (value) {\r\n return function () {\r\n return value;\r\n };\r\n };\r\n var negate = function (predicate) {\r\n return function (x) {\r\n return !predicate(x);\r\n };\r\n };\r\n var compose$2 = function (f, g) {\r\n return function (x) {\r\n return f(g(x));\r\n };\r\n };\r\n var or = function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var args = slice$3.call(arguments);\r\n return function (x) {\r\n for (var i = 0; i < args.length; i++) {\r\n if (args[i](x)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var and = function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var args = slice$3.call(arguments);\r\n return function (x) {\r\n for (var i = 0; i < args.length; i++) {\r\n if (!args[i](x)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n };\r\n var curry$1 = function (fn) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = slice$3.call(arguments);\r\n if (args.length - 1 >= fn.length) {\r\n return fn.apply(this, args.slice(1));\r\n }\r\n return function () {\r\n var tempArgs = args.concat([].slice.call(arguments));\r\n return curry$1.apply(this, tempArgs);\r\n };\r\n };\r\n var noop$1 = function () {\r\n };\r\n var $_fl2rax2ljkmcwkot = {\r\n constant: constant$1,\r\n negate: negate,\r\n and: and,\r\n or: or,\r\n curry: curry$1,\r\n compose: compose$2,\r\n noop: noop$1\r\n };\r\n\r\n var ZWSP = '\\uFEFF';\r\n var isZwsp = function (chr) {\r\n return chr === ZWSP;\r\n };\r\n var trim$3 = function (text) {\r\n return text.replace(new RegExp(ZWSP, 'g'), '');\r\n };\r\n var $_cadvcr2pjkmcwkph = {\r\n isZwsp: isZwsp,\r\n ZWSP: ZWSP,\r\n trim: trim$3\r\n };\r\n\r\n var isElement$2 = $_bjermr1rjkmcwkij.isElement;\r\n var isText$2 = $_bjermr1rjkmcwkij.isText;\r\n var isCaretContainerBlock = function (node) {\r\n if (isText$2(node)) {\r\n node = node.parentNode;\r\n }\r\n return isElement$2(node) && node.hasAttribute('data-mce-caret');\r\n };\r\n var isCaretContainerInline = function (node) {\r\n return isText$2(node) && $_cadvcr2pjkmcwkph.isZwsp(node.data);\r\n };\r\n var isCaretContainer = function (node) {\r\n return isCaretContainerBlock(node) || isCaretContainerInline(node);\r\n };\r\n var hasContent = function (node) {\r\n return node.firstChild !== node.lastChild || !$_bjermr1rjkmcwkij.isBr(node.firstChild);\r\n };\r\n var insertInline = function (node, before) {\r\n var doc, sibling, textNode, parentNode;\r\n doc = node.ownerDocument;\r\n textNode = doc.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\r\n parentNode = node.parentNode;\r\n if (!before) {\r\n sibling = node.nextSibling;\r\n if (isText$2(sibling)) {\r\n if (isCaretContainer(sibling)) {\r\n return sibling;\r\n }\r\n if (startsWithCaretContainer(sibling)) {\r\n sibling.splitText(1);\r\n return sibling;\r\n }\r\n }\r\n if (node.nextSibling) {\r\n parentNode.insertBefore(textNode, node.nextSibling);\r\n } else {\r\n parentNode.appendChild(textNode);\r\n }\r\n } else {\r\n sibling = node.previousSibling;\r\n if (isText$2(sibling)) {\r\n if (isCaretContainer(sibling)) {\r\n return sibling;\r\n }\r\n if (endsWithCaretContainer(sibling)) {\r\n return sibling.splitText(sibling.data.length - 1);\r\n }\r\n }\r\n parentNode.insertBefore(textNode, node);\r\n }\r\n return textNode;\r\n };\r\n var isBeforeInline = function (pos) {\r\n var container = pos.container();\r\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset()) === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var isAfterInline = function (pos) {\r\n var container = pos.container();\r\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset() - 1) === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var createBogusBr = function () {\r\n var br = document.createElement('br');\r\n br.setAttribute('data-mce-bogus', '1');\r\n return br;\r\n };\r\n var insertBlock = function (blockName, node, before) {\r\n var doc, blockNode, parentNode;\r\n doc = node.ownerDocument;\r\n blockNode = doc.createElement(blockName);\r\n blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\r\n blockNode.setAttribute('data-mce-bogus', 'all');\r\n blockNode.appendChild(createBogusBr());\r\n parentNode = node.parentNode;\r\n if (!before) {\r\n if (node.nextSibling) {\r\n parentNode.insertBefore(blockNode, node.nextSibling);\r\n } else {\r\n parentNode.appendChild(blockNode);\r\n }\r\n } else {\r\n parentNode.insertBefore(blockNode, node);\r\n }\r\n return blockNode;\r\n };\r\n var startsWithCaretContainer = function (node) {\r\n return isText$2(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var endsWithCaretContainer = function (node) {\r\n return isText$2(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var trimBogusBr = function (elm) {\r\n var brs = elm.getElementsByTagName('br');\r\n var lastBr = brs[brs.length - 1];\r\n if ($_bjermr1rjkmcwkij.isBogus(lastBr)) {\r\n lastBr.parentNode.removeChild(lastBr);\r\n }\r\n };\r\n var showCaretContainerBlock = function (caretContainer) {\r\n if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\r\n trimBogusBr(caretContainer);\r\n caretContainer.removeAttribute('data-mce-caret');\r\n caretContainer.removeAttribute('data-mce-bogus');\r\n caretContainer.removeAttribute('style');\r\n caretContainer.removeAttribute('_moz_abspos');\r\n return caretContainer;\r\n }\r\n return null;\r\n };\r\n var isRangeInCaretContainerBlock = function (range) {\r\n return isCaretContainerBlock(range.startContainer);\r\n };\r\n\r\n var isContentEditableTrue$1 = $_bjermr1rjkmcwkij.isContentEditableTrue;\r\n var isContentEditableFalse$1 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isBr$2 = $_bjermr1rjkmcwkij.isBr;\r\n var isText$3 = $_bjermr1rjkmcwkij.isText;\r\n var isInvalidTextElement = $_bjermr1rjkmcwkij.matchNodeNames('script style textarea');\r\n var isAtomicInline = $_bjermr1rjkmcwkij.matchNodeNames('img input textarea hr iframe video audio object');\r\n var isTable$1 = $_bjermr1rjkmcwkij.matchNodeNames('table');\r\n var isCaretContainer$1 = isCaretContainer;\r\n var isCaretCandidate = function (node) {\r\n if (isCaretContainer$1(node)) {\r\n return false;\r\n }\r\n if (isText$3(node)) {\r\n if (isInvalidTextElement(node.parentNode)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isNonUiContentEditableFalse(node);\r\n };\r\n var isUnselectable = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && node.getAttribute('unselectable') === 'true';\r\n };\r\n var isNonUiContentEditableFalse = function (node) {\r\n return isUnselectable(node) === false && isContentEditableFalse$1(node);\r\n };\r\n var isInEditable = function (node, root) {\r\n for (node = node.parentNode; node && node !== root; node = node.parentNode) {\r\n if (isNonUiContentEditableFalse(node)) {\r\n return false;\r\n }\r\n if (isContentEditableTrue$1(node)) {\r\n return true;\r\n }\r\n }\r\n return true;\r\n };\r\n var isAtomicContentEditableFalse = function (node) {\r\n if (!isNonUiContentEditableFalse(node)) {\r\n return false;\r\n }\r\n return $_9g1fibmjkmcwkbu.reduce(node.getElementsByTagName('*'), function (result, elm) {\r\n return result || isContentEditableTrue$1(elm);\r\n }, false) !== true;\r\n };\r\n var isAtomic = function (node) {\r\n return isAtomicInline(node) || isAtomicContentEditableFalse(node);\r\n };\r\n var isEditableCaretCandidate = function (node, root) {\r\n return isCaretCandidate(node) && isInEditable(node, root);\r\n };\r\n\r\n var round = Math.round;\r\n var clone$2 = function (rect) {\r\n if (!rect) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n return {\r\n left: round(rect.left),\r\n top: round(rect.top),\r\n bottom: round(rect.bottom),\r\n right: round(rect.right),\r\n width: round(rect.width),\r\n height: round(rect.height)\r\n };\r\n };\r\n var collapse = function (rect, toStart) {\r\n rect = clone$2(rect);\r\n if (toStart) {\r\n rect.right = rect.left;\r\n } else {\r\n rect.left = rect.left + rect.width;\r\n rect.right = rect.left;\r\n }\r\n rect.width = 0;\r\n return rect;\r\n };\r\n var isEqual = function (rect1, rect2) {\r\n return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\r\n };\r\n var isValidOverflow = function (overflowY, rect1, rect2) {\r\n return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\r\n };\r\n var isAbove = function (rect1, rect2) {\r\n if (rect1.bottom - rect1.height / 2 < rect2.top) {\r\n return true;\r\n }\r\n if (rect1.top > rect2.bottom) {\r\n return false;\r\n }\r\n return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\r\n };\r\n var isBelow = function (rect1, rect2) {\r\n if (rect1.top > rect2.bottom) {\r\n return true;\r\n }\r\n if (rect1.bottom < rect2.top) {\r\n return false;\r\n }\r\n return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\r\n };\r\n var containsXY = function (rect, clientX, clientY) {\r\n return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\r\n };\r\n var overflowX = function (outer, inner) {\r\n if (inner.left > outer.left && inner.right < outer.right) {\r\n return 0;\r\n } else {\r\n return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;\r\n }\r\n };\r\n var overflowY = function (outer, inner) {\r\n if (inner.top > outer.top && inner.bottom < outer.bottom) {\r\n return 0;\r\n } else {\r\n return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;\r\n }\r\n };\r\n var getOverflow = function (outer, inner) {\r\n return {\r\n x: overflowX(outer, inner),\r\n y: overflowY(outer, inner)\r\n };\r\n };\r\n\r\n var getSelectedNode = function (range) {\r\n var startContainer = range.startContainer, startOffset = range.startOffset;\r\n if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\r\n return startContainer.childNodes[startOffset];\r\n }\r\n return null;\r\n };\r\n var getNode = function (container, offset) {\r\n if (container.nodeType === 1 && container.hasChildNodes()) {\r\n if (offset >= container.childNodes.length) {\r\n offset = container.childNodes.length - 1;\r\n }\r\n container = container.childNodes[offset];\r\n }\r\n return container;\r\n };\r\n\r\n var extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08E3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2-\\u09e3' + '\\u0a01-\\u0a02\\u0a3c\\u0a41-\\u0a42\\u0a47-\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70-\\u0a71\\u0a75\\u0a81-\\u0a82\\u0abc' + '\\u0ac1-\\u0ac5\\u0ac7-\\u0ac8\\u0acd\\u0ae2-\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57' + '\\u0b62-\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\u0d3e\\u0d41-\\u0d44' + '\\u0d4d\\u0d57\\u0d62-\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9' + '\\u0ebb-\\u0ebc\\u0ec8-\\u0ecd\\u0f18-\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\uA69E-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\uFE2F\\uff9e-\\uff9f]');\r\n var isExtendingChar = function (ch) {\r\n return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\r\n };\r\n\r\n var liftN = function (arr, f) {\r\n var r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n var x = arr[i];\r\n if (x.isSome()) {\r\n r.push(x.getOrDie());\r\n } else {\r\n return Option.none();\r\n }\r\n }\r\n return Option.some(f.apply(null, r));\r\n };\r\n\r\n var isElement$3 = $_bjermr1rjkmcwkij.isElement;\r\n var isCaretCandidate$1 = isCaretCandidate;\r\n var isBlock$1 = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table');\r\n var isFloated = $_bjermr1rjkmcwkij.matchStyleValues('float', 'left right');\r\n var isValidElementCaretCandidate = $_fl2rax2ljkmcwkot.and(isElement$3, isCaretCandidate$1, $_fl2rax2ljkmcwkot.negate(isFloated));\r\n var isNotPre = $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.matchStyleValues('white-space', 'pre pre-line pre-wrap'));\r\n var isText$4 = $_bjermr1rjkmcwkij.isText;\r\n var isBr$3 = $_bjermr1rjkmcwkij.isBr;\r\n var nodeIndex = DOMUtils$1.nodeIndex;\r\n var resolveIndex = getNode;\r\n var createRange = function (doc) {\r\n return 'createRange' in doc ? doc.createRange() : DOMUtils$1.DOM.createRng();\r\n };\r\n var isWhiteSpace = function (chr) {\r\n return chr && /[\\r\\n\\t ]/.test(chr);\r\n };\r\n var isRange = function (rng) {\r\n return !!rng.setStart && !!rng.setEnd;\r\n };\r\n var isHiddenWhiteSpaceRange = function (range$$1) {\r\n var container = range$$1.startContainer;\r\n var offset = range$$1.startOffset;\r\n var text;\r\n if (isWhiteSpace(range$$1.toString()) && isNotPre(container.parentNode) && $_bjermr1rjkmcwkij.isText(container)) {\r\n text = container.data;\r\n if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var getBrClientRect = function (brNode) {\r\n var doc = brNode.ownerDocument;\r\n var rng = createRange(doc);\r\n var nbsp = doc.createTextNode('\\xA0');\r\n var parentNode = brNode.parentNode;\r\n var clientRect;\r\n parentNode.insertBefore(nbsp, brNode);\r\n rng.setStart(nbsp, 0);\r\n rng.setEnd(nbsp, 1);\r\n clientRect = clone$2(rng.getBoundingClientRect());\r\n parentNode.removeChild(nbsp);\r\n return clientRect;\r\n };\r\n var getBoundingClientRectWebKitText = function (rng) {\r\n var sc = rng.startContainer;\r\n var ec = rng.endContainer;\r\n var so = rng.startOffset;\r\n var eo = rng.endOffset;\r\n if (sc === ec && $_bjermr1rjkmcwkij.isText(ec) && so === 0 && eo === 1) {\r\n var newRng = rng.cloneRange();\r\n newRng.setEndAfter(ec);\r\n return getBoundingClientRect(newRng);\r\n } else {\r\n return null;\r\n }\r\n };\r\n var isZeroRect = function (r) {\r\n return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\r\n };\r\n var getBoundingClientRect = function (item) {\r\n var clientRect, clientRects;\r\n clientRects = item.getClientRects();\r\n if (clientRects.length > 0) {\r\n clientRect = clone$2(clientRects[0]);\r\n } else {\r\n clientRect = clone$2(item.getBoundingClientRect());\r\n }\r\n if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\r\n return getBrClientRect(item);\r\n }\r\n if (isZeroRect(clientRect) && isRange(item)) {\r\n return getBoundingClientRectWebKitText(item);\r\n }\r\n return clientRect;\r\n };\r\n var collapseAndInflateWidth = function (clientRect, toStart) {\r\n var newClientRect = collapse(clientRect, toStart);\r\n newClientRect.width = 1;\r\n newClientRect.right = newClientRect.left + 1;\r\n return newClientRect;\r\n };\r\n var getCaretPositionClientRects = function (caretPosition) {\r\n var clientRects = [];\r\n var beforeNode, node;\r\n var addUniqueAndValidRect = function (clientRect) {\r\n if (clientRect.height === 0) {\r\n return;\r\n }\r\n if (clientRects.length > 0) {\r\n if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\r\n return;\r\n }\r\n }\r\n clientRects.push(clientRect);\r\n };\r\n var addCharacterOffset = function (container, offset) {\r\n var range$$1 = createRange(container.ownerDocument);\r\n if (offset < container.data.length) {\r\n if (isExtendingChar(container.data[offset])) {\r\n return clientRects;\r\n }\r\n if (isExtendingChar(container.data[offset - 1])) {\r\n range$$1.setStart(container, offset);\r\n range$$1.setEnd(container, offset + 1);\r\n if (!isHiddenWhiteSpaceRange(range$$1)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\r\n return clientRects;\r\n }\r\n }\r\n }\r\n if (offset > 0) {\r\n range$$1.setStart(container, offset - 1);\r\n range$$1.setEnd(container, offset);\r\n if (!isHiddenWhiteSpaceRange(range$$1)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\r\n }\r\n }\r\n if (offset < container.data.length) {\r\n range$$1.setStart(container, offset);\r\n range$$1.setEnd(container, offset + 1);\r\n if (!isHiddenWhiteSpaceRange(range$$1)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), true));\r\n }\r\n }\r\n };\r\n if (isText$4(caretPosition.container())) {\r\n addCharacterOffset(caretPosition.container(), caretPosition.offset());\r\n return clientRects;\r\n }\r\n if (isElement$3(caretPosition.container())) {\r\n if (caretPosition.isAtEnd()) {\r\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\r\n if (isText$4(node)) {\r\n addCharacterOffset(node, node.data.length);\r\n }\r\n if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\r\n }\r\n } else {\r\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\r\n if (isText$4(node)) {\r\n addCharacterOffset(node, 0);\r\n }\r\n if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\r\n return clientRects;\r\n }\r\n beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1);\r\n if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\r\n if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false));\r\n }\r\n }\r\n if (isValidElementCaretCandidate(node)) {\r\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true));\r\n }\r\n }\r\n }\r\n return clientRects;\r\n };\r\n function CaretPosition(container, offset, clientRects) {\r\n var isAtStart = function () {\r\n if (isText$4(container)) {\r\n return offset === 0;\r\n }\r\n return offset === 0;\r\n };\r\n var isAtEnd = function () {\r\n if (isText$4(container)) {\r\n return offset >= container.data.length;\r\n }\r\n return offset >= container.childNodes.length;\r\n };\r\n var toRange = function () {\r\n var range$$1;\r\n range$$1 = createRange(container.ownerDocument);\r\n range$$1.setStart(container, offset);\r\n range$$1.setEnd(container, offset);\r\n return range$$1;\r\n };\r\n var getClientRects = function () {\r\n if (!clientRects) {\r\n clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\r\n }\r\n return clientRects;\r\n };\r\n var isVisible = function () {\r\n return getClientRects().length > 0;\r\n };\r\n var isEqual$$1 = function (caretPosition) {\r\n return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\r\n };\r\n var getNode$$1 = function (before) {\r\n return resolveIndex(container, before ? offset - 1 : offset);\r\n };\r\n return {\r\n container: $_fl2rax2ljkmcwkot.constant(container),\r\n offset: $_fl2rax2ljkmcwkot.constant(offset),\r\n toRange: toRange,\r\n getClientRects: getClientRects,\r\n isVisible: isVisible,\r\n isAtStart: isAtStart,\r\n isAtEnd: isAtEnd,\r\n isEqual: isEqual$$1,\r\n getNode: getNode$$1\r\n };\r\n }\r\n (function (CaretPosition) {\r\n CaretPosition.fromRangeStart = function (range$$1) {\r\n return CaretPosition(range$$1.startContainer, range$$1.startOffset);\r\n };\r\n CaretPosition.fromRangeEnd = function (range$$1) {\r\n return CaretPosition(range$$1.endContainer, range$$1.endOffset);\r\n };\r\n CaretPosition.after = function (node) {\r\n return CaretPosition(node.parentNode, nodeIndex(node) + 1);\r\n };\r\n CaretPosition.before = function (node) {\r\n return CaretPosition(node.parentNode, nodeIndex(node));\r\n };\r\n CaretPosition.isAbove = function (pos1, pos2) {\r\n return liftN([\r\n head(pos2.getClientRects()),\r\n last(pos1.getClientRects())\r\n ], isAbove).getOr(false);\r\n };\r\n CaretPosition.isBelow = function (pos1, pos2) {\r\n return liftN([\r\n last(pos2.getClientRects()),\r\n head(pos1.getClientRects())\r\n ], isBelow).getOr(false);\r\n };\r\n CaretPosition.isAtStart = function (pos) {\r\n return pos ? pos.isAtStart() : false;\r\n };\r\n CaretPosition.isAtEnd = function (pos) {\r\n return pos ? pos.isAtEnd() : false;\r\n };\r\n CaretPosition.isTextPosition = function (pos) {\r\n return pos ? $_bjermr1rjkmcwkij.isText(pos.container()) : false;\r\n };\r\n CaretPosition.isElementPosition = function (pos) {\r\n return CaretPosition.isTextPosition(pos) === false;\r\n };\r\n }(CaretPosition || (CaretPosition = {})));\r\n var CaretPosition$1 = CaretPosition;\r\n\r\n var isText$5 = $_bjermr1rjkmcwkij.isText;\r\n var isBogus$1 = $_bjermr1rjkmcwkij.isBogus;\r\n var nodeIndex$1 = DOMUtils$1.nodeIndex;\r\n var normalizedParent = function (node) {\r\n var parentNode = node.parentNode;\r\n if (isBogus$1(parentNode)) {\r\n return normalizedParent(parentNode);\r\n }\r\n return parentNode;\r\n };\r\n var getChildNodes = function (node) {\r\n if (!node) {\r\n return [];\r\n }\r\n return $_9g1fibmjkmcwkbu.reduce(node.childNodes, function (result, node) {\r\n if (isBogus$1(node) && node.nodeName !== 'BR') {\r\n result = result.concat(getChildNodes(node));\r\n } else {\r\n result.push(node);\r\n }\r\n return result;\r\n }, []);\r\n };\r\n var normalizedTextOffset = function (node, offset) {\r\n while (node = node.previousSibling) {\r\n if (!isText$5(node)) {\r\n break;\r\n }\r\n offset += node.data.length;\r\n }\r\n return offset;\r\n };\r\n var equal$1 = function (a) {\r\n return function (b) {\r\n return a === b;\r\n };\r\n };\r\n var normalizedNodeIndex = function (node) {\r\n var nodes, index, numTextFragments;\r\n nodes = getChildNodes(normalizedParent(node));\r\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\r\n nodes = nodes.slice(0, index + 1);\r\n numTextFragments = $_9g1fibmjkmcwkbu.reduce(nodes, function (result, node, i) {\r\n if (isText$5(node) && isText$5(nodes[i - 1])) {\r\n result++;\r\n }\r\n return result;\r\n }, 0);\r\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(node.nodeName));\r\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\r\n return index - numTextFragments;\r\n };\r\n var createPathItem = function (node) {\r\n var name;\r\n if (isText$5(node)) {\r\n name = 'text()';\r\n } else {\r\n name = node.nodeName.toLowerCase();\r\n }\r\n return name + '[' + normalizedNodeIndex(node) + ']';\r\n };\r\n var parentsUntil = function (root, node, predicate) {\r\n var parents = [];\r\n for (node = node.parentNode; node !== root; node = node.parentNode) {\r\n if (predicate && predicate(node)) {\r\n break;\r\n }\r\n parents.push(node);\r\n }\r\n return parents;\r\n };\r\n var create$2 = function (root, caretPosition) {\r\n var container, offset, path = [], outputOffset, childNodes, parents;\r\n container = caretPosition.container();\r\n offset = caretPosition.offset();\r\n if (isText$5(container)) {\r\n outputOffset = normalizedTextOffset(container, offset);\r\n } else {\r\n childNodes = container.childNodes;\r\n if (offset >= childNodes.length) {\r\n outputOffset = 'after';\r\n offset = childNodes.length - 1;\r\n } else {\r\n outputOffset = 'before';\r\n }\r\n container = childNodes[offset];\r\n }\r\n path.push(createPathItem(container));\r\n parents = parentsUntil(root, container);\r\n parents = $_9g1fibmjkmcwkbu.filter(parents, $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.isBogus));\r\n path = path.concat($_9g1fibmjkmcwkbu.map(parents, function (node) {\r\n return createPathItem(node);\r\n }));\r\n return path.reverse().join('/') + ',' + outputOffset;\r\n };\r\n var resolvePathItem = function (node, name, index) {\r\n var nodes = getChildNodes(node);\r\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, function (node, index) {\r\n return !isText$5(node) || !isText$5(nodes[index - 1]);\r\n });\r\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(name));\r\n return nodes[index];\r\n };\r\n var findTextPosition = function (container, offset) {\r\n var node = container, targetOffset = 0, dataLen;\r\n while (isText$5(node)) {\r\n dataLen = node.data.length;\r\n if (offset >= targetOffset && offset <= targetOffset + dataLen) {\r\n container = node;\r\n offset = offset - targetOffset;\r\n break;\r\n }\r\n if (!isText$5(node.nextSibling)) {\r\n container = node;\r\n offset = dataLen;\r\n break;\r\n }\r\n targetOffset += dataLen;\r\n node = node.nextSibling;\r\n }\r\n if (isText$5(container) && offset > container.data.length) {\r\n offset = container.data.length;\r\n }\r\n return CaretPosition$1(container, offset);\r\n };\r\n var resolve$2 = function (root, path) {\r\n var parts, container, offset;\r\n if (!path) {\r\n return null;\r\n }\r\n parts = path.split(',');\r\n path = parts[0].split('/');\r\n offset = parts.length > 1 ? parts[1] : 'before';\r\n container = $_9g1fibmjkmcwkbu.reduce(path, function (result, value) {\r\n value = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\r\n if (!value) {\r\n return null;\r\n }\r\n if (value[1] === 'text()') {\r\n value[1] = '#text';\r\n }\r\n return resolvePathItem(result, value[1], parseInt(value[2], 10));\r\n }, root);\r\n if (!container) {\r\n return null;\r\n }\r\n if (!isText$5(container)) {\r\n if (offset === 'after') {\r\n offset = nodeIndex$1(container) + 1;\r\n } else {\r\n offset = nodeIndex$1(container);\r\n }\r\n return CaretPosition$1(container.parentNode, offset);\r\n }\r\n return findTextPosition(container, parseInt(offset, 10));\r\n };\r\n\r\n var isContentEditableFalse$2 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var getNormalizedTextOffset = function (trim, container, offset) {\r\n var node, trimmedOffset;\r\n trimmedOffset = trim(container.data.slice(0, offset)).length;\r\n for (node = container.previousSibling; node && $_bjermr1rjkmcwkij.isText(node); node = node.previousSibling) {\r\n trimmedOffset += trim(node.data).length;\r\n }\r\n return trimmedOffset;\r\n };\r\n var getPoint = function (dom, trim, normalized, rng, start) {\r\n var container = rng[start ? 'startContainer' : 'endContainer'];\r\n var offset = rng[start ? 'startOffset' : 'endOffset'];\r\n var point = [];\r\n var childNodes, after = 0;\r\n var root = dom.getRoot();\r\n if ($_bjermr1rjkmcwkij.isText(container)) {\r\n point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset);\r\n } else {\r\n childNodes = container.childNodes;\r\n if (offset >= childNodes.length && childNodes.length) {\r\n after = 1;\r\n offset = Math.max(0, childNodes.length - 1);\r\n }\r\n point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\r\n }\r\n for (; container && container !== root; container = container.parentNode) {\r\n point.push(dom.nodeIndex(container, normalized));\r\n }\r\n return point;\r\n };\r\n var getLocation = function (trim, selection, normalized, rng) {\r\n var dom = selection.dom, bookmark = {};\r\n bookmark.start = getPoint(dom, trim, normalized, rng, true);\r\n if (!selection.isCollapsed()) {\r\n bookmark.end = getPoint(dom, trim, normalized, rng, false);\r\n }\r\n return bookmark;\r\n };\r\n var trimEmptyTextNode = function (node) {\r\n if ($_bjermr1rjkmcwkij.isText(node) && node.data.length === 0) {\r\n node.parentNode.removeChild(node);\r\n }\r\n };\r\n var findIndex$3 = function (dom, name, element) {\r\n var count = 0;\r\n $_4ujg4tljkmcwkbk.each(dom.select(name), function (node) {\r\n if (node.getAttribute('data-mce-bogus') === 'all') {\r\n return;\r\n }\r\n if (node === element) {\r\n return false;\r\n }\r\n count++;\r\n });\r\n return count;\r\n };\r\n var moveEndPoint = function (rng, start) {\r\n var container, offset, childNodes;\r\n var prefix = start ? 'start' : 'end';\r\n container = rng[prefix + 'Container'];\r\n offset = rng[prefix + 'Offset'];\r\n if ($_bjermr1rjkmcwkij.isElement(container) && container.nodeName === 'TR') {\r\n childNodes = container.childNodes;\r\n container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\r\n if (container) {\r\n offset = start ? 0 : container.childNodes.length;\r\n rng['set' + (start ? 'Start' : 'End')](container, offset);\r\n }\r\n }\r\n };\r\n var normalizeTableCellSelection = function (rng) {\r\n moveEndPoint(rng, true);\r\n moveEndPoint(rng, false);\r\n return rng;\r\n };\r\n var findSibling = function (node, offset) {\r\n var sibling;\r\n if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n node = getNode(node, offset);\r\n if (isContentEditableFalse$2(node)) {\r\n return node;\r\n }\r\n }\r\n if (isCaretContainer(node)) {\r\n if ($_bjermr1rjkmcwkij.isText(node) && isCaretContainerBlock(node)) {\r\n node = node.parentNode;\r\n }\r\n sibling = node.previousSibling;\r\n if (isContentEditableFalse$2(sibling)) {\r\n return sibling;\r\n }\r\n sibling = node.nextSibling;\r\n if (isContentEditableFalse$2(sibling)) {\r\n return sibling;\r\n }\r\n }\r\n };\r\n var findAdjacentContentEditableFalseElm = function (rng) {\r\n return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\r\n };\r\n var getOffsetBookmark = function (trim, normalized, selection) {\r\n var element = selection.getNode();\r\n var name = element ? element.nodeName : null;\r\n var rng = selection.getRng();\r\n if (isContentEditableFalse$2(element) || name === 'IMG') {\r\n return {\r\n name: name,\r\n index: findIndex$3(selection.dom, name, element)\r\n };\r\n }\r\n var sibling = findAdjacentContentEditableFalseElm(rng);\r\n if (sibling) {\r\n name = sibling.tagName;\r\n return {\r\n name: name,\r\n index: findIndex$3(selection.dom, name, sibling)\r\n };\r\n }\r\n return getLocation(trim, selection, normalized, rng);\r\n };\r\n var getCaretBookmark = function (selection) {\r\n var rng = selection.getRng();\r\n return {\r\n start: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)),\r\n end: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng))\r\n };\r\n };\r\n var getRangeBookmark = function (selection) {\r\n return { rng: selection.getRng() };\r\n };\r\n var createBookmarkSpan = function (dom, id, filled) {\r\n var args = {\r\n 'data-mce-type': 'bookmark',\r\n 'id': id,\r\n 'style': 'overflow:hidden;line-height:0px'\r\n };\r\n return filled ? dom.create('span', args, '') : dom.create('span', args);\r\n };\r\n var getPersistentBookmark = function (selection, filled) {\r\n var dom = selection.dom;\r\n var rng = selection.getRng();\r\n var id = dom.uniqueId();\r\n var collapsed = selection.isCollapsed();\r\n var element = selection.getNode();\r\n var name = element.nodeName;\r\n if (name === 'IMG') {\r\n return {\r\n name: name,\r\n index: findIndex$3(dom, name, element)\r\n };\r\n }\r\n var rng2 = normalizeTableCellSelection(rng.cloneRange());\r\n if (!collapsed) {\r\n rng2.collapse(false);\r\n var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\r\n rng2.insertNode(endBookmarkNode);\r\n trimEmptyTextNode(endBookmarkNode.nextSibling);\r\n }\r\n rng = normalizeTableCellSelection(rng);\r\n rng.collapse(true);\r\n var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\r\n rng.insertNode(startBookmarkNode);\r\n trimEmptyTextNode(startBookmarkNode.previousSibling);\r\n selection.moveToBookmark({\r\n id: id,\r\n keep: 1\r\n });\r\n return { id: id };\r\n };\r\n var getBookmark = function (selection, type, normalized) {\r\n if (type === 2) {\r\n return getOffsetBookmark($_cadvcr2pjkmcwkph.trim, normalized, selection);\r\n } else if (type === 3) {\r\n return getCaretBookmark(selection);\r\n } else if (type) {\r\n return getRangeBookmark(selection);\r\n } else {\r\n return getPersistentBookmark(selection, false);\r\n }\r\n };\r\n var $_aw3zi52jjkmcwkoa = {\r\n getBookmark: getBookmark,\r\n getUndoBookmark: curry(getOffsetBookmark, identity, true),\r\n getPersistentBookmark: getPersistentBookmark\r\n };\r\n\r\n var CARET_ID = '_mce_caret';\r\n var isCaretNode = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && node.id === CARET_ID;\r\n };\r\n var getParentCaretContainer = function (body, node) {\r\n while (node && node !== body) {\r\n if (node.id === CARET_ID) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n\r\n var isElement$4 = $_bjermr1rjkmcwkij.isElement;\r\n var isText$6 = $_bjermr1rjkmcwkij.isText;\r\n var removeNode = function (node) {\r\n var parentNode = node.parentNode;\r\n if (parentNode) {\r\n parentNode.removeChild(node);\r\n }\r\n };\r\n var getNodeValue = function (node) {\r\n try {\r\n return node.nodeValue;\r\n } catch (ex) {\r\n return '';\r\n }\r\n };\r\n var setNodeValue = function (node, text) {\r\n if (text.length === 0) {\r\n removeNode(node);\r\n } else {\r\n node.nodeValue = text;\r\n }\r\n };\r\n var trimCount = function (text) {\r\n var trimmedText = $_cadvcr2pjkmcwkph.trim(text);\r\n return {\r\n count: text.length - trimmedText.length,\r\n text: trimmedText\r\n };\r\n };\r\n var removeUnchanged = function (caretContainer, pos) {\r\n remove$7(caretContainer);\r\n return pos;\r\n };\r\n var removeTextAndReposition = function (caretContainer, pos) {\r\n var before = trimCount(caretContainer.data.substr(0, pos.offset()));\r\n var after = trimCount(caretContainer.data.substr(pos.offset()));\r\n var text = before.text + after.text;\r\n if (text.length > 0) {\r\n setNodeValue(caretContainer, text);\r\n return CaretPosition$1(caretContainer, pos.offset() - before.count);\r\n } else {\r\n return pos;\r\n }\r\n };\r\n var removeElementAndReposition = function (caretContainer, pos) {\r\n var parentNode = pos.container();\r\n var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {\r\n return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;\r\n }).getOr(pos);\r\n remove$7(caretContainer);\r\n return newPosition;\r\n };\r\n var removeTextCaretContainer = function (caretContainer, pos) {\r\n return isText$6(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\r\n };\r\n var removeElementCaretContainer = function (caretContainer, pos) {\r\n return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\r\n };\r\n var removeAndReposition = function (container, pos) {\r\n return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\r\n };\r\n var remove$7 = function (caretContainerNode) {\r\n if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {\r\n if (hasContent(caretContainerNode)) {\r\n caretContainerNode.removeAttribute('data-mce-caret');\r\n } else {\r\n removeNode(caretContainerNode);\r\n }\r\n }\r\n if (isText$6(caretContainerNode)) {\r\n var text = $_cadvcr2pjkmcwkph.trim(getNodeValue(caretContainerNode));\r\n setNodeValue(caretContainerNode, text);\r\n }\r\n };\r\n var $_xl2r331jkmcwkri = {\r\n removeAndReposition: removeAndReposition,\r\n remove: remove$7\r\n };\r\n\r\n var isContentEditableTrue$2 = $_bjermr1rjkmcwkij.isContentEditableTrue;\r\n var isContentEditableFalse$3 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var showCaret = function (direction, editor, node, before, scrollIntoView) {\r\n return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);\r\n };\r\n var getNodeRange = function (node) {\r\n var rng = node.ownerDocument.createRange();\r\n rng.selectNode(node);\r\n return rng;\r\n };\r\n var selectNode = function (editor, node) {\r\n var e = editor.fire('BeforeObjectSelected', { target: node });\r\n if (e.isDefaultPrevented()) {\r\n return null;\r\n }\r\n return getNodeRange(node);\r\n };\r\n var renderCaretAtRange = function (editor, range, scrollIntoView) {\r\n var normalizedRange = normalizeRange(1, editor.getBody(), range);\r\n var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);\r\n var caretPositionNode = caretPosition.getNode();\r\n if (isContentEditableFalse$3(caretPositionNode)) {\r\n return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\r\n }\r\n var caretPositionBeforeNode = caretPosition.getNode(true);\r\n if (isContentEditableFalse$3(caretPositionBeforeNode)) {\r\n return showCaret(1, editor, caretPositionBeforeNode, false, false);\r\n }\r\n var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {\r\n return isContentEditableFalse$3(node) || isContentEditableTrue$2(node);\r\n });\r\n if (isContentEditableFalse$3(ceRoot)) {\r\n return showCaret(1, editor, ceRoot, false, scrollIntoView);\r\n }\r\n return null;\r\n };\r\n var renderRangeCaret = function (editor, range, scrollIntoView) {\r\n if (!range || !range.collapsed) {\r\n return range;\r\n }\r\n var caretRange = renderCaretAtRange(editor, range, scrollIntoView);\r\n if (caretRange) {\r\n return caretRange;\r\n }\r\n return range;\r\n };\r\n\r\n var HDirection;\r\n (function (HDirection) {\r\n HDirection[HDirection['Backwards'] = -1] = 'Backwards';\r\n HDirection[HDirection['Forwards'] = 1] = 'Forwards';\r\n }(HDirection || (HDirection = {})));\r\n var isContentEditableFalse$4 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isText$7 = $_bjermr1rjkmcwkij.isText;\r\n var isElement$5 = $_bjermr1rjkmcwkij.isElement;\r\n var isBr$4 = $_bjermr1rjkmcwkij.isBr;\r\n var isCaretCandidate$2 = isCaretCandidate;\r\n var isAtomic$1 = isAtomic;\r\n var isEditableCaretCandidate$1 = isEditableCaretCandidate;\r\n var getParents = function (node, root) {\r\n var parents = [];\r\n while (node && node !== root) {\r\n parents.push(node);\r\n node = node.parentNode;\r\n }\r\n return parents;\r\n };\r\n var nodeAtIndex = function (container, offset) {\r\n if (container.hasChildNodes() && offset < container.childNodes.length) {\r\n return container.childNodes[offset];\r\n }\r\n return null;\r\n };\r\n var getCaretCandidatePosition = function (direction, node) {\r\n if (isForwards(direction)) {\r\n if (isCaretCandidate$2(node.previousSibling) && !isText$7(node.previousSibling)) {\r\n return CaretPosition$1.before(node);\r\n }\r\n if (isText$7(node)) {\r\n return CaretPosition$1(node, 0);\r\n }\r\n }\r\n if (isBackwards(direction)) {\r\n if (isCaretCandidate$2(node.nextSibling) && !isText$7(node.nextSibling)) {\r\n return CaretPosition$1.after(node);\r\n }\r\n if (isText$7(node)) {\r\n return CaretPosition$1(node, node.data.length);\r\n }\r\n }\r\n if (isBackwards(direction)) {\r\n if (isBr$4(node)) {\r\n return CaretPosition$1.before(node);\r\n }\r\n return CaretPosition$1.after(node);\r\n }\r\n return CaretPosition$1.before(node);\r\n };\r\n var isBrBeforeBlock = function (node, root) {\r\n var next;\r\n if (!$_bjermr1rjkmcwkij.isBr(node)) {\r\n return false;\r\n }\r\n next = findCaretPosition(1, CaretPosition$1.after(node), root);\r\n if (!next) {\r\n return false;\r\n }\r\n return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root);\r\n };\r\n var findCaretPosition = function (direction, startPos, root) {\r\n var node, nextNode, innerNode;\r\n var rootContentEditableFalseElm, caretPosition;\r\n if (!isElement$5(root) || !startPos) {\r\n return null;\r\n }\r\n if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) {\r\n caretPosition = CaretPosition$1.after(root.lastChild);\r\n if (isBackwards(direction) && isCaretCandidate$2(root.lastChild) && isElement$5(root.lastChild)) {\r\n return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition;\r\n }\r\n } else {\r\n caretPosition = startPos;\r\n }\r\n var container = caretPosition.container();\r\n var offset = caretPosition.offset();\r\n if (isText$7(container)) {\r\n if (isBackwards(direction) && offset > 0) {\r\n return CaretPosition$1(container, --offset);\r\n }\r\n if (isForwards(direction) && offset < container.length) {\r\n return CaretPosition$1(container, ++offset);\r\n }\r\n node = container;\r\n } else {\r\n if (isBackwards(direction) && offset > 0) {\r\n nextNode = nodeAtIndex(container, offset - 1);\r\n if (isCaretCandidate$2(nextNode)) {\r\n if (!isAtomic$1(nextNode)) {\r\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\r\n if (innerNode) {\r\n if (isText$7(innerNode)) {\r\n return CaretPosition$1(innerNode, innerNode.data.length);\r\n }\r\n return CaretPosition$1.after(innerNode);\r\n }\r\n }\r\n if (isText$7(nextNode)) {\r\n return CaretPosition$1(nextNode, nextNode.data.length);\r\n }\r\n return CaretPosition$1.before(nextNode);\r\n }\r\n }\r\n if (isForwards(direction) && offset < container.childNodes.length) {\r\n nextNode = nodeAtIndex(container, offset);\r\n if (isCaretCandidate$2(nextNode)) {\r\n if (isBr$4(nextNode) && root.lastChild === nextNode) {\r\n return null;\r\n }\r\n if (isBrBeforeBlock(nextNode, root)) {\r\n return findCaretPosition(direction, CaretPosition$1.after(nextNode), root);\r\n }\r\n if (!isAtomic$1(nextNode)) {\r\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\r\n if (innerNode) {\r\n if (isText$7(innerNode)) {\r\n return CaretPosition$1(innerNode, 0);\r\n }\r\n return CaretPosition$1.before(innerNode);\r\n }\r\n }\r\n if (isText$7(nextNode)) {\r\n return CaretPosition$1(nextNode, 0);\r\n }\r\n return CaretPosition$1.after(nextNode);\r\n }\r\n }\r\n node = nextNode ? nextNode : caretPosition.getNode();\r\n }\r\n if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) {\r\n node = findNode(node, direction, $_fl2rax2ljkmcwkot.constant(true), root, true);\r\n if (isEditableCaretCandidate$1(node, root)) {\r\n return getCaretCandidatePosition(direction, node);\r\n }\r\n }\r\n nextNode = findNode(node, direction, isEditableCaretCandidate$1, root);\r\n rootContentEditableFalseElm = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(getParents(container, root), isContentEditableFalse$4));\r\n if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\r\n if (isForwards(direction)) {\r\n caretPosition = CaretPosition$1.after(rootContentEditableFalseElm);\r\n } else {\r\n caretPosition = CaretPosition$1.before(rootContentEditableFalseElm);\r\n }\r\n return caretPosition;\r\n }\r\n if (nextNode) {\r\n return getCaretCandidatePosition(direction, nextNode);\r\n }\r\n return null;\r\n };\r\n var CaretWalker = function (root) {\r\n return {\r\n next: function (caretPosition) {\r\n return findCaretPosition(HDirection.Forwards, caretPosition, root);\r\n },\r\n prev: function (caretPosition) {\r\n return findCaretPosition(HDirection.Backwards, caretPosition, root);\r\n }\r\n };\r\n };\r\n\r\n var BreakType;\r\n (function (BreakType) {\r\n BreakType[BreakType['Br'] = 0] = 'Br';\r\n BreakType[BreakType['Block'] = 1] = 'Block';\r\n BreakType[BreakType['Wrap'] = 2] = 'Wrap';\r\n BreakType[BreakType['Eol'] = 3] = 'Eol';\r\n }(BreakType || (BreakType = {})));\r\n var flip = function (direction, positions) {\r\n return direction === HDirection.Backwards ? positions.reverse() : positions;\r\n };\r\n var walk$1 = function (direction, caretWalker, pos) {\r\n return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\r\n };\r\n var getBreakType = function (scope, direction, currentPos, nextPos) {\r\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(direction === HDirection.Forwards))) {\r\n return BreakType.Br;\r\n } else if (isInSameBlock(currentPos, nextPos) === false) {\r\n return BreakType.Block;\r\n } else {\r\n return BreakType.Wrap;\r\n }\r\n };\r\n var getPositionsUntil = function (predicate, direction, scope, start) {\r\n var caretWalker = CaretWalker(scope);\r\n var currentPos = start, nextPos;\r\n var positions = [];\r\n while (currentPos) {\r\n nextPos = walk$1(direction, caretWalker, currentPos);\r\n if (!nextPos) {\r\n break;\r\n }\r\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(false))) {\r\n if (direction === HDirection.Forwards) {\r\n return {\r\n positions: flip(direction, positions).concat([nextPos]),\r\n breakType: BreakType.Br,\r\n breakAt: Option.some(nextPos)\r\n };\r\n } else {\r\n return {\r\n positions: flip(direction, positions),\r\n breakType: BreakType.Br,\r\n breakAt: Option.some(nextPos)\r\n };\r\n }\r\n }\r\n if (!nextPos.isVisible()) {\r\n currentPos = nextPos;\r\n continue;\r\n }\r\n if (predicate(currentPos, nextPos)) {\r\n var breakType = getBreakType(scope, direction, currentPos, nextPos);\r\n return {\r\n positions: flip(direction, positions),\r\n breakType: breakType,\r\n breakAt: Option.some(nextPos)\r\n };\r\n }\r\n positions.push(nextPos);\r\n currentPos = nextPos;\r\n }\r\n return {\r\n positions: flip(direction, positions),\r\n breakType: BreakType.Eol,\r\n breakAt: Option.none()\r\n };\r\n };\r\n var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {\r\n return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {\r\n var positions = getPositionsUntilBreak(scope, pos).positions;\r\n return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\r\n }).getOr([]);\r\n };\r\n var findClosestHorizontalPositionFromPoint = function (positions, x) {\r\n return foldl(positions, function (acc, newPos) {\r\n return acc.fold(function () {\r\n return Option.some(newPos);\r\n }, function (lastPos) {\r\n return liftN([\r\n head(lastPos.getClientRects()),\r\n head(newPos.getClientRects())\r\n ], function (lastRect, newRect) {\r\n var lastDist = Math.abs(x - lastRect.left);\r\n var newDist = Math.abs(x - newRect.left);\r\n return newDist <= lastDist ? newPos : lastPos;\r\n }).or(acc);\r\n });\r\n }, Option.none());\r\n };\r\n var findClosestHorizontalPosition = function (positions, pos) {\r\n return head(pos.getClientRects()).bind(function (targetRect) {\r\n return findClosestHorizontalPositionFromPoint(positions, targetRect.left);\r\n });\r\n };\r\n var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\r\n var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\r\n var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\r\n var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\r\n var getFirstLinePositions = function (scope) {\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(scope).map(function (pos) {\r\n return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\r\n }).getOr([]);\r\n };\r\n var getLastLinePositions = function (scope) {\r\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(scope).map(function (pos) {\r\n return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);\r\n }).getOr([]);\r\n };\r\n\r\n var deflate = function (rect, delta) {\r\n return {\r\n left: rect.left - delta,\r\n top: rect.top - delta,\r\n right: rect.right + delta * 2,\r\n bottom: rect.bottom + delta * 2,\r\n width: rect.width + delta,\r\n height: rect.height + delta\r\n };\r\n };\r\n var getCorners = function (getYAxisValue, tds) {\r\n return bind(tds, function (td) {\r\n var rect = deflate(td.getBoundingClientRect(), -1);\r\n return [\r\n {\r\n x: rect.left,\r\n y: getYAxisValue(rect),\r\n cell: td\r\n },\r\n {\r\n x: rect.right,\r\n y: getYAxisValue(rect),\r\n cell: td\r\n }\r\n ];\r\n });\r\n };\r\n var findClosestCorner = function (corners, x, y) {\r\n return foldl(corners, function (acc, newCorner) {\r\n return acc.fold(function () {\r\n return Option.some(newCorner);\r\n }, function (oldCorner) {\r\n var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\r\n var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\r\n return Option.some(newDist < oldDist ? newCorner : oldCorner);\r\n });\r\n }, Option.none());\r\n };\r\n var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) {\r\n var cells = $_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(table), 'td,th').map(function (e) {\r\n return e.dom();\r\n });\r\n var corners = filter(getCorners(getYAxisValue, cells), function (corner) {\r\n return isTargetCorner(corner, y);\r\n });\r\n return findClosestCorner(corners, x, y).map(function (corner) {\r\n return corner.cell;\r\n });\r\n };\r\n var getBottomValue = function (rect) {\r\n return rect.bottom;\r\n };\r\n var getTopValue = function (rect) {\r\n return rect.top;\r\n };\r\n var isAbove$1 = function (corner, y) {\r\n return corner.y < y;\r\n };\r\n var isBelow$1 = function (corner, y) {\r\n return corner.y > y;\r\n };\r\n var getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove$1);\r\n var getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow$1);\r\n var findClosestPositionInAboveCell = function (table, pos) {\r\n return head(pos.getClientRects()).bind(function (rect) {\r\n return getClosestCellAbove(table, rect.left, rect.top);\r\n }).bind(function (cell) {\r\n return findClosestHorizontalPosition(getLastLinePositions(cell), pos);\r\n });\r\n };\r\n var findClosestPositionInBelowCell = function (table, pos) {\r\n return last(pos.getClientRects()).bind(function (rect) {\r\n return getClosestCellBelow(table, rect.left, rect.top);\r\n }).bind(function (cell) {\r\n return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);\r\n });\r\n };\r\n\r\n var getPos$1 = function (elm) {\r\n var x = 0, y = 0;\r\n var offsetParent = elm;\r\n while (offsetParent && offsetParent.nodeType) {\r\n x += offsetParent.offsetLeft || 0;\r\n y += offsetParent.offsetTop || 0;\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n };\r\n var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {\r\n var scrollEvent = {\r\n elm: elm,\r\n alignToTop: alignToTop\r\n };\r\n editor.fire('scrollIntoView', scrollEvent);\r\n return scrollEvent.isDefaultPrevented();\r\n };\r\n var scrollElementIntoView = function (editor, elm, alignToTop) {\r\n var y, viewPort;\r\n var dom = editor.dom;\r\n var root = dom.getRoot();\r\n var viewPortY, viewPortH, offsetY = 0;\r\n if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {\r\n return;\r\n }\r\n if (!$_bjermr1rjkmcwkij.isElement(elm)) {\r\n return;\r\n }\r\n if (alignToTop === false) {\r\n offsetY = elm.offsetHeight;\r\n }\r\n if (root.nodeName !== 'BODY') {\r\n var scrollContainer = editor.selection.getScrollContainer();\r\n if (scrollContainer) {\r\n y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;\r\n viewPortH = scrollContainer.clientHeight;\r\n viewPortY = scrollContainer.scrollTop;\r\n if (y < viewPortY || y + 25 > viewPortY + viewPortH) {\r\n scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;\r\n }\r\n return;\r\n }\r\n }\r\n viewPort = dom.getViewPort(editor.getWin());\r\n y = dom.getPos(elm).y + offsetY;\r\n viewPortY = viewPort.y;\r\n viewPortH = viewPort.h;\r\n if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {\r\n editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);\r\n }\r\n };\r\n var getViewPortRect = function (editor) {\r\n if (editor.inline) {\r\n return editor.getBody().getBoundingClientRect();\r\n } else {\r\n var win = editor.getWin();\r\n return {\r\n left: 0,\r\n right: win.innerWidth,\r\n top: 0,\r\n bottom: win.innerHeight,\r\n width: win.innerWidth,\r\n height: win.innerHeight\r\n };\r\n }\r\n };\r\n var scrollBy = function (editor, dx, dy) {\r\n if (editor.inline) {\r\n editor.getBody().scrollLeft += dx;\r\n editor.getBody().scrollTop += dy;\r\n } else {\r\n editor.getWin().scrollBy(dx, dy);\r\n }\r\n };\r\n var scrollRangeIntoView = function (editor, rng) {\r\n head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {\r\n var bodyRect = getViewPortRect(editor);\r\n var overflow = getOverflow(bodyRect, rngRect);\r\n var margin = 4;\r\n var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;\r\n var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;\r\n scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);\r\n });\r\n };\r\n var $_a6610x37jkmcwkt5 = {\r\n scrollElementIntoView: scrollElementIntoView,\r\n scrollRangeIntoView: scrollRangeIntoView\r\n };\r\n\r\n var getBodySetting = function (editor, name, defaultValue) {\r\n var value = editor.getParam(name, defaultValue);\r\n if (value.indexOf('=') !== -1) {\r\n var bodyObj = editor.getParam(name, '', 'hash');\r\n return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;\r\n } else {\r\n return value;\r\n }\r\n };\r\n var getIframeAttrs = function (editor) {\r\n return editor.getParam('iframe_attrs', {});\r\n };\r\n var getDocType = function (editor) {\r\n return editor.getParam('doctype', '');\r\n };\r\n var getDocumentBaseUrl = function (editor) {\r\n return editor.getParam('document_base_url', '');\r\n };\r\n var getBodyId = function (editor) {\r\n return getBodySetting(editor, 'body_id', 'tinymce');\r\n };\r\n var getBodyClass = function (editor) {\r\n return getBodySetting(editor, 'body_class', '');\r\n };\r\n var getContentSecurityPolicy = function (editor) {\r\n return editor.getParam('content_security_policy', '');\r\n };\r\n var shouldPutBrInPre = function (editor) {\r\n return editor.getParam('br_in_pre', true);\r\n };\r\n var getForcedRootBlock = function (editor) {\r\n if (editor.getParam('force_p_newlines', false)) {\r\n return 'p';\r\n }\r\n var block = editor.getParam('forced_root_block', 'p');\r\n return block === false ? '' : block;\r\n };\r\n var getForcedRootBlockAttrs = function (editor) {\r\n return editor.getParam('forced_root_block_attrs', {});\r\n };\r\n var getBrNewLineSelector = function (editor) {\r\n return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');\r\n };\r\n var getNoNewLineSelector = function (editor) {\r\n return editor.getParam('no_newline_selector', '');\r\n };\r\n var shouldKeepStyles = function (editor) {\r\n return editor.getParam('keep_styles', true);\r\n };\r\n var shouldEndContainerOnEmptyBlock = function (editor) {\r\n return editor.getParam('end_container_on_empty_block', false);\r\n };\r\n var getFontStyleValues = function (editor) {\r\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_style_values', ''));\r\n };\r\n var getFontSizeClasses = function (editor) {\r\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_classes', ''));\r\n };\r\n var $_2ycm1438jkmcwkta = {\r\n getIframeAttrs: getIframeAttrs,\r\n getDocType: getDocType,\r\n getDocumentBaseUrl: getDocumentBaseUrl,\r\n getBodyId: getBodyId,\r\n getBodyClass: getBodyClass,\r\n getContentSecurityPolicy: getContentSecurityPolicy,\r\n shouldPutBrInPre: shouldPutBrInPre,\r\n getForcedRootBlock: getForcedRootBlock,\r\n getForcedRootBlockAttrs: getForcedRootBlockAttrs,\r\n getBrNewLineSelector: getBrNewLineSelector,\r\n getNoNewLineSelector: getNoNewLineSelector,\r\n shouldKeepStyles: shouldKeepStyles,\r\n shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,\r\n getFontStyleValues: getFontStyleValues,\r\n getFontSizeClasses: getFontSizeClasses\r\n };\r\n\r\n var browser$2 = $_b1ykk4ojkmcwkcj.detect().browser;\r\n var isFakeCaretTableBrowser = function () {\r\n return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();\r\n };\r\n var moveToRange = function (editor, rng) {\r\n editor.selection.setRng(rng);\r\n $_a6610x37jkmcwkt5.scrollRangeIntoView(editor, rng);\r\n };\r\n var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\r\n var lineInfo = getPositionsUntil(scope, pos);\r\n if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) {\r\n return lineInfo.breakAt.map(function (breakPos) {\r\n return getPositionsUntil(scope, breakPos).breakAt.isNone();\r\n }).getOr(true);\r\n } else {\r\n return lineInfo.breakAt.isNone();\r\n }\r\n };\r\n var isAtFirstTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilPreviousLine);\r\n var isAtLastTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilNextLine);\r\n var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\r\n var caretPos = CaretPosition$1.fromRangeStart(rng);\r\n return $_1m3f3j2yjkmcwkqg.positionIn(!forward, table).map(function (pos) {\r\n return pos.isEqual(caretPos);\r\n }).getOr(false);\r\n };\r\n var navigateHorizontally = function (editor, forward, table, td) {\r\n var rng = editor.selection.getRng();\r\n var direction = forward ? 1 : -1;\r\n if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\r\n var newRng = showCaret(direction, editor, table, !forward, true);\r\n moveToRange(editor, newRng);\r\n return true;\r\n }\r\n return false;\r\n };\r\n var getClosestAbovePosition = function (root, table, start) {\r\n return findClosestPositionInAboveCell(table, start).orThunk(function () {\r\n return head(start.getClientRects()).bind(function (rect) {\r\n return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);\r\n });\r\n }).getOr(CaretPosition$1.before(table));\r\n };\r\n var getClosestBelowPosition = function (root, table, start) {\r\n return findClosestPositionInBelowCell(table, start).orThunk(function () {\r\n return head(start.getClientRects()).bind(function (rect) {\r\n return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);\r\n });\r\n }).getOr(CaretPosition$1.after(table));\r\n };\r\n var getTable = function (previous, pos) {\r\n var node = pos.getNode(previous);\r\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\r\n };\r\n var renderBlock = function (down, editor, table, pos) {\r\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n if (forcedRootBlock) {\r\n editor.undoManager.transact(function () {\r\n var element = Element$$1.fromTag(forcedRootBlock);\r\n $_29helg15jkmcwkf0.setAll(element, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\r\n $_f4qt4v1yjkmcwkl2.append(element, Element$$1.fromTag('br'));\r\n if (down) {\r\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(table), element);\r\n } else {\r\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(table), element);\r\n }\r\n var rng = editor.dom.createRng();\r\n rng.setStart(element.dom(), 0);\r\n rng.setEnd(element.dom(), 0);\r\n moveToRange(editor, rng);\r\n });\r\n } else {\r\n moveToRange(editor, pos.toRange());\r\n }\r\n };\r\n var moveCaret = function (editor, down, pos) {\r\n var table = down ? getTable(true, pos) : getTable(false, pos);\r\n var last$$1 = down === false;\r\n table.fold(function () {\r\n return moveToRange(editor, pos.toRange());\r\n }, function (table) {\r\n return $_1m3f3j2yjkmcwkqg.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {\r\n return lastPos.isEqual(pos);\r\n }).fold(function () {\r\n return moveToRange(editor, pos.toRange());\r\n }, function (_) {\r\n return renderBlock(down, editor, table, pos);\r\n });\r\n });\r\n };\r\n var navigateVertically = function (editor, down, table, td) {\r\n var rng = editor.selection.getRng();\r\n var pos = CaretPosition$1.fromRangeStart(rng);\r\n var root = editor.getBody();\r\n if (!down && isAtFirstTableCellLine(td, pos)) {\r\n var newPos = getClosestAbovePosition(root, table, pos);\r\n moveCaret(editor, down, newPos);\r\n return true;\r\n } else if (down && isAtLastTableCellLine(td, pos)) {\r\n var newPos = getClosestBelowPosition(root, table, pos);\r\n moveCaret(editor, down, newPos);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n var moveH = function (editor, forward) {\r\n return function () {\r\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\r\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\r\n return navigateHorizontally(editor, forward, table, td);\r\n });\r\n }).getOr(false);\r\n };\r\n };\r\n var moveV = function (editor, forward) {\r\n return function () {\r\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\r\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\r\n return navigateVertically(editor, forward, table, td);\r\n });\r\n }).getOr(false);\r\n };\r\n };\r\n\r\n var isContentEditableFalse$5 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isTableCell$1 = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && /^(TD|TH)$/i.test(node.tagName);\r\n };\r\n var getAbsoluteClientRect = function (root, element, before) {\r\n var clientRect = collapse(element.getBoundingClientRect(), before);\r\n var docElm, scrollX, scrollY, margin, rootRect;\r\n if (root.tagName === 'BODY') {\r\n docElm = root.ownerDocument.documentElement;\r\n scrollX = root.scrollLeft || docElm.scrollLeft;\r\n scrollY = root.scrollTop || docElm.scrollTop;\r\n } else {\r\n rootRect = root.getBoundingClientRect();\r\n scrollX = root.scrollLeft - rootRect.left;\r\n scrollY = root.scrollTop - rootRect.top;\r\n }\r\n clientRect.left += scrollX;\r\n clientRect.right += scrollX;\r\n clientRect.top += scrollY;\r\n clientRect.bottom += scrollY;\r\n clientRect.width = 1;\r\n margin = element.offsetWidth - element.clientWidth;\r\n if (margin > 0) {\r\n if (before) {\r\n margin *= -1;\r\n }\r\n clientRect.left += margin;\r\n clientRect.right += margin;\r\n }\r\n return clientRect;\r\n };\r\n var trimInlineCaretContainers = function (root) {\r\n var contentEditableFalseNodes, node, sibling, i, data;\r\n contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root);\r\n for (i = 0; i < contentEditableFalseNodes.length; i++) {\r\n node = contentEditableFalseNodes[i];\r\n sibling = node.previousSibling;\r\n if (endsWithCaretContainer(sibling)) {\r\n data = sibling.data;\r\n if (data.length === 1) {\r\n sibling.parentNode.removeChild(sibling);\r\n } else {\r\n sibling.deleteData(data.length - 1, 1);\r\n }\r\n }\r\n sibling = node.nextSibling;\r\n if (startsWithCaretContainer(sibling)) {\r\n data = sibling.data;\r\n if (data.length === 1) {\r\n sibling.parentNode.removeChild(sibling);\r\n } else {\r\n sibling.deleteData(0, 1);\r\n }\r\n }\r\n }\r\n };\r\n var FakeCaret = function (root, isBlock, hasFocus) {\r\n var lastVisualCaret = Cell(Option.none());\r\n var cursorInterval, caretContainerNode;\r\n var show = function (before, element) {\r\n var clientRect, rng;\r\n hide();\r\n if (isTableCell$1(element)) {\r\n return null;\r\n }\r\n if (isBlock(element)) {\r\n caretContainerNode = insertBlock('p', element, before);\r\n clientRect = getAbsoluteClientRect(root, element, before);\r\n DomQuery(caretContainerNode).css('top', clientRect.top);\r\n var caret = DomQuery('
').css(clientRect).appendTo(root)[0];\r\n lastVisualCaret.set(Option.some({\r\n caret: caret,\r\n element: element,\r\n before: before\r\n }));\r\n lastVisualCaret.get().each(function (caretState) {\r\n if (before) {\r\n DomQuery(caretState.caret).addClass('mce-visual-caret-before');\r\n }\r\n });\r\n startBlink();\r\n rng = element.ownerDocument.createRange();\r\n rng.setStart(caretContainerNode, 0);\r\n rng.setEnd(caretContainerNode, 0);\r\n } else {\r\n caretContainerNode = insertInline(element, before);\r\n rng = element.ownerDocument.createRange();\r\n if (isContentEditableFalse$5(caretContainerNode.nextSibling)) {\r\n rng.setStart(caretContainerNode, 0);\r\n rng.setEnd(caretContainerNode, 0);\r\n } else {\r\n rng.setStart(caretContainerNode, 1);\r\n rng.setEnd(caretContainerNode, 1);\r\n }\r\n return rng;\r\n }\r\n return rng;\r\n };\r\n var hide = function () {\r\n trimInlineCaretContainers(root);\r\n if (caretContainerNode) {\r\n $_xl2r331jkmcwkri.remove(caretContainerNode);\r\n caretContainerNode = null;\r\n }\r\n lastVisualCaret.get().each(function (caretState) {\r\n DomQuery(caretState.caret).remove();\r\n lastVisualCaret.set(Option.none());\r\n });\r\n clearInterval(cursorInterval);\r\n };\r\n var startBlink = function () {\r\n cursorInterval = $_3l01gcijkmcwk99.setInterval(function () {\r\n if (hasFocus()) {\r\n DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden');\r\n } else {\r\n DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden');\r\n }\r\n }, 500);\r\n };\r\n var reposition = function () {\r\n lastVisualCaret.get().each(function (caretState) {\r\n var clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\r\n DomQuery(caretState.caret).css(clientRect);\r\n });\r\n };\r\n var destroy = function () {\r\n return $_3l01gcijkmcwk99.clearInterval(cursorInterval);\r\n };\r\n var getCss = function () {\r\n return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\r\n };\r\n return {\r\n show: show,\r\n hide: hide,\r\n getCss: getCss,\r\n reposition: reposition,\r\n destroy: destroy\r\n };\r\n };\r\n var isFakeCaretTarget = function (node) {\r\n return isContentEditableFalse$5(node) || $_bjermr1rjkmcwkij.isTable(node) && isFakeCaretTableBrowser();\r\n };\r\n\r\n var isContentEditableFalse$6 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isBlockLike = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table table-cell table-caption list-item');\r\n var isCaretContainer$2 = isCaretContainer;\r\n var isCaretContainerBlock$1 = isCaretContainerBlock;\r\n var curry$2 = $_fl2rax2ljkmcwkot.curry;\r\n var isElement$6 = $_bjermr1rjkmcwkij.isElement;\r\n var isCaretCandidate$3 = isCaretCandidate;\r\n var isForwards = function (direction) {\r\n return direction > 0;\r\n };\r\n var isBackwards = function (direction) {\r\n return direction < 0;\r\n };\r\n var skipCaretContainers = function (walk, shallow) {\r\n var node;\r\n while (node = walk(shallow)) {\r\n if (!isCaretContainerBlock$1(node)) {\r\n return node;\r\n }\r\n }\r\n return null;\r\n };\r\n var findNode = function (node, direction, predicateFn, rootNode, shallow) {\r\n var walker = new TreeWalker(node, rootNode);\r\n if (isBackwards(direction)) {\r\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\r\n node = skipCaretContainers(walker.prev, true);\r\n if (predicateFn(node)) {\r\n return node;\r\n }\r\n }\r\n while (node = skipCaretContainers(walker.prev, shallow)) {\r\n if (predicateFn(node)) {\r\n return node;\r\n }\r\n }\r\n }\r\n if (isForwards(direction)) {\r\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\r\n node = skipCaretContainers(walker.next, true);\r\n if (predicateFn(node)) {\r\n return node;\r\n }\r\n }\r\n while (node = skipCaretContainers(walker.next, shallow)) {\r\n if (predicateFn(node)) {\r\n return node;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n var getParentBlock = function (node, rootNode) {\r\n while (node && node !== rootNode) {\r\n if (isBlockLike(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) {\r\n return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode);\r\n };\r\n var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) {\r\n var container, offset;\r\n if (!caretPosition) {\r\n return null;\r\n }\r\n container = caretPosition.container();\r\n offset = caretPosition.offset();\r\n if (!isElement$6(container)) {\r\n return null;\r\n }\r\n return container.childNodes[offset + relativeOffset];\r\n };\r\n var beforeAfter = function (before, node) {\r\n var range = node.ownerDocument.createRange();\r\n if (before) {\r\n range.setStartBefore(node);\r\n range.setEndBefore(node);\r\n } else {\r\n range.setStartAfter(node);\r\n range.setEndAfter(node);\r\n }\r\n return range;\r\n };\r\n var isNodesInSameBlock = function (root, node1, node2) {\r\n return getParentBlock(node1, root) === getParentBlock(node2, root);\r\n };\r\n var lean = function (left, root, node) {\r\n var sibling, siblingName;\r\n if (left) {\r\n siblingName = 'previousSibling';\r\n } else {\r\n siblingName = 'nextSibling';\r\n }\r\n while (node && node !== root) {\r\n sibling = node[siblingName];\r\n if (isCaretContainer$2(sibling)) {\r\n sibling = sibling[siblingName];\r\n }\r\n if (isContentEditableFalse$6(sibling)) {\r\n if (isNodesInSameBlock(root, sibling, node)) {\r\n return sibling;\r\n }\r\n break;\r\n }\r\n if (isCaretCandidate$3(sibling)) {\r\n break;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var before$2 = curry$2(beforeAfter, true);\r\n var after$2 = curry$2(beforeAfter, false);\r\n var normalizeRange = function (direction, root, range) {\r\n var node, container, offset, location;\r\n var leanLeft = curry$2(lean, true, root);\r\n var leanRight = curry$2(lean, false, root);\r\n container = range.startContainer;\r\n offset = range.startOffset;\r\n if (isCaretContainerBlock(container)) {\r\n if (!isElement$6(container)) {\r\n container = container.parentNode;\r\n }\r\n location = container.getAttribute('data-mce-caret');\r\n if (location === 'before') {\r\n node = container.nextSibling;\r\n if (isFakeCaretTarget(node)) {\r\n return before$2(node);\r\n }\r\n }\r\n if (location === 'after') {\r\n node = container.previousSibling;\r\n if (isFakeCaretTarget(node)) {\r\n return after$2(node);\r\n }\r\n }\r\n }\r\n if (!range.collapsed) {\r\n return range;\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(container)) {\r\n if (isCaretContainer$2(container)) {\r\n if (direction === 1) {\r\n node = leanRight(container);\r\n if (node) {\r\n return before$2(node);\r\n }\r\n node = leanLeft(container);\r\n if (node) {\r\n return after$2(node);\r\n }\r\n }\r\n if (direction === -1) {\r\n node = leanLeft(container);\r\n if (node) {\r\n return after$2(node);\r\n }\r\n node = leanRight(container);\r\n if (node) {\r\n return before$2(node);\r\n }\r\n }\r\n return range;\r\n }\r\n if (endsWithCaretContainer(container) && offset >= container.data.length - 1) {\r\n if (direction === 1) {\r\n node = leanRight(container);\r\n if (node) {\r\n return before$2(node);\r\n }\r\n }\r\n return range;\r\n }\r\n if (startsWithCaretContainer(container) && offset <= 1) {\r\n if (direction === -1) {\r\n node = leanLeft(container);\r\n if (node) {\r\n return after$2(node);\r\n }\r\n }\r\n return range;\r\n }\r\n if (offset === container.data.length) {\r\n node = leanRight(container);\r\n if (node) {\r\n return before$2(node);\r\n }\r\n return range;\r\n }\r\n if (offset === 0) {\r\n node = leanLeft(container);\r\n if (node) {\r\n return after$2(node);\r\n }\r\n return range;\r\n }\r\n }\r\n return range;\r\n };\r\n var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {\r\n var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);\r\n return isContentEditableFalse$6(node) && !$_bjermr1rjkmcwkij.isBogusAll(node);\r\n };\r\n var isNextToTable = function (relativeOffset, caretPosition) {\r\n return $_bjermr1rjkmcwkij.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));\r\n };\r\n var getRelativeCefElm = function (forward, caretPosition) {\r\n return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$6);\r\n };\r\n var getNormalizedRangeEndPoint = function (direction, root, range) {\r\n var normalizedRange = normalizeRange(direction, root, range);\r\n if (direction === -1) {\r\n return CaretPosition.fromRangeStart(normalizedRange);\r\n }\r\n return CaretPosition.fromRangeEnd(normalizedRange);\r\n };\r\n var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0);\r\n var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1);\r\n var isBeforeTable = curry$2(isNextToTable, 0);\r\n var isAfterTable = curry$2(isNextToTable, -1);\r\n\r\n var walkToPositionIn = function (forward, root, start) {\r\n var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start);\r\n return fromPosition(forward, root, position);\r\n };\r\n var afterElement = function (node) {\r\n return $_bjermr1rjkmcwkij.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node);\r\n };\r\n var isBeforeOrStart = function (position) {\r\n if (CaretPosition$1.isTextPosition(position)) {\r\n return position.offset() === 0;\r\n } else {\r\n return isCaretCandidate(position.getNode());\r\n }\r\n };\r\n var isAfterOrEnd = function (position) {\r\n if (CaretPosition$1.isTextPosition(position)) {\r\n var container = position.container();\r\n return position.offset() === container.data.length;\r\n } else {\r\n return isCaretCandidate(position.getNode(true));\r\n }\r\n };\r\n var isBeforeAfterSameElement = function (from, to) {\r\n return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true);\r\n };\r\n var isAtBr = function (position) {\r\n return !CaretPosition$1.isTextPosition(position) && $_bjermr1rjkmcwkij.isBr(position.getNode());\r\n };\r\n var shouldSkipPosition = function (forward, from, to) {\r\n if (forward) {\r\n return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\r\n } else {\r\n return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\r\n }\r\n };\r\n var fromPosition = function (forward, root, pos) {\r\n var walker = CaretWalker(root);\r\n return Option.from(forward ? walker.next(pos) : walker.prev(pos));\r\n };\r\n var navigate = function (forward, root, from) {\r\n return fromPosition(forward, root, from).bind(function (to) {\r\n if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\r\n return fromPosition(forward, root, to);\r\n } else {\r\n return Option.some(to);\r\n }\r\n });\r\n };\r\n var positionIn = function (forward, element) {\r\n var startNode = forward ? element.firstChild : element.lastChild;\r\n if ($_bjermr1rjkmcwkij.isText(startNode)) {\r\n return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length));\r\n } else if (startNode) {\r\n if (isCaretCandidate(startNode)) {\r\n return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode));\r\n } else {\r\n return walkToPositionIn(forward, element, startNode);\r\n }\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var $_1m3f3j2yjkmcwkqg = {\r\n fromPosition: fromPosition,\r\n nextPosition: curry(fromPosition, true),\r\n prevPosition: curry(fromPosition, false),\r\n navigate: navigate,\r\n positionIn: positionIn,\r\n firstPositionIn: curry(positionIn, true),\r\n lastPositionIn: curry(positionIn, false)\r\n };\r\n\r\n var isStringPathBookmark = function (bookmark) {\r\n return typeof bookmark.start === 'string';\r\n };\r\n var isRangeBookmark = function (bookmark) {\r\n return bookmark.hasOwnProperty('rng');\r\n };\r\n var isIdBookmark = function (bookmark) {\r\n return bookmark.hasOwnProperty('id');\r\n };\r\n var isIndexBookmark = function (bookmark) {\r\n return bookmark.hasOwnProperty('name');\r\n };\r\n var isPathBookmark = function (bookmark) {\r\n return $_4ujg4tljkmcwkbk.isArray(bookmark.start);\r\n };\r\n\r\n var addBogus = function (dom, node) {\r\n if (dom.isBlock(node) && !node.innerHTML && !$_cvvl9iajkmcwk25.ie) {\r\n node.innerHTML = '
';\r\n }\r\n return node;\r\n };\r\n var resolveCaretPositionBookmark = function (dom, bookmark) {\r\n var rng, pos;\r\n rng = dom.createRng();\r\n pos = resolve$2(dom.getRoot(), bookmark.start);\r\n rng.setStart(pos.container(), pos.offset());\r\n pos = resolve$2(dom.getRoot(), bookmark.end);\r\n rng.setEnd(pos.container(), pos.offset());\r\n return rng;\r\n };\r\n var insertZwsp = function (node, rng) {\r\n var textNode = node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\r\n node.appendChild(textNode);\r\n rng.setStart(textNode, 0);\r\n rng.setEnd(textNode, 0);\r\n };\r\n var isEmpty = function (node) {\r\n return node.hasChildNodes() === false;\r\n };\r\n var tryFindRangePosition = function (node, rng) {\r\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(node).fold(function () {\r\n return false;\r\n }, function (pos) {\r\n rng.setStart(pos.container(), pos.offset());\r\n rng.setEnd(pos.container(), pos.offset());\r\n return true;\r\n });\r\n };\r\n var padEmptyCaretContainer = function (root, node, rng) {\r\n if (isEmpty(node) && getParentCaretContainer(root, node)) {\r\n insertZwsp(node, rng);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n var setEndPoint = function (dom, start, bookmark, rng) {\r\n var point = bookmark[start ? 'start' : 'end'];\r\n var i, node, offset, children;\r\n var root = dom.getRoot();\r\n if (point) {\r\n offset = point[0];\r\n for (node = root, i = point.length - 1; i >= 1; i--) {\r\n children = node.childNodes;\r\n if (padEmptyCaretContainer(root, node, rng)) {\r\n return true;\r\n }\r\n if (point[i] > children.length - 1) {\r\n if (padEmptyCaretContainer(root, node, rng)) {\r\n return true;\r\n }\r\n return tryFindRangePosition(node, rng);\r\n }\r\n node = children[point[i]];\r\n }\r\n if (node.nodeType === 3) {\r\n offset = Math.min(point[0], node.nodeValue.length);\r\n }\r\n if (node.nodeType === 1) {\r\n offset = Math.min(point[0], node.childNodes.length);\r\n }\r\n if (start) {\r\n rng.setStart(node, offset);\r\n } else {\r\n rng.setEnd(node, offset);\r\n }\r\n }\r\n return true;\r\n };\r\n var isValidTextNode = function (node) {\r\n return $_bjermr1rjkmcwkij.isText(node) && node.data.length > 0;\r\n };\r\n var restoreEndPoint = function (dom, suffix, bookmark) {\r\n var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev;\r\n var keep = bookmark.keep;\r\n var container, offset;\r\n if (marker) {\r\n node = marker.parentNode;\r\n if (suffix === 'start') {\r\n if (!keep) {\r\n idx = dom.nodeIndex(marker);\r\n } else {\r\n if (marker.hasChildNodes()) {\r\n node = marker.firstChild;\r\n idx = 1;\r\n } else if (isValidTextNode(marker.nextSibling)) {\r\n node = marker.nextSibling;\r\n idx = 0;\r\n } else if (isValidTextNode(marker.previousSibling)) {\r\n node = marker.previousSibling;\r\n idx = marker.previousSibling.data.length;\r\n } else {\r\n node = marker.parentNode;\r\n idx = dom.nodeIndex(marker) + 1;\r\n }\r\n }\r\n container = node;\r\n offset = idx;\r\n } else {\r\n if (!keep) {\r\n idx = dom.nodeIndex(marker);\r\n } else {\r\n if (marker.hasChildNodes()) {\r\n node = marker.firstChild;\r\n idx = 1;\r\n } else if (isValidTextNode(marker.previousSibling)) {\r\n node = marker.previousSibling;\r\n idx = marker.previousSibling.data.length;\r\n } else {\r\n node = marker.parentNode;\r\n idx = dom.nodeIndex(marker);\r\n }\r\n }\r\n container = node;\r\n offset = idx;\r\n }\r\n if (!keep) {\r\n prev = marker.previousSibling;\r\n next = marker.nextSibling;\r\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(marker.childNodes), function (node) {\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n node.nodeValue = node.nodeValue.replace(/\\uFEFF/g, '');\r\n }\r\n });\r\n while (marker = dom.get(bookmark.id + '_' + suffix)) {\r\n dom.remove(marker, true);\r\n }\r\n if (prev && next && prev.nodeType === next.nodeType && $_bjermr1rjkmcwkij.isText(prev) && !$_cvvl9iajkmcwk25.opera) {\r\n idx = prev.nodeValue.length;\r\n prev.appendData(next.nodeValue);\r\n dom.remove(next);\r\n if (suffix === 'start') {\r\n container = prev;\r\n offset = idx;\r\n } else {\r\n container = prev;\r\n offset = idx;\r\n }\r\n }\r\n }\r\n return Option.some(CaretPosition$1(container, offset));\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var alt = function (o1, o2) {\r\n return o1.isSome() ? o1 : o2;\r\n };\r\n var resolvePaths = function (dom, bookmark) {\r\n var rng = dom.createRng();\r\n if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) {\r\n return Option.some(rng);\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var resolveId = function (dom, bookmark) {\r\n var startPos = restoreEndPoint(dom, 'start', bookmark);\r\n var endPos = restoreEndPoint(dom, 'end', bookmark);\r\n return liftN([\r\n startPos,\r\n alt(endPos, startPos)\r\n ], function (spos, epos) {\r\n var rng = dom.createRng();\r\n rng.setStart(addBogus(dom, spos.container()), spos.offset());\r\n rng.setEnd(addBogus(dom, epos.container()), epos.offset());\r\n return rng;\r\n });\r\n };\r\n var resolveIndex$1 = function (dom, bookmark) {\r\n return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) {\r\n var rng = dom.createRng();\r\n rng.selectNode(elm);\r\n return rng;\r\n });\r\n };\r\n var resolve$3 = function (selection, bookmark) {\r\n var dom = selection.dom;\r\n if (bookmark) {\r\n if (isPathBookmark(bookmark)) {\r\n return resolvePaths(dom, bookmark);\r\n } else if (isStringPathBookmark(bookmark)) {\r\n return Option.some(resolveCaretPositionBookmark(dom, bookmark));\r\n } else if (isIdBookmark(bookmark)) {\r\n return resolveId(dom, bookmark);\r\n } else if (isIndexBookmark(bookmark)) {\r\n return resolveIndex$1(dom, bookmark);\r\n } else if (isRangeBookmark(bookmark)) {\r\n return Option.some(bookmark.rng);\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var $_1fx23n2wjkmcwkq6 = { resolve: resolve$3 };\r\n\r\n var getBookmark$1 = function (selection, type, normalized) {\r\n return $_aw3zi52jjkmcwkoa.getBookmark(selection, type, normalized);\r\n };\r\n var moveToBookmark = function (selection, bookmark) {\r\n $_1fx23n2wjkmcwkq6.resolve(selection, bookmark).each(function (rng) {\r\n selection.setRng(rng);\r\n });\r\n };\r\n var isBookmarkNode$1 = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\r\n };\r\n var $_e4btcc2vjkmcwkq3 = {\r\n getBookmark: getBookmark$1,\r\n moveToBookmark: moveToBookmark,\r\n isBookmarkNode: isBookmarkNode$1\r\n };\r\n\r\n var isInlineBlock = function (node) {\r\n return node && /^(IMG)$/.test(node.nodeName);\r\n };\r\n var moveStart = function (dom, selection, rng) {\r\n var offset = rng.startOffset;\r\n var container = rng.startContainer, walker, node, nodes;\r\n if (rng.startContainer === rng.endContainer) {\r\n if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) {\r\n return;\r\n }\r\n }\r\n if (container.nodeType === 1) {\r\n nodes = container.childNodes;\r\n if (offset < nodes.length) {\r\n container = nodes[offset];\r\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\r\n } else {\r\n container = nodes[nodes.length - 1];\r\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\r\n walker.next(true);\r\n }\r\n for (node = walker.current(); node; node = walker.next()) {\r\n if (node.nodeType === 3 && !isWhiteSpaceNode(node)) {\r\n rng.setStart(node, 0);\r\n selection.setRng(rng);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n var getNonWhiteSpaceSibling = function (node, next, inc) {\r\n if (node) {\r\n next = next ? 'nextSibling' : 'previousSibling';\r\n for (node = inc ? node : node[next]; node; node = node[next]) {\r\n if (node.nodeType === 1 || !isWhiteSpaceNode(node)) {\r\n return node;\r\n }\r\n }\r\n }\r\n };\r\n var isTextBlock$1 = function (editor, name) {\r\n if (name.nodeType) {\r\n name = name.nodeName;\r\n }\r\n return !!editor.schema.getTextBlockElements()[name.toLowerCase()];\r\n };\r\n var isValid = function (ed, parent, child) {\r\n return ed.schema.isValidChild(parent, child);\r\n };\r\n var isWhiteSpaceNode = function (node) {\r\n return node && node.nodeType === 3 && /^([\\t \\r\\n]+|)$/.test(node.nodeValue);\r\n };\r\n var replaceVars = function (value, vars) {\r\n if (typeof value !== 'string') {\r\n value = value(vars);\r\n } else if (vars) {\r\n value = value.replace(/%(\\w+)/g, function (str, name) {\r\n return vars[name] || str;\r\n });\r\n }\r\n return value;\r\n };\r\n var isEq = function (str1, str2) {\r\n str1 = str1 || '';\r\n str2 = str2 || '';\r\n str1 = '' + (str1.nodeName || str1);\r\n str2 = '' + (str2.nodeName || str2);\r\n return str1.toLowerCase() === str2.toLowerCase();\r\n };\r\n var normalizeStyleValue = function (dom, value, name) {\r\n if (name === 'color' || name === 'backgroundColor') {\r\n value = dom.toHex(value);\r\n }\r\n if (name === 'fontWeight' && value === 700) {\r\n value = 'bold';\r\n }\r\n if (name === 'fontFamily') {\r\n value = value.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\r\n }\r\n return '' + value;\r\n };\r\n var getStyle = function (dom, node, name) {\r\n return normalizeStyleValue(dom, dom.getStyle(node, name), name);\r\n };\r\n var getTextDecoration = function (dom, node) {\r\n var decoration;\r\n dom.getParent(node, function (n) {\r\n decoration = dom.getStyle(n, 'text-decoration');\r\n return decoration && decoration !== 'none';\r\n });\r\n return decoration;\r\n };\r\n var getParents$1 = function (dom, node, selector) {\r\n return dom.getParents(node, selector, dom.getRoot());\r\n };\r\n var $_dli08w3ajkmcwktg = {\r\n isInlineBlock: isInlineBlock,\r\n moveStart: moveStart,\r\n getNonWhiteSpaceSibling: getNonWhiteSpaceSibling,\r\n isTextBlock: isTextBlock$1,\r\n isValid: isValid,\r\n isWhiteSpaceNode: isWhiteSpaceNode,\r\n replaceVars: replaceVars,\r\n isEq: isEq,\r\n normalizeStyleValue: normalizeStyleValue,\r\n getStyle: getStyle,\r\n getTextDecoration: getTextDecoration,\r\n getParents: getParents$1\r\n };\r\n\r\n var isBookmarkNode$2 = $_e4btcc2vjkmcwkq3.isBookmarkNode;\r\n var getParents$2 = $_dli08w3ajkmcwktg.getParents;\r\n var isWhiteSpaceNode$1 = $_dli08w3ajkmcwktg.isWhiteSpaceNode;\r\n var isTextBlock$2 = $_dli08w3ajkmcwktg.isTextBlock;\r\n var findLeaf = function (node, offset) {\r\n if (typeof offset === 'undefined') {\r\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r\n }\r\n while (node && node.hasChildNodes()) {\r\n node = node.childNodes[offset];\r\n if (node) {\r\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r\n }\r\n }\r\n return {\r\n node: node,\r\n offset: offset\r\n };\r\n };\r\n var excludeTrailingWhitespace = function (endContainer, endOffset) {\r\n var leaf = findLeaf(endContainer, endOffset);\r\n if (leaf.node) {\r\n while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {\r\n leaf = findLeaf(leaf.node.previousSibling);\r\n }\r\n if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\r\n if (leaf.offset > 1) {\r\n endContainer = leaf.node;\r\n endContainer.splitText(leaf.offset - 1);\r\n }\r\n }\r\n }\r\n return endContainer;\r\n };\r\n var isBogusBr = function (node) {\r\n return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling;\r\n };\r\n var findParentContentEditable = function (dom, node) {\r\n var parent = node;\r\n while (parent) {\r\n if (parent.nodeType === 1 && dom.getContentEditable(parent)) {\r\n return dom.getContentEditable(parent) === 'false' ? parent : node;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return node;\r\n };\r\n var findSpace = function (start, remove, node, offset) {\r\n var pos, pos2;\r\n var str = node.nodeValue;\r\n if (typeof offset === 'undefined') {\r\n offset = start ? str.length : 0;\r\n }\r\n if (start) {\r\n pos = str.lastIndexOf(' ', offset);\r\n pos2 = str.lastIndexOf('\\xA0', offset);\r\n pos = pos > pos2 ? pos : pos2;\r\n if (pos !== -1 && !remove) {\r\n pos++;\r\n }\r\n } else {\r\n pos = str.indexOf(' ', offset);\r\n pos2 = str.indexOf('\\xA0', offset);\r\n pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;\r\n }\r\n return pos;\r\n };\r\n var findWordEndPoint = function (dom, body, container, offset, start, remove) {\r\n var walker, node, pos, lastTextNode;\r\n if (container.nodeType === 3) {\r\n pos = findSpace(start, remove, container, offset);\r\n if (pos !== -1) {\r\n return {\r\n container: container,\r\n offset: pos\r\n };\r\n }\r\n lastTextNode = container;\r\n }\r\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body);\r\n while (node = walker[start ? 'prev' : 'next']()) {\r\n if (node.nodeType === 3) {\r\n lastTextNode = node;\r\n pos = findSpace(start, remove, node);\r\n if (pos !== -1) {\r\n return {\r\n container: node,\r\n offset: pos\r\n };\r\n }\r\n } else if (dom.isBlock(node)) {\r\n break;\r\n }\r\n }\r\n if (lastTextNode) {\r\n if (start) {\r\n offset = 0;\r\n } else {\r\n offset = lastTextNode.length;\r\n }\r\n return {\r\n container: lastTextNode,\r\n offset: offset\r\n };\r\n }\r\n };\r\n var findSelectorEndPoint = function (dom, format, rng, container, siblingName) {\r\n var parents, i, y, curFormat;\r\n if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) {\r\n container = container[siblingName];\r\n }\r\n parents = getParents$2(dom, container);\r\n for (i = 0; i < parents.length; i++) {\r\n for (y = 0; y < format.length; y++) {\r\n curFormat = format[y];\r\n if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) {\r\n continue;\r\n }\r\n if (dom.is(parents[i], curFormat.selector)) {\r\n return parents[i];\r\n }\r\n }\r\n }\r\n return container;\r\n };\r\n var findBlockEndPoint = function (editor, format, container, siblingName) {\r\n var node;\r\n var dom = editor.dom;\r\n var root = dom.getRoot();\r\n if (!format[0].wrapper) {\r\n node = dom.getParent(container, format[0].block, root);\r\n }\r\n if (!node) {\r\n var scopeRoot = dom.getParent(container, 'LI,TD,TH');\r\n node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) {\r\n return node !== root && isTextBlock$2(editor, node);\r\n }, scopeRoot);\r\n }\r\n if (node && format[0].wrapper) {\r\n node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node;\r\n }\r\n if (!node) {\r\n node = container;\r\n while (node[siblingName] && !dom.isBlock(node[siblingName])) {\r\n node = node[siblingName];\r\n if ($_dli08w3ajkmcwktg.isEq(node, 'br')) {\r\n break;\r\n }\r\n }\r\n }\r\n return node || container;\r\n };\r\n var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) {\r\n var container, parent, sibling, siblingName, root;\r\n container = parent = start ? startContainer : endContainer;\r\n siblingName = start ? 'previousSibling' : 'nextSibling';\r\n root = dom.getRoot();\r\n if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) {\r\n if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {\r\n return container;\r\n }\r\n }\r\n while (true) {\r\n if (!format[0].block_expand && dom.isBlock(parent)) {\r\n return parent;\r\n }\r\n for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\r\n if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) {\r\n return parent;\r\n }\r\n }\r\n if (parent === root || parent.parentNode === root) {\r\n container = parent;\r\n break;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return container;\r\n };\r\n var expandRng = function (editor, rng, format, remove) {\r\n var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\r\n var dom = editor.dom;\r\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\r\n startContainer = getNode(startContainer, startOffset);\r\n if (startContainer.nodeType === 3) {\r\n startOffset = 0;\r\n }\r\n }\r\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\r\n endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1);\r\n if (endContainer.nodeType === 3) {\r\n endOffset = endContainer.nodeValue.length;\r\n }\r\n }\r\n startContainer = findParentContentEditable(dom, startContainer);\r\n endContainer = findParentContentEditable(dom, endContainer);\r\n if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) {\r\n startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode;\r\n startContainer = startContainer.nextSibling || startContainer;\r\n if (startContainer.nodeType === 3) {\r\n startOffset = 0;\r\n }\r\n }\r\n if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {\r\n endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;\r\n endContainer = endContainer.previousSibling || endContainer;\r\n if (endContainer.nodeType === 3) {\r\n endOffset = endContainer.length;\r\n }\r\n }\r\n if (format[0].inline) {\r\n if (rng.collapsed) {\r\n endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove);\r\n if (endPoint) {\r\n startContainer = endPoint.container;\r\n startOffset = endPoint.offset;\r\n }\r\n endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove);\r\n if (endPoint) {\r\n endContainer = endPoint.container;\r\n endOffset = endPoint.offset;\r\n }\r\n }\r\n endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset);\r\n }\r\n if (format[0].inline || format[0].block_expand) {\r\n if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) {\r\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\r\n }\r\n if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) {\r\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\r\n }\r\n }\r\n if (format[0].selector && format[0].expand !== false && !format[0].inline) {\r\n startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling');\r\n endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling');\r\n }\r\n if (format[0].block || format[0].selector) {\r\n startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling');\r\n endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling');\r\n if (format[0].block) {\r\n if (!dom.isBlock(startContainer)) {\r\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\r\n }\r\n if (!dom.isBlock(endContainer)) {\r\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\r\n }\r\n }\r\n }\r\n if (startContainer.nodeType === 1) {\r\n startOffset = dom.nodeIndex(startContainer);\r\n startContainer = startContainer.parentNode;\r\n }\r\n if (endContainer.nodeType === 1) {\r\n endOffset = dom.nodeIndex(endContainer) + 1;\r\n endContainer = endContainer.parentNode;\r\n }\r\n return {\r\n startContainer: startContainer,\r\n startOffset: startOffset,\r\n endContainer: endContainer,\r\n endOffset: endOffset\r\n };\r\n };\r\n var $_97afwh2ujkmcwkpw = { expandRng: expandRng };\r\n\r\n var each$8 = $_4ujg4tljkmcwkbk.each;\r\n var getEndChild = function (container, index) {\r\n var childNodes = container.childNodes;\r\n index--;\r\n if (index > childNodes.length - 1) {\r\n index = childNodes.length - 1;\r\n } else if (index < 0) {\r\n index = 0;\r\n }\r\n return childNodes[index] || container;\r\n };\r\n var walk$2 = function (dom, rng, callback) {\r\n var startContainer = rng.startContainer;\r\n var startOffset = rng.startOffset;\r\n var endContainer = rng.endContainer;\r\n var endOffset = rng.endOffset;\r\n var ancestor;\r\n var startPoint;\r\n var endPoint;\r\n var node;\r\n var parent;\r\n var siblings;\r\n var nodes;\r\n nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');\r\n if (nodes.length > 0) {\r\n each$8(nodes, function (node) {\r\n callback([node]);\r\n });\r\n return;\r\n }\r\n var exclude = function (nodes) {\r\n var node;\r\n node = nodes[0];\r\n if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {\r\n nodes.splice(0, 1);\r\n }\r\n node = nodes[nodes.length - 1];\r\n if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {\r\n nodes.splice(nodes.length - 1, 1);\r\n }\r\n return nodes;\r\n };\r\n var collectSiblings = function (node, name, endNode) {\r\n var siblings = [];\r\n for (; node && node !== endNode; node = node[name]) {\r\n siblings.push(node);\r\n }\r\n return siblings;\r\n };\r\n var findEndPoint = function (node, root) {\r\n do {\r\n if (node.parentNode === root) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n } while (node);\r\n };\r\n var walkBoundary = function (startNode, endNode, next) {\r\n var siblingName = next ? 'nextSibling' : 'previousSibling';\r\n for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\r\n parent = node.parentNode;\r\n siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\r\n if (siblings.length) {\r\n if (!next) {\r\n siblings.reverse();\r\n }\r\n callback(exclude(siblings));\r\n }\r\n }\r\n };\r\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\r\n startContainer = startContainer.childNodes[startOffset];\r\n }\r\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\r\n endContainer = getEndChild(endContainer, endOffset);\r\n }\r\n if (startContainer === endContainer) {\r\n return callback(exclude([startContainer]));\r\n }\r\n ancestor = dom.findCommonAncestor(startContainer, endContainer);\r\n for (node = startContainer; node; node = node.parentNode) {\r\n if (node === endContainer) {\r\n return walkBoundary(startContainer, ancestor, true);\r\n }\r\n if (node === ancestor) {\r\n break;\r\n }\r\n }\r\n for (node = endContainer; node; node = node.parentNode) {\r\n if (node === startContainer) {\r\n return walkBoundary(endContainer, ancestor);\r\n }\r\n if (node === ancestor) {\r\n break;\r\n }\r\n }\r\n startPoint = findEndPoint(startContainer, ancestor) || startContainer;\r\n endPoint = findEndPoint(endContainer, ancestor) || endContainer;\r\n walkBoundary(startContainer, startPoint, true);\r\n siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\r\n if (siblings.length) {\r\n callback(exclude(siblings));\r\n }\r\n walkBoundary(endContainer, endPoint);\r\n };\r\n var $_cuckrv3bjkmcwktk = { walk: walk$2 };\r\n\r\n var zeroWidth = function () {\r\n return '\\uFEFF';\r\n };\r\n\r\n function NodeValue (is, name) {\r\n var get = function (element) {\r\n if (!is(element))\r\n throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\r\n return getOption(element).getOr('');\r\n };\r\n var getOptionIE10 = function (element) {\r\n try {\r\n return getOptionSafe(element);\r\n } catch (e) {\r\n return Option.none();\r\n }\r\n };\r\n var getOptionSafe = function (element) {\r\n return is(element) ? Option.from(element.dom().nodeValue) : Option.none();\r\n };\r\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\r\n var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;\r\n var set = function (element, value) {\r\n if (!is(element))\r\n throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\r\n element.dom().nodeValue = value;\r\n };\r\n return {\r\n get: get,\r\n getOption: getOption,\r\n set: set\r\n };\r\n }\r\n\r\n var api = NodeValue($_2xwdjv11jkmcwke0.isText, 'text');\r\n var get$4 = function (element) {\r\n return api.get(element);\r\n };\r\n var getOption = function (element) {\r\n return api.getOption(element);\r\n };\r\n var set$2 = function (element, value) {\r\n api.set(element, value);\r\n };\r\n var $_ckzc193ejkmcwktu = {\r\n get: get$4,\r\n getOption: getOption,\r\n set: set$2\r\n };\r\n\r\n var isZeroWidth = function (elem) {\r\n return $_2xwdjv11jkmcwke0.isText(elem) && $_ckzc193ejkmcwktu.get(elem) === zeroWidth();\r\n };\r\n var context = function (editor, elem, wrapName, nodeName) {\r\n return $_ca6pc118jkmcwkfs.parent(elem).fold(function () {\r\n return 'skipping';\r\n }, function (parent) {\r\n if (nodeName === 'br' || isZeroWidth(elem)) {\r\n return 'skipping';\r\n } else if (isAnnotation(elem)) {\r\n return 'existing';\r\n } else if (isCaretNode(elem)) {\r\n return 'caret';\r\n } else if (!$_dli08w3ajkmcwktg.isValid(editor, wrapName, nodeName) || !$_dli08w3ajkmcwktg.isValid(editor, $_2xwdjv11jkmcwke0.name(parent), wrapName)) {\r\n return 'invalid-child';\r\n } else {\r\n return 'valid';\r\n }\r\n });\r\n };\r\n\r\n var __rest = undefined && undefined.__rest || function (s, e) {\r\n var t = {};\r\n for (var p in s)\r\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === 'function')\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)\r\n if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n };\r\n var applyWordGrab = function (editor, rng) {\r\n var r = $_97afwh2ujkmcwkpw.expandRng(editor, rng, [{ inline: true }], false);\r\n rng.setStart(r.startContainer, r.startOffset);\r\n rng.setEnd(r.endContainer, r.endOffset);\r\n editor.selection.setRng(rng);\r\n };\r\n var annotate = function (editor, rng, annotationName, decorate, _a) {\r\n var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);\r\n var newWrappers = [];\r\n var master = Element$$1.fromTag('span');\r\n $_ftm4v023jkmcwklz.add(master, annotation());\r\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotationId(), uid);\r\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotation(), annotationName);\r\n var _c = decorate(uid, data), _d = _c.attributes, attributes = _d === void 0 ? {} : _d, _e = _c.classes, classes = _e === void 0 ? [] : _e;\r\n $_29helg15jkmcwkf0.setAll(master, attributes);\r\n $_dw1myr2hjkmcwko1.add(master, classes);\r\n var wrapper = Cell(Option.none());\r\n var finishWrapper = function () {\r\n wrapper.set(Option.none());\r\n };\r\n var getOrOpenWrapper = function () {\r\n return wrapper.get().getOrThunk(function () {\r\n var nu = $_44uvy22ijkmcwko5.shallow(master);\r\n newWrappers.push(nu);\r\n wrapper.set(Option.some(nu));\r\n return nu;\r\n });\r\n };\r\n var processElements = function (elems) {\r\n each(elems, processElement);\r\n };\r\n var processElement = function (elem) {\r\n var ctx = context(editor, elem, 'span', $_2xwdjv11jkmcwke0.name(elem));\r\n switch (ctx) {\r\n case 'invalid-child': {\r\n finishWrapper();\r\n var children = $_ca6pc118jkmcwkfs.children(elem);\r\n processElements(children);\r\n finishWrapper();\r\n break;\r\n }\r\n case 'valid': {\r\n var w = getOrOpenWrapper();\r\n $_f4qt4v1yjkmcwkl2.wrap(elem, w);\r\n break;\r\n }\r\n case 'skipping':\r\n case 'existing':\r\n case 'caret': \r\n }\r\n };\r\n var processNodes = function (nodes) {\r\n var elems = map(nodes, Element$$1.fromDom);\r\n processElements(elems);\r\n };\r\n $_cuckrv3bjkmcwktk.walk(editor.dom, rng, function (nodes) {\r\n finishWrapper();\r\n processNodes(nodes);\r\n });\r\n return newWrappers;\r\n };\r\n var annotateWithBookmark = function (editor, name, settings, data) {\r\n editor.undoManager.transact(function () {\r\n var initialRng = editor.selection.getRng();\r\n if (initialRng.collapsed) {\r\n applyWordGrab(editor, initialRng);\r\n }\r\n var bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(editor.selection, true);\r\n var rng = editor.selection.getRng();\r\n annotate(editor, rng, name, settings.decorate, data);\r\n editor.selection.moveToBookmark(bookmark);\r\n });\r\n };\r\n\r\n function Annotator (editor) {\r\n var registry = create$1();\r\n setup$1(editor, registry);\r\n var changes = setup(editor, registry);\r\n return {\r\n register: function (name, settings) {\r\n registry.register(name, settings);\r\n },\r\n annotate: function (name, data) {\r\n registry.lookup(name).each(function (settings) {\r\n annotateWithBookmark(editor, name, settings, data);\r\n });\r\n },\r\n annotationChanged: function (name, callback) {\r\n changes.addListener(name, callback);\r\n },\r\n remove: function (name) {\r\n identify(editor, Option.some(name)).each(function (_a) {\r\n var elements = _a.elements;\r\n each(elements, $_eualm21wjkmcwkku.unwrap);\r\n });\r\n },\r\n getAll: function (name) {\r\n var directory = findAll(editor, name);\r\n return map$2(directory, function (elems) {\r\n return map(elems, function (elem) {\r\n return elem.dom();\r\n });\r\n });\r\n }\r\n };\r\n }\r\n\r\n var hasOnlyOneChild = function (node) {\r\n return node.firstChild && node.firstChild === node.lastChild;\r\n };\r\n var isPaddingNode = function (node) {\r\n return node.name === 'br' || node.value === '\\xA0';\r\n };\r\n var isPaddedEmptyBlock = function (schema, node) {\r\n var blockElements = schema.getBlockElements();\r\n return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild);\r\n };\r\n var isEmptyFragmentElement = function (schema, node) {\r\n var nonEmptyElements = schema.getNonEmptyElements();\r\n return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\r\n };\r\n var isListFragment = function (schema, fragment) {\r\n var firstChild = fragment.firstChild;\r\n var lastChild = fragment.lastChild;\r\n if (firstChild && firstChild.name === 'meta') {\r\n firstChild = firstChild.next;\r\n }\r\n if (lastChild && lastChild.attr('id') === 'mce_marker') {\r\n lastChild = lastChild.prev;\r\n }\r\n if (isEmptyFragmentElement(schema, lastChild)) {\r\n lastChild = lastChild.prev;\r\n }\r\n if (!firstChild || firstChild !== lastChild) {\r\n return false;\r\n }\r\n return firstChild.name === 'ul' || firstChild.name === 'ol';\r\n };\r\n var cleanupDomFragment = function (domFragment) {\r\n var firstChild = domFragment.firstChild;\r\n var lastChild = domFragment.lastChild;\r\n if (firstChild && firstChild.nodeName === 'META') {\r\n firstChild.parentNode.removeChild(firstChild);\r\n }\r\n if (lastChild && lastChild.id === 'mce_marker') {\r\n lastChild.parentNode.removeChild(lastChild);\r\n }\r\n return domFragment;\r\n };\r\n var toDomFragment = function (dom, serializer, fragment) {\r\n var html = serializer.serialize(fragment);\r\n var domFragment = dom.createFragment(html);\r\n return cleanupDomFragment(domFragment);\r\n };\r\n var listItems$1 = function (elm) {\r\n return $_4ujg4tljkmcwkbk.grep(elm.childNodes, function (child) {\r\n return child.nodeName === 'LI';\r\n });\r\n };\r\n var isPadding = function (node) {\r\n return node.data === '\\xA0' || $_bjermr1rjkmcwkij.isBr(node);\r\n };\r\n var isListItemPadded = function (node) {\r\n return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild);\r\n };\r\n var isEmptyOrPadded = function (elm) {\r\n return !elm.firstChild || isListItemPadded(elm);\r\n };\r\n var trimListItems = function (elms) {\r\n return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\r\n };\r\n var getParentLi = function (dom, node) {\r\n var parentBlock = dom.getParent(node, dom.isBlock);\r\n return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\r\n };\r\n var isParentBlockLi = function (dom, node) {\r\n return !!getParentLi(dom, node);\r\n };\r\n var getSplit = function (parentNode, rng) {\r\n var beforeRng = rng.cloneRange();\r\n var afterRng = rng.cloneRange();\r\n beforeRng.setStartBefore(parentNode);\r\n afterRng.setEndAfter(parentNode);\r\n return [\r\n beforeRng.cloneContents(),\r\n afterRng.cloneContents()\r\n ];\r\n };\r\n var findFirstIn = function (node, rootNode) {\r\n var caretPos = CaretPosition$1.before(node);\r\n var caretWalker = CaretWalker(rootNode);\r\n var newCaretPos = caretWalker.next(caretPos);\r\n return newCaretPos ? newCaretPos.toRange() : null;\r\n };\r\n var findLastOf = function (node, rootNode) {\r\n var caretPos = CaretPosition$1.after(node);\r\n var caretWalker = CaretWalker(rootNode);\r\n var newCaretPos = caretWalker.prev(caretPos);\r\n return newCaretPos ? newCaretPos.toRange() : null;\r\n };\r\n var insertMiddle = function (target, elms, rootNode, rng) {\r\n var parts = getSplit(target, rng);\r\n var parentElm = target.parentNode;\r\n parentElm.insertBefore(parts[0], target);\r\n $_4ujg4tljkmcwkbk.each(elms, function (li) {\r\n parentElm.insertBefore(li, target);\r\n });\r\n parentElm.insertBefore(parts[1], target);\r\n parentElm.removeChild(target);\r\n return findLastOf(elms[elms.length - 1], rootNode);\r\n };\r\n var insertBefore = function (target, elms, rootNode) {\r\n var parentElm = target.parentNode;\r\n $_4ujg4tljkmcwkbk.each(elms, function (elm) {\r\n parentElm.insertBefore(elm, target);\r\n });\r\n return findFirstIn(target, rootNode);\r\n };\r\n var insertAfter = function (target, elms, rootNode, dom) {\r\n dom.insertAfter(elms.reverse(), target);\r\n return findLastOf(elms[0], rootNode);\r\n };\r\n var insertAtCaret = function (serializer, dom, rng, fragment) {\r\n var domFragment = toDomFragment(dom, serializer, fragment);\r\n var liTarget = getParentLi(dom, rng.startContainer);\r\n var liElms = trimListItems(listItems$1(domFragment.firstChild));\r\n var BEGINNING = 1, END = 2;\r\n var rootNode = dom.getRoot();\r\n var isAt = function (location) {\r\n var caretPos = CaretPosition$1.fromRangeStart(rng);\r\n var caretWalker = CaretWalker(dom.getRoot());\r\n var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\r\n return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true;\r\n };\r\n if (isAt(BEGINNING)) {\r\n return insertBefore(liTarget, liElms, rootNode);\r\n } else if (isAt(END)) {\r\n return insertAfter(liTarget, liElms, rootNode, dom);\r\n }\r\n return insertMiddle(liTarget, liElms, rootNode, rng);\r\n };\r\n var $_e6q31u3jjkmcwkvd = {\r\n isListFragment: isListFragment,\r\n insertAtCaret: insertAtCaret,\r\n isParentBlockLi: isParentBlockLi,\r\n trimListItems: trimListItems,\r\n listItems: listItems$1\r\n };\r\n\r\n var each$9 = $_4ujg4tljkmcwkbk.each;\r\n var ElementUtils = function (dom) {\r\n this.compare = function (node1, node2) {\r\n if (node1.nodeName !== node2.nodeName) {\r\n return false;\r\n }\r\n var getAttribs = function (node) {\r\n var attribs = {};\r\n each$9(dom.getAttribs(node), function (attr) {\r\n var name = attr.nodeName.toLowerCase();\r\n if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) {\r\n attribs[name] = dom.getAttrib(node, name);\r\n }\r\n });\r\n return attribs;\r\n };\r\n var compareObjects = function (obj1, obj2) {\r\n var value, name;\r\n for (name in obj1) {\r\n if (obj1.hasOwnProperty(name)) {\r\n value = obj2[name];\r\n if (typeof value === 'undefined') {\r\n return false;\r\n }\r\n if (obj1[name] !== value) {\r\n return false;\r\n }\r\n delete obj2[name];\r\n }\r\n }\r\n for (name in obj2) {\r\n if (obj2.hasOwnProperty(name)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\r\n return false;\r\n }\r\n if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\r\n return false;\r\n }\r\n return !$_e4btcc2vjkmcwkq3.isBookmarkNode(node1) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node2);\r\n };\r\n };\r\n\r\n var getLastChildren = function (elm) {\r\n var children = [];\r\n var rawNode = elm.dom();\r\n while (rawNode) {\r\n children.push(Element$$1.fromDom(rawNode));\r\n rawNode = rawNode.lastChild;\r\n }\r\n return children;\r\n };\r\n var removeTrailingBr = function (elm) {\r\n var allBrs = $_2gqm0n27jkmcwkmi.descendants(elm, 'br');\r\n var brs = filter(getLastChildren(elm).slice(-1), isBr);\r\n if (allBrs.length === brs.length) {\r\n each(brs, $_eualm21wjkmcwkku.remove);\r\n }\r\n };\r\n var fillWithPaddingBr = function (elm) {\r\n $_eualm21wjkmcwkku.empty(elm);\r\n $_f4qt4v1yjkmcwkl2.append(elm, Element$$1.fromHtml('
'));\r\n };\r\n var isPaddingContents = function (elm) {\r\n return $_2xwdjv11jkmcwke0.isText(elm) ? $_ckzc193ejkmcwktu.get(elm) === '\\xA0' : isBr(elm);\r\n };\r\n var isPaddedElement = function (elm) {\r\n return filter($_ca6pc118jkmcwkfs.children(elm), isPaddingContents).length === 1;\r\n };\r\n var trimBlockTrailingBr = function (elm) {\r\n $_ca6pc118jkmcwkfs.lastChild(elm).each(function (lastChild) {\r\n $_ca6pc118jkmcwkfs.prevSibling(lastChild).each(function (lastChildPrevSibling) {\r\n if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) {\r\n $_eualm21wjkmcwkku.remove(lastChild);\r\n }\r\n });\r\n });\r\n };\r\n var $_zygeg3ljkmcwkvo = {\r\n removeTrailingBr: removeTrailingBr,\r\n fillWithPaddingBr: fillWithPaddingBr,\r\n isPaddedElement: isPaddedElement,\r\n trimBlockTrailingBr: trimBlockTrailingBr\r\n };\r\n\r\n var makeMap$3 = $_4ujg4tljkmcwkbk.makeMap;\r\n function Writer (settings) {\r\n var html = [];\r\n var indent, indentBefore, indentAfter, encode, htmlOutput;\r\n settings = settings || {};\r\n indent = settings.indent;\r\n indentBefore = makeMap$3(settings.indent_before || '');\r\n indentAfter = makeMap$3(settings.indent_after || '');\r\n encode = $_33qwr1sjkmcwkip.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\r\n htmlOutput = settings.element_format === 'html';\r\n return {\r\n start: function (name, attrs, empty) {\r\n var i, l, attr, value;\r\n if (indent && indentBefore[name] && html.length > 0) {\r\n value = html[html.length - 1];\r\n if (value.length > 0 && value !== '\\n') {\r\n html.push('\\n');\r\n }\r\n }\r\n html.push('<', name);\r\n if (attrs) {\r\n for (i = 0, l = attrs.length; i < l; i++) {\r\n attr = attrs[i];\r\n html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\r\n }\r\n }\r\n if (!empty || htmlOutput) {\r\n html[html.length] = '>';\r\n } else {\r\n html[html.length] = ' />';\r\n }\r\n if (empty && indent && indentAfter[name] && html.length > 0) {\r\n value = html[html.length - 1];\r\n if (value.length > 0 && value !== '\\n') {\r\n html.push('\\n');\r\n }\r\n }\r\n },\r\n end: function (name) {\r\n var value;\r\n html.push('');\r\n if (indent && indentAfter[name] && html.length > 0) {\r\n value = html[html.length - 1];\r\n if (value.length > 0 && value !== '\\n') {\r\n html.push('\\n');\r\n }\r\n }\r\n },\r\n text: function (text, raw) {\r\n if (text.length > 0) {\r\n html[html.length] = raw ? text : encode(text);\r\n }\r\n },\r\n cdata: function (text) {\r\n html.push('');\r\n },\r\n comment: function (text) {\r\n html.push('');\r\n },\r\n pi: function (name, text) {\r\n if (text) {\r\n html.push('');\r\n } else {\r\n html.push('');\r\n }\r\n if (indent) {\r\n html.push('\\n');\r\n }\r\n },\r\n doctype: function (text) {\r\n html.push('', indent ? '\\n' : '');\r\n },\r\n reset: function () {\r\n html.length = 0;\r\n },\r\n getContent: function () {\r\n return html.join('').replace(/\\n$/, '');\r\n }\r\n };\r\n }\r\n\r\n function HtmlSerializer (settings, schema) {\r\n if (schema === void 0) {\r\n schema = Schema();\r\n }\r\n var writer = Writer(settings);\r\n settings = settings || {};\r\n settings.validate = 'validate' in settings ? settings.validate : true;\r\n var serialize = function (node) {\r\n var handlers, validate;\r\n validate = settings.validate;\r\n handlers = {\r\n 3: function (node) {\r\n writer.text(node.value, node.raw);\r\n },\r\n 8: function (node) {\r\n writer.comment(node.value);\r\n },\r\n 7: function (node) {\r\n writer.pi(node.name, node.value);\r\n },\r\n 10: function (node) {\r\n writer.doctype(node.value);\r\n },\r\n 4: function (node) {\r\n writer.cdata(node.value);\r\n },\r\n 11: function (node) {\r\n if (node = node.firstChild) {\r\n do {\r\n walk(node);\r\n } while (node = node.next);\r\n }\r\n }\r\n };\r\n writer.reset();\r\n var walk = function (node) {\r\n var handler = handlers[node.type];\r\n var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\r\n if (!handler) {\r\n name = node.name;\r\n isEmpty = node.shortEnded;\r\n attrs = node.attributes;\r\n if (validate && attrs && attrs.length > 1) {\r\n sortedAttrs = [];\r\n sortedAttrs.map = {};\r\n elementRule = schema.getElementRule(node.name);\r\n if (elementRule) {\r\n for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\r\n attrName = elementRule.attributesOrder[i];\r\n if (attrName in attrs.map) {\r\n attrValue = attrs.map[attrName];\r\n sortedAttrs.map[attrName] = attrValue;\r\n sortedAttrs.push({\r\n name: attrName,\r\n value: attrValue\r\n });\r\n }\r\n }\r\n for (i = 0, l = attrs.length; i < l; i++) {\r\n attrName = attrs[i].name;\r\n if (!(attrName in sortedAttrs.map)) {\r\n attrValue = attrs.map[attrName];\r\n sortedAttrs.map[attrName] = attrValue;\r\n sortedAttrs.push({\r\n name: attrName,\r\n value: attrValue\r\n });\r\n }\r\n }\r\n attrs = sortedAttrs;\r\n }\r\n }\r\n writer.start(node.name, attrs, isEmpty);\r\n if (!isEmpty) {\r\n if (node = node.firstChild) {\r\n do {\r\n walk(node);\r\n } while (node = node.next);\r\n }\r\n writer.end(name);\r\n }\r\n } else {\r\n handler(node);\r\n }\r\n };\r\n if (node.type === 1 && !settings.inner) {\r\n walk(node);\r\n } else {\r\n handlers[11](node);\r\n }\r\n return writer.getContent();\r\n };\r\n return { serialize: serialize };\r\n }\r\n\r\n var createRange$1 = function (sc, so, ec, eo) {\r\n var rng = document.createRange();\r\n rng.setStart(sc, so);\r\n rng.setEnd(ec, eo);\r\n return rng;\r\n };\r\n var normalizeBlockSelectionRange = function (rng) {\r\n var startPos = CaretPosition$1.fromRangeStart(rng);\r\n var endPos = CaretPosition$1.fromRangeEnd(rng);\r\n var rootNode = rng.commonAncestorContainer;\r\n return $_1m3f3j2yjkmcwkqg.fromPosition(false, rootNode, endPos).map(function (newEndPos) {\r\n if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\r\n return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\r\n } else {\r\n return rng;\r\n }\r\n }).getOr(rng);\r\n };\r\n var normalize = function (rng) {\r\n return rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\r\n };\r\n var $_bx30le3ojkmcwkw9 = { normalize: normalize };\r\n\r\n var isTableCell$2 = $_bjermr1rjkmcwkij.matchNodeNames('td th');\r\n var validInsertion = function (editor, value, parentNode) {\r\n if (parentNode.getAttribute('data-mce-bogus') === 'all') {\r\n parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode);\r\n } else {\r\n var node = parentNode.firstChild;\r\n var node2 = parentNode.lastChild;\r\n if (!node || node === node2 && node.nodeName === 'BR') {\r\n editor.dom.setHTML(parentNode, value);\r\n } else {\r\n editor.selection.setContent(value);\r\n }\r\n }\r\n };\r\n var trimBrsFromTableCell = function (dom, elm) {\r\n Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each($_zygeg3ljkmcwkvo.trimBlockTrailingBr);\r\n };\r\n var insertHtmlAtCaret = function (editor, value, details) {\r\n var parser, serializer, parentNode, rootNode, fragment, args;\r\n var marker, rng, node, node2, bookmarkHtml, merge;\r\n var textInlineElements = editor.schema.getTextInlineElements();\r\n var selection = editor.selection, dom = editor.dom;\r\n var trimOrPaddLeftRight = function (html) {\r\n var rng, container, offset;\r\n rng = selection.getRng();\r\n container = rng.startContainer;\r\n offset = rng.startOffset;\r\n var hasSiblingText = function (siblingName) {\r\n return container[siblingName] && container[siblingName].nodeType === 3;\r\n };\r\n if (container.nodeType === 3) {\r\n if (offset > 0) {\r\n html = html.replace(/^ /, ' ');\r\n } else if (!hasSiblingText('previousSibling')) {\r\n html = html.replace(/^ /, ' ');\r\n }\r\n if (offset < container.length) {\r\n html = html.replace(/ (
|)$/, ' ');\r\n } else if (!hasSiblingText('nextSibling')) {\r\n html = html.replace(/( | )(
|)$/, ' ');\r\n }\r\n }\r\n return html;\r\n };\r\n var trimNbspAfterDeleteAndPaddValue = function () {\r\n var rng, container, offset;\r\n rng = selection.getRng();\r\n container = rng.startContainer;\r\n offset = rng.startOffset;\r\n if (container.nodeType === 3 && rng.collapsed) {\r\n if (container.data[offset] === '\\xA0') {\r\n container.deleteData(offset, 1);\r\n if (!/[\\u00a0| ]$/.test(value)) {\r\n value += ' ';\r\n }\r\n } else if (container.data[offset - 1] === '\\xA0') {\r\n container.deleteData(offset - 1, 1);\r\n if (!/[\\u00a0| ]$/.test(value)) {\r\n value = ' ' + value;\r\n }\r\n }\r\n }\r\n };\r\n var reduceInlineTextElements = function () {\r\n if (merge) {\r\n var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);\r\n $_4ujg4tljkmcwkbk.each(dom.select('*[data-mce-fragment]'), function (node) {\r\n for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) {\r\n if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) {\r\n dom.remove(node, true);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n var markFragmentElements = function (fragment) {\r\n var node = fragment;\r\n while (node = node.walk()) {\r\n if (node.type === 1) {\r\n node.attr('data-mce-fragment', '1');\r\n }\r\n }\r\n };\r\n var umarkFragmentElements = function (elm) {\r\n $_4ujg4tljkmcwkbk.each(elm.getElementsByTagName('*'), function (elm) {\r\n elm.removeAttribute('data-mce-fragment');\r\n });\r\n };\r\n var isPartOfFragment = function (node) {\r\n return !!node.getAttribute('data-mce-fragment');\r\n };\r\n var canHaveChildren = function (node) {\r\n return node && !editor.schema.getShortEndedElements()[node.nodeName];\r\n };\r\n var moveSelectionToMarker = function (marker) {\r\n var parentEditableFalseElm, parentBlock, nextRng;\r\n var getContentEditableFalseParent = function (node) {\r\n var root = editor.getBody();\r\n for (; node && node !== root; node = node.parentNode) {\r\n if (editor.dom.getContentEditable(node) === 'false') {\r\n return node;\r\n }\r\n }\r\n return null;\r\n };\r\n if (!marker) {\r\n return;\r\n }\r\n selection.scrollIntoView(marker);\r\n parentEditableFalseElm = getContentEditableFalseParent(marker);\r\n if (parentEditableFalseElm) {\r\n dom.remove(marker);\r\n selection.select(parentEditableFalseElm);\r\n return;\r\n }\r\n rng = dom.createRng();\r\n node = marker.previousSibling;\r\n if (node && node.nodeType === 3) {\r\n rng.setStart(node, node.nodeValue.length);\r\n if (!$_cvvl9iajkmcwk25.ie) {\r\n node2 = marker.nextSibling;\r\n if (node2 && node2.nodeType === 3) {\r\n node.appendData(node2.data);\r\n node2.parentNode.removeChild(node2);\r\n }\r\n }\r\n } else {\r\n rng.setStartBefore(marker);\r\n rng.setEndBefore(marker);\r\n }\r\n var findNextCaretRng = function (rng) {\r\n var caretPos = CaretPosition$1.fromRangeStart(rng);\r\n var caretWalker = CaretWalker(editor.getBody());\r\n caretPos = caretWalker.next(caretPos);\r\n if (caretPos) {\r\n return caretPos.toRange();\r\n }\r\n };\r\n parentBlock = dom.getParent(marker, dom.isBlock);\r\n dom.remove(marker);\r\n if (parentBlock && dom.isEmpty(parentBlock)) {\r\n editor.$(parentBlock).empty();\r\n rng.setStart(parentBlock, 0);\r\n rng.setEnd(parentBlock, 0);\r\n if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\r\n rng = nextRng;\r\n dom.remove(parentBlock);\r\n } else {\r\n dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' }));\r\n }\r\n }\r\n selection.setRng(rng);\r\n };\r\n if (/^ | $/.test(value)) {\r\n value = trimOrPaddLeftRight(value);\r\n }\r\n parser = editor.parser;\r\n merge = details.merge;\r\n serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema);\r\n bookmarkHtml = '​';\r\n args = {\r\n content: value,\r\n format: 'html',\r\n selection: true,\r\n paste: details.paste\r\n };\r\n args = editor.fire('BeforeSetContent', args);\r\n if (args.isDefaultPrevented()) {\r\n editor.fire('SetContent', {\r\n content: args.content,\r\n format: 'html',\r\n selection: true,\r\n paste: details.paste\r\n });\r\n return;\r\n }\r\n value = args.content;\r\n if (value.indexOf('{$caret}') === -1) {\r\n value += '{$caret}';\r\n }\r\n value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\r\n rng = selection.getRng();\r\n var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);\r\n var body = editor.getBody();\r\n if (caretElement === body && selection.isCollapsed()) {\r\n if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) {\r\n rng = dom.createRng();\r\n rng.setStart(body.firstChild, 0);\r\n rng.setEnd(body.firstChild, 0);\r\n selection.setRng(rng);\r\n }\r\n }\r\n if (!selection.isCollapsed()) {\r\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(editor.selection.getRng()));\r\n editor.getDoc().execCommand('Delete', false, null);\r\n trimNbspAfterDeleteAndPaddValue();\r\n }\r\n parentNode = selection.getNode();\r\n var parserArgs = {\r\n context: parentNode.nodeName.toLowerCase(),\r\n data: details.data,\r\n insert: true\r\n };\r\n fragment = parser.parse(value, parserArgs);\r\n if (details.paste === true && $_e6q31u3jjkmcwkvd.isListFragment(editor.schema, fragment) && $_e6q31u3jjkmcwkvd.isParentBlockLi(dom, parentNode)) {\r\n rng = $_e6q31u3jjkmcwkvd.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment);\r\n editor.selection.setRng(rng);\r\n editor.fire('SetContent', args);\r\n return;\r\n }\r\n markFragmentElements(fragment);\r\n node = fragment.lastChild;\r\n if (node.attr('id') === 'mce_marker') {\r\n marker = node;\r\n for (node = node.prev; node; node = node.walk(true)) {\r\n if (node.type === 3 || !dom.isBlock(node.name)) {\r\n if (editor.schema.isValidChild(node.parent.name, 'span')) {\r\n node.parent.insert(marker, node, node.name === 'br');\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n editor._selectionOverrides.showBlockCaretContainer(parentNode);\r\n if (!parserArgs.invalid) {\r\n value = serializer.serialize(fragment);\r\n validInsertion(editor, value, parentNode);\r\n } else {\r\n selection.setContent(bookmarkHtml);\r\n parentNode = selection.getNode();\r\n rootNode = editor.getBody();\r\n if (parentNode.nodeType === 9) {\r\n parentNode = node = rootNode;\r\n } else {\r\n node = parentNode;\r\n }\r\n while (node !== rootNode) {\r\n parentNode = node;\r\n node = node.parentNode;\r\n }\r\n value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\r\n value = serializer.serialize(parser.parse(value.replace(//i, function () {\r\n return serializer.serialize(fragment);\r\n })));\r\n if (parentNode === rootNode) {\r\n dom.setHTML(rootNode, value);\r\n } else {\r\n dom.setOuterHTML(parentNode, value);\r\n }\r\n }\r\n reduceInlineTextElements();\r\n moveSelectionToMarker(dom.get('mce_marker'));\r\n umarkFragmentElements(editor.getBody());\r\n trimBrsFromTableCell(editor.dom, editor.selection.getStart());\r\n editor.fire('SetContent', args);\r\n editor.addVisual();\r\n };\r\n var processValue = function (value) {\r\n var details;\r\n if (typeof value !== 'string') {\r\n details = $_4ujg4tljkmcwkbk.extend({\r\n paste: value.paste,\r\n data: { paste: value.paste }\r\n }, value);\r\n return {\r\n content: value.content,\r\n details: details\r\n };\r\n }\r\n return {\r\n content: value,\r\n details: {}\r\n };\r\n };\r\n var insertAtCaret$1 = function (editor, value) {\r\n var result = processValue(value);\r\n insertHtmlAtCaret(editor, result.content, result.details);\r\n };\r\n var $_g2yj883ijkmcwkv2 = { insertAtCaret: insertAtCaret$1 };\r\n\r\n var sectionResult = Immutable('sections', 'settings');\r\n var detection = $_b1ykk4ojkmcwkcj.detect();\r\n var isTouch = detection.deviceType.isTouch();\r\n var mobilePlugins = [\r\n 'lists',\r\n 'autolink',\r\n 'autosave'\r\n ];\r\n var defaultMobileSettings = { theme: 'mobile' };\r\n var normalizePlugins = function (plugins) {\r\n var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;\r\n var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);\r\n return filter(trimmedPlugins, function (item) {\r\n return item.length > 0;\r\n });\r\n };\r\n var filterMobilePlugins = function (plugins) {\r\n return filter(plugins, curry(contains, mobilePlugins));\r\n };\r\n var extractSections = function (keys$$1, settings) {\r\n var result = bifilter(settings, function (value, key) {\r\n return contains(keys$$1, key);\r\n });\r\n return sectionResult(result.t, result.f);\r\n };\r\n var getSection = function (sectionResult, name, defaults) {\r\n var sections = sectionResult.sections();\r\n var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};\r\n return $_4ujg4tljkmcwkbk.extend({}, defaults, sectionSettings);\r\n };\r\n var hasSection = function (sectionResult, name) {\r\n return sectionResult.sections().hasOwnProperty(name);\r\n };\r\n var getDefaultSettings = function (id, documentBaseUrl, editor) {\r\n return {\r\n id: id,\r\n theme: 'modern',\r\n delta_width: 0,\r\n delta_height: 0,\r\n popup_css: '',\r\n plugins: '',\r\n document_base_url: documentBaseUrl,\r\n add_form_submit_trigger: true,\r\n submit_patch: true,\r\n add_unload_trigger: true,\r\n convert_urls: true,\r\n relative_urls: true,\r\n remove_script_host: true,\r\n object_resizing: true,\r\n doctype: '',\r\n visual: true,\r\n font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',\r\n font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',\r\n forced_root_block: 'p',\r\n hidden_input: true,\r\n render_ui: true,\r\n indentation: '30px',\r\n inline_styles: true,\r\n convert_fonts_to_spans: true,\r\n indent: 'simple',\r\n indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\r\n indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\r\n entity_encoding: 'named',\r\n url_converter: editor.convertURL,\r\n url_converter_scope: editor,\r\n ie7_compat: true\r\n };\r\n };\r\n var getExternalPlugins = function (overrideSettings, settings) {\r\n var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};\r\n if (overrideSettings && overrideSettings.external_plugins) {\r\n return $_4ujg4tljkmcwkbk.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);\r\n } else {\r\n return userDefinedExternalPlugins;\r\n }\r\n };\r\n var combinePlugins = function (forcedPlugins, plugins) {\r\n return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));\r\n };\r\n var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {\r\n var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);\r\n var plugins = normalizePlugins(settings.plugins);\r\n var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;\r\n var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\r\n return $_4ujg4tljkmcwkbk.extend(settings, { plugins: combinedPlugins.join(' ') });\r\n };\r\n var isOnMobile = function (isTouchDevice, sectionResult) {\r\n var isInline = sectionResult.settings().inline;\r\n return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;\r\n };\r\n var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {\r\n var sectionResult = extractSections(['mobile'], settings);\r\n var extendedSettings = $_4ujg4tljkmcwkbk.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {\r\n validate: true,\r\n content_editable: sectionResult.settings().inline,\r\n external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())\r\n });\r\n return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);\r\n };\r\n var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {\r\n var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);\r\n return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);\r\n };\r\n var getFiltered = function (predicate, editor, name) {\r\n return Option.from(editor.settings[name]).filter(predicate);\r\n };\r\n var getString = curry(getFiltered, isString);\r\n var getParamObject = function (value) {\r\n var output = {};\r\n if (typeof value === 'string') {\r\n each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {\r\n var arr = val.split('=');\r\n if (arr.length > 1) {\r\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr[1]);\r\n } else {\r\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr);\r\n }\r\n });\r\n } else {\r\n output = value;\r\n }\r\n return output;\r\n };\r\n var isArrayOf = function (p) {\r\n return function (a) {\r\n return isArray(a) && forall(a, p);\r\n };\r\n };\r\n var getParam = function (editor, name, defaultVal, type) {\r\n var value = name in editor.settings ? editor.settings[name] : defaultVal;\r\n if (type === 'hash') {\r\n return getParamObject(value);\r\n } else if (type === 'string') {\r\n return getFiltered(isString, editor, name).getOr(defaultVal);\r\n } else if (type === 'number') {\r\n return getFiltered(isNumber, editor, name).getOr(defaultVal);\r\n } else if (type === 'boolean') {\r\n return getFiltered(isBoolean, editor, name).getOr(defaultVal);\r\n } else if (type === 'object') {\r\n return getFiltered(isObject, editor, name).getOr(defaultVal);\r\n } else if (type === 'array') {\r\n return getFiltered(isArray, editor, name).getOr(defaultVal);\r\n } else if (type === 'string[]') {\r\n return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);\r\n } else if (type === 'function') {\r\n return getFiltered(isFunction, editor, name).getOr(defaultVal);\r\n } else {\r\n return value;\r\n }\r\n };\r\n\r\n var strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\r\n var hasStrongRtl = function (text) {\r\n return strongRtl.test(text);\r\n };\r\n\r\n var isInlineTarget = function (editor, elm) {\r\n var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');\r\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\r\n };\r\n var isRtl = function (element) {\r\n return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);\r\n };\r\n var findInlineParents = function (isInlineTarget, rootNode, pos) {\r\n return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\r\n };\r\n var findRootInline = function (isInlineTarget, rootNode, pos) {\r\n var parents = findInlineParents(isInlineTarget, rootNode, pos);\r\n return Option.from(parents[parents.length - 1]);\r\n };\r\n var hasSameParentBlock = function (rootNode, node1, node2) {\r\n var block1 = getParentBlock(node1, rootNode);\r\n var block2 = getParentBlock(node2, rootNode);\r\n return block1 && block1 === block2;\r\n };\r\n var isAtZwsp = function (pos) {\r\n return isBeforeInline(pos) || isAfterInline(pos);\r\n };\r\n var normalizePosition = function (forward, pos) {\r\n var container = pos.container(), offset = pos.offset();\r\n if (forward) {\r\n if (isCaretContainerInline(container)) {\r\n if ($_bjermr1rjkmcwkij.isText(container.nextSibling)) {\r\n return CaretPosition$1(container.nextSibling, 0);\r\n } else {\r\n return CaretPosition$1.after(container);\r\n }\r\n } else {\r\n return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos;\r\n }\r\n } else {\r\n if (isCaretContainerInline(container)) {\r\n if ($_bjermr1rjkmcwkij.isText(container.previousSibling)) {\r\n return CaretPosition$1(container.previousSibling, container.previousSibling.data.length);\r\n } else {\r\n return CaretPosition$1.before(container);\r\n }\r\n } else {\r\n return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos;\r\n }\r\n }\r\n };\r\n var normalizeForwards = curry(normalizePosition, true);\r\n var normalizeBackwards = curry(normalizePosition, false);\r\n var $_crqmqb3tjkmcwkxd = {\r\n isInlineTarget: isInlineTarget,\r\n findRootInline: findRootInline,\r\n isRtl: isRtl,\r\n isAtZwsp: isAtZwsp,\r\n normalizePosition: normalizePosition,\r\n normalizeForwards: normalizeForwards,\r\n normalizeBackwards: normalizeBackwards,\r\n hasSameParentBlock: hasSameParentBlock\r\n };\r\n\r\n var isBeforeRoot = function (rootNode) {\r\n return function (elm) {\r\n return $_e4hu6h1ejkmcwkgj.eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));\r\n };\r\n };\r\n var getParentBlock$1 = function (rootNode, elm) {\r\n return $_e4hu6h1ejkmcwkgj.contains(rootNode, elm) ? $_253nd92ajkmcwkmp.closest(elm, function (element) {\r\n return isTextBlock(element) || isListItem(element);\r\n }, isBeforeRoot(rootNode)) : Option.none();\r\n };\r\n var placeCaretInEmptyBody = function (editor) {\r\n var body = editor.getBody();\r\n var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body;\r\n editor.selection.setCursorLocation(node, 0);\r\n };\r\n var paddEmptyBody = function (editor) {\r\n if (editor.dom.isEmpty(editor.getBody())) {\r\n editor.setContent('');\r\n placeCaretInEmptyBody(editor);\r\n }\r\n };\r\n var willDeleteLastPositionInElement = function (forward, fromPos, elm) {\r\n return liftN([\r\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\r\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\r\n ], function (firstPos, lastPos) {\r\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\r\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\r\n var normalizedFromPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, fromPos);\r\n if (forward) {\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFromPos).map(function (nextPos) {\r\n return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);\r\n }).getOr(false);\r\n } else {\r\n return $_1m3f3j2yjkmcwkqg.prevPosition(elm, normalizedFromPos).map(function (prevPos) {\r\n return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);\r\n }).getOr(false);\r\n }\r\n }).getOr(true);\r\n };\r\n var $_8z75uj3sjkmcwkx3 = {\r\n getParentBlock: getParentBlock$1,\r\n paddEmptyBody: paddEmptyBody,\r\n willDeleteLastPositionInElement: willDeleteLastPositionInElement\r\n };\r\n\r\n var any = function (selector) {\r\n return $_4ki4d929jkmcwkmn.first(selector).isSome();\r\n };\r\n var ancestor$2 = function (scope, selector, isRoot) {\r\n return $_4ki4d929jkmcwkmn.ancestor(scope, selector, isRoot).isSome();\r\n };\r\n var sibling$3 = function (scope, selector) {\r\n return $_4ki4d929jkmcwkmn.sibling(scope, selector).isSome();\r\n };\r\n var child$3 = function (scope, selector) {\r\n return $_4ki4d929jkmcwkmn.child(scope, selector).isSome();\r\n };\r\n var descendant$2 = function (scope, selector) {\r\n return $_4ki4d929jkmcwkmn.descendant(scope, selector).isSome();\r\n };\r\n var closest$2 = function (scope, selector, isRoot) {\r\n return $_4ki4d929jkmcwkmn.closest(scope, selector, isRoot).isSome();\r\n };\r\n var $_6rijl23xjkmcwl24 = {\r\n any: any,\r\n ancestor: ancestor$2,\r\n sibling: sibling$3,\r\n child: child$3,\r\n descendant: descendant$2,\r\n closest: closest$2\r\n };\r\n\r\n var hasWhitespacePreserveParent = function (rootNode, node) {\r\n var rootElement = Element$$1.fromDom(rootNode);\r\n var startNode = Element$$1.fromDom(node);\r\n return $_6rijl23xjkmcwl24.ancestor(startNode, 'pre,code', curry($_e4hu6h1ejkmcwkgj.eq, rootElement));\r\n };\r\n var isWhitespace = function (rootNode, node) {\r\n return $_bjermr1rjkmcwkij.isText(node) && /^[ \\t\\r\\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;\r\n };\r\n var isNamedAnchor = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');\r\n };\r\n var isContent = function (rootNode, node) {\r\n return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);\r\n };\r\n var isBookmark = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bookmark');\r\n var isBogus$2 = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bogus');\r\n var isBogusAll$1 = $_bjermr1rjkmcwkij.hasAttributeValue('data-mce-bogus', 'all');\r\n var isEmptyNode = function (targetNode) {\r\n var walker, node, brCount = 0;\r\n if (isContent(targetNode, targetNode)) {\r\n return false;\r\n } else {\r\n node = targetNode.firstChild;\r\n if (!node) {\r\n return true;\r\n }\r\n walker = new TreeWalker(node, targetNode);\r\n do {\r\n if (isBogusAll$1(node)) {\r\n node = walker.next(true);\r\n continue;\r\n }\r\n if (isBogus$2(node)) {\r\n node = walker.next();\r\n continue;\r\n }\r\n if ($_bjermr1rjkmcwkij.isBr(node)) {\r\n brCount++;\r\n node = walker.next();\r\n continue;\r\n }\r\n if (isContent(targetNode, node)) {\r\n return false;\r\n }\r\n node = walker.next();\r\n } while (node);\r\n return brCount <= 1;\r\n }\r\n };\r\n var isEmpty$1 = function (elm) {\r\n return isEmptyNode(elm.dom());\r\n };\r\n var $_1jnfso3wjkmcwl1v = { isEmpty: isEmpty$1 };\r\n\r\n var BlockPosition = Immutable('block', 'position');\r\n var BlockBoundary = Immutable('from', 'to');\r\n var getBlockPosition = function (rootNode, pos) {\r\n var rootElm = Element$$1.fromDom(rootNode);\r\n var containerElm = Element$$1.fromDom(pos.container());\r\n return $_8z75uj3sjkmcwkx3.getParentBlock(rootElm, containerElm).map(function (block) {\r\n return BlockPosition(block, pos);\r\n });\r\n };\r\n var isDifferentBlocks = function (blockBoundary) {\r\n return $_e4hu6h1ejkmcwkgj.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;\r\n };\r\n var hasSameParent = function (blockBoundary) {\r\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.from().block()).bind(function (parent1) {\r\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.to().block()).filter(function (parent2) {\r\n return $_e4hu6h1ejkmcwkgj.eq(parent1, parent2);\r\n });\r\n }).isSome();\r\n };\r\n var isEditable = function (blockBoundary) {\r\n return $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.from().block()) === false && $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.to().block()) === false;\r\n };\r\n var skipLastBr = function (rootNode, forward, blockPosition) {\r\n if ($_bjermr1rjkmcwkij.isBr(blockPosition.position().getNode()) && $_1jnfso3wjkmcwl1v.isEmpty(blockPosition.block()) === false) {\r\n return $_1m3f3j2yjkmcwkqg.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {\r\n if (lastPositionInBlock.isEqual(blockPosition.position())) {\r\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) {\r\n return getBlockPosition(rootNode, to);\r\n });\r\n } else {\r\n return Option.some(blockPosition);\r\n }\r\n }).getOr(blockPosition);\r\n } else {\r\n return blockPosition;\r\n }\r\n };\r\n var readFromRange = function (rootNode, forward, rng) {\r\n var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng));\r\n var toBlockPos = fromBlockPos.bind(function (blockPos) {\r\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) {\r\n return getBlockPosition(rootNode, to).map(function (blockPos) {\r\n return skipLastBr(rootNode, forward, blockPos);\r\n });\r\n });\r\n });\r\n return liftN([\r\n fromBlockPos,\r\n toBlockPos\r\n ], BlockBoundary).filter(function (blockBoundary) {\r\n return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary);\r\n });\r\n };\r\n var read$1 = function (rootNode, forward, rng) {\r\n return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none();\r\n };\r\n var $_2x2kic3rjkmcwkwi = { read: read$1 };\r\n\r\n var dropLast = function (xs) {\r\n return xs.slice(0, -1);\r\n };\r\n var parentsUntil$1 = function (startNode, rootElm, predicate) {\r\n if ($_e4hu6h1ejkmcwkgj.contains(rootElm, startNode)) {\r\n return dropLast($_ca6pc118jkmcwkfs.parents(startNode, function (elm) {\r\n return predicate(elm) || $_e4hu6h1ejkmcwkgj.eq(elm, rootElm);\r\n }));\r\n } else {\r\n return [];\r\n }\r\n };\r\n var parents$1 = function (startNode, rootElm) {\r\n return parentsUntil$1(startNode, rootElm, constant(false));\r\n };\r\n var parentsAndSelf = function (startNode, rootElm) {\r\n return [startNode].concat(parents$1(startNode, rootElm));\r\n };\r\n var $_cir6zl3zjkmcwl2j = {\r\n parentsUntil: parentsUntil$1,\r\n parents: parents$1,\r\n parentsAndSelf: parentsAndSelf\r\n };\r\n\r\n var getChildrenUntilBlockBoundary = function (block) {\r\n var children = $_ca6pc118jkmcwkfs.children(block);\r\n return findIndex(children, isBlock).fold(function () {\r\n return children;\r\n }, function (index) {\r\n return children.slice(0, index);\r\n });\r\n };\r\n var extractChildren = function (block) {\r\n var children = getChildrenUntilBlockBoundary(block);\r\n each(children, function (node) {\r\n $_eualm21wjkmcwkku.remove(node);\r\n });\r\n return children;\r\n };\r\n var trimBr = function (first, block) {\r\n $_1m3f3j2yjkmcwkqg.positionIn(first, block.dom()).each(function (position) {\r\n var node = position.getNode();\r\n if ($_bjermr1rjkmcwkij.isBr(node)) {\r\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(node));\r\n }\r\n });\r\n };\r\n var removeEmptyRoot = function (rootNode, block) {\r\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(block, rootNode);\r\n return find(parents.reverse(), $_1jnfso3wjkmcwl1v.isEmpty).each($_eualm21wjkmcwkku.remove);\r\n };\r\n var findParentInsertPoint = function (toBlock, block) {\r\n var parents = $_ca6pc118jkmcwkfs.parents(block, function (elm) {\r\n return $_e4hu6h1ejkmcwkgj.eq(elm, toBlock);\r\n });\r\n return Option.from(parents[parents.length - 2]);\r\n };\r\n var getInsertionPoint = function (fromBlock, toBlock) {\r\n if ($_e4hu6h1ejkmcwkgj.contains(toBlock, fromBlock)) {\r\n return $_ca6pc118jkmcwkfs.parent(fromBlock).bind(function (parent) {\r\n return $_e4hu6h1ejkmcwkgj.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock);\r\n });\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var mergeBlockInto = function (rootNode, fromBlock, toBlock) {\r\n if ($_1jnfso3wjkmcwl1v.isEmpty(toBlock)) {\r\n $_eualm21wjkmcwkku.remove(toBlock);\r\n if ($_1jnfso3wjkmcwl1v.isEmpty(fromBlock)) {\r\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(fromBlock);\r\n }\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromBlock.dom());\r\n } else {\r\n trimBr(true, fromBlock);\r\n trimBr(false, toBlock);\r\n var children_1 = extractChildren(fromBlock);\r\n return getInsertionPoint(fromBlock, toBlock).fold(function () {\r\n removeEmptyRoot(rootNode, fromBlock);\r\n var position = $_1m3f3j2yjkmcwkqg.lastPositionIn(toBlock.dom());\r\n each(children_1, function (node) {\r\n $_f4qt4v1yjkmcwkl2.append(toBlock, node);\r\n });\r\n return position;\r\n }, function (target) {\r\n var position = $_1m3f3j2yjkmcwkqg.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom()));\r\n each(children_1, function (node) {\r\n $_f4qt4v1yjkmcwkl2.before(target, node);\r\n });\r\n removeEmptyRoot(rootNode, fromBlock);\r\n return position;\r\n });\r\n }\r\n };\r\n var mergeBlocks = function (rootNode, forward, block1, block2) {\r\n return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);\r\n };\r\n var $_ezyxdl3yjkmcwl27 = { mergeBlocks: mergeBlocks };\r\n\r\n var backspaceDelete = function (editor, forward) {\r\n var position;\r\n var rootNode = Element$$1.fromDom(editor.getBody());\r\n position = $_2x2kic3rjkmcwkwi.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {\r\n return $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());\r\n });\r\n position.each(function (pos) {\r\n editor.selection.setRng(pos.toRange());\r\n });\r\n return position.isSome();\r\n };\r\n var $_1wrlyf3qjkmcwkwe = { backspaceDelete: backspaceDelete };\r\n\r\n var deleteRangeMergeBlocks = function (rootNode, selection) {\r\n var rng = selection.getRng();\r\n return liftN([\r\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),\r\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))\r\n ], function (block1, block2) {\r\n if ($_e4hu6h1ejkmcwkgj.eq(block1, block2) === false) {\r\n rng.deleteContents();\r\n $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, true, block1, block2).each(function (pos) {\r\n selection.setRng(pos.toRange());\r\n });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }).getOr(false);\r\n };\r\n var isRawNodeInTable = function (root, rawNode) {\r\n var node = Element$$1.fromDom(rawNode);\r\n var isRoot = curry($_e4hu6h1ejkmcwkgj.eq, root);\r\n return $_253nd92ajkmcwkmp.ancestor(node, isTableCell, isRoot).isSome();\r\n };\r\n var isSelectionInTable = function (root, rng) {\r\n return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\r\n };\r\n var isEverythingSelected = function (root, rng) {\r\n var noPrevious = $_1m3f3j2yjkmcwkqg.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();\r\n var noNext = $_1m3f3j2yjkmcwkqg.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone();\r\n return !isSelectionInTable(root, rng) && noPrevious && noNext;\r\n };\r\n var emptyEditor = function (editor) {\r\n editor.setContent('');\r\n editor.selection.setCursorLocation();\r\n return true;\r\n };\r\n var deleteRange = function (editor) {\r\n var rootNode = Element$$1.fromDom(editor.getBody());\r\n var rng = editor.selection.getRng();\r\n return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);\r\n };\r\n var backspaceDelete$1 = function (editor, forward) {\r\n return editor.selection.isCollapsed() ? false : deleteRange(editor);\r\n };\r\n var $_egxtcx40jkmcwl2q = { backspaceDelete: backspaceDelete$1 };\r\n\r\n var generate$1 = function (cases) {\r\n if (!isArray(cases)) {\r\n throw new Error('cases must be an array');\r\n }\r\n if (cases.length === 0) {\r\n throw new Error('there must be at least one case');\r\n }\r\n var constructors = [];\r\n var adt = {};\r\n each(cases, function (acase, count) {\r\n var keys$$1 = keys(acase);\r\n if (keys$$1.length !== 1) {\r\n throw new Error('one and only one name per case');\r\n }\r\n var key = keys$$1[0];\r\n var value = acase[key];\r\n if (adt[key] !== undefined) {\r\n throw new Error('duplicate key detected:' + key);\r\n } else if (key === 'cata') {\r\n throw new Error('cannot have a case named cata (sorry)');\r\n } else if (!isArray(value)) {\r\n throw new Error('case arguments must be an array');\r\n }\r\n constructors.push(key);\r\n adt[key] = function () {\r\n var argLength = arguments.length;\r\n if (argLength !== value.length) {\r\n throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\r\n }\r\n var args = new Array(argLength);\r\n for (var i = 0; i < args.length; i++)\r\n args[i] = arguments[i];\r\n var match = function (branches) {\r\n var branchKeys = keys(branches);\r\n if (constructors.length !== branchKeys.length) {\r\n throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\r\n }\r\n var allReqd = forall(constructors, function (reqKey) {\r\n return contains(branchKeys, reqKey);\r\n });\r\n if (!allReqd)\r\n throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\r\n return branches[key].apply(null, args);\r\n };\r\n return {\r\n fold: function () {\r\n if (arguments.length !== cases.length) {\r\n throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);\r\n }\r\n var target = arguments[count];\r\n return target.apply(null, args);\r\n },\r\n match: match,\r\n log: function (label) {\r\n console.log(label, {\r\n constructors: constructors,\r\n constructor: key,\r\n params: args\r\n });\r\n }\r\n };\r\n };\r\n });\r\n return adt;\r\n };\r\n var Adt = { generate: generate$1 };\r\n\r\n var isCompoundElement = function (node) {\r\n return isTableCell(Element$$1.fromDom(node)) || isListItem(Element$$1.fromDom(node));\r\n };\r\n var DeleteAction = Adt.generate([\r\n { remove: ['element'] },\r\n { moveToElement: ['element'] },\r\n { moveToPosition: ['position'] }\r\n ]);\r\n var isAtContentEditableBlockCaret = function (forward, from) {\r\n var elm = from.getNode(forward === false);\r\n var caretLocation = forward ? 'after' : 'before';\r\n return $_bjermr1rjkmcwkij.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\r\n };\r\n var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {\r\n var inSameBlock = function (elm) {\r\n return isInline(Element$$1.fromDom(elm)) && !isInSameBlock(from, to, root);\r\n };\r\n return getRelativeCefElm(!forward, from).fold(function () {\r\n return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);\r\n }, inSameBlock);\r\n };\r\n var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {\r\n var toCefElm = to.getNode(forward === false);\r\n return $_8z75uj3sjkmcwkx3.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {\r\n return $_1jnfso3wjkmcwl1v.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);\r\n }).orThunk(function () {\r\n return Option.some(DeleteAction.moveToElement(toCefElm));\r\n });\r\n };\r\n var findCefPosition = function (root, forward, from) {\r\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, root, from).bind(function (to) {\r\n if (isCompoundElement(to.getNode())) {\r\n return Option.none();\r\n } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) {\r\n return Option.none();\r\n } else if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode())) {\r\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\r\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode(true))) {\r\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\r\n } else if (forward && isAfterContentEditableFalse(from)) {\r\n return Option.some(DeleteAction.moveToPosition(to));\r\n } else if (forward === false && isBeforeContentEditableFalse(from)) {\r\n return Option.some(DeleteAction.moveToPosition(to));\r\n } else {\r\n return Option.none();\r\n }\r\n });\r\n };\r\n var getContentEditableBlockAction = function (forward, elm) {\r\n if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.nextSibling)) {\r\n return Option.some(DeleteAction.moveToElement(elm.nextSibling));\r\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.previousSibling)) {\r\n return Option.some(DeleteAction.moveToElement(elm.previousSibling));\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) {\r\n return deleteAction.fold(function (elm) {\r\n return Option.some(DeleteAction.remove(elm));\r\n }, function (elm) {\r\n return Option.some(DeleteAction.moveToElement(elm));\r\n }, function (to) {\r\n if (isInSameBlock(from, to, root)) {\r\n return Option.none();\r\n } else {\r\n return Option.some(DeleteAction.moveToPosition(to));\r\n }\r\n });\r\n };\r\n var getContentEditableAction = function (root, forward, from) {\r\n if (isAtContentEditableBlockCaret(forward, from)) {\r\n return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () {\r\n return findCefPosition(root, forward, from);\r\n }, Option.some);\r\n } else {\r\n return findCefPosition(root, forward, from).bind(function (deleteAction) {\r\n return skipMoveToActionFromInlineCefToContent(root, from, deleteAction);\r\n });\r\n }\r\n };\r\n var read$2 = function (root, forward, rng) {\r\n var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\r\n var from = CaretPosition$1.fromRangeStart(normalizedRange);\r\n if (forward === false && isAfterContentEditableFalse(from)) {\r\n return Option.some(DeleteAction.remove(from.getNode(true)));\r\n } else if (forward && isBeforeContentEditableFalse(from)) {\r\n return Option.some(DeleteAction.remove(from.getNode()));\r\n } else {\r\n return getContentEditableAction(root, forward, from);\r\n }\r\n };\r\n\r\n var needsReposition = function (pos, elm) {\r\n var container = pos.container();\r\n var offset = pos.offset();\r\n return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset();\r\n };\r\n var reposition = function (elm, pos) {\r\n return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos;\r\n };\r\n var beforeOrStartOf = function (node) {\r\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);\r\n };\r\n var afterOrEndOf = function (node) {\r\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node);\r\n };\r\n var getPreviousSiblingCaretPosition = function (elm) {\r\n if (isCaretCandidate(elm.previousSibling)) {\r\n return Option.some(afterOrEndOf(elm.previousSibling));\r\n } else {\r\n return elm.previousSibling ? $_1m3f3j2yjkmcwkqg.lastPositionIn(elm.previousSibling) : Option.none();\r\n }\r\n };\r\n var getNextSiblingCaretPosition = function (elm) {\r\n if (isCaretCandidate(elm.nextSibling)) {\r\n return Option.some(beforeOrStartOf(elm.nextSibling));\r\n } else {\r\n return elm.nextSibling ? $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.nextSibling) : Option.none();\r\n }\r\n };\r\n var findCaretPositionBackwardsFromElm = function (rootElement, elm) {\r\n var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode);\r\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, startPosition).fold(function () {\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm));\r\n }, Option.some);\r\n };\r\n var findCaretPositionForwardsFromElm = function (rootElement, elm) {\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {\r\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, CaretPosition$1.before(elm));\r\n }, Option.some);\r\n };\r\n var findCaretPositionBackwards = function (rootElement, elm) {\r\n return getPreviousSiblingCaretPosition(elm).orThunk(function () {\r\n return getNextSiblingCaretPosition(elm);\r\n }).orThunk(function () {\r\n return findCaretPositionBackwardsFromElm(rootElement, elm);\r\n });\r\n };\r\n var findCaretPositionForward = function (rootElement, elm) {\r\n return getNextSiblingCaretPosition(elm).orThunk(function () {\r\n return getPreviousSiblingCaretPosition(elm);\r\n }).orThunk(function () {\r\n return findCaretPositionForwardsFromElm(rootElement, elm);\r\n });\r\n };\r\n var findCaretPosition$1 = function (forward, rootElement, elm) {\r\n return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\r\n };\r\n var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) {\r\n return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm));\r\n };\r\n var setSelection = function (editor, forward, pos) {\r\n pos.fold(function () {\r\n editor.focus();\r\n }, function (pos) {\r\n editor.selection.setRng(pos.toRange(), forward);\r\n });\r\n };\r\n var eqRawNode = function (rawNode) {\r\n return function (elm) {\r\n return elm.dom() === rawNode;\r\n };\r\n };\r\n var isBlock$2 = function (editor, elm) {\r\n return elm && editor.schema.getBlockElements().hasOwnProperty($_2xwdjv11jkmcwke0.name(elm));\r\n };\r\n var paddEmptyBlock = function (elm) {\r\n if ($_1jnfso3wjkmcwl1v.isEmpty(elm)) {\r\n var br = Element$$1.fromHtml('
');\r\n $_eualm21wjkmcwkku.empty(elm);\r\n $_f4qt4v1yjkmcwkl2.append(elm, br);\r\n return Option.some(CaretPosition$1.before(br.dom()));\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var deleteNormalized = function (elm, afterDeletePosOpt) {\r\n return liftN([\r\n $_ca6pc118jkmcwkfs.prevSibling(elm),\r\n $_ca6pc118jkmcwkfs.nextSibling(elm),\r\n afterDeletePosOpt\r\n ], function (prev, next, afterDeletePos) {\r\n var offset;\r\n var prevNode = prev.dom();\r\n var nextNode = next.dom();\r\n if ($_bjermr1rjkmcwkij.isText(prevNode) && $_bjermr1rjkmcwkij.isText(nextNode)) {\r\n offset = prevNode.data.length;\r\n prevNode.appendData(nextNode.data);\r\n $_eualm21wjkmcwkku.remove(next);\r\n $_eualm21wjkmcwkku.remove(elm);\r\n if (afterDeletePos.container() === nextNode) {\r\n return CaretPosition$1(prevNode, offset);\r\n } else {\r\n return afterDeletePos;\r\n }\r\n } else {\r\n $_eualm21wjkmcwkku.remove(elm);\r\n return afterDeletePos;\r\n }\r\n }).orThunk(function () {\r\n $_eualm21wjkmcwkku.remove(elm);\r\n return afterDeletePosOpt;\r\n });\r\n };\r\n var deleteElement = function (editor, forward, elm) {\r\n var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());\r\n var parentBlock = $_253nd92ajkmcwkmp.ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));\r\n var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos);\r\n if (editor.dom.isEmpty(editor.getBody())) {\r\n editor.setContent('');\r\n editor.selection.setCursorLocation();\r\n } else {\r\n parentBlock.bind(paddEmptyBlock).fold(function () {\r\n setSelection(editor, forward, normalizedAfterDeletePos);\r\n }, function (paddPos) {\r\n setSelection(editor, forward, Option.some(paddPos));\r\n });\r\n }\r\n };\r\n var $_4yq1i444jkmcwl3w = { deleteElement: deleteElement };\r\n\r\n var deleteElement$1 = function (editor, forward) {\r\n return function (element) {\r\n editor._selectionOverrides.hideFakeCaret();\r\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(element));\r\n return true;\r\n };\r\n };\r\n var moveToElement = function (editor, forward) {\r\n return function (element) {\r\n var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element);\r\n editor.selection.setRng(pos.toRange());\r\n return true;\r\n };\r\n };\r\n var moveToPosition = function (editor) {\r\n return function (pos) {\r\n editor.selection.setRng(pos.toRange());\r\n return true;\r\n };\r\n };\r\n var backspaceDeleteCaret = function (editor, forward) {\r\n var result = read$2(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) {\r\n return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor));\r\n });\r\n return result.getOr(false);\r\n };\r\n var deleteOffscreenSelection = function (rootElement) {\r\n each($_2gqm0n27jkmcwkmi.descendants(rootElement, '.mce-offscreen-selection'), $_eualm21wjkmcwkku.remove);\r\n };\r\n var backspaceDeleteRange = function (editor, forward) {\r\n var selectedElement = editor.selection.getNode();\r\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(selectedElement)) {\r\n deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));\r\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));\r\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n var getContentEditableRoot = function (root, node) {\r\n while (node && node !== root) {\r\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var paddEmptyElement = function (editor) {\r\n var br;\r\n var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode());\r\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) {\r\n br = editor.dom.create('br', { 'data-mce-bogus': '1' });\r\n editor.dom.setHTML(ceRoot, '');\r\n ceRoot.appendChild(br);\r\n editor.selection.setRng(CaretPosition$1.before(br).toRange());\r\n }\r\n return true;\r\n };\r\n var backspaceDelete$2 = function (editor, forward) {\r\n if (editor.selection.isCollapsed()) {\r\n return backspaceDeleteCaret(editor, forward);\r\n } else {\r\n return backspaceDeleteRange(editor, forward);\r\n }\r\n };\r\n var $_1hyiiy41jkmcwl2z = {\r\n backspaceDelete: backspaceDelete$2,\r\n paddEmptyElement: paddEmptyElement\r\n };\r\n\r\n var isText$8 = $_bjermr1rjkmcwkij.isText;\r\n var startsWithCaretContainer$1 = function (node) {\r\n return isText$8(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var endsWithCaretContainer$1 = function (node) {\r\n return isText$8(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\r\n };\r\n var createZwsp = function (node) {\r\n return node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\r\n };\r\n var insertBefore$1 = function (node) {\r\n if (isText$8(node.previousSibling)) {\r\n if (endsWithCaretContainer$1(node.previousSibling)) {\r\n return node.previousSibling;\r\n } else {\r\n node.previousSibling.appendData($_cadvcr2pjkmcwkph.ZWSP);\r\n return node.previousSibling;\r\n }\r\n } else if (isText$8(node)) {\r\n if (startsWithCaretContainer$1(node)) {\r\n return node;\r\n } else {\r\n node.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\r\n return node;\r\n }\r\n } else {\r\n var newNode = createZwsp(node);\r\n node.parentNode.insertBefore(newNode, node);\r\n return newNode;\r\n }\r\n };\r\n var insertAfter$1 = function (node) {\r\n if (isText$8(node.nextSibling)) {\r\n if (startsWithCaretContainer$1(node.nextSibling)) {\r\n return node.nextSibling;\r\n } else {\r\n node.nextSibling.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\r\n return node.nextSibling;\r\n }\r\n } else if (isText$8(node)) {\r\n if (endsWithCaretContainer$1(node)) {\r\n return node;\r\n } else {\r\n node.appendData($_cadvcr2pjkmcwkph.ZWSP);\r\n return node;\r\n }\r\n } else {\r\n var newNode = createZwsp(node);\r\n if (node.nextSibling) {\r\n node.parentNode.insertBefore(newNode, node.nextSibling);\r\n } else {\r\n node.parentNode.appendChild(newNode);\r\n }\r\n return newNode;\r\n }\r\n };\r\n var insertInline$1 = function (before, node) {\r\n return before ? insertBefore$1(node) : insertAfter$1(node);\r\n };\r\n var insertInlineBefore = curry(insertInline$1, true);\r\n var insertInlineAfter = curry(insertInline$1, false);\r\n\r\n var insertInlinePos = function (pos, before) {\r\n if ($_bjermr1rjkmcwkij.isText(pos.container())) {\r\n return insertInline$1(before, pos.container());\r\n } else {\r\n return insertInline$1(before, pos.getNode());\r\n }\r\n };\r\n var isPosCaretContainer = function (pos, caret) {\r\n var caretNode = caret.get();\r\n return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\r\n };\r\n var renderCaret = function (caret, location) {\r\n return location.fold(function (element) {\r\n $_xl2r331jkmcwkri.remove(caret.get());\r\n var text = insertInlineBefore(element);\r\n caret.set(text);\r\n return Option.some(CaretPosition$1(text, text.length - 1));\r\n }, function (element) {\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(element).map(function (pos) {\r\n if (!isPosCaretContainer(pos, caret)) {\r\n $_xl2r331jkmcwkri.remove(caret.get());\r\n var text = insertInlinePos(pos, true);\r\n caret.set(text);\r\n return CaretPosition$1(text, 1);\r\n } else {\r\n return CaretPosition$1(caret.get(), 1);\r\n }\r\n });\r\n }, function (element) {\r\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(element).map(function (pos) {\r\n if (!isPosCaretContainer(pos, caret)) {\r\n $_xl2r331jkmcwkri.remove(caret.get());\r\n var text = insertInlinePos(pos, false);\r\n caret.set(text);\r\n return CaretPosition$1(text, text.length - 1);\r\n } else {\r\n return CaretPosition$1(caret.get(), caret.get().length - 1);\r\n }\r\n });\r\n }, function (element) {\r\n $_xl2r331jkmcwkri.remove(caret.get());\r\n var text = insertInlineAfter(element);\r\n caret.set(text);\r\n return Option.some(CaretPosition$1(text, 1));\r\n });\r\n };\r\n var $_efgx6546jkmcwl4n = { renderCaret: renderCaret };\r\n\r\n var evaluateUntil = function (fns, args) {\r\n for (var i = 0; i < fns.length; i++) {\r\n var result = fns[i].apply(null, args);\r\n if (result.isSome()) {\r\n return result;\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var $_8hyv6o49jkmcwl58 = { evaluateUntil: evaluateUntil };\r\n\r\n var Location = Adt.generate([\r\n { before: ['element'] },\r\n { start: ['element'] },\r\n { end: ['element'] },\r\n { after: ['element'] }\r\n ]);\r\n var rescope = function (rootNode, node) {\r\n var parentBlock = getParentBlock(node, rootNode);\r\n return parentBlock ? parentBlock : rootNode;\r\n };\r\n var before$3 = function (isInlineTarget, rootNode, pos) {\r\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\r\n var scope = rescope(rootNode, nPos.container());\r\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\r\n return Location.before(inline);\r\n });\r\n }, Option.none);\r\n };\r\n var isNotInsideFormatCaretContainer = function (rootNode, elm) {\r\n return getParentCaretContainer(rootNode, elm) === null;\r\n };\r\n var findInsideRootInline = function (isInlineTarget, rootNode, pos) {\r\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\r\n };\r\n var start = function (isInlineTarget, rootNode, pos) {\r\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\r\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\r\n var prevPos = $_1m3f3j2yjkmcwkqg.prevPosition(inline, nPos);\r\n return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none();\r\n });\r\n };\r\n var end = function (isInlineTarget, rootNode, pos) {\r\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\r\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\r\n var nextPos = $_1m3f3j2yjkmcwkqg.nextPosition(inline, nPos);\r\n return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();\r\n });\r\n };\r\n var after$3 = function (isInlineTarget, rootNode, pos) {\r\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\r\n var scope = rescope(rootNode, nPos.container());\r\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\r\n return $_1m3f3j2yjkmcwkqg.prevPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\r\n return Location.after(inline);\r\n });\r\n }, Option.none);\r\n };\r\n var isValidLocation = function (location) {\r\n return $_crqmqb3tjkmcwkxd.isRtl(getElement(location)) === false;\r\n };\r\n var readLocation = function (isInlineTarget, rootNode, pos) {\r\n var location = $_8hyv6o49jkmcwl58.evaluateUntil([\r\n before$3,\r\n start,\r\n end,\r\n after$3\r\n ], [\r\n isInlineTarget,\r\n rootNode,\r\n pos\r\n ]);\r\n return location.filter(isValidLocation);\r\n };\r\n var getElement = function (location) {\r\n return location.fold(identity, identity, identity, identity);\r\n };\r\n var getName = function (location) {\r\n return location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\r\n };\r\n var outside = function (location) {\r\n return location.fold(Location.before, Location.before, Location.after, Location.after);\r\n };\r\n var inside = function (location) {\r\n return location.fold(Location.start, Location.start, Location.end, Location.end);\r\n };\r\n var isEq$1 = function (location1, location2) {\r\n return getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\r\n };\r\n var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) {\r\n return liftN([\r\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from),\r\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, to)\r\n ], function (fromInline, toInline) {\r\n if (fromInline !== toInline && $_crqmqb3tjkmcwkxd.hasSameParentBlock(rootNode, fromInline, toInline)) {\r\n return Location.after(forward ? fromInline : toInline);\r\n } else {\r\n return location;\r\n }\r\n }).getOr(location);\r\n };\r\n var skipNoMovement = function (fromLocation, toLocation) {\r\n return fromLocation.fold(constant(true), function (fromLocation) {\r\n return !isEq$1(fromLocation, toLocation);\r\n });\r\n };\r\n var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) {\r\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\r\n var to = $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, from).map(curry($_crqmqb3tjkmcwkxd.normalizePosition, forward));\r\n var location = to.fold(function () {\r\n return fromLocation.map(outside);\r\n }, function (to) {\r\n return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation));\r\n });\r\n return location.filter(isValidLocation);\r\n };\r\n var findLocationSimple = function (forward, location) {\r\n if (forward) {\r\n return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none);\r\n } else {\r\n return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end));\r\n }\r\n };\r\n var findLocation = function (forward, isInlineTarget, rootNode, pos) {\r\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\r\n var fromLocation = readLocation(isInlineTarget, rootNode, from);\r\n return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () {\r\n return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos);\r\n });\r\n };\r\n var $_gau9ep48jkmcwl4x = {\r\n readLocation: readLocation,\r\n findLocation: findLocation,\r\n prevLocation: curry(findLocation, false),\r\n nextLocation: curry(findLocation, true),\r\n getElement: getElement,\r\n outside: outside,\r\n inside: inside\r\n };\r\n\r\n var hasSelectionModifyApi = function (editor) {\r\n return isFunction(editor.selection.getSel().modify);\r\n };\r\n var moveRel = function (forward, selection, pos) {\r\n var delta = forward ? 1 : -1;\r\n selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange());\r\n selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\r\n return true;\r\n };\r\n var moveByWord = function (forward, editor) {\r\n var rng = editor.selection.getRng();\r\n var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng);\r\n if (!hasSelectionModifyApi(editor)) {\r\n return false;\r\n } else if (forward && isBeforeInline(pos)) {\r\n return moveRel(true, editor.selection, pos);\r\n } else if (!forward && isAfterInline(pos)) {\r\n return moveRel(false, editor.selection, pos);\r\n } else {\r\n return false;\r\n }\r\n };\r\n var $_dessn94bjkmcwl5p = {\r\n hasSelectionModifyApi: hasSelectionModifyApi,\r\n moveByWord: moveByWord\r\n };\r\n\r\n var setCaretPosition = function (editor, pos) {\r\n var rng = editor.dom.createRng();\r\n rng.setStart(pos.container(), pos.offset());\r\n rng.setEnd(pos.container(), pos.offset());\r\n editor.selection.setRng(rng);\r\n };\r\n var isFeatureEnabled = function (editor) {\r\n return editor.settings.inline_boundaries !== false;\r\n };\r\n var setSelected = function (state, elm) {\r\n if (state) {\r\n elm.setAttribute('data-mce-selected', 'inline-boundary');\r\n } else {\r\n elm.removeAttribute('data-mce-selected');\r\n }\r\n };\r\n var renderCaretLocation = function (editor, caret, location) {\r\n return $_efgx6546jkmcwl4n.renderCaret(caret, location).map(function (pos) {\r\n setCaretPosition(editor, pos);\r\n return location;\r\n });\r\n };\r\n var findLocation$1 = function (editor, caret, forward) {\r\n var rootNode = editor.getBody();\r\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n var location = $_gau9ep48jkmcwl4x.findLocation(forward, isInlineTarget, rootNode, from);\r\n return location.bind(function (location) {\r\n return renderCaretLocation(editor, caret, location);\r\n });\r\n };\r\n var toggleInlines = function (isInlineTarget, dom, elms) {\r\n var selectedInlines = filter(dom.select('*[data-mce-selected=\"inline-boundary\"]'), isInlineTarget);\r\n var targetInlines = filter(elms, isInlineTarget);\r\n each(difference(selectedInlines, targetInlines), curry(setSelected, false));\r\n each(difference(targetInlines, selectedInlines), curry(setSelected, true));\r\n };\r\n var safeRemoveCaretContainer = function (editor, caret) {\r\n if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {\r\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n if (CaretPosition$1.isTextPosition(pos) && $_crqmqb3tjkmcwkxd.isAtZwsp(pos) === false) {\r\n setCaretPosition(editor, $_xl2r331jkmcwkri.removeAndReposition(caret.get(), pos));\r\n caret.set(null);\r\n }\r\n }\r\n };\r\n var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {\r\n if (editor.selection.isCollapsed()) {\r\n var inlines = filter(elms, isInlineTarget);\r\n each(inlines, function (inline) {\r\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {\r\n return renderCaretLocation(editor, caret, location);\r\n });\r\n });\r\n }\r\n };\r\n var move = function (editor, caret, forward) {\r\n return function () {\r\n return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;\r\n };\r\n };\r\n var moveWord = function (forward, editor, caret) {\r\n return function () {\r\n return isFeatureEnabled(editor) ? $_dessn94bjkmcwl5p.moveByWord(forward, editor) : false;\r\n };\r\n };\r\n var setupSelectedState = function (editor) {\r\n var caret = Cell(null);\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n editor.on('NodeChange', function (e) {\r\n if (isFeatureEnabled(editor)) {\r\n toggleInlines(isInlineTarget, editor.dom, e.parents);\r\n safeRemoveCaretContainer(editor, caret);\r\n renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents);\r\n }\r\n });\r\n return caret;\r\n };\r\n var moveNextWord = curry(moveWord, true);\r\n var movePrevWord = curry(moveWord, false);\r\n var $_dl6t9m4ajkmcwl5b = {\r\n move: move,\r\n moveNextWord: moveNextWord,\r\n movePrevWord: movePrevWord,\r\n setupSelectedState: setupSelectedState,\r\n setCaretPosition: setCaretPosition\r\n };\r\n\r\n var isFeatureEnabled$1 = function (editor) {\r\n return editor.settings.inline_boundaries !== false;\r\n };\r\n var rangeFromPositions = function (from, to) {\r\n var range = document.createRange();\r\n range.setStart(from.container(), from.offset());\r\n range.setEnd(to.container(), to.offset());\r\n return range;\r\n };\r\n var hasOnlyTwoOrLessPositionsLeft = function (elm) {\r\n return liftN([\r\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\r\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\r\n ], function (firstPos, lastPos) {\r\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\r\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFirstPos).map(function (pos) {\r\n return pos.isEqual(normalizedLastPos);\r\n }).getOr(true);\r\n }).getOr(true);\r\n };\r\n var setCaretLocation = function (editor, caret) {\r\n return function (location$$1) {\r\n return $_efgx6546jkmcwl4n.renderCaret(caret, location$$1).map(function (pos) {\r\n $_dl6t9m4ajkmcwl5b.setCaretPosition(editor, pos);\r\n return true;\r\n }).getOr(false);\r\n };\r\n };\r\n var deleteFromTo = function (editor, caret, from, to) {\r\n var rootNode = editor.getBody();\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n editor.undoManager.ignore(function () {\r\n editor.selection.setRng(rangeFromPositions(from, to));\r\n editor.execCommand('Delete');\r\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_gau9ep48jkmcwl4x.inside).map(setCaretLocation(editor, caret));\r\n });\r\n editor.nodeChanged();\r\n };\r\n var rescope$1 = function (rootNode, node) {\r\n var parentBlock = getParentBlock(node, rootNode);\r\n return parentBlock ? parentBlock : rootNode;\r\n };\r\n var backspaceDeleteCollapsed = function (editor, caret, forward, from) {\r\n var rootNode = rescope$1(editor.getBody(), from.container());\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n var fromLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, from);\r\n return fromLocation.bind(function (location$$1) {\r\n if (forward) {\r\n return location$$1.fold(constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none);\r\n } else {\r\n return location$$1.fold(Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))));\r\n }\r\n }).map(setCaretLocation(editor, caret)).getOrThunk(function () {\r\n var toPosition = $_1m3f3j2yjkmcwkqg.navigate(forward, rootNode, from);\r\n var toLocation = toPosition.bind(function (pos) {\r\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, pos);\r\n });\r\n if (fromLocation.isSome() && toLocation.isSome()) {\r\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {\r\n if (hasOnlyTwoOrLessPositionsLeft(elm)) {\r\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(elm));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }).getOr(false);\r\n } else {\r\n return toLocation.bind(function (_) {\r\n return toPosition.map(function (to) {\r\n if (forward) {\r\n deleteFromTo(editor, caret, from, to);\r\n } else {\r\n deleteFromTo(editor, caret, to, from);\r\n }\r\n return true;\r\n });\r\n }).getOr(false);\r\n }\r\n });\r\n };\r\n var backspaceDelete$3 = function (editor, caret, forward) {\r\n if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) {\r\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n return backspaceDeleteCollapsed(editor, caret, forward, from);\r\n }\r\n return false;\r\n };\r\n var $_dqvreg45jkmcwl4e = { backspaceDelete: backspaceDelete$3 };\r\n\r\n var tableCellRng = Immutable('start', 'end');\r\n var tableSelection = Immutable('rng', 'table', 'cells');\r\n var deleteAction = Adt.generate([\r\n { removeTable: ['element'] },\r\n { emptyCells: ['cells'] }\r\n ]);\r\n var isRootFromElement = function (root) {\r\n return curry($_e4hu6h1ejkmcwkgj.eq, root);\r\n };\r\n var getClosestCell$1 = function (container, isRoot) {\r\n return $_4ki4d929jkmcwkmn.closest(Element$$1.fromDom(container), 'td,th', isRoot);\r\n };\r\n var getClosestTable = function (cell, isRoot) {\r\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', isRoot);\r\n };\r\n var isExpandedCellRng = function (cellRng) {\r\n return $_e4hu6h1ejkmcwkgj.eq(cellRng.start(), cellRng.end()) === false;\r\n };\r\n var getTableFromCellRng = function (cellRng, isRoot) {\r\n return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) {\r\n return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) {\r\n return $_e4hu6h1ejkmcwkgj.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();\r\n });\r\n });\r\n };\r\n var getTableCells = function (table) {\r\n return $_2gqm0n27jkmcwkmi.descendants(table, 'td,th');\r\n };\r\n var getCellRangeFromStartTable = function (cellRng, isRoot) {\r\n return getClosestTable(cellRng.start(), isRoot).bind(function (table) {\r\n return last(getTableCells(table)).map(function (endCell) {\r\n return tableCellRng(cellRng.start(), endCell);\r\n });\r\n });\r\n };\r\n var partialSelection = function (isRoot, rng) {\r\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\r\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\r\n return rng.collapsed ? Option.none() : liftN([\r\n startCell,\r\n endCell\r\n ], tableCellRng).fold(function () {\r\n return startCell.fold(function () {\r\n return endCell.bind(function (endCell) {\r\n return getClosestTable(endCell, isRoot).bind(function (table) {\r\n return head(getTableCells(table)).map(function (startCell) {\r\n return tableCellRng(startCell, endCell);\r\n });\r\n });\r\n });\r\n }, function (startCell) {\r\n return getClosestTable(startCell, isRoot).bind(function (table) {\r\n return last(getTableCells(table)).map(function (endCell) {\r\n return tableCellRng(startCell, endCell);\r\n });\r\n });\r\n });\r\n }, function (cellRng) {\r\n return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot);\r\n });\r\n };\r\n var isWithinSameTable = function (isRoot, cellRng) {\r\n return getTableFromCellRng(cellRng, isRoot).isSome();\r\n };\r\n var getCellRng = function (rng, isRoot) {\r\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\r\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\r\n return liftN([\r\n startCell,\r\n endCell\r\n ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) {\r\n return isWithinSameTable(isRoot, cellRng);\r\n }).orThunk(function () {\r\n return partialSelection(isRoot, rng);\r\n });\r\n };\r\n var getTableSelectionFromCellRng = function (cellRng, isRoot) {\r\n return getTableFromCellRng(cellRng, isRoot).map(function (table) {\r\n return tableSelection(cellRng, table, getTableCells(table));\r\n });\r\n };\r\n var getTableSelectionFromRng = function (root, rng) {\r\n var isRoot = isRootFromElement(root);\r\n return getCellRng(rng, isRoot).bind(function (cellRng) {\r\n return getTableSelectionFromCellRng(cellRng, isRoot);\r\n });\r\n };\r\n var getCellIndex = function (cells, cell) {\r\n return findIndex(cells, function (x) {\r\n return $_e4hu6h1ejkmcwkgj.eq(x, cell);\r\n });\r\n };\r\n var getSelectedCells = function (tableSelection) {\r\n return liftN([\r\n getCellIndex(tableSelection.cells(), tableSelection.rng().start()),\r\n getCellIndex(tableSelection.cells(), tableSelection.rng().end())\r\n ], function (startIndex, endIndex) {\r\n return tableSelection.cells().slice(startIndex, endIndex + 1);\r\n });\r\n };\r\n var getAction = function (tableSelection) {\r\n return getSelectedCells(tableSelection).map(function (selected) {\r\n var cells = tableSelection.cells();\r\n return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected);\r\n });\r\n };\r\n var getActionFromCells = function (cells) {\r\n return deleteAction.emptyCells(cells);\r\n };\r\n var getActionFromRange = function (root, rng) {\r\n return getTableSelectionFromRng(root, rng).bind(getAction);\r\n };\r\n var $_2x2sml4djkmcwl68 = {\r\n getActionFromRange: getActionFromRange,\r\n getActionFromCells: getActionFromCells\r\n };\r\n\r\n var getRanges = function (selection) {\r\n var ranges = [];\r\n if (selection) {\r\n for (var i = 0; i < selection.rangeCount; i++) {\r\n ranges.push(selection.getRangeAt(i));\r\n }\r\n }\r\n return ranges;\r\n };\r\n var getSelectedNodes = function (ranges) {\r\n return bind(ranges, function (range$$1) {\r\n var node = getSelectedNode(range$$1);\r\n return node ? [Element$$1.fromDom(node)] : [];\r\n });\r\n };\r\n var hasMultipleRanges = function (selection) {\r\n return getRanges(selection).length > 1;\r\n };\r\n var $_admly54fjkmcwl6u = {\r\n getRanges: getRanges,\r\n getSelectedNodes: getSelectedNodes,\r\n hasMultipleRanges: hasMultipleRanges\r\n };\r\n\r\n var getCellsFromRanges = function (ranges) {\r\n return filter($_admly54fjkmcwl6u.getSelectedNodes(ranges), isTableCell);\r\n };\r\n var getCellsFromElement = function (elm) {\r\n var selectedCells = $_2gqm0n27jkmcwkmi.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]');\r\n return selectedCells;\r\n };\r\n var getCellsFromElementOrRanges = function (ranges, element) {\r\n var selectedCells = getCellsFromElement(element);\r\n var rangeCells = getCellsFromRanges(ranges);\r\n return selectedCells.length > 0 ? selectedCells : rangeCells;\r\n };\r\n var getCellsFromEditor = function (editor) {\r\n return getCellsFromElementOrRanges($_admly54fjkmcwl6u.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));\r\n };\r\n var $_7q5gk44ejkmcwl6p = {\r\n getCellsFromRanges: getCellsFromRanges,\r\n getCellsFromElement: getCellsFromElement,\r\n getCellsFromElementOrRanges: getCellsFromElementOrRanges,\r\n getCellsFromEditor: getCellsFromEditor\r\n };\r\n\r\n var emptyCells = function (editor, cells) {\r\n each(cells, $_zygeg3ljkmcwkvo.fillWithPaddingBr);\r\n editor.selection.setCursorLocation(cells[0].dom(), 0);\r\n return true;\r\n };\r\n var deleteTableElement = function (editor, table) {\r\n $_4yq1i444jkmcwl3w.deleteElement(editor, false, table);\r\n return true;\r\n };\r\n var deleteCellRange = function (editor, rootElm, rng) {\r\n return $_2x2sml4djkmcwl68.getActionFromRange(rootElm, rng).map(function (action) {\r\n return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor));\r\n });\r\n };\r\n var deleteCaptionRange = function (editor, caption) {\r\n return emptyElement(editor, caption);\r\n };\r\n var deleteTableRange = function (editor, rootElm, rng, startElm) {\r\n return getParentCaption(rootElm, startElm).fold(function () {\r\n return deleteCellRange(editor, rootElm, rng);\r\n }, function (caption) {\r\n return deleteCaptionRange(editor, caption);\r\n }).getOr(false);\r\n };\r\n var deleteRange$1 = function (editor, startElm) {\r\n var rootNode = Element$$1.fromDom(editor.getBody());\r\n var rng = editor.selection.getRng();\r\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\r\n return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);\r\n };\r\n var getParentCell = function (rootElm, elm) {\r\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), isTableCell);\r\n };\r\n var getParentCaption = function (rootElm, elm) {\r\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), function (elm) {\r\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\r\n });\r\n };\r\n var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {\r\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\r\n return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {\r\n return $_e4hu6h1ejkmcwkgj.eq(toCell, fromCell) === false;\r\n });\r\n });\r\n };\r\n var emptyElement = function (editor, elm) {\r\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(elm);\r\n editor.selection.setCursorLocation(elm.dom(), 0);\r\n return Option.some(true);\r\n };\r\n var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromCaption.dom()).bind(function (first) {\r\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(fromCaption.dom()).map(function (last$$1) {\r\n return forward ? from.isEqual(first) && to.isEqual(last$$1) : from.isEqual(last$$1) && to.isEqual(first);\r\n });\r\n }).getOr(true);\r\n };\r\n var emptyCaretCaption = function (editor, elm) {\r\n return emptyElement(editor, elm);\r\n };\r\n var validateCaretCaption = function (rootElm, fromCaption, to) {\r\n return getParentCaption(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCaption) {\r\n return $_e4hu6h1ejkmcwkgj.eq(toCaption, fromCaption) === false;\r\n });\r\n };\r\n var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {\r\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\r\n return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to);\r\n }).or(Option.some(true));\r\n };\r\n var deleteCaretCells = function (editor, forward, rootElm, startElm) {\r\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n return getParentCell(rootElm, startElm).bind(function (fromCell) {\r\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from);\r\n });\r\n };\r\n var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) {\r\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\r\n };\r\n var deleteCaret = function (editor, forward, startElm) {\r\n var rootElm = Element$$1.fromDom(editor.getBody());\r\n return getParentCaption(rootElm, startElm).fold(function () {\r\n return deleteCaretCells(editor, forward, rootElm, startElm);\r\n }, function (fromCaption) {\r\n return deleteCaretCaption(editor, forward, rootElm, fromCaption);\r\n }).getOr(false);\r\n };\r\n var backspaceDelete$4 = function (editor, forward) {\r\n var startElm = Element$$1.fromDom(editor.selection.getStart(true));\r\n var cells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\r\n return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);\r\n };\r\n var $_5lrlvq4cjkmcwl5t = { backspaceDelete: backspaceDelete$4 };\r\n\r\n var nativeCommand = function (editor, command) {\r\n editor.getDoc().execCommand(command, false, null);\r\n };\r\n var deleteCommand = function (editor) {\r\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, false)) {\r\n return;\r\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, false)) {\r\n return;\r\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, false)) {\r\n return;\r\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\r\n return;\r\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, false)) {\r\n return;\r\n } else {\r\n nativeCommand(editor, 'Delete');\r\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\r\n }\r\n };\r\n var forwardDeleteCommand = function (editor) {\r\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, true)) {\r\n return;\r\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, true)) {\r\n return;\r\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, true)) {\r\n return;\r\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\r\n return;\r\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, true)) {\r\n return;\r\n } else {\r\n nativeCommand(editor, 'ForwardDelete');\r\n }\r\n };\r\n var $_3ahn8y3pjkmcwkwc = {\r\n deleteCommand: deleteCommand,\r\n forwardDeleteCommand: forwardDeleteCommand\r\n };\r\n\r\n var getSpecifiedFontProp = function (propName, rootElm, elm) {\r\n var getProperty = function (elm) {\r\n return $_4enzit13jkmcwke5.getRaw(elm, propName);\r\n };\r\n var isRoot = function (elm) {\r\n return $_e4hu6h1ejkmcwkgj.eq(Element$$1.fromDom(rootElm), elm);\r\n };\r\n return $_253nd92ajkmcwkmp.closest(Element$$1.fromDom(elm), function (elm) {\r\n return getProperty(elm).isSome();\r\n }, isRoot).bind(getProperty);\r\n };\r\n var round$1 = function (number, precision) {\r\n var factor = Math.pow(10, precision);\r\n return Math.round(number * factor) / factor;\r\n };\r\n var toPt = function (fontSize, precision) {\r\n if (/[0-9.]+px$/.test(fontSize)) {\r\n return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\r\n }\r\n return fontSize;\r\n };\r\n var normalizeFontFamily = function (fontFamily) {\r\n return fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\r\n };\r\n var getComputedFontProp = function (propName, elm) {\r\n return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true));\r\n };\r\n var getFontProp = function (propName) {\r\n return function (rootElm, elm) {\r\n return Option.from(elm).map(Element$$1.fromDom).filter($_2xwdjv11jkmcwke0.isElement).bind(function (element) {\r\n return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));\r\n }).getOr('');\r\n };\r\n };\r\n var $_3qs0f64hjkmcwl74 = {\r\n getFontSize: getFontProp('font-size'),\r\n getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),\r\n toPt: toPt\r\n };\r\n\r\n var findFirstCaretElement = function (editor) {\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).map(function (caret) {\r\n var container = caret.container();\r\n return $_bjermr1rjkmcwkij.isText(container) ? container.parentNode : container;\r\n });\r\n };\r\n var isRangeAtStartOfNode = function (rng, root) {\r\n return rng.startContainer === root && rng.startOffset === 0;\r\n };\r\n var getCaretElement = function (editor) {\r\n return Option.from(editor.selection.getRng()).bind(function (rng) {\r\n var root = editor.getBody();\r\n return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true));\r\n });\r\n };\r\n var fromFontSizeNumber = function (editor, value) {\r\n if (/^[0-9\\.]+$/.test(value)) {\r\n var fontSizeNumber = parseInt(value, 10);\r\n if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\r\n var fontSizes = $_2ycm1438jkmcwkta.getFontStyleValues(editor);\r\n var fontClasses = $_2ycm1438jkmcwkta.getFontSizeClasses(editor);\r\n if (fontClasses) {\r\n return fontClasses[fontSizeNumber - 1] || value;\r\n } else {\r\n return fontSizes[fontSizeNumber - 1] || value;\r\n }\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n return value;\r\n }\r\n };\r\n var fontNameAction = function (editor, value) {\r\n editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) });\r\n editor.nodeChanged();\r\n };\r\n var fontNameQuery = function (editor) {\r\n return getCaretElement(editor).fold(function () {\r\n return findFirstCaretElement(editor).map(function (caretElement) {\r\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\r\n }).getOr('');\r\n }, function (caretElement) {\r\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\r\n });\r\n };\r\n var fontSizeAction = function (editor, value) {\r\n editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });\r\n editor.nodeChanged();\r\n };\r\n var fontSizeQuery = function (editor) {\r\n return getCaretElement(editor).fold(function () {\r\n return findFirstCaretElement(editor).map(function (caretElement) {\r\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\r\n }).getOr('');\r\n }, function (caretElement) {\r\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\r\n });\r\n };\r\n\r\n var isEq$2 = function (rng1, rng2) {\r\n return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);\r\n };\r\n var $_axtxv74kjkmcwl84 = { isEq: isEq$2 };\r\n\r\n var findParent = function (node, rootNode, predicate) {\r\n while (node && node !== rootNode) {\r\n if (predicate(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var hasParent = function (node, rootNode, predicate) {\r\n return findParent(node, rootNode, predicate) !== null;\r\n };\r\n var hasParentWithName = function (node, rootNode, name) {\r\n return hasParent(node, rootNode, function (node) {\r\n return node.nodeName === name;\r\n });\r\n };\r\n var isTable$2 = function (node) {\r\n return node && node.nodeName === 'TABLE';\r\n };\r\n var isTableCell$3 = function (node) {\r\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\r\n };\r\n var isCeFalseCaretContainer = function (node, rootNode) {\r\n return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false;\r\n };\r\n var hasBrBeforeAfter = function (dom, node, left) {\r\n var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot());\r\n while (node = walker[left ? 'prev' : 'next']()) {\r\n if ($_bjermr1rjkmcwkij.isBr(node)) {\r\n return true;\r\n }\r\n }\r\n };\r\n var isPrevNode = function (node, name) {\r\n return node.previousSibling && node.previousSibling.nodeName === name;\r\n };\r\n var hasContentEditableFalseParent = function (body, node) {\r\n while (node && node !== body) {\r\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n };\r\n var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) {\r\n var walker, lastInlineElement, parentBlockContainer;\r\n var body = dom.getRoot();\r\n var node;\r\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\r\n parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;\r\n if (left && $_bjermr1rjkmcwkij.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\r\n return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode)));\r\n }\r\n walker = new TreeWalker(startNode, parentBlockContainer);\r\n while (node = walker[left ? 'prev' : 'next']()) {\r\n if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\r\n return Option.none();\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\r\n if (hasParentWithName(node, body, 'A') === false) {\r\n return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0));\r\n }\r\n return Option.none();\r\n }\r\n if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r\n return Option.none();\r\n }\r\n lastInlineElement = node;\r\n }\r\n if (collapsed && lastInlineElement) {\r\n return Option.some(CaretPosition(lastInlineElement, 0));\r\n }\r\n return Option.none();\r\n };\r\n var normalizeEndPoint = function (dom, collapsed, start, rng) {\r\n var container, offset, walker;\r\n var body = dom.getRoot();\r\n var node, nonEmptyElementsMap;\r\n var directionLeft, isAfterNode, normalized = false;\r\n container = rng[(start ? 'start' : 'end') + 'Container'];\r\n offset = rng[(start ? 'start' : 'end') + 'Offset'];\r\n isAfterNode = $_bjermr1rjkmcwkij.isElement(container) && offset === container.childNodes.length;\r\n nonEmptyElementsMap = dom.schema.getNonEmptyElements();\r\n directionLeft = start;\r\n if (isCaretContainer(container)) {\r\n return Option.none();\r\n }\r\n if ($_bjermr1rjkmcwkij.isElement(container) && offset > container.childNodes.length - 1) {\r\n directionLeft = false;\r\n }\r\n if ($_bjermr1rjkmcwkij.isDocument(container)) {\r\n container = body;\r\n offset = 0;\r\n }\r\n if (container === body) {\r\n if (directionLeft) {\r\n node = container.childNodes[offset > 0 ? offset - 1 : 0];\r\n if (node) {\r\n if (isCaretContainer(node)) {\r\n return Option.none();\r\n }\r\n if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\r\n return Option.none();\r\n }\r\n }\r\n }\r\n if (container.hasChildNodes()) {\r\n offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\r\n container = container.childNodes[offset];\r\n offset = $_bjermr1rjkmcwkij.isText(container) && isAfterNode ? container.data.length : 0;\r\n if (!collapsed && container === body.lastChild && isTable$2(container)) {\r\n return Option.none();\r\n }\r\n if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) {\r\n return Option.none();\r\n }\r\n if (container.hasChildNodes() && isTable$2(container) === false) {\r\n node = container;\r\n walker = new TreeWalker(container, body);\r\n do {\r\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node) || isCaretContainer(node)) {\r\n normalized = false;\r\n break;\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\r\n offset = directionLeft ? 0 : node.nodeValue.length;\r\n container = node;\r\n normalized = true;\r\n break;\r\n }\r\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) {\r\n offset = dom.nodeIndex(node);\r\n container = node.parentNode;\r\n if (!directionLeft) {\r\n offset++;\r\n }\r\n normalized = true;\r\n break;\r\n }\r\n } while (node = directionLeft ? walker.next() : walker.prev());\r\n }\r\n }\r\n }\r\n if (collapsed) {\r\n if ($_bjermr1rjkmcwkij.isText(container) && offset === 0) {\r\n findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) {\r\n container = pos.container();\r\n offset = pos.offset();\r\n normalized = true;\r\n });\r\n }\r\n if ($_bjermr1rjkmcwkij.isElement(container)) {\r\n node = container.childNodes[offset];\r\n if (!node) {\r\n node = container.childNodes[offset - 1];\r\n }\r\n if (node && $_bjermr1rjkmcwkij.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\r\n findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) {\r\n container = pos.container();\r\n offset = pos.offset();\r\n normalized = true;\r\n });\r\n }\r\n }\r\n }\r\n if (directionLeft && !collapsed && $_bjermr1rjkmcwkij.isText(container) && offset === container.nodeValue.length) {\r\n findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) {\r\n container = pos.container();\r\n offset = pos.offset();\r\n normalized = true;\r\n });\r\n }\r\n return normalized ? Option.some(CaretPosition(container, offset)) : Option.none();\r\n };\r\n var normalize$1 = function (dom, rng) {\r\n var collapsed = rng.collapsed, normRng = rng.cloneRange();\r\n var startPos = CaretPosition.fromRangeStart(rng);\r\n normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) {\r\n if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\r\n normRng.setStart(pos.container(), pos.offset());\r\n }\r\n });\r\n if (!collapsed) {\r\n normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) {\r\n normRng.setEnd(pos.container(), pos.offset());\r\n });\r\n }\r\n if (collapsed) {\r\n normRng.collapse(true);\r\n }\r\n return $_axtxv74kjkmcwl84.isEq(rng, normRng) ? Option.none() : Option.some(normRng);\r\n };\r\n var $_21c07i4jjkmcwl7w = { normalize: normalize$1 };\r\n\r\n var hasRightSideContent = function (schema, container, parentBlock) {\r\n var walker = new TreeWalker(container, parentBlock);\r\n var node;\r\n var nonEmptyElementsMap = schema.getNonEmptyElements();\r\n while (node = walker.next()) {\r\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {\r\n return true;\r\n }\r\n }\r\n };\r\n var scrollToBr = function (dom, selection, brElm) {\r\n var marker = dom.create('span', {}, ' ');\r\n brElm.parentNode.insertBefore(marker, brElm);\r\n selection.scrollIntoView(marker);\r\n dom.remove(marker);\r\n };\r\n var moveSelectionToBr = function (dom, selection, brElm, extraBr) {\r\n var rng = dom.createRng();\r\n if (!extraBr) {\r\n rng.setStartAfter(brElm);\r\n rng.setEndAfter(brElm);\r\n } else {\r\n rng.setStartBefore(brElm);\r\n rng.setEndBefore(brElm);\r\n }\r\n selection.setRng(rng);\r\n };\r\n var insertBrAtCaret = function (editor, evt) {\r\n var selection = editor.selection, dom = editor.dom;\r\n var brElm, extraBr;\r\n var rng = selection.getRng();\r\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\r\n rng.setStart(normRng.startContainer, normRng.startOffset);\r\n rng.setEnd(normRng.endContainer, normRng.endOffset);\r\n });\r\n var offset = rng.startOffset;\r\n var container = rng.startContainer;\r\n if (container.nodeType === 1 && container.hasChildNodes()) {\r\n var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\r\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\r\n if (isAfterLastNodeInContainer && container.nodeType === 3) {\r\n offset = container.nodeValue.length;\r\n } else {\r\n offset = 0;\r\n }\r\n }\r\n var parentBlock = dom.getParent(container, dom.isBlock);\r\n var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\r\n var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\r\n var isControlKey = evt && evt.ctrlKey;\r\n if (containerBlockName === 'LI' && !isControlKey) {\r\n parentBlock = containerBlock;\r\n }\r\n if (container && container.nodeType === 3 && offset >= container.nodeValue.length) {\r\n if (!hasRightSideContent(editor.schema, container, parentBlock)) {\r\n brElm = dom.create('br');\r\n rng.insertNode(brElm);\r\n rng.setStartAfter(brElm);\r\n rng.setEndAfter(brElm);\r\n extraBr = true;\r\n }\r\n }\r\n brElm = dom.create('br');\r\n rng.insertNode(brElm);\r\n scrollToBr(dom, selection, brElm);\r\n moveSelectionToBr(dom, selection, brElm, extraBr);\r\n editor.undoManager.add();\r\n };\r\n var insertBrBefore = function (editor, inline) {\r\n var br = Element$$1.fromTag('br');\r\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(inline), br);\r\n editor.undoManager.add();\r\n };\r\n var insertBrAfter = function (editor, inline) {\r\n if (!hasBrAfter(editor.getBody(), inline)) {\r\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));\r\n }\r\n var br = Element$$1.fromTag('br');\r\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), br);\r\n scrollToBr(editor.dom, editor.selection, br.dom());\r\n moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);\r\n editor.undoManager.add();\r\n };\r\n var isBeforeBr = function (pos) {\r\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\r\n };\r\n var hasBrAfter = function (rootNode, startNode) {\r\n if (isBeforeBr(CaretPosition$1.after(startNode))) {\r\n return true;\r\n } else {\r\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {\r\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\r\n }).getOr(false);\r\n }\r\n };\r\n var isAnchorLink = function (elm) {\r\n return elm && elm.nodeName === 'A' && 'href' in elm;\r\n };\r\n var isInsideAnchor = function (location) {\r\n return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false));\r\n };\r\n var readInlineAnchorLocation = function (editor) {\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor);\r\n };\r\n var insertBrOutsideAnchor = function (editor, location) {\r\n location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\r\n };\r\n var insert = function (editor, evt) {\r\n var anchorLocation = readInlineAnchorLocation(editor);\r\n if (anchorLocation.isSome()) {\r\n anchorLocation.each(curry(insertBrOutsideAnchor, editor));\r\n } else {\r\n insertBrAtCaret(editor, evt);\r\n }\r\n };\r\n var $_dc07up4ijkmcwl7n = { insert: insert };\r\n\r\n var adt = Adt.generate([\r\n { 'before': ['element'] },\r\n {\r\n 'on': [\r\n 'element',\r\n 'offset'\r\n ]\r\n },\r\n { after: ['element'] }\r\n ]);\r\n var cata = function (subject, onBefore, onOn, onAfter) {\r\n return subject.fold(onBefore, onOn, onAfter);\r\n };\r\n var getStart = function (situ) {\r\n return situ.fold(identity, identity, identity);\r\n };\r\n var $_1s5vuk4njkmcwl8r = {\r\n before: adt.before,\r\n on: adt.on,\r\n after: adt.after,\r\n cata: cata,\r\n getStart: getStart\r\n };\r\n\r\n var type$1 = Adt.generate([\r\n { domRange: ['rng'] },\r\n {\r\n relative: [\r\n 'startSitu',\r\n 'finishSitu'\r\n ]\r\n },\r\n {\r\n exact: [\r\n 'start',\r\n 'soffset',\r\n 'finish',\r\n 'foffset'\r\n ]\r\n }\r\n ]);\r\n var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');\r\n var exactFromRange = function (simRange) {\r\n return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());\r\n };\r\n var getStart$1 = function (selection) {\r\n return selection.match({\r\n domRange: function (rng) {\r\n return Element$$1.fromDom(rng.startContainer);\r\n },\r\n relative: function (startSitu, finishSitu) {\r\n return $_1s5vuk4njkmcwl8r.getStart(startSitu);\r\n },\r\n exact: function (start, soffset, finish, foffset) {\r\n return start;\r\n }\r\n });\r\n };\r\n var getWin = function (selection) {\r\n var start = getStart$1(selection);\r\n return $_ca6pc118jkmcwkfs.defaultView(start);\r\n };\r\n var $_2v8ne64mjkmcwl8l = {\r\n domRange: type$1.domRange,\r\n relative: type$1.relative,\r\n exact: type$1.exact,\r\n exactFromRange: exactFromRange,\r\n range: range$1,\r\n getWin: getWin\r\n };\r\n\r\n var browser$3 = $_b1ykk4ojkmcwkcj.detect().browser;\r\n var clamp = function (offset, element) {\r\n var max = $_2xwdjv11jkmcwke0.isText(element) ? $_ckzc193ejkmcwktu.get(element).length : $_ca6pc118jkmcwkfs.children(element).length + 1;\r\n if (offset > max) {\r\n return max;\r\n } else if (offset < 0) {\r\n return 0;\r\n }\r\n return offset;\r\n };\r\n var normalizeRng = function (rng) {\r\n return $_2v8ne64mjkmcwl8l.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));\r\n };\r\n var isOrContains = function (root, elm) {\r\n return $_e4hu6h1ejkmcwkgj.contains(root, elm) || $_e4hu6h1ejkmcwkgj.eq(root, elm);\r\n };\r\n var isRngInRoot = function (root) {\r\n return function (rng) {\r\n return isOrContains(root, rng.start()) && isOrContains(root, rng.finish());\r\n };\r\n };\r\n var shouldStore = function (editor) {\r\n return editor.inline === true || browser$3.isIE();\r\n };\r\n var nativeRangeToSelectionRange = function (r) {\r\n return $_2v8ne64mjkmcwl8l.range(Element$$1.fromDom(r.startContainer), r.startOffset, Element$$1.fromDom(r.endContainer), r.endOffset);\r\n };\r\n var readRange = function (win) {\r\n var selection = win.getSelection();\r\n var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0));\r\n return rng.map(nativeRangeToSelectionRange);\r\n };\r\n var getBookmark$2 = function (root) {\r\n var win = $_ca6pc118jkmcwkfs.defaultView(root);\r\n return readRange(win.dom()).filter(isRngInRoot(root));\r\n };\r\n var validate = function (root, bookmark) {\r\n return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\r\n };\r\n var bookmarkToNativeRng = function (bookmark) {\r\n var rng = document.createRange();\r\n try {\r\n rng.setStart(bookmark.start().dom(), bookmark.soffset());\r\n rng.setEnd(bookmark.finish().dom(), bookmark.foffset());\r\n return Option.some(rng);\r\n } catch (_) {\r\n return Option.none();\r\n }\r\n };\r\n var store = function (editor) {\r\n var newBookmark = shouldStore(editor) ? getBookmark$2(Element$$1.fromDom(editor.getBody())) : Option.none();\r\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\r\n };\r\n var storeNative = function (editor, rng) {\r\n var root = Element$$1.fromDom(editor.getBody());\r\n var range = shouldStore(editor) ? Option.from(rng) : Option.none();\r\n var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));\r\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\r\n };\r\n var getRng = function (editor) {\r\n var bookmark = editor.bookmark ? editor.bookmark : Option.none();\r\n return bookmark.bind(curry(validate, Element$$1.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);\r\n };\r\n var restore = function (editor) {\r\n getRng(editor).each(function (rng) {\r\n editor.selection.setRng(rng);\r\n });\r\n };\r\n var $_39c3zs4ljkmcwl86 = {\r\n store: store,\r\n storeNative: storeNative,\r\n readRange: readRange,\r\n restore: restore,\r\n getRng: getRng,\r\n getBookmark: getBookmark$2,\r\n validate: validate\r\n };\r\n\r\n var indentElement = function (dom, command, useMargin, value, unit, element) {\r\n if (dom.getContentEditable(element) === 'false') {\r\n return;\r\n }\r\n if (element.nodeName !== 'LI') {\r\n var indentStyleName = useMargin ? 'margin' : 'padding';\r\n indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName;\r\n indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left';\r\n if (command === 'outdent') {\r\n var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value);\r\n dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\r\n } else {\r\n var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit;\r\n dom.setStyle(element, indentStyleName, styleValue);\r\n }\r\n }\r\n };\r\n var handle = function (editor, command) {\r\n var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter;\r\n var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0];\r\n var indentValue = parseInt(settings.indentation, 10);\r\n var useMargin = editor.getParam('indent_use_margin', false);\r\n if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {\r\n if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {\r\n formatter.apply('div');\r\n }\r\n each(selection.getSelectedBlocks(), function (element) {\r\n return indentElement(dom, command, useMargin, indentValue, indentUnit, element);\r\n });\r\n }\r\n };\r\n\r\n var each$10 = $_4ujg4tljkmcwkbk.each;\r\n var extend$2 = $_4ujg4tljkmcwkbk.extend;\r\n var map$3 = $_4ujg4tljkmcwkbk.map;\r\n var inArray$2 = $_4ujg4tljkmcwkbk.inArray;\r\n function EditorCommands (editor) {\r\n var dom, selection, formatter;\r\n var commands = {\r\n state: {},\r\n exec: {},\r\n value: {}\r\n };\r\n var settings = editor.settings, bookmark;\r\n editor.on('PreInit', function () {\r\n dom = editor.dom;\r\n selection = editor.selection;\r\n settings = editor.settings;\r\n formatter = editor.formatter;\r\n });\r\n var execCommand = function (command, ui, value, args) {\r\n var func, customCommand, state = false;\r\n if (editor.removed) {\r\n return;\r\n }\r\n if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {\r\n editor.focus();\r\n } else {\r\n $_39c3zs4ljkmcwl86.restore(editor);\r\n }\r\n args = editor.fire('BeforeExecCommand', {\r\n command: command,\r\n ui: ui,\r\n value: value\r\n });\r\n if (args.isDefaultPrevented()) {\r\n return false;\r\n }\r\n customCommand = command.toLowerCase();\r\n if (func = commands.exec[customCommand]) {\r\n func(customCommand, ui, value);\r\n editor.fire('ExecCommand', {\r\n command: command,\r\n ui: ui,\r\n value: value\r\n });\r\n return true;\r\n }\r\n each$10(editor.plugins, function (p) {\r\n if (p.execCommand && p.execCommand(command, ui, value)) {\r\n editor.fire('ExecCommand', {\r\n command: command,\r\n ui: ui,\r\n value: value\r\n });\r\n state = true;\r\n return false;\r\n }\r\n });\r\n if (state) {\r\n return state;\r\n }\r\n if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {\r\n editor.fire('ExecCommand', {\r\n command: command,\r\n ui: ui,\r\n value: value\r\n });\r\n return true;\r\n }\r\n try {\r\n state = editor.getDoc().execCommand(command, ui, value);\r\n } catch (ex) {\r\n }\r\n if (state) {\r\n editor.fire('ExecCommand', {\r\n command: command,\r\n ui: ui,\r\n value: value\r\n });\r\n return true;\r\n }\r\n return false;\r\n };\r\n var queryCommandState = function (command) {\r\n var func;\r\n if (editor.quirks.isHidden() || editor.removed) {\r\n return;\r\n }\r\n command = command.toLowerCase();\r\n if (func = commands.state[command]) {\r\n return func(command);\r\n }\r\n try {\r\n return editor.getDoc().queryCommandState(command);\r\n } catch (ex) {\r\n }\r\n return false;\r\n };\r\n var queryCommandValue = function (command) {\r\n var func;\r\n if (editor.quirks.isHidden() || editor.removed) {\r\n return;\r\n }\r\n command = command.toLowerCase();\r\n if (func = commands.value[command]) {\r\n return func(command);\r\n }\r\n try {\r\n return editor.getDoc().queryCommandValue(command);\r\n } catch (ex) {\r\n }\r\n };\r\n var addCommands = function (commandList, type) {\r\n type = type || 'exec';\r\n each$10(commandList, function (callback, command) {\r\n each$10(command.toLowerCase().split(','), function (command) {\r\n commands[type][command] = callback;\r\n });\r\n });\r\n };\r\n var addCommand = function (command, callback, scope) {\r\n command = command.toLowerCase();\r\n commands.exec[command] = function (command, ui, value, args) {\r\n return callback.call(scope || editor, ui, value, args);\r\n };\r\n };\r\n var queryCommandSupported = function (command) {\r\n command = command.toLowerCase();\r\n if (commands.exec[command]) {\r\n return true;\r\n }\r\n try {\r\n return editor.getDoc().queryCommandSupported(command);\r\n } catch (ex) {\r\n }\r\n return false;\r\n };\r\n var addQueryStateHandler = function (command, callback, scope) {\r\n command = command.toLowerCase();\r\n commands.state[command] = function () {\r\n return callback.call(scope || editor);\r\n };\r\n };\r\n var addQueryValueHandler = function (command, callback, scope) {\r\n command = command.toLowerCase();\r\n commands.value[command] = function () {\r\n return callback.call(scope || editor);\r\n };\r\n };\r\n var hasCustomCommand = function (command) {\r\n command = command.toLowerCase();\r\n return !!commands.exec[command];\r\n };\r\n extend$2(this, {\r\n execCommand: execCommand,\r\n queryCommandState: queryCommandState,\r\n queryCommandValue: queryCommandValue,\r\n queryCommandSupported: queryCommandSupported,\r\n addCommands: addCommands,\r\n addCommand: addCommand,\r\n addQueryStateHandler: addQueryStateHandler,\r\n addQueryValueHandler: addQueryValueHandler,\r\n hasCustomCommand: hasCustomCommand\r\n });\r\n var execNativeCommand = function (command, ui, value) {\r\n if (ui === undefined) {\r\n ui = false;\r\n }\r\n if (value === undefined) {\r\n value = null;\r\n }\r\n return editor.getDoc().execCommand(command, ui, value);\r\n };\r\n var isFormatMatch = function (name) {\r\n return formatter.match(name);\r\n };\r\n var toggleFormat = function (name, value) {\r\n formatter.toggle(name, value ? { value: value } : undefined);\r\n editor.nodeChanged();\r\n };\r\n var storeSelection = function (type) {\r\n bookmark = selection.getBookmark(type);\r\n };\r\n var restoreSelection = function () {\r\n selection.moveToBookmark(bookmark);\r\n };\r\n addCommands({\r\n 'mceResetDesignMode,mceBeginUndoLevel': function () {\r\n },\r\n 'mceEndUndoLevel,mceAddUndoLevel': function () {\r\n editor.undoManager.add();\r\n },\r\n 'Cut,Copy,Paste': function (command) {\r\n var doc = editor.getDoc();\r\n var failed;\r\n try {\r\n execNativeCommand(command);\r\n } catch (ex) {\r\n failed = true;\r\n }\r\n if (command === 'paste' && !doc.queryCommandEnabled(command)) {\r\n failed = true;\r\n }\r\n if (failed || !doc.queryCommandSupported(command)) {\r\n var msg = editor.translate('Your browser doesn\\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\r\n if ($_cvvl9iajkmcwk25.mac) {\r\n msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\r\n }\r\n editor.notificationManager.open({\r\n text: msg,\r\n type: 'error'\r\n });\r\n }\r\n },\r\n 'unlink': function () {\r\n if (selection.isCollapsed()) {\r\n var elm = editor.dom.getParent(editor.selection.getStart(), 'a');\r\n if (elm) {\r\n editor.dom.remove(elm, true);\r\n }\r\n return;\r\n }\r\n formatter.remove('link');\r\n },\r\n 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) {\r\n var align = command.substring(7);\r\n if (align === 'full') {\r\n align = 'justify';\r\n }\r\n each$10('left,center,right,justify'.split(','), function (name) {\r\n if (align !== name) {\r\n formatter.remove('align' + name);\r\n }\r\n });\r\n if (align !== 'none') {\r\n toggleFormat('align' + align);\r\n }\r\n },\r\n 'InsertUnorderedList,InsertOrderedList': function (command) {\r\n var listElm, listParent;\r\n execNativeCommand(command);\r\n listElm = dom.getParent(selection.getNode(), 'ol,ul');\r\n if (listElm) {\r\n listParent = listElm.parentNode;\r\n if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\r\n storeSelection();\r\n dom.split(listParent, listElm);\r\n restoreSelection();\r\n }\r\n }\r\n },\r\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\r\n toggleFormat(command);\r\n },\r\n 'ForeColor,HiliteColor': function (command, ui, value) {\r\n toggleFormat(command, value);\r\n },\r\n 'FontName': function (command, ui, value) {\r\n fontNameAction(editor, value);\r\n },\r\n 'FontSize': function (command, ui, value) {\r\n fontSizeAction(editor, value);\r\n },\r\n 'RemoveFormat': function (command) {\r\n formatter.remove(command);\r\n },\r\n 'mceBlockQuote': function () {\r\n toggleFormat('blockquote');\r\n },\r\n 'FormatBlock': function (command, ui, value) {\r\n return toggleFormat(value || 'p');\r\n },\r\n 'mceCleanup': function () {\r\n var bookmark = selection.getBookmark();\r\n editor.setContent(editor.getContent());\r\n selection.moveToBookmark(bookmark);\r\n },\r\n 'mceRemoveNode': function (command, ui, value) {\r\n var node = value || selection.getNode();\r\n if (node !== editor.getBody()) {\r\n storeSelection();\r\n editor.dom.remove(node, true);\r\n restoreSelection();\r\n }\r\n },\r\n 'mceSelectNodeDepth': function (command, ui, value) {\r\n var counter = 0;\r\n dom.getParent(selection.getNode(), function (node) {\r\n if (node.nodeType === 1 && counter++ === value) {\r\n selection.select(node);\r\n return false;\r\n }\r\n }, editor.getBody());\r\n },\r\n 'mceSelectNode': function (command, ui, value) {\r\n selection.select(value);\r\n },\r\n 'mceInsertContent': function (command, ui, value) {\r\n $_g2yj883ijkmcwkv2.insertAtCaret(editor, value);\r\n },\r\n 'mceInsertRawHTML': function (command, ui, value) {\r\n var content = editor.getContent();\r\n selection.setContent('tiny_mce_marker');\r\n editor.setContent(content.replace(/tiny_mce_marker/g, function () {\r\n return value;\r\n }));\r\n },\r\n 'mceToggleFormat': function (command, ui, value) {\r\n toggleFormat(value);\r\n },\r\n 'mceSetContent': function (command, ui, value) {\r\n editor.setContent(value);\r\n },\r\n 'Indent,Outdent': function (command) {\r\n handle(editor, command);\r\n },\r\n 'mceRepaint': function () {\r\n },\r\n 'InsertHorizontalRule': function () {\r\n editor.execCommand('mceInsertContent', false, '
');\r\n },\r\n 'mceToggleVisualAid': function () {\r\n editor.hasVisual = !editor.hasVisual;\r\n editor.addVisual();\r\n },\r\n 'mceReplaceContent': function (command, ui, value) {\r\n editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, selection.getContent({ format: 'text' })));\r\n },\r\n 'mceInsertLink': function (command, ui, value) {\r\n var anchor;\r\n if (typeof value === 'string') {\r\n value = { href: value };\r\n }\r\n anchor = dom.getParent(selection.getNode(), 'a');\r\n value.href = value.href.replace(' ', '%20');\r\n if (!anchor || !value.href) {\r\n formatter.remove('link');\r\n }\r\n if (value.href) {\r\n formatter.apply('link', value, anchor);\r\n }\r\n },\r\n 'selectAll': function () {\r\n var editingHost = dom.getParent(selection.getStart(), $_bjermr1rjkmcwkij.isContentEditableTrue);\r\n if (editingHost) {\r\n var rng = dom.createRng();\r\n rng.selectNodeContents(editingHost);\r\n selection.setRng(rng);\r\n }\r\n },\r\n 'delete': function () {\r\n $_3ahn8y3pjkmcwkwc.deleteCommand(editor);\r\n },\r\n 'forwardDelete': function () {\r\n $_3ahn8y3pjkmcwkwc.forwardDeleteCommand(editor);\r\n },\r\n 'mceNewDocument': function () {\r\n editor.setContent('');\r\n },\r\n 'InsertLineBreak': function (command, ui, value) {\r\n $_dc07up4ijkmcwl7n.insert(editor, value);\r\n return true;\r\n }\r\n });\r\n var alignStates = function (name) {\r\n return function () {\r\n var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();\r\n var matches = map$3(nodes, function (node) {\r\n return !!formatter.matchNode(node, name);\r\n });\r\n return inArray$2(matches, true) !== -1;\r\n };\r\n };\r\n addCommands({\r\n 'JustifyLeft': alignStates('alignleft'),\r\n 'JustifyCenter': alignStates('aligncenter'),\r\n 'JustifyRight': alignStates('alignright'),\r\n 'JustifyFull': alignStates('alignjustify'),\r\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\r\n return isFormatMatch(command);\r\n },\r\n 'mceBlockQuote': function () {\r\n return isFormatMatch('blockquote');\r\n },\r\n 'Outdent': function () {\r\n var node;\r\n if (settings.inline_styles) {\r\n if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\r\n return true;\r\n }\r\n if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\r\n return true;\r\n }\r\n }\r\n return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE');\r\n },\r\n 'InsertUnorderedList,InsertOrderedList': function (command) {\r\n var list = dom.getParent(selection.getNode(), 'ul,ol');\r\n return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\r\n }\r\n }, 'state');\r\n addCommands({\r\n Undo: function () {\r\n editor.undoManager.undo();\r\n },\r\n Redo: function () {\r\n editor.undoManager.redo();\r\n }\r\n });\r\n addQueryValueHandler('FontName', function () {\r\n return fontNameQuery(editor);\r\n }, this);\r\n addQueryValueHandler('FontSize', function () {\r\n return fontSizeQuery(editor);\r\n }, this);\r\n }\r\n\r\n var nativeEvents = $_4ujg4tljkmcwkbk.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');\r\n var Dispatcher = function (settings) {\r\n var self = this;\r\n var scope, bindings = {}, toggleEvent;\r\n var returnFalse = function () {\r\n return false;\r\n };\r\n var returnTrue = function () {\r\n return true;\r\n };\r\n settings = settings || {};\r\n scope = settings.scope || self;\r\n toggleEvent = settings.toggleEvent || returnFalse;\r\n var fire = function (name, args) {\r\n var handlers, i, l, callback;\r\n name = name.toLowerCase();\r\n args = args || {};\r\n args.type = name;\r\n if (!args.target) {\r\n args.target = scope;\r\n }\r\n if (!args.preventDefault) {\r\n args.preventDefault = function () {\r\n args.isDefaultPrevented = returnTrue;\r\n };\r\n args.stopPropagation = function () {\r\n args.isPropagationStopped = returnTrue;\r\n };\r\n args.stopImmediatePropagation = function () {\r\n args.isImmediatePropagationStopped = returnTrue;\r\n };\r\n args.isDefaultPrevented = returnFalse;\r\n args.isPropagationStopped = returnFalse;\r\n args.isImmediatePropagationStopped = returnFalse;\r\n }\r\n if (settings.beforeFire) {\r\n settings.beforeFire(args);\r\n }\r\n handlers = bindings[name];\r\n if (handlers) {\r\n for (i = 0, l = handlers.length; i < l; i++) {\r\n callback = handlers[i];\r\n if (callback.once) {\r\n off(name, callback.func);\r\n }\r\n if (args.isImmediatePropagationStopped()) {\r\n args.stopPropagation();\r\n return args;\r\n }\r\n if (callback.func.call(scope, args) === false) {\r\n args.preventDefault();\r\n return args;\r\n }\r\n }\r\n }\r\n return args;\r\n };\r\n var on = function (name, callback, prepend, extra) {\r\n var handlers, names, i;\r\n if (callback === false) {\r\n callback = returnFalse;\r\n }\r\n if (callback) {\r\n callback = { func: callback };\r\n if (extra) {\r\n $_4ujg4tljkmcwkbk.extend(callback, extra);\r\n }\r\n names = name.toLowerCase().split(' ');\r\n i = names.length;\r\n while (i--) {\r\n name = names[i];\r\n handlers = bindings[name];\r\n if (!handlers) {\r\n handlers = bindings[name] = [];\r\n toggleEvent(name, true);\r\n }\r\n if (prepend) {\r\n handlers.unshift(callback);\r\n } else {\r\n handlers.push(callback);\r\n }\r\n }\r\n }\r\n return self;\r\n };\r\n var off = function (name, callback) {\r\n var i, handlers, bindingName, names, hi;\r\n if (name) {\r\n names = name.toLowerCase().split(' ');\r\n i = names.length;\r\n while (i--) {\r\n name = names[i];\r\n handlers = bindings[name];\r\n if (!name) {\r\n for (bindingName in bindings) {\r\n toggleEvent(bindingName, false);\r\n delete bindings[bindingName];\r\n }\r\n return self;\r\n }\r\n if (handlers) {\r\n if (!callback) {\r\n handlers.length = 0;\r\n } else {\r\n hi = handlers.length;\r\n while (hi--) {\r\n if (handlers[hi].func === callback) {\r\n handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));\r\n bindings[name] = handlers;\r\n }\r\n }\r\n }\r\n if (!handlers.length) {\r\n toggleEvent(name, false);\r\n delete bindings[name];\r\n }\r\n }\r\n }\r\n } else {\r\n for (name in bindings) {\r\n toggleEvent(name, false);\r\n }\r\n bindings = {};\r\n }\r\n return self;\r\n };\r\n var once = function (name, callback, prepend) {\r\n return on(name, callback, prepend, { once: true });\r\n };\r\n var has = function (name) {\r\n name = name.toLowerCase();\r\n return !(!bindings[name] || bindings[name].length === 0);\r\n };\r\n self.fire = fire;\r\n self.on = on;\r\n self.off = off;\r\n self.once = once;\r\n self.has = has;\r\n };\r\n Dispatcher.isNative = function (name) {\r\n return !!nativeEvents[name.toLowerCase()];\r\n };\r\n\r\n var getEventDispatcher = function (obj) {\r\n if (!obj._eventDispatcher) {\r\n obj._eventDispatcher = new Dispatcher({\r\n scope: obj,\r\n toggleEvent: function (name, state) {\r\n if (Dispatcher.isNative(name) && obj.toggleNativeEvent) {\r\n obj.toggleNativeEvent(name, state);\r\n }\r\n }\r\n });\r\n }\r\n return obj._eventDispatcher;\r\n };\r\n var $_ed2ug44qjkmcwl97 = {\r\n fire: function (name, args, bubble) {\r\n var self = this;\r\n if (self.removed && name !== 'remove') {\r\n return args;\r\n }\r\n args = getEventDispatcher(self).fire(name, args, bubble);\r\n if (bubble !== false && self.parent) {\r\n var parent = self.parent();\r\n while (parent && !args.isPropagationStopped()) {\r\n parent.fire(name, args, false);\r\n parent = parent.parent();\r\n }\r\n }\r\n return args;\r\n },\r\n on: function (name, callback, prepend) {\r\n return getEventDispatcher(this).on(name, callback, prepend);\r\n },\r\n off: function (name, callback) {\r\n return getEventDispatcher(this).off(name, callback);\r\n },\r\n once: function (name, callback) {\r\n return getEventDispatcher(this).once(name, callback);\r\n },\r\n hasEventListeners: function (name) {\r\n return getEventDispatcher(this).has(name);\r\n }\r\n };\r\n\r\n var firePreProcess = function (editor, args) {\r\n return editor.fire('PreProcess', args);\r\n };\r\n var firePostProcess = function (editor, args) {\r\n return editor.fire('PostProcess', args);\r\n };\r\n var fireRemove = function (editor) {\r\n return editor.fire('remove');\r\n };\r\n var fireSwitchMode = function (editor, mode) {\r\n return editor.fire('SwitchMode', { mode: mode });\r\n };\r\n var fireObjectResizeStart = function (editor, target, width, height) {\r\n editor.fire('ObjectResizeStart', {\r\n target: target,\r\n width: width,\r\n height: height\r\n });\r\n };\r\n var fireObjectResized = function (editor, target, width, height) {\r\n editor.fire('ObjectResized', {\r\n target: target,\r\n width: width,\r\n height: height\r\n });\r\n };\r\n var $_q3ric4tjkmcwl9q = {\r\n firePreProcess: firePreProcess,\r\n firePostProcess: firePostProcess,\r\n fireRemove: fireRemove,\r\n fireSwitchMode: fireSwitchMode,\r\n fireObjectResizeStart: fireObjectResizeStart,\r\n fireObjectResized: fireObjectResized\r\n };\r\n\r\n var setEditorCommandState = function (editor, cmd, state) {\r\n try {\r\n editor.getDoc().execCommand(cmd, false, state);\r\n } catch (ex) {\r\n }\r\n };\r\n var toggleClass = function (elm, cls, state) {\r\n if ($_ftm4v023jkmcwklz.has(elm, cls) && state === false) {\r\n $_ftm4v023jkmcwklz.remove(elm, cls);\r\n } else if (state) {\r\n $_ftm4v023jkmcwklz.add(elm, cls);\r\n }\r\n };\r\n var toggleReadOnly = function (editor, state) {\r\n toggleClass(Element$$1.fromDom(editor.getBody()), 'mce-content-readonly', state);\r\n if (state) {\r\n editor.selection.controlSelection.hideResizeRect();\r\n editor.readonly = true;\r\n editor.getBody().contentEditable = 'false';\r\n } else {\r\n editor.readonly = false;\r\n editor.getBody().contentEditable = 'true';\r\n setEditorCommandState(editor, 'StyleWithCSS', false);\r\n setEditorCommandState(editor, 'enableInlineTableEditing', false);\r\n setEditorCommandState(editor, 'enableObjectResizing', false);\r\n editor.focus();\r\n editor.nodeChanged();\r\n }\r\n };\r\n var setMode = function (editor, mode) {\r\n if (mode === getMode(editor)) {\r\n return;\r\n }\r\n if (editor.initialized) {\r\n toggleReadOnly(editor, mode === 'readonly');\r\n } else {\r\n editor.on('init', function () {\r\n toggleReadOnly(editor, mode === 'readonly');\r\n });\r\n }\r\n $_q3ric4tjkmcwl9q.fireSwitchMode(editor, mode);\r\n };\r\n var getMode = function (editor) {\r\n return editor.readonly ? 'readonly' : 'design';\r\n };\r\n var isReadOnly = function (editor) {\r\n return editor.readonly === true;\r\n };\r\n\r\n var DOM$1 = DOMUtils$1.DOM;\r\n var customEventRootDelegates;\r\n var getEventTarget = function (editor, eventName) {\r\n if (eventName === 'selectionchange') {\r\n return editor.getDoc();\r\n }\r\n if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) {\r\n return editor.getDoc().documentElement;\r\n }\r\n if (editor.settings.event_root) {\r\n if (!editor.eventRoot) {\r\n editor.eventRoot = DOM$1.select(editor.settings.event_root)[0];\r\n }\r\n return editor.eventRoot;\r\n }\r\n return editor.getBody();\r\n };\r\n var isListening = function (editor) {\r\n return !editor.hidden && !editor.readonly;\r\n };\r\n var fireEvent = function (editor, eventName, e) {\r\n if (isListening(editor)) {\r\n editor.fire(eventName, e);\r\n } else if (isReadOnly(editor)) {\r\n e.preventDefault();\r\n }\r\n };\r\n var bindEventDelegate = function (editor, eventName) {\r\n var eventRootElm, delegate;\r\n if (!editor.delegates) {\r\n editor.delegates = {};\r\n }\r\n if (editor.delegates[eventName] || editor.removed) {\r\n return;\r\n }\r\n eventRootElm = getEventTarget(editor, eventName);\r\n if (editor.settings.event_root) {\r\n if (!customEventRootDelegates) {\r\n customEventRootDelegates = {};\r\n editor.editorManager.on('removeEditor', function () {\r\n var name;\r\n if (!editor.editorManager.activeEditor) {\r\n if (customEventRootDelegates) {\r\n for (name in customEventRootDelegates) {\r\n editor.dom.unbind(getEventTarget(editor, name));\r\n }\r\n customEventRootDelegates = null;\r\n }\r\n }\r\n });\r\n }\r\n if (customEventRootDelegates[eventName]) {\r\n return;\r\n }\r\n delegate = function (e) {\r\n var target = e.target;\r\n var editors = editor.editorManager.get();\r\n var i = editors.length;\r\n while (i--) {\r\n var body = editors[i].getBody();\r\n if (body === target || DOM$1.isChildOf(target, body)) {\r\n fireEvent(editors[i], eventName, e);\r\n }\r\n }\r\n };\r\n customEventRootDelegates[eventName] = delegate;\r\n DOM$1.bind(eventRootElm, eventName, delegate);\r\n } else {\r\n delegate = function (e) {\r\n fireEvent(editor, eventName, e);\r\n };\r\n DOM$1.bind(eventRootElm, eventName, delegate);\r\n editor.delegates[eventName] = delegate;\r\n }\r\n };\r\n var EditorObservable = {\r\n bindPendingEventDelegates: function () {\r\n var self = this;\r\n $_4ujg4tljkmcwkbk.each(self._pendingNativeEvents, function (name) {\r\n bindEventDelegate(self, name);\r\n });\r\n },\r\n toggleNativeEvent: function (name, state) {\r\n var self = this;\r\n if (name === 'focus' || name === 'blur') {\r\n return;\r\n }\r\n if (state) {\r\n if (self.initialized) {\r\n bindEventDelegate(self, name);\r\n } else {\r\n if (!self._pendingNativeEvents) {\r\n self._pendingNativeEvents = [name];\r\n } else {\r\n self._pendingNativeEvents.push(name);\r\n }\r\n }\r\n } else if (self.initialized) {\r\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\r\n delete self.delegates[name];\r\n }\r\n },\r\n unbindAllNativeEvents: function () {\r\n var self = this;\r\n var body = self.getBody();\r\n var dom = self.dom;\r\n var name;\r\n if (self.delegates) {\r\n for (name in self.delegates) {\r\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\r\n }\r\n delete self.delegates;\r\n }\r\n if (!self.inline && body && dom) {\r\n body.onload = null;\r\n dom.unbind(self.getWin());\r\n dom.unbind(self.getDoc());\r\n }\r\n if (dom) {\r\n dom.unbind(body);\r\n dom.unbind(self.getContainer());\r\n }\r\n }\r\n };\r\n EditorObservable = $_4ujg4tljkmcwkbk.extend({}, $_ed2ug44qjkmcwl97, EditorObservable);\r\n var EditorObservable$1 = EditorObservable;\r\n\r\n var each$11 = $_4ujg4tljkmcwkbk.each;\r\n var explode$2 = $_4ujg4tljkmcwkbk.explode;\r\n var keyCodeLookup = {\r\n f9: 120,\r\n f10: 121,\r\n f11: 122\r\n };\r\n var modifierNames = $_4ujg4tljkmcwkbk.makeMap('alt,ctrl,shift,meta,access');\r\n function Shortcuts (editor) {\r\n var self = this;\r\n var shortcuts = {};\r\n var pendingPatterns = [];\r\n var parseShortcut = function (pattern) {\r\n var id, key;\r\n var shortcut = {};\r\n each$11(explode$2(pattern, '+'), function (value) {\r\n if (value in modifierNames) {\r\n shortcut[value] = true;\r\n } else {\r\n if (/^[0-9]{2,}$/.test(value)) {\r\n shortcut.keyCode = parseInt(value, 10);\r\n } else {\r\n shortcut.charCode = value.charCodeAt(0);\r\n shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\r\n }\r\n }\r\n });\r\n id = [shortcut.keyCode];\r\n for (key in modifierNames) {\r\n if (shortcut[key]) {\r\n id.push(key);\r\n } else {\r\n shortcut[key] = false;\r\n }\r\n }\r\n shortcut.id = id.join(',');\r\n if (shortcut.access) {\r\n shortcut.alt = true;\r\n if ($_cvvl9iajkmcwk25.mac) {\r\n shortcut.ctrl = true;\r\n } else {\r\n shortcut.shift = true;\r\n }\r\n }\r\n if (shortcut.meta) {\r\n if ($_cvvl9iajkmcwk25.mac) {\r\n shortcut.meta = true;\r\n } else {\r\n shortcut.ctrl = true;\r\n shortcut.meta = false;\r\n }\r\n }\r\n return shortcut;\r\n };\r\n var createShortcut = function (pattern, desc, cmdFunc, scope) {\r\n var shortcuts;\r\n shortcuts = $_4ujg4tljkmcwkbk.map(explode$2(pattern, '>'), parseShortcut);\r\n shortcuts[shortcuts.length - 1] = $_4ujg4tljkmcwkbk.extend(shortcuts[shortcuts.length - 1], {\r\n func: cmdFunc,\r\n scope: scope || editor\r\n });\r\n return $_4ujg4tljkmcwkbk.extend(shortcuts[0], {\r\n desc: editor.translate(desc),\r\n subpatterns: shortcuts.slice(1)\r\n });\r\n };\r\n var hasModifier = function (e) {\r\n return e.altKey || e.ctrlKey || e.metaKey;\r\n };\r\n var isFunctionKey = function (e) {\r\n return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\r\n };\r\n var matchShortcut = function (e, shortcut) {\r\n if (!shortcut) {\r\n return false;\r\n }\r\n if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\r\n return false;\r\n }\r\n if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\r\n return false;\r\n }\r\n if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\r\n e.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n };\r\n var executeShortcutAction = function (shortcut) {\r\n return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\r\n };\r\n editor.on('keyup keypress keydown', function (e) {\r\n if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) {\r\n each$11(shortcuts, function (shortcut) {\r\n if (matchShortcut(e, shortcut)) {\r\n pendingPatterns = shortcut.subpatterns.slice(0);\r\n if (e.type === 'keydown') {\r\n executeShortcutAction(shortcut);\r\n }\r\n return true;\r\n }\r\n });\r\n if (matchShortcut(e, pendingPatterns[0])) {\r\n if (pendingPatterns.length === 1) {\r\n if (e.type === 'keydown') {\r\n executeShortcutAction(pendingPatterns[0]);\r\n }\r\n }\r\n pendingPatterns.shift();\r\n }\r\n }\r\n });\r\n self.add = function (pattern, desc, cmdFunc, scope) {\r\n var cmd;\r\n cmd = cmdFunc;\r\n if (typeof cmdFunc === 'string') {\r\n cmdFunc = function () {\r\n editor.execCommand(cmd, false, null);\r\n };\r\n } else if ($_4ujg4tljkmcwkbk.isArray(cmd)) {\r\n cmdFunc = function () {\r\n editor.execCommand(cmd[0], cmd[1], cmd[2]);\r\n };\r\n }\r\n each$11(explode$2($_4ujg4tljkmcwkbk.trim(pattern.toLowerCase())), function (pattern) {\r\n var shortcut = createShortcut(pattern, desc, cmdFunc, scope);\r\n shortcuts[shortcut.id] = shortcut;\r\n });\r\n return true;\r\n };\r\n self.remove = function (pattern) {\r\n var shortcut = createShortcut(pattern);\r\n if (shortcuts[shortcut.id]) {\r\n delete shortcuts[shortcut.id];\r\n return true;\r\n }\r\n return false;\r\n };\r\n }\r\n\r\n var any$1 = function (predicate) {\r\n return $_253nd92ajkmcwkmp.first(predicate).isSome();\r\n };\r\n var ancestor$3 = function (scope, predicate, isRoot) {\r\n return $_253nd92ajkmcwkmp.ancestor(scope, predicate, isRoot).isSome();\r\n };\r\n var closest$3 = function (scope, predicate, isRoot) {\r\n return $_253nd92ajkmcwkmp.closest(scope, predicate, isRoot).isSome();\r\n };\r\n var sibling$4 = function (scope, predicate) {\r\n return $_253nd92ajkmcwkmp.sibling(scope, predicate).isSome();\r\n };\r\n var child$4 = function (scope, predicate) {\r\n return $_253nd92ajkmcwkmp.child(scope, predicate).isSome();\r\n };\r\n var descendant$3 = function (scope, predicate) {\r\n return $_253nd92ajkmcwkmp.descendant(scope, predicate).isSome();\r\n };\r\n var $_szg1f4xjkmcwlad = {\r\n any: any$1,\r\n ancestor: ancestor$3,\r\n closest: closest$3,\r\n sibling: sibling$4,\r\n child: child$4,\r\n descendant: descendant$3\r\n };\r\n\r\n var focus$$1 = function (element) {\r\n element.dom().focus();\r\n };\r\n var blur$$1 = function (element) {\r\n element.dom().blur();\r\n };\r\n var hasFocus = function (element) {\r\n var doc = $_ca6pc118jkmcwkfs.owner(element).dom();\r\n return element.dom() === doc.activeElement;\r\n };\r\n var active = function (_doc) {\r\n var doc = _doc !== undefined ? _doc.dom() : document;\r\n return Option.from(doc.activeElement).map(Element$$1.fromDom);\r\n };\r\n var focusInside = function (element) {\r\n var doc = $_ca6pc118jkmcwkfs.owner(element);\r\n var inside = active(doc).filter(function (a) {\r\n return $_szg1f4xjkmcwlad.closest(a, curry($_e4hu6h1ejkmcwkgj.eq, element));\r\n });\r\n inside.fold(function () {\r\n focus$$1(element);\r\n }, noop);\r\n };\r\n var search = function (element) {\r\n return active($_ca6pc118jkmcwkfs.owner(element)).filter(function (e) {\r\n return element.dom().contains(e.dom());\r\n });\r\n };\r\n var $_468a0m4wjkmcwla6 = {\r\n hasFocus: hasFocus,\r\n focus: focus$$1,\r\n blur: blur$$1,\r\n active: active,\r\n search: search,\r\n focusInside: focusInside\r\n };\r\n\r\n var getContentEditableHost = function (editor, node) {\r\n return editor.dom.getParent(node, function (node) {\r\n return editor.dom.getContentEditable(node) === 'true';\r\n });\r\n };\r\n var getCollapsedNode = function (rng) {\r\n return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element$$1.fromDom) : Option.none();\r\n };\r\n var getFocusInElement = function (root, rng) {\r\n return getCollapsedNode(rng).bind(function (node) {\r\n if (isTableSection(node)) {\r\n return Option.some(node);\r\n } else if ($_e4hu6h1ejkmcwkgj.contains(root, node) === false) {\r\n return Option.some(root);\r\n } else {\r\n return Option.none();\r\n }\r\n });\r\n };\r\n var normalizeSelection = function (editor, rng) {\r\n getFocusInElement(Element$$1.fromDom(editor.getBody()), rng).bind(function (elm) {\r\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.dom());\r\n }).fold(function () {\r\n editor.selection.normalize();\r\n return;\r\n }, function (caretPos) {\r\n return editor.selection.setRng(caretPos.toRange());\r\n });\r\n };\r\n var focusBody = function (body) {\r\n if (body.setActive) {\r\n try {\r\n body.setActive();\r\n } catch (ex) {\r\n body.focus();\r\n }\r\n } else {\r\n body.focus();\r\n }\r\n };\r\n var hasElementFocus = function (elm) {\r\n return $_468a0m4wjkmcwla6.hasFocus(elm) || $_468a0m4wjkmcwla6.search(elm).isSome();\r\n };\r\n var hasIframeFocus = function (editor) {\r\n return editor.iframeElement && $_468a0m4wjkmcwla6.hasFocus(Element$$1.fromDom(editor.iframeElement));\r\n };\r\n var hasInlineFocus = function (editor) {\r\n var rawBody = editor.getBody();\r\n return rawBody && hasElementFocus(Element$$1.fromDom(rawBody));\r\n };\r\n var hasFocus$1 = function (editor) {\r\n return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\r\n };\r\n var focusEditor = function (editor) {\r\n var selection = editor.selection, contentEditable = editor.settings.content_editable;\r\n var body = editor.getBody();\r\n var rng = selection.getRng();\r\n editor.quirks.refreshContentEditable();\r\n var contentEditableHost = getContentEditableHost(editor, selection.getNode());\r\n if (editor.$.contains(body, contentEditableHost)) {\r\n focusBody(contentEditableHost);\r\n normalizeSelection(editor, rng);\r\n activateEditor(editor);\r\n return;\r\n }\r\n if (editor.bookmark !== undefined && hasFocus$1(editor) === false) {\r\n $_39c3zs4ljkmcwl86.getRng(editor).each(function (bookmarkRng) {\r\n editor.selection.setRng(bookmarkRng);\r\n rng = bookmarkRng;\r\n });\r\n }\r\n if (!contentEditable) {\r\n if (!$_cvvl9iajkmcwk25.opera) {\r\n focusBody(body);\r\n }\r\n editor.getWin().focus();\r\n }\r\n if ($_cvvl9iajkmcwk25.gecko || contentEditable) {\r\n focusBody(body);\r\n normalizeSelection(editor, rng);\r\n }\r\n activateEditor(editor);\r\n };\r\n var activateEditor = function (editor) {\r\n return editor.editorManager.setActive(editor);\r\n };\r\n var focus$1 = function (editor, skipFocus) {\r\n if (editor.removed) {\r\n return;\r\n }\r\n skipFocus ? activateEditor(editor) : focusEditor(editor);\r\n };\r\n var $_e3v8sn4vjkmcwl9y = {\r\n focus: focus$1,\r\n hasFocus: hasFocus$1\r\n };\r\n\r\n var getProp = function (propName, elm) {\r\n var rawElm = elm.dom();\r\n return rawElm[propName];\r\n };\r\n var getComputedSizeProp = function (propName, elm) {\r\n return parseInt($_4enzit13jkmcwke5.get(elm, propName), 10);\r\n };\r\n var getClientWidth = curry(getProp, 'clientWidth');\r\n var getClientHeight = curry(getProp, 'clientHeight');\r\n var getMarginTop = curry(getComputedSizeProp, 'margin-top');\r\n var getMarginLeft = curry(getComputedSizeProp, 'margin-left');\r\n var getBoundingClientRect$1 = function (elm) {\r\n return elm.dom().getBoundingClientRect();\r\n };\r\n var isInsideElementContentArea = function (bodyElm, clientX, clientY) {\r\n var clientWidth = getClientWidth(bodyElm);\r\n var clientHeight = getClientHeight(bodyElm);\r\n return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\r\n };\r\n var transpose = function (inline, elm, clientX, clientY) {\r\n var clientRect = getBoundingClientRect$1(elm);\r\n var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0;\r\n var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0;\r\n var x = clientX - deltaX;\r\n var y = clientY - deltaY;\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n };\r\n var isXYInContentArea = function (editor, clientX, clientY) {\r\n var bodyElm = Element$$1.fromDom(editor.getBody());\r\n var targetElm = editor.inline ? bodyElm : $_ca6pc118jkmcwkfs.documentElement(bodyElm);\r\n var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\r\n return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\r\n };\r\n var fromDomSafe = function (node) {\r\n return Option.from(node).map(Element$$1.fromDom);\r\n };\r\n var isEditorAttachedToDom = function (editor) {\r\n var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\r\n return fromDomSafe(rawContainer).map(function (container) {\r\n return $_e4hu6h1ejkmcwkgj.contains($_ca6pc118jkmcwkfs.owner(container), container);\r\n }).getOr(false);\r\n };\r\n var $_8we2e850jkmcwlaw = {\r\n isXYInContentArea: isXYInContentArea,\r\n isEditorAttachedToDom: isEditorAttachedToDom\r\n };\r\n\r\n function NotificationManagerImpl () {\r\n var unimplemented = function () {\r\n throw new Error('Theme did not provide a NotificationManager implementation.');\r\n };\r\n return {\r\n open: unimplemented,\r\n close: unimplemented,\r\n reposition: unimplemented,\r\n getArgs: unimplemented\r\n };\r\n }\r\n\r\n function NotificationManager (editor) {\r\n var notifications = [];\r\n var getImplementation = function () {\r\n var theme = editor.theme;\r\n return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\r\n };\r\n var getTopNotification = function () {\r\n return Option.from(notifications[0]);\r\n };\r\n var isEqual = function (a, b) {\r\n return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\r\n };\r\n var reposition = function () {\r\n if (notifications.length > 0) {\r\n getImplementation().reposition(notifications);\r\n }\r\n };\r\n var addNotification = function (notification) {\r\n notifications.push(notification);\r\n };\r\n var closeNotification = function (notification) {\r\n findIndex(notifications, function (otherNotification) {\r\n return otherNotification === notification;\r\n }).each(function (index) {\r\n notifications.splice(index, 1);\r\n });\r\n };\r\n var open = function (args) {\r\n if (editor.removed || !$_8we2e850jkmcwlaw.isEditorAttachedToDom(editor)) {\r\n return;\r\n }\r\n return find(notifications, function (notification) {\r\n return isEqual(getImplementation().getArgs(notification), args);\r\n }).getOrThunk(function () {\r\n editor.editorManager.setActive(editor);\r\n var notification = getImplementation().open(args, function () {\r\n closeNotification(notification);\r\n reposition();\r\n });\r\n addNotification(notification);\r\n reposition();\r\n return notification;\r\n });\r\n };\r\n var close = function () {\r\n getTopNotification().each(function (notification) {\r\n getImplementation().close(notification);\r\n closeNotification(notification);\r\n reposition();\r\n });\r\n };\r\n var getNotifications = function () {\r\n return notifications;\r\n };\r\n var registerEvents = function (editor) {\r\n editor.on('SkinLoaded', function () {\r\n var serviceMessage = editor.settings.service_message;\r\n if (serviceMessage) {\r\n open({\r\n text: serviceMessage,\r\n type: 'warning',\r\n timeout: 0,\r\n icon: ''\r\n });\r\n }\r\n });\r\n editor.on('ResizeEditor ResizeWindow', function () {\r\n $_3l01gcijkmcwk99.requestAnimationFrame(reposition);\r\n });\r\n editor.on('remove', function () {\r\n each(notifications, function (notification) {\r\n getImplementation().close(notification);\r\n });\r\n });\r\n };\r\n registerEvents(editor);\r\n return {\r\n open: open,\r\n close: close,\r\n getNotifications: getNotifications\r\n };\r\n }\r\n\r\n function WindowManagerImpl () {\r\n var unimplemented = function () {\r\n throw new Error('Theme did not provide a WindowManager implementation.');\r\n };\r\n return {\r\n open: unimplemented,\r\n alert: unimplemented,\r\n confirm: unimplemented,\r\n close: unimplemented,\r\n getParams: unimplemented,\r\n setParams: unimplemented\r\n };\r\n }\r\n\r\n function WindowManager (editor) {\r\n var windows = [];\r\n var getImplementation = function () {\r\n var theme = editor.theme;\r\n return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\r\n };\r\n var funcBind = function (scope, f) {\r\n return function () {\r\n return f ? f.apply(scope, arguments) : undefined;\r\n };\r\n };\r\n var fireOpenEvent = function (win) {\r\n editor.fire('OpenWindow', { win: win });\r\n };\r\n var fireCloseEvent = function (win) {\r\n editor.fire('CloseWindow', { win: win });\r\n };\r\n var addWindow = function (win) {\r\n windows.push(win);\r\n fireOpenEvent(win);\r\n };\r\n var closeWindow = function (win) {\r\n findIndex(windows, function (otherWindow) {\r\n return otherWindow === win;\r\n }).each(function (index) {\r\n windows.splice(index, 1);\r\n fireCloseEvent(win);\r\n if (windows.length === 0) {\r\n editor.focus();\r\n }\r\n });\r\n };\r\n var getTopWindow = function () {\r\n return Option.from(windows[windows.length - 1]);\r\n };\r\n var open = function (args, params) {\r\n editor.editorManager.setActive(editor);\r\n $_39c3zs4ljkmcwl86.store(editor);\r\n var win = getImplementation().open(args, params, closeWindow);\r\n addWindow(win);\r\n return win;\r\n };\r\n var alert = function (message, callback, scope) {\r\n var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow);\r\n addWindow(win);\r\n };\r\n var confirm = function (message, callback, scope) {\r\n var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow);\r\n addWindow(win);\r\n };\r\n var close = function () {\r\n getTopWindow().each(function (win) {\r\n getImplementation().close(win);\r\n closeWindow(win);\r\n });\r\n };\r\n var getParams = function () {\r\n return getTopWindow().map(getImplementation().getParams).getOr(null);\r\n };\r\n var setParams = function (params) {\r\n getTopWindow().each(function (win) {\r\n getImplementation().setParams(win, params);\r\n });\r\n };\r\n var getWindows = function () {\r\n return windows;\r\n };\r\n editor.on('remove', function () {\r\n each(windows.slice(0), function (win) {\r\n getImplementation().close(win);\r\n });\r\n });\r\n return {\r\n windows: windows,\r\n open: open,\r\n alert: alert,\r\n confirm: confirm,\r\n close: close,\r\n getParams: getParams,\r\n setParams: setParams,\r\n getWindows: getWindows\r\n };\r\n }\r\n\r\n var PluginManager = AddOnManager.PluginManager;\r\n var resolvePluginName = function (targetUrl, suffix) {\r\n for (var name$$1 in PluginManager.urls) {\r\n var matchUrl = PluginManager.urls[name$$1] + '/plugin' + suffix + '.js';\r\n if (matchUrl === targetUrl) {\r\n return name$$1;\r\n }\r\n }\r\n return null;\r\n };\r\n var pluginUrlToMessage = function (editor, url) {\r\n var plugin = resolvePluginName(url, editor.suffix);\r\n return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url;\r\n };\r\n var displayNotification = function (editor, message) {\r\n editor.notificationManager.open({\r\n type: 'error',\r\n text: message\r\n });\r\n };\r\n var displayError = function (editor, message) {\r\n if (editor._skinLoaded) {\r\n displayNotification(editor, message);\r\n } else {\r\n editor.on('SkinLoaded', function () {\r\n displayNotification(editor, message);\r\n });\r\n }\r\n };\r\n var uploadError = function (editor, message) {\r\n displayError(editor, 'Failed to upload image: ' + message);\r\n };\r\n var pluginLoadError = function (editor, url) {\r\n displayError(editor, pluginUrlToMessage(editor, url));\r\n };\r\n var initError = function (message) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var console$$1 = window.console;\r\n if (console$$1) {\r\n if (console$$1.error) {\r\n console$$1.error.apply(console$$1, arguments);\r\n } else {\r\n console$$1.log.apply(console$$1, arguments);\r\n }\r\n }\r\n };\r\n var $_b9je0i54jkmcwlbe = {\r\n pluginLoadError: pluginLoadError,\r\n uploadError: uploadError,\r\n displayError: displayError,\r\n initError: initError\r\n };\r\n\r\n var PluginManager$1 = AddOnManager.PluginManager;\r\n\r\n var ThemeManager = AddOnManager.ThemeManager;\r\n\r\n function XMLHttpRequest () {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('XMLHttpRequest');\r\n return new f();\r\n }\r\n\r\n function Uploader (uploadStatus, settings) {\r\n var pendingPromises = {};\r\n var pathJoin = function (path1, path2) {\r\n if (path1) {\r\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\r\n }\r\n return path2;\r\n };\r\n var defaultHandler = function (blobInfo, success, failure, progress) {\r\n var xhr, formData;\r\n xhr = new XMLHttpRequest();\r\n xhr.open('POST', settings.url);\r\n xhr.withCredentials = settings.credentials;\r\n xhr.upload.onprogress = function (e) {\r\n progress(e.loaded / e.total * 100);\r\n };\r\n xhr.onerror = function () {\r\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\r\n };\r\n xhr.onload = function () {\r\n var json;\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n failure('HTTP Error: ' + xhr.status);\r\n return;\r\n }\r\n json = JSON.parse(xhr.responseText);\r\n if (!json || typeof json.location !== 'string') {\r\n failure('Invalid JSON: ' + xhr.responseText);\r\n return;\r\n }\r\n success(pathJoin(settings.basePath, json.location));\r\n };\r\n formData = new FormData();\r\n formData.append('file', blobInfo.blob(), blobInfo.filename());\r\n xhr.send(formData);\r\n };\r\n var noUpload = function () {\r\n return new promiseObj(function (resolve) {\r\n resolve([]);\r\n });\r\n };\r\n var handlerSuccess = function (blobInfo, url) {\r\n return {\r\n url: url,\r\n blobInfo: blobInfo,\r\n status: true\r\n };\r\n };\r\n var handlerFailure = function (blobInfo, error) {\r\n return {\r\n url: '',\r\n blobInfo: blobInfo,\r\n status: false,\r\n error: error\r\n };\r\n };\r\n var resolvePending = function (blobUri, result) {\r\n $_4ujg4tljkmcwkbk.each(pendingPromises[blobUri], function (resolve) {\r\n resolve(result);\r\n });\r\n delete pendingPromises[blobUri];\r\n };\r\n var uploadBlobInfo = function (blobInfo, handler, openNotification) {\r\n uploadStatus.markPending(blobInfo.blobUri());\r\n return new promiseObj(function (resolve) {\r\n var notification, progress;\r\n var noop = function () {\r\n };\r\n try {\r\n var closeNotification_1 = function () {\r\n if (notification) {\r\n notification.close();\r\n progress = noop;\r\n }\r\n };\r\n var success = function (url) {\r\n closeNotification_1();\r\n uploadStatus.markUploaded(blobInfo.blobUri(), url);\r\n resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\r\n resolve(handlerSuccess(blobInfo, url));\r\n };\r\n var failure = function (error) {\r\n closeNotification_1();\r\n uploadStatus.removeFailed(blobInfo.blobUri());\r\n resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\r\n resolve(handlerFailure(blobInfo, error));\r\n };\r\n progress = function (percent) {\r\n if (percent < 0 || percent > 100) {\r\n return;\r\n }\r\n if (!notification) {\r\n notification = openNotification();\r\n }\r\n notification.progressBar.value(percent);\r\n };\r\n handler(blobInfo, success, failure, progress);\r\n } catch (ex) {\r\n resolve(handlerFailure(blobInfo, ex.message));\r\n }\r\n });\r\n };\r\n var isDefaultHandler = function (handler) {\r\n return handler === defaultHandler;\r\n };\r\n var pendingUploadBlobInfo = function (blobInfo) {\r\n var blobUri = blobInfo.blobUri();\r\n return new promiseObj(function (resolve) {\r\n pendingPromises[blobUri] = pendingPromises[blobUri] || [];\r\n pendingPromises[blobUri].push(resolve);\r\n });\r\n };\r\n var uploadBlobs = function (blobInfos, openNotification) {\r\n blobInfos = $_4ujg4tljkmcwkbk.grep(blobInfos, function (blobInfo) {\r\n return !uploadStatus.isUploaded(blobInfo.blobUri());\r\n });\r\n return promiseObj.all($_4ujg4tljkmcwkbk.map(blobInfos, function (blobInfo) {\r\n return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification);\r\n }));\r\n };\r\n var upload = function (blobInfos, openNotification) {\r\n return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\r\n };\r\n settings = $_4ujg4tljkmcwkbk.extend({\r\n credentials: false,\r\n handler: defaultHandler\r\n }, settings);\r\n return { upload: upload };\r\n }\r\n\r\n function Blob (parts, properties) {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('Blob');\r\n return new f(parts, properties);\r\n }\r\n\r\n function FileReader () {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('FileReader');\r\n return new f();\r\n }\r\n\r\n function Uint8Array (arr) {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('Uint8Array');\r\n return new f(arr);\r\n }\r\n\r\n var requestAnimationFrame$1 = function (callback) {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('requestAnimationFrame');\r\n f(callback);\r\n };\r\n var atob = function (base64) {\r\n var f = $_89i3w1cjkmcwk2c.getOrDie('atob');\r\n return f(base64);\r\n };\r\n var $_b0eesx5hjkmcwld6 = {\r\n atob: atob,\r\n requestAnimationFrame: requestAnimationFrame$1\r\n };\r\n\r\n var blobUriToBlob = function (url) {\r\n return new promiseObj(function (resolve, reject) {\r\n var rejectWithError = function () {\r\n reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.');\r\n };\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'blob';\r\n xhr.onload = function () {\r\n if (this.status === 200) {\r\n resolve(this.response);\r\n } else {\r\n rejectWithError();\r\n }\r\n };\r\n xhr.onerror = rejectWithError;\r\n xhr.send();\r\n } catch (ex) {\r\n rejectWithError();\r\n }\r\n });\r\n };\r\n var parseDataUri = function (uri) {\r\n var type, matches;\r\n uri = decodeURIComponent(uri).split(',');\r\n matches = /data:([^;]+)/.exec(uri[0]);\r\n if (matches) {\r\n type = matches[1];\r\n }\r\n return {\r\n type: type,\r\n data: uri[1]\r\n };\r\n };\r\n var dataUriToBlob = function (uri) {\r\n return new promiseObj(function (resolve) {\r\n var str, arr, i;\r\n uri = parseDataUri(uri);\r\n try {\r\n str = $_b0eesx5hjkmcwld6.atob(uri.data);\r\n } catch (e) {\r\n resolve(new Blob([]));\r\n return;\r\n }\r\n arr = new Uint8Array(str.length);\r\n for (i = 0; i < arr.length; i++) {\r\n arr[i] = str.charCodeAt(i);\r\n }\r\n resolve(new Blob([arr], { type: uri.type }));\r\n });\r\n };\r\n var uriToBlob = function (url) {\r\n if (url.indexOf('blob:') === 0) {\r\n return blobUriToBlob(url);\r\n }\r\n if (url.indexOf('data:') === 0) {\r\n return dataUriToBlob(url);\r\n }\r\n return null;\r\n };\r\n var blobToDataUri = function (blob) {\r\n return new promiseObj(function (resolve) {\r\n var reader = new FileReader();\r\n reader.onloadend = function () {\r\n resolve(reader.result);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n };\r\n var $_7eufcj5djkmcwlcv = {\r\n uriToBlob: uriToBlob,\r\n blobToDataUri: blobToDataUri,\r\n parseDataUri: parseDataUri\r\n };\r\n\r\n var count = 0;\r\n var uniqueId = function (prefix) {\r\n return (prefix || 'blobid') + count++;\r\n };\r\n var imageToBlobInfo = function (blobCache, img, resolve, reject) {\r\n var base64, blobInfo;\r\n if (img.src.indexOf('blob:') === 0) {\r\n blobInfo = blobCache.getByUri(img.src);\r\n if (blobInfo) {\r\n resolve({\r\n image: img,\r\n blobInfo: blobInfo\r\n });\r\n } else {\r\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\r\n $_7eufcj5djkmcwlcv.blobToDataUri(blob).then(function (dataUri) {\r\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(dataUri).data;\r\n blobInfo = blobCache.create(uniqueId(), blob, base64);\r\n blobCache.add(blobInfo);\r\n resolve({\r\n image: img,\r\n blobInfo: blobInfo\r\n });\r\n });\r\n }, function (err) {\r\n reject(err);\r\n });\r\n }\r\n return;\r\n }\r\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(img.src).data;\r\n blobInfo = blobCache.findFirst(function (cachedBlobInfo) {\r\n return cachedBlobInfo.base64() === base64;\r\n });\r\n if (blobInfo) {\r\n resolve({\r\n image: img,\r\n blobInfo: blobInfo\r\n });\r\n } else {\r\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\r\n blobInfo = blobCache.create(uniqueId(), blob, base64);\r\n blobCache.add(blobInfo);\r\n resolve({\r\n image: img,\r\n blobInfo: blobInfo\r\n });\r\n }, function (err) {\r\n reject(err);\r\n });\r\n }\r\n };\r\n var getAllImages = function (elm) {\r\n return elm ? elm.getElementsByTagName('img') : [];\r\n };\r\n function ImageScanner (uploadStatus, blobCache) {\r\n var cachedPromises = {};\r\n var findAll = function (elm, predicate) {\r\n var images;\r\n if (!predicate) {\r\n predicate = $_fl2rax2ljkmcwkot.constant(true);\r\n }\r\n images = $_9g1fibmjkmcwkbu.filter(getAllImages(elm), function (img) {\r\n var src = img.src;\r\n if (!$_cvvl9iajkmcwk25.fileApi) {\r\n return false;\r\n }\r\n if (img.hasAttribute('data-mce-bogus')) {\r\n return false;\r\n }\r\n if (img.hasAttribute('data-mce-placeholder')) {\r\n return false;\r\n }\r\n if (!src || src === $_cvvl9iajkmcwk25.transparentSrc) {\r\n return false;\r\n }\r\n if (src.indexOf('blob:') === 0) {\r\n return !uploadStatus.isUploaded(src);\r\n }\r\n if (src.indexOf('data:') === 0) {\r\n return predicate(img);\r\n }\r\n return false;\r\n });\r\n var promises = $_9g1fibmjkmcwkbu.map(images, function (img) {\r\n if (cachedPromises[img.src]) {\r\n return new promiseObj(function (resolve) {\r\n cachedPromises[img.src].then(function (imageInfo) {\r\n if (typeof imageInfo === 'string') {\r\n return imageInfo;\r\n }\r\n resolve({\r\n image: img,\r\n blobInfo: imageInfo.blobInfo\r\n });\r\n });\r\n });\r\n }\r\n var newPromise = new promiseObj(function (resolve, reject) {\r\n imageToBlobInfo(blobCache, img, resolve, reject);\r\n }).then(function (result) {\r\n delete cachedPromises[result.image.src];\r\n return result;\r\n }).catch(function (error) {\r\n delete cachedPromises[img.src];\r\n return error;\r\n });\r\n cachedPromises[img.src] = newPromise;\r\n return newPromise;\r\n });\r\n return promiseObj.all(promises);\r\n };\r\n return { findAll: findAll };\r\n }\r\n\r\n var count$1 = 0;\r\n var seed = function () {\r\n var rnd = function () {\r\n return Math.round(Math.random() * 4294967295).toString(36);\r\n };\r\n var now = new Date().getTime();\r\n return 's' + now.toString(36) + rnd() + rnd() + rnd();\r\n };\r\n var uuid = function (prefix) {\r\n return prefix + count$1++ + seed();\r\n };\r\n var $_8flfjw5jjkmcwldd = { uuid: uuid };\r\n\r\n function BlobCache () {\r\n var cache = [];\r\n var constant = $_fl2rax2ljkmcwkot.constant;\r\n var mimeToExt = function (mime) {\r\n var mimes = {\r\n 'image/jpeg': 'jpg',\r\n 'image/jpg': 'jpg',\r\n 'image/gif': 'gif',\r\n 'image/png': 'png'\r\n };\r\n return mimes[mime.toLowerCase()] || 'dat';\r\n };\r\n var create = function (o, blob, base64, filename) {\r\n return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({\r\n id: o,\r\n name: filename,\r\n blob: blob,\r\n base64: base64\r\n });\r\n };\r\n var toBlobInfo = function (o) {\r\n var id, name;\r\n if (!o.blob || !o.base64) {\r\n throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\r\n }\r\n id = o.id || $_8flfjw5jjkmcwldd.uuid('blobid');\r\n name = o.name || id;\r\n return {\r\n id: constant(id),\r\n name: constant(name),\r\n filename: constant(name + '.' + mimeToExt(o.blob.type)),\r\n blob: constant(o.blob),\r\n base64: constant(o.base64),\r\n blobUri: constant(o.blobUri || $_ci16mbjkmcwk2b.createObjectURL(o.blob)),\r\n uri: constant(o.uri)\r\n };\r\n };\r\n var add = function (blobInfo) {\r\n if (!get(blobInfo.id())) {\r\n cache.push(blobInfo);\r\n }\r\n };\r\n var get = function (id) {\r\n return findFirst(function (cachedBlobInfo) {\r\n return cachedBlobInfo.id() === id;\r\n });\r\n };\r\n var findFirst = function (predicate) {\r\n return $_9g1fibmjkmcwkbu.filter(cache, predicate)[0];\r\n };\r\n var getByUri = function (blobUri) {\r\n return findFirst(function (blobInfo) {\r\n return blobInfo.blobUri() === blobUri;\r\n });\r\n };\r\n var removeByUri = function (blobUri) {\r\n cache = $_9g1fibmjkmcwkbu.filter(cache, function (blobInfo) {\r\n if (blobInfo.blobUri() === blobUri) {\r\n $_ci16mbjkmcwk2b.revokeObjectURL(blobInfo.blobUri());\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n var destroy = function () {\r\n $_9g1fibmjkmcwkbu.each(cache, function (cachedBlobInfo) {\r\n $_ci16mbjkmcwk2b.revokeObjectURL(cachedBlobInfo.blobUri());\r\n });\r\n cache = [];\r\n };\r\n return {\r\n create: create,\r\n add: add,\r\n get: get,\r\n getByUri: getByUri,\r\n findFirst: findFirst,\r\n removeByUri: removeByUri,\r\n destroy: destroy\r\n };\r\n }\r\n\r\n function UploadStatus () {\r\n var PENDING = 1, UPLOADED = 2;\r\n var blobUriStatuses = {};\r\n var createStatus = function (status, resultUri) {\r\n return {\r\n status: status,\r\n resultUri: resultUri\r\n };\r\n };\r\n var hasBlobUri = function (blobUri) {\r\n return blobUri in blobUriStatuses;\r\n };\r\n var getResultUri = function (blobUri) {\r\n var result = blobUriStatuses[blobUri];\r\n return result ? result.resultUri : null;\r\n };\r\n var isPending = function (blobUri) {\r\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\r\n };\r\n var isUploaded = function (blobUri) {\r\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\r\n };\r\n var markPending = function (blobUri) {\r\n blobUriStatuses[blobUri] = createStatus(PENDING, null);\r\n };\r\n var markUploaded = function (blobUri, resultUri) {\r\n blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\r\n };\r\n var removeFailed = function (blobUri) {\r\n delete blobUriStatuses[blobUri];\r\n };\r\n var destroy = function () {\r\n blobUriStatuses = {};\r\n };\r\n return {\r\n hasBlobUri: hasBlobUri,\r\n getResultUri: getResultUri,\r\n isPending: isPending,\r\n isUploaded: isUploaded,\r\n markPending: markPending,\r\n markUploaded: markUploaded,\r\n removeFailed: removeFailed,\r\n destroy: destroy\r\n };\r\n }\r\n\r\n function EditorUpload (editor) {\r\n var blobCache = BlobCache();\r\n var uploader, imageScanner;\r\n var settings = editor.settings;\r\n var uploadStatus = UploadStatus();\r\n var aliveGuard = function (callback) {\r\n return function (result) {\r\n if (editor.selection) {\r\n return callback(result);\r\n }\r\n return [];\r\n };\r\n };\r\n var cacheInvalidator = function () {\r\n return '?' + new Date().getTime();\r\n };\r\n var replaceString = function (content, search, replace) {\r\n var index = 0;\r\n do {\r\n index = content.indexOf(search, index);\r\n if (index !== -1) {\r\n content = content.substring(0, index) + replace + content.substr(index + search.length);\r\n index += replace.length - search.length + 1;\r\n }\r\n } while (index !== -1);\r\n return content;\r\n };\r\n var replaceImageUrl = function (content, targetUrl, replacementUrl) {\r\n content = replaceString(content, 'src=\"' + targetUrl + '\"', 'src=\"' + replacementUrl + '\"');\r\n content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\r\n return content;\r\n };\r\n var replaceUrlInUndoStack = function (targetUrl, replacementUrl) {\r\n $_9g1fibmjkmcwkbu.each(editor.undoManager.data, function (level) {\r\n if (level.type === 'fragmented') {\r\n level.fragments = $_9g1fibmjkmcwkbu.map(level.fragments, function (fragment) {\r\n return replaceImageUrl(fragment, targetUrl, replacementUrl);\r\n });\r\n } else {\r\n level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\r\n }\r\n });\r\n };\r\n var openNotification = function () {\r\n return editor.notificationManager.open({\r\n text: editor.translate('Image uploading...'),\r\n type: 'info',\r\n timeout: -1,\r\n progressBar: true\r\n });\r\n };\r\n var replaceImageUri = function (image, resultUri) {\r\n blobCache.removeByUri(image.src);\r\n replaceUrlInUndoStack(image.src, resultUri);\r\n editor.$(image).attr({\r\n 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri,\r\n 'data-mce-src': editor.convertURL(resultUri, 'src')\r\n });\r\n };\r\n var uploadImages = function (callback) {\r\n if (!uploader) {\r\n uploader = Uploader(uploadStatus, {\r\n url: settings.images_upload_url,\r\n basePath: settings.images_upload_base_path,\r\n credentials: settings.images_upload_credentials,\r\n handler: settings.images_upload_handler\r\n });\r\n }\r\n return scanForImages().then(aliveGuard(function (imageInfos) {\r\n var blobInfos;\r\n blobInfos = $_9g1fibmjkmcwkbu.map(imageInfos, function (imageInfo) {\r\n return imageInfo.blobInfo;\r\n });\r\n return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {\r\n var filteredResult = $_9g1fibmjkmcwkbu.map(result, function (uploadInfo, index) {\r\n var image = imageInfos[index].image;\r\n if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) {\r\n replaceImageUri(image, uploadInfo.url);\r\n } else if (uploadInfo.error) {\r\n $_b9je0i54jkmcwlbe.uploadError(editor, uploadInfo.error);\r\n }\r\n return {\r\n element: image,\r\n status: uploadInfo.status\r\n };\r\n });\r\n if (callback) {\r\n callback(filteredResult);\r\n }\r\n return filteredResult;\r\n }));\r\n }));\r\n };\r\n var uploadImagesAuto = function (callback) {\r\n if (settings.automatic_uploads !== false) {\r\n return uploadImages(callback);\r\n }\r\n };\r\n var isValidDataUriImage = function (imgElm) {\r\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\r\n };\r\n var scanForImages = function () {\r\n if (!imageScanner) {\r\n imageScanner = ImageScanner(uploadStatus, blobCache);\r\n }\r\n return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) {\r\n result = $_9g1fibmjkmcwkbu.filter(result, function (resultItem) {\r\n if (typeof resultItem === 'string') {\r\n $_b9je0i54jkmcwlbe.displayError(editor, resultItem);\r\n return false;\r\n }\r\n return true;\r\n });\r\n $_9g1fibmjkmcwkbu.each(result, function (resultItem) {\r\n replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\r\n resultItem.image.src = resultItem.blobInfo.blobUri();\r\n resultItem.image.removeAttribute('data-mce-src');\r\n });\r\n return result;\r\n }));\r\n };\r\n var destroy = function () {\r\n blobCache.destroy();\r\n uploadStatus.destroy();\r\n imageScanner = uploader = null;\r\n };\r\n var replaceBlobUris = function (content) {\r\n return content.replace(/src=\"(blob:[^\"]+)\"/g, function (match, blobUri) {\r\n var resultUri = uploadStatus.getResultUri(blobUri);\r\n if (resultUri) {\r\n return 'src=\"' + resultUri + '\"';\r\n }\r\n var blobInfo = blobCache.getByUri(blobUri);\r\n if (!blobInfo) {\r\n blobInfo = $_9g1fibmjkmcwkbu.reduce(editor.editorManager.get(), function (result, editor) {\r\n return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\r\n }, null);\r\n }\r\n if (blobInfo) {\r\n return 'src=\"data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '\"';\r\n }\r\n return match;\r\n });\r\n };\r\n editor.on('setContent', function () {\r\n if (editor.settings.automatic_uploads !== false) {\r\n uploadImagesAuto();\r\n } else {\r\n scanForImages();\r\n }\r\n });\r\n editor.on('RawSaveContent', function (e) {\r\n e.content = replaceBlobUris(e.content);\r\n });\r\n editor.on('getContent', function (e) {\r\n if (e.source_view || e.format === 'raw') {\r\n return;\r\n }\r\n e.content = replaceBlobUris(e.content);\r\n });\r\n editor.on('PostRender', function () {\r\n editor.parser.addNodeFilter('img', function (images) {\r\n $_9g1fibmjkmcwkbu.each(images, function (img) {\r\n var src = img.attr('src');\r\n if (blobCache.getByUri(src)) {\r\n return;\r\n }\r\n var resultUri = uploadStatus.getResultUri(src);\r\n if (resultUri) {\r\n img.attr('src', resultUri);\r\n }\r\n });\r\n });\r\n });\r\n return {\r\n blobCache: blobCache,\r\n uploadImages: uploadImages,\r\n uploadImagesAuto: uploadImagesAuto,\r\n scanForImages: scanForImages,\r\n destroy: destroy\r\n };\r\n }\r\n\r\n var isBlockElement = function (blockElements, node) {\r\n return blockElements.hasOwnProperty(node.nodeName);\r\n };\r\n var isValidTarget = function (blockElements, node) {\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n return true;\r\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n return !isBlockElement(blockElements, node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node);\r\n } else {\r\n return false;\r\n }\r\n };\r\n var hasBlockParent = function (blockElements, root, node) {\r\n return exists($_cir6zl3zjkmcwl2j.parents(Element$$1.fromDom(node), Element$$1.fromDom(root)), function (elm) {\r\n return isBlockElement(blockElements, elm.dom());\r\n });\r\n };\r\n var shouldRemoveTextNode = function (blockElements, node) {\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n if (node.nodeValue.length === 0) {\r\n return true;\r\n } else if (/^\\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var addRootBlocks = function (editor) {\r\n var settings = editor.settings, dom = editor.dom, selection = editor.selection;\r\n var schema = editor.schema, blockElements = schema.getBlockElements();\r\n var node = selection.getStart();\r\n var rootNode = editor.getBody();\r\n var rng;\r\n var startContainer, startOffset, endContainer, endOffset, rootBlockNode;\r\n var tempNode, wrapped, restoreSelection;\r\n var rootNodeName, forcedRootBlock;\r\n forcedRootBlock = settings.forced_root_block;\r\n if (!node || !$_bjermr1rjkmcwkij.isElement(node) || !forcedRootBlock) {\r\n return;\r\n }\r\n rootNodeName = rootNode.nodeName.toLowerCase();\r\n if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {\r\n return;\r\n }\r\n rng = selection.getRng();\r\n startContainer = rng.startContainer;\r\n startOffset = rng.startOffset;\r\n endContainer = rng.endContainer;\r\n endOffset = rng.endOffset;\r\n restoreSelection = $_e3v8sn4vjkmcwl9y.hasFocus(editor);\r\n node = rootNode.firstChild;\r\n while (node) {\r\n if (isValidTarget(blockElements, node)) {\r\n if (shouldRemoveTextNode(blockElements, node)) {\r\n tempNode = node;\r\n node = node.nextSibling;\r\n dom.remove(tempNode);\r\n continue;\r\n }\r\n if (!rootBlockNode) {\r\n rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);\r\n node.parentNode.insertBefore(rootBlockNode, node);\r\n wrapped = true;\r\n }\r\n tempNode = node;\r\n node = node.nextSibling;\r\n rootBlockNode.appendChild(tempNode);\r\n } else {\r\n rootBlockNode = null;\r\n node = node.nextSibling;\r\n }\r\n }\r\n if (wrapped && restoreSelection) {\r\n rng.setStart(startContainer, startOffset);\r\n rng.setEnd(endContainer, endOffset);\r\n selection.setRng(rng);\r\n editor.nodeChanged();\r\n }\r\n };\r\n var setup$2 = function (editor) {\r\n if (editor.settings.forced_root_block) {\r\n editor.on('NodeChange', curry(addRootBlocks, editor));\r\n }\r\n };\r\n var $_5utnj35ljkmcwldh = { setup: setup$2 };\r\n\r\n var getStartNode = function (rng) {\r\n var sc = rng.startContainer, so = rng.startOffset;\r\n if ($_bjermr1rjkmcwkij.isText(sc)) {\r\n return so === 0 ? Option.some(Element$$1.fromDom(sc)) : Option.none();\r\n } else {\r\n return Option.from(sc.childNodes[so]).map(Element$$1.fromDom);\r\n }\r\n };\r\n var getEndNode = function (rng) {\r\n var ec = rng.endContainer, eo = rng.endOffset;\r\n if ($_bjermr1rjkmcwkij.isText(ec)) {\r\n return eo === ec.data.length ? Option.some(Element$$1.fromDom(ec)) : Option.none();\r\n } else {\r\n return Option.from(ec.childNodes[eo - 1]).map(Element$$1.fromDom);\r\n }\r\n };\r\n var getFirstChildren = function (node) {\r\n return $_ca6pc118jkmcwkfs.firstChild(node).fold(constant([node]), function (child) {\r\n return [node].concat(getFirstChildren(child));\r\n });\r\n };\r\n var getLastChildren$1 = function (node) {\r\n return $_ca6pc118jkmcwkfs.lastChild(node).fold(constant([node]), function (child) {\r\n if ($_2xwdjv11jkmcwke0.name(child) === 'br') {\r\n return $_ca6pc118jkmcwkfs.prevSibling(child).map(function (sibling) {\r\n return [node].concat(getLastChildren$1(sibling));\r\n }).getOr([]);\r\n } else {\r\n return [node].concat(getLastChildren$1(child));\r\n }\r\n });\r\n };\r\n var hasAllContentsSelected = function (elm, rng) {\r\n return liftN([\r\n getStartNode(rng),\r\n getEndNode(rng)\r\n ], function (startNode, endNode) {\r\n var start = find(getFirstChildren(elm), curry($_e4hu6h1ejkmcwkgj.eq, startNode));\r\n var end = find(getLastChildren$1(elm), curry($_e4hu6h1ejkmcwkgj.eq, endNode));\r\n return start.isSome() && end.isSome();\r\n }).getOr(false);\r\n };\r\n var moveEndPoint$1 = function (dom, rng, node, start) {\r\n var root = node, walker = new TreeWalker(node, root);\r\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\r\n do {\r\n if (node.nodeType === 3 && $_4ujg4tljkmcwkbk.trim(node.nodeValue).length !== 0) {\r\n if (start) {\r\n rng.setStart(node, 0);\r\n } else {\r\n rng.setEnd(node, node.nodeValue.length);\r\n }\r\n return;\r\n }\r\n if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {\r\n if (start) {\r\n rng.setStartBefore(node);\r\n } else {\r\n if (node.nodeName === 'BR') {\r\n rng.setEndBefore(node);\r\n } else {\r\n rng.setEndAfter(node);\r\n }\r\n }\r\n return;\r\n }\r\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) {\r\n if (start) {\r\n rng.setStart(node, 0);\r\n } else {\r\n rng.setEnd(node, 0);\r\n }\r\n return;\r\n }\r\n } while (node = start ? walker.next() : walker.prev());\r\n if (root.nodeName === 'BODY') {\r\n if (start) {\r\n rng.setStart(root, 0);\r\n } else {\r\n rng.setEnd(root, root.childNodes.length);\r\n }\r\n }\r\n };\r\n var hasAnyRanges = function (editor) {\r\n var sel = editor.selection.getSel();\r\n return sel && sel.rangeCount > 0;\r\n };\r\n\r\n function NodeChange (editor) {\r\n var lastRng, lastPath = [];\r\n var isSameElementPath = function (startElm) {\r\n var i, currentPath;\r\n currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);\r\n if (currentPath.length === lastPath.length) {\r\n for (i = currentPath.length; i >= 0; i--) {\r\n if (currentPath[i] !== lastPath[i]) {\r\n break;\r\n }\r\n }\r\n if (i === -1) {\r\n lastPath = currentPath;\r\n return true;\r\n }\r\n }\r\n lastPath = currentPath;\r\n return false;\r\n };\r\n if (!('onselectionchange' in editor.getDoc())) {\r\n editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) {\r\n var nativeRng, fakeRng;\r\n nativeRng = editor.selection.getRng();\r\n fakeRng = {\r\n startContainer: nativeRng.startContainer,\r\n startOffset: nativeRng.startOffset,\r\n endContainer: nativeRng.endContainer,\r\n endOffset: nativeRng.endOffset\r\n };\r\n if (e.type === 'nodechange' || !$_axtxv74kjkmcwl84.isEq(fakeRng, lastRng)) {\r\n editor.fire('SelectionChange');\r\n }\r\n lastRng = fakeRng;\r\n });\r\n }\r\n editor.on('contextmenu', function () {\r\n editor.fire('SelectionChange');\r\n });\r\n editor.on('SelectionChange', function () {\r\n var startElm = editor.selection.getStart(true);\r\n if (!startElm || !$_cvvl9iajkmcwk25.range && editor.selection.isCollapsed()) {\r\n return;\r\n }\r\n if (hasAnyRanges(editor) && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\r\n editor.nodeChanged({ selectionChange: true });\r\n }\r\n });\r\n editor.on('MouseUp', function (e) {\r\n if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\r\n if (editor.selection.getNode().nodeName === 'IMG') {\r\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\r\n editor.nodeChanged();\r\n });\r\n } else {\r\n editor.nodeChanged();\r\n }\r\n }\r\n });\r\n this.nodeChanged = function (args) {\r\n var selection = editor.selection;\r\n var node, parents, root;\r\n if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) {\r\n root = editor.getBody();\r\n node = selection.getStart(true) || root;\r\n if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) {\r\n node = root;\r\n }\r\n parents = [];\r\n editor.dom.getParent(node, function (node) {\r\n if (node === root) {\r\n return true;\r\n }\r\n parents.push(node);\r\n });\r\n args = args || {};\r\n args.element = node;\r\n args.parents = parents;\r\n editor.fire('NodeChange', args);\r\n }\r\n };\r\n }\r\n\r\n var getAbsolutePosition = function (elm) {\r\n var doc, docElem, win, clientRect;\r\n clientRect = elm.getBoundingClientRect();\r\n doc = elm.ownerDocument;\r\n docElem = doc.documentElement;\r\n win = doc.defaultView;\r\n return {\r\n top: clientRect.top + win.pageYOffset - docElem.clientTop,\r\n left: clientRect.left + win.pageXOffset - docElem.clientLeft\r\n };\r\n };\r\n var getBodyPosition = function (editor) {\r\n return editor.inline ? getAbsolutePosition(editor.getBody()) : {\r\n left: 0,\r\n top: 0\r\n };\r\n };\r\n var getScrollPosition = function (editor) {\r\n var body = editor.getBody();\r\n return editor.inline ? {\r\n left: body.scrollLeft,\r\n top: body.scrollTop\r\n } : {\r\n left: 0,\r\n top: 0\r\n };\r\n };\r\n var getBodyScroll = function (editor) {\r\n var body = editor.getBody(), docElm = editor.getDoc().documentElement;\r\n var inlineScroll = {\r\n left: body.scrollLeft,\r\n top: body.scrollTop\r\n };\r\n var iframeScroll = {\r\n left: body.scrollLeft || docElm.scrollLeft,\r\n top: body.scrollTop || docElm.scrollTop\r\n };\r\n return editor.inline ? inlineScroll : iframeScroll;\r\n };\r\n var getMousePosition = function (editor, event) {\r\n if (event.target.ownerDocument !== editor.getDoc()) {\r\n var iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\r\n var scrollPosition = getBodyScroll(editor);\r\n return {\r\n left: event.pageX - iframePosition.left + scrollPosition.left,\r\n top: event.pageY - iframePosition.top + scrollPosition.top\r\n };\r\n }\r\n return {\r\n left: event.pageX,\r\n top: event.pageY\r\n };\r\n };\r\n var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) {\r\n return {\r\n pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\r\n pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\r\n };\r\n };\r\n var calc = function (editor, event) {\r\n return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\r\n };\r\n var $_7vqqhl5qjkmcwlfd = { calc: calc };\r\n\r\n var isContentEditableFalse$7 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isContentEditableTrue$4 = $_bjermr1rjkmcwkij.isContentEditableTrue;\r\n var isDraggable = function (rootElm, elm) {\r\n return isContentEditableFalse$7(elm) && elm !== rootElm;\r\n };\r\n var isValidDropTarget = function (editor, targetElement, dragElement) {\r\n if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\r\n return false;\r\n }\r\n if (isContentEditableFalse$7(targetElement)) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n var cloneElement = function (elm) {\r\n var cloneElm = elm.cloneNode(true);\r\n cloneElm.removeAttribute('data-mce-selected');\r\n return cloneElm;\r\n };\r\n var createGhost = function (editor, elm, width, height) {\r\n var clonedElm = elm.cloneNode(true);\r\n editor.dom.setStyles(clonedElm, {\r\n width: width,\r\n height: height\r\n });\r\n editor.dom.setAttrib(clonedElm, 'data-mce-selected', null);\r\n var ghostElm = editor.dom.create('div', {\r\n 'class': 'mce-drag-container',\r\n 'data-mce-bogus': 'all',\r\n 'unselectable': 'on',\r\n 'contenteditable': 'false'\r\n });\r\n editor.dom.setStyles(ghostElm, {\r\n position: 'absolute',\r\n opacity: 0.5,\r\n overflow: 'hidden',\r\n border: 0,\r\n padding: 0,\r\n margin: 0,\r\n width: width,\r\n height: height\r\n });\r\n editor.dom.setStyles(clonedElm, {\r\n margin: 0,\r\n boxSizing: 'border-box'\r\n });\r\n ghostElm.appendChild(clonedElm);\r\n return ghostElm;\r\n };\r\n var appendGhostToBody = function (ghostElm, bodyElm) {\r\n if (ghostElm.parentNode !== bodyElm) {\r\n bodyElm.appendChild(ghostElm);\r\n }\r\n };\r\n var moveGhost = function (ghostElm, position, width, height, maxX, maxY) {\r\n var overflowX = 0, overflowY = 0;\r\n ghostElm.style.left = position.pageX + 'px';\r\n ghostElm.style.top = position.pageY + 'px';\r\n if (position.pageX + width > maxX) {\r\n overflowX = position.pageX + width - maxX;\r\n }\r\n if (position.pageY + height > maxY) {\r\n overflowY = position.pageY + height - maxY;\r\n }\r\n ghostElm.style.width = width - overflowX + 'px';\r\n ghostElm.style.height = height - overflowY + 'px';\r\n };\r\n var removeElement = function (elm) {\r\n if (elm && elm.parentNode) {\r\n elm.parentNode.removeChild(elm);\r\n }\r\n };\r\n var isLeftMouseButtonPressed = function (e) {\r\n return e.button === 0;\r\n };\r\n var hasDraggableElement = function (state) {\r\n return state.element;\r\n };\r\n var applyRelPos = function (state, position) {\r\n return {\r\n pageX: position.pageX - state.relX,\r\n pageY: position.pageY + 5\r\n };\r\n };\r\n var start$1 = function (state, editor) {\r\n return function (e) {\r\n if (isLeftMouseButtonPressed(e)) {\r\n var ceElm = $_9g1fibmjkmcwkbu.find(editor.dom.getParents(e.target), $_fl2rax2ljkmcwkot.or(isContentEditableFalse$7, isContentEditableTrue$4));\r\n if (isDraggable(editor.getBody(), ceElm)) {\r\n var elmPos = editor.dom.getPos(ceElm);\r\n var bodyElm = editor.getBody();\r\n var docElm = editor.getDoc().documentElement;\r\n state.element = ceElm;\r\n state.screenX = e.screenX;\r\n state.screenY = e.screenY;\r\n state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2;\r\n state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2;\r\n state.relX = e.pageX - elmPos.x;\r\n state.relY = e.pageY - elmPos.y;\r\n state.width = ceElm.offsetWidth;\r\n state.height = ceElm.offsetHeight;\r\n state.ghost = createGhost(editor, ceElm, state.width, state.height);\r\n }\r\n }\r\n };\r\n };\r\n var move$1 = function (state, editor) {\r\n var throttledPlaceCaretAt = $_3l01gcijkmcwk99.throttle(function (clientX, clientY) {\r\n editor._selectionOverrides.hideFakeCaret();\r\n editor.selection.placeCaretAt(clientX, clientY);\r\n }, 0);\r\n return function (e) {\r\n var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\r\n if (hasDraggableElement(state) && !state.dragging && movement > 10) {\r\n var args = editor.fire('dragstart', { target: state.element });\r\n if (args.isDefaultPrevented()) {\r\n return;\r\n }\r\n state.dragging = true;\r\n editor.focus();\r\n }\r\n if (state.dragging) {\r\n var targetPos = applyRelPos(state, $_7vqqhl5qjkmcwlfd.calc(editor, e));\r\n appendGhostToBody(state.ghost, editor.getBody());\r\n moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY);\r\n throttledPlaceCaretAt(e.clientX, e.clientY);\r\n }\r\n };\r\n };\r\n var getRawTarget = function (selection) {\r\n var rng = selection.getSel().getRangeAt(0);\r\n var startContainer = rng.startContainer;\r\n return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer;\r\n };\r\n var drop = function (state, editor) {\r\n return function (e) {\r\n if (state.dragging) {\r\n if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\r\n var targetClone_1 = cloneElement(state.element);\r\n var args = editor.fire('drop', {\r\n targetClone: targetClone_1,\r\n clientX: e.clientX,\r\n clientY: e.clientY\r\n });\r\n if (!args.isDefaultPrevented()) {\r\n targetClone_1 = args.targetClone;\r\n editor.undoManager.transact(function () {\r\n removeElement(state.element);\r\n editor.insertContent(editor.dom.getOuterHTML(targetClone_1));\r\n editor._selectionOverrides.hideFakeCaret();\r\n });\r\n }\r\n }\r\n }\r\n removeDragState(state);\r\n };\r\n };\r\n var stop$$1 = function (state, editor) {\r\n return function () {\r\n if (state.dragging) {\r\n editor.fire('dragend');\r\n }\r\n removeDragState(state);\r\n };\r\n };\r\n var removeDragState = function (state) {\r\n state.dragging = false;\r\n state.element = null;\r\n removeElement(state.ghost);\r\n };\r\n var bindFakeDragEvents = function (editor) {\r\n var state = {};\r\n var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;\r\n pageDom = DOMUtils$1.DOM;\r\n rootDocument = document;\r\n dragStartHandler = start$1(state, editor);\r\n dragHandler = move$1(state, editor);\r\n dropHandler = drop(state, editor);\r\n dragEndHandler = stop$$1(state, editor);\r\n editor.on('mousedown', dragStartHandler);\r\n editor.on('mousemove', dragHandler);\r\n editor.on('mouseup', dropHandler);\r\n pageDom.bind(rootDocument, 'mousemove', dragHandler);\r\n pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\r\n editor.on('remove', function () {\r\n pageDom.unbind(rootDocument, 'mousemove', dragHandler);\r\n pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\r\n });\r\n };\r\n var blockIeDrop = function (editor) {\r\n editor.on('drop', function (e) {\r\n var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;\r\n if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) {\r\n e.preventDefault();\r\n }\r\n });\r\n };\r\n var init = function (editor) {\r\n bindFakeDragEvents(editor);\r\n blockIeDrop(editor);\r\n };\r\n var $_amfo0m5pjkmcwlf7 = { init: init };\r\n\r\n var getNodeClientRects = function (node) {\r\n var toArrayWithNode = function (clientRects) {\r\n return $_9g1fibmjkmcwkbu.map(clientRects, function (clientRect) {\r\n clientRect = clone$2(clientRect);\r\n clientRect.node = node;\r\n return clientRect;\r\n });\r\n };\r\n if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n return toArrayWithNode(node.getClientRects());\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n var rng = node.ownerDocument.createRange();\r\n rng.setStart(node, 0);\r\n rng.setEnd(node, node.data.length);\r\n return toArrayWithNode(rng.getClientRects());\r\n }\r\n };\r\n var getClientRects = function (node) {\r\n return $_9g1fibmjkmcwkbu.reduce(node, function (result, node) {\r\n return result.concat(getNodeClientRects(node));\r\n }, []);\r\n };\r\n\r\n var VDirection;\r\n (function (VDirection) {\r\n VDirection[VDirection['Up'] = -1] = 'Up';\r\n VDirection[VDirection['Down'] = 1] = 'Down';\r\n }(VDirection || (VDirection = {})));\r\n var findUntil = function (direction, root, predicateFn, node) {\r\n while (node = findNode(node, direction, isEditableCaretCandidate, root)) {\r\n if (predicateFn(node)) {\r\n return;\r\n }\r\n }\r\n };\r\n var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {\r\n var line = 0, node;\r\n var result = [];\r\n var targetClientRect;\r\n var add = function (node) {\r\n var i, clientRect, clientRects;\r\n clientRects = getClientRects([node]);\r\n if (direction === -1) {\r\n clientRects = clientRects.reverse();\r\n }\r\n for (i = 0; i < clientRects.length; i++) {\r\n clientRect = clientRects[i];\r\n if (isBeflowFn(clientRect, targetClientRect)) {\r\n continue;\r\n }\r\n if (result.length > 0 && isAboveFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\r\n line++;\r\n }\r\n clientRect.line = line;\r\n if (predicateFn(clientRect)) {\r\n return true;\r\n }\r\n result.push(clientRect);\r\n }\r\n };\r\n targetClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\r\n if (!targetClientRect) {\r\n return result;\r\n }\r\n node = caretPosition.getNode();\r\n add(node);\r\n findUntil(direction, root, add, node);\r\n return result;\r\n };\r\n var aboveLineNumber = function (lineNumber, clientRect) {\r\n return clientRect.line > lineNumber;\r\n };\r\n var isLineNumber = function (lineNumber, clientRect) {\r\n return clientRect.line === lineNumber;\r\n };\r\n var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);\r\n var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);\r\n var positionsUntil = function (direction, root, predicateFn, node) {\r\n var caretWalker = CaretWalker(root);\r\n var walkFn, isBelowFn, isAboveFn, caretPosition;\r\n var result = [];\r\n var line = 0, clientRect, targetClientRect;\r\n var getClientRect = function (caretPosition) {\r\n if (direction === 1) {\r\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\r\n }\r\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\r\n };\r\n if (direction === 1) {\r\n walkFn = caretWalker.next;\r\n isBelowFn = isBelow;\r\n isAboveFn = isAbove;\r\n caretPosition = CaretPosition$1.after(node);\r\n } else {\r\n walkFn = caretWalker.prev;\r\n isBelowFn = isAbove;\r\n isAboveFn = isBelow;\r\n caretPosition = CaretPosition$1.before(node);\r\n }\r\n targetClientRect = getClientRect(caretPosition);\r\n do {\r\n if (!caretPosition.isVisible()) {\r\n continue;\r\n }\r\n clientRect = getClientRect(caretPosition);\r\n if (isAboveFn(clientRect, targetClientRect)) {\r\n continue;\r\n }\r\n if (result.length > 0 && isBelowFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\r\n line++;\r\n }\r\n clientRect = clone$2(clientRect);\r\n clientRect.position = caretPosition;\r\n clientRect.line = line;\r\n if (predicateFn(clientRect)) {\r\n return result;\r\n }\r\n result.push(clientRect);\r\n } while (caretPosition = walkFn(caretPosition));\r\n return result;\r\n };\r\n var isAboveLine = function (lineNumber) {\r\n return function (clientRect) {\r\n return aboveLineNumber(lineNumber, clientRect);\r\n };\r\n };\r\n var isLine = function (lineNumber) {\r\n return function (clientRect) {\r\n return isLineNumber(lineNumber, clientRect);\r\n };\r\n };\r\n\r\n var isContentEditableFalse$8 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var findNode$1 = findNode;\r\n var distanceToRectLeft = function (clientRect, clientX) {\r\n return Math.abs(clientRect.left - clientX);\r\n };\r\n var distanceToRectRight = function (clientRect, clientX) {\r\n return Math.abs(clientRect.right - clientX);\r\n };\r\n var isInside = function (clientX, clientRect) {\r\n return clientX >= clientRect.left && clientX <= clientRect.right;\r\n };\r\n var findClosestClientRect = function (clientRects, clientX) {\r\n return $_9g1fibmjkmcwkbu.reduce(clientRects, function (oldClientRect, clientRect) {\r\n var oldDistance, newDistance;\r\n oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));\r\n newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));\r\n if (isInside(clientX, clientRect)) {\r\n return clientRect;\r\n }\r\n if (isInside(clientX, oldClientRect)) {\r\n return oldClientRect;\r\n }\r\n if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {\r\n return clientRect;\r\n }\r\n if (newDistance < oldDistance) {\r\n return clientRect;\r\n }\r\n return oldClientRect;\r\n });\r\n };\r\n var walkUntil$1 = function (direction, root, predicateFn, node) {\r\n while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) {\r\n if (predicateFn(node)) {\r\n return;\r\n }\r\n }\r\n };\r\n var findLineNodeRects = function (root, targetNodeRect) {\r\n var clientRects = [];\r\n var collect = function (checkPosFn, node) {\r\n var lineRects;\r\n lineRects = $_9g1fibmjkmcwkbu.filter(getClientRects([node]), function (clientRect) {\r\n return !checkPosFn(clientRect, targetNodeRect);\r\n });\r\n clientRects = clientRects.concat(lineRects);\r\n return lineRects.length === 0;\r\n };\r\n clientRects.push(targetNodeRect);\r\n walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node);\r\n walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node);\r\n return clientRects;\r\n };\r\n var getFakeCaretTargets = function (root) {\r\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.toArray(root.getElementsByTagName('*')), isFakeCaretTarget);\r\n };\r\n var caretInfo = function (clientRect, clientX) {\r\n return {\r\n node: clientRect.node,\r\n before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)\r\n };\r\n };\r\n var closestCaret = function (root, clientX, clientY) {\r\n var closestNodeRect;\r\n var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root));\r\n var targetNodeRects = $_9g1fibmjkmcwkbu.filter(contentEditableFalseNodeRects, function (rect) {\r\n return clientY >= rect.top && clientY <= rect.bottom;\r\n });\r\n closestNodeRect = findClosestClientRect(targetNodeRects, clientX);\r\n if (closestNodeRect) {\r\n closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX);\r\n if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {\r\n return caretInfo(closestNodeRect, clientX);\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n var isXYWithinRange = function (clientX, clientY, range$$1) {\r\n if (range$$1.collapsed) {\r\n return false;\r\n }\r\n return foldl(range$$1.getClientRects(), function (state, rect) {\r\n return state || containsXY(rect, clientX, clientY);\r\n }, false);\r\n };\r\n var $_95lcbc5ujkmcwlg1 = { isXYWithinRange: isXYWithinRange };\r\n\r\n var setup$3 = function (editor) {\r\n var renderFocusCaret = first$1(function () {\r\n if (!editor.removed) {\r\n var rng = editor.selection.getRng();\r\n if (rng.collapsed) {\r\n var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false);\r\n editor.selection.setRng(caretRange);\r\n }\r\n }\r\n }, 0);\r\n editor.on('focus', function () {\r\n renderFocusCaret.throttle();\r\n });\r\n editor.on('blur', function () {\r\n renderFocusCaret.cancel();\r\n });\r\n };\r\n var $_8glegd5vjkmcwlg3 = { setup: setup$3 };\r\n\r\n var $_6bj5795wjkmcwlg6 = {\r\n BACKSPACE: 8,\r\n DELETE: 46,\r\n DOWN: 40,\r\n ENTER: 13,\r\n LEFT: 37,\r\n RIGHT: 39,\r\n SPACEBAR: 32,\r\n TAB: 9,\r\n UP: 38,\r\n modifierPressed: function (e) {\r\n return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);\r\n },\r\n metaKeyPressed: function (e) {\r\n return $_cvvl9iajkmcwk25.mac ? e.metaKey : e.ctrlKey && !e.altKey;\r\n }\r\n };\r\n\r\n var isContentEditableTrue$5 = $_bjermr1rjkmcwkij.isContentEditableTrue;\r\n var isContentEditableFalse$9 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isAfterContentEditableFalse$1 = isAfterContentEditableFalse;\r\n var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse;\r\n var getContentEditableRoot$1 = function (editor, node) {\r\n var root = editor.getBody();\r\n while (node && node !== root) {\r\n if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var SelectionOverrides = function (editor) {\r\n var isBlock = function (node) {\r\n return editor.dom.isBlock(node);\r\n };\r\n var rootNode = editor.getBody();\r\n var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () {\r\n return $_e3v8sn4vjkmcwl9y.hasFocus(editor);\r\n });\r\n var realSelectionId = 'sel-' + editor.dom.uniqueId();\r\n var selectedContentEditableNode;\r\n var isFakeSelectionElement = function (elm) {\r\n return editor.dom.hasClass(elm, 'mce-offscreen-selection');\r\n };\r\n var getRealSelectionElement = function () {\r\n var container = editor.dom.get(realSelectionId);\r\n return container ? container.getElementsByTagName('*')[0] : container;\r\n };\r\n var setRange = function (range$$1) {\r\n if (range$$1) {\r\n editor.selection.setRng(range$$1);\r\n }\r\n };\r\n var getRange = function () {\r\n return editor.selection.getRng();\r\n };\r\n var showCaret$$1 = function (direction, node, before, scrollIntoView) {\r\n if (scrollIntoView === void 0) {\r\n scrollIntoView = true;\r\n }\r\n var e;\r\n e = editor.fire('ShowCaret', {\r\n target: node,\r\n direction: direction,\r\n before: before\r\n });\r\n if (e.isDefaultPrevented()) {\r\n return null;\r\n }\r\n if (scrollIntoView) {\r\n editor.selection.scrollIntoView(node, direction === -1);\r\n }\r\n return fakeCaret.show(before, node);\r\n };\r\n var getNormalizedRangeEndPoint$$1 = function (direction, range$$1) {\r\n range$$1 = normalizeRange(direction, rootNode, range$$1);\r\n if (direction === -1) {\r\n return CaretPosition$1.fromRangeStart(range$$1);\r\n }\r\n return CaretPosition$1.fromRangeEnd(range$$1);\r\n };\r\n var showBlockCaretContainer = function (blockCaretContainer) {\r\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\r\n showCaretContainerBlock(blockCaretContainer);\r\n setRange(getRange());\r\n editor.selection.scrollIntoView(blockCaretContainer[0]);\r\n }\r\n };\r\n var registerEvents = function () {\r\n editor.on('mouseup', function (e) {\r\n var range$$1 = getRange();\r\n if (range$$1.collapsed && $_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY)) {\r\n setRange(renderCaretAtRange(editor, range$$1, false));\r\n }\r\n });\r\n editor.on('click', function (e) {\r\n var contentEditableRoot;\r\n contentEditableRoot = getContentEditableRoot$1(editor, e.target);\r\n if (contentEditableRoot) {\r\n if (isContentEditableFalse$9(contentEditableRoot)) {\r\n e.preventDefault();\r\n editor.focus();\r\n }\r\n if (isContentEditableTrue$5(contentEditableRoot)) {\r\n if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {\r\n removeContentEditableSelection();\r\n }\r\n }\r\n }\r\n });\r\n editor.on('blur NewBlock', function () {\r\n removeContentEditableSelection();\r\n });\r\n editor.on('ResizeWindow FullscreenStateChanged', function () {\r\n return fakeCaret.reposition();\r\n });\r\n var handleTouchSelect = function (editor) {\r\n var moved = false;\r\n editor.on('touchstart', function () {\r\n moved = false;\r\n });\r\n editor.on('touchmove', function () {\r\n moved = true;\r\n });\r\n editor.on('touchend', function (e) {\r\n var contentEditableRoot = getContentEditableRoot$1(editor, e.target);\r\n if (isContentEditableFalse$9(contentEditableRoot)) {\r\n if (!moved) {\r\n e.preventDefault();\r\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\r\n }\r\n }\r\n });\r\n };\r\n var hasNormalCaretPosition = function (elm) {\r\n var caretWalker = CaretWalker(elm);\r\n if (!elm.firstChild) {\r\n return false;\r\n }\r\n var startPos = CaretPosition$1.before(elm.firstChild);\r\n var newPos = caretWalker.next(startPos);\r\n return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos);\r\n };\r\n var isInSameBlock$$1 = function (node1, node2) {\r\n var block1 = editor.dom.getParent(node1, editor.dom.isBlock);\r\n var block2 = editor.dom.getParent(node2, editor.dom.isBlock);\r\n return block1 === block2;\r\n };\r\n var hasBetterMouseTarget = function (targetNode, caretNode) {\r\n var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock);\r\n var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock);\r\n if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) {\r\n return true;\r\n }\r\n return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);\r\n };\r\n handleTouchSelect(editor);\r\n editor.on('mousedown', function (e) {\r\n var contentEditableRoot;\r\n var targetElm = e.target;\r\n if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) {\r\n return;\r\n }\r\n if ($_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY) === false) {\r\n return;\r\n }\r\n contentEditableRoot = getContentEditableRoot$1(editor, targetElm);\r\n if (contentEditableRoot) {\r\n if (isContentEditableFalse$9(contentEditableRoot)) {\r\n e.preventDefault();\r\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\r\n } else {\r\n removeContentEditableSelection();\r\n if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {\r\n hideFakeCaret();\r\n editor.selection.placeCaretAt(e.clientX, e.clientY);\r\n }\r\n }\r\n } else if (isFakeCaretTarget(targetElm) === false) {\r\n removeContentEditableSelection();\r\n hideFakeCaret();\r\n var caretInfo = closestCaret(rootNode, e.clientX, e.clientY);\r\n if (caretInfo) {\r\n if (!hasBetterMouseTarget(e.target, caretInfo.node)) {\r\n e.preventDefault();\r\n var range$$1 = showCaret$$1(1, caretInfo.node, caretInfo.before, false);\r\n editor.getBody().focus();\r\n setRange(range$$1);\r\n }\r\n }\r\n }\r\n });\r\n editor.on('keypress', function (e) {\r\n if ($_6bj5795wjkmcwlg6.modifierPressed(e)) {\r\n return;\r\n }\r\n switch (e.keyCode) {\r\n default:\r\n if (isContentEditableFalse$9(editor.selection.getNode())) {\r\n e.preventDefault();\r\n }\r\n break;\r\n }\r\n });\r\n editor.on('getSelectionRange', function (e) {\r\n var rng = e.range;\r\n if (selectedContentEditableNode) {\r\n if (!selectedContentEditableNode.parentNode) {\r\n selectedContentEditableNode = null;\r\n return;\r\n }\r\n rng = rng.cloneRange();\r\n rng.selectNode(selectedContentEditableNode);\r\n e.range = rng;\r\n }\r\n });\r\n editor.on('setSelectionRange', function (e) {\r\n var rng;\r\n rng = setContentEditableSelection(e.range, e.forward);\r\n if (rng) {\r\n e.range = rng;\r\n }\r\n });\r\n var isPasteBin = function (node) {\r\n return node.id === 'mcepastebin';\r\n };\r\n editor.on('AfterSetSelectionRange', function (e) {\r\n var rng = e.range;\r\n if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) {\r\n hideFakeCaret();\r\n }\r\n if (!isFakeSelectionElement(rng.startContainer.parentNode)) {\r\n removeContentEditableSelection();\r\n }\r\n });\r\n editor.on('copy', function (e) {\r\n var clipboardData = e.clipboardData;\r\n if (!e.isDefaultPrevented() && e.clipboardData && !$_cvvl9iajkmcwk25.ie) {\r\n var realSelectionElement = getRealSelectionElement();\r\n if (realSelectionElement) {\r\n e.preventDefault();\r\n clipboardData.clearData();\r\n clipboardData.setData('text/html', realSelectionElement.outerHTML);\r\n clipboardData.setData('text/plain', realSelectionElement.outerText);\r\n }\r\n }\r\n });\r\n $_amfo0m5pjkmcwlf7.init(editor);\r\n $_8glegd5vjkmcwlg3.setup(editor);\r\n };\r\n var addCss = function () {\r\n var styles = editor.contentStyles, rootClass = '.mce-content-body';\r\n styles.push(fakeCaret.getCss());\r\n styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}');\r\n };\r\n var isWithinCaretContainer = function (node) {\r\n return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);\r\n };\r\n var isRangeInCaretContainer = function (rng) {\r\n return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\r\n };\r\n var setContentEditableSelection = function (range$$1, forward) {\r\n var node;\r\n var $ = editor.$;\r\n var dom = editor.dom;\r\n var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;\r\n if (!range$$1) {\r\n return null;\r\n }\r\n if (range$$1.collapsed) {\r\n if (!isRangeInCaretContainer(range$$1)) {\r\n if (forward === false) {\r\n caretPosition = getNormalizedRangeEndPoint$$1(-1, range$$1);\r\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\r\n return showCaret$$1(-1, caretPosition.getNode(true), false, false);\r\n }\r\n if (isFakeCaretTarget(caretPosition.getNode())) {\r\n return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\r\n }\r\n } else {\r\n caretPosition = getNormalizedRangeEndPoint$$1(1, range$$1);\r\n if (isFakeCaretTarget(caretPosition.getNode())) {\r\n return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\r\n }\r\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\r\n return showCaret$$1(1, caretPosition.getNode(true), false, false);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n startContainer = range$$1.startContainer;\r\n startOffset = range$$1.startOffset;\r\n endOffset = range$$1.endOffset;\r\n if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {\r\n startContainer = startContainer.parentNode;\r\n startOffset = dom.nodeIndex(startContainer);\r\n startContainer = startContainer.parentNode;\r\n }\r\n if (startContainer.nodeType !== 1) {\r\n return null;\r\n }\r\n if (endOffset === startOffset + 1) {\r\n node = startContainer.childNodes[startOffset];\r\n }\r\n if (!isContentEditableFalse$9(node)) {\r\n return null;\r\n }\r\n targetClone = origTargetClone = node.cloneNode(true);\r\n e = editor.fire('ObjectSelected', {\r\n target: node,\r\n targetClone: targetClone\r\n });\r\n if (e.isDefaultPrevented()) {\r\n return null;\r\n }\r\n $realSelectionContainer = $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {\r\n return $([]);\r\n }, function (elm) {\r\n return $([elm.dom()]);\r\n });\r\n targetClone = e.targetClone;\r\n if ($realSelectionContainer.length === 0) {\r\n $realSelectionContainer = $('
').attr('id', realSelectionId);\r\n $realSelectionContainer.appendTo(editor.getBody());\r\n }\r\n range$$1 = editor.dom.createRng();\r\n if (targetClone === origTargetClone && $_cvvl9iajkmcwk25.ie) {\r\n $realSelectionContainer.empty().append('

\\xA0

').append(targetClone);\r\n range$$1.setStartAfter($realSelectionContainer[0].firstChild.firstChild);\r\n range$$1.setEndAfter(targetClone);\r\n } else {\r\n $realSelectionContainer.empty().append('\\xA0').append(targetClone).append('\\xA0');\r\n range$$1.setStart($realSelectionContainer[0].firstChild, 1);\r\n range$$1.setEnd($realSelectionContainer[0].lastChild, 0);\r\n }\r\n $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });\r\n $realSelectionContainer[0].focus();\r\n sel = editor.selection.getSel();\r\n sel.removeAllRanges();\r\n sel.addRange(range$$1);\r\n each($_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {\r\n $_29helg15jkmcwkf0.remove(elm, 'data-mce-selected');\r\n });\r\n node.setAttribute('data-mce-selected', '1');\r\n selectedContentEditableNode = node;\r\n hideFakeCaret();\r\n return range$$1;\r\n };\r\n var removeContentEditableSelection = function () {\r\n if (selectedContentEditableNode) {\r\n selectedContentEditableNode.removeAttribute('data-mce-selected');\r\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\r\n selectedContentEditableNode = null;\r\n }\r\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\r\n selectedContentEditableNode = null;\r\n };\r\n var destroy = function () {\r\n fakeCaret.destroy();\r\n selectedContentEditableNode = null;\r\n };\r\n var hideFakeCaret = function () {\r\n fakeCaret.hide();\r\n };\r\n if ($_cvvl9iajkmcwk25.ceFalse) {\r\n registerEvents();\r\n addCss();\r\n }\r\n return {\r\n showCaret: showCaret$$1,\r\n showBlockCaretContainer: showBlockCaretContainer,\r\n hideFakeCaret: hideFakeCaret,\r\n destroy: destroy\r\n };\r\n };\r\n\r\n var isValidPrefixAttrName = function (name) {\r\n return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0;\r\n };\r\n var trimComments = function (text) {\r\n return text.replace(//g, '');\r\n };\r\n var isInvalidUri = function (settings, uri) {\r\n if (settings.allow_html_data_urls) {\r\n return false;\r\n } else if (/^data:image\\//i.test(uri)) {\r\n return settings.allow_svg_data_urls === false && /^data:image\\/svg\\+xml/i.test(uri);\r\n } else {\r\n return /^data:/i.test(uri);\r\n }\r\n };\r\n var findEndTagIndex = function (schema, html, startIndex) {\r\n var count = 1, index, matches, tokenRegExp, shortEndedElements;\r\n shortEndedElements = schema.getShortEndedElements();\r\n tokenRegExp = /<([!?\\/])?([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\/|\\s+)>/g;\r\n tokenRegExp.lastIndex = index = startIndex;\r\n while (matches = tokenRegExp.exec(html)) {\r\n index = tokenRegExp.lastIndex;\r\n if (matches[1] === '/') {\r\n count--;\r\n } else if (!matches[1]) {\r\n if (matches[2] in shortEndedElements) {\r\n continue;\r\n }\r\n count++;\r\n }\r\n if (count === 0) {\r\n break;\r\n }\r\n }\r\n return index;\r\n };\r\n function SaxParser(settings, schema) {\r\n if (schema === void 0) {\r\n schema = Schema();\r\n }\r\n var noop = function () {\r\n };\r\n settings = settings || {};\r\n if (settings.fix_self_closing !== false) {\r\n settings.fix_self_closing = true;\r\n }\r\n var comment = settings.comment ? settings.comment : noop;\r\n var cdata = settings.cdata ? settings.cdata : noop;\r\n var text = settings.text ? settings.text : noop;\r\n var start = settings.start ? settings.start : noop;\r\n var end = settings.end ? settings.end : noop;\r\n var pi = settings.pi ? settings.pi : noop;\r\n var doctype = settings.doctype ? settings.doctype : noop;\r\n var parse = function (html) {\r\n var matches, index = 0, value, endRegExp;\r\n var stack = [];\r\n var attrList, i, textData, name;\r\n var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;\r\n var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;\r\n var attributesRequired, attributesDefault, attributesForced, processHtml;\r\n var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;\r\n var decode = $_33qwr1sjkmcwkip.decode;\r\n var fixSelfClosing;\r\n var filteredUrlAttrs = $_4ujg4tljkmcwkbk.makeMap('src,href,data,background,formaction,poster,xlink:href');\r\n var scriptUriRegExp = /((java|vb)script|mhtml):/i;\r\n var processEndTag = function (name) {\r\n var pos, i;\r\n pos = stack.length;\r\n while (pos--) {\r\n if (stack[pos].name === name) {\r\n break;\r\n }\r\n }\r\n if (pos >= 0) {\r\n for (i = stack.length - 1; i >= pos; i--) {\r\n name = stack[i];\r\n if (name.valid) {\r\n end(name.name);\r\n }\r\n }\r\n stack.length = pos;\r\n }\r\n };\r\n var parseAttribute = function (match, name, value, val2, val3) {\r\n var attrRule, i;\r\n var trimRegExp = /[\\s\\u0000-\\u001F]+/g;\r\n name = name.toLowerCase();\r\n value = name in fillAttrsMap ? name : decode(value || val2 || val3 || '');\r\n if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) {\r\n attrRule = validAttributesMap[name];\r\n if (!attrRule && validAttributePatterns) {\r\n i = validAttributePatterns.length;\r\n while (i--) {\r\n attrRule = validAttributePatterns[i];\r\n if (attrRule.pattern.test(name)) {\r\n break;\r\n }\r\n }\r\n if (i === -1) {\r\n attrRule = null;\r\n }\r\n }\r\n if (!attrRule) {\r\n return;\r\n }\r\n if (attrRule.validValues && !(value in attrRule.validValues)) {\r\n return;\r\n }\r\n }\r\n if (filteredUrlAttrs[name] && !settings.allow_script_urls) {\r\n var uri = value.replace(trimRegExp, '');\r\n try {\r\n uri = decodeURIComponent(uri);\r\n } catch (ex) {\r\n uri = unescape(uri);\r\n }\r\n if (scriptUriRegExp.test(uri)) {\r\n return;\r\n }\r\n if (isInvalidUri(settings, uri)) {\r\n return;\r\n }\r\n }\r\n if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) {\r\n return;\r\n }\r\n attrList.map[name] = value;\r\n attrList.push({\r\n name: name,\r\n value: value\r\n });\r\n };\r\n tokenRegExp = new RegExp('<(?:' + '(?:!--([\\\\w\\\\W]*?)-->)|' + '(?:!\\\\[CDATA\\\\[([\\\\w\\\\W]*?)\\\\]\\\\]>)|' + '(?:!DOCTYPE([\\\\w\\\\W]*?)>)|' + '(?:\\\\?([^\\\\s\\\\/<>]+) ?([\\\\w\\\\W]*?)[?/]>)|' + '(?:\\\\/([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)((?:\\\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\\\/|\\\\s+)>)' + ')', 'g');\r\n attrRegExp = /([\\w:\\-]+)(?:\\s*=\\s*(?:(?:\\\"((?:[^\\\"])*)\\\")|(?:\\'((?:[^\\'])*)\\')|([^>\\s]+)))?/g;\r\n shortEndedElements = schema.getShortEndedElements();\r\n selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();\r\n fillAttrsMap = schema.getBoolAttrs();\r\n validate = settings.validate;\r\n removeInternalElements = settings.remove_internals;\r\n fixSelfClosing = settings.fix_self_closing;\r\n specialElements = schema.getSpecialElements();\r\n processHtml = html + '>';\r\n while (matches = tokenRegExp.exec(processHtml)) {\r\n if (index < matches.index) {\r\n text(decode(html.substr(index, matches.index - index)));\r\n }\r\n if (value = matches[6]) {\r\n value = value.toLowerCase();\r\n if (value.charAt(0) === ':') {\r\n value = value.substr(1);\r\n }\r\n processEndTag(value);\r\n } else if (value = matches[7]) {\r\n if (matches.index + matches[0].length > html.length) {\r\n text(decode(html.substr(matches.index)));\r\n index = matches.index + matches[0].length;\r\n continue;\r\n }\r\n value = value.toLowerCase();\r\n if (value.charAt(0) === ':') {\r\n value = value.substr(1);\r\n }\r\n isShortEnded = value in shortEndedElements;\r\n if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {\r\n processEndTag(value);\r\n }\r\n if (!validate || (elementRule = schema.getElementRule(value))) {\r\n isValidElement = true;\r\n if (validate) {\r\n validAttributesMap = elementRule.attributes;\r\n validAttributePatterns = elementRule.attributePatterns;\r\n }\r\n if (attribsValue = matches[8]) {\r\n isInternalElement = attribsValue.indexOf('data-mce-type') !== -1;\r\n if (isInternalElement && removeInternalElements) {\r\n isValidElement = false;\r\n }\r\n attrList = [];\r\n attrList.map = {};\r\n attribsValue.replace(attrRegExp, parseAttribute);\r\n } else {\r\n attrList = [];\r\n attrList.map = {};\r\n }\r\n if (validate && !isInternalElement) {\r\n attributesRequired = elementRule.attributesRequired;\r\n attributesDefault = elementRule.attributesDefault;\r\n attributesForced = elementRule.attributesForced;\r\n anyAttributesRequired = elementRule.removeEmptyAttrs;\r\n if (anyAttributesRequired && !attrList.length) {\r\n isValidElement = false;\r\n }\r\n if (attributesForced) {\r\n i = attributesForced.length;\r\n while (i--) {\r\n attr = attributesForced[i];\r\n name = attr.name;\r\n attrValue = attr.value;\r\n if (attrValue === '{$uid}') {\r\n attrValue = 'mce_' + idCount++;\r\n }\r\n attrList.map[name] = attrValue;\r\n attrList.push({\r\n name: name,\r\n value: attrValue\r\n });\r\n }\r\n }\r\n if (attributesDefault) {\r\n i = attributesDefault.length;\r\n while (i--) {\r\n attr = attributesDefault[i];\r\n name = attr.name;\r\n if (!(name in attrList.map)) {\r\n attrValue = attr.value;\r\n if (attrValue === '{$uid}') {\r\n attrValue = 'mce_' + idCount++;\r\n }\r\n attrList.map[name] = attrValue;\r\n attrList.push({\r\n name: name,\r\n value: attrValue\r\n });\r\n }\r\n }\r\n }\r\n if (attributesRequired) {\r\n i = attributesRequired.length;\r\n while (i--) {\r\n if (attributesRequired[i] in attrList.map) {\r\n break;\r\n }\r\n }\r\n if (i === -1) {\r\n isValidElement = false;\r\n }\r\n }\r\n if (attr = attrList.map['data-mce-bogus']) {\r\n if (attr === 'all') {\r\n index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);\r\n tokenRegExp.lastIndex = index;\r\n continue;\r\n }\r\n isValidElement = false;\r\n }\r\n }\r\n if (isValidElement) {\r\n start(value, attrList, isShortEnded);\r\n }\r\n } else {\r\n isValidElement = false;\r\n }\r\n if (endRegExp = specialElements[value]) {\r\n endRegExp.lastIndex = index = matches.index + matches[0].length;\r\n if (matches = endRegExp.exec(html)) {\r\n if (isValidElement) {\r\n textData = html.substr(index, matches.index - index);\r\n }\r\n index = matches.index + matches[0].length;\r\n } else {\r\n textData = html.substr(index);\r\n index = html.length;\r\n }\r\n if (isValidElement) {\r\n if (textData.length > 0) {\r\n text(textData, true);\r\n }\r\n end(value);\r\n }\r\n tokenRegExp.lastIndex = index;\r\n continue;\r\n }\r\n if (!isShortEnded) {\r\n if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) {\r\n stack.push({\r\n name: value,\r\n valid: isValidElement\r\n });\r\n } else if (isValidElement) {\r\n end(value);\r\n }\r\n }\r\n } else if (value = matches[1]) {\r\n if (value.charAt(0) === '>') {\r\n value = ' ' + value;\r\n }\r\n if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') {\r\n value = ' ' + value;\r\n }\r\n comment(value);\r\n } else if (value = matches[2]) {\r\n cdata(trimComments(value));\r\n } else if (value = matches[3]) {\r\n doctype(value);\r\n } else if (value = matches[4]) {\r\n pi(value, matches[5]);\r\n }\r\n index = matches.index + matches[0].length;\r\n }\r\n if (index < html.length) {\r\n text(decode(html.substr(index)));\r\n }\r\n for (i = stack.length - 1; i >= 0; i--) {\r\n value = stack[i];\r\n if (value.valid) {\r\n end(value.name);\r\n }\r\n }\r\n };\r\n return { parse: parse };\r\n }\r\n (function (SaxParser) {\r\n SaxParser.findEndTag = findEndTagIndex;\r\n }(SaxParser || (SaxParser = {})));\r\n var SaxParser$1 = SaxParser;\r\n\r\n var trimHtml = function (tempAttrs, html) {\r\n var trimContentRegExp = new RegExp(['\\\\s?(' + tempAttrs.join('|') + ')=\"[^\"]+\"'].join('|'), 'gi');\r\n return html.replace(trimContentRegExp, '');\r\n };\r\n var trimInternal = function (serializer, html) {\r\n var content = html;\r\n var bogusAllRegExp = /<(\\w+) [^>]*data-mce-bogus=\"all\"[^>]*>/g;\r\n var endTagIndex, index, matchLength, matches, shortEndedElements;\r\n var schema = serializer.schema;\r\n content = trimHtml(serializer.getTempAttrs(), content);\r\n shortEndedElements = schema.getShortEndedElements();\r\n while (matches = bogusAllRegExp.exec(content)) {\r\n index = bogusAllRegExp.lastIndex;\r\n matchLength = matches[0].length;\r\n if (shortEndedElements[matches[1]]) {\r\n endTagIndex = index;\r\n } else {\r\n endTagIndex = SaxParser$1.findEndTag(schema, content, index);\r\n }\r\n content = content.substring(0, index - matchLength) + content.substring(endTagIndex);\r\n bogusAllRegExp.lastIndex = index - matchLength;\r\n }\r\n return $_cadvcr2pjkmcwkph.trim(content);\r\n };\r\n var trimExternal = trimInternal;\r\n var $_2varuf5zjkmcwlgq = {\r\n trimExternal: trimExternal,\r\n trimInternal: trimInternal\r\n };\r\n\r\n var KEEP = 0;\r\n var INSERT = 1;\r\n var DELETE = 2;\r\n var diff = function (left, right) {\r\n var size = left.length + right.length + 2;\r\n var vDown = new Array(size);\r\n var vUp = new Array(size);\r\n var snake = function (start, end, diag) {\r\n return {\r\n start: start,\r\n end: end,\r\n diag: diag\r\n };\r\n };\r\n var buildScript = function (start1, end1, start2, end2, script) {\r\n var middle = getMiddleSnake(start1, end1, start2, end2);\r\n if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\r\n var i = start1;\r\n var j = start2;\r\n while (i < end1 || j < end2) {\r\n if (i < end1 && j < end2 && left[i] === right[j]) {\r\n script.push([\r\n KEEP,\r\n left[i]\r\n ]);\r\n ++i;\r\n ++j;\r\n } else {\r\n if (end1 - start1 > end2 - start2) {\r\n script.push([\r\n DELETE,\r\n left[i]\r\n ]);\r\n ++i;\r\n } else {\r\n script.push([\r\n INSERT,\r\n right[j]\r\n ]);\r\n ++j;\r\n }\r\n }\r\n }\r\n } else {\r\n buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\r\n for (var i2 = middle.start; i2 < middle.end; ++i2) {\r\n script.push([\r\n KEEP,\r\n left[i2]\r\n ]);\r\n }\r\n buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\r\n }\r\n };\r\n var buildSnake = function (start, diag, end1, end2) {\r\n var end = start;\r\n while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\r\n ++end;\r\n }\r\n return snake(start, end, diag);\r\n };\r\n var getMiddleSnake = function (start1, end1, start2, end2) {\r\n var m = end1 - start1;\r\n var n = end2 - start2;\r\n if (m === 0 || n === 0) {\r\n return null;\r\n }\r\n var delta = m - n;\r\n var sum = n + m;\r\n var offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\r\n vDown[1 + offset] = start1;\r\n vUp[1 + offset] = end1 + 1;\r\n var d, k, i, x, y;\r\n for (d = 0; d <= offset; ++d) {\r\n for (k = -d; k <= d; k += 2) {\r\n i = k + offset;\r\n if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\r\n vDown[i] = vDown[i + 1];\r\n } else {\r\n vDown[i] = vDown[i - 1] + 1;\r\n }\r\n x = vDown[i];\r\n y = x - start1 + start2 - k;\r\n while (x < end1 && y < end2 && left[x] === right[y]) {\r\n vDown[i] = ++x;\r\n ++y;\r\n }\r\n if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\r\n if (vUp[i - delta] <= vDown[i]) {\r\n return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\r\n }\r\n }\r\n }\r\n for (k = delta - d; k <= delta + d; k += 2) {\r\n i = k + offset - delta;\r\n if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\r\n vUp[i] = vUp[i + 1] - 1;\r\n } else {\r\n vUp[i] = vUp[i - 1];\r\n }\r\n x = vUp[i] - 1;\r\n y = x - start1 + start2 - k;\r\n while (x >= start1 && y >= start2 && left[x] === right[y]) {\r\n vUp[i] = x--;\r\n y--;\r\n }\r\n if (delta % 2 === 0 && -d <= k && k <= d) {\r\n if (vUp[i] <= vDown[i + delta]) {\r\n return buildSnake(vUp[i], k + start1 - start2, end1, end2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var script = [];\r\n buildScript(0, left.length, 0, right.length, script);\r\n return script;\r\n };\r\n var $_3xze2m62jkmcwlh7 = {\r\n KEEP: KEEP,\r\n DELETE: DELETE,\r\n INSERT: INSERT,\r\n diff: diff\r\n };\r\n\r\n var getOuterHtml = function (elm) {\r\n if ($_bjermr1rjkmcwkij.isElement(elm)) {\r\n return elm.outerHTML;\r\n } else if ($_bjermr1rjkmcwkij.isText(elm)) {\r\n return $_33qwr1sjkmcwkip.encodeRaw(elm.data, false);\r\n } else if ($_bjermr1rjkmcwkij.isComment(elm)) {\r\n return '';\r\n }\r\n return '';\r\n };\r\n var createFragment$1 = function (html) {\r\n var frag, node, container;\r\n container = document.createElement('div');\r\n frag = document.createDocumentFragment();\r\n if (html) {\r\n container.innerHTML = html;\r\n }\r\n while (node = container.firstChild) {\r\n frag.appendChild(node);\r\n }\r\n return frag;\r\n };\r\n var insertAt = function (elm, html, index) {\r\n var fragment = createFragment$1(html);\r\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\r\n var target = elm.childNodes[index];\r\n target.parentNode.insertBefore(fragment, target);\r\n } else {\r\n elm.appendChild(fragment);\r\n }\r\n };\r\n var removeAt = function (elm, index) {\r\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\r\n var target = elm.childNodes[index];\r\n target.parentNode.removeChild(target);\r\n }\r\n };\r\n var applyDiff = function (diff, elm) {\r\n var index = 0;\r\n $_9g1fibmjkmcwkbu.each(diff, function (action) {\r\n if (action[0] === $_3xze2m62jkmcwlh7.KEEP) {\r\n index++;\r\n } else if (action[0] === $_3xze2m62jkmcwlh7.INSERT) {\r\n insertAt(elm, action[1], index);\r\n index++;\r\n } else if (action[0] === $_3xze2m62jkmcwlh7.DELETE) {\r\n removeAt(elm, index);\r\n }\r\n });\r\n };\r\n var read$3 = function (elm) {\r\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml), function (item) {\r\n return item.length > 0;\r\n });\r\n };\r\n var write = function (fragments, elm) {\r\n var currentFragments = $_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml);\r\n applyDiff($_3xze2m62jkmcwlh7.diff(currentFragments, fragments), elm);\r\n return elm;\r\n };\r\n var $_cyedqm61jkmcwlh3 = {\r\n read: read$3,\r\n write: write\r\n };\r\n\r\n var fromHtml$1 = function (html, scope) {\r\n var doc = scope || document;\r\n var div = doc.createElement('div');\r\n div.innerHTML = html;\r\n return $_ca6pc118jkmcwkfs.children(Element$$1.fromDom(div));\r\n };\r\n var fromTags = function (tags, scope) {\r\n return map(tags, function (x) {\r\n return Element$$1.fromTag(x, scope);\r\n });\r\n };\r\n var fromText$1 = function (texts, scope) {\r\n return map(texts, function (x) {\r\n return Element$$1.fromText(x, scope);\r\n });\r\n };\r\n var fromDom$1 = function (nodes) {\r\n return map(nodes, Element$$1.fromDom);\r\n };\r\n var $_bos53z64jkmcwlhd = {\r\n fromHtml: fromHtml$1,\r\n fromTags: fromTags,\r\n fromText: fromText$1,\r\n fromDom: fromDom$1\r\n };\r\n\r\n var get$6 = function (element) {\r\n return element.dom().innerHTML;\r\n };\r\n var set$3 = function (element, content) {\r\n var owner = $_ca6pc118jkmcwkfs.owner(element);\r\n var docDom = owner.dom();\r\n var fragment = Element$$1.fromDom(docDom.createDocumentFragment());\r\n var contentElements = $_bos53z64jkmcwlhd.fromHtml(content, docDom);\r\n $_1ev7t1xjkmcwkky.append(fragment, contentElements);\r\n $_eualm21wjkmcwkku.empty(element);\r\n $_f4qt4v1yjkmcwkl2.append(element, fragment);\r\n };\r\n var getOuter = function (element) {\r\n var container = Element$$1.fromTag('div');\r\n var clone = Element$$1.fromDom(element.dom().cloneNode(true));\r\n $_f4qt4v1yjkmcwkl2.append(container, clone);\r\n return get$6(container);\r\n };\r\n var $_xg5463jkmcwlhb = {\r\n get: get$6,\r\n set: set$3,\r\n getOuter: getOuter\r\n };\r\n\r\n var undoLevelDocument = Cell(Option.none());\r\n var lazyTempDocument = function () {\r\n return undoLevelDocument.get().getOrThunk(function () {\r\n var doc = document.implementation.createHTMLDocument('undo');\r\n undoLevelDocument.set(Option.some(doc));\r\n return doc;\r\n });\r\n };\r\n var hasIframes = function (html) {\r\n return html.indexOf('') !== -1;\r\n };\r\n var createFragmentedLevel = function (fragments) {\r\n return {\r\n type: 'fragmented',\r\n fragments: fragments,\r\n content: '',\r\n bookmark: null,\r\n beforeBookmark: null\r\n };\r\n };\r\n var createCompleteLevel = function (content) {\r\n return {\r\n type: 'complete',\r\n fragments: null,\r\n content: content,\r\n bookmark: null,\r\n beforeBookmark: null\r\n };\r\n };\r\n var createFromEditor = function (editor) {\r\n var fragments, content, trimmedFragments;\r\n fragments = $_cyedqm61jkmcwlh3.read(editor.getBody());\r\n trimmedFragments = bind(fragments, function (html) {\r\n var trimmed = $_2varuf5zjkmcwlgq.trimInternal(editor.serializer, html);\r\n return trimmed.length > 0 ? [trimmed] : [];\r\n });\r\n content = trimmedFragments.join('');\r\n return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);\r\n };\r\n var applyToEditor = function (editor, level, before) {\r\n if (level.type === 'fragmented') {\r\n $_cyedqm61jkmcwlh3.write(level.fragments, editor.getBody());\r\n } else {\r\n editor.setContent(level.content, { format: 'raw' });\r\n }\r\n editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);\r\n };\r\n var getLevelContent = function (level) {\r\n return level.type === 'fragmented' ? level.fragments.join('') : level.content;\r\n };\r\n var getCleanLevelContent = function (level) {\r\n var elm = Element$$1.fromTag('body', lazyTempDocument());\r\n $_xg5463jkmcwlhb.set(elm, getLevelContent(level));\r\n each($_2gqm0n27jkmcwkmi.descendants(elm, '*[data-mce-bogus]'), $_eualm21wjkmcwkku.unwrap);\r\n return $_xg5463jkmcwlhb.get(elm);\r\n };\r\n var hasEqualContent = function (level1, level2) {\r\n return getLevelContent(level1) === getLevelContent(level2);\r\n };\r\n var hasEqualCleanedContent = function (level1, level2) {\r\n return getCleanLevelContent(level1) === getCleanLevelContent(level2);\r\n };\r\n var isEq$3 = function (level1, level2) {\r\n if (!level1 || !level2) {\r\n return false;\r\n } else if (hasEqualContent(level1, level2)) {\r\n return true;\r\n } else {\r\n return hasEqualCleanedContent(level1, level2);\r\n }\r\n };\r\n var $_3cqp0r5yjkmcwlgf = {\r\n createFragmentedLevel: createFragmentedLevel,\r\n createCompleteLevel: createCompleteLevel,\r\n createFromEditor: createFromEditor,\r\n applyToEditor: applyToEditor,\r\n isEq: isEq$3\r\n };\r\n\r\n function UndoManager (editor) {\r\n var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;\r\n var isUnlocked = function () {\r\n return locks === 0;\r\n };\r\n var setTyping = function (typing) {\r\n if (isUnlocked()) {\r\n self.typing = typing;\r\n }\r\n };\r\n var setDirty = function (state) {\r\n editor.setDirty(state);\r\n };\r\n var addNonTypingUndoLevel = function (e) {\r\n setTyping(false);\r\n self.add({}, e);\r\n };\r\n var endTyping = function () {\r\n if (self.typing) {\r\n setTyping(false);\r\n self.add();\r\n }\r\n };\r\n editor.on('init', function () {\r\n self.add();\r\n });\r\n editor.on('BeforeExecCommand', function (e) {\r\n var cmd = e.command;\r\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\r\n endTyping();\r\n self.beforeChange();\r\n }\r\n });\r\n editor.on('ExecCommand', function (e) {\r\n var cmd = e.command;\r\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\r\n addNonTypingUndoLevel(e);\r\n }\r\n });\r\n editor.on('ObjectResizeStart Cut', function () {\r\n self.beforeChange();\r\n });\r\n editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\r\n editor.on('DragEnd', addNonTypingUndoLevel);\r\n editor.on('KeyUp', function (e) {\r\n var keyCode = e.keyCode;\r\n if (e.isDefaultPrevented()) {\r\n return;\r\n }\r\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {\r\n addNonTypingUndoLevel();\r\n editor.nodeChanged();\r\n }\r\n if (keyCode === 46 || keyCode === 8) {\r\n editor.nodeChanged();\r\n }\r\n if (isFirstTypedCharacter && self.typing && $_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]) === false) {\r\n if (editor.isDirty() === false) {\r\n setDirty(true);\r\n editor.fire('change', {\r\n level: data[0],\r\n lastLevel: null\r\n });\r\n }\r\n editor.fire('TypingUndo');\r\n isFirstTypedCharacter = false;\r\n editor.nodeChanged();\r\n }\r\n });\r\n editor.on('KeyDown', function (e) {\r\n var keyCode = e.keyCode;\r\n if (e.isDefaultPrevented()) {\r\n return;\r\n }\r\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\r\n if (self.typing) {\r\n addNonTypingUndoLevel(e);\r\n }\r\n return;\r\n }\r\n var modKey = e.ctrlKey && !e.altKey || e.metaKey;\r\n if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {\r\n self.beforeChange();\r\n setTyping(true);\r\n self.add({}, e);\r\n isFirstTypedCharacter = true;\r\n }\r\n });\r\n editor.on('MouseDown', function (e) {\r\n if (self.typing) {\r\n addNonTypingUndoLevel(e);\r\n }\r\n });\r\n var isInsertReplacementText = function (event) {\r\n return event.inputType === 'insertReplacementText';\r\n };\r\n var isInsertTextDataNull = function (event) {\r\n return event.inputType === 'insertText' && event.data === null;\r\n };\r\n editor.on('input', function (e) {\r\n if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {\r\n addNonTypingUndoLevel(e);\r\n }\r\n });\r\n editor.addShortcut('meta+z', '', 'Undo');\r\n editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\r\n editor.on('AddUndo Undo Redo ClearUndos', function (e) {\r\n if (!e.isDefaultPrevented()) {\r\n editor.nodeChanged();\r\n }\r\n });\r\n self = {\r\n data: data,\r\n typing: false,\r\n beforeChange: function () {\r\n if (isUnlocked()) {\r\n beforeBookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\r\n }\r\n },\r\n add: function (level, event) {\r\n var i;\r\n var settings = editor.settings;\r\n var lastLevel, currentLevel;\r\n currentLevel = $_3cqp0r5yjkmcwlgf.createFromEditor(editor);\r\n level = level || {};\r\n level = $_4ujg4tljkmcwkbk.extend(level, currentLevel);\r\n if (isUnlocked() === false || editor.removed) {\r\n return null;\r\n }\r\n lastLevel = data[index];\r\n if (editor.fire('BeforeAddUndo', {\r\n level: level,\r\n lastLevel: lastLevel,\r\n originalEvent: event\r\n }).isDefaultPrevented()) {\r\n return null;\r\n }\r\n if (lastLevel && $_3cqp0r5yjkmcwlgf.isEq(lastLevel, level)) {\r\n return null;\r\n }\r\n if (data[index]) {\r\n data[index].beforeBookmark = beforeBookmark;\r\n }\r\n if (settings.custom_undo_redo_levels) {\r\n if (data.length > settings.custom_undo_redo_levels) {\r\n for (i = 0; i < data.length - 1; i++) {\r\n data[i] = data[i + 1];\r\n }\r\n data.length--;\r\n index = data.length;\r\n }\r\n }\r\n level.bookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\r\n if (index < data.length - 1) {\r\n data.length = index + 1;\r\n }\r\n data.push(level);\r\n index = data.length - 1;\r\n var args = {\r\n level: level,\r\n lastLevel: lastLevel,\r\n originalEvent: event\r\n };\r\n editor.fire('AddUndo', args);\r\n if (index > 0) {\r\n setDirty(true);\r\n editor.fire('change', args);\r\n }\r\n return level;\r\n },\r\n undo: function () {\r\n var level;\r\n if (self.typing) {\r\n self.add();\r\n self.typing = false;\r\n setTyping(false);\r\n }\r\n if (index > 0) {\r\n level = data[--index];\r\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, true);\r\n setDirty(true);\r\n editor.fire('undo', { level: level });\r\n }\r\n return level;\r\n },\r\n redo: function () {\r\n var level;\r\n if (index < data.length - 1) {\r\n level = data[++index];\r\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, false);\r\n setDirty(true);\r\n editor.fire('redo', { level: level });\r\n }\r\n return level;\r\n },\r\n clear: function () {\r\n data = [];\r\n index = 0;\r\n self.typing = false;\r\n self.data = data;\r\n editor.fire('ClearUndos');\r\n },\r\n hasUndo: function () {\r\n return index > 0 || self.typing && data[0] && !$_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]);\r\n },\r\n hasRedo: function () {\r\n return index < data.length - 1 && !self.typing;\r\n },\r\n transact: function (callback) {\r\n endTyping();\r\n self.beforeChange();\r\n self.ignore(callback);\r\n return self.add();\r\n },\r\n ignore: function (callback) {\r\n try {\r\n locks++;\r\n callback();\r\n } finally {\r\n locks--;\r\n }\r\n },\r\n extra: function (callback1, callback2) {\r\n var lastLevel, bookmark;\r\n if (self.transact(callback1)) {\r\n bookmark = data[index].bookmark;\r\n lastLevel = data[index - 1];\r\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, lastLevel, true);\r\n if (self.transact(callback2)) {\r\n data[index - 1].beforeBookmark = bookmark;\r\n }\r\n }\r\n }\r\n };\r\n return self;\r\n }\r\n\r\n var isEq$4 = $_dli08w3ajkmcwktg.isEq;\r\n var matchesUnInheritedFormatSelector = function (ed, node, name) {\r\n var formatList = ed.formatter.get(name);\r\n if (formatList) {\r\n for (var i = 0; i < formatList.length; i++) {\r\n if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var matchParents = function (editor, node, name, vars) {\r\n var root = editor.dom.getRoot();\r\n if (node === root) {\r\n return false;\r\n }\r\n node = editor.dom.getParent(node, function (node) {\r\n if (matchesUnInheritedFormatSelector(editor, node, name)) {\r\n return true;\r\n }\r\n return node.parentNode === root || !!matchNode(editor, node, name, vars, true);\r\n });\r\n return matchNode(editor, node, name, vars);\r\n };\r\n var matchName = function (dom, node, format) {\r\n if (isEq$4(node, format.inline)) {\r\n return true;\r\n }\r\n if (isEq$4(node, format.block)) {\r\n return true;\r\n }\r\n if (format.selector) {\r\n return node.nodeType === 1 && dom.is(node, format.selector);\r\n }\r\n };\r\n var matchItems = function (dom, node, format, itemName, similar, vars) {\r\n var key, value;\r\n var items = format[itemName];\r\n var i;\r\n if (format.onmatch) {\r\n return format.onmatch(node, format, itemName);\r\n }\r\n if (items) {\r\n if (typeof items.length === 'undefined') {\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n if (itemName === 'attributes') {\r\n value = dom.getAttrib(node, key);\r\n } else {\r\n value = $_dli08w3ajkmcwktg.getStyle(dom, node, key);\r\n }\r\n if (similar && !value && !format.exact) {\r\n return;\r\n }\r\n if ((!similar || format.exact) && !isEq$4(value, $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(items[key], vars), key))) {\r\n return;\r\n }\r\n }\r\n }\r\n } else {\r\n for (i = 0; i < items.length; i++) {\r\n if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_dli08w3ajkmcwktg.getStyle(dom, node, items[i])) {\r\n return format;\r\n }\r\n }\r\n }\r\n }\r\n return format;\r\n };\r\n var matchNode = function (ed, node, name, vars, similar) {\r\n var formatList = ed.formatter.get(name);\r\n var format, i, x, classes;\r\n var dom = ed.dom;\r\n if (formatList && node) {\r\n for (i = 0; i < formatList.length; i++) {\r\n format = formatList[i];\r\n if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\r\n if (classes = format.classes) {\r\n for (x = 0; x < classes.length; x++) {\r\n if (!ed.dom.hasClass(node, classes[x])) {\r\n return;\r\n }\r\n }\r\n }\r\n return format;\r\n }\r\n }\r\n }\r\n };\r\n var match = function (editor, name, vars, node) {\r\n var startNode;\r\n if (node) {\r\n return matchParents(editor, node, name, vars);\r\n }\r\n node = editor.selection.getNode();\r\n if (matchParents(editor, node, name, vars)) {\r\n return true;\r\n }\r\n startNode = editor.selection.getStart();\r\n if (startNode !== node) {\r\n if (matchParents(editor, startNode, name, vars)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var matchAll = function (editor, names, vars) {\r\n var startElement;\r\n var matchedFormatNames = [];\r\n var checkedMap = {};\r\n startElement = editor.selection.getStart();\r\n editor.dom.getParent(startElement, function (node) {\r\n var i, name;\r\n for (i = 0; i < names.length; i++) {\r\n name = names[i];\r\n if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\r\n checkedMap[name] = true;\r\n matchedFormatNames.push(name);\r\n }\r\n }\r\n }, editor.dom.getRoot());\r\n return matchedFormatNames;\r\n };\r\n var canApply = function (editor, name) {\r\n var formatList = editor.formatter.get(name);\r\n var startNode, parents, i, x, selector;\r\n var dom = editor.dom;\r\n if (formatList) {\r\n startNode = editor.selection.getStart();\r\n parents = $_dli08w3ajkmcwktg.getParents(dom, startNode);\r\n for (x = formatList.length - 1; x >= 0; x--) {\r\n selector = formatList[x].selector;\r\n if (!selector || formatList[x].defaultBlock) {\r\n return true;\r\n }\r\n for (i = parents.length - 1; i >= 0; i--) {\r\n if (dom.is(parents[i], selector)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var $_axwnk168jkmcwlim = {\r\n matchNode: matchNode,\r\n matchName: matchName,\r\n match: match,\r\n matchAll: matchAll,\r\n canApply: canApply,\r\n matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector\r\n };\r\n\r\n var splitText = function (node, offset) {\r\n return node.splitText(offset);\r\n };\r\n var split$1 = function (rng) {\r\n var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\r\n if (startContainer === endContainer && $_bjermr1rjkmcwkij.isText(startContainer)) {\r\n if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\r\n endContainer = splitText(startContainer, startOffset);\r\n startContainer = endContainer.previousSibling;\r\n if (endOffset > startOffset) {\r\n endOffset = endOffset - startOffset;\r\n startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\r\n endOffset = endContainer.nodeValue.length;\r\n startOffset = 0;\r\n } else {\r\n endOffset = 0;\r\n }\r\n }\r\n } else {\r\n if ($_bjermr1rjkmcwkij.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\r\n startContainer = splitText(startContainer, startOffset);\r\n startOffset = 0;\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\r\n endContainer = splitText(endContainer, endOffset).previousSibling;\r\n endOffset = endContainer.nodeValue.length;\r\n }\r\n }\r\n return {\r\n startContainer: startContainer,\r\n startOffset: startOffset,\r\n endContainer: endContainer,\r\n endOffset: endOffset\r\n };\r\n };\r\n var $_bnmynr69jkmcwlir = { split: split$1 };\r\n\r\n var ZWSP$1 = $_cadvcr2pjkmcwkph.ZWSP;\r\n var CARET_ID$1 = '_mce_caret';\r\n var importNode = function (ownerDocument, node) {\r\n return ownerDocument.importNode(node, true);\r\n };\r\n var getEmptyCaretContainers = function (node) {\r\n var nodes = [];\r\n while (node) {\r\n if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {\r\n return [];\r\n }\r\n if (node.nodeType === 1) {\r\n nodes.push(node);\r\n }\r\n node = node.firstChild;\r\n }\r\n return nodes;\r\n };\r\n var isCaretContainerEmpty = function (node) {\r\n return getEmptyCaretContainers(node).length > 0;\r\n };\r\n var findFirstTextNode = function (node) {\r\n var walker;\r\n if (node) {\r\n walker = new TreeWalker(node, node);\r\n for (node = walker.current(); node; node = walker.next()) {\r\n if (node.nodeType === 3) {\r\n return node;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n var createCaretContainer = function (fill) {\r\n var caretContainer = Element$$1.fromTag('span');\r\n $_29helg15jkmcwkf0.setAll(caretContainer, {\r\n 'id': CARET_ID$1,\r\n 'data-mce-bogus': '1',\r\n 'data-mce-type': 'format-caret'\r\n });\r\n if (fill) {\r\n $_f4qt4v1yjkmcwkl2.append(caretContainer, Element$$1.fromText(ZWSP$1));\r\n }\r\n return caretContainer;\r\n };\r\n var trimZwspFromCaretContainer = function (caretContainerNode) {\r\n var textNode = findFirstTextNode(caretContainerNode);\r\n if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {\r\n textNode.deleteData(0, 1);\r\n }\r\n return textNode;\r\n };\r\n var removeCaretContainerNode = function (dom, selection, node, moveCaret) {\r\n var rng, block, textNode;\r\n rng = selection.getRng(true);\r\n block = dom.getParent(node, dom.isBlock);\r\n if (isCaretContainerEmpty(node)) {\r\n if (moveCaret !== false) {\r\n rng.setStartBefore(node);\r\n rng.setEndBefore(node);\r\n }\r\n dom.remove(node);\r\n } else {\r\n textNode = trimZwspFromCaretContainer(node);\r\n if (rng.startContainer === textNode && rng.startOffset > 0) {\r\n rng.setStart(textNode, rng.startOffset - 1);\r\n }\r\n if (rng.endContainer === textNode && rng.endOffset > 0) {\r\n rng.setEnd(textNode, rng.endOffset - 1);\r\n }\r\n dom.remove(node, true);\r\n }\r\n if (block && dom.isEmpty(block)) {\r\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(Element$$1.fromDom(block));\r\n }\r\n selection.setRng(rng);\r\n };\r\n var removeCaretContainer = function (body, dom, selection, node, moveCaret) {\r\n if (!node) {\r\n node = getParentCaretContainer(body, selection.getStart());\r\n if (!node) {\r\n while (node = dom.get(CARET_ID$1)) {\r\n removeCaretContainerNode(dom, selection, node, false);\r\n }\r\n }\r\n } else {\r\n removeCaretContainerNode(dom, selection, node, moveCaret);\r\n }\r\n };\r\n var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\r\n var dom = editor.dom, block = dom.getParent(formatNode, $_fl2rax2ljkmcwkot.curry($_dli08w3ajkmcwktg.isTextBlock, editor));\r\n if (block && dom.isEmpty(block)) {\r\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\r\n } else {\r\n $_zygeg3ljkmcwkvo.removeTrailingBr(Element$$1.fromDom(formatNode));\r\n if (dom.isEmpty(formatNode)) {\r\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\r\n } else {\r\n dom.insertAfter(caretContainer, formatNode);\r\n }\r\n }\r\n };\r\n var appendNode = function (parentNode, node) {\r\n parentNode.appendChild(node);\r\n return node;\r\n };\r\n var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {\r\n var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {\r\n return appendNode(parentNode, formatNode.cloneNode(false));\r\n }, caretContainer);\r\n return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));\r\n };\r\n var applyCaretFormat = function (editor, name, vars) {\r\n var rng, caretContainer, textNode, offset, bookmark, container, text;\r\n var selection = editor.selection;\r\n rng = selection.getRng(true);\r\n offset = rng.startOffset;\r\n container = rng.startContainer;\r\n text = container.nodeValue;\r\n caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\r\n if (caretContainer) {\r\n textNode = findFirstTextNode(caretContainer);\r\n }\r\n var wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\r\n if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\r\n bookmark = selection.getBookmark();\r\n rng.collapse(true);\r\n rng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name));\r\n rng = $_bnmynr69jkmcwlir.split(rng);\r\n editor.formatter.apply(name, vars, rng);\r\n selection.moveToBookmark(bookmark);\r\n } else {\r\n if (!caretContainer || textNode.nodeValue !== ZWSP$1) {\r\n caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());\r\n textNode = caretContainer.firstChild;\r\n rng.insertNode(caretContainer);\r\n offset = 1;\r\n editor.formatter.apply(name, vars, caretContainer);\r\n } else {\r\n editor.formatter.apply(name, vars, caretContainer);\r\n }\r\n selection.setCursorLocation(textNode, offset);\r\n }\r\n };\r\n var removeCaretFormat = function (editor, name, vars, similar) {\r\n var dom = editor.dom, selection = editor.selection;\r\n var container, offset, bookmark;\r\n var hasContentAfter, node, formatNode;\r\n var parents = [], rng = selection.getRng();\r\n var caretContainer;\r\n container = rng.startContainer;\r\n offset = rng.startOffset;\r\n node = container;\r\n if (container.nodeType === 3) {\r\n if (offset !== container.nodeValue.length) {\r\n hasContentAfter = true;\r\n }\r\n node = node.parentNode;\r\n }\r\n while (node) {\r\n if ($_axwnk168jkmcwlim.matchNode(editor, node, name, vars, similar)) {\r\n formatNode = node;\r\n break;\r\n }\r\n if (node.nextSibling) {\r\n hasContentAfter = true;\r\n }\r\n parents.push(node);\r\n node = node.parentNode;\r\n }\r\n if (!formatNode) {\r\n return;\r\n }\r\n if (hasContentAfter) {\r\n bookmark = selection.getBookmark();\r\n rng.collapse(true);\r\n var expandedRng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name), true);\r\n expandedRng = $_bnmynr69jkmcwlir.split(expandedRng);\r\n editor.formatter.remove(name, vars, expandedRng);\r\n selection.moveToBookmark(bookmark);\r\n } else {\r\n caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\r\n var newCaretContainer = createCaretContainer(false).dom();\r\n var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);\r\n if (caretContainer) {\r\n insertCaretContainerNode(editor, newCaretContainer, caretContainer);\r\n } else {\r\n insertCaretContainerNode(editor, newCaretContainer, formatNode);\r\n }\r\n removeCaretContainerNode(dom, selection, caretContainer, false);\r\n selection.setCursorLocation(caretNode, 1);\r\n if (dom.isEmpty(formatNode)) {\r\n dom.remove(formatNode);\r\n }\r\n }\r\n };\r\n var disableCaretContainer = function (body, dom, selection, keyCode) {\r\n removeCaretContainer(body, dom, selection, null, false);\r\n if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\r\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\r\n }\r\n if (keyCode === 37 || keyCode === 39) {\r\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\r\n }\r\n };\r\n var setup$4 = function (editor) {\r\n var dom = editor.dom, selection = editor.selection;\r\n var body = editor.getBody();\r\n editor.on('mouseup keydown', function (e) {\r\n disableCaretContainer(body, dom, selection, e.keyCode);\r\n });\r\n };\r\n var replaceWithCaretFormat = function (targetNode, formatNodes) {\r\n var caretContainer = createCaretContainer(false);\r\n var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\r\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(targetNode), caretContainer);\r\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(targetNode));\r\n return CaretPosition$1(innerMost, 0);\r\n };\r\n var isFormatElement = function (editor, element) {\r\n var inlineElements = editor.schema.getTextInlineElements();\r\n return inlineElements.hasOwnProperty($_2xwdjv11jkmcwke0.name(element)) && !isCaretNode(element.dom()) && !$_bjermr1rjkmcwkij.isBogus(element.dom());\r\n };\r\n\r\n var postProcessHooks = {};\r\n var filter$2 = $_9g1fibmjkmcwkbu.filter;\r\n var each$12 = $_9g1fibmjkmcwkbu.each;\r\n var addPostProcessHook = function (name, hook) {\r\n var hooks = postProcessHooks[name];\r\n if (!hooks) {\r\n postProcessHooks[name] = hooks = [];\r\n }\r\n postProcessHooks[name].push(hook);\r\n };\r\n var postProcess = function (name, editor) {\r\n each$12(postProcessHooks[name], function (hook) {\r\n hook(editor);\r\n });\r\n };\r\n addPostProcessHook('pre', function (editor) {\r\n var rng = editor.selection.getRng();\r\n var isPre, blocks;\r\n var hasPreSibling = function (pre) {\r\n return isPre(pre.previousSibling) && $_9g1fibmjkmcwkbu.indexOf(blocks, pre.previousSibling) !== -1;\r\n };\r\n var joinPre = function (pre1, pre2) {\r\n DomQuery(pre2).remove();\r\n DomQuery(pre1).append('

').append(pre2.childNodes);\r\n };\r\n isPre = $_bjermr1rjkmcwkij.matchNodeNames('pre');\r\n if (!rng.collapsed) {\r\n blocks = editor.selection.getSelectedBlocks();\r\n each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\r\n joinPre(pre.previousSibling, pre);\r\n });\r\n }\r\n });\r\n var $_dp9y746ajkmcwlit = { postProcess: postProcess };\r\n\r\n var MCE_ATTR_RE = /^(src|href|style)$/;\r\n var each$13 = $_4ujg4tljkmcwkbk.each;\r\n var isEq$5 = $_dli08w3ajkmcwktg.isEq;\r\n var isTableCell$4 = function (node) {\r\n return /^(TH|TD)$/.test(node.nodeName);\r\n };\r\n var getContainer = function (ed, rng, start) {\r\n var container, offset, lastIdx;\r\n container = rng[start ? 'startContainer' : 'endContainer'];\r\n offset = rng[start ? 'startOffset' : 'endOffset'];\r\n if ($_bjermr1rjkmcwkij.isElement(container)) {\r\n lastIdx = container.childNodes.length - 1;\r\n if (!start && offset) {\r\n offset--;\r\n }\r\n container = container.childNodes[offset > lastIdx ? lastIdx : offset];\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(container) && start && offset >= container.nodeValue.length) {\r\n container = new TreeWalker(container, ed.getBody()).next() || container;\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(container) && !start && offset === 0) {\r\n container = new TreeWalker(container, ed.getBody()).prev() || container;\r\n }\r\n return container;\r\n };\r\n var wrap$2 = function (dom, node, name, attrs) {\r\n var wrapper = dom.create(name, attrs);\r\n node.parentNode.insertBefore(wrapper, node);\r\n wrapper.appendChild(node);\r\n return wrapper;\r\n };\r\n var matchName$1 = function (dom, node, format) {\r\n if (isEq$5(node, format.inline)) {\r\n return true;\r\n }\r\n if (isEq$5(node, format.block)) {\r\n return true;\r\n }\r\n if (format.selector) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && dom.is(node, format.selector);\r\n }\r\n };\r\n var isColorFormatAndAnchor = function (node, format) {\r\n return format.links && node.tagName === 'A';\r\n };\r\n var find$4 = function (dom, node, next, inc) {\r\n node = $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, next, inc);\r\n return !node || (node.nodeName === 'BR' || dom.isBlock(node));\r\n };\r\n var removeNode$1 = function (ed, node, format) {\r\n var parentNode = node.parentNode;\r\n var rootBlockElm;\r\n var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block;\r\n if (format.block) {\r\n if (!forcedRootBlock) {\r\n if (dom.isBlock(node) && !dom.isBlock(parentNode)) {\r\n if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {\r\n node.insertBefore(dom.create('br'), node.firstChild);\r\n }\r\n if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {\r\n node.appendChild(dom.create('br'));\r\n }\r\n }\r\n } else {\r\n if (parentNode === dom.getRoot()) {\r\n if (!format.list_block || !isEq$5(node, format.list_block)) {\r\n each$13($_4ujg4tljkmcwkbk.grep(node.childNodes), function (node) {\r\n if ($_dli08w3ajkmcwktg.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\r\n if (!rootBlockElm) {\r\n rootBlockElm = wrap$2(dom, node, forcedRootBlock);\r\n dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);\r\n } else {\r\n rootBlockElm.appendChild(node);\r\n }\r\n } else {\r\n rootBlockElm = 0;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (format.selector && format.inline && !isEq$5(format.inline, node)) {\r\n return;\r\n }\r\n dom.remove(node, 1);\r\n };\r\n var removeFormat = function (ed, format, vars, node, compareNode) {\r\n var i, attrs, stylesModified;\r\n var dom = ed.dom;\r\n if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\r\n return false;\r\n }\r\n if (format.remove !== 'all') {\r\n each$13(format.styles, function (value, name) {\r\n value = $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(value, vars), name);\r\n if (typeof name === 'number') {\r\n name = value;\r\n compareNode = 0;\r\n }\r\n if (format.remove_similar || (!compareNode || isEq$5($_dli08w3ajkmcwktg.getStyle(dom, compareNode, name), value))) {\r\n dom.setStyle(node, name, '');\r\n }\r\n stylesModified = 1;\r\n });\r\n if (stylesModified && dom.getAttrib(node, 'style') === '') {\r\n node.removeAttribute('style');\r\n node.removeAttribute('data-mce-style');\r\n }\r\n each$13(format.attributes, function (value, name) {\r\n var valueOut;\r\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\r\n if (typeof name === 'number') {\r\n name = value;\r\n compareNode = 0;\r\n }\r\n if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) {\r\n if (name === 'class') {\r\n value = dom.getAttrib(node, name);\r\n if (value) {\r\n valueOut = '';\r\n each$13(value.split(/\\s+/), function (cls) {\r\n if (/mce\\-\\w+/.test(cls)) {\r\n valueOut += (valueOut ? ' ' : '') + cls;\r\n }\r\n });\r\n if (valueOut) {\r\n dom.setAttrib(node, name, valueOut);\r\n return;\r\n }\r\n }\r\n }\r\n if (name === 'class') {\r\n node.removeAttribute('className');\r\n }\r\n if (MCE_ATTR_RE.test(name)) {\r\n node.removeAttribute('data-mce-' + name);\r\n }\r\n node.removeAttribute(name);\r\n }\r\n });\r\n each$13(format.classes, function (value) {\r\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\r\n if (!compareNode || dom.hasClass(compareNode, value)) {\r\n dom.removeClass(node, value);\r\n }\r\n });\r\n attrs = dom.getAttribs(node);\r\n for (i = 0; i < attrs.length; i++) {\r\n var attrName = attrs[i].nodeName;\r\n if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (format.remove !== 'none') {\r\n removeNode$1(ed, node, format);\r\n return true;\r\n }\r\n };\r\n var findFormatRoot = function (editor, container, name, vars, similar) {\r\n var formatRoot;\r\n each$13($_dli08w3ajkmcwktg.getParents(editor.dom, container.parentNode).reverse(), function (parent) {\r\n var format;\r\n if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {\r\n format = $_axwnk168jkmcwlim.matchNode(editor, parent, name, vars, similar);\r\n if (format && format.split !== false) {\r\n formatRoot = parent;\r\n }\r\n }\r\n });\r\n return formatRoot;\r\n };\r\n var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\r\n var parent, clone, lastClone, firstClone, i, formatRootParent;\r\n var dom = editor.dom;\r\n if (formatRoot) {\r\n formatRootParent = formatRoot.parentNode;\r\n for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\r\n clone = dom.clone(parent, false);\r\n for (i = 0; i < formatList.length; i++) {\r\n if (removeFormat(editor, formatList[i], vars, clone, clone)) {\r\n clone = 0;\r\n break;\r\n }\r\n }\r\n if (clone) {\r\n if (lastClone) {\r\n clone.appendChild(lastClone);\r\n }\r\n if (!firstClone) {\r\n firstClone = clone;\r\n }\r\n lastClone = clone;\r\n }\r\n }\r\n if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\r\n container = dom.split(formatRoot, container);\r\n }\r\n if (lastClone) {\r\n target.parentNode.insertBefore(lastClone, target);\r\n firstClone.appendChild(target);\r\n }\r\n }\r\n return container;\r\n };\r\n var remove$8 = function (ed, name, vars, node, similar) {\r\n var formatList = ed.formatter.get(name), format = formatList[0];\r\n var bookmark, rng, contentEditable = true;\r\n var dom = ed.dom;\r\n var selection = ed.selection;\r\n var splitToFormatRoot = function (container) {\r\n var formatRoot = findFormatRoot(ed, container, name, vars, similar);\r\n return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\r\n };\r\n var process = function (node) {\r\n var children, i, l, lastContentEditable, hasContentEditableState;\r\n if ($_bjermr1rjkmcwkij.isElement(node) && dom.getContentEditable(node)) {\r\n lastContentEditable = contentEditable;\r\n contentEditable = dom.getContentEditable(node) === 'true';\r\n hasContentEditableState = true;\r\n }\r\n children = $_4ujg4tljkmcwkbk.grep(node.childNodes);\r\n if (contentEditable && !hasContentEditableState) {\r\n for (i = 0, l = formatList.length; i < l; i++) {\r\n if (removeFormat(ed, formatList[i], vars, node, node)) {\r\n break;\r\n }\r\n }\r\n }\r\n if (format.deep) {\r\n if (children.length) {\r\n for (i = 0, l = children.length; i < l; i++) {\r\n process(children[i]);\r\n }\r\n if (hasContentEditableState) {\r\n contentEditable = lastContentEditable;\r\n }\r\n }\r\n }\r\n };\r\n var unwrap = function (start) {\r\n var node = dom.get(start ? '_start' : '_end');\r\n var out = node[start ? 'firstChild' : 'lastChild'];\r\n if ($_e4btcc2vjkmcwkq3.isBookmarkNode(out)) {\r\n out = out[start ? 'firstChild' : 'lastChild'];\r\n }\r\n if ($_bjermr1rjkmcwkij.isText(out) && out.data.length === 0) {\r\n out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\r\n }\r\n dom.remove(node, true);\r\n return out;\r\n };\r\n var removeRngStyle = function (rng) {\r\n var startContainer, endContainer;\r\n var commonAncestorContainer = rng.commonAncestorContainer;\r\n rng = $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList, true);\r\n if (format.split) {\r\n startContainer = getContainer(ed, rng, true);\r\n endContainer = getContainer(ed, rng);\r\n if (startContainer !== endContainer) {\r\n if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\r\n if (startContainer.nodeName === 'TR') {\r\n startContainer = startContainer.firstChild.firstChild || startContainer;\r\n } else {\r\n startContainer = startContainer.firstChild || startContainer;\r\n }\r\n }\r\n if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {\r\n endContainer = endContainer.firstChild || endContainer;\r\n }\r\n if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) {\r\n startContainer = wrap$2(dom, startContainer, 'span', {\r\n 'id': '_start',\r\n 'data-mce-type': 'bookmark'\r\n });\r\n splitToFormatRoot(startContainer);\r\n startContainer = unwrap(true);\r\n return;\r\n }\r\n startContainer = wrap$2(dom, startContainer, 'span', {\r\n 'id': '_start',\r\n 'data-mce-type': 'bookmark'\r\n });\r\n endContainer = wrap$2(dom, endContainer, 'span', {\r\n 'id': '_end',\r\n 'data-mce-type': 'bookmark'\r\n });\r\n splitToFormatRoot(startContainer);\r\n splitToFormatRoot(endContainer);\r\n startContainer = unwrap(true);\r\n endContainer = unwrap();\r\n } else {\r\n startContainer = endContainer = splitToFormatRoot(startContainer);\r\n }\r\n rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\r\n rng.startOffset = dom.nodeIndex(startContainer);\r\n rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\r\n rng.endOffset = dom.nodeIndex(endContainer) + 1;\r\n }\r\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\r\n each$13(nodes, function (node) {\r\n process(node);\r\n if ($_bjermr1rjkmcwkij.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode) === 'underline') {\r\n removeFormat(ed, {\r\n deep: false,\r\n exact: true,\r\n inline: 'span',\r\n styles: { textDecoration: 'underline' }\r\n }, null, node);\r\n }\r\n });\r\n });\r\n };\r\n if (node) {\r\n if (node.nodeType) {\r\n rng = dom.createRng();\r\n rng.setStartBefore(node);\r\n rng.setEndAfter(node);\r\n removeRngStyle(rng);\r\n } else {\r\n removeRngStyle(node);\r\n }\r\n return;\r\n }\r\n if (dom.getContentEditable(selection.getNode()) === 'false') {\r\n node = selection.getNode();\r\n for (var i = 0, l = formatList.length; i < l; i++) {\r\n if (formatList[i].ceFalseOverride) {\r\n if (removeFormat(ed, formatList[i], vars, node, node)) {\r\n break;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\r\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\r\n removeRngStyle(selection.getRng());\r\n selection.moveToBookmark(bookmark);\r\n if (format.inline && $_axwnk168jkmcwlim.match(ed, name, vars, selection.getStart())) {\r\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\r\n }\r\n ed.nodeChanged();\r\n } else {\r\n removeCaretFormat(ed, name, vars, similar);\r\n }\r\n };\r\n var $_2vklhc6cjkmcwlj5 = {\r\n removeFormat: removeFormat,\r\n remove: remove$8\r\n };\r\n\r\n var each$14 = $_4ujg4tljkmcwkbk.each;\r\n var isElementNode = function (node) {\r\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\r\n };\r\n var findElementSibling = function (node, siblingName) {\r\n var sibling;\r\n for (sibling = node; sibling; sibling = sibling[siblingName]) {\r\n if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {\r\n return node;\r\n }\r\n if (sibling.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(sibling)) {\r\n return sibling;\r\n }\r\n }\r\n return node;\r\n };\r\n var mergeSiblingsNodes = function (dom, prev, next) {\r\n var sibling, tmpSibling;\r\n var elementUtils = new ElementUtils(dom);\r\n if (prev && next) {\r\n prev = findElementSibling(prev, 'previousSibling');\r\n next = findElementSibling(next, 'nextSibling');\r\n if (elementUtils.compare(prev, next)) {\r\n for (sibling = prev.nextSibling; sibling && sibling !== next;) {\r\n tmpSibling = sibling;\r\n sibling = sibling.nextSibling;\r\n prev.appendChild(tmpSibling);\r\n }\r\n dom.remove(next);\r\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(next.childNodes), function (node) {\r\n prev.appendChild(node);\r\n });\r\n return prev;\r\n }\r\n }\r\n return next;\r\n };\r\n var processChildElements = function (node, filter, process) {\r\n each$14(node.childNodes, function (node) {\r\n if (isElementNode(node)) {\r\n if (filter(node)) {\r\n process(node);\r\n }\r\n if (node.hasChildNodes()) {\r\n processChildElements(node, filter, process);\r\n }\r\n }\r\n });\r\n };\r\n var hasStyle = function (dom, name) {\r\n return curry(function (name, node) {\r\n return !!(node && $_dli08w3ajkmcwktg.getStyle(dom, node, name));\r\n }, name);\r\n };\r\n var applyStyle = function (dom, name, value) {\r\n return curry(function (name, value, node) {\r\n dom.setStyle(node, name, value);\r\n if (node.getAttribute('style') === '') {\r\n node.removeAttribute('style');\r\n }\r\n unwrapEmptySpan(dom, node);\r\n }, name, value);\r\n };\r\n var unwrapEmptySpan = function (dom, node) {\r\n if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\r\n dom.remove(node, true);\r\n }\r\n };\r\n var processUnderlineAndColor = function (dom, node) {\r\n var textDecoration;\r\n if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\r\n textDecoration = $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode);\r\n if (dom.getStyle(node, 'color') && textDecoration) {\r\n dom.setStyle(node, 'text-decoration', textDecoration);\r\n } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {\r\n dom.setStyle(node, 'text-decoration', null);\r\n }\r\n }\r\n };\r\n var mergeUnderlineAndColor = function (dom, format, vars, node) {\r\n if (format.styles.color || format.styles.textDecoration) {\r\n $_4ujg4tljkmcwkbk.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');\r\n processUnderlineAndColor(dom, node);\r\n }\r\n };\r\n var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {\r\n if (format.styles && format.styles.backgroundColor) {\r\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_dli08w3ajkmcwktg.replaceVars(format.styles.backgroundColor, vars)));\r\n }\r\n };\r\n var mergeSubSup = function (dom, format, vars, node) {\r\n if (format.inline === 'sub' || format.inline === 'sup') {\r\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));\r\n dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);\r\n }\r\n };\r\n var mergeSiblings = function (dom, format, vars, node) {\r\n if (node && format.merge_siblings !== false) {\r\n node = mergeSiblingsNodes(dom, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node), node);\r\n node = mergeSiblingsNodes(dom, node, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, true));\r\n }\r\n };\r\n var clearChildStyles = function (dom, format, node) {\r\n if (format.clear_child_styles) {\r\n var selector = format.links ? '*:not(a)' : '*';\r\n each$14(dom.select(selector, node), function (node) {\r\n if (isElementNode(node)) {\r\n each$14(format.styles, function (value, name) {\r\n dom.setStyle(node, name, '');\r\n });\r\n }\r\n });\r\n }\r\n };\r\n var mergeWithChildren = function (editor, formatList, vars, node) {\r\n each$14(formatList, function (format) {\r\n each$14(editor.dom.select(format.inline, node), function (child) {\r\n if (!isElementNode(child)) {\r\n return;\r\n }\r\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, child, format.exact ? child : null);\r\n });\r\n clearChildStyles(editor.dom, format, node);\r\n });\r\n };\r\n var mergeWithParents = function (editor, format, name, vars, node) {\r\n if ($_axwnk168jkmcwlim.matchNode(editor, node.parentNode, name, vars)) {\r\n if ($_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node)) {\r\n return;\r\n }\r\n }\r\n if (format.merge_with_parents) {\r\n editor.dom.getParent(node.parentNode, function (parent) {\r\n if ($_axwnk168jkmcwlim.matchNode(editor, parent, name, vars)) {\r\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node);\r\n return true;\r\n }\r\n });\r\n }\r\n };\r\n var $_ehzows6bjkmcwliw = {\r\n mergeWithChildren: mergeWithChildren,\r\n mergeUnderlineAndColor: mergeUnderlineAndColor,\r\n mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\r\n mergeSubSup: mergeSubSup,\r\n mergeSiblings: mergeSiblings,\r\n mergeWithParents: mergeWithParents\r\n };\r\n\r\n var each$15 = $_4ujg4tljkmcwkbk.each;\r\n var isElementNode$1 = function (node) {\r\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\r\n };\r\n var applyFormat = function (ed, name, vars, node) {\r\n var formatList = ed.formatter.get(name);\r\n var format = formatList[0];\r\n var bookmark, rng;\r\n var isCollapsed = !node && ed.selection.isCollapsed();\r\n var dom = ed.dom, selection = ed.selection;\r\n var setElementFormat = function (elm, fmt) {\r\n fmt = fmt || format;\r\n if (elm) {\r\n if (fmt.onformat) {\r\n fmt.onformat(elm, fmt, vars, node);\r\n }\r\n each$15(fmt.styles, function (value, name) {\r\n dom.setStyle(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\r\n });\r\n if (fmt.styles) {\r\n var styleVal = dom.getAttrib(elm, 'style');\r\n if (styleVal) {\r\n elm.setAttribute('data-mce-style', styleVal);\r\n }\r\n }\r\n each$15(fmt.attributes, function (value, name) {\r\n dom.setAttrib(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\r\n });\r\n each$15(fmt.classes, function (value) {\r\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\r\n if (!dom.hasClass(elm, value)) {\r\n dom.addClass(elm, value);\r\n }\r\n });\r\n }\r\n };\r\n var applyNodeStyle = function (formatList, node) {\r\n var found = false;\r\n if (!format.selector) {\r\n return false;\r\n }\r\n each$15(formatList, function (format) {\r\n if ('collapsed' in format && format.collapsed !== isCollapsed) {\r\n return;\r\n }\r\n if (dom.is(node, format.selector) && !isCaretNode(node)) {\r\n setElementFormat(node, format);\r\n found = true;\r\n return false;\r\n }\r\n });\r\n return found;\r\n };\r\n var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {\r\n var newWrappers = [];\r\n var wrapName, wrapElm, contentEditable = true;\r\n wrapName = format.inline || format.block;\r\n wrapElm = dom.create(wrapName);\r\n setElementFormat(wrapElm);\r\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\r\n var currentWrapElm;\r\n var process = function (node) {\r\n var nodeName, parentName, hasContentEditableState, lastContentEditable;\r\n lastContentEditable = contentEditable;\r\n nodeName = node.nodeName.toLowerCase();\r\n parentName = node.parentNode.nodeName.toLowerCase();\r\n if (node.nodeType === 1 && dom.getContentEditable(node)) {\r\n lastContentEditable = contentEditable;\r\n contentEditable = dom.getContentEditable(node) === 'true';\r\n hasContentEditableState = true;\r\n }\r\n if ($_dli08w3ajkmcwktg.isEq(nodeName, 'br')) {\r\n currentWrapElm = 0;\r\n if (format.block) {\r\n dom.remove(node);\r\n }\r\n return;\r\n }\r\n if (format.wrapper && $_axwnk168jkmcwlim.matchNode(ed, node, name, vars)) {\r\n currentWrapElm = 0;\r\n return;\r\n }\r\n if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_dli08w3ajkmcwktg.isTextBlock(ed, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName)) {\r\n node = dom.rename(node, wrapName);\r\n setElementFormat(node);\r\n newWrappers.push(node);\r\n currentWrapElm = 0;\r\n return;\r\n }\r\n if (format.selector) {\r\n var found = applyNodeStyle(formatList, node);\r\n if (!format.inline || found) {\r\n currentWrapElm = 0;\r\n return;\r\n }\r\n }\r\n if (contentEditable && !hasContentEditableState && $_dli08w3ajkmcwktg.isValid(ed, wrapName, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {\r\n if (!currentWrapElm) {\r\n currentWrapElm = dom.clone(wrapElm, false);\r\n node.parentNode.insertBefore(currentWrapElm, node);\r\n newWrappers.push(currentWrapElm);\r\n }\r\n currentWrapElm.appendChild(node);\r\n } else {\r\n currentWrapElm = 0;\r\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\r\n if (hasContentEditableState) {\r\n contentEditable = lastContentEditable;\r\n }\r\n currentWrapElm = 0;\r\n }\r\n };\r\n each$15(nodes, process);\r\n });\r\n if (format.links === true) {\r\n each$15(newWrappers, function (node) {\r\n var process = function (node) {\r\n if (node.nodeName === 'A') {\r\n setElementFormat(node, format);\r\n }\r\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\r\n };\r\n process(node);\r\n });\r\n }\r\n each$15(newWrappers, function (node) {\r\n var childCount;\r\n var getChildCount = function (node) {\r\n var count = 0;\r\n each$15(node.childNodes, function (node) {\r\n if (!$_dli08w3ajkmcwktg.isWhiteSpaceNode(node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node)) {\r\n count++;\r\n }\r\n });\r\n return count;\r\n };\r\n var getChildElementNode = function (root) {\r\n var child = false;\r\n each$15(root.childNodes, function (node) {\r\n if (isElementNode$1(node)) {\r\n child = node;\r\n return false;\r\n }\r\n });\r\n return child;\r\n };\r\n var mergeStyles = function (node) {\r\n var child, clone;\r\n child = getChildElementNode(node);\r\n if (child && !$_e4btcc2vjkmcwkq3.isBookmarkNode(child) && $_axwnk168jkmcwlim.matchName(dom, child, format)) {\r\n clone = dom.clone(child, false);\r\n setElementFormat(clone);\r\n dom.replace(clone, node, true);\r\n dom.remove(child, 1);\r\n }\r\n return clone || node;\r\n };\r\n childCount = getChildCount(node);\r\n if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\r\n dom.remove(node, 1);\r\n return;\r\n }\r\n if (format.inline || format.wrapper) {\r\n if (!format.exact && childCount === 1) {\r\n node = mergeStyles(node);\r\n }\r\n $_ehzows6bjkmcwliw.mergeWithChildren(ed, formatList, vars, node);\r\n $_ehzows6bjkmcwliw.mergeWithParents(ed, format, name, vars, node);\r\n $_ehzows6bjkmcwliw.mergeBackgroundColorAndFontSize(dom, format, vars, node);\r\n $_ehzows6bjkmcwliw.mergeSubSup(dom, format, vars, node);\r\n $_ehzows6bjkmcwliw.mergeSiblings(dom, format, vars, node);\r\n }\r\n });\r\n };\r\n if (dom.getContentEditable(selection.getNode()) === 'false') {\r\n node = selection.getNode();\r\n for (var i = 0, l = formatList.length; i < l; i++) {\r\n if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {\r\n setElementFormat(node, formatList[i]);\r\n return;\r\n }\r\n }\r\n return;\r\n }\r\n if (format) {\r\n if (node) {\r\n if (node.nodeType) {\r\n if (!applyNodeStyle(formatList, node)) {\r\n rng = dom.createRng();\r\n rng.setStartBefore(node);\r\n rng.setEndAfter(node);\r\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList), null, true);\r\n }\r\n } else {\r\n applyRngStyle(dom, node, null, true);\r\n }\r\n } else {\r\n if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\r\n var curSelNode = ed.selection.getNode();\r\n if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\r\n applyFormat(ed, formatList[0].defaultBlock);\r\n }\r\n ed.selection.setRng($_bx30le3ojkmcwkw9.normalize(ed.selection.getRng()));\r\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\r\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, selection.getRng(), formatList), bookmark);\r\n if (format.styles) {\r\n $_ehzows6bjkmcwliw.mergeUnderlineAndColor(dom, format, vars, curSelNode);\r\n }\r\n selection.moveToBookmark(bookmark);\r\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\r\n ed.nodeChanged();\r\n } else {\r\n applyCaretFormat(ed, name, vars);\r\n }\r\n }\r\n $_dp9y746ajkmcwlit.postProcess(name, ed);\r\n }\r\n };\r\n var $_bcenmc66jkmcwlhp = { applyFormat: applyFormat };\r\n\r\n var each$16 = $_4ujg4tljkmcwkbk.each;\r\n var setup$5 = function (formatChangeData, editor) {\r\n var currentFormats = {};\r\n formatChangeData.set({});\r\n editor.on('NodeChange', function (e) {\r\n var parents = $_dli08w3ajkmcwktg.getParents(editor.dom, e.element);\r\n var matchedFormats = {};\r\n parents = $_4ujg4tljkmcwkbk.grep(parents, function (node) {\r\n return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\r\n });\r\n each$16(formatChangeData.get(), function (callbacks, format) {\r\n each$16(parents, function (node) {\r\n if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\r\n if (!currentFormats[format]) {\r\n each$16(callbacks, function (callback) {\r\n callback(true, {\r\n node: node,\r\n format: format,\r\n parents: parents\r\n });\r\n });\r\n currentFormats[format] = callbacks;\r\n }\r\n matchedFormats[format] = callbacks;\r\n return false;\r\n }\r\n if ($_axwnk168jkmcwlim.matchesUnInheritedFormatSelector(editor, node, format)) {\r\n return false;\r\n }\r\n });\r\n });\r\n each$16(currentFormats, function (callbacks, format) {\r\n if (!matchedFormats[format]) {\r\n delete currentFormats[format];\r\n each$16(callbacks, function (callback) {\r\n callback(false, {\r\n node: e.element,\r\n format: format,\r\n parents: parents\r\n });\r\n });\r\n }\r\n });\r\n });\r\n };\r\n var addListeners = function (formatChangeData, formats, callback, similar) {\r\n var formatChangeItems = formatChangeData.get();\r\n each$16(formats.split(','), function (format) {\r\n if (!formatChangeItems[format]) {\r\n formatChangeItems[format] = [];\r\n formatChangeItems[format].similar = similar;\r\n }\r\n formatChangeItems[format].push(callback);\r\n });\r\n formatChangeData.set(formatChangeItems);\r\n };\r\n var formatChanged = function (editor, formatChangeState, formats, callback, similar) {\r\n if (formatChangeState.get() === null) {\r\n setup$5(formatChangeState, editor);\r\n }\r\n addListeners(formatChangeState, formats, callback, similar);\r\n };\r\n var $_5j3j9s6djkmcwljg = { formatChanged: formatChanged };\r\n\r\n var get$7 = function (dom) {\r\n var formats = {\r\n valigntop: [{\r\n selector: 'td,th',\r\n styles: { verticalAlign: 'top' }\r\n }],\r\n valignmiddle: [{\r\n selector: 'td,th',\r\n styles: { verticalAlign: 'middle' }\r\n }],\r\n valignbottom: [{\r\n selector: 'td,th',\r\n styles: { verticalAlign: 'bottom' }\r\n }],\r\n alignleft: [\r\n {\r\n selector: 'figure.image',\r\n collapsed: false,\r\n classes: 'align-left',\r\n ceFalseOverride: true,\r\n preview: 'font-family font-size'\r\n },\r\n {\r\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\r\n styles: { textAlign: 'left' },\r\n inherit: false,\r\n preview: false,\r\n defaultBlock: 'div'\r\n },\r\n {\r\n selector: 'img,table',\r\n collapsed: false,\r\n styles: { float: 'left' },\r\n preview: 'font-family font-size'\r\n }\r\n ],\r\n aligncenter: [\r\n {\r\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\r\n styles: { textAlign: 'center' },\r\n inherit: false,\r\n preview: 'font-family font-size',\r\n defaultBlock: 'div'\r\n },\r\n {\r\n selector: 'figure.image',\r\n collapsed: false,\r\n classes: 'align-center',\r\n ceFalseOverride: true,\r\n preview: 'font-family font-size'\r\n },\r\n {\r\n selector: 'img',\r\n collapsed: false,\r\n styles: {\r\n display: 'block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto'\r\n },\r\n preview: false\r\n },\r\n {\r\n selector: 'table',\r\n collapsed: false,\r\n styles: {\r\n marginLeft: 'auto',\r\n marginRight: 'auto'\r\n },\r\n preview: 'font-family font-size'\r\n }\r\n ],\r\n alignright: [\r\n {\r\n selector: 'figure.image',\r\n collapsed: false,\r\n classes: 'align-right',\r\n ceFalseOverride: true,\r\n preview: 'font-family font-size'\r\n },\r\n {\r\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\r\n styles: { textAlign: 'right' },\r\n inherit: false,\r\n preview: 'font-family font-size',\r\n defaultBlock: 'div'\r\n },\r\n {\r\n selector: 'img,table',\r\n collapsed: false,\r\n styles: { float: 'right' },\r\n preview: 'font-family font-size'\r\n }\r\n ],\r\n alignjustify: [{\r\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\r\n styles: { textAlign: 'justify' },\r\n inherit: false,\r\n defaultBlock: 'div',\r\n preview: 'font-family font-size'\r\n }],\r\n bold: [\r\n {\r\n inline: 'strong',\r\n remove: 'all'\r\n },\r\n {\r\n inline: 'span',\r\n styles: { fontWeight: 'bold' }\r\n },\r\n {\r\n inline: 'b',\r\n remove: 'all'\r\n }\r\n ],\r\n italic: [\r\n {\r\n inline: 'em',\r\n remove: 'all'\r\n },\r\n {\r\n inline: 'span',\r\n styles: { fontStyle: 'italic' }\r\n },\r\n {\r\n inline: 'i',\r\n remove: 'all'\r\n }\r\n ],\r\n underline: [\r\n {\r\n inline: 'span',\r\n styles: { textDecoration: 'underline' },\r\n exact: true\r\n },\r\n {\r\n inline: 'u',\r\n remove: 'all'\r\n }\r\n ],\r\n strikethrough: [\r\n {\r\n inline: 'span',\r\n styles: { textDecoration: 'line-through' },\r\n exact: true\r\n },\r\n {\r\n inline: 'strike',\r\n remove: 'all'\r\n }\r\n ],\r\n forecolor: {\r\n inline: 'span',\r\n styles: { color: '%value' },\r\n links: true,\r\n remove_similar: true,\r\n clear_child_styles: true\r\n },\r\n hilitecolor: {\r\n inline: 'span',\r\n styles: { backgroundColor: '%value' },\r\n links: true,\r\n remove_similar: true,\r\n clear_child_styles: true\r\n },\r\n fontname: {\r\n inline: 'span',\r\n toggle: false,\r\n styles: { fontFamily: '%value' },\r\n clear_child_styles: true\r\n },\r\n fontsize: {\r\n inline: 'span',\r\n toggle: false,\r\n styles: { fontSize: '%value' },\r\n clear_child_styles: true\r\n },\r\n fontsize_class: {\r\n inline: 'span',\r\n attributes: { class: '%value' }\r\n },\r\n blockquote: {\r\n block: 'blockquote',\r\n wrapper: 1,\r\n remove: 'all'\r\n },\r\n subscript: { inline: 'sub' },\r\n superscript: { inline: 'sup' },\r\n code: { inline: 'code' },\r\n link: {\r\n inline: 'a',\r\n selector: 'a',\r\n remove: 'all',\r\n split: true,\r\n deep: true,\r\n onmatch: function () {\r\n return true;\r\n },\r\n onformat: function (elm, fmt, vars) {\r\n $_4ujg4tljkmcwkbk.each(vars, function (value, key) {\r\n dom.setAttrib(elm, key, value);\r\n });\r\n }\r\n },\r\n removeformat: [\r\n {\r\n selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',\r\n remove: 'all',\r\n split: true,\r\n expand: false,\r\n block_expand: true,\r\n deep: true\r\n },\r\n {\r\n selector: 'span',\r\n attributes: [\r\n 'style',\r\n 'class'\r\n ],\r\n remove: 'empty',\r\n split: true,\r\n expand: false,\r\n deep: true\r\n },\r\n {\r\n selector: '*',\r\n attributes: [\r\n 'style',\r\n 'class'\r\n ],\r\n split: false,\r\n expand: false,\r\n deep: true\r\n }\r\n ]\r\n };\r\n $_4ujg4tljkmcwkbk.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\\s/), function (name) {\r\n formats[name] = {\r\n block: name,\r\n remove: 'all'\r\n };\r\n });\r\n return formats;\r\n };\r\n var $_8oc5be6fjkmcwljl = { get: get$7 };\r\n\r\n function FormatRegistry (editor) {\r\n var formats = {};\r\n var get = function (name) {\r\n return name ? formats[name] : formats;\r\n };\r\n var register = function (name, format) {\r\n if (name) {\r\n if (typeof name !== 'string') {\r\n $_4ujg4tljkmcwkbk.each(name, function (format, name) {\r\n register(name, format);\r\n });\r\n } else {\r\n format = format.length ? format : [format];\r\n $_4ujg4tljkmcwkbk.each(format, function (format) {\r\n if (typeof format.deep === 'undefined') {\r\n format.deep = !format.selector;\r\n }\r\n if (typeof format.split === 'undefined') {\r\n format.split = !format.selector || format.inline;\r\n }\r\n if (typeof format.remove === 'undefined' && format.selector && !format.inline) {\r\n format.remove = 'none';\r\n }\r\n if (format.selector && format.inline) {\r\n format.mixed = true;\r\n format.block_expand = true;\r\n }\r\n if (typeof format.classes === 'string') {\r\n format.classes = format.classes.split(/\\s+/);\r\n }\r\n });\r\n formats[name] = format;\r\n }\r\n }\r\n };\r\n var unregister = function (name) {\r\n if (name && formats[name]) {\r\n delete formats[name];\r\n }\r\n return formats;\r\n };\r\n register($_8oc5be6fjkmcwljl.get(editor.dom));\r\n register(editor.settings.formats);\r\n return {\r\n get: get,\r\n register: register,\r\n unregister: unregister\r\n };\r\n }\r\n\r\n var each$17 = $_4ujg4tljkmcwkbk.each;\r\n var dom = DOMUtils$1.DOM;\r\n var parsedSelectorToHtml = function (ancestry, editor) {\r\n var elm, item, fragment;\r\n var schema = editor && editor.schema || Schema({});\r\n var decorate = function (elm, item) {\r\n if (item.classes.length) {\r\n dom.addClass(elm, item.classes.join(' '));\r\n }\r\n dom.setAttribs(elm, item.attrs);\r\n };\r\n var createElement = function (sItem) {\r\n var elm;\r\n item = typeof sItem === 'string' ? {\r\n name: sItem,\r\n classes: [],\r\n attrs: {}\r\n } : sItem;\r\n elm = dom.create(item.name);\r\n decorate(elm, item);\r\n return elm;\r\n };\r\n var getRequiredParent = function (elm, candidate) {\r\n var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;\r\n var elmRule = schema.getElementRule(name);\r\n var parentsRequired = elmRule && elmRule.parentsRequired;\r\n if (parentsRequired && parentsRequired.length) {\r\n return candidate && $_4ujg4tljkmcwkbk.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];\r\n } else {\r\n return false;\r\n }\r\n };\r\n var wrapInHtml = function (elm, ancestry, siblings) {\r\n var parent, parentCandidate, parentRequired;\r\n var ancestor = ancestry.length > 0 && ancestry[0];\r\n var ancestorName = ancestor && ancestor.name;\r\n parentRequired = getRequiredParent(elm, ancestorName);\r\n if (parentRequired) {\r\n if (ancestorName === parentRequired) {\r\n parentCandidate = ancestry[0];\r\n ancestry = ancestry.slice(1);\r\n } else {\r\n parentCandidate = parentRequired;\r\n }\r\n } else if (ancestor) {\r\n parentCandidate = ancestry[0];\r\n ancestry = ancestry.slice(1);\r\n } else if (!siblings) {\r\n return elm;\r\n }\r\n if (parentCandidate) {\r\n parent = createElement(parentCandidate);\r\n parent.appendChild(elm);\r\n }\r\n if (siblings) {\r\n if (!parent) {\r\n parent = dom.create('div');\r\n parent.appendChild(elm);\r\n }\r\n $_4ujg4tljkmcwkbk.each(siblings, function (sibling) {\r\n var siblingElm = createElement(sibling);\r\n parent.insertBefore(siblingElm, elm);\r\n });\r\n }\r\n return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);\r\n };\r\n if (ancestry && ancestry.length) {\r\n item = ancestry[0];\r\n elm = createElement(item);\r\n fragment = dom.create('div');\r\n fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));\r\n return fragment;\r\n } else {\r\n return '';\r\n }\r\n };\r\n var selectorToHtml = function (selector, editor) {\r\n return parsedSelectorToHtml(parseSelector(selector), editor);\r\n };\r\n var parseSelectorItem = function (item) {\r\n var tagName;\r\n var obj = {\r\n classes: [],\r\n attrs: {}\r\n };\r\n item = obj.selector = $_4ujg4tljkmcwkbk.trim(item);\r\n if (item !== '*') {\r\n tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, function ($0, $1, $2, $3, $4) {\r\n switch ($1) {\r\n case '#':\r\n obj.attrs.id = $2;\r\n break;\r\n case '.':\r\n obj.classes.push($2);\r\n break;\r\n case ':':\r\n if ($_4ujg4tljkmcwkbk.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\r\n obj.attrs[$2] = $2;\r\n }\r\n break;\r\n }\r\n if ($3 === '[') {\r\n var m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\r\n if (m) {\r\n obj.attrs[m[1]] = m[2];\r\n }\r\n }\r\n return '';\r\n });\r\n }\r\n obj.name = tagName || 'div';\r\n return obj;\r\n };\r\n var parseSelector = function (selector) {\r\n if (!selector || typeof selector !== 'string') {\r\n return [];\r\n }\r\n selector = selector.split(/\\s*,\\s*/)[0];\r\n selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\r\n return $_4ujg4tljkmcwkbk.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\r\n var siblings = $_4ujg4tljkmcwkbk.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\r\n var obj = siblings.pop();\r\n if (siblings.length) {\r\n obj.siblings = siblings;\r\n }\r\n return obj;\r\n }).reverse();\r\n };\r\n var getCssText = function (editor, format) {\r\n var name, previewFrag, previewElm, items;\r\n var previewCss = '', parentFontSize, previewStyles;\r\n previewStyles = editor.settings.preview_styles;\r\n if (previewStyles === false) {\r\n return '';\r\n }\r\n if (typeof previewStyles !== 'string') {\r\n previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';\r\n }\r\n var removeVars = function (val) {\r\n return val.replace(/%(\\w+)/g, '');\r\n };\r\n if (typeof format === 'string') {\r\n format = editor.formatter.get(format);\r\n if (!format) {\r\n return;\r\n }\r\n format = format[0];\r\n }\r\n if ('preview' in format) {\r\n previewStyles = format.preview;\r\n if (previewStyles === false) {\r\n return '';\r\n }\r\n }\r\n name = format.block || format.inline || 'span';\r\n items = parseSelector(format.selector);\r\n if (items.length) {\r\n if (!items[0].name) {\r\n items[0].name = name;\r\n }\r\n name = format.selector;\r\n previewFrag = parsedSelectorToHtml(items, editor);\r\n } else {\r\n previewFrag = parsedSelectorToHtml([name], editor);\r\n }\r\n previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\r\n each$17(format.styles, function (value, name) {\r\n value = removeVars(value);\r\n if (value) {\r\n dom.setStyle(previewElm, name, value);\r\n }\r\n });\r\n each$17(format.attributes, function (value, name) {\r\n value = removeVars(value);\r\n if (value) {\r\n dom.setAttrib(previewElm, name, value);\r\n }\r\n });\r\n each$17(format.classes, function (value) {\r\n value = removeVars(value);\r\n if (!dom.hasClass(previewElm, value)) {\r\n dom.addClass(previewElm, value);\r\n }\r\n });\r\n editor.fire('PreviewFormats');\r\n dom.setStyles(previewFrag, {\r\n position: 'absolute',\r\n left: -65535\r\n });\r\n editor.getBody().appendChild(previewFrag);\r\n parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);\r\n parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\r\n each$17(previewStyles.split(' '), function (name) {\r\n var value = dom.getStyle(previewElm, name, true);\r\n if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\r\n value = dom.getStyle(editor.getBody(), name, true);\r\n if (dom.toHex(value).toLowerCase() === '#ffffff') {\r\n return;\r\n }\r\n }\r\n if (name === 'color') {\r\n if (dom.toHex(value).toLowerCase() === '#000000') {\r\n return;\r\n }\r\n }\r\n if (name === 'font-size') {\r\n if (/em|%$/.test(value)) {\r\n if (parentFontSize === 0) {\r\n return;\r\n }\r\n var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\r\n value = numValue * parentFontSize + 'px';\r\n }\r\n }\r\n if (name === 'border' && value) {\r\n previewCss += 'padding:0 2px;';\r\n }\r\n previewCss += name + ':' + value + ';';\r\n });\r\n editor.fire('AfterPreviewFormats');\r\n dom.remove(previewFrag);\r\n return previewCss;\r\n };\r\n var $_ga7lpr6gjkmcwlk1 = {\r\n getCssText: getCssText,\r\n parseSelector: parseSelector,\r\n selectorToHtml: selectorToHtml\r\n };\r\n\r\n var toggle$3 = function (editor, formats, name, vars, node) {\r\n var fmt = formats.get(name);\r\n if ($_axwnk168jkmcwlim.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\r\n $_2vklhc6cjkmcwlj5.remove(editor, name, vars, node);\r\n } else {\r\n $_bcenmc66jkmcwlhp.applyFormat(editor, name, vars, node);\r\n }\r\n };\r\n var $_1zpcor6hjkmcwlk7 = { toggle: toggle$3 };\r\n\r\n var setup$6 = function (editor) {\r\n editor.addShortcut('meta+b', '', 'Bold');\r\n editor.addShortcut('meta+i', '', 'Italic');\r\n editor.addShortcut('meta+u', '', 'Underline');\r\n for (var i = 1; i <= 6; i++) {\r\n editor.addShortcut('access+' + i, '', [\r\n 'FormatBlock',\r\n false,\r\n 'h' + i\r\n ]);\r\n }\r\n editor.addShortcut('access+7', '', [\r\n 'FormatBlock',\r\n false,\r\n 'p'\r\n ]);\r\n editor.addShortcut('access+8', '', [\r\n 'FormatBlock',\r\n false,\r\n 'div'\r\n ]);\r\n editor.addShortcut('access+9', '', [\r\n 'FormatBlock',\r\n false,\r\n 'address'\r\n ]);\r\n };\r\n var $_2ind0x6ijkmcwlk8 = { setup: setup$6 };\r\n\r\n function Formatter (editor) {\r\n var formats = FormatRegistry(editor);\r\n var formatChangeState = Cell(null);\r\n $_2ind0x6ijkmcwlk8.setup(editor);\r\n setup$4(editor);\r\n return {\r\n get: formats.get,\r\n register: formats.register,\r\n unregister: formats.unregister,\r\n apply: curry($_bcenmc66jkmcwlhp.applyFormat, editor),\r\n remove: curry($_2vklhc6cjkmcwlj5.remove, editor),\r\n toggle: curry($_1zpcor6hjkmcwlk7.toggle, editor, formats),\r\n match: curry($_axwnk168jkmcwlim.match, editor),\r\n matchAll: curry($_axwnk168jkmcwlim.matchAll, editor),\r\n matchNode: curry($_axwnk168jkmcwlim.matchNode, editor),\r\n canApply: curry($_axwnk168jkmcwlim.canApply, editor),\r\n formatChanged: curry($_5j3j9s6djkmcwljg.formatChanged, editor, formatChangeState),\r\n getCssText: curry($_ga7lpr6gjkmcwlk1.getCssText, editor)\r\n };\r\n }\r\n\r\n var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\r\n var shallow$1 = function (old, nu) {\r\n return nu;\r\n };\r\n var baseMerge = function (merger) {\r\n return function () {\r\n var objects = new Array(arguments.length);\r\n for (var i = 0; i < objects.length; i++)\r\n objects[i] = arguments[i];\r\n if (objects.length === 0)\r\n throw new Error('Can\\'t merge zero objects');\r\n var ret = {};\r\n for (var j = 0; j < objects.length; j++) {\r\n var curObject = objects[j];\r\n for (var key in curObject)\r\n if (hasOwnProperty$1.call(curObject, key)) {\r\n ret[key] = merger(ret[key], curObject[key]);\r\n }\r\n }\r\n return ret;\r\n };\r\n };\r\n\r\n var merge = baseMerge(shallow$1);\r\n\r\n var register = function (htmlParser, settings, dom) {\r\n htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n node.attr('tabindex', node.attributes.map['data-mce-tabindex']);\r\n node.attr(name, null);\r\n }\r\n });\r\n htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {\r\n var i = nodes.length, node, value;\r\n var internalName = 'data-mce-' + name;\r\n var urlConverter = settings.url_converter;\r\n var urlConverterScope = settings.url_converter_scope;\r\n while (i--) {\r\n node = nodes[i];\r\n value = node.attributes.map[internalName];\r\n if (value !== undefined) {\r\n node.attr(name, value.length > 0 ? value : null);\r\n node.attr(internalName, null);\r\n } else {\r\n value = node.attributes.map[name];\r\n if (name === 'style') {\r\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\r\n } else if (urlConverter) {\r\n value = urlConverter.call(urlConverterScope, value, name, node.name);\r\n }\r\n node.attr(name, value.length > 0 ? value : null);\r\n }\r\n }\r\n });\r\n htmlParser.addAttributeFilter('class', function (nodes) {\r\n var i = nodes.length, node, value;\r\n while (i--) {\r\n node = nodes[i];\r\n value = node.attr('class');\r\n if (value) {\r\n value = node.attr('class').replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\r\n node.attr('class', value.length > 0 ? value : null);\r\n }\r\n }\r\n });\r\n htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {\r\n node.remove();\r\n }\r\n }\r\n });\r\n htmlParser.addNodeFilter('noscript', function (nodes) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i].firstChild;\r\n if (node) {\r\n node.value = $_33qwr1sjkmcwkip.decode(node.value);\r\n }\r\n }\r\n });\r\n htmlParser.addNodeFilter('script,style', function (nodes, name) {\r\n var i = nodes.length, node, value, type;\r\n var trim = function (value) {\r\n return value.replace(/()/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*(()?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\r\n };\r\n while (i--) {\r\n node = nodes[i];\r\n value = node.firstChild ? node.firstChild.value : '';\r\n if (name === 'script') {\r\n type = node.attr('type');\r\n if (type) {\r\n node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\r\n }\r\n if (settings.element_format === 'xhtml' && value.length > 0) {\r\n node.firstChild.value = '// ';\r\n }\r\n } else {\r\n if (settings.element_format === 'xhtml' && value.length > 0) {\r\n node.firstChild.value = '';\r\n }\r\n }\r\n }\r\n });\r\n htmlParser.addNodeFilter('#comment', function (nodes) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.value.indexOf('[CDATA[') === 0) {\r\n node.name = '#cdata';\r\n node.type = 4;\r\n node.value = node.value.replace(/^\\[CDATA\\[|\\]\\]$/g, '');\r\n } else if (node.value.indexOf('mce:protected ') === 0) {\r\n node.name = '#text';\r\n node.type = 3;\r\n node.raw = true;\r\n node.value = unescape(node.value).substr(14);\r\n }\r\n }\r\n });\r\n htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.type === 7) {\r\n node.remove();\r\n } else if (node.type === 1) {\r\n if (name === 'input' && !('type' in node.attributes.map)) {\r\n node.attr('type', 'text');\r\n }\r\n }\r\n }\r\n });\r\n htmlParser.addAttributeFilter('data-mce-type', function (nodes) {\r\n each(nodes, function (node) {\r\n if (node.attr('data-mce-type') === 'format-caret') {\r\n if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\r\n node.remove();\r\n } else {\r\n node.unwrap();\r\n }\r\n }\r\n });\r\n });\r\n htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {\r\n var i = nodes.length;\r\n while (i--) {\r\n nodes[i].attr(name, null);\r\n }\r\n });\r\n };\r\n var trimTrailingBr = function (rootNode) {\r\n var brNode1, brNode2;\r\n var isBr = function (node) {\r\n return node && node.name === 'br';\r\n };\r\n brNode1 = rootNode.lastChild;\r\n if (isBr(brNode1)) {\r\n brNode2 = brNode1.prev;\r\n if (isBr(brNode2)) {\r\n brNode1.remove();\r\n brNode2.remove();\r\n }\r\n }\r\n };\r\n var $_ft0zjh6mjkmcwlkr = {\r\n register: register,\r\n trimTrailingBr: trimTrailingBr\r\n };\r\n\r\n var preProcess = function (editor, node, args) {\r\n var impl, doc, oldDoc;\r\n var dom = editor.dom;\r\n node = node.cloneNode(true);\r\n impl = document.implementation;\r\n if (impl.createHTMLDocument) {\r\n doc = impl.createHTMLDocument('');\r\n $_4ujg4tljkmcwkbk.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {\r\n doc.body.appendChild(doc.importNode(node, true));\r\n });\r\n if (node.nodeName !== 'BODY') {\r\n node = doc.body.firstChild;\r\n } else {\r\n node = doc.body;\r\n }\r\n oldDoc = dom.doc;\r\n dom.doc = doc;\r\n }\r\n $_q3ric4tjkmcwl9q.firePreProcess(editor, merge(args, { node: node }));\r\n if (oldDoc) {\r\n dom.doc = oldDoc;\r\n }\r\n return node;\r\n };\r\n var shouldFireEvent = function (editor, args) {\r\n return editor && editor.hasEventListeners('PreProcess') && !args.no_events;\r\n };\r\n var process = function (editor, node, args) {\r\n return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;\r\n };\r\n var $_27apc6njkmcwll3 = { process: process };\r\n\r\n var removeAttrs = function (node, names) {\r\n each(names, function (name) {\r\n node.attr(name, null);\r\n });\r\n };\r\n var addFontToSpansFilter = function (domParser, styles, fontSizes) {\r\n domParser.addNodeFilter('font', function (nodes) {\r\n each(nodes, function (node) {\r\n var props = styles.parse(node.attr('style'));\r\n var color = node.attr('color');\r\n var face = node.attr('face');\r\n var size = node.attr('size');\r\n if (color) {\r\n props.color = color;\r\n }\r\n if (face) {\r\n props['font-family'] = face;\r\n }\r\n if (size) {\r\n props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];\r\n }\r\n node.name = 'span';\r\n node.attr('style', styles.serialize(props));\r\n removeAttrs(node, [\r\n 'color',\r\n 'face',\r\n 'size'\r\n ]);\r\n });\r\n });\r\n };\r\n var addStrikeToSpanFilter = function (domParser, styles) {\r\n domParser.addNodeFilter('strike', function (nodes) {\r\n each(nodes, function (node) {\r\n var props = styles.parse(node.attr('style'));\r\n props['text-decoration'] = 'line-through';\r\n node.name = 'span';\r\n node.attr('style', styles.serialize(props));\r\n });\r\n });\r\n };\r\n var addFilters = function (domParser, settings) {\r\n var styles = Styles();\r\n if (settings.convert_fonts_to_spans) {\r\n addFontToSpansFilter(domParser, styles, $_4ujg4tljkmcwkbk.explode(settings.font_size_legacy_values));\r\n }\r\n addStrikeToSpanFilter(domParser, styles);\r\n };\r\n var register$1 = function (domParser, settings) {\r\n if (settings.inline_styles) {\r\n addFilters(domParser, settings);\r\n }\r\n };\r\n var $_2klegh6pjkmcwllk = { register: register$1 };\r\n\r\n var whiteSpaceRegExp$3 = /^[ \\t\\r\\n]*$/;\r\n var typeLookup = {\r\n '#text': 3,\r\n '#comment': 8,\r\n '#cdata': 4,\r\n '#pi': 7,\r\n '#doctype': 10,\r\n '#document-fragment': 11\r\n };\r\n var walk$3 = function (node, root, prev) {\r\n var sibling;\r\n var parent;\r\n var startName = prev ? 'lastChild' : 'firstChild';\r\n var siblingName = prev ? 'prev' : 'next';\r\n if (node[startName]) {\r\n return node[startName];\r\n }\r\n if (node !== root) {\r\n sibling = node[siblingName];\r\n if (sibling) {\r\n return sibling;\r\n }\r\n for (parent = node.parent; parent && parent !== root; parent = parent.parent) {\r\n sibling = parent[siblingName];\r\n if (sibling) {\r\n return sibling;\r\n }\r\n }\r\n }\r\n };\r\n var Node$2 = function () {\r\n function Node(name, type) {\r\n this.name = name;\r\n this.type = type;\r\n if (type === 1) {\r\n this.attributes = [];\r\n this.attributes.map = {};\r\n }\r\n }\r\n Node.create = function (name, attrs) {\r\n var node, attrName;\r\n node = new Node(name, typeLookup[name] || 1);\r\n if (attrs) {\r\n for (attrName in attrs) {\r\n node.attr(attrName, attrs[attrName]);\r\n }\r\n }\r\n return node;\r\n };\r\n Node.prototype.replace = function (node) {\r\n var self = this;\r\n if (node.parent) {\r\n node.remove();\r\n }\r\n self.insert(node, self);\r\n self.remove();\r\n return self;\r\n };\r\n Node.prototype.attr = function (name, value) {\r\n var self = this;\r\n var attrs, i;\r\n if (typeof name !== 'string') {\r\n for (i in name) {\r\n self.attr(i, name[i]);\r\n }\r\n return self;\r\n }\r\n if (attrs = self.attributes) {\r\n if (value !== undefined) {\r\n if (value === null) {\r\n if (name in attrs.map) {\r\n delete attrs.map[name];\r\n i = attrs.length;\r\n while (i--) {\r\n if (attrs[i].name === name) {\r\n attrs = attrs.splice(i, 1);\r\n return self;\r\n }\r\n }\r\n }\r\n return self;\r\n }\r\n if (name in attrs.map) {\r\n i = attrs.length;\r\n while (i--) {\r\n if (attrs[i].name === name) {\r\n attrs[i].value = value;\r\n break;\r\n }\r\n }\r\n } else {\r\n attrs.push({\r\n name: name,\r\n value: value\r\n });\r\n }\r\n attrs.map[name] = value;\r\n return self;\r\n }\r\n return attrs.map[name];\r\n }\r\n };\r\n Node.prototype.clone = function () {\r\n var self = this;\r\n var clone = new Node(self.name, self.type);\r\n var i, l, selfAttrs, selfAttr, cloneAttrs;\r\n if (selfAttrs = self.attributes) {\r\n cloneAttrs = [];\r\n cloneAttrs.map = {};\r\n for (i = 0, l = selfAttrs.length; i < l; i++) {\r\n selfAttr = selfAttrs[i];\r\n if (selfAttr.name !== 'id') {\r\n cloneAttrs[cloneAttrs.length] = {\r\n name: selfAttr.name,\r\n value: selfAttr.value\r\n };\r\n cloneAttrs.map[selfAttr.name] = selfAttr.value;\r\n }\r\n }\r\n clone.attributes = cloneAttrs;\r\n }\r\n clone.value = self.value;\r\n clone.shortEnded = self.shortEnded;\r\n return clone;\r\n };\r\n Node.prototype.wrap = function (wrapper) {\r\n var self = this;\r\n self.parent.insert(wrapper, self);\r\n wrapper.append(self);\r\n return self;\r\n };\r\n Node.prototype.unwrap = function () {\r\n var self = this;\r\n var node, next;\r\n for (node = self.firstChild; node;) {\r\n next = node.next;\r\n self.insert(node, self, true);\r\n node = next;\r\n }\r\n self.remove();\r\n };\r\n Node.prototype.remove = function () {\r\n var self = this, parent = self.parent, next = self.next, prev = self.prev;\r\n if (parent) {\r\n if (parent.firstChild === self) {\r\n parent.firstChild = next;\r\n if (next) {\r\n next.prev = null;\r\n }\r\n } else {\r\n prev.next = next;\r\n }\r\n if (parent.lastChild === self) {\r\n parent.lastChild = prev;\r\n if (prev) {\r\n prev.next = null;\r\n }\r\n } else {\r\n next.prev = prev;\r\n }\r\n self.parent = self.next = self.prev = null;\r\n }\r\n return self;\r\n };\r\n Node.prototype.append = function (node) {\r\n var self = this;\r\n var last;\r\n if (node.parent) {\r\n node.remove();\r\n }\r\n last = self.lastChild;\r\n if (last) {\r\n last.next = node;\r\n node.prev = last;\r\n self.lastChild = node;\r\n } else {\r\n self.lastChild = self.firstChild = node;\r\n }\r\n node.parent = self;\r\n return node;\r\n };\r\n Node.prototype.insert = function (node, refNode, before) {\r\n var parent;\r\n if (node.parent) {\r\n node.remove();\r\n }\r\n parent = refNode.parent || this;\r\n if (before) {\r\n if (refNode === parent.firstChild) {\r\n parent.firstChild = node;\r\n } else {\r\n refNode.prev.next = node;\r\n }\r\n node.prev = refNode.prev;\r\n node.next = refNode;\r\n refNode.prev = node;\r\n } else {\r\n if (refNode === parent.lastChild) {\r\n parent.lastChild = node;\r\n } else {\r\n refNode.next.prev = node;\r\n }\r\n node.next = refNode.next;\r\n node.prev = refNode;\r\n refNode.next = node;\r\n }\r\n node.parent = parent;\r\n return node;\r\n };\r\n Node.prototype.getAll = function (name) {\r\n var self = this;\r\n var node;\r\n var collection = [];\r\n for (node = self.firstChild; node; node = walk$3(node, self)) {\r\n if (node.name === name) {\r\n collection.push(node);\r\n }\r\n }\r\n return collection;\r\n };\r\n Node.prototype.empty = function () {\r\n var self = this;\r\n var nodes, i, node;\r\n if (self.firstChild) {\r\n nodes = [];\r\n for (node = self.firstChild; node; node = walk$3(node, self)) {\r\n nodes.push(node);\r\n }\r\n i = nodes.length;\r\n while (i--) {\r\n node = nodes[i];\r\n node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\r\n }\r\n }\r\n self.firstChild = self.lastChild = null;\r\n return self;\r\n };\r\n Node.prototype.isEmpty = function (elements, whitespace, predicate) {\r\n var self = this;\r\n var node = self.firstChild, i, name;\r\n whitespace = whitespace || {};\r\n if (node) {\r\n do {\r\n if (node.type === 1) {\r\n if (node.attributes.map['data-mce-bogus']) {\r\n continue;\r\n }\r\n if (elements[node.name]) {\r\n return false;\r\n }\r\n i = node.attributes.length;\r\n while (i--) {\r\n name = node.attributes[i].name;\r\n if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (node.type === 8) {\r\n return false;\r\n }\r\n if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {\r\n return false;\r\n }\r\n if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {\r\n return false;\r\n }\r\n if (predicate && predicate(node)) {\r\n return false;\r\n }\r\n } while (node = walk$3(node, self));\r\n }\r\n return true;\r\n };\r\n Node.prototype.walk = function (prev) {\r\n return walk$3(this, null, prev);\r\n };\r\n return Node;\r\n }();\r\n\r\n var paddEmptyNode = function (settings, args, blockElements, node) {\r\n var brPreferred = settings.padd_empty_with_br || args.insert;\r\n if (brPreferred && blockElements[node.name]) {\r\n node.empty().append(new Node$2('br', 1)).shortEnded = true;\r\n } else {\r\n node.empty().append(new Node$2('#text', 3)).value = '\\xA0';\r\n }\r\n };\r\n var isPaddedWithNbsp = function (node) {\r\n return hasOnlyChild(node, '#text') && node.firstChild.value === '\\xA0';\r\n };\r\n var hasOnlyChild = function (node, name) {\r\n return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;\r\n };\r\n var isPadded = function (schema, node) {\r\n var rule = schema.getElementRule(node.name);\r\n return rule && rule.paddEmpty;\r\n };\r\n var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {\r\n return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {\r\n return isPadded(schema, node);\r\n });\r\n };\r\n var isLineBreakNode = function (node, blockElements) {\r\n return node && (blockElements[node.name] || node.name === 'br');\r\n };\r\n\r\n var register$2 = function (parser, settings) {\r\n var schema = parser.schema;\r\n if (settings.remove_trailing_brs) {\r\n parser.addNodeFilter('br', function (nodes, _, args) {\r\n var i;\r\n var l = nodes.length;\r\n var node;\r\n var blockElements = $_4ujg4tljkmcwkbk.extend({}, schema.getBlockElements());\r\n var nonEmptyElements = schema.getNonEmptyElements();\r\n var parent, lastParent, prev, prevName;\r\n var whiteSpaceElements = schema.getNonEmptyElements();\r\n var elementRule, textNode;\r\n blockElements.body = 1;\r\n for (i = 0; i < l; i++) {\r\n node = nodes[i];\r\n parent = node.parent;\r\n if (blockElements[node.parent.name] && node === parent.lastChild) {\r\n prev = node.prev;\r\n while (prev) {\r\n prevName = prev.name;\r\n if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\r\n if (prevName !== 'br') {\r\n break;\r\n }\r\n if (prevName === 'br') {\r\n node = null;\r\n break;\r\n }\r\n }\r\n prev = prev.prev;\r\n }\r\n if (node) {\r\n node.remove();\r\n if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {\r\n elementRule = schema.getElementRule(parent.name);\r\n if (elementRule) {\r\n if (elementRule.removeEmpty) {\r\n parent.remove();\r\n } else if (elementRule.paddEmpty) {\r\n paddEmptyNode(settings, args, blockElements, parent);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n lastParent = node;\r\n while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\r\n lastParent = parent;\r\n if (blockElements[parent.name]) {\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n if (lastParent === parent && settings.padd_empty_with_br !== true) {\r\n textNode = new Node$2('#text', 3);\r\n textNode.value = '\\xA0';\r\n node.replace(textNode);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n parser.addAttributeFilter('href', function (nodes) {\r\n var i = nodes.length, node;\r\n var appendRel = function (rel) {\r\n var parts = rel.split(' ').filter(function (p) {\r\n return p.length > 0;\r\n });\r\n return parts.concat(['noopener']).sort().join(' ');\r\n };\r\n var addNoOpener = function (rel) {\r\n var newRel = rel ? $_4ujg4tljkmcwkbk.trim(rel) : '';\r\n if (!/\\b(noopener)\\b/g.test(newRel)) {\r\n return appendRel(newRel);\r\n } else {\r\n return newRel;\r\n }\r\n };\r\n if (!settings.allow_unsafe_link_target) {\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.name === 'a' && node.attr('target') === '_blank') {\r\n node.attr('rel', addNoOpener(node.attr('rel')));\r\n }\r\n }\r\n }\r\n });\r\n if (!settings.allow_html_in_named_anchor) {\r\n parser.addAttributeFilter('id,name', function (nodes) {\r\n var i = nodes.length, sibling, prevSibling, parent, node;\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.name === 'a' && node.firstChild && !node.attr('href')) {\r\n parent = node.parent;\r\n sibling = node.lastChild;\r\n do {\r\n prevSibling = sibling.prev;\r\n parent.insert(sibling, node);\r\n sibling = prevSibling;\r\n } while (sibling);\r\n }\r\n }\r\n });\r\n }\r\n if (settings.fix_list_elements) {\r\n parser.addNodeFilter('ul,ol', function (nodes) {\r\n var i = nodes.length, node, parentNode;\r\n while (i--) {\r\n node = nodes[i];\r\n parentNode = node.parent;\r\n if (parentNode.name === 'ul' || parentNode.name === 'ol') {\r\n if (node.prev && node.prev.name === 'li') {\r\n node.prev.append(node);\r\n } else {\r\n var li = new Node$2('li', 1);\r\n li.attr('style', 'list-style-type: none');\r\n node.wrap(li);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (settings.validate && schema.getValidClasses()) {\r\n parser.addAttributeFilter('class', function (nodes) {\r\n var i = nodes.length, node, classList, ci, className, classValue;\r\n var validClasses = schema.getValidClasses();\r\n var validClassesMap, valid;\r\n while (i--) {\r\n node = nodes[i];\r\n classList = node.attr('class').split(' ');\r\n classValue = '';\r\n for (ci = 0; ci < classList.length; ci++) {\r\n className = classList[ci];\r\n valid = false;\r\n validClassesMap = validClasses['*'];\r\n if (validClassesMap && validClassesMap[className]) {\r\n valid = true;\r\n }\r\n validClassesMap = validClasses[node.name];\r\n if (!valid && validClassesMap && validClassesMap[className]) {\r\n valid = true;\r\n }\r\n if (valid) {\r\n if (classValue) {\r\n classValue += ' ';\r\n }\r\n classValue += className;\r\n }\r\n }\r\n if (!classValue.length) {\r\n classValue = null;\r\n }\r\n node.attr('class', classValue);\r\n }\r\n });\r\n }\r\n };\r\n\r\n var makeMap$4 = $_4ujg4tljkmcwkbk.makeMap;\r\n var each$18 = $_4ujg4tljkmcwkbk.each;\r\n var explode$3 = $_4ujg4tljkmcwkbk.explode;\r\n var extend$3 = $_4ujg4tljkmcwkbk.extend;\r\n function DomParser (settings, schema) {\r\n if (schema === void 0) {\r\n schema = Schema();\r\n }\r\n var nodeFilters = {};\r\n var attributeFilters = [];\r\n var matchedNodes = {};\r\n var matchedAttributes = {};\r\n settings = settings || {};\r\n settings.validate = 'validate' in settings ? settings.validate : true;\r\n settings.root_name = settings.root_name || 'body';\r\n var fixInvalidChildren = function (nodes) {\r\n var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;\r\n var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;\r\n nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');\r\n nonEmptyElements = schema.getNonEmptyElements();\r\n whitespaceElements = schema.getWhiteSpaceElements();\r\n textBlockElements = schema.getTextBlockElements();\r\n specialElements = schema.getSpecialElements();\r\n for (ni = 0; ni < nodes.length; ni++) {\r\n node = nodes[ni];\r\n if (!node.parent || node.fixed) {\r\n continue;\r\n }\r\n if (textBlockElements[node.name] && node.parent.name === 'li') {\r\n sibling = node.next;\r\n while (sibling) {\r\n if (textBlockElements[sibling.name]) {\r\n sibling.name = 'li';\r\n sibling.fixed = true;\r\n node.parent.insert(sibling, node.parent);\r\n } else {\r\n break;\r\n }\r\n sibling = sibling.next;\r\n }\r\n node.unwrap(node);\r\n continue;\r\n }\r\n parents = [node];\r\n for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {\r\n parents.push(parent);\r\n }\r\n if (parent && parents.length > 1) {\r\n parents.reverse();\r\n newParent = currentNode = filterNode(parents[0].clone());\r\n for (i = 0; i < parents.length - 1; i++) {\r\n if (schema.isValidChild(currentNode.name, parents[i].name)) {\r\n tempNode = filterNode(parents[i].clone());\r\n currentNode.append(tempNode);\r\n } else {\r\n tempNode = currentNode;\r\n }\r\n for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\r\n nextNode = childNode.next;\r\n tempNode.append(childNode);\r\n childNode = nextNode;\r\n }\r\n currentNode = tempNode;\r\n }\r\n if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {\r\n parent.insert(newParent, parents[0], true);\r\n parent.insert(node, newParent);\r\n } else {\r\n parent.insert(node, parents[0], true);\r\n }\r\n parent = parents[0];\r\n if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\r\n parent.empty().remove();\r\n }\r\n } else if (node.parent) {\r\n if (node.name === 'li') {\r\n sibling = node.prev;\r\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r\n sibling.append(node);\r\n continue;\r\n }\r\n sibling = node.next;\r\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r\n sibling.insert(node, sibling.firstChild, true);\r\n continue;\r\n }\r\n node.wrap(filterNode(new Node$2('ul', 1)));\r\n continue;\r\n }\r\n if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\r\n node.wrap(filterNode(new Node$2('div', 1)));\r\n } else {\r\n if (specialElements[node.name]) {\r\n node.empty().remove();\r\n } else {\r\n node.unwrap();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var filterNode = function (node) {\r\n var i, name, list;\r\n if (name in nodeFilters) {\r\n list = matchedNodes[name];\r\n if (list) {\r\n list.push(node);\r\n } else {\r\n matchedNodes[name] = [node];\r\n }\r\n }\r\n i = attributeFilters.length;\r\n while (i--) {\r\n name = attributeFilters[i].name;\r\n if (name in node.attributes.map) {\r\n list = matchedAttributes[name];\r\n if (list) {\r\n list.push(node);\r\n } else {\r\n matchedAttributes[name] = [node];\r\n }\r\n }\r\n }\r\n return node;\r\n };\r\n var addNodeFilter = function (name, callback) {\r\n each$18(explode$3(name), function (name) {\r\n var list = nodeFilters[name];\r\n if (!list) {\r\n nodeFilters[name] = list = [];\r\n }\r\n list.push(callback);\r\n });\r\n };\r\n var getNodeFilters = function () {\r\n var out = [];\r\n for (var name in nodeFilters) {\r\n if (nodeFilters.hasOwnProperty(name)) {\r\n out.push({\r\n name: name,\r\n callbacks: nodeFilters[name]\r\n });\r\n }\r\n }\r\n return out;\r\n };\r\n var addAttributeFilter = function (name, callback) {\r\n each$18(explode$3(name), function (name) {\r\n var i;\r\n for (i = 0; i < attributeFilters.length; i++) {\r\n if (attributeFilters[i].name === name) {\r\n attributeFilters[i].callbacks.push(callback);\r\n return;\r\n }\r\n }\r\n attributeFilters.push({\r\n name: name,\r\n callbacks: [callback]\r\n });\r\n });\r\n };\r\n var getAttributeFilters = function () {\r\n return [].concat(attributeFilters);\r\n };\r\n var parse = function (html, args) {\r\n var parser, nodes, i, l, fi, fl, list, name;\r\n var blockElements;\r\n var invalidChildren = [];\r\n var isInWhiteSpacePreservedElement;\r\n var node;\r\n args = args || {};\r\n matchedNodes = {};\r\n matchedAttributes = {};\r\n blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\r\n var nonEmptyElements = schema.getNonEmptyElements();\r\n var children = schema.children;\r\n var validate = settings.validate;\r\n var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;\r\n var whiteSpaceElements = schema.getWhiteSpaceElements();\r\n var startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\r\n var endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\r\n var allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\r\n var isAllWhiteSpaceRegExp = /^[ \\t\\r\\n]+$/;\r\n isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);\r\n var addRootBlocks = function () {\r\n var node = rootNode.firstChild, next, rootBlockNode;\r\n var trim = function (rootBlockNode) {\r\n if (rootBlockNode) {\r\n node = rootBlockNode.firstChild;\r\n if (node && node.type === 3) {\r\n node.value = node.value.replace(startWhiteSpaceRegExp, '');\r\n }\r\n node = rootBlockNode.lastChild;\r\n if (node && node.type === 3) {\r\n node.value = node.value.replace(endWhiteSpaceRegExp, '');\r\n }\r\n }\r\n };\r\n if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\r\n return;\r\n }\r\n while (node) {\r\n next = node.next;\r\n if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {\r\n if (!rootBlockNode) {\r\n rootBlockNode = createNode(rootBlockName, 1);\r\n rootBlockNode.attr(settings.forced_root_block_attrs);\r\n rootNode.insert(rootBlockNode, node);\r\n rootBlockNode.append(node);\r\n } else {\r\n rootBlockNode.append(node);\r\n }\r\n } else {\r\n trim(rootBlockNode);\r\n rootBlockNode = null;\r\n }\r\n node = next;\r\n }\r\n trim(rootBlockNode);\r\n };\r\n var createNode = function (name, type) {\r\n var node = new Node$2(name, type);\r\n var list;\r\n if (name in nodeFilters) {\r\n list = matchedNodes[name];\r\n if (list) {\r\n list.push(node);\r\n } else {\r\n matchedNodes[name] = [node];\r\n }\r\n }\r\n return node;\r\n };\r\n var removeWhitespaceBefore = function (node) {\r\n var textNode, textNodeNext, textVal, sibling;\r\n var blockElements = schema.getBlockElements();\r\n for (textNode = node.prev; textNode && textNode.type === 3;) {\r\n textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\r\n if (textVal.length > 0) {\r\n textNode.value = textVal;\r\n return;\r\n }\r\n textNodeNext = textNode.next;\r\n if (textNodeNext) {\r\n if (textNodeNext.type === 3 && textNodeNext.value.length) {\r\n textNode = textNode.prev;\r\n continue;\r\n }\r\n if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {\r\n textNode = textNode.prev;\r\n continue;\r\n }\r\n }\r\n sibling = textNode.prev;\r\n textNode.remove();\r\n textNode = sibling;\r\n }\r\n };\r\n var cloneAndExcludeBlocks = function (input) {\r\n var name;\r\n var output = {};\r\n for (name in input) {\r\n if (name !== 'li' && name !== 'p') {\r\n output[name] = input[name];\r\n }\r\n }\r\n return output;\r\n };\r\n parser = SaxParser$1({\r\n validate: validate,\r\n allow_script_urls: settings.allow_script_urls,\r\n allow_conditional_comments: settings.allow_conditional_comments,\r\n self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\r\n cdata: function (text) {\r\n node.append(createNode('#cdata', 4)).value = text;\r\n },\r\n text: function (text, raw) {\r\n var textNode;\r\n if (!isInWhiteSpacePreservedElement) {\r\n text = text.replace(allWhiteSpaceRegExp, ' ');\r\n if (isLineBreakNode(node.lastChild, blockElements)) {\r\n text = text.replace(startWhiteSpaceRegExp, '');\r\n }\r\n }\r\n if (text.length !== 0) {\r\n textNode = createNode('#text', 3);\r\n textNode.raw = !!raw;\r\n node.append(textNode).value = text;\r\n }\r\n },\r\n comment: function (text) {\r\n node.append(createNode('#comment', 8)).value = text;\r\n },\r\n pi: function (name, text) {\r\n node.append(createNode(name, 7)).value = text;\r\n removeWhitespaceBefore(node);\r\n },\r\n doctype: function (text) {\r\n var newNode;\r\n newNode = node.append(createNode('#doctype', 10));\r\n newNode.value = text;\r\n removeWhitespaceBefore(node);\r\n },\r\n start: function (name, attrs, empty) {\r\n var newNode, attrFiltersLen, elementRule, attrName, parent;\r\n elementRule = validate ? schema.getElementRule(name) : {};\r\n if (elementRule) {\r\n newNode = createNode(elementRule.outputName || name, 1);\r\n newNode.attributes = attrs;\r\n newNode.shortEnded = empty;\r\n node.append(newNode);\r\n parent = children[node.name];\r\n if (parent && children[newNode.name] && !parent[newNode.name]) {\r\n invalidChildren.push(newNode);\r\n }\r\n attrFiltersLen = attributeFilters.length;\r\n while (attrFiltersLen--) {\r\n attrName = attributeFilters[attrFiltersLen].name;\r\n if (attrName in attrs.map) {\r\n list = matchedAttributes[attrName];\r\n if (list) {\r\n list.push(newNode);\r\n } else {\r\n matchedAttributes[attrName] = [newNode];\r\n }\r\n }\r\n }\r\n if (blockElements[name]) {\r\n removeWhitespaceBefore(newNode);\r\n }\r\n if (!empty) {\r\n node = newNode;\r\n }\r\n if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\r\n isInWhiteSpacePreservedElement = true;\r\n }\r\n }\r\n },\r\n end: function (name) {\r\n var textNode, elementRule, text, sibling, tempNode;\r\n elementRule = validate ? schema.getElementRule(name) : {};\r\n if (elementRule) {\r\n if (blockElements[name]) {\r\n if (!isInWhiteSpacePreservedElement) {\r\n textNode = node.firstChild;\r\n if (textNode && textNode.type === 3) {\r\n text = textNode.value.replace(startWhiteSpaceRegExp, '');\r\n if (text.length > 0) {\r\n textNode.value = text;\r\n textNode = textNode.next;\r\n } else {\r\n sibling = textNode.next;\r\n textNode.remove();\r\n textNode = sibling;\r\n while (textNode && textNode.type === 3) {\r\n text = textNode.value;\r\n sibling = textNode.next;\r\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\r\n textNode.remove();\r\n textNode = sibling;\r\n }\r\n textNode = sibling;\r\n }\r\n }\r\n }\r\n textNode = node.lastChild;\r\n if (textNode && textNode.type === 3) {\r\n text = textNode.value.replace(endWhiteSpaceRegExp, '');\r\n if (text.length > 0) {\r\n textNode.value = text;\r\n textNode = textNode.prev;\r\n } else {\r\n sibling = textNode.prev;\r\n textNode.remove();\r\n textNode = sibling;\r\n while (textNode && textNode.type === 3) {\r\n text = textNode.value;\r\n sibling = textNode.prev;\r\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\r\n textNode.remove();\r\n textNode = sibling;\r\n }\r\n textNode = sibling;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\r\n isInWhiteSpacePreservedElement = false;\r\n }\r\n if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {\r\n if (!node.attributes.map.name && !node.attr('id')) {\r\n tempNode = node.parent;\r\n if (blockElements[node.name]) {\r\n node.empty().remove();\r\n } else {\r\n node.unwrap();\r\n }\r\n node = tempNode;\r\n return;\r\n }\r\n }\r\n if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {\r\n paddEmptyNode(settings, args, blockElements, node);\r\n }\r\n node = node.parent;\r\n }\r\n }\r\n }, schema);\r\n var rootNode = node = new Node$2(args.context || settings.root_name, 11);\r\n parser.parse(html);\r\n if (validate && invalidChildren.length) {\r\n if (!args.context) {\r\n fixInvalidChildren(invalidChildren);\r\n } else {\r\n args.invalid = true;\r\n }\r\n }\r\n if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\r\n addRootBlocks();\r\n }\r\n if (!args.invalid) {\r\n for (name in matchedNodes) {\r\n list = nodeFilters[name];\r\n nodes = matchedNodes[name];\r\n fi = nodes.length;\r\n while (fi--) {\r\n if (!nodes[fi].parent) {\r\n nodes.splice(fi, 1);\r\n }\r\n }\r\n for (i = 0, l = list.length; i < l; i++) {\r\n list[i](nodes, name, args);\r\n }\r\n }\r\n for (i = 0, l = attributeFilters.length; i < l; i++) {\r\n list = attributeFilters[i];\r\n if (list.name in matchedAttributes) {\r\n nodes = matchedAttributes[list.name];\r\n fi = nodes.length;\r\n while (fi--) {\r\n if (!nodes[fi].parent) {\r\n nodes.splice(fi, 1);\r\n }\r\n }\r\n for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {\r\n list.callbacks[fi](nodes, list.name, args);\r\n }\r\n }\r\n }\r\n }\r\n return rootNode;\r\n };\r\n var exports = {\r\n schema: schema,\r\n addAttributeFilter: addAttributeFilter,\r\n getAttributeFilters: getAttributeFilters,\r\n addNodeFilter: addNodeFilter,\r\n getNodeFilters: getNodeFilters,\r\n filterNode: filterNode,\r\n parse: parse\r\n };\r\n register$2(exports, settings);\r\n $_2klegh6pjkmcwllk.register(exports, settings);\r\n return exports;\r\n }\r\n\r\n var addTempAttr = function (htmlParser, tempAttrs, name) {\r\n if ($_4ujg4tljkmcwkbk.inArray(tempAttrs, name) === -1) {\r\n htmlParser.addAttributeFilter(name, function (nodes, name) {\r\n var i = nodes.length;\r\n while (i--) {\r\n nodes[i].attr(name, null);\r\n }\r\n });\r\n tempAttrs.push(name);\r\n }\r\n };\r\n var postProcess$1 = function (editor, args, content) {\r\n if (!args.no_events && editor) {\r\n var outArgs = $_q3ric4tjkmcwl9q.firePostProcess(editor, merge(args, { content: content }));\r\n return outArgs.content;\r\n } else {\r\n return content;\r\n }\r\n };\r\n var getHtmlFromNode = function (dom, node, args) {\r\n var html = $_cadvcr2pjkmcwkph.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\r\n return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : $_4ujg4tljkmcwkbk.trim(html);\r\n };\r\n var parseHtml = function (htmlParser, html, args) {\r\n var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;\r\n var rootNode = htmlParser.parse(html, parserArgs);\r\n $_ft0zjh6mjkmcwlkr.trimTrailingBr(rootNode);\r\n return rootNode;\r\n };\r\n var serializeNode = function (settings, schema, node) {\r\n var htmlSerializer = HtmlSerializer(settings, schema);\r\n return htmlSerializer.serialize(node);\r\n };\r\n var toHtml = function (editor, settings, schema, rootNode, args) {\r\n var content = serializeNode(settings, schema, rootNode);\r\n return postProcess$1(editor, args, content);\r\n };\r\n function DomSerializer (settings, editor) {\r\n var dom, schema, htmlParser;\r\n var tempAttrs = ['data-mce-selected'];\r\n dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;\r\n schema = editor && editor.schema ? editor.schema : Schema(settings);\r\n settings.entity_encoding = settings.entity_encoding || 'named';\r\n settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;\r\n htmlParser = DomParser(settings, schema);\r\n $_ft0zjh6mjkmcwlkr.register(htmlParser, settings, dom);\r\n var serialize = function (node, parserArgs) {\r\n var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\r\n var targetNode = $_27apc6njkmcwll3.process(editor, node, args);\r\n var html = getHtmlFromNode(dom, targetNode, args);\r\n var rootNode = parseHtml(htmlParser, html, args);\r\n return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);\r\n };\r\n return {\r\n schema: schema,\r\n addNodeFilter: htmlParser.addNodeFilter,\r\n addAttributeFilter: htmlParser.addAttributeFilter,\r\n serialize: serialize,\r\n addRules: function (rules) {\r\n schema.addValidElements(rules);\r\n },\r\n setRules: function (rules) {\r\n schema.setValidElements(rules);\r\n },\r\n addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\r\n getTempAttrs: function () {\r\n return tempAttrs;\r\n }\r\n };\r\n }\r\n\r\n function DomSerializer$1 (settings, editor) {\r\n var domSerializer = DomSerializer(settings, editor);\r\n return {\r\n schema: domSerializer.schema,\r\n addNodeFilter: domSerializer.addNodeFilter,\r\n addAttributeFilter: domSerializer.addAttributeFilter,\r\n serialize: domSerializer.serialize,\r\n addRules: domSerializer.addRules,\r\n setRules: domSerializer.setRules,\r\n addTempAttr: domSerializer.addTempAttr,\r\n getTempAttrs: domSerializer.getTempAttrs\r\n };\r\n }\r\n\r\n function BookmarkManager(selection) {\r\n return {\r\n getBookmark: curry($_e4btcc2vjkmcwkq3.getBookmark, selection),\r\n moveToBookmark: curry($_e4btcc2vjkmcwkq3.moveToBookmark, selection)\r\n };\r\n }\r\n (function (BookmarkManager) {\r\n BookmarkManager.isBookmarkNode = $_e4btcc2vjkmcwkq3.isBookmarkNode;\r\n }(BookmarkManager || (BookmarkManager = {})));\r\n var BookmarkManager$1 = BookmarkManager;\r\n\r\n var isContentEditableFalse$10 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var isContentEditableTrue$6 = $_bjermr1rjkmcwkij.isContentEditableTrue;\r\n var getContentEditableRoot$2 = function (root, node) {\r\n while (node && node !== root) {\r\n if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var ControlSelection = function (selection, editor) {\r\n var dom = editor.dom, each = $_4ujg4tljkmcwkbk.each;\r\n var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;\r\n var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\r\n var width, height;\r\n var editableDoc = editor.getDoc(), rootDocument = document;\r\n var abs = Math.abs, round = Math.round, rootElement = editor.getBody();\r\n var startScrollWidth, startScrollHeight;\r\n resizeHandles = {\r\n nw: [\r\n 0,\r\n 0,\r\n -1,\r\n -1\r\n ],\r\n ne: [\r\n 1,\r\n 0,\r\n 1,\r\n -1\r\n ],\r\n se: [\r\n 1,\r\n 1,\r\n 1,\r\n 1\r\n ],\r\n sw: [\r\n 0,\r\n 1,\r\n -1,\r\n 1\r\n ]\r\n };\r\n var rootClass = '.mce-content-body';\r\n editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_cvvl9iajkmcwk25.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}');\r\n var isImage = function (elm) {\r\n return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));\r\n };\r\n var isEventOnImageOutsideRange = function (evt, range) {\r\n return isImage(evt.target) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(evt.clientX, evt.clientY, range);\r\n };\r\n var contextMenuSelectImage = function (evt) {\r\n var target = evt.target;\r\n if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\r\n evt.preventDefault();\r\n editor.selection.select(target);\r\n }\r\n };\r\n var getResizeTarget = function (elm) {\r\n return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;\r\n };\r\n var isResizable = function (elm) {\r\n var selector = editor.settings.object_resizing;\r\n if (selector === false || $_cvvl9iajkmcwk25.iOS) {\r\n return false;\r\n }\r\n if (typeof selector !== 'string') {\r\n selector = 'table,img,figure.image,div';\r\n }\r\n if (elm.getAttribute('data-mce-resize') === 'false') {\r\n return false;\r\n }\r\n if (elm === editor.getBody()) {\r\n return false;\r\n }\r\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\r\n };\r\n var resizeGhostElement = function (e) {\r\n var deltaX, deltaY, proportional;\r\n var resizeHelperX, resizeHelperY;\r\n deltaX = e.screenX - startX;\r\n deltaY = e.screenY - startY;\r\n width = deltaX * selectedHandle[2] + startW;\r\n height = deltaY * selectedHandle[3] + startH;\r\n width = width < 5 ? 5 : width;\r\n height = height < 5 ? 5 : height;\r\n if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {\r\n proportional = !$_6bj5795wjkmcwlg6.modifierPressed(e);\r\n } else {\r\n proportional = $_6bj5795wjkmcwlg6.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;\r\n }\r\n if (proportional) {\r\n if (abs(deltaX) > abs(deltaY)) {\r\n height = round(width * ratio);\r\n width = round(height / ratio);\r\n } else {\r\n width = round(height / ratio);\r\n height = round(width * ratio);\r\n }\r\n }\r\n dom.setStyles(getResizeTarget(selectedElmGhost), {\r\n width: width,\r\n height: height\r\n });\r\n resizeHelperX = selectedHandle.startPos.x + deltaX;\r\n resizeHelperY = selectedHandle.startPos.y + deltaY;\r\n resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\r\n resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\r\n dom.setStyles(resizeHelper, {\r\n left: resizeHelperX,\r\n top: resizeHelperY,\r\n display: 'block'\r\n });\r\n resizeHelper.innerHTML = width + ' × ' + height;\r\n if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\r\n dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\r\n }\r\n if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\r\n dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\r\n }\r\n deltaX = rootElement.scrollWidth - startScrollWidth;\r\n deltaY = rootElement.scrollHeight - startScrollHeight;\r\n if (deltaX + deltaY !== 0) {\r\n dom.setStyles(resizeHelper, {\r\n left: resizeHelperX - deltaX,\r\n top: resizeHelperY - deltaY\r\n });\r\n }\r\n if (!resizeStarted) {\r\n $_q3ric4tjkmcwl9q.fireObjectResizeStart(editor, selectedElm, startW, startH);\r\n resizeStarted = true;\r\n }\r\n };\r\n var endGhostResize = function () {\r\n resizeStarted = false;\r\n var setSizeProp = function (name$$1, value) {\r\n if (value) {\r\n if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {\r\n dom.setStyle(getResizeTarget(selectedElm), name$$1, value);\r\n } else {\r\n dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);\r\n }\r\n }\r\n };\r\n setSizeProp('width', width);\r\n setSizeProp('height', height);\r\n dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\r\n dom.unbind(editableDoc, 'mouseup', endGhostResize);\r\n if (rootDocument !== editableDoc) {\r\n dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\r\n dom.unbind(rootDocument, 'mouseup', endGhostResize);\r\n }\r\n dom.remove(selectedElmGhost);\r\n dom.remove(resizeHelper);\r\n showResizeRect(selectedElm);\r\n $_q3ric4tjkmcwl9q.fireObjectResized(editor, selectedElm, width, height);\r\n dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\r\n editor.nodeChanged();\r\n };\r\n var showResizeRect = function (targetElm) {\r\n var position, targetWidth, targetHeight, e, rect;\r\n hideResizeRect();\r\n unbindResizeHandleEvents();\r\n position = dom.getPos(targetElm, rootElement);\r\n selectedElmX = position.x;\r\n selectedElmY = position.y;\r\n rect = targetElm.getBoundingClientRect();\r\n targetWidth = rect.width || rect.right - rect.left;\r\n targetHeight = rect.height || rect.bottom - rect.top;\r\n if (selectedElm !== targetElm) {\r\n selectedElm = targetElm;\r\n width = height = 0;\r\n }\r\n e = editor.fire('ObjectSelected', { target: targetElm });\r\n if (isResizable(targetElm) && !e.isDefaultPrevented()) {\r\n each(resizeHandles, function (handle, name$$1) {\r\n var handleElm;\r\n var startDrag = function (e) {\r\n startX = e.screenX;\r\n startY = e.screenY;\r\n startW = getResizeTarget(selectedElm).clientWidth;\r\n startH = getResizeTarget(selectedElm).clientHeight;\r\n ratio = startH / startW;\r\n selectedHandle = handle;\r\n handle.startPos = {\r\n x: targetWidth * handle[0] + selectedElmX,\r\n y: targetHeight * handle[1] + selectedElmY\r\n };\r\n startScrollWidth = rootElement.scrollWidth;\r\n startScrollHeight = rootElement.scrollHeight;\r\n selectedElmGhost = selectedElm.cloneNode(true);\r\n dom.addClass(selectedElmGhost, 'mce-clonedresizable');\r\n dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\r\n selectedElmGhost.contentEditable = false;\r\n selectedElmGhost.unSelectabe = true;\r\n dom.setStyles(selectedElmGhost, {\r\n left: selectedElmX,\r\n top: selectedElmY,\r\n margin: 0\r\n });\r\n selectedElmGhost.removeAttribute('data-mce-selected');\r\n rootElement.appendChild(selectedElmGhost);\r\n dom.bind(editableDoc, 'mousemove', resizeGhostElement);\r\n dom.bind(editableDoc, 'mouseup', endGhostResize);\r\n if (rootDocument !== editableDoc) {\r\n dom.bind(rootDocument, 'mousemove', resizeGhostElement);\r\n dom.bind(rootDocument, 'mouseup', endGhostResize);\r\n }\r\n resizeHelper = dom.add(rootElement, 'div', {\r\n 'class': 'mce-resize-helper',\r\n 'data-mce-bogus': 'all'\r\n }, startW + ' × ' + startH);\r\n };\r\n handleElm = dom.get('mceResizeHandle' + name$$1);\r\n if (handleElm) {\r\n dom.remove(handleElm);\r\n }\r\n handleElm = dom.add(rootElement, 'div', {\r\n 'id': 'mceResizeHandle' + name$$1,\r\n 'data-mce-bogus': 'all',\r\n 'class': 'mce-resizehandle',\r\n 'unselectable': true,\r\n 'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'\r\n });\r\n if ($_cvvl9iajkmcwk25.ie === 11) {\r\n handleElm.contentEditable = false;\r\n }\r\n dom.bind(handleElm, 'mousedown', function (e) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n startDrag(e);\r\n });\r\n handle.elm = handleElm;\r\n dom.setStyles(handleElm, {\r\n left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\r\n top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\r\n });\r\n });\r\n } else {\r\n hideResizeRect();\r\n }\r\n selectedElm.setAttribute('data-mce-selected', '1');\r\n };\r\n var hideResizeRect = function () {\r\n var name$$1, handleElm;\r\n unbindResizeHandleEvents();\r\n if (selectedElm) {\r\n selectedElm.removeAttribute('data-mce-selected');\r\n }\r\n for (name$$1 in resizeHandles) {\r\n handleElm = dom.get('mceResizeHandle' + name$$1);\r\n if (handleElm) {\r\n dom.unbind(handleElm);\r\n dom.remove(handleElm);\r\n }\r\n }\r\n };\r\n var updateResizeRect = function (e) {\r\n var startElm, controlElm;\r\n var isChildOrEqual = function (node, parent$$1) {\r\n if (node) {\r\n do {\r\n if (node === parent$$1) {\r\n return true;\r\n }\r\n } while (node = node.parentNode);\r\n }\r\n };\r\n if (resizeStarted || editor.removed) {\r\n return;\r\n }\r\n each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {\r\n img.removeAttribute('data-mce-selected');\r\n });\r\n controlElm = e.type === 'mousedown' ? e.target : selection.getNode();\r\n controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];\r\n if (isChildOrEqual(controlElm, rootElement)) {\r\n disableGeckoResize();\r\n startElm = selection.getStart(true);\r\n if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\r\n showResizeRect(controlElm);\r\n return;\r\n }\r\n }\r\n hideResizeRect();\r\n };\r\n var isWithinContentEditableFalse = function (elm) {\r\n return isContentEditableFalse$10(getContentEditableRoot$2(editor.getBody(), elm));\r\n };\r\n var unbindResizeHandleEvents = function () {\r\n for (var name$$1 in resizeHandles) {\r\n var handle = resizeHandles[name$$1];\r\n if (handle.elm) {\r\n dom.unbind(handle.elm);\r\n delete handle.elm;\r\n }\r\n }\r\n };\r\n var disableGeckoResize = function () {\r\n try {\r\n editor.getDoc().execCommand('enableObjectResizing', false, false);\r\n } catch (ex) {\r\n }\r\n };\r\n editor.on('init', function () {\r\n disableGeckoResize();\r\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie >= 11) {\r\n editor.on('mousedown click', function (e) {\r\n var target = e.target, nodeName = target.nodeName;\r\n if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {\r\n if (e.button !== 2) {\r\n editor.selection.select(target, nodeName === 'TABLE');\r\n }\r\n if (e.type === 'mousedown') {\r\n editor.nodeChanged();\r\n }\r\n }\r\n });\r\n editor.dom.bind(rootElement, 'mscontrolselect', function (e) {\r\n var delayedSelect = function (node) {\r\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\r\n editor.selection.select(node);\r\n });\r\n };\r\n if (isWithinContentEditableFalse(e.target)) {\r\n e.preventDefault();\r\n delayedSelect(e.target);\r\n return;\r\n }\r\n if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {\r\n e.preventDefault();\r\n if (e.target.tagName === 'IMG') {\r\n delayedSelect(e.target);\r\n }\r\n }\r\n });\r\n }\r\n var throttledUpdateResizeRect = $_3l01gcijkmcwk99.throttle(function (e) {\r\n if (!editor.composing) {\r\n updateResizeRect(e);\r\n }\r\n });\r\n editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);\r\n editor.on('keyup compositionend', function (e) {\r\n if (selectedElm && selectedElm.nodeName === 'TABLE') {\r\n throttledUpdateResizeRect(e);\r\n }\r\n });\r\n editor.on('hide blur', hideResizeRect);\r\n editor.on('contextmenu', contextMenuSelectImage);\r\n });\r\n editor.on('remove', unbindResizeHandleEvents);\r\n var destroy = function () {\r\n selectedElm = selectedElmGhost = null;\r\n };\r\n return {\r\n isResizable: isResizable,\r\n showResizeRect: showResizeRect,\r\n hideResizeRect: hideResizeRect,\r\n updateResizeRect: updateResizeRect,\r\n destroy: destroy\r\n };\r\n };\r\n\r\n var hasCeProperty = function (node) {\r\n return $_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node);\r\n };\r\n var findParent$1 = function (node, rootNode, predicate) {\r\n while (node && node !== rootNode) {\r\n if (predicate(node)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var findClosestIeRange = function (clientX, clientY, doc) {\r\n var element, rng, rects;\r\n element = doc.elementFromPoint(clientX, clientY);\r\n rng = doc.body.createTextRange();\r\n if (!element || element.tagName === 'HTML') {\r\n element = doc.body;\r\n }\r\n rng.moveToElementText(element);\r\n rects = $_4ujg4tljkmcwkbk.toArray(rng.getClientRects());\r\n rects = rects.sort(function (a, b) {\r\n a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));\r\n b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));\r\n return a - b;\r\n });\r\n if (rects.length > 0) {\r\n clientY = (rects[0].bottom + rects[0].top) / 2;\r\n try {\r\n rng.moveToPoint(clientX, clientY);\r\n rng.collapse(true);\r\n return rng;\r\n } catch (ex) {\r\n }\r\n }\r\n return null;\r\n };\r\n var moveOutOfContentEditableFalse = function (rng, rootNode) {\r\n var parentElement = rng && rng.parentElement ? rng.parentElement() : null;\r\n return $_bjermr1rjkmcwkij.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng;\r\n };\r\n var fromPoint$1 = function (clientX, clientY, doc) {\r\n var rng, point;\r\n var pointDoc = doc;\r\n if (pointDoc.caretPositionFromPoint) {\r\n point = pointDoc.caretPositionFromPoint(clientX, clientY);\r\n if (point) {\r\n rng = doc.createRange();\r\n rng.setStart(point.offsetNode, point.offset);\r\n rng.collapse(true);\r\n }\r\n } else if (doc.caretRangeFromPoint) {\r\n rng = doc.caretRangeFromPoint(clientX, clientY);\r\n } else if (pointDoc.body.createTextRange) {\r\n rng = pointDoc.body.createTextRange();\r\n try {\r\n rng.moveToPoint(clientX, clientY);\r\n rng.collapse(true);\r\n } catch (ex) {\r\n rng = findClosestIeRange(clientX, clientY, doc);\r\n }\r\n return moveOutOfContentEditableFalse(rng, doc.body);\r\n }\r\n return rng;\r\n };\r\n var $_52q21w6wjkmcwlna = { fromPoint: fromPoint$1 };\r\n\r\n var processRanges = function (editor, ranges) {\r\n return map(ranges, function (range$$1) {\r\n var evt = editor.fire('GetSelectionRange', { range: range$$1 });\r\n return evt.range !== range$$1 ? evt.range : range$$1;\r\n });\r\n };\r\n var $_8161126xjkmcwlnd = { processRanges: processRanges };\r\n\r\n var fromElements = function (elements, scope) {\r\n var doc = scope || document;\r\n var fragment = doc.createDocumentFragment();\r\n each(elements, function (element) {\r\n fragment.appendChild(element.dom());\r\n });\r\n return Element$$1.fromDom(fragment);\r\n };\r\n var $_a3l7fy70jkmcwloa = { fromElements: fromElements };\r\n\r\n var tableModel = Immutable('element', 'width', 'rows');\r\n var tableRow = Immutable('element', 'cells');\r\n var cellPosition = Immutable('x', 'y');\r\n var getSpan = function (td, key) {\r\n var value = parseInt($_29helg15jkmcwkf0.get(td, key), 10);\r\n return isNaN(value) ? 1 : value;\r\n };\r\n var fillout = function (table, x, y, tr, td) {\r\n var rowspan = getSpan(td, 'rowspan');\r\n var colspan = getSpan(td, 'colspan');\r\n var rows = table.rows();\r\n for (var y2 = y; y2 < y + rowspan; y2++) {\r\n if (!rows[y2]) {\r\n rows[y2] = tableRow($_44uvy22ijkmcwko5.deep(tr), []);\r\n }\r\n for (var x2 = x; x2 < x + colspan; x2++) {\r\n var cells = rows[y2].cells();\r\n cells[x2] = y2 === y && x2 === x ? td : $_44uvy22ijkmcwko5.shallow(td);\r\n }\r\n }\r\n };\r\n var cellExists = function (table, x, y) {\r\n var rows = table.rows();\r\n var cells = rows[y] ? rows[y].cells() : [];\r\n return !!cells[x];\r\n };\r\n var skipCellsX = function (table, x, y) {\r\n while (cellExists(table, x, y)) {\r\n x++;\r\n }\r\n return x;\r\n };\r\n var getWidth = function (rows) {\r\n return foldl(rows, function (acc, row) {\r\n return row.cells().length > acc ? row.cells().length : acc;\r\n }, 0);\r\n };\r\n var findElementPos = function (table, element) {\r\n var rows = table.rows();\r\n for (var y = 0; y < rows.length; y++) {\r\n var cells = rows[y].cells();\r\n for (var x = 0; x < cells.length; x++) {\r\n if ($_e4hu6h1ejkmcwkgj.eq(cells[x], element)) {\r\n return Option.some(cellPosition(x, y));\r\n }\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var extractRows = function (table, sx, sy, ex, ey) {\r\n var newRows = [];\r\n var rows = table.rows();\r\n for (var y = sy; y <= ey; y++) {\r\n var cells = rows[y].cells();\r\n var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\r\n newRows.push(tableRow(rows[y].element(), slice));\r\n }\r\n return newRows;\r\n };\r\n var subTable = function (table, startPos, endPos) {\r\n var sx = startPos.x(), sy = startPos.y();\r\n var ex = endPos.x(), ey = endPos.y();\r\n var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\r\n return tableModel(table.element(), getWidth(newRows), newRows);\r\n };\r\n var createDomTable = function (table, rows) {\r\n var tableElement = $_44uvy22ijkmcwko5.shallow(table.element());\r\n var tableBody = Element$$1.fromTag('tbody');\r\n $_1ev7t1xjkmcwkky.append(tableBody, rows);\r\n $_f4qt4v1yjkmcwkl2.append(tableElement, tableBody);\r\n return tableElement;\r\n };\r\n var modelRowsToDomRows = function (table) {\r\n return map(table.rows(), function (row) {\r\n var cells = map(row.cells(), function (cell) {\r\n var td = $_44uvy22ijkmcwko5.deep(cell);\r\n $_29helg15jkmcwkf0.remove(td, 'colspan');\r\n $_29helg15jkmcwkf0.remove(td, 'rowspan');\r\n return td;\r\n });\r\n var tr = $_44uvy22ijkmcwko5.shallow(row.element());\r\n $_1ev7t1xjkmcwkky.append(tr, cells);\r\n return tr;\r\n });\r\n };\r\n var fromDom$2 = function (tableElm) {\r\n var table = tableModel($_44uvy22ijkmcwko5.shallow(tableElm), 0, []);\r\n each($_2gqm0n27jkmcwkmi.descendants(tableElm, 'tr'), function (tr, y) {\r\n each($_2gqm0n27jkmcwkmi.descendants(tr, 'td,th'), function (td, x) {\r\n fillout(table, skipCellsX(table, x, y), y, tr, td);\r\n });\r\n });\r\n return tableModel(table.element(), getWidth(table.rows()), table.rows());\r\n };\r\n var toDom = function (table) {\r\n return createDomTable(table, modelRowsToDomRows(table));\r\n };\r\n var subsection = function (table, startElement, endElement) {\r\n return findElementPos(table, startElement).bind(function (startPos) {\r\n return findElementPos(table, endElement).map(function (endPos) {\r\n return subTable(table, startPos, endPos);\r\n });\r\n });\r\n };\r\n var $_6wuzo771jkmcwlof = {\r\n fromDom: fromDom$2,\r\n toDom: toDom,\r\n subsection: subsection\r\n };\r\n\r\n var findParentListContainer = function (parents) {\r\n return find(parents, function (elm) {\r\n return $_2xwdjv11jkmcwke0.name(elm) === 'ul' || $_2xwdjv11jkmcwke0.name(elm) === 'ol';\r\n });\r\n };\r\n var getFullySelectedListWrappers = function (parents, rng) {\r\n return find(parents, function (elm) {\r\n return $_2xwdjv11jkmcwke0.name(elm) === 'li' && hasAllContentsSelected(elm, rng);\r\n }).fold(constant([]), function (li) {\r\n return findParentListContainer(parents).map(function (listCont) {\r\n return [\r\n Element$$1.fromTag('li'),\r\n Element$$1.fromTag($_2xwdjv11jkmcwke0.name(listCont))\r\n ];\r\n }).getOr([]);\r\n });\r\n };\r\n var wrap$3 = function (innerElm, elms) {\r\n var wrapped = foldl(elms, function (acc, elm) {\r\n $_f4qt4v1yjkmcwkl2.append(elm, acc);\r\n return elm;\r\n }, innerElm);\r\n return elms.length > 0 ? $_a3l7fy70jkmcwloa.fromElements([wrapped]) : wrapped;\r\n };\r\n var directListWrappers = function (commonAnchorContainer) {\r\n if (isListItem(commonAnchorContainer)) {\r\n return $_ca6pc118jkmcwkfs.parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {\r\n return [\r\n commonAnchorContainer,\r\n listElm\r\n ];\r\n });\r\n } else {\r\n return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\r\n }\r\n };\r\n var getWrapElements = function (rootNode, rng) {\r\n var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);\r\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(commonAnchorContainer, rootNode);\r\n var wrapElements = filter(parents, function (elm) {\r\n return isInline(elm) || isHeading(elm);\r\n });\r\n var listWrappers = getFullySelectedListWrappers(parents, rng);\r\n var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\r\n return map(allWrappers, $_44uvy22ijkmcwko5.shallow);\r\n };\r\n var emptyFragment = function () {\r\n return $_a3l7fy70jkmcwloa.fromElements([]);\r\n };\r\n var getFragmentFromRange = function (rootNode, rng) {\r\n return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));\r\n };\r\n var getParentTable = function (rootElm, cell) {\r\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', curry($_e4hu6h1ejkmcwkgj.eq, rootElm));\r\n };\r\n var getTableFragment = function (rootNode, selectedTableCells) {\r\n return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {\r\n var firstCell = selectedTableCells[0];\r\n var lastCell = selectedTableCells[selectedTableCells.length - 1];\r\n var fullTableModel = $_6wuzo771jkmcwlof.fromDom(tableElm);\r\n return $_6wuzo771jkmcwlof.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\r\n return $_a3l7fy70jkmcwloa.fromElements([$_6wuzo771jkmcwlof.toDom(sectionedTableModel)]);\r\n });\r\n }).getOrThunk(emptyFragment);\r\n };\r\n var getSelectionFragment = function (rootNode, ranges) {\r\n return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);\r\n };\r\n var read$4 = function (rootNode, ranges) {\r\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromElementOrRanges(ranges, rootNode);\r\n return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\r\n };\r\n var $_2bm266zjkmcwlnj = { read: read$4 };\r\n\r\n var getContent = function (editor, args) {\r\n var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\r\n var sel = editor.selection.getSel();\r\n var fragment;\r\n var ranges = $_8161126xjkmcwlnd.processRanges(editor, $_admly54fjkmcwl6u.getRanges(sel));\r\n args = args || {};\r\n args.get = true;\r\n args.format = args.format || 'html';\r\n args.selection = true;\r\n args = editor.fire('BeforeGetContent', args);\r\n if (args.isDefaultPrevented()) {\r\n editor.fire('GetContent', args);\r\n return args.content;\r\n }\r\n if (args.format === 'text') {\r\n return editor.selection.isCollapsed() ? '' : $_cadvcr2pjkmcwkph.trim(rng.text || (sel.toString ? sel.toString() : ''));\r\n }\r\n if (rng.cloneContents) {\r\n fragment = args.contextual ? $_2bm266zjkmcwlnj.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\r\n if (fragment) {\r\n tmpElm.appendChild(fragment);\r\n }\r\n } else if (rng.item !== undefined || rng.htmlText !== undefined) {\r\n tmpElm.innerHTML = '
' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);\r\n tmpElm.removeChild(tmpElm.firstChild);\r\n } else {\r\n tmpElm.innerHTML = rng.toString();\r\n }\r\n args.getInner = true;\r\n var content = editor.selection.serializer.serialize(tmpElm, args);\r\n if (args.format === 'tree') {\r\n return content;\r\n }\r\n args.content = editor.selection.isCollapsed() ? '' : content;\r\n editor.fire('GetContent', args);\r\n return args.content;\r\n };\r\n var $_eu7sms6yjkmcwlnf = { getContent: getContent };\r\n\r\n var setContent = function (editor, content, args) {\r\n var rng = editor.selection.getRng(), caretNode;\r\n var doc = editor.getDoc();\r\n var frag, temp;\r\n args = args || { format: 'html' };\r\n args.set = true;\r\n args.selection = true;\r\n args.content = content;\r\n if (!args.no_events) {\r\n args = editor.fire('BeforeSetContent', args);\r\n if (args.isDefaultPrevented()) {\r\n editor.fire('SetContent', args);\r\n return;\r\n }\r\n }\r\n content = args.content;\r\n if (rng.insertNode) {\r\n content += '_';\r\n if (rng.startContainer === doc && rng.endContainer === doc) {\r\n doc.body.innerHTML = content;\r\n } else {\r\n rng.deleteContents();\r\n if (doc.body.childNodes.length === 0) {\r\n doc.body.innerHTML = content;\r\n } else {\r\n if (rng.createContextualFragment) {\r\n rng.insertNode(rng.createContextualFragment(content));\r\n } else {\r\n frag = doc.createDocumentFragment();\r\n temp = doc.createElement('div');\r\n frag.appendChild(temp);\r\n temp.outerHTML = content;\r\n rng.insertNode(frag);\r\n }\r\n }\r\n }\r\n caretNode = editor.dom.get('__caret');\r\n rng = doc.createRange();\r\n rng.setStartBefore(caretNode);\r\n rng.setEndBefore(caretNode);\r\n editor.selection.setRng(rng);\r\n editor.dom.remove('__caret');\r\n try {\r\n editor.selection.setRng(rng);\r\n } catch (ex) {\r\n }\r\n } else {\r\n if (rng.item) {\r\n doc.execCommand('Delete', false, null);\r\n rng = editor.getRng();\r\n }\r\n if (/^\\s+/.test(content)) {\r\n rng.pasteHTML('_' + content);\r\n editor.dom.remove('__mce_tmp');\r\n } else {\r\n rng.pasteHTML(content);\r\n }\r\n }\r\n if (!args.no_events) {\r\n editor.fire('SetContent', args);\r\n }\r\n };\r\n var $_b7rwud72jkmcwlow = { setContent: setContent };\r\n\r\n var getEndpointElement = function (root, rng, start, real, resolve) {\r\n var container = start ? rng.startContainer : rng.endContainer;\r\n var offset = start ? rng.startOffset : rng.endOffset;\r\n return Option.from(container).map(Element$$1.fromDom).map(function (elm) {\r\n return !real || !rng.collapsed ? $_ca6pc118jkmcwkfs.child(elm, resolve(elm, offset)).getOr(elm) : elm;\r\n }).bind(function (elm) {\r\n return $_2xwdjv11jkmcwke0.isElement(elm) ? Option.some(elm) : $_ca6pc118jkmcwkfs.parent(elm);\r\n }).map(function (elm) {\r\n return elm.dom();\r\n }).getOr(root);\r\n };\r\n var getStart$2 = function (root, rng, real) {\r\n return getEndpointElement(root, rng, true, real, function (elm, offset) {\r\n return Math.min($_ca6pc118jkmcwkfs.childNodesCount(elm), offset);\r\n });\r\n };\r\n var getEnd = function (root, rng, real) {\r\n return getEndpointElement(root, rng, false, real, function (elm, offset) {\r\n return offset > 0 ? offset - 1 : offset;\r\n });\r\n };\r\n var skipEmptyTextNodes = function (node, forwards) {\r\n var orig = node;\r\n while (node && $_bjermr1rjkmcwkij.isText(node) && node.length === 0) {\r\n node = forwards ? node.nextSibling : node.previousSibling;\r\n }\r\n return node || orig;\r\n };\r\n var getNode$1 = function (root, rng) {\r\n var elm, startContainer, endContainer, startOffset, endOffset;\r\n if (!rng) {\r\n return root;\r\n }\r\n startContainer = rng.startContainer;\r\n endContainer = rng.endContainer;\r\n startOffset = rng.startOffset;\r\n endOffset = rng.endOffset;\r\n elm = rng.commonAncestorContainer;\r\n if (!rng.collapsed) {\r\n if (startContainer === endContainer) {\r\n if (endOffset - startOffset < 2) {\r\n if (startContainer.hasChildNodes()) {\r\n elm = startContainer.childNodes[startOffset];\r\n }\r\n }\r\n }\r\n if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {\r\n if (startContainer.length === startOffset) {\r\n startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\r\n } else {\r\n startContainer = startContainer.parentNode;\r\n }\r\n if (endOffset === 0) {\r\n endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\r\n } else {\r\n endContainer = endContainer.parentNode;\r\n }\r\n if (startContainer && startContainer === endContainer) {\r\n return startContainer;\r\n }\r\n }\r\n }\r\n if (elm && elm.nodeType === 3) {\r\n return elm.parentNode;\r\n }\r\n return elm;\r\n };\r\n var getSelectedBlocks = function (dom, rng, startElm, endElm) {\r\n var node, root;\r\n var selectedBlocks = [];\r\n root = dom.getRoot();\r\n startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);\r\n endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);\r\n if (startElm && startElm !== root) {\r\n selectedBlocks.push(startElm);\r\n }\r\n if (startElm && endElm && startElm !== endElm) {\r\n node = startElm;\r\n var walker = new TreeWalker(startElm, root);\r\n while ((node = walker.next()) && node !== endElm) {\r\n if (dom.isBlock(node)) {\r\n selectedBlocks.push(node);\r\n }\r\n }\r\n }\r\n if (endElm && startElm !== endElm && endElm !== root) {\r\n selectedBlocks.push(endElm);\r\n }\r\n return selectedBlocks;\r\n };\r\n var select$1 = function (dom, node, content) {\r\n return Option.from(node).map(function (node) {\r\n var idx = dom.nodeIndex(node);\r\n var rng = dom.createRng();\r\n rng.setStart(node.parentNode, idx);\r\n rng.setEnd(node.parentNode, idx + 1);\r\n if (content) {\r\n moveEndPoint$1(dom, rng, node, true);\r\n moveEndPoint$1(dom, rng, node, false);\r\n }\r\n return rng;\r\n });\r\n };\r\n\r\n var each$19 = $_4ujg4tljkmcwkbk.each;\r\n var isNativeIeSelection = function (rng) {\r\n return !!rng.select;\r\n };\r\n var isAttachedToDom = function (node) {\r\n return !!(node && node.ownerDocument) && $_e4hu6h1ejkmcwkgj.contains(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));\r\n };\r\n var isValidRange = function (rng) {\r\n if (!rng) {\r\n return false;\r\n } else if (isNativeIeSelection(rng)) {\r\n return true;\r\n } else {\r\n return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\r\n }\r\n };\r\n var Selection$1 = function (dom, win, serializer, editor) {\r\n var bookmarkManager, controlSelection;\r\n var selectedRange, explicitRange, selectorChangedData;\r\n var setCursorLocation = function (node, offset) {\r\n var rng = dom.createRng();\r\n if (!node) {\r\n moveEndPoint$1(dom, rng, editor.getBody(), true);\r\n setRng(rng);\r\n } else {\r\n rng.setStart(node, offset);\r\n rng.setEnd(node, offset);\r\n setRng(rng);\r\n collapse(false);\r\n }\r\n };\r\n var getContent = function (args) {\r\n return $_eu7sms6yjkmcwlnf.getContent(editor, args);\r\n };\r\n var setContent = function (content, args) {\r\n return $_b7rwud72jkmcwlow.setContent(editor, content, args);\r\n };\r\n var getStart = function (real) {\r\n return getStart$2(editor.getBody(), getRng(), real);\r\n };\r\n var getEnd$$1 = function (real) {\r\n return getEnd(editor.getBody(), getRng(), real);\r\n };\r\n var getBookmark = function (type, normalized) {\r\n return bookmarkManager.getBookmark(type, normalized);\r\n };\r\n var moveToBookmark = function (bookmark) {\r\n return bookmarkManager.moveToBookmark(bookmark);\r\n };\r\n var select = function (node, content) {\r\n select$1(dom, node, content).each(setRng);\r\n return node;\r\n };\r\n var isCollapsed = function () {\r\n var rng = getRng(), sel = getSel();\r\n if (!rng || rng.item) {\r\n return false;\r\n }\r\n if (rng.compareEndPoints) {\r\n return rng.compareEndPoints('StartToEnd', rng) === 0;\r\n }\r\n return !sel || rng.collapsed;\r\n };\r\n var collapse = function (toStart) {\r\n var rng = getRng();\r\n rng.collapse(!!toStart);\r\n setRng(rng);\r\n };\r\n var getSel = function () {\r\n return win.getSelection ? win.getSelection() : win.document.selection;\r\n };\r\n var getRng = function () {\r\n var selection, rng, elm, doc;\r\n var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {\r\n try {\r\n return sourceRange.compareBoundaryPoints(how, destinationRange);\r\n } catch (ex) {\r\n return -1;\r\n }\r\n };\r\n if (!win) {\r\n return null;\r\n }\r\n doc = win.document;\r\n if (typeof doc === 'undefined' || doc === null) {\r\n return null;\r\n }\r\n if (editor.bookmark !== undefined && $_e3v8sn4vjkmcwl9y.hasFocus(editor) === false) {\r\n var bookmark = $_39c3zs4ljkmcwl86.getRng(editor);\r\n if (bookmark.isSome()) {\r\n return bookmark.map(function (r) {\r\n return $_8161126xjkmcwlnd.processRanges(editor, [r])[0];\r\n }).getOr(doc.createRange());\r\n }\r\n }\r\n try {\r\n if (selection = getSel()) {\r\n if (selection.rangeCount > 0) {\r\n rng = selection.getRangeAt(0);\r\n } else {\r\n rng = selection.createRange ? selection.createRange() : doc.createRange();\r\n }\r\n }\r\n } catch (ex) {\r\n }\r\n rng = $_8161126xjkmcwlnd.processRanges(editor, [rng])[0];\r\n if (!rng) {\r\n rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\r\n }\r\n if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\r\n elm = dom.getRoot();\r\n rng.setStart(elm, 0);\r\n rng.setEnd(elm, 0);\r\n }\r\n if (selectedRange && explicitRange) {\r\n if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\r\n rng = explicitRange;\r\n } else {\r\n selectedRange = null;\r\n explicitRange = null;\r\n }\r\n }\r\n return rng;\r\n };\r\n var setRng = function (rng, forward) {\r\n var sel, node, evt;\r\n if (!isValidRange(rng)) {\r\n return;\r\n }\r\n var ieRange = isNativeIeSelection(rng) ? rng : null;\r\n if (ieRange) {\r\n explicitRange = null;\r\n try {\r\n ieRange.select();\r\n } catch (ex) {\r\n }\r\n return;\r\n }\r\n sel = getSel();\r\n evt = editor.fire('SetSelectionRange', {\r\n range: rng,\r\n forward: forward\r\n });\r\n rng = evt.range;\r\n if (sel) {\r\n explicitRange = rng;\r\n try {\r\n sel.removeAllRanges();\r\n sel.addRange(rng);\r\n } catch (ex) {\r\n }\r\n if (forward === false && sel.extend) {\r\n sel.collapse(rng.endContainer, rng.endOffset);\r\n sel.extend(rng.startContainer, rng.startOffset);\r\n }\r\n selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\r\n }\r\n if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_cvvl9iajkmcwk25.ie) {\r\n if (rng.endOffset - rng.startOffset < 2) {\r\n if (rng.startContainer.hasChildNodes()) {\r\n node = rng.startContainer.childNodes[rng.startOffset];\r\n if (node && node.tagName === 'IMG') {\r\n sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\r\n if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\r\n sel.setBaseAndExtent(node, 0, node, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n editor.fire('AfterSetSelectionRange', {\r\n range: rng,\r\n forward: forward\r\n });\r\n };\r\n var setNode = function (elm) {\r\n setContent(dom.getOuterHTML(elm));\r\n return elm;\r\n };\r\n var getNode = function () {\r\n return getNode$1(editor.getBody(), getRng());\r\n };\r\n var getSelectedBlocks$$1 = function (startElm, endElm) {\r\n return getSelectedBlocks(dom, getRng(), startElm, endElm);\r\n };\r\n var isForward = function () {\r\n var sel = getSel();\r\n var anchorRange, focusRange;\r\n if (!sel || !sel.anchorNode || !sel.focusNode) {\r\n return true;\r\n }\r\n anchorRange = dom.createRng();\r\n anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\r\n anchorRange.collapse(true);\r\n focusRange = dom.createRng();\r\n focusRange.setStart(sel.focusNode, sel.focusOffset);\r\n focusRange.collapse(true);\r\n return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\r\n };\r\n var normalize = function () {\r\n var rng = getRng();\r\n var sel = getSel();\r\n if (!$_admly54fjkmcwl6u.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\r\n var normRng = $_21c07i4jjkmcwl7w.normalize(dom, rng);\r\n normRng.each(function (normRng) {\r\n setRng(normRng, isForward());\r\n });\r\n return normRng.getOr(rng);\r\n }\r\n return rng;\r\n };\r\n var selectorChanged = function (selector, callback) {\r\n var currentSelectors;\r\n if (!selectorChangedData) {\r\n selectorChangedData = {};\r\n currentSelectors = {};\r\n editor.on('NodeChange', function (e) {\r\n var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\r\n each$19(selectorChangedData, function (callbacks, selector) {\r\n each$19(parents, function (node) {\r\n if (dom.is(node, selector)) {\r\n if (!currentSelectors[selector]) {\r\n each$19(callbacks, function (callback) {\r\n callback(true, {\r\n node: node,\r\n selector: selector,\r\n parents: parents\r\n });\r\n });\r\n currentSelectors[selector] = callbacks;\r\n }\r\n matchedSelectors[selector] = callbacks;\r\n return false;\r\n }\r\n });\r\n });\r\n each$19(currentSelectors, function (callbacks, selector) {\r\n if (!matchedSelectors[selector]) {\r\n delete currentSelectors[selector];\r\n each$19(callbacks, function (callback) {\r\n callback(false, {\r\n node: node,\r\n selector: selector,\r\n parents: parents\r\n });\r\n });\r\n }\r\n });\r\n });\r\n }\r\n if (!selectorChangedData[selector]) {\r\n selectorChangedData[selector] = [];\r\n }\r\n selectorChangedData[selector].push(callback);\r\n return exports;\r\n };\r\n var getScrollContainer = function () {\r\n var scrollContainer;\r\n var node = dom.getRoot();\r\n while (node && node.nodeName !== 'BODY') {\r\n if (node.scrollHeight > node.clientHeight) {\r\n scrollContainer = node;\r\n break;\r\n }\r\n node = node.parentNode;\r\n }\r\n return scrollContainer;\r\n };\r\n var scrollIntoView = function (elm, alignToTop) {\r\n return $_a6610x37jkmcwkt5.scrollElementIntoView(editor, elm, alignToTop);\r\n };\r\n var placeCaretAt = function (clientX, clientY) {\r\n return setRng($_52q21w6wjkmcwlna.fromPoint(clientX, clientY, editor.getDoc()));\r\n };\r\n var getBoundingClientRect = function () {\r\n var rng = getRng();\r\n return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\r\n };\r\n var destroy = function () {\r\n win = selectedRange = explicitRange = null;\r\n controlSelection.destroy();\r\n };\r\n var exports = {\r\n bookmarkManager: null,\r\n controlSelection: null,\r\n dom: dom,\r\n win: win,\r\n serializer: serializer,\r\n editor: editor,\r\n collapse: collapse,\r\n setCursorLocation: setCursorLocation,\r\n getContent: getContent,\r\n setContent: setContent,\r\n getBookmark: getBookmark,\r\n moveToBookmark: moveToBookmark,\r\n select: select,\r\n isCollapsed: isCollapsed,\r\n isForward: isForward,\r\n setNode: setNode,\r\n getNode: getNode,\r\n getSel: getSel,\r\n setRng: setRng,\r\n getRng: getRng,\r\n getStart: getStart,\r\n getEnd: getEnd$$1,\r\n getSelectedBlocks: getSelectedBlocks$$1,\r\n normalize: normalize,\r\n selectorChanged: selectorChanged,\r\n getScrollContainer: getScrollContainer,\r\n scrollIntoView: scrollIntoView,\r\n placeCaretAt: placeCaretAt,\r\n getBoundingClientRect: getBoundingClientRect,\r\n destroy: destroy\r\n };\r\n bookmarkManager = BookmarkManager$1(exports);\r\n controlSelection = ControlSelection(exports, editor);\r\n exports.bookmarkManager = bookmarkManager;\r\n exports.controlSelection = controlSelection;\r\n return exports;\r\n };\r\n\r\n var isContentEditableFalse$11 = $_bjermr1rjkmcwkij.isContentEditableFalse;\r\n var getSelectedNode$1 = getSelectedNode;\r\n var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;\r\n var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;\r\n var getVisualCaretPosition = function (walkFn, caretPosition) {\r\n while (caretPosition = walkFn(caretPosition)) {\r\n if (caretPosition.isVisible()) {\r\n return caretPosition;\r\n }\r\n }\r\n return caretPosition;\r\n };\r\n var isMoveInsideSameBlock = function (from, to) {\r\n var inSameBlock = isInSameBlock(from, to);\r\n if (!inSameBlock && $_bjermr1rjkmcwkij.isBr(from.getNode())) {\r\n return true;\r\n }\r\n return inSameBlock;\r\n };\r\n var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {\r\n var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\r\n var forwards = direction === HDirection.Forwards;\r\n var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\r\n if (!range.collapsed) {\r\n node = getSelectedNode$1(range);\r\n if (isContentEditableFalse$11(node)) {\r\n return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\r\n }\r\n }\r\n rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\r\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\r\n if (isBeforeContentEditableFalseFn(caretPosition)) {\r\n return selectNode(editor, caretPosition.getNode(!forwards));\r\n }\r\n caretPosition = getNextPosFn(caretPosition);\r\n if (!caretPosition) {\r\n if (rangeIsInContainerBlock) {\r\n return range;\r\n }\r\n return null;\r\n }\r\n if (isBeforeContentEditableFalseFn(caretPosition)) {\r\n return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);\r\n }\r\n peekCaretPosition = getNextPosFn(caretPosition);\r\n if (isBeforeContentEditableFalseFn(peekCaretPosition)) {\r\n if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {\r\n return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);\r\n }\r\n }\r\n if (rangeIsInContainerBlock) {\r\n return renderRangeCaret(editor, caretPosition.toRange(), true);\r\n }\r\n return null;\r\n };\r\n var moveToCeFalseVertically = function (direction, editor, walkerFn, range) {\r\n var caretPosition, linePositions, nextLinePositions;\r\n var closestNextLineRect, caretClientRect, clientX;\r\n var dist1, dist2, contentEditableFalseNode;\r\n contentEditableFalseNode = getSelectedNode$1(range);\r\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\r\n linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\r\n nextLinePositions = $_9g1fibmjkmcwkbu.filter(linePositions, isLine(1));\r\n caretClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\r\n if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {\r\n contentEditableFalseNode = caretPosition.getNode();\r\n }\r\n if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {\r\n contentEditableFalseNode = caretPosition.getNode(true);\r\n }\r\n if (!caretClientRect) {\r\n return null;\r\n }\r\n clientX = caretClientRect.left;\r\n closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);\r\n if (closestNextLineRect) {\r\n if (isContentEditableFalse$11(closestNextLineRect.node)) {\r\n dist1 = Math.abs(clientX - closestNextLineRect.left);\r\n dist2 = Math.abs(clientX - closestNextLineRect.right);\r\n return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);\r\n }\r\n }\r\n if (contentEditableFalseNode) {\r\n var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);\r\n closestNextLineRect = findClosestClientRect($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(1)), clientX);\r\n if (closestNextLineRect) {\r\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\r\n }\r\n closestNextLineRect = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(0)));\r\n if (closestNextLineRect) {\r\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\r\n }\r\n }\r\n };\r\n var createTextBlock = function (editor) {\r\n var textBlock = editor.dom.create(editor.settings.forced_root_block);\r\n if (!$_cvvl9iajkmcwk25.ie || $_cvvl9iajkmcwk25.ie >= 11) {\r\n textBlock.innerHTML = '
';\r\n }\r\n return textBlock;\r\n };\r\n var exitPreBlock = function (editor, direction, range) {\r\n var pre, caretPos, newBlock;\r\n var caretWalker = CaretWalker(editor.getBody());\r\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\r\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\r\n if (range.collapsed && editor.settings.forced_root_block) {\r\n pre = editor.dom.getParent(range.startContainer, 'PRE');\r\n if (!pre) {\r\n return;\r\n }\r\n if (direction === 1) {\r\n caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\r\n } else {\r\n caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\r\n }\r\n if (!caretPos) {\r\n newBlock = createTextBlock(editor);\r\n if (direction === 1) {\r\n editor.$(pre).after(newBlock);\r\n } else {\r\n editor.$(pre).before(newBlock);\r\n }\r\n editor.selection.select(newBlock, true);\r\n editor.selection.collapse();\r\n }\r\n }\r\n };\r\n var getHorizontalRange = function (editor, forward) {\r\n var caretWalker = CaretWalker(editor.getBody());\r\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\r\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\r\n var newRange;\r\n var direction = forward ? HDirection.Forwards : HDirection.Backwards;\r\n var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\r\n var range = editor.selection.getRng();\r\n newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);\r\n if (newRange) {\r\n return newRange;\r\n }\r\n newRange = exitPreBlock(editor, direction, range);\r\n if (newRange) {\r\n return newRange;\r\n }\r\n return null;\r\n };\r\n var getVerticalRange = function (editor, down) {\r\n var newRange;\r\n var direction = down ? 1 : -1;\r\n var walkerFn = down ? downUntil : upUntil;\r\n var range = editor.selection.getRng();\r\n newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);\r\n if (newRange) {\r\n return newRange;\r\n }\r\n newRange = exitPreBlock(editor, direction, range);\r\n if (newRange) {\r\n return newRange;\r\n }\r\n return null;\r\n };\r\n var moveH$1 = function (editor, forward) {\r\n return function () {\r\n var newRng = getHorizontalRange(editor, forward);\r\n if (newRng) {\r\n editor.selection.setRng(newRng);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n };\r\n var moveV$1 = function (editor, down) {\r\n return function () {\r\n var newRng = getVerticalRange(editor, down);\r\n if (newRng) {\r\n editor.selection.setRng(newRng);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n };\r\n\r\n var defaultPatterns = function (patterns) {\r\n return map(patterns, function (pattern) {\r\n return merge({\r\n shiftKey: false,\r\n altKey: false,\r\n ctrlKey: false,\r\n metaKey: false,\r\n keyCode: 0,\r\n action: noop\r\n }, pattern);\r\n });\r\n };\r\n var matchesEvent = function (pattern, evt) {\r\n return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\r\n };\r\n var match$1 = function (patterns, evt) {\r\n return bind(defaultPatterns(patterns), function (pattern) {\r\n return matchesEvent(pattern, evt) ? [pattern] : [];\r\n });\r\n };\r\n var action = function (f) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n return function () {\r\n return f.apply(null, args);\r\n };\r\n };\r\n var execute = function (patterns, evt) {\r\n return find(match$1(patterns, evt), function (pattern) {\r\n return pattern.action();\r\n });\r\n };\r\n var $_3olmgr77jkmcwlpj = {\r\n match: match$1,\r\n action: action,\r\n execute: execute\r\n };\r\n\r\n var executeKeydownOverride = function (editor, caret, evt) {\r\n var os = $_b1ykk4ojkmcwkcj.detect().os;\r\n $_3olmgr77jkmcwlpj.execute([\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\r\n action: moveH$1(editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\r\n action: moveH$1(editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.UP,\r\n action: moveV$1(editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\r\n action: moveV$1(editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\r\n action: moveH(editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\r\n action: moveH(editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.UP,\r\n action: moveV(editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\r\n action: moveV(editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\r\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\r\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\r\n ctrlKey: !os.isOSX(),\r\n altKey: os.isOSX(),\r\n action: $_dl6t9m4ajkmcwl5b.moveNextWord(editor, caret)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\r\n ctrlKey: !os.isOSX(),\r\n altKey: os.isOSX(),\r\n action: $_dl6t9m4ajkmcwl5b.movePrevWord(editor, caret)\r\n }\r\n ], evt).each(function (_) {\r\n evt.preventDefault();\r\n });\r\n };\r\n var setup$7 = function (editor, caret) {\r\n editor.on('keydown', function (evt) {\r\n if (evt.isDefaultPrevented() === false) {\r\n executeKeydownOverride(editor, caret, evt);\r\n }\r\n });\r\n };\r\n var $_emza9w75jkmcwlp9 = { setup: setup$7 };\r\n\r\n var getParentInlines = function (rootElm, startElm) {\r\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(startElm, rootElm);\r\n return findIndex(parents, isBlock).fold(constant(parents), function (index) {\r\n return parents.slice(0, index);\r\n });\r\n };\r\n var hasOnlyOneChild$1 = function (elm) {\r\n return $_ca6pc118jkmcwkfs.children(elm).length === 1;\r\n };\r\n var deleteLastPosition = function (forward, editor, target, parentInlines) {\r\n var isFormatElement$$1 = curry(isFormatElement, editor);\r\n var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {\r\n return elm.dom();\r\n });\r\n if (formatNodes.length === 0) {\r\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, target);\r\n } else {\r\n var pos = replaceWithCaretFormat(target.dom(), formatNodes);\r\n editor.selection.setRng(pos.toRange());\r\n }\r\n };\r\n var deleteCaret$1 = function (editor, forward) {\r\n var rootElm = Element$$1.fromDom(editor.getBody());\r\n var startElm = Element$$1.fromDom(editor.selection.getStart());\r\n var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);\r\n return last(parentInlines).map(function (target) {\r\n var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n if ($_8z75uj3sjkmcwkx3.willDeleteLastPositionInElement(forward, fromPos, target.dom())) {\r\n deleteLastPosition(forward, editor, target, parentInlines);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }).getOr(false);\r\n };\r\n var backspaceDelete$5 = function (editor, forward) {\r\n return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;\r\n };\r\n var $_7tr96779jkmcwlpz = { backspaceDelete: backspaceDelete$5 };\r\n\r\n var executeKeydownOverride$1 = function (editor, caret, evt) {\r\n $_3olmgr77jkmcwlpj.execute([\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, true)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, false)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, true)\r\n }\r\n ], evt).each(function (_) {\r\n evt.preventDefault();\r\n });\r\n };\r\n var executeKeyupOverride = function (editor, evt) {\r\n $_3olmgr77jkmcwlpj.execute([\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\r\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\r\n },\r\n {\r\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\r\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\r\n }\r\n ], evt);\r\n };\r\n var setup$8 = function (editor, caret) {\r\n editor.on('keydown', function (evt) {\r\n if (evt.isDefaultPrevented() === false) {\r\n executeKeydownOverride$1(editor, caret, evt);\r\n }\r\n });\r\n editor.on('keyup', function (evt) {\r\n if (evt.isDefaultPrevented() === false) {\r\n executeKeyupOverride(editor, evt);\r\n }\r\n });\r\n };\r\n var $_4dsl7478jkmcwlpw = { setup: setup$8 };\r\n\r\n var firstNonWhiteSpaceNodeSibling = function (node) {\r\n while (node) {\r\n if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\\r\\n\\s]/.test(node.data)) {\r\n return node;\r\n }\r\n node = node.nextSibling;\r\n }\r\n };\r\n var moveToCaretPosition = function (editor, root) {\r\n var walker, node, rng, lastNode = root, tempElm;\r\n var dom = editor.dom;\r\n var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\r\n if (!root) {\r\n return;\r\n }\r\n if (/^(LI|DT|DD)$/.test(root.nodeName)) {\r\n var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\r\n if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\r\n root.insertBefore(dom.doc.createTextNode('\\xA0'), root.firstChild);\r\n }\r\n }\r\n rng = dom.createRng();\r\n root.normalize();\r\n if (root.hasChildNodes()) {\r\n walker = new TreeWalker(root, root);\r\n while (node = walker.current()) {\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n rng.setStart(node, 0);\r\n rng.setEnd(node, 0);\r\n break;\r\n }\r\n if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\r\n rng.setStartBefore(node);\r\n rng.setEndBefore(node);\r\n break;\r\n }\r\n lastNode = node;\r\n node = walker.next();\r\n }\r\n if (!node) {\r\n rng.setStart(lastNode, 0);\r\n rng.setEnd(lastNode, 0);\r\n }\r\n } else {\r\n if ($_bjermr1rjkmcwkij.isBr(root)) {\r\n if (root.nextSibling && dom.isBlock(root.nextSibling)) {\r\n rng.setStartBefore(root);\r\n rng.setEndBefore(root);\r\n } else {\r\n rng.setStartAfter(root);\r\n rng.setEndAfter(root);\r\n }\r\n } else {\r\n rng.setStart(root, 0);\r\n rng.setEnd(root, 0);\r\n }\r\n }\r\n editor.selection.setRng(rng);\r\n dom.remove(tempElm);\r\n editor.selection.scrollIntoView(root);\r\n };\r\n var getEditableRoot = function (dom, node) {\r\n var root = dom.getRoot();\r\n var parent, editableRoot;\r\n parent = node;\r\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\r\n if (dom.getContentEditable(parent) === 'true') {\r\n editableRoot = parent;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return parent !== root ? editableRoot : root;\r\n };\r\n var getParentBlock$2 = function (editor) {\r\n return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\r\n };\r\n var getParentBlockName = function (editor) {\r\n return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {\r\n return parentBlock.nodeName.toUpperCase();\r\n });\r\n };\r\n var isListItemParentBlock = function (editor) {\r\n return getParentBlock$2(editor).filter(function (elm) {\r\n return isListItem(Element$$1.fromDom(elm));\r\n }).isSome();\r\n };\r\n var $_79nvm87ejkmcwlqu = {\r\n moveToCaretPosition: moveToCaretPosition,\r\n getEditableRoot: getEditableRoot,\r\n getParentBlock: getParentBlock$2,\r\n getParentBlockName: getParentBlockName,\r\n isListItemParentBlock: isListItemParentBlock\r\n };\r\n\r\n var hasFirstChild = function (elm, name) {\r\n return elm.firstChild && elm.firstChild.nodeName === name;\r\n };\r\n var hasParent$1 = function (elm, parentName) {\r\n return elm && elm.parentNode && elm.parentNode.nodeName === parentName;\r\n };\r\n var isListBlock = function (elm) {\r\n return elm && /^(OL|UL|LI)$/.test(elm.nodeName);\r\n };\r\n var isNestedList = function (elm) {\r\n return isListBlock(elm) && isListBlock(elm.parentNode);\r\n };\r\n var getContainerBlock = function (containerBlock) {\r\n var containerBlockParent = containerBlock.parentNode;\r\n if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {\r\n return containerBlockParent;\r\n }\r\n return containerBlock;\r\n };\r\n var isFirstOrLastLi = function (containerBlock, parentBlock, first) {\r\n var node = containerBlock[first ? 'firstChild' : 'lastChild'];\r\n while (node) {\r\n if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n break;\r\n }\r\n node = node[first ? 'nextSibling' : 'previousSibling'];\r\n }\r\n return node === parentBlock;\r\n };\r\n var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {\r\n var dom = editor.dom;\r\n var rng = editor.selection.getRng();\r\n if (containerBlock === editor.getBody()) {\r\n return;\r\n }\r\n if (isNestedList(containerBlock)) {\r\n newBlockName = 'LI';\r\n }\r\n var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\r\n if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\r\n if (hasParent$1(containerBlock, 'LI')) {\r\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\r\n } else {\r\n dom.replace(newBlock, containerBlock);\r\n }\r\n } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\r\n if (hasParent$1(containerBlock, 'LI')) {\r\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\r\n newBlock.appendChild(dom.doc.createTextNode(' '));\r\n newBlock.appendChild(containerBlock);\r\n } else {\r\n containerBlock.parentNode.insertBefore(newBlock, containerBlock);\r\n }\r\n } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\r\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\r\n } else {\r\n containerBlock = getContainerBlock(containerBlock);\r\n var tmpRng = rng.cloneRange();\r\n tmpRng.setStartAfter(parentBlock);\r\n tmpRng.setEndAfter(containerBlock);\r\n var fragment = tmpRng.extractContents();\r\n if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\r\n newBlock = fragment.firstChild;\r\n dom.insertAfter(fragment, containerBlock);\r\n } else {\r\n dom.insertAfter(fragment, containerBlock);\r\n dom.insertAfter(newBlock, containerBlock);\r\n }\r\n }\r\n dom.remove(parentBlock);\r\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\r\n };\r\n var $_5ckamj7djkmcwlqo = { insert: insert$1 };\r\n\r\n var isEmptyAnchor = function (elm) {\r\n return elm && elm.nodeName === 'A' && $_4ujg4tljkmcwkbk.trim($_cadvcr2pjkmcwkph.trim(elm.innerText || elm.textContent)).length === 0;\r\n };\r\n var isTableCell$5 = function (node) {\r\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\r\n };\r\n var emptyBlock = function (elm) {\r\n elm.innerHTML = '
';\r\n };\r\n var containerAndSiblingName = function (container, nodeName) {\r\n return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\r\n };\r\n var canSplitBlock = function (dom, node) {\r\n return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';\r\n };\r\n var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {\r\n var node = block;\r\n var firstChilds = [];\r\n var i;\r\n if (!node) {\r\n return;\r\n }\r\n while (node = node.firstChild) {\r\n if (dom.isBlock(node)) {\r\n return;\r\n }\r\n if ($_bjermr1rjkmcwkij.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r\n firstChilds.push(node);\r\n }\r\n }\r\n i = firstChilds.length;\r\n while (i--) {\r\n node = firstChilds[i];\r\n if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {\r\n dom.remove(node);\r\n } else {\r\n if (isEmptyAnchor(node)) {\r\n dom.remove(node);\r\n }\r\n }\r\n }\r\n };\r\n var normalizeZwspOffset = function (start, container, offset) {\r\n if ($_bjermr1rjkmcwkij.isText(container) === false) {\r\n return offset;\r\n } else if (start) {\r\n return offset === 1 && container.data.charAt(offset - 1) === $_cadvcr2pjkmcwkph.ZWSP ? 0 : offset;\r\n } else {\r\n return offset === container.data.length - 1 && container.data.charAt(offset) === $_cadvcr2pjkmcwkph.ZWSP ? container.data.length : offset;\r\n }\r\n };\r\n var includeZwspInRange = function (rng) {\r\n var newRng = rng.cloneRange();\r\n newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\r\n newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\r\n return newRng;\r\n };\r\n var trimLeadingLineBreaks = function (node) {\r\n do {\r\n if ($_bjermr1rjkmcwkij.isText(node)) {\r\n node.nodeValue = node.nodeValue.replace(/^[\\r\\n]+/, '');\r\n }\r\n node = node.firstChild;\r\n } while (node);\r\n };\r\n var getEditableRoot$1 = function (dom, node) {\r\n var root = dom.getRoot();\r\n var parent, editableRoot;\r\n parent = node;\r\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\r\n if (dom.getContentEditable(parent) === 'true') {\r\n editableRoot = parent;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return parent !== root ? editableRoot : root;\r\n };\r\n var setForcedBlockAttrs = function (editor, node) {\r\n var forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\r\n editor.dom.setAttribs(node, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\r\n }\r\n };\r\n var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {\r\n var newBlock, parentBlock, startNode, node, next, rootBlockName;\r\n var blockName = newBlockName || 'P';\r\n var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);\r\n parentBlock = dom.getParent(container, dom.isBlock);\r\n if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\r\n parentBlock = parentBlock || editableRoot;\r\n if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) {\r\n rootBlockName = parentBlock.nodeName.toLowerCase();\r\n } else {\r\n rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();\r\n }\r\n if (!parentBlock.hasChildNodes()) {\r\n newBlock = dom.create(blockName);\r\n setForcedBlockAttrs(editor, newBlock);\r\n parentBlock.appendChild(newBlock);\r\n rng.setStart(newBlock, 0);\r\n rng.setEnd(newBlock, 0);\r\n return newBlock;\r\n }\r\n node = container;\r\n while (node.parentNode !== parentBlock) {\r\n node = node.parentNode;\r\n }\r\n while (node && !dom.isBlock(node)) {\r\n startNode = node;\r\n node = node.previousSibling;\r\n }\r\n if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {\r\n newBlock = dom.create(blockName);\r\n setForcedBlockAttrs(editor, newBlock);\r\n startNode.parentNode.insertBefore(newBlock, startNode);\r\n node = startNode;\r\n while (node && !dom.isBlock(node)) {\r\n next = node.nextSibling;\r\n newBlock.appendChild(node);\r\n node = next;\r\n }\r\n rng.setStart(container, offset);\r\n rng.setEnd(container, offset);\r\n }\r\n }\r\n return container;\r\n };\r\n var addBrToBlockIfNeeded = function (dom, block) {\r\n var lastChild;\r\n block.normalize();\r\n lastChild = block.lastChild;\r\n if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\r\n dom.add(block, 'br');\r\n }\r\n };\r\n var insert$2 = function (editor, evt) {\r\n var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;\r\n var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\r\n var dom = editor.dom;\r\n var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\r\n var rng = editor.selection.getRng();\r\n var createNewBlock = function (name) {\r\n var node = container, block, clonedNode, caretNode;\r\n var textInlineElements = schema.getTextInlineElements();\r\n if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\r\n block = dom.create(name || newBlockName);\r\n setForcedBlockAttrs(editor, block);\r\n } else {\r\n block = parentBlock.cloneNode(false);\r\n }\r\n caretNode = block;\r\n if ($_2ycm1438jkmcwkta.shouldKeepStyles(editor) === false) {\r\n dom.setAttrib(block, 'style', null);\r\n dom.setAttrib(block, 'class', null);\r\n } else {\r\n do {\r\n if (textInlineElements[node.nodeName]) {\r\n if (isCaretNode(node)) {\r\n continue;\r\n }\r\n clonedNode = node.cloneNode(false);\r\n dom.setAttrib(clonedNode, 'id', '');\r\n if (block.hasChildNodes()) {\r\n clonedNode.appendChild(block.firstChild);\r\n block.appendChild(clonedNode);\r\n } else {\r\n caretNode = clonedNode;\r\n block.appendChild(clonedNode);\r\n }\r\n }\r\n } while ((node = node.parentNode) && node !== editableRoot);\r\n }\r\n emptyBlock(caretNode);\r\n return block;\r\n };\r\n var isCaretAtStartOrEndOfBlock = function (start) {\r\n var walker, node, name, normalizedOffset;\r\n normalizedOffset = normalizeZwspOffset(start, container, offset);\r\n if ($_bjermr1rjkmcwkij.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {\r\n return false;\r\n }\r\n if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\r\n return true;\r\n }\r\n if (start && $_bjermr1rjkmcwkij.isElement(container) && container === parentBlock.firstChild) {\r\n return true;\r\n }\r\n if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\r\n return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\r\n }\r\n walker = new TreeWalker(container, parentBlock);\r\n if ($_bjermr1rjkmcwkij.isText(container)) {\r\n if (start && normalizedOffset === 0) {\r\n walker.prev();\r\n } else if (!start && normalizedOffset === container.nodeValue.length) {\r\n walker.next();\r\n }\r\n }\r\n while (node = walker.current()) {\r\n if ($_bjermr1rjkmcwkij.isElement(node)) {\r\n if (!node.getAttribute('data-mce-bogus')) {\r\n name = node.nodeName.toLowerCase();\r\n if (nonEmptyElementsMap[name] && name !== 'br') {\r\n return false;\r\n }\r\n }\r\n } else if ($_bjermr1rjkmcwkij.isText(node) && !/^[ \\t\\r\\n]*$/.test(node.nodeValue)) {\r\n return false;\r\n }\r\n if (start) {\r\n walker.prev();\r\n } else {\r\n walker.next();\r\n }\r\n }\r\n return true;\r\n };\r\n var insertNewBlockAfter = function () {\r\n if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\r\n newBlock = createNewBlock(newBlockName);\r\n } else {\r\n newBlock = createNewBlock();\r\n }\r\n if ($_2ycm1438jkmcwkta.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\r\n newBlock = dom.split(containerBlock, parentBlock);\r\n } else {\r\n dom.insertAfter(newBlock, parentBlock);\r\n }\r\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\r\n };\r\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\r\n rng.setStart(normRng.startContainer, normRng.startOffset);\r\n rng.setEnd(normRng.endContainer, normRng.endOffset);\r\n });\r\n container = rng.startContainer;\r\n offset = rng.startOffset;\r\n newBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n shiftKey = evt.shiftKey;\r\n if ($_bjermr1rjkmcwkij.isElement(container) && container.hasChildNodes()) {\r\n isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\r\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\r\n if (isAfterLastNodeInContainer && $_bjermr1rjkmcwkij.isText(container)) {\r\n offset = container.nodeValue.length;\r\n } else {\r\n offset = 0;\r\n }\r\n }\r\n editableRoot = getEditableRoot$1(dom, container);\r\n if (!editableRoot) {\r\n return;\r\n }\r\n if (newBlockName && !shiftKey || !newBlockName && shiftKey) {\r\n container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\r\n }\r\n parentBlock = dom.getParent(container, dom.isBlock);\r\n containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\r\n parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\r\n containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\r\n if (containerBlockName === 'LI' && !evt.ctrlKey) {\r\n parentBlock = containerBlock;\r\n containerBlock = containerBlock.parentNode;\r\n parentBlockName = containerBlockName;\r\n }\r\n if (/^(LI|DT|DD)$/.test(parentBlockName)) {\r\n if (dom.isEmpty(parentBlock)) {\r\n $_5ckamj7djkmcwlqo.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);\r\n return;\r\n }\r\n }\r\n if (newBlockName && parentBlock === editor.getBody()) {\r\n return;\r\n }\r\n newBlockName = newBlockName || 'P';\r\n if (isCaretContainerBlock(parentBlock)) {\r\n newBlock = showCaretContainerBlock(parentBlock);\r\n if (dom.isEmpty(parentBlock)) {\r\n emptyBlock(parentBlock);\r\n }\r\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\r\n } else if (isCaretAtStartOrEndOfBlock()) {\r\n insertNewBlockAfter();\r\n } else if (isCaretAtStartOrEndOfBlock(true)) {\r\n newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\r\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\r\n } else {\r\n tmpRng = includeZwspInRange(rng).cloneRange();\r\n tmpRng.setEndAfter(parentBlock);\r\n fragment = tmpRng.extractContents();\r\n trimLeadingLineBreaks(fragment);\r\n newBlock = fragment.firstChild;\r\n dom.insertAfter(fragment, parentBlock);\r\n trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\r\n addBrToBlockIfNeeded(dom, parentBlock);\r\n if (dom.isEmpty(parentBlock)) {\r\n emptyBlock(parentBlock);\r\n }\r\n newBlock.normalize();\r\n if (dom.isEmpty(newBlock)) {\r\n dom.remove(newBlock);\r\n insertNewBlockAfter();\r\n } else {\r\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\r\n }\r\n }\r\n dom.setAttrib(newBlock, 'id', '');\r\n editor.fire('NewBlock', { newBlock: newBlock });\r\n };\r\n var $_dr0y3j7cjkmcwlqe = { insert: insert$2 };\r\n\r\n var matchesSelector = function (editor, selector) {\r\n return $_79nvm87ejkmcwlqu.getParentBlock(editor).filter(function (parentBlock) {\r\n return selector.length > 0 && $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(parentBlock), selector);\r\n }).isSome();\r\n };\r\n var shouldInsertBr = function (editor) {\r\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getBrNewLineSelector(editor));\r\n };\r\n var shouldBlockNewLine = function (editor) {\r\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getNoNewLineSelector(editor));\r\n };\r\n var $_g7oj6o7gjkmcwlr8 = {\r\n shouldInsertBr: shouldInsertBr,\r\n shouldBlockNewLine: shouldBlockNewLine\r\n };\r\n\r\n var newLineAction = Adt.generate([\r\n { br: [] },\r\n { block: [] },\r\n { none: [] }\r\n ]);\r\n var shouldBlockNewLine$1 = function (editor, shiftKey) {\r\n return $_g7oj6o7gjkmcwlr8.shouldBlockNewLine(editor);\r\n };\r\n var isBrMode = function (requiredState) {\r\n return function (editor, shiftKey) {\r\n var brMode = $_2ycm1438jkmcwkta.getForcedRootBlock(editor) === '';\r\n return brMode === requiredState;\r\n };\r\n };\r\n var inListBlock = function (requiredState) {\r\n return function (editor, shiftKey) {\r\n return $_79nvm87ejkmcwlqu.isListItemParentBlock(editor) === requiredState;\r\n };\r\n };\r\n var inBlock = function (blockName, requiredState) {\r\n return function (editor, shiftKey) {\r\n var state = $_79nvm87ejkmcwlqu.getParentBlockName(editor) === blockName.toUpperCase();\r\n return state === requiredState;\r\n };\r\n };\r\n var inPreBlock = function (requiredState) {\r\n return inBlock('pre', requiredState);\r\n };\r\n var inSummaryBlock = function () {\r\n return inBlock('summary', true);\r\n };\r\n var shouldPutBrInPre$1 = function (requiredState) {\r\n return function (editor, shiftKey) {\r\n return $_2ycm1438jkmcwkta.shouldPutBrInPre(editor) === requiredState;\r\n };\r\n };\r\n var inBrContext = function (editor, shiftKey) {\r\n return $_g7oj6o7gjkmcwlr8.shouldInsertBr(editor);\r\n };\r\n var hasShiftKey = function (editor, shiftKey) {\r\n return shiftKey;\r\n };\r\n var canInsertIntoEditableRoot = function (editor) {\r\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n var rootEditable = $_79nvm87ejkmcwlqu.getEditableRoot(editor.dom, editor.selection.getStart());\r\n return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');\r\n };\r\n var match$2 = function (predicates, action) {\r\n return function (editor, shiftKey) {\r\n var isMatch = foldl(predicates, function (res, p) {\r\n return res && p(editor, shiftKey);\r\n }, true);\r\n return isMatch ? Option.some(action) : Option.none();\r\n };\r\n };\r\n var getAction$1 = function (editor, evt) {\r\n return $_8hyv6o49jkmcwl58.evaluateUntil([\r\n match$2([shouldBlockNewLine$1], newLineAction.none()),\r\n match$2([inSummaryBlock()], newLineAction.br()),\r\n match$2([\r\n inPreBlock(true),\r\n shouldPutBrInPre$1(false),\r\n hasShiftKey\r\n ], newLineAction.br()),\r\n match$2([\r\n inPreBlock(true),\r\n shouldPutBrInPre$1(false)\r\n ], newLineAction.block()),\r\n match$2([\r\n inPreBlock(true),\r\n shouldPutBrInPre$1(true),\r\n hasShiftKey\r\n ], newLineAction.block()),\r\n match$2([\r\n inPreBlock(true),\r\n shouldPutBrInPre$1(true)\r\n ], newLineAction.br()),\r\n match$2([\r\n inListBlock(true),\r\n hasShiftKey\r\n ], newLineAction.br()),\r\n match$2([inListBlock(true)], newLineAction.block()),\r\n match$2([\r\n isBrMode(true),\r\n hasShiftKey,\r\n canInsertIntoEditableRoot\r\n ], newLineAction.block()),\r\n match$2([isBrMode(true)], newLineAction.br()),\r\n match$2([inBrContext], newLineAction.br()),\r\n match$2([\r\n isBrMode(false),\r\n hasShiftKey\r\n ], newLineAction.br()),\r\n match$2([canInsertIntoEditableRoot], newLineAction.block())\r\n ], [\r\n editor,\r\n evt.shiftKey\r\n ]).getOr(newLineAction.none());\r\n };\r\n var $_47r1sh7fjkmcwlr1 = { getAction: getAction$1 };\r\n\r\n var insert$3 = function (editor, evt) {\r\n $_47r1sh7fjkmcwlr1.getAction(editor, evt).fold(function () {\r\n $_dc07up4ijkmcwl7n.insert(editor, evt);\r\n }, function () {\r\n $_dr0y3j7cjkmcwlqe.insert(editor, evt);\r\n }, noop);\r\n };\r\n var $_fs2ah67bjkmcwlq8 = { insert: insert$3 };\r\n\r\n var endTypingLevel = function (undoManager) {\r\n if (undoManager.typing) {\r\n undoManager.typing = false;\r\n undoManager.add();\r\n }\r\n };\r\n var handleEnterKeyEvent = function (editor, event) {\r\n if (event.isDefaultPrevented()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n endTypingLevel(editor.undoManager);\r\n editor.undoManager.transact(function () {\r\n if (editor.selection.isCollapsed() === false) {\r\n editor.execCommand('Delete');\r\n }\r\n $_fs2ah67bjkmcwlq8.insert(editor, event);\r\n });\r\n };\r\n var setup$9 = function (editor) {\r\n editor.on('keydown', function (event) {\r\n if (event.keyCode === $_6bj5795wjkmcwlg6.ENTER) {\r\n handleEnterKeyEvent(editor, event);\r\n }\r\n });\r\n };\r\n var $_ni5l67ajkmcwlq7 = { setup: setup$9 };\r\n\r\n var isValidInsertPoint = function (location, caretPosition) {\r\n return isAtStartOrEnd(location) && $_bjermr1rjkmcwkij.isText(caretPosition.container());\r\n };\r\n var insertNbspAtPosition = function (editor, caretPosition) {\r\n var container = caretPosition.container();\r\n var offset = caretPosition.offset();\r\n container.insertData(offset, '\\xA0');\r\n editor.selection.setCursorLocation(container, offset + 1);\r\n };\r\n var insertAtLocation = function (editor, caretPosition, location) {\r\n if (isValidInsertPoint(location, caretPosition)) {\r\n insertNbspAtPosition(editor, caretPosition);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n var insertAtCaret$2 = function (editor) {\r\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\r\n var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\r\n var boundaryLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), caretPosition);\r\n return boundaryLocation.map(curry(insertAtLocation, editor, caretPosition)).getOr(false);\r\n };\r\n var isAtStartOrEnd = function (location) {\r\n return location.fold(constant(false), constant(true), constant(true), constant(false));\r\n };\r\n var insertAtSelection = function (editor) {\r\n return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false;\r\n };\r\n var $_2cwo047ijkmcwlrj = { insertAtSelection: insertAtSelection };\r\n\r\n var executeKeydownOverride$2 = function (editor, evt) {\r\n $_3olmgr77jkmcwlpj.execute([{\r\n keyCode: $_6bj5795wjkmcwlg6.SPACEBAR,\r\n action: $_3olmgr77jkmcwlpj.action($_2cwo047ijkmcwlrj.insertAtSelection, editor)\r\n }], evt).each(function (_) {\r\n evt.preventDefault();\r\n });\r\n };\r\n var setup$10 = function (editor) {\r\n editor.on('keydown', function (evt) {\r\n if (evt.isDefaultPrevented() === false) {\r\n executeKeydownOverride$2(editor, evt);\r\n }\r\n });\r\n };\r\n var $_agfz917hjkmcwlrh = { setup: setup$10 };\r\n\r\n var findBlockCaretContainer = function (editor) {\r\n return $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {\r\n return elm.dom();\r\n });\r\n };\r\n var removeIeControlRect = function (editor) {\r\n editor.selection.setRng(editor.selection.getRng());\r\n };\r\n var showBlockCaretContainer = function (editor, blockCaretContainer) {\r\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\r\n showCaretContainerBlock(blockCaretContainer);\r\n removeIeControlRect(editor);\r\n editor.selection.scrollIntoView(blockCaretContainer);\r\n }\r\n };\r\n var handleBlockContainer = function (editor, e) {\r\n var blockCaretContainer = findBlockCaretContainer(editor);\r\n if (!blockCaretContainer) {\r\n return;\r\n }\r\n if (e.type === 'compositionstart') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n showBlockCaretContainer(editor, blockCaretContainer);\r\n return;\r\n }\r\n if (hasContent(blockCaretContainer)) {\r\n showBlockCaretContainer(editor, blockCaretContainer);\r\n editor.undoManager.add();\r\n }\r\n };\r\n var setup$11 = function (editor) {\r\n editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\r\n };\r\n var $_gfp1h7jjkmcwlrn = { setup: setup$11 };\r\n\r\n var setup$12 = function (editor) {\r\n var caret = $_dl6t9m4ajkmcwl5b.setupSelectedState(editor);\r\n $_gfp1h7jjkmcwlrn.setup(editor);\r\n $_emza9w75jkmcwlp9.setup(editor, caret);\r\n $_4dsl7478jkmcwlpw.setup(editor, caret);\r\n $_ni5l67ajkmcwlq7.setup(editor);\r\n $_agfz917hjkmcwlrh.setup(editor);\r\n };\r\n var $_ejk8vk74jkmcwlp8 = { setup: setup$12 };\r\n\r\n function Quirks (editor) {\r\n var each = $_4ujg4tljkmcwkbk.each;\r\n var BACKSPACE = $_6bj5795wjkmcwlg6.BACKSPACE, DELETE = $_6bj5795wjkmcwlg6.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\r\n var isGecko = $_cvvl9iajkmcwk25.gecko, isIE = $_cvvl9iajkmcwk25.ie, isWebKit = $_cvvl9iajkmcwk25.webkit;\r\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\r\n var mceInternalDataType = isIE ? 'Text' : 'URL';\r\n var setEditorCommandState = function (cmd, state) {\r\n try {\r\n editor.getDoc().execCommand(cmd, false, state);\r\n } catch (ex) {\r\n }\r\n };\r\n var isDefaultPrevented = function (e) {\r\n return e.isDefaultPrevented();\r\n };\r\n var setMceInternalContent = function (e) {\r\n var selectionHtml, internalContent;\r\n if (e.dataTransfer) {\r\n if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {\r\n selection.select(e.target);\r\n }\r\n selectionHtml = editor.selection.getContent();\r\n if (selectionHtml.length > 0) {\r\n internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);\r\n e.dataTransfer.setData(mceInternalDataType, internalContent);\r\n }\r\n }\r\n };\r\n var getMceInternalContent = function (e) {\r\n var internalContent;\r\n if (e.dataTransfer) {\r\n internalContent = e.dataTransfer.getData(mceInternalDataType);\r\n if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {\r\n internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');\r\n return {\r\n id: unescape(internalContent[0]),\r\n html: unescape(internalContent[1])\r\n };\r\n }\r\n }\r\n return null;\r\n };\r\n var insertClipboardContents = function (content, internal) {\r\n if (editor.queryCommandSupported('mceInsertClipboardContent')) {\r\n editor.execCommand('mceInsertClipboardContent', false, {\r\n content: content,\r\n internal: internal\r\n });\r\n } else {\r\n editor.execCommand('mceInsertContent', false, content);\r\n }\r\n };\r\n var emptyEditorWhenDeleting = function () {\r\n var serializeRng = function (rng) {\r\n var body = dom.create('body');\r\n var contents = rng.cloneContents();\r\n body.appendChild(contents);\r\n return selection.serializer.serialize(body, { format: 'html' });\r\n };\r\n var allContentsSelected = function (rng) {\r\n var selection = serializeRng(rng);\r\n var allRng = dom.createRng();\r\n allRng.selectNode(editor.getBody());\r\n var allSelection = serializeRng(allRng);\r\n return selection === allSelection;\r\n };\r\n editor.on('keydown', function (e) {\r\n var keyCode = e.keyCode;\r\n var isCollapsed, body;\r\n if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {\r\n isCollapsed = editor.selection.isCollapsed();\r\n body = editor.getBody();\r\n if (isCollapsed && !dom.isEmpty(body)) {\r\n return;\r\n }\r\n if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\r\n return;\r\n }\r\n e.preventDefault();\r\n editor.setContent('');\r\n if (body.firstChild && dom.isBlock(body.firstChild)) {\r\n editor.selection.setCursorLocation(body.firstChild, 0);\r\n } else {\r\n editor.selection.setCursorLocation(body, 0);\r\n }\r\n editor.nodeChanged();\r\n }\r\n });\r\n };\r\n var selectAll = function () {\r\n editor.shortcuts.add('meta+a', null, 'SelectAll');\r\n };\r\n var inputMethodFocus = function () {\r\n if (!editor.settings.content_editable) {\r\n dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {\r\n var rng;\r\n if (e.target === editor.getDoc().documentElement) {\r\n rng = selection.getRng();\r\n editor.getBody().focus();\r\n if (e.type === 'mousedown') {\r\n if (isCaretContainer(rng.startContainer)) {\r\n return;\r\n }\r\n selection.placeCaretAt(e.clientX, e.clientY);\r\n } else {\r\n selection.setRng(rng);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n var removeHrOnBackspace = function () {\r\n editor.on('keydown', function (e) {\r\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\r\n if (!editor.getBody().getElementsByTagName('hr').length) {\r\n return;\r\n }\r\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\r\n var node = selection.getNode();\r\n var previousSibling = node.previousSibling;\r\n if (node.nodeName === 'HR') {\r\n dom.remove(node);\r\n e.preventDefault();\r\n return;\r\n }\r\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\r\n dom.remove(previousSibling);\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n });\r\n };\r\n var focusBody = function () {\r\n if (!Range.prototype.getClientRects) {\r\n editor.on('mousedown', function (e) {\r\n if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\r\n var body_1 = editor.getBody();\r\n body_1.blur();\r\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\r\n body_1.focus();\r\n });\r\n }\r\n });\r\n }\r\n };\r\n var selectControlElements = function () {\r\n editor.on('click', function (e) {\r\n var target = e.target;\r\n if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {\r\n e.preventDefault();\r\n editor.selection.select(target);\r\n editor.nodeChanged();\r\n }\r\n if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {\r\n e.preventDefault();\r\n selection.select(target);\r\n }\r\n });\r\n };\r\n var removeStylesWhenDeletingAcrossBlockElements = function () {\r\n var getAttributeApplyFunction = function () {\r\n var template = dom.getAttribs(selection.getStart().cloneNode(false));\r\n return function () {\r\n var target = selection.getStart();\r\n if (target !== editor.getBody()) {\r\n dom.setAttrib(target, 'style', null);\r\n each(template, function (attr) {\r\n target.setAttributeNode(attr.cloneNode(true));\r\n });\r\n }\r\n };\r\n };\r\n var isSelectionAcrossElements = function () {\r\n return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\r\n };\r\n editor.on('keypress', function (e) {\r\n var applyAttributes;\r\n if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\r\n applyAttributes = getAttributeApplyFunction();\r\n editor.getDoc().execCommand('delete', false, null);\r\n applyAttributes();\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n dom.bind(editor.getDoc(), 'cut', function (e) {\r\n var applyAttributes;\r\n if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\r\n applyAttributes = getAttributeApplyFunction();\r\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\r\n applyAttributes();\r\n });\r\n }\r\n });\r\n };\r\n var disableBackspaceIntoATable = function () {\r\n editor.on('keydown', function (e) {\r\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\r\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\r\n var previousSibling = selection.getNode().previousSibling;\r\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n var removeBlockQuoteOnBackSpace = function () {\r\n editor.on('keydown', function (e) {\r\n var rng, container, offset, root, parent$$1;\r\n if (isDefaultPrevented(e) || e.keyCode !== $_6bj5795wjkmcwlg6.BACKSPACE) {\r\n return;\r\n }\r\n rng = selection.getRng();\r\n container = rng.startContainer;\r\n offset = rng.startOffset;\r\n root = dom.getRoot();\r\n parent$$1 = container;\r\n if (!rng.collapsed || offset !== 0) {\r\n return;\r\n }\r\n while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {\r\n parent$$1 = parent$$1.parentNode;\r\n }\r\n if (parent$$1.tagName === 'BLOCKQUOTE') {\r\n editor.formatter.toggle('blockquote', null, parent$$1);\r\n rng = dom.createRng();\r\n rng.setStart(container, 0);\r\n rng.setEnd(container, 0);\r\n selection.setRng(rng);\r\n }\r\n });\r\n };\r\n var setGeckoEditingOptions = function () {\r\n var setOpts = function () {\r\n setEditorCommandState('StyleWithCSS', false);\r\n setEditorCommandState('enableInlineTableEditing', false);\r\n if (!settings.object_resizing) {\r\n setEditorCommandState('enableObjectResizing', false);\r\n }\r\n };\r\n if (!settings.readonly) {\r\n editor.on('BeforeExecCommand MouseDown', setOpts);\r\n }\r\n };\r\n var addBrAfterLastLinks = function () {\r\n var fixLinks = function () {\r\n each(dom.select('a'), function (node) {\r\n var parentNode = node.parentNode;\r\n var root = dom.getRoot();\r\n if (parentNode.lastChild === node) {\r\n while (parentNode && !dom.isBlock(parentNode)) {\r\n if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\r\n return;\r\n }\r\n parentNode = parentNode.parentNode;\r\n }\r\n dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\r\n }\r\n });\r\n };\r\n editor.on('SetContent ExecCommand', function (e) {\r\n if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\r\n fixLinks();\r\n }\r\n });\r\n };\r\n var setDefaultBlockType = function () {\r\n if (settings.forced_root_block) {\r\n editor.on('init', function () {\r\n setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\r\n });\r\n }\r\n };\r\n var normalizeSelection = function () {\r\n editor.on('keyup focusin mouseup', function (e) {\r\n if (!$_6bj5795wjkmcwlg6.modifierPressed(e)) {\r\n selection.normalize();\r\n }\r\n }, true);\r\n };\r\n var showBrokenImageIcon = function () {\r\n editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\r\n };\r\n var restoreFocusOnKeyDown = function () {\r\n if (!editor.inline) {\r\n editor.on('keydown', function () {\r\n if (document.activeElement === document.body) {\r\n editor.getWin().focus();\r\n }\r\n });\r\n }\r\n };\r\n var bodyHeight = function () {\r\n if (!editor.inline) {\r\n editor.contentStyles.push('body {min-height: 150px}');\r\n editor.on('click', function (e) {\r\n var rng;\r\n if (e.target.nodeName === 'HTML') {\r\n if ($_cvvl9iajkmcwk25.ie > 11) {\r\n editor.getBody().focus();\r\n return;\r\n }\r\n rng = editor.selection.getRng();\r\n editor.getBody().focus();\r\n editor.selection.setRng(rng);\r\n editor.selection.normalize();\r\n editor.nodeChanged();\r\n }\r\n });\r\n }\r\n };\r\n var blockCmdArrowNavigation = function () {\r\n if ($_cvvl9iajkmcwk25.mac) {\r\n editor.on('keydown', function (e) {\r\n if ($_6bj5795wjkmcwlg6.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\r\n e.preventDefault();\r\n editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\r\n }\r\n });\r\n }\r\n };\r\n var disableAutoUrlDetect = function () {\r\n setEditorCommandState('AutoUrlDetect', false);\r\n };\r\n var tapLinksAndImages = function () {\r\n editor.on('click', function (e) {\r\n var elm = e.target;\r\n do {\r\n if (elm.tagName === 'A') {\r\n e.preventDefault();\r\n return;\r\n }\r\n } while (elm = elm.parentNode);\r\n });\r\n editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\r\n };\r\n var blockFormSubmitInsideEditor = function () {\r\n editor.on('init', function () {\r\n editor.dom.bind(editor.getBody(), 'submit', function (e) {\r\n e.preventDefault();\r\n });\r\n });\r\n };\r\n var removeAppleInterchangeBrs = function () {\r\n parser.addNodeFilter('br', function (nodes) {\r\n var i = nodes.length;\r\n while (i--) {\r\n if (nodes[i].attr('class') === 'Apple-interchange-newline') {\r\n nodes[i].remove();\r\n }\r\n }\r\n });\r\n };\r\n var ieInternalDragAndDrop = function () {\r\n editor.on('dragstart', function (e) {\r\n setMceInternalContent(e);\r\n });\r\n editor.on('drop', function (e) {\r\n if (!isDefaultPrevented(e)) {\r\n var internalContent = getMceInternalContent(e);\r\n if (internalContent && internalContent.id !== editor.id) {\r\n e.preventDefault();\r\n var rng = $_52q21w6wjkmcwlna.fromPoint(e.x, e.y, editor.getDoc());\r\n selection.setRng(rng);\r\n insertClipboardContents(internalContent.html, true);\r\n }\r\n }\r\n });\r\n };\r\n var refreshContentEditable = function () {\r\n };\r\n var isHidden = function () {\r\n var sel;\r\n if (!isGecko || editor.removed) {\r\n return 0;\r\n }\r\n sel = editor.selection.getSel();\r\n return !sel || !sel.rangeCount || sel.rangeCount === 0;\r\n };\r\n removeBlockQuoteOnBackSpace();\r\n emptyEditorWhenDeleting();\r\n if (!$_cvvl9iajkmcwk25.windowsPhone) {\r\n normalizeSelection();\r\n }\r\n if (isWebKit) {\r\n inputMethodFocus();\r\n selectControlElements();\r\n setDefaultBlockType();\r\n blockFormSubmitInsideEditor();\r\n disableBackspaceIntoATable();\r\n removeAppleInterchangeBrs();\r\n if ($_cvvl9iajkmcwk25.iOS) {\r\n restoreFocusOnKeyDown();\r\n bodyHeight();\r\n tapLinksAndImages();\r\n } else {\r\n selectAll();\r\n }\r\n }\r\n if ($_cvvl9iajkmcwk25.ie >= 11) {\r\n bodyHeight();\r\n disableBackspaceIntoATable();\r\n }\r\n if ($_cvvl9iajkmcwk25.ie) {\r\n selectAll();\r\n disableAutoUrlDetect();\r\n ieInternalDragAndDrop();\r\n }\r\n if (isGecko) {\r\n removeHrOnBackspace();\r\n focusBody();\r\n removeStylesWhenDeletingAcrossBlockElements();\r\n setGeckoEditingOptions();\r\n addBrAfterLastLinks();\r\n showBrokenImageIcon();\r\n blockCmdArrowNavigation();\r\n disableBackspaceIntoATable();\r\n }\r\n return {\r\n refreshContentEditable: refreshContentEditable,\r\n isHidden: isHidden\r\n };\r\n }\r\n\r\n var isTextBlockNode = function (node) {\r\n return $_bjermr1rjkmcwkij.isElement(node) && isTextBlock(Element$$1.fromDom(node));\r\n };\r\n var normalizeSelection$1 = function (editor) {\r\n var rng = editor.selection.getRng();\r\n var startPos = CaretPosition.fromRangeStart(rng);\r\n var endPos = CaretPosition.fromRangeEnd(rng);\r\n if (CaretPosition.isElementPosition(startPos)) {\r\n var container = startPos.container();\r\n if (isTextBlockNode(container)) {\r\n $_1m3f3j2yjkmcwkqg.firstPositionIn(container).each(function (pos) {\r\n return rng.setStart(pos.container(), pos.offset());\r\n });\r\n }\r\n }\r\n if (CaretPosition.isElementPosition(endPos)) {\r\n var container = startPos.container();\r\n if (isTextBlockNode(container)) {\r\n $_1m3f3j2yjkmcwkqg.lastPositionIn(container).each(function (pos) {\r\n return rng.setEnd(pos.container(), pos.offset());\r\n });\r\n }\r\n }\r\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(rng));\r\n };\r\n var setup$13 = function (editor) {\r\n editor.on('click', function (e) {\r\n if (e.detail >= 3) {\r\n normalizeSelection$1(editor);\r\n }\r\n });\r\n };\r\n\r\n var preventSummaryToggle = function (editor) {\r\n editor.on('click', function (e) {\r\n if (editor.dom.getParent(e.target, 'details')) {\r\n e.preventDefault();\r\n }\r\n });\r\n };\r\n var filterDetails = function (editor) {\r\n editor.parser.addNodeFilter('details', function (elms) {\r\n each(elms, function (details) {\r\n details.attr('data-mce-open', details.attr('open'));\r\n details.attr('open', 'open');\r\n });\r\n });\r\n editor.serializer.addNodeFilter('details', function (elms) {\r\n each(elms, function (details) {\r\n var open = details.attr('data-mce-open');\r\n details.attr('open', isString(open) ? open : null);\r\n details.attr('data-mce-open', null);\r\n });\r\n });\r\n };\r\n var setup$14 = function (editor) {\r\n preventSummaryToggle(editor);\r\n filterDetails(editor);\r\n };\r\n\r\n var DOM$2 = DOMUtils$1.DOM;\r\n var appendStyle = function (editor, text) {\r\n var head = Element$$1.fromDom(editor.getDoc().head);\r\n var tag = Element$$1.fromTag('style');\r\n $_29helg15jkmcwkf0.set(tag, 'type', 'text/css');\r\n $_f4qt4v1yjkmcwkl2.append(tag, Element$$1.fromText(text));\r\n $_f4qt4v1yjkmcwkl2.append(head, tag);\r\n };\r\n var createParser = function (editor) {\r\n var parser = DomParser(editor.settings, editor.schema);\r\n parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {\r\n var i = nodes.length, node;\r\n var dom = editor.dom;\r\n var value, internalName;\r\n while (i--) {\r\n node = nodes[i];\r\n value = node.attr(name$$1);\r\n internalName = 'data-mce-' + name$$1;\r\n if (!node.attributes.map[internalName]) {\r\n if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\r\n continue;\r\n }\r\n if (name$$1 === 'style') {\r\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\r\n if (!value.length) {\r\n value = null;\r\n }\r\n node.attr(internalName, value);\r\n node.attr(name$$1, value);\r\n } else if (name$$1 === 'tabindex') {\r\n node.attr(internalName, value);\r\n node.attr(name$$1, null);\r\n } else {\r\n node.attr(internalName, editor.convertURL(value, name$$1, node.name));\r\n }\r\n }\r\n }\r\n });\r\n parser.addNodeFilter('script', function (nodes) {\r\n var i = nodes.length, node, type;\r\n while (i--) {\r\n node = nodes[i];\r\n type = node.attr('type') || 'no/type';\r\n if (type.indexOf('mce-') !== 0) {\r\n node.attr('type', 'mce-' + type);\r\n }\r\n }\r\n });\r\n parser.addNodeFilter('#cdata', function (nodes) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n node.type = 8;\r\n node.name = '#comment';\r\n node.value = '[CDATA[' + node.value + ']]';\r\n }\r\n });\r\n parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {\r\n var i = nodes.length, node;\r\n var nonEmptyElements = editor.schema.getNonEmptyElements();\r\n while (i--) {\r\n node = nodes[i];\r\n if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\r\n node.append(new Node$2('br', 1)).shortEnded = true;\r\n }\r\n }\r\n });\r\n return parser;\r\n };\r\n var autoFocus = function (editor) {\r\n if (editor.settings.auto_focus) {\r\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\r\n var focusEditor;\r\n if (editor.settings.auto_focus === true) {\r\n focusEditor = editor;\r\n } else {\r\n focusEditor = editor.editorManager.get(editor.settings.auto_focus);\r\n }\r\n if (!focusEditor.destroyed) {\r\n focusEditor.focus();\r\n }\r\n }, 100);\r\n }\r\n };\r\n var initEditor = function (editor) {\r\n editor.bindPendingEventDelegates();\r\n editor.initialized = true;\r\n editor.fire('init');\r\n editor.focus(true);\r\n editor.nodeChanged({ initial: true });\r\n editor.execCallback('init_instance_callback', editor);\r\n autoFocus(editor);\r\n };\r\n var getStyleSheetLoader = function (editor) {\r\n return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;\r\n };\r\n var initContentBody = function (editor, skipWrite) {\r\n var settings = editor.settings;\r\n var targetElm = editor.getElement();\r\n var doc = editor.getDoc(), body, contentCssText;\r\n if (!settings.inline) {\r\n editor.getElement().style.visibility = editor.orgVisibility;\r\n }\r\n if (!skipWrite && !settings.content_editable) {\r\n doc.open();\r\n doc.write(editor.iframeHTML);\r\n doc.close();\r\n }\r\n if (settings.content_editable) {\r\n editor.on('remove', function () {\r\n var bodyEl = this.getBody();\r\n DOM$2.removeClass(bodyEl, 'mce-content-body');\r\n DOM$2.removeClass(bodyEl, 'mce-edit-focus');\r\n DOM$2.setAttrib(bodyEl, 'contentEditable', null);\r\n });\r\n DOM$2.addClass(targetElm, 'mce-content-body');\r\n editor.contentDocument = doc = settings.content_document || document;\r\n editor.contentWindow = settings.content_window || window;\r\n editor.bodyElement = targetElm;\r\n settings.content_document = settings.content_window = null;\r\n settings.root_name = targetElm.nodeName.toLowerCase();\r\n }\r\n body = editor.getBody();\r\n body.disabled = true;\r\n editor.readonly = settings.readonly;\r\n if (!editor.readonly) {\r\n if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {\r\n body.style.position = 'relative';\r\n }\r\n body.contentEditable = editor.getParam('content_editable_state', true);\r\n }\r\n body.disabled = false;\r\n editor.editorUpload = EditorUpload(editor);\r\n editor.schema = Schema(settings);\r\n editor.dom = DOMUtils$1(doc, {\r\n keep_values: true,\r\n url_converter: editor.convertURL,\r\n url_converter_scope: editor,\r\n hex_colors: settings.force_hex_style_colors,\r\n class_filter: settings.class_filter,\r\n update_styles: true,\r\n root_element: editor.inline ? editor.getBody() : null,\r\n collect: settings.content_editable,\r\n schema: editor.schema,\r\n onSetAttrib: function (e) {\r\n editor.fire('SetAttrib', e);\r\n }\r\n });\r\n editor.parser = createParser(editor);\r\n editor.serializer = DomSerializer$1(settings, editor);\r\n editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor);\r\n editor.annotator = Annotator(editor);\r\n editor.formatter = Formatter(editor);\r\n editor.undoManager = UndoManager(editor);\r\n editor._nodeChangeDispatcher = new NodeChange(editor);\r\n editor._selectionOverrides = SelectionOverrides(editor);\r\n setup$14(editor);\r\n setup$13(editor);\r\n $_ejk8vk74jkmcwlp8.setup(editor);\r\n $_5utnj35ljkmcwldh.setup(editor);\r\n editor.fire('PreInit');\r\n if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {\r\n doc.body.spellcheck = false;\r\n DOM$2.setAttrib(body, 'spellcheck', 'false');\r\n }\r\n editor.quirks = Quirks(editor);\r\n editor.fire('PostRender');\r\n if (settings.directionality) {\r\n body.dir = settings.directionality;\r\n }\r\n if (settings.nowrap) {\r\n body.style.whiteSpace = 'nowrap';\r\n }\r\n if (settings.protect) {\r\n editor.on('BeforeSetContent', function (e) {\r\n $_4ujg4tljkmcwkbk.each(settings.protect, function (pattern) {\r\n e.content = e.content.replace(pattern, function (str) {\r\n return '';\r\n });\r\n });\r\n });\r\n }\r\n editor.on('SetContent', function () {\r\n editor.addVisual(editor.getBody());\r\n });\r\n editor.load({\r\n initial: true,\r\n format: 'html'\r\n });\r\n editor.startContent = editor.getContent({ format: 'raw' });\r\n editor.on('compositionstart compositionend', function (e) {\r\n editor.composing = e.type === 'compositionstart';\r\n });\r\n if (editor.contentStyles.length > 0) {\r\n contentCssText = '';\r\n $_4ujg4tljkmcwkbk.each(editor.contentStyles, function (style) {\r\n contentCssText += style + '\\r\\n';\r\n });\r\n editor.dom.addStyle(contentCssText);\r\n }\r\n getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {\r\n initEditor(editor);\r\n }, function (urls) {\r\n initEditor(editor);\r\n });\r\n if (settings.content_style) {\r\n appendStyle(editor, settings.content_style);\r\n }\r\n };\r\n var $_fssayf58jkmcwlbz = { initContentBody: initContentBody };\r\n\r\n var DOM$3 = DOMUtils$1.DOM;\r\n var relaxDomain = function (editor, ifr) {\r\n if (document.domain !== window.location.hostname && $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12) {\r\n var bodyUuid = $_8flfjw5jjkmcwldd.uuid('mce');\r\n editor[bodyUuid] = function () {\r\n $_fssayf58jkmcwlbz.initContentBody(editor);\r\n };\r\n var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain=\"' + document.domain + '\";' + 'var ed = window.parent.tinymce.get(\"' + editor.id + '\");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';\r\n DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);\r\n return true;\r\n }\r\n return false;\r\n };\r\n var normalizeHeight = function (height) {\r\n var normalizedHeight = typeof height === 'number' ? height + 'px' : height;\r\n return normalizedHeight ? normalizedHeight : '';\r\n };\r\n var createIframeElement = function (id, title, height, customAttrs) {\r\n var iframe = Element$$1.fromTag('iframe');\r\n $_29helg15jkmcwkf0.setAll(iframe, customAttrs);\r\n $_29helg15jkmcwkf0.setAll(iframe, {\r\n id: id + '_ifr',\r\n frameBorder: '0',\r\n allowTransparency: 'true',\r\n title: title\r\n });\r\n $_4enzit13jkmcwke5.setAll(iframe, {\r\n width: '100%',\r\n height: normalizeHeight(height),\r\n display: 'block'\r\n });\r\n return iframe;\r\n };\r\n var getIframeHtml = function (editor) {\r\n var bodyId, bodyClass, iframeHTML;\r\n iframeHTML = $_2ycm1438jkmcwkta.getDocType(editor) + '';\r\n if ($_2ycm1438jkmcwkta.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\r\n iframeHTML += '';\r\n }\r\n iframeHTML += '';\r\n bodyId = $_2ycm1438jkmcwkta.getBodyId(editor);\r\n bodyClass = $_2ycm1438jkmcwkta.getBodyClass(editor);\r\n if ($_2ycm1438jkmcwkta.getContentSecurityPolicy(editor)) {\r\n iframeHTML += '';\r\n }\r\n iframeHTML += '
';\r\n return iframeHTML;\r\n };\r\n var createIframe = function (editor, o) {\r\n var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help');\r\n var ifr = createIframeElement(editor.id, title, o.height, $_2ycm1438jkmcwkta.getIframeAttrs(editor)).dom();\r\n ifr.onload = function () {\r\n ifr.onload = null;\r\n editor.fire('load');\r\n };\r\n var isDomainRelaxed = relaxDomain(editor, ifr);\r\n editor.contentAreaContainer = o.iframeContainer;\r\n editor.iframeElement = ifr;\r\n editor.iframeHTML = getIframeHtml(editor);\r\n DOM$3.add(o.iframeContainer, ifr);\r\n return isDomainRelaxed;\r\n };\r\n var init$1 = function (editor, boxInfo) {\r\n var isDomainRelaxed = createIframe(editor, boxInfo);\r\n if (boxInfo.editorContainer) {\r\n DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;\r\n editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);\r\n }\r\n editor.getElement().style.display = 'none';\r\n DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');\r\n if (!isDomainRelaxed) {\r\n $_fssayf58jkmcwlbz.initContentBody(editor);\r\n }\r\n };\r\n var $_9jv4e17njkmcwlsj = { init: init$1 };\r\n\r\n var DOM$4 = DOMUtils$1.DOM;\r\n var initPlugin = function (editor, initializedPlugins, plugin) {\r\n var Plugin = PluginManager$1.get(plugin);\r\n var pluginUrl, pluginInstance;\r\n pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\r\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\r\n if (Plugin && $_4ujg4tljkmcwkbk.inArray(initializedPlugins, plugin) === -1) {\r\n $_4ujg4tljkmcwkbk.each(PluginManager$1.dependencies(plugin), function (dep) {\r\n initPlugin(editor, initializedPlugins, dep);\r\n });\r\n if (editor.plugins[plugin]) {\r\n return;\r\n }\r\n pluginInstance = new Plugin(editor, pluginUrl, editor.$);\r\n editor.plugins[plugin] = pluginInstance;\r\n if (pluginInstance.init) {\r\n pluginInstance.init(editor, pluginUrl);\r\n initializedPlugins.push(plugin);\r\n }\r\n }\r\n };\r\n var trimLegacyPrefix = function (name) {\r\n return name.replace(/^\\-/, '');\r\n };\r\n var initPlugins = function (editor) {\r\n var initializedPlugins = [];\r\n $_4ujg4tljkmcwkbk.each(editor.settings.plugins.split(/[ ,]/), function (name) {\r\n initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\r\n });\r\n };\r\n var initTheme = function (editor) {\r\n var Theme;\r\n var theme = editor.settings.theme;\r\n if (isString(theme)) {\r\n editor.settings.theme = trimLegacyPrefix(theme);\r\n Theme = ThemeManager.get(theme);\r\n editor.theme = new Theme(editor, ThemeManager.urls[theme]);\r\n if (editor.theme.init) {\r\n editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''), editor.$);\r\n }\r\n } else {\r\n editor.theme = {};\r\n }\r\n };\r\n var renderFromLoadedTheme = function (editor) {\r\n var w, h, minHeight, re, info;\r\n var settings = editor.settings;\r\n var elm = editor.getElement();\r\n w = settings.width || DOM$4.getStyle(elm, 'width') || '100%';\r\n h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight;\r\n minHeight = settings.min_height || 100;\r\n re = /^[0-9\\.]+(|px)$/i;\r\n if (re.test('' + w)) {\r\n w = Math.max(parseInt(w, 10), 100);\r\n }\r\n if (re.test('' + h)) {\r\n h = Math.max(parseInt(h, 10), minHeight);\r\n }\r\n info = editor.theme.renderUI({\r\n targetNode: elm,\r\n width: w,\r\n height: h,\r\n deltaWidth: settings.delta_width,\r\n deltaHeight: settings.delta_height\r\n });\r\n if (!settings.content_editable) {\r\n h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : '');\r\n if (h < minHeight) {\r\n h = minHeight;\r\n }\r\n }\r\n info.height = h;\r\n return info;\r\n };\r\n var renderFromThemeFunc = function (editor) {\r\n var info;\r\n var elm = editor.getElement();\r\n info = editor.settings.theme(editor, elm);\r\n if (info.editorContainer.nodeType) {\r\n info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\r\n }\r\n if (info.iframeContainer && info.iframeContainer.nodeType) {\r\n info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\r\n }\r\n info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\r\n return info;\r\n };\r\n var createThemeFalseResult = function (element) {\r\n return {\r\n editorContainer: element,\r\n iframeContainer: element\r\n };\r\n };\r\n var renderThemeFalseIframe = function (targetElement) {\r\n var iframeContainer = DOM$4.create('div');\r\n DOM$4.insertAfter(iframeContainer, targetElement);\r\n return createThemeFalseResult(iframeContainer);\r\n };\r\n var renderThemeFalse = function (editor) {\r\n var targetElement = editor.getElement();\r\n return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\r\n };\r\n var renderThemeUi = function (editor) {\r\n var settings = editor.settings, elm = editor.getElement();\r\n editor.orgDisplay = elm.style.display;\r\n if (isString(settings.theme)) {\r\n return renderFromLoadedTheme(editor);\r\n } else if (isFunction(settings.theme)) {\r\n return renderFromThemeFunc(editor);\r\n } else {\r\n return renderThemeFalse(editor);\r\n }\r\n };\r\n var init$2 = function (editor) {\r\n var settings = editor.settings;\r\n var elm = editor.getElement();\r\n var boxInfo;\r\n editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl;\r\n editor.editorManager.i18n.setCode(settings.language);\r\n settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area'));\r\n editor.fire('ScriptsLoaded');\r\n initTheme(editor);\r\n initPlugins(editor);\r\n boxInfo = renderThemeUi(editor);\r\n editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;\r\n if (settings.content_css) {\r\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.explode(settings.content_css), function (u) {\r\n editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\r\n });\r\n }\r\n if (settings.content_editable) {\r\n return $_fssayf58jkmcwlbz.initContentBody(editor);\r\n } else {\r\n return $_9jv4e17njkmcwlsj.init(editor, boxInfo);\r\n }\r\n };\r\n var $_4z079955jkmcwlbj = { init: init$2 };\r\n\r\n var DOM$5 = DOMUtils$1.DOM;\r\n var hasSkipLoadPrefix = function (name$$1) {\r\n return name$$1.charAt(0) === '-';\r\n };\r\n var loadLanguage = function (scriptLoader, editor) {\r\n var settings = editor.settings;\r\n if (settings.language && settings.language !== 'en' && !settings.language_url) {\r\n settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js';\r\n }\r\n if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) {\r\n scriptLoader.add(settings.language_url);\r\n }\r\n };\r\n var loadTheme = function (scriptLoader, editor, suffix, callback) {\r\n var settings = editor.settings, theme = settings.theme;\r\n if (isString(theme)) {\r\n if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {\r\n var themeUrl = settings.theme_url;\r\n if (themeUrl) {\r\n ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));\r\n } else {\r\n ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');\r\n }\r\n }\r\n scriptLoader.loadQueue(function () {\r\n ThemeManager.waitFor(theme, callback);\r\n });\r\n } else {\r\n callback();\r\n }\r\n };\r\n var loadPlugins = function (settings, suffix) {\r\n if ($_4ujg4tljkmcwkbk.isArray(settings.plugins)) {\r\n settings.plugins = settings.plugins.join(' ');\r\n }\r\n $_4ujg4tljkmcwkbk.each(settings.external_plugins, function (url, name$$1) {\r\n PluginManager$1.load(name$$1, url);\r\n settings.plugins += ' ' + name$$1;\r\n });\r\n $_4ujg4tljkmcwkbk.each(settings.plugins.split(/[ ,]/), function (plugin) {\r\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\r\n if (plugin && !PluginManager$1.urls[plugin]) {\r\n if (hasSkipLoadPrefix(plugin)) {\r\n plugin = plugin.substr(1, plugin.length);\r\n var dependencies = PluginManager$1.dependencies(plugin);\r\n $_4ujg4tljkmcwkbk.each(dependencies, function (dep) {\r\n var defaultSettings = {\r\n prefix: 'plugins/',\r\n resource: dep,\r\n suffix: '/plugin' + suffix + '.js'\r\n };\r\n dep = PluginManager$1.createUrl(defaultSettings, dep);\r\n PluginManager$1.load(dep.resource, dep);\r\n });\r\n } else {\r\n PluginManager$1.load(plugin, {\r\n prefix: 'plugins/',\r\n resource: plugin,\r\n suffix: '/plugin' + suffix + '.js'\r\n });\r\n }\r\n }\r\n });\r\n };\r\n var loadScripts = function (editor, suffix) {\r\n var scriptLoader = ScriptLoader.ScriptLoader;\r\n loadTheme(scriptLoader, editor, suffix, function () {\r\n loadLanguage(scriptLoader, editor);\r\n loadPlugins(editor.settings, suffix);\r\n scriptLoader.loadQueue(function () {\r\n if (!editor.removed) {\r\n $_4z079955jkmcwlbj.init(editor);\r\n }\r\n }, editor, function (urls) {\r\n $_b9je0i54jkmcwlbe.pluginLoadError(editor, urls[0]);\r\n if (!editor.removed) {\r\n $_4z079955jkmcwlbj.init(editor);\r\n }\r\n });\r\n });\r\n };\r\n var render = function (editor) {\r\n var settings = editor.settings, id = editor.id;\r\n var readyHandler = function () {\r\n DOM$5.unbind(window, 'ready', readyHandler);\r\n editor.render();\r\n };\r\n if (!EventUtils.Event.domLoaded) {\r\n DOM$5.bind(window, 'ready', readyHandler);\r\n return;\r\n }\r\n if (!editor.getElement()) {\r\n return;\r\n }\r\n if (!$_cvvl9iajkmcwk25.contentEditable) {\r\n return;\r\n }\r\n if (!settings.inline) {\r\n editor.orgVisibility = editor.getElement().style.visibility;\r\n editor.getElement().style.visibility = 'hidden';\r\n } else {\r\n editor.inline = true;\r\n }\r\n var form = editor.getElement().form || DOM$5.getParent(id, 'form');\r\n if (form) {\r\n editor.formElement = form;\r\n if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {\r\n DOM$5.insertAfter(DOM$5.create('input', {\r\n type: 'hidden',\r\n name: id\r\n }), id);\r\n editor.hasHiddenInput = true;\r\n }\r\n editor.formEventDelegate = function (e) {\r\n editor.fire(e.type, e);\r\n };\r\n DOM$5.bind(form, 'submit reset', editor.formEventDelegate);\r\n editor.on('reset', function () {\r\n editor.setContent(editor.startContent, { format: 'raw' });\r\n });\r\n if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\r\n form._mceOldSubmit = form.submit;\r\n form.submit = function () {\r\n editor.editorManager.triggerSave();\r\n editor.setDirty(false);\r\n return form._mceOldSubmit(form);\r\n };\r\n }\r\n }\r\n editor.windowManager = WindowManager(editor);\r\n editor.notificationManager = NotificationManager(editor);\r\n if (settings.encoding === 'xml') {\r\n editor.on('GetContent', function (e) {\r\n if (e.save) {\r\n e.content = DOM$5.encode(e.content);\r\n }\r\n });\r\n }\r\n if (settings.add_form_submit_trigger) {\r\n editor.on('submit', function () {\r\n if (editor.initialized) {\r\n editor.save();\r\n }\r\n });\r\n }\r\n if (settings.add_unload_trigger) {\r\n editor._beforeUnload = function () {\r\n if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\r\n editor.save({\r\n format: 'raw',\r\n no_events: true,\r\n set_dirty: false\r\n });\r\n }\r\n };\r\n editor.editorManager.on('BeforeUnload', editor._beforeUnload);\r\n }\r\n editor.editorManager.add(editor);\r\n loadScripts(editor, editor.suffix);\r\n };\r\n var $_9u29xe4yjkmcwlai = { render: render };\r\n\r\n var add$4 = function (editor, name, settings) {\r\n var sidebars = editor.sidebars ? editor.sidebars : [];\r\n sidebars.push({\r\n name: name,\r\n settings: settings\r\n });\r\n editor.sidebars = sidebars;\r\n };\r\n var $_gcw4n27ojkmcwlsr = { add: add$4 };\r\n\r\n var each$20 = $_4ujg4tljkmcwkbk.each;\r\n var trim$4 = $_4ujg4tljkmcwkbk.trim;\r\n var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');\r\n var DEFAULT_PORTS = {\r\n ftp: 21,\r\n http: 80,\r\n https: 443,\r\n mailto: 25\r\n };\r\n var URI = function (url, settings) {\r\n var self$$1 = this;\r\n var baseUri, baseUrl;\r\n url = trim$4(url);\r\n settings = self$$1.settings = settings || {};\r\n baseUri = settings.base_uri;\r\n if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\r\n self$$1.source = url;\r\n return;\r\n }\r\n var isProtocolRelative = url.indexOf('//') === 0;\r\n if (url.indexOf('/') === 0 && !isProtocolRelative) {\r\n url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\r\n }\r\n if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\r\n baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;\r\n if (settings.base_uri.protocol == '') {\r\n url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);\r\n } else {\r\n url = /([^#?]*)([#?]?.*)/.exec(url);\r\n url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];\r\n }\r\n }\r\n url = url.replace(/@@/g, '(mce_at)');\r\n url = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\r\n each$20(queryParts, function (v, i) {\r\n var part = url[i];\r\n if (part) {\r\n part = part.replace(/\\(mce_at\\)/g, '@@');\r\n }\r\n self$$1[v] = part;\r\n });\r\n if (baseUri) {\r\n if (!self$$1.protocol) {\r\n self$$1.protocol = baseUri.protocol;\r\n }\r\n if (!self$$1.userInfo) {\r\n self$$1.userInfo = baseUri.userInfo;\r\n }\r\n if (!self$$1.port && self$$1.host === 'mce_host') {\r\n self$$1.port = baseUri.port;\r\n }\r\n if (!self$$1.host || self$$1.host === 'mce_host') {\r\n self$$1.host = baseUri.host;\r\n }\r\n self$$1.source = '';\r\n }\r\n if (isProtocolRelative) {\r\n self$$1.protocol = '';\r\n }\r\n };\r\n URI.prototype = {\r\n setPath: function (path) {\r\n var self$$1 = this;\r\n path = /^(.*?)\\/?(\\w+)?$/.exec(path);\r\n self$$1.path = path[0];\r\n self$$1.directory = path[1];\r\n self$$1.file = path[2];\r\n self$$1.source = '';\r\n self$$1.getURI();\r\n },\r\n toRelative: function (uri) {\r\n var self$$1 = this;\r\n var output;\r\n if (uri === './') {\r\n return uri;\r\n }\r\n uri = new URI(uri, { base_uri: self$$1 });\r\n if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {\r\n return uri.getURI();\r\n }\r\n var tu = self$$1.getURI(), uu = uri.getURI();\r\n if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\r\n return tu;\r\n }\r\n output = self$$1.toRelPath(self$$1.path, uri.path);\r\n if (uri.query) {\r\n output += '?' + uri.query;\r\n }\r\n if (uri.anchor) {\r\n output += '#' + uri.anchor;\r\n }\r\n return output;\r\n },\r\n toAbsolute: function (uri, noHost) {\r\n uri = new URI(uri, { base_uri: this });\r\n return uri.getURI(noHost && this.isSameOrigin(uri));\r\n },\r\n isSameOrigin: function (uri) {\r\n if (this.host == uri.host && this.protocol == uri.protocol) {\r\n if (this.port == uri.port) {\r\n return true;\r\n }\r\n var defaultPort = DEFAULT_PORTS[this.protocol];\r\n if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n toRelPath: function (base, path) {\r\n var items, breakPoint = 0, out = '', i, l;\r\n base = base.substring(0, base.lastIndexOf('/'));\r\n base = base.split('/');\r\n items = path.split('/');\r\n if (base.length >= items.length) {\r\n for (i = 0, l = base.length; i < l; i++) {\r\n if (i >= items.length || base[i] !== items[i]) {\r\n breakPoint = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (base.length < items.length) {\r\n for (i = 0, l = items.length; i < l; i++) {\r\n if (i >= base.length || base[i] !== items[i]) {\r\n breakPoint = i + 1;\r\n break;\r\n }\r\n }\r\n }\r\n if (breakPoint === 1) {\r\n return path;\r\n }\r\n for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {\r\n out += '../';\r\n }\r\n for (i = breakPoint - 1, l = items.length; i < l; i++) {\r\n if (i !== breakPoint - 1) {\r\n out += '/' + items[i];\r\n } else {\r\n out += items[i];\r\n }\r\n }\r\n return out;\r\n },\r\n toAbsPath: function (base, path) {\r\n var i, nb = 0, o = [], tr, outPath;\r\n tr = /\\/$/.test(path) ? '/' : '';\r\n base = base.split('/');\r\n path = path.split('/');\r\n each$20(base, function (k) {\r\n if (k) {\r\n o.push(k);\r\n }\r\n });\r\n base = o;\r\n for (i = path.length - 1, o = []; i >= 0; i--) {\r\n if (path[i].length === 0 || path[i] === '.') {\r\n continue;\r\n }\r\n if (path[i] === '..') {\r\n nb++;\r\n continue;\r\n }\r\n if (nb > 0) {\r\n nb--;\r\n continue;\r\n }\r\n o.push(path[i]);\r\n }\r\n i = base.length - nb;\r\n if (i <= 0) {\r\n outPath = o.reverse().join('/');\r\n } else {\r\n outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');\r\n }\r\n if (outPath.indexOf('/') !== 0) {\r\n outPath = '/' + outPath;\r\n }\r\n if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\r\n outPath += tr;\r\n }\r\n return outPath;\r\n },\r\n getURI: function (noProtoHost) {\r\n var s;\r\n var self$$1 = this;\r\n if (!self$$1.source || noProtoHost) {\r\n s = '';\r\n if (!noProtoHost) {\r\n if (self$$1.protocol) {\r\n s += self$$1.protocol + '://';\r\n } else {\r\n s += '//';\r\n }\r\n if (self$$1.userInfo) {\r\n s += self$$1.userInfo + '@';\r\n }\r\n if (self$$1.host) {\r\n s += self$$1.host;\r\n }\r\n if (self$$1.port) {\r\n s += ':' + self$$1.port;\r\n }\r\n }\r\n if (self$$1.path) {\r\n s += self$$1.path;\r\n }\r\n if (self$$1.query) {\r\n s += '?' + self$$1.query;\r\n }\r\n if (self$$1.anchor) {\r\n s += '#' + self$$1.anchor;\r\n }\r\n self$$1.source = s;\r\n }\r\n return self$$1.source;\r\n }\r\n };\r\n URI.parseDataUri = function (uri) {\r\n var type, matches;\r\n uri = decodeURIComponent(uri).split(',');\r\n matches = /data:([^;]+)/.exec(uri[0]);\r\n if (matches) {\r\n type = matches[1];\r\n }\r\n return {\r\n type: type,\r\n data: uri[1]\r\n };\r\n };\r\n URI.getDocumentBaseUrl = function (loc) {\r\n var baseUrl;\r\n if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\r\n baseUrl = loc.href;\r\n } else {\r\n baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\r\n }\r\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\r\n baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\r\n if (!/[\\/\\\\]$/.test(baseUrl)) {\r\n baseUrl += '/';\r\n }\r\n }\r\n return baseUrl;\r\n };\r\n\r\n var defaultFormat = 'html';\r\n var trimEmptyContents = function (editor, html) {\r\n var blockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\\\s|\\xA0|
|)<\\\\/' + blockName + '>[\\r\\n]*|
[\\r\\n]*)$');\r\n return html.replace(emptyRegExp, '');\r\n };\r\n var getContentFromBody = function (editor, args, body) {\r\n var content;\r\n args.format = args.format ? args.format : defaultFormat;\r\n args.get = true;\r\n args.getInner = true;\r\n if (!args.no_events) {\r\n editor.fire('BeforeGetContent', args);\r\n }\r\n if (args.format === 'raw') {\r\n content = $_4ujg4tljkmcwkbk.trim($_2varuf5zjkmcwlgq.trimExternal(editor.serializer, body.innerHTML));\r\n } else if (args.format === 'text') {\r\n content = $_cadvcr2pjkmcwkph.trim(body.innerText || body.textContent);\r\n } else if (args.format === 'tree') {\r\n return editor.serializer.serialize(body, args);\r\n } else {\r\n content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\r\n }\r\n if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {\r\n args.content = $_4ujg4tljkmcwkbk.trim(content);\r\n } else {\r\n args.content = content;\r\n }\r\n if (!args.no_events) {\r\n editor.fire('GetContent', args);\r\n }\r\n return args.content;\r\n };\r\n var getContent$1 = function (editor, args) {\r\n if (args === void 0) {\r\n args = {};\r\n }\r\n return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {\r\n return getContentFromBody(editor, args, body);\r\n });\r\n };\r\n\r\n var traverse = function (node, fn) {\r\n fn(node);\r\n if (node.firstChild) {\r\n traverse(node.firstChild, fn);\r\n }\r\n if (node.next) {\r\n traverse(node.next, fn);\r\n }\r\n };\r\n var findMatchingNodes = function (nodeFilters, attributeFilters, node) {\r\n var nodeMatches = {};\r\n var attrMatches = {};\r\n var matches = [];\r\n if (node.firstChild) {\r\n traverse(node.firstChild, function (node) {\r\n each(nodeFilters, function (filter$$1) {\r\n if (filter$$1.name === node.name) {\r\n if (nodeMatches[filter$$1.name]) {\r\n nodeMatches[filter$$1.name].nodes.push(node);\r\n } else {\r\n nodeMatches[filter$$1.name] = {\r\n filter: filter$$1,\r\n nodes: [node]\r\n };\r\n }\r\n }\r\n });\r\n each(attributeFilters, function (filter$$1) {\r\n if (typeof node.attr(filter$$1.name) === 'string') {\r\n if (attrMatches[filter$$1.name]) {\r\n attrMatches[filter$$1.name].nodes.push(node);\r\n } else {\r\n attrMatches[filter$$1.name] = {\r\n filter: filter$$1,\r\n nodes: [node]\r\n };\r\n }\r\n }\r\n });\r\n });\r\n }\r\n for (var name in nodeMatches) {\r\n if (nodeMatches.hasOwnProperty(name)) {\r\n matches.push(nodeMatches[name]);\r\n }\r\n }\r\n for (var name in attrMatches) {\r\n if (attrMatches.hasOwnProperty(name)) {\r\n matches.push(attrMatches[name]);\r\n }\r\n }\r\n return matches;\r\n };\r\n var filter$3 = function (nodeFilters, attributeFilters, node) {\r\n var matches = findMatchingNodes(nodeFilters, attributeFilters, node);\r\n each(matches, function (match) {\r\n each(match.filter.callbacks, function (callback) {\r\n callback(match.nodes, match.filter.name, {});\r\n });\r\n });\r\n };\r\n\r\n var defaultFormat$1 = 'html';\r\n var isTreeNode = function (content) {\r\n return content instanceof Node$2;\r\n };\r\n var moveSelection = function (editor) {\r\n if ($_e3v8sn4vjkmcwl9y.hasFocus(editor)) {\r\n $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).each(function (pos) {\r\n var node = pos.getNode();\r\n var caretPos = $_bjermr1rjkmcwkij.isTable(node) ? $_1m3f3j2yjkmcwkqg.firstPositionIn(node).getOr(pos) : pos;\r\n editor.selection.setRng(caretPos.toRange());\r\n });\r\n }\r\n };\r\n var setEditorHtml = function (editor, html) {\r\n editor.dom.setHTML(editor.getBody(), html);\r\n moveSelection(editor);\r\n };\r\n var setContentString = function (editor, body, content, args) {\r\n var forcedRootBlockName, padd;\r\n if (content.length === 0 || /^\\s+$/.test(content)) {\r\n padd = '
';\r\n if (body.nodeName === 'TABLE') {\r\n content = '' + padd + '';\r\n } else if (/^(UL|OL)$/.test(body.nodeName)) {\r\n content = '
  • ' + padd + '
  • ';\r\n }\r\n forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\r\n if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\r\n content = padd;\r\n content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);\r\n } else if (!content) {\r\n content = '
    ';\r\n }\r\n setEditorHtml(editor, content);\r\n editor.fire('SetContent', args);\r\n } else {\r\n if (args.format !== 'raw') {\r\n content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {\r\n isRootContent: true,\r\n insert: true\r\n }));\r\n }\r\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : $_4ujg4tljkmcwkbk.trim(content);\r\n setEditorHtml(editor, args.content);\r\n if (!args.no_events) {\r\n editor.fire('SetContent', args);\r\n }\r\n }\r\n return args.content;\r\n };\r\n var setContentTree = function (editor, body, content, args) {\r\n filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\r\n var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content);\r\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : $_4ujg4tljkmcwkbk.trim(html);\r\n setEditorHtml(editor, args.content);\r\n if (!args.no_events) {\r\n editor.fire('SetContent', args);\r\n }\r\n return content;\r\n };\r\n var setContent$1 = function (editor, content, args) {\r\n if (args === void 0) {\r\n args = {};\r\n }\r\n args.format = args.format ? args.format : defaultFormat$1;\r\n args.set = true;\r\n args.content = isTreeNode(content) ? '' : content;\r\n if (!isTreeNode(content) && !args.no_events) {\r\n editor.fire('BeforeSetContent', args);\r\n content = args.content;\r\n }\r\n return Option.from(editor.getBody()).fold(constant(content), function (body) {\r\n return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);\r\n });\r\n };\r\n\r\n var DOM$6 = DOMUtils$1.DOM;\r\n var restoreOriginalStyles = function (editor) {\r\n DOM$6.setStyle(editor.id, 'display', editor.orgDisplay);\r\n };\r\n var safeDestroy = function (x) {\r\n return Option.from(x).each(function (x) {\r\n return x.destroy();\r\n });\r\n };\r\n var clearDomReferences = function (editor) {\r\n editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;\r\n editor.bodyElement = editor.contentDocument = editor.contentWindow = null;\r\n editor.iframeElement = editor.targetElm = null;\r\n if (editor.selection) {\r\n editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;\r\n }\r\n };\r\n var restoreForm = function (editor) {\r\n var form = editor.formElement;\r\n if (form) {\r\n if (form._mceOldSubmit) {\r\n form.submit = form._mceOldSubmit;\r\n form._mceOldSubmit = null;\r\n }\r\n DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);\r\n }\r\n };\r\n var remove$9 = function (editor) {\r\n if (!editor.removed) {\r\n var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;\r\n var body = editor.getBody();\r\n var element = editor.getElement();\r\n if (body) {\r\n editor.save({ is_removing: true });\r\n }\r\n editor.removed = true;\r\n editor.unbindAllNativeEvents();\r\n if (editor.hasHiddenInput && element) {\r\n DOM$6.remove(element.nextSibling);\r\n }\r\n if (!editor.inline && body) {\r\n restoreOriginalStyles(editor);\r\n }\r\n $_q3ric4tjkmcwl9q.fireRemove(editor);\r\n editor.editorManager.remove(editor);\r\n DOM$6.remove(editor.getContainer());\r\n safeDestroy(_selectionOverrides);\r\n safeDestroy(editorUpload);\r\n editor.destroy();\r\n }\r\n };\r\n var destroy = function (editor, automatic) {\r\n var selection = editor.selection, dom = editor.dom;\r\n if (editor.destroyed) {\r\n return;\r\n }\r\n if (!automatic && !editor.removed) {\r\n editor.remove();\r\n return;\r\n }\r\n if (!automatic) {\r\n editor.editorManager.off('beforeunload', editor._beforeUnload);\r\n if (editor.theme && editor.theme.destroy) {\r\n editor.theme.destroy();\r\n }\r\n safeDestroy(selection);\r\n safeDestroy(dom);\r\n }\r\n restoreForm(editor);\r\n clearDomReferences(editor);\r\n editor.destroyed = true;\r\n };\r\n\r\n var DOM$7 = DOMUtils$1.DOM;\r\n var extend$4 = $_4ujg4tljkmcwkbk.extend;\r\n var each$21 = $_4ujg4tljkmcwkbk.each;\r\n var resolve$4 = $_4ujg4tljkmcwkbk.resolve;\r\n var ie$2 = $_cvvl9iajkmcwk25.ie;\r\n var Editor = function (id, settings, editorManager) {\r\n var self = this;\r\n var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;\r\n var baseUri = editorManager.baseURI;\r\n settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings);\r\n self.settings = settings;\r\n AddOnManager.language = settings.language || 'en';\r\n AddOnManager.languageLoad = settings.language_load;\r\n AddOnManager.baseURL = editorManager.baseURL;\r\n self.id = id;\r\n self.setDirty(false);\r\n self.plugins = {};\r\n self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri });\r\n self.baseURI = baseUri;\r\n self.contentCSS = [];\r\n self.contentStyles = [];\r\n self.shortcuts = new Shortcuts(self);\r\n self.loadedCSS = {};\r\n self.editorCommands = new EditorCommands(self);\r\n self.suffix = editorManager.suffix;\r\n self.editorManager = editorManager;\r\n self.inline = settings.inline;\r\n self.buttons = {};\r\n self.menuItems = {};\r\n if (settings.cache_suffix) {\r\n $_cvvl9iajkmcwk25.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\r\n }\r\n if (settings.override_viewport === false) {\r\n $_cvvl9iajkmcwk25.overrideViewPort = false;\r\n }\r\n editorManager.fire('SetupEditor', { editor: self });\r\n self.execCallback('setup', self);\r\n self.$ = DomQuery.overrideDefaults(function () {\r\n return {\r\n context: self.inline ? self.getBody() : self.getDoc(),\r\n element: self.getBody()\r\n };\r\n });\r\n };\r\n Editor.prototype = {\r\n render: function () {\r\n $_9u29xe4yjkmcwlai.render(this);\r\n },\r\n focus: function (skipFocus) {\r\n $_e3v8sn4vjkmcwl9y.focus(this, skipFocus);\r\n },\r\n hasFocus: function () {\r\n return $_e3v8sn4vjkmcwl9y.hasFocus(this);\r\n },\r\n execCallback: function (name) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var self = this;\r\n var callback = self.settings[name], scope;\r\n if (!callback) {\r\n return;\r\n }\r\n if (self.callbackLookup && (scope = self.callbackLookup[name])) {\r\n callback = scope.func;\r\n scope = scope.scope;\r\n }\r\n if (typeof callback === 'string') {\r\n scope = callback.replace(/\\.\\w+$/, '');\r\n scope = scope ? resolve$4(scope) : 0;\r\n callback = resolve$4(callback);\r\n self.callbackLookup = self.callbackLookup || {};\r\n self.callbackLookup[name] = {\r\n func: callback,\r\n scope: scope\r\n };\r\n }\r\n return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));\r\n },\r\n translate: function (text) {\r\n if (text && $_4ujg4tljkmcwkbk.is(text, 'string')) {\r\n var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n;\r\n text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\\{\\#([^\\}]+)\\}/g, function (a, b) {\r\n return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}';\r\n });\r\n }\r\n return this.editorManager.translate(text);\r\n },\r\n getLang: function (name, defaultVal) {\r\n return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}');\r\n },\r\n getParam: function (name, defaultVal, type) {\r\n return getParam(this, name, defaultVal, type);\r\n },\r\n nodeChanged: function (args) {\r\n this._nodeChangeDispatcher.nodeChanged(args);\r\n },\r\n addButton: function (name, settings) {\r\n var self = this;\r\n if (settings.cmd) {\r\n settings.onclick = function () {\r\n self.execCommand(settings.cmd);\r\n };\r\n }\r\n if (settings.stateSelector && typeof settings.active === 'undefined') {\r\n settings.active = false;\r\n }\r\n if (!settings.text && !settings.icon) {\r\n settings.icon = name;\r\n }\r\n self.buttons = self.buttons;\r\n settings.tooltip = settings.tooltip || settings.title;\r\n self.buttons[name] = settings;\r\n },\r\n addSidebar: function (name, settings) {\r\n return $_gcw4n27ojkmcwlsr.add(this, name, settings);\r\n },\r\n addMenuItem: function (name, settings) {\r\n var self = this;\r\n if (settings.cmd) {\r\n settings.onclick = function () {\r\n self.execCommand(settings.cmd);\r\n };\r\n }\r\n self.menuItems = self.menuItems;\r\n self.menuItems[name] = settings;\r\n },\r\n addContextToolbar: function (predicate, items) {\r\n var self = this;\r\n var selector;\r\n self.contextToolbars = self.contextToolbars || [];\r\n if (typeof predicate === 'string') {\r\n selector = predicate;\r\n predicate = function (elm) {\r\n return self.dom.is(elm, selector);\r\n };\r\n }\r\n self.contextToolbars.push({\r\n id: $_8flfjw5jjkmcwldd.uuid('mcet'),\r\n predicate: predicate,\r\n items: items\r\n });\r\n },\r\n addCommand: function (name, callback, scope) {\r\n this.editorCommands.addCommand(name, callback, scope);\r\n },\r\n addQueryStateHandler: function (name, callback, scope) {\r\n this.editorCommands.addQueryStateHandler(name, callback, scope);\r\n },\r\n addQueryValueHandler: function (name, callback, scope) {\r\n this.editorCommands.addQueryValueHandler(name, callback, scope);\r\n },\r\n addShortcut: function (pattern, desc, cmdFunc, scope) {\r\n this.shortcuts.add(pattern, desc, cmdFunc, scope);\r\n },\r\n execCommand: function (cmd, ui, value, args) {\r\n return this.editorCommands.execCommand(cmd, ui, value, args);\r\n },\r\n queryCommandState: function (cmd) {\r\n return this.editorCommands.queryCommandState(cmd);\r\n },\r\n queryCommandValue: function (cmd) {\r\n return this.editorCommands.queryCommandValue(cmd);\r\n },\r\n queryCommandSupported: function (cmd) {\r\n return this.editorCommands.queryCommandSupported(cmd);\r\n },\r\n show: function () {\r\n var self = this;\r\n if (self.hidden) {\r\n self.hidden = false;\r\n if (self.inline) {\r\n self.getBody().contentEditable = true;\r\n } else {\r\n DOM$7.show(self.getContainer());\r\n DOM$7.hide(self.id);\r\n }\r\n self.load();\r\n self.fire('show');\r\n }\r\n },\r\n hide: function () {\r\n var self = this, doc = self.getDoc();\r\n if (!self.hidden) {\r\n if (ie$2 && doc && !self.inline) {\r\n doc.execCommand('SelectAll');\r\n }\r\n self.save();\r\n if (self.inline) {\r\n self.getBody().contentEditable = false;\r\n if (self === self.editorManager.focusedEditor) {\r\n self.editorManager.focusedEditor = null;\r\n }\r\n } else {\r\n DOM$7.hide(self.getContainer());\r\n DOM$7.setStyle(self.id, 'display', self.orgDisplay);\r\n }\r\n self.hidden = true;\r\n self.fire('hide');\r\n }\r\n },\r\n isHidden: function () {\r\n return !!this.hidden;\r\n },\r\n setProgressState: function (state, time) {\r\n this.fire('ProgressState', {\r\n state: state,\r\n time: time\r\n });\r\n },\r\n load: function (args) {\r\n var self = this;\r\n var elm = self.getElement(), html;\r\n if (self.removed) {\r\n return '';\r\n }\r\n if (elm) {\r\n args = args || {};\r\n args.load = true;\r\n html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);\r\n args.element = elm;\r\n if (!args.no_events) {\r\n self.fire('LoadContent', args);\r\n }\r\n args.element = elm = null;\r\n return html;\r\n }\r\n },\r\n save: function (args) {\r\n var self = this;\r\n var elm = self.getElement(), html, form;\r\n if (!elm || !self.initialized || self.removed) {\r\n return;\r\n }\r\n args = args || {};\r\n args.save = true;\r\n args.element = elm;\r\n html = args.content = self.getContent(args);\r\n if (!args.no_events) {\r\n self.fire('SaveContent', args);\r\n }\r\n if (args.format === 'raw') {\r\n self.fire('RawSaveContent', args);\r\n }\r\n html = args.content;\r\n if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {\r\n if (args.is_removing || !self.inline) {\r\n elm.innerHTML = html;\r\n }\r\n if (form = DOM$7.getParent(self.id, 'form')) {\r\n each$21(form.elements, function (elm) {\r\n if (elm.name === self.id) {\r\n elm.value = html;\r\n return false;\r\n }\r\n });\r\n }\r\n } else {\r\n elm.value = html;\r\n }\r\n args.element = elm = null;\r\n if (args.set_dirty !== false) {\r\n self.setDirty(false);\r\n }\r\n return html;\r\n },\r\n setContent: function (content, args) {\r\n return setContent$1(this, content, args);\r\n },\r\n getContent: function (args) {\r\n return getContent$1(this, args);\r\n },\r\n insertContent: function (content, args) {\r\n if (args) {\r\n content = extend$4({ content: content }, args);\r\n }\r\n this.execCommand('mceInsertContent', false, content);\r\n },\r\n isDirty: function () {\r\n return !this.isNotDirty;\r\n },\r\n setDirty: function (state) {\r\n var oldState = !this.isNotDirty;\r\n this.isNotDirty = !state;\r\n if (state && state !== oldState) {\r\n this.fire('dirty');\r\n }\r\n },\r\n setMode: function (mode) {\r\n setMode(this, mode);\r\n },\r\n getContainer: function () {\r\n var self = this;\r\n if (!self.container) {\r\n self.container = DOM$7.get(self.editorContainer || self.id + '_parent');\r\n }\r\n return self.container;\r\n },\r\n getContentAreaContainer: function () {\r\n return this.contentAreaContainer;\r\n },\r\n getElement: function () {\r\n if (!this.targetElm) {\r\n this.targetElm = DOM$7.get(this.id);\r\n }\r\n return this.targetElm;\r\n },\r\n getWin: function () {\r\n var self = this;\r\n var elm;\r\n if (!self.contentWindow) {\r\n elm = self.iframeElement;\r\n if (elm) {\r\n self.contentWindow = elm.contentWindow;\r\n }\r\n }\r\n return self.contentWindow;\r\n },\r\n getDoc: function () {\r\n var self = this;\r\n var win;\r\n if (!self.contentDocument) {\r\n win = self.getWin();\r\n if (win) {\r\n self.contentDocument = win.document;\r\n }\r\n }\r\n return self.contentDocument;\r\n },\r\n getBody: function () {\r\n var doc = this.getDoc();\r\n return this.bodyElement || (doc ? doc.body : null);\r\n },\r\n convertURL: function (url, name, elm) {\r\n var self = this, settings = self.settings;\r\n if (settings.urlconverter_callback) {\r\n return self.execCallback('urlconverter_callback', url, elm, true, name);\r\n }\r\n if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\r\n return url;\r\n }\r\n if (settings.relative_urls) {\r\n return self.documentBaseURI.toRelative(url);\r\n }\r\n url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\r\n return url;\r\n },\r\n addVisual: function (elm) {\r\n var self = this;\r\n var settings = self.settings;\r\n var dom = self.dom;\r\n var cls;\r\n elm = elm || self.getBody();\r\n if (self.hasVisual === undefined) {\r\n self.hasVisual = settings.visual;\r\n }\r\n each$21(dom.select('table,a', elm), function (elm) {\r\n var value;\r\n switch (elm.nodeName) {\r\n case 'TABLE':\r\n cls = settings.visual_table_class || 'mce-item-table';\r\n value = dom.getAttrib(elm, 'border');\r\n if ((!value || value === '0') && self.hasVisual) {\r\n dom.addClass(elm, cls);\r\n } else {\r\n dom.removeClass(elm, cls);\r\n }\r\n return;\r\n case 'A':\r\n if (!dom.getAttrib(elm, 'href')) {\r\n value = dom.getAttrib(elm, 'name') || elm.id;\r\n cls = settings.visual_anchor_class || 'mce-item-anchor';\r\n if (value && self.hasVisual) {\r\n dom.addClass(elm, cls);\r\n } else {\r\n dom.removeClass(elm, cls);\r\n }\r\n }\r\n return;\r\n }\r\n });\r\n self.fire('VisualAid', {\r\n element: elm,\r\n hasVisual: self.hasVisual\r\n });\r\n },\r\n remove: function () {\r\n remove$9(this);\r\n },\r\n destroy: function (automatic) {\r\n destroy(this, automatic);\r\n },\r\n uploadImages: function (callback) {\r\n return this.editorUpload.uploadImages(callback);\r\n },\r\n _scanForImages: function () {\r\n return this.editorUpload.scanForImages();\r\n }\r\n };\r\n extend$4(Editor.prototype, EditorObservable$1);\r\n\r\n var isEditorUIElement = function (elm) {\r\n return elm.className.toString().indexOf('mce-') !== -1;\r\n };\r\n var $_48zpgt7xjkmcwlum = { isEditorUIElement: isEditorUIElement };\r\n\r\n var isManualNodeChange = function (e) {\r\n return e.type === 'nodechange' && e.selectionChange;\r\n };\r\n var registerPageMouseUp = function (editor, throttledStore) {\r\n var mouseUpPage = function () {\r\n throttledStore.throttle();\r\n };\r\n DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);\r\n editor.on('remove', function () {\r\n DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);\r\n });\r\n };\r\n var registerFocusOut = function (editor) {\r\n editor.on('focusout', function () {\r\n $_39c3zs4ljkmcwl86.store(editor);\r\n });\r\n };\r\n var registerMouseUp = function (editor, throttledStore) {\r\n editor.on('mouseup touchend', function (e) {\r\n throttledStore.throttle();\r\n });\r\n };\r\n var registerEditorEvents = function (editor, throttledStore) {\r\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\r\n if (browser.isIE()) {\r\n registerFocusOut(editor);\r\n } else {\r\n registerMouseUp(editor, throttledStore);\r\n }\r\n editor.on('keyup nodechange', function (e) {\r\n if (!isManualNodeChange(e)) {\r\n $_39c3zs4ljkmcwl86.store(editor);\r\n }\r\n });\r\n };\r\n var register$3 = function (editor) {\r\n var throttledStore = first$1(function () {\r\n $_39c3zs4ljkmcwl86.store(editor);\r\n }, 0);\r\n if (editor.inline) {\r\n registerPageMouseUp(editor, throttledStore);\r\n }\r\n editor.on('init', function () {\r\n registerEditorEvents(editor, throttledStore);\r\n });\r\n editor.on('remove', function () {\r\n throttledStore.cancel();\r\n });\r\n };\r\n var $_d657g07yjkmcwlun = { register: register$3 };\r\n\r\n var documentFocusInHandler;\r\n var DOM$8 = DOMUtils$1.DOM;\r\n var isEditorUIElement$1 = function (elm) {\r\n return $_48zpgt7xjkmcwlum.isEditorUIElement(elm);\r\n };\r\n var isUIElement = function (editor, elm) {\r\n var customSelector = editor ? editor.settings.custom_ui_selector : '';\r\n var parent$$1 = DOM$8.getParent(elm, function (elm) {\r\n return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\r\n });\r\n return parent$$1 !== null;\r\n };\r\n var getActiveElement = function () {\r\n try {\r\n return document.activeElement;\r\n } catch (ex) {\r\n return document.body;\r\n }\r\n };\r\n var registerEvents = function (editorManager, e) {\r\n var editor = e.editor;\r\n $_d657g07yjkmcwlun.register(editor);\r\n editor.on('focusin', function () {\r\n var self$$1 = this;\r\n var focusedEditor = editorManager.focusedEditor;\r\n if (focusedEditor !== self$$1) {\r\n if (focusedEditor) {\r\n focusedEditor.fire('blur', { focusedEditor: self$$1 });\r\n }\r\n editorManager.setActive(self$$1);\r\n editorManager.focusedEditor = self$$1;\r\n self$$1.fire('focus', { blurredEditor: focusedEditor });\r\n self$$1.focus(true);\r\n }\r\n });\r\n editor.on('focusout', function () {\r\n var self$$1 = this;\r\n $_3l01gcijkmcwk99.setEditorTimeout(self$$1, function () {\r\n var focusedEditor = editorManager.focusedEditor;\r\n if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {\r\n self$$1.fire('blur', { focusedEditor: null });\r\n editorManager.focusedEditor = null;\r\n }\r\n });\r\n });\r\n if (!documentFocusInHandler) {\r\n documentFocusInHandler = function (e) {\r\n var activeEditor = editorManager.activeEditor;\r\n var target;\r\n target = e.target;\r\n if (activeEditor && target.ownerDocument === document) {\r\n if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {\r\n activeEditor.fire('blur', { focusedEditor: null });\r\n editorManager.focusedEditor = null;\r\n }\r\n }\r\n };\r\n DOM$8.bind(document, 'focusin', documentFocusInHandler);\r\n }\r\n };\r\n var unregisterDocumentEvents = function (editorManager, e) {\r\n if (editorManager.focusedEditor === e.editor) {\r\n editorManager.focusedEditor = null;\r\n }\r\n if (!editorManager.activeEditor) {\r\n DOM$8.unbind(document, 'focusin', documentFocusInHandler);\r\n documentFocusInHandler = null;\r\n }\r\n };\r\n var setup$15 = function (editorManager) {\r\n editorManager.on('AddEditor', curry(registerEvents, editorManager));\r\n editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\r\n };\r\n var $_6zk6867wjkmcwluj = {\r\n setup: setup$15,\r\n isEditorUIElement: isEditorUIElement$1,\r\n isUIElement: isUIElement\r\n };\r\n\r\n var data = {};\r\n var code = 'en';\r\n var $_9pp0ut7zjkmcwlut = {\r\n setCode: function (newCode) {\r\n if (newCode) {\r\n code = newCode;\r\n this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;\r\n }\r\n },\r\n getCode: function () {\r\n return code;\r\n },\r\n rtl: false,\r\n add: function (code, items) {\r\n var langData = data[code];\r\n if (!langData) {\r\n data[code] = langData = {};\r\n }\r\n for (var name in items) {\r\n langData[name] = items[name];\r\n }\r\n this.setCode(code);\r\n },\r\n translate: function (text) {\r\n var langData = data[code] || {};\r\n var toString = function (obj) {\r\n if ($_4ujg4tljkmcwkbk.is(obj, 'function')) {\r\n return Object.prototype.toString.call(obj);\r\n }\r\n return !isEmpty(obj) ? '' + obj : '';\r\n };\r\n var isEmpty = function (text) {\r\n return text === '' || text === null || $_4ujg4tljkmcwkbk.is(text, 'undefined');\r\n };\r\n var getLangData = function (text) {\r\n text = toString(text);\r\n return $_4ujg4tljkmcwkbk.hasOwn(langData, text) ? toString(langData[text]) : text;\r\n };\r\n if (isEmpty(text)) {\r\n return '';\r\n }\r\n if ($_4ujg4tljkmcwkbk.is(text, 'object') && $_4ujg4tljkmcwkbk.hasOwn(text, 'raw')) {\r\n return toString(text.raw);\r\n }\r\n if ($_4ujg4tljkmcwkbk.is(text, 'array')) {\r\n var values_1 = text.slice(1);\r\n text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\r\n return $_4ujg4tljkmcwkbk.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;\r\n });\r\n }\r\n return getLangData(text).replace(/{context:\\w+}$/, '');\r\n },\r\n data: data\r\n };\r\n\r\n var DOM$9 = DOMUtils$1.DOM;\r\n var explode$4 = $_4ujg4tljkmcwkbk.explode;\r\n var each$22 = $_4ujg4tljkmcwkbk.each;\r\n var extend$5 = $_4ujg4tljkmcwkbk.extend;\r\n var instanceCounter = 0;\r\n var beforeUnloadDelegate;\r\n var EditorManager;\r\n var boundGlobalEvents = false;\r\n var legacyEditors = [];\r\n var editors = [];\r\n var isValidLegacyKey = function (id) {\r\n return id !== 'length';\r\n };\r\n var globalEventDelegate = function (e) {\r\n each$22(EditorManager.get(), function (editor) {\r\n if (e.type === 'scroll') {\r\n editor.fire('ScrollWindow', e);\r\n } else {\r\n editor.fire('ResizeWindow', e);\r\n }\r\n });\r\n };\r\n var toggleGlobalEvents = function (state) {\r\n if (state !== boundGlobalEvents) {\r\n if (state) {\r\n DomQuery(window).on('resize scroll', globalEventDelegate);\r\n } else {\r\n DomQuery(window).off('resize scroll', globalEventDelegate);\r\n }\r\n boundGlobalEvents = state;\r\n }\r\n };\r\n var removeEditorFromList = function (targetEditor) {\r\n var oldEditors = editors;\r\n delete legacyEditors[targetEditor.id];\r\n for (var i = 0; i < legacyEditors.length; i++) {\r\n if (legacyEditors[i] === targetEditor) {\r\n legacyEditors.splice(i, 1);\r\n break;\r\n }\r\n }\r\n editors = filter(editors, function (editor) {\r\n return targetEditor !== editor;\r\n });\r\n if (EditorManager.activeEditor === targetEditor) {\r\n EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\r\n }\r\n if (EditorManager.focusedEditor === targetEditor) {\r\n EditorManager.focusedEditor = null;\r\n }\r\n return oldEditors.length !== editors.length;\r\n };\r\n var purgeDestroyedEditor = function (editor) {\r\n if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\r\n removeEditorFromList(editor);\r\n editor.unbindAllNativeEvents();\r\n editor.destroy(true);\r\n editor.removed = true;\r\n editor = null;\r\n }\r\n return editor;\r\n };\r\n EditorManager = {\r\n defaultSettings: {},\r\n $: DomQuery,\r\n majorVersion: '4',\r\n minorVersion: '8.2',\r\n releaseDate: '2018-08-09',\r\n editors: legacyEditors,\r\n i18n: $_9pp0ut7zjkmcwlut,\r\n activeEditor: null,\r\n settings: {},\r\n setup: function () {\r\n var self$$1 = this;\r\n var baseURL, documentBaseURL, suffix = '', preInit, src;\r\n documentBaseURL = URI.getDocumentBaseUrl(document.location);\r\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\r\n documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\r\n if (!/[\\/\\\\]$/.test(documentBaseURL)) {\r\n documentBaseURL += '/';\r\n }\r\n }\r\n preInit = window.tinymce || window.tinyMCEPreInit;\r\n if (preInit) {\r\n baseURL = preInit.base || preInit.baseURL;\r\n suffix = preInit.suffix;\r\n } else {\r\n var scripts = document.getElementsByTagName('script');\r\n for (var i = 0; i < scripts.length; i++) {\r\n src = scripts[i].src;\r\n var srcScript = src.substring(src.lastIndexOf('/'));\r\n if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\r\n if (srcScript.indexOf('.min') !== -1) {\r\n suffix = '.min';\r\n }\r\n baseURL = src.substring(0, src.lastIndexOf('/'));\r\n break;\r\n }\r\n }\r\n if (!baseURL && document.currentScript) {\r\n src = document.currentScript.src;\r\n if (src.indexOf('.min') !== -1) {\r\n suffix = '.min';\r\n }\r\n baseURL = src.substring(0, src.lastIndexOf('/'));\r\n }\r\n }\r\n self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\r\n self$$1.documentBaseURL = documentBaseURL;\r\n self$$1.baseURI = new URI(self$$1.baseURL);\r\n self$$1.suffix = suffix;\r\n $_6zk6867wjkmcwluj.setup(self$$1);\r\n },\r\n overrideDefaults: function (defaultSettings) {\r\n var baseUrl, suffix;\r\n baseUrl = defaultSettings.base_url;\r\n if (baseUrl) {\r\n this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\r\n this.baseURI = new URI(this.baseURL);\r\n }\r\n suffix = defaultSettings.suffix;\r\n if (defaultSettings.suffix) {\r\n this.suffix = suffix;\r\n }\r\n this.defaultSettings = defaultSettings;\r\n var pluginBaseUrls = defaultSettings.plugin_base_urls;\r\n for (var name$$1 in pluginBaseUrls) {\r\n AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];\r\n }\r\n },\r\n init: function (settings) {\r\n var self$$1 = this;\r\n var result, invalidInlineTargets;\r\n invalidInlineTargets = $_4ujg4tljkmcwkbk.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');\r\n var isInvalidInlineTarget = function (settings, elm) {\r\n return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\r\n };\r\n var createId = function (elm) {\r\n var id = elm.id;\r\n if (!id) {\r\n id = elm.name;\r\n if (id && !DOM$9.get(id)) {\r\n id = elm.name;\r\n } else {\r\n id = DOM$9.uniqueId();\r\n }\r\n elm.setAttribute('id', id);\r\n }\r\n return id;\r\n };\r\n var execCallback = function (name$$1) {\r\n var callback = settings[name$$1];\r\n if (!callback) {\r\n return;\r\n }\r\n return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));\r\n };\r\n var hasClass = function (elm, className) {\r\n return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);\r\n };\r\n var findTargets = function (settings) {\r\n var l, targets = [];\r\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11) {\r\n $_b9je0i54jkmcwlbe.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');\r\n return [];\r\n }\r\n if (settings.types) {\r\n each$22(settings.types, function (type) {\r\n targets = targets.concat(DOM$9.select(type.selector));\r\n });\r\n return targets;\r\n } else if (settings.selector) {\r\n return DOM$9.select(settings.selector);\r\n } else if (settings.target) {\r\n return [settings.target];\r\n }\r\n switch (settings.mode) {\r\n case 'exact':\r\n l = settings.elements || '';\r\n if (l.length > 0) {\r\n each$22(explode$4(l), function (id) {\r\n var elm;\r\n if (elm = DOM$9.get(id)) {\r\n targets.push(elm);\r\n } else {\r\n each$22(document.forms, function (f) {\r\n each$22(f.elements, function (e) {\r\n if (e.name === id) {\r\n id = 'mce_editor_' + instanceCounter++;\r\n DOM$9.setAttrib(e, 'id', id);\r\n targets.push(e);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case 'textareas':\r\n case 'specific_textareas':\r\n each$22(DOM$9.select('textarea'), function (elm) {\r\n if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {\r\n return;\r\n }\r\n if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {\r\n targets.push(elm);\r\n }\r\n });\r\n break;\r\n }\r\n return targets;\r\n };\r\n var provideResults = function (editors) {\r\n result = editors;\r\n };\r\n var initEditors = function () {\r\n var initCount = 0;\r\n var editors = [];\r\n var targets;\r\n var createEditor = function (id, settings, targetElm) {\r\n var editor = new Editor(id, settings, self$$1);\r\n editors.push(editor);\r\n editor.on('init', function () {\r\n if (++initCount === targets.length) {\r\n provideResults(editors);\r\n }\r\n });\r\n editor.targetElm = editor.targetElm || targetElm;\r\n editor.render();\r\n };\r\n DOM$9.unbind(window, 'ready', initEditors);\r\n execCallback('onpageload');\r\n targets = DomQuery.unique(findTargets(settings));\r\n if (settings.types) {\r\n each$22(settings.types, function (type) {\r\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\r\n if (DOM$9.is(elm, type.selector)) {\r\n createEditor(createId(elm), extend$5({}, settings, type), elm);\r\n return false;\r\n }\r\n return true;\r\n });\r\n });\r\n return;\r\n }\r\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\r\n purgeDestroyedEditor(self$$1.get(elm.id));\r\n });\r\n targets = $_4ujg4tljkmcwkbk.grep(targets, function (elm) {\r\n return !self$$1.get(elm.id);\r\n });\r\n if (targets.length === 0) {\r\n provideResults([]);\r\n } else {\r\n each$22(targets, function (elm) {\r\n if (isInvalidInlineTarget(settings, elm)) {\r\n $_b9je0i54jkmcwlbe.initError('Could not initialize inline editor on invalid inline target element', elm);\r\n } else {\r\n createEditor(createId(elm), settings, elm);\r\n }\r\n });\r\n }\r\n };\r\n self$$1.settings = settings;\r\n DOM$9.bind(window, 'ready', initEditors);\r\n return new promiseObj(function (resolve) {\r\n if (result) {\r\n resolve(result);\r\n } else {\r\n provideResults = function (editors) {\r\n resolve(editors);\r\n };\r\n }\r\n });\r\n },\r\n get: function (id) {\r\n if (arguments.length === 0) {\r\n return editors.slice(0);\r\n } else if (isString(id)) {\r\n return find(editors, function (editor) {\r\n return editor.id === id;\r\n }).getOr(null);\r\n } else if (isNumber(id)) {\r\n return editors[id] ? editors[id] : null;\r\n } else {\r\n return null;\r\n }\r\n },\r\n add: function (editor) {\r\n var self$$1 = this;\r\n var existingEditor;\r\n existingEditor = legacyEditors[editor.id];\r\n if (existingEditor === editor) {\r\n return editor;\r\n }\r\n if (self$$1.get(editor.id) === null) {\r\n if (isValidLegacyKey(editor.id)) {\r\n legacyEditors[editor.id] = editor;\r\n }\r\n legacyEditors.push(editor);\r\n editors.push(editor);\r\n }\r\n toggleGlobalEvents(true);\r\n self$$1.activeEditor = editor;\r\n self$$1.fire('AddEditor', { editor: editor });\r\n if (!beforeUnloadDelegate) {\r\n beforeUnloadDelegate = function () {\r\n self$$1.fire('BeforeUnload');\r\n };\r\n DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);\r\n }\r\n return editor;\r\n },\r\n createEditor: function (id, settings) {\r\n return this.add(new Editor(id, settings, this));\r\n },\r\n remove: function (selector) {\r\n var self$$1 = this;\r\n var i, editor;\r\n if (!selector) {\r\n for (i = editors.length - 1; i >= 0; i--) {\r\n self$$1.remove(editors[i]);\r\n }\r\n return;\r\n }\r\n if (isString(selector)) {\r\n each$22(DOM$9.select(selector), function (elm) {\r\n editor = self$$1.get(elm.id);\r\n if (editor) {\r\n self$$1.remove(editor);\r\n }\r\n });\r\n return;\r\n }\r\n editor = selector;\r\n if (isNull(self$$1.get(editor.id))) {\r\n return null;\r\n }\r\n if (removeEditorFromList(editor)) {\r\n self$$1.fire('RemoveEditor', { editor: editor });\r\n }\r\n if (editors.length === 0) {\r\n DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);\r\n }\r\n editor.remove();\r\n toggleGlobalEvents(editors.length > 0);\r\n return editor;\r\n },\r\n execCommand: function (cmd, ui, value) {\r\n var self$$1 = this, editor = self$$1.get(value);\r\n switch (cmd) {\r\n case 'mceAddEditor':\r\n if (!self$$1.get(value)) {\r\n new Editor(value, self$$1.settings, self$$1).render();\r\n }\r\n return true;\r\n case 'mceRemoveEditor':\r\n if (editor) {\r\n editor.remove();\r\n }\r\n return true;\r\n case 'mceToggleEditor':\r\n if (!editor) {\r\n self$$1.execCommand('mceAddEditor', 0, value);\r\n return true;\r\n }\r\n if (editor.isHidden()) {\r\n editor.show();\r\n } else {\r\n editor.hide();\r\n }\r\n return true;\r\n }\r\n if (self$$1.activeEditor) {\r\n return self$$1.activeEditor.execCommand(cmd, ui, value);\r\n }\r\n return false;\r\n },\r\n triggerSave: function () {\r\n each$22(editors, function (editor) {\r\n editor.save();\r\n });\r\n },\r\n addI18n: function (code, items) {\r\n $_9pp0ut7zjkmcwlut.add(code, items);\r\n },\r\n translate: function (text) {\r\n return $_9pp0ut7zjkmcwlut.translate(text);\r\n },\r\n setActive: function (editor) {\r\n var activeEditor = this.activeEditor;\r\n if (this.activeEditor !== editor) {\r\n if (activeEditor) {\r\n activeEditor.fire('deactivate', { relatedTarget: editor });\r\n }\r\n editor.fire('activate', { relatedTarget: activeEditor });\r\n }\r\n this.activeEditor = editor;\r\n }\r\n };\r\n extend$5(EditorManager, $_ed2ug44qjkmcwl97);\r\n EditorManager.setup();\r\n var EditorManager$1 = EditorManager;\r\n\r\n function RangeUtils(dom) {\r\n var walk = function (rng, callback) {\r\n return $_cuckrv3bjkmcwktk.walk(dom, rng, callback);\r\n };\r\n var split = $_bnmynr69jkmcwlir.split;\r\n var normalize = function (rng) {\r\n return $_21c07i4jjkmcwl7w.normalize(dom, rng).fold(constant(false), function (normalizedRng) {\r\n rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\r\n rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\r\n return true;\r\n });\r\n };\r\n return {\r\n walk: walk,\r\n split: split,\r\n normalize: normalize\r\n };\r\n }\r\n (function (RangeUtils) {\r\n RangeUtils.compareRanges = $_axtxv74kjkmcwl84.isEq;\r\n RangeUtils.getCaretRangeFromPoint = $_52q21w6wjkmcwlna.fromPoint;\r\n RangeUtils.getSelectedNode = getSelectedNode;\r\n RangeUtils.getNode = getNode;\r\n }(RangeUtils || (RangeUtils = {})));\r\n var RangeUtils$1 = RangeUtils;\r\n\r\n var min = Math.min;\r\n var max = Math.max;\r\n var round$2 = Math.round;\r\n var relativePosition = function (rect, targetRect, rel) {\r\n var x, y, w, h, targetW, targetH;\r\n x = targetRect.x;\r\n y = targetRect.y;\r\n w = rect.w;\r\n h = rect.h;\r\n targetW = targetRect.w;\r\n targetH = targetRect.h;\r\n rel = (rel || '').split('');\r\n if (rel[0] === 'b') {\r\n y += targetH;\r\n }\r\n if (rel[1] === 'r') {\r\n x += targetW;\r\n }\r\n if (rel[0] === 'c') {\r\n y += round$2(targetH / 2);\r\n }\r\n if (rel[1] === 'c') {\r\n x += round$2(targetW / 2);\r\n }\r\n if (rel[3] === 'b') {\r\n y -= h;\r\n }\r\n if (rel[4] === 'r') {\r\n x -= w;\r\n }\r\n if (rel[3] === 'c') {\r\n y -= round$2(h / 2);\r\n }\r\n if (rel[4] === 'c') {\r\n x -= round$2(w / 2);\r\n }\r\n return create$3(x, y, w, h);\r\n };\r\n var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {\r\n var pos, i;\r\n for (i = 0; i < rels.length; i++) {\r\n pos = relativePosition(rect, targetRect, rels[i]);\r\n if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\r\n return rels[i];\r\n }\r\n }\r\n return null;\r\n };\r\n var inflate = function (rect, w, h) {\r\n return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\r\n };\r\n var intersect = function (rect, cropRect) {\r\n var x1, y1, x2, y2;\r\n x1 = max(rect.x, cropRect.x);\r\n y1 = max(rect.y, cropRect.y);\r\n x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\r\n y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\r\n if (x2 - x1 < 0 || y2 - y1 < 0) {\r\n return null;\r\n }\r\n return create$3(x1, y1, x2 - x1, y2 - y1);\r\n };\r\n var clamp$1 = function (rect, clampRect, fixedSize) {\r\n var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;\r\n x1 = rect.x;\r\n y1 = rect.y;\r\n x2 = rect.x + rect.w;\r\n y2 = rect.y + rect.h;\r\n cx2 = clampRect.x + clampRect.w;\r\n cy2 = clampRect.y + clampRect.h;\r\n underflowX1 = max(0, clampRect.x - x1);\r\n underflowY1 = max(0, clampRect.y - y1);\r\n overflowX2 = max(0, x2 - cx2);\r\n overflowY2 = max(0, y2 - cy2);\r\n x1 += underflowX1;\r\n y1 += underflowY1;\r\n if (fixedSize) {\r\n x2 += underflowX1;\r\n y2 += underflowY1;\r\n x1 -= overflowX2;\r\n y1 -= overflowY2;\r\n }\r\n x2 -= overflowX2;\r\n y2 -= overflowY2;\r\n return create$3(x1, y1, x2 - x1, y2 - y1);\r\n };\r\n var create$3 = function (x, y, w, h) {\r\n return {\r\n x: x,\r\n y: y,\r\n w: w,\r\n h: h\r\n };\r\n };\r\n var fromClientRect = function (clientRect) {\r\n return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\r\n };\r\n var $_es7eh281jkmcwlv1 = {\r\n inflate: inflate,\r\n relativePosition: relativePosition,\r\n findBestRelativePosition: findBestRelativePosition,\r\n intersect: intersect,\r\n clamp: clamp$1,\r\n create: create$3,\r\n fromClientRect: fromClientRect\r\n };\r\n\r\n var types = {};\r\n var $_e5pe6n82jkmcwlv8 = {\r\n add: function (type, typeClass) {\r\n types[type.toLowerCase()] = typeClass;\r\n },\r\n has: function (type) {\r\n return !!types[type.toLowerCase()];\r\n },\r\n get: function (type) {\r\n var lctype = type.toLowerCase();\r\n var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null;\r\n if (controlType === null) {\r\n throw new Error('Could not find module for type: ' + type);\r\n }\r\n return controlType;\r\n },\r\n create: function (type, settings) {\r\n var ControlType;\r\n if (typeof type === 'string') {\r\n settings = settings || {};\r\n settings.type = type;\r\n } else {\r\n settings = type;\r\n type = settings.type;\r\n }\r\n type = type.toLowerCase();\r\n ControlType = types[type];\r\n if (!ControlType) {\r\n throw new Error('Could not find control by type: ' + type);\r\n }\r\n ControlType = new ControlType(settings);\r\n ControlType.type = type;\r\n return ControlType;\r\n }\r\n };\r\n\r\n var each$23 = $_4ujg4tljkmcwkbk.each;\r\n var extend$6 = $_4ujg4tljkmcwkbk.extend;\r\n var extendClass;\r\n var initializing;\r\n var Class$1 = function () {\r\n };\r\n Class$1.extend = extendClass = function (prop) {\r\n var self = this;\r\n var _super = self.prototype;\r\n var prototype, name, member;\r\n var Class = function () {\r\n var i, mixins, mixin;\r\n var self = this;\r\n if (!initializing) {\r\n if (self.init) {\r\n self.init.apply(self, arguments);\r\n }\r\n mixins = self.Mixins;\r\n if (mixins) {\r\n i = mixins.length;\r\n while (i--) {\r\n mixin = mixins[i];\r\n if (mixin.init) {\r\n mixin.init.apply(self, arguments);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var dummy = function () {\r\n return this;\r\n };\r\n var createMethod = function (name, fn) {\r\n return function () {\r\n var self = this;\r\n var tmp = self._super;\r\n var ret;\r\n self._super = _super[name];\r\n ret = fn.apply(self, arguments);\r\n self._super = tmp;\r\n return ret;\r\n };\r\n };\r\n initializing = true;\r\n prototype = new self();\r\n initializing = false;\r\n if (prop.Mixins) {\r\n each$23(prop.Mixins, function (mixin) {\r\n for (var name_1 in mixin) {\r\n if (name_1 !== 'init') {\r\n prop[name_1] = mixin[name_1];\r\n }\r\n }\r\n });\r\n if (_super.Mixins) {\r\n prop.Mixins = _super.Mixins.concat(prop.Mixins);\r\n }\r\n }\r\n if (prop.Methods) {\r\n each$23(prop.Methods.split(','), function (name) {\r\n prop[name] = dummy;\r\n });\r\n }\r\n if (prop.Properties) {\r\n each$23(prop.Properties.split(','), function (name) {\r\n var fieldName = '_' + name;\r\n prop[name] = function (value) {\r\n var self = this;\r\n if (value !== undefined) {\r\n self[fieldName] = value;\r\n return self;\r\n }\r\n return self[fieldName];\r\n };\r\n });\r\n }\r\n if (prop.Statics) {\r\n each$23(prop.Statics, function (func, name) {\r\n Class[name] = func;\r\n });\r\n }\r\n if (prop.Defaults && _super.Defaults) {\r\n prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults);\r\n }\r\n for (name in prop) {\r\n member = prop[name];\r\n if (typeof member === 'function' && _super[name]) {\r\n prototype[name] = createMethod(name, member);\r\n } else {\r\n prototype[name] = member;\r\n }\r\n }\r\n Class.prototype = prototype;\r\n Class.constructor = Class;\r\n Class.extend = extendClass;\r\n return Class;\r\n };\r\n\r\n var min$1 = Math.min;\r\n var max$1 = Math.max;\r\n var round$3 = Math.round;\r\n var Color = function (value) {\r\n var self = {};\r\n var r = 0, g = 0, b = 0;\r\n var rgb2hsv = function (r, g, b) {\r\n var h, s, v, d, minRGB, maxRGB;\r\n h = 0;\r\n s = 0;\r\n v = 0;\r\n r = r / 255;\r\n g = g / 255;\r\n b = b / 255;\r\n minRGB = min$1(r, min$1(g, b));\r\n maxRGB = max$1(r, max$1(g, b));\r\n if (minRGB === maxRGB) {\r\n v = minRGB;\r\n return {\r\n h: 0,\r\n s: 0,\r\n v: v * 100\r\n };\r\n }\r\n d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\r\n h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\r\n h = 60 * (h - d / (maxRGB - minRGB));\r\n s = (maxRGB - minRGB) / maxRGB;\r\n v = maxRGB;\r\n return {\r\n h: round$3(h),\r\n s: round$3(s * 100),\r\n v: round$3(v * 100)\r\n };\r\n };\r\n var hsvToRgb = function (hue, saturation, brightness) {\r\n var side, chroma, x, match;\r\n hue = (parseInt(hue, 10) || 0) % 360;\r\n saturation = parseInt(saturation, 10) / 100;\r\n brightness = parseInt(brightness, 10) / 100;\r\n saturation = max$1(0, min$1(saturation, 1));\r\n brightness = max$1(0, min$1(brightness, 1));\r\n if (saturation === 0) {\r\n r = g = b = round$3(255 * brightness);\r\n return;\r\n }\r\n side = hue / 60;\r\n chroma = brightness * saturation;\r\n x = chroma * (1 - Math.abs(side % 2 - 1));\r\n match = brightness - chroma;\r\n switch (Math.floor(side)) {\r\n case 0:\r\n r = chroma;\r\n g = x;\r\n b = 0;\r\n break;\r\n case 1:\r\n r = x;\r\n g = chroma;\r\n b = 0;\r\n break;\r\n case 2:\r\n r = 0;\r\n g = chroma;\r\n b = x;\r\n break;\r\n case 3:\r\n r = 0;\r\n g = x;\r\n b = chroma;\r\n break;\r\n case 4:\r\n r = x;\r\n g = 0;\r\n b = chroma;\r\n break;\r\n case 5:\r\n r = chroma;\r\n g = 0;\r\n b = x;\r\n break;\r\n default:\r\n r = g = b = 0;\r\n }\r\n r = round$3(255 * (r + match));\r\n g = round$3(255 * (g + match));\r\n b = round$3(255 * (b + match));\r\n };\r\n var toHex = function () {\r\n var hex = function (val) {\r\n val = parseInt(val, 10).toString(16);\r\n return val.length > 1 ? val : '0' + val;\r\n };\r\n return '#' + hex(r) + hex(g) + hex(b);\r\n };\r\n var toRgb = function () {\r\n return {\r\n r: r,\r\n g: g,\r\n b: b\r\n };\r\n };\r\n var toHsv = function () {\r\n return rgb2hsv(r, g, b);\r\n };\r\n var parse = function (value) {\r\n var matches;\r\n if (typeof value === 'object') {\r\n if ('r' in value) {\r\n r = value.r;\r\n g = value.g;\r\n b = value.b;\r\n } else if ('v' in value) {\r\n hsvToRgb(value.h, value.s, value.v);\r\n }\r\n } else {\r\n if (matches = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)[^\\)]*\\)/gi.exec(value)) {\r\n r = parseInt(matches[1], 10);\r\n g = parseInt(matches[2], 10);\r\n b = parseInt(matches[3], 10);\r\n } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {\r\n r = parseInt(matches[1], 16);\r\n g = parseInt(matches[2], 16);\r\n b = parseInt(matches[3], 16);\r\n } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {\r\n r = parseInt(matches[1] + matches[1], 16);\r\n g = parseInt(matches[2] + matches[2], 16);\r\n b = parseInt(matches[3] + matches[3], 16);\r\n }\r\n }\r\n r = r < 0 ? 0 : r > 255 ? 255 : r;\r\n g = g < 0 ? 0 : g > 255 ? 255 : g;\r\n b = b < 0 ? 0 : b > 255 ? 255 : b;\r\n return self;\r\n };\r\n if (value) {\r\n parse(value);\r\n }\r\n self.toRgb = toRgb;\r\n self.toHsv = toHsv;\r\n self.toHex = toHex;\r\n self.parse = parse;\r\n return self;\r\n };\r\n\r\n var serialize = function (o, quote) {\r\n var i, v, t, name;\r\n quote = quote || '\"';\r\n if (o === null) {\r\n return 'null';\r\n }\r\n t = typeof o;\r\n if (t === 'string') {\r\n v = '\\bb\\tt\\nn\\ff\\rr\"\"\\'\\'\\\\\\\\';\r\n return quote + o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"\\'\\\\])/g, function (a, b) {\r\n if (quote === '\"' && a === '\\'') {\r\n return a;\r\n }\r\n i = v.indexOf(b);\r\n if (i + 1) {\r\n return '\\\\' + v.charAt(i + 1);\r\n }\r\n a = b.charCodeAt().toString(16);\r\n return '\\\\u' + '0000'.substring(a.length) + a;\r\n }) + quote;\r\n }\r\n if (t === 'object') {\r\n if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {\r\n for (i = 0, v = '['; i < o.length; i++) {\r\n v += (i > 0 ? ',' : '') + serialize(o[i], quote);\r\n }\r\n return v + ']';\r\n }\r\n v = '{';\r\n for (name in o) {\r\n if (o.hasOwnProperty(name)) {\r\n v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : '';\r\n }\r\n }\r\n return v + '}';\r\n }\r\n return '' + o;\r\n };\r\n var $_6nxmdo85jkmcwlvi = {\r\n serialize: serialize,\r\n parse: function (text) {\r\n try {\r\n return JSON.parse(text);\r\n } catch (ex) {\r\n }\r\n }\r\n };\r\n\r\n var $_cygb5686jkmcwlvk = {\r\n callbacks: {},\r\n count: 0,\r\n send: function (settings) {\r\n var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;\r\n var id = 'tinymce_jsonp_' + count;\r\n self.callbacks[count] = function (json) {\r\n dom.remove(id);\r\n delete self.callbacks[count];\r\n settings.callback(json);\r\n };\r\n dom.add(dom.doc.body, 'script', {\r\n id: id,\r\n src: settings.url,\r\n type: 'text/javascript'\r\n });\r\n self.count++;\r\n }\r\n };\r\n\r\n var XHR = {\r\n send: function (settings) {\r\n var xhr, count = 0;\r\n var ready = function () {\r\n if (!settings.async || xhr.readyState === 4 || count++ > 10000) {\r\n if (settings.success && count < 10000 && xhr.status === 200) {\r\n settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);\r\n } else if (settings.error) {\r\n settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);\r\n }\r\n xhr = null;\r\n } else {\r\n setTimeout(ready, 10);\r\n }\r\n };\r\n settings.scope = settings.scope || this;\r\n settings.success_scope = settings.success_scope || settings.scope;\r\n settings.error_scope = settings.error_scope || settings.scope;\r\n settings.async = settings.async === false ? false : true;\r\n settings.data = settings.data || '';\r\n XHR.fire('beforeInitialize', { settings: settings });\r\n xhr = new XMLHttpRequest();\r\n if (xhr) {\r\n if (xhr.overrideMimeType) {\r\n xhr.overrideMimeType(settings.content_type);\r\n }\r\n xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);\r\n if (settings.crossDomain) {\r\n xhr.withCredentials = true;\r\n }\r\n if (settings.content_type) {\r\n xhr.setRequestHeader('Content-Type', settings.content_type);\r\n }\r\n if (settings.requestheaders) {\r\n $_4ujg4tljkmcwkbk.each(settings.requestheaders, function (header) {\r\n xhr.setRequestHeader(header.key, header.value);\r\n });\r\n }\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhr = XHR.fire('beforeSend', {\r\n xhr: xhr,\r\n settings: settings\r\n }).xhr;\r\n xhr.send(settings.data);\r\n if (!settings.async) {\r\n return ready();\r\n }\r\n setTimeout(ready, 10);\r\n }\r\n }\r\n };\r\n $_4ujg4tljkmcwkbk.extend(XHR, $_ed2ug44qjkmcwl97);\r\n\r\n var extend$7 = $_4ujg4tljkmcwkbk.extend;\r\n var JSONRequest = function (settings) {\r\n this.settings = extend$7({}, settings);\r\n this.count = 0;\r\n };\r\n JSONRequest.sendRPC = function (o) {\r\n return new JSONRequest().send(o);\r\n };\r\n JSONRequest.prototype = {\r\n send: function (args) {\r\n var ecb = args.error, scb = args.success;\r\n args = extend$7(this.settings, args);\r\n args.success = function (c, x) {\r\n c = $_6nxmdo85jkmcwlvi.parse(c);\r\n if (typeof c === 'undefined') {\r\n c = { error: 'JSON Parse error.' };\r\n }\r\n if (c.error) {\r\n ecb.call(args.error_scope || args.scope, c.error, x);\r\n } else {\r\n scb.call(args.success_scope || args.scope, c.result);\r\n }\r\n };\r\n args.error = function (ty, x) {\r\n if (ecb) {\r\n ecb.call(args.error_scope || args.scope, ty, x);\r\n }\r\n };\r\n args.data = $_6nxmdo85jkmcwlvi.serialize({\r\n id: args.id || 'c' + this.count++,\r\n method: args.method,\r\n params: args.params\r\n });\r\n args.content_type = 'application/json';\r\n XHR.send(args);\r\n }\r\n };\r\n\r\n var create$4 = function () {\r\n return function () {\r\n var data = {};\r\n var keys = [];\r\n var storage = {\r\n getItem: function (key) {\r\n var item = data[key];\r\n return item ? item : null;\r\n },\r\n setItem: function (key, value) {\r\n keys.push(key);\r\n data[key] = String(value);\r\n },\r\n key: function (index) {\r\n return keys[index];\r\n },\r\n removeItem: function (key) {\r\n keys = keys.filter(function (k) {\r\n return k === key;\r\n });\r\n delete data[key];\r\n },\r\n clear: function () {\r\n keys = [];\r\n data = {};\r\n },\r\n length: 0\r\n };\r\n Object.defineProperty(storage, 'length', {\r\n get: function () {\r\n return keys.length;\r\n },\r\n configurable: false,\r\n enumerable: false\r\n });\r\n return storage;\r\n }();\r\n };\r\n\r\n var localStorage$$1;\r\n try {\r\n localStorage$$1 = window.localStorage;\r\n } catch (e) {\r\n localStorage$$1 = create$4();\r\n }\r\n var LocalStorage = localStorage$$1;\r\n\r\n var tinymce = EditorManager$1;\r\n var publicApi = {\r\n geom: { Rect: $_es7eh281jkmcwlv1 },\r\n util: {\r\n Promise: promiseObj,\r\n Delay: $_3l01gcijkmcwk99,\r\n Tools: $_4ujg4tljkmcwkbk,\r\n VK: $_6bj5795wjkmcwlg6,\r\n URI: URI,\r\n Class: Class$1,\r\n EventDispatcher: Dispatcher,\r\n Observable: $_ed2ug44qjkmcwl97,\r\n I18n: $_9pp0ut7zjkmcwlut,\r\n XHR: XHR,\r\n JSON: $_6nxmdo85jkmcwlvi,\r\n JSONRequest: JSONRequest,\r\n JSONP: $_cygb5686jkmcwlvk,\r\n LocalStorage: LocalStorage,\r\n Color: Color\r\n },\r\n dom: {\r\n EventUtils: EventUtils,\r\n Sizzle: Sizzle,\r\n DomQuery: DomQuery,\r\n TreeWalker: TreeWalker,\r\n DOMUtils: DOMUtils$1,\r\n ScriptLoader: ScriptLoader,\r\n RangeUtils: RangeUtils$1,\r\n Serializer: DomSerializer$1,\r\n ControlSelection: ControlSelection,\r\n BookmarkManager: BookmarkManager$1,\r\n Selection: Selection$1,\r\n Event: EventUtils.Event\r\n },\r\n html: {\r\n Styles: Styles,\r\n Entities: $_33qwr1sjkmcwkip,\r\n Node: Node$2,\r\n Schema: Schema,\r\n SaxParser: SaxParser$1,\r\n DomParser: DomParser,\r\n Writer: Writer,\r\n Serializer: HtmlSerializer\r\n },\r\n ui: { Factory: $_e5pe6n82jkmcwlv8 },\r\n Env: $_cvvl9iajkmcwk25,\r\n AddOnManager: AddOnManager,\r\n Annotator: Annotator,\r\n Formatter: Formatter,\r\n UndoManager: UndoManager,\r\n EditorCommands: EditorCommands,\r\n WindowManager: WindowManager,\r\n NotificationManager: NotificationManager,\r\n EditorObservable: EditorObservable$1,\r\n Shortcuts: Shortcuts,\r\n Editor: Editor,\r\n FocusManager: $_48zpgt7xjkmcwlum,\r\n EditorManager: EditorManager$1,\r\n DOM: DOMUtils$1.DOM,\r\n ScriptLoader: ScriptLoader.ScriptLoader,\r\n PluginManager: AddOnManager.PluginManager,\r\n ThemeManager: AddOnManager.ThemeManager,\r\n trim: $_4ujg4tljkmcwkbk.trim,\r\n isArray: $_4ujg4tljkmcwkbk.isArray,\r\n is: $_4ujg4tljkmcwkbk.is,\r\n toArray: $_4ujg4tljkmcwkbk.toArray,\r\n makeMap: $_4ujg4tljkmcwkbk.makeMap,\r\n each: $_4ujg4tljkmcwkbk.each,\r\n map: $_4ujg4tljkmcwkbk.map,\r\n grep: $_4ujg4tljkmcwkbk.grep,\r\n inArray: $_4ujg4tljkmcwkbk.inArray,\r\n extend: $_4ujg4tljkmcwkbk.extend,\r\n create: $_4ujg4tljkmcwkbk.create,\r\n walk: $_4ujg4tljkmcwkbk.walk,\r\n createNS: $_4ujg4tljkmcwkbk.createNS,\r\n resolve: $_4ujg4tljkmcwkbk.resolve,\r\n explode: $_4ujg4tljkmcwkbk.explode,\r\n _addCacheSuffix: $_4ujg4tljkmcwkbk._addCacheSuffix,\r\n isOpera: $_cvvl9iajkmcwk25.opera,\r\n isWebKit: $_cvvl9iajkmcwk25.webkit,\r\n isIE: $_cvvl9iajkmcwk25.ie,\r\n isGecko: $_cvvl9iajkmcwk25.gecko,\r\n isMac: $_cvvl9iajkmcwk25.mac\r\n };\r\n tinymce = $_4ujg4tljkmcwkbk.extend(tinymce, publicApi);\r\n var Tinymce = tinymce;\r\n\r\n var exportToModuleLoaders = function (tinymce) {\r\n if (typeof module === 'object') {\r\n try {\r\n module.exports = tinymce;\r\n } catch (_) {\r\n }\r\n }\r\n };\r\n var exportToWindowGlobal = function (tinymce) {\r\n window.tinymce = tinymce;\r\n window.tinyMCE = tinymce;\r\n };\r\n exportToWindowGlobal(Tinymce);\r\n exportToModuleLoaders(Tinymce);\r\n\r\n}());\r\n})();\r\n","(function () {\r\nvar code = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var getMinWidth = function (editor) {\r\n return editor.getParam('code_dialog_width', 600);\r\n };\r\n var getMinHeight = function (editor) {\r\n return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));\r\n };\r\n var $_2agnwba2jkmcwo8k = {\r\n getMinWidth: getMinWidth,\r\n getMinHeight: getMinHeight\r\n };\r\n\r\n var setContent = function (editor, html) {\r\n editor.focus();\r\n editor.undoManager.transact(function () {\r\n editor.setContent(html);\r\n });\r\n editor.selection.setCursorLocation();\r\n editor.nodeChanged();\r\n };\r\n var getContent = function (editor) {\r\n return editor.getContent({ source_view: true });\r\n };\r\n var $_gf01w3a4jkmcwo8n = {\r\n setContent: setContent,\r\n getContent: getContent\r\n };\r\n\r\n var open = function (editor) {\r\n var minWidth = $_2agnwba2jkmcwo8k.getMinWidth(editor);\r\n var minHeight = $_2agnwba2jkmcwo8k.getMinHeight(editor);\r\n var win = editor.windowManager.open({\r\n title: 'Source code',\r\n body: {\r\n type: 'textbox',\r\n name: 'code',\r\n multiline: true,\r\n minWidth: minWidth,\r\n minHeight: minHeight,\r\n spellcheck: false,\r\n style: 'direction: ltr; text-align: left'\r\n },\r\n onSubmit: function (e) {\r\n $_gf01w3a4jkmcwo8n.setContent(editor, e.data.code);\r\n }\r\n });\r\n win.find('#code').value($_gf01w3a4jkmcwo8n.getContent(editor));\r\n };\r\n var $_4xs1xna1jkmcwo8j = { open: open };\r\n\r\n var register = function (editor) {\r\n editor.addCommand('mceCodeEditor', function () {\r\n $_4xs1xna1jkmcwo8j.open(editor);\r\n });\r\n };\r\n var $_atmzsea0jkmcwo8i = { register: register };\r\n\r\n var register$1 = function (editor) {\r\n editor.addButton('code', {\r\n icon: 'code',\r\n tooltip: 'Source code',\r\n onclick: function () {\r\n $_4xs1xna1jkmcwo8j.open(editor);\r\n }\r\n });\r\n editor.addMenuItem('code', {\r\n icon: 'code',\r\n text: 'Source code',\r\n onclick: function () {\r\n $_4xs1xna1jkmcwo8j.open(editor);\r\n }\r\n });\r\n };\r\n var $_f9f308a5jkmcwo8o = { register: register$1 };\r\n\r\n global.add('code', function (editor) {\r\n $_atmzsea0jkmcwo8i.register(editor);\r\n $_f9f308a5jkmcwo8o.register(editor);\r\n return {};\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&lang=css&\"","function _get(key) {\r\n return window.sessionStorage.getItem(key);\r\n};\r\n\r\nfunction _add(key, data) {\r\n window.sessionStorage.setItem(key, data);\r\n};\r\n\r\nfunction _update(key, data) {\r\n window.sessionStorage.setItem(key, data);\r\n};\r\n\r\nfunction _remove(key) {\r\n window.sessionStorage.removeItem(key);\r\n};\r\n\r\nfunction _reset() {\r\n window.sessionStorage.clear();\r\n};\r\n\r\nexport default {\r\n get: _get,\r\n add: _add,\r\n update: _update,\r\n remove: _remove,\r\n reset: _reset,\r\n}\r\n","import Vue from 'vue'\r\nimport Pikaday from 'pikaday'\r\nimport 'pikaday/scss/pikaday.scss'\r\n\r\nVue.directive('datepicker', {\r\n twoWay: true,\r\n bind: (el, binding, vnode) => {\r\n var picker = new Pikaday({\r\n field: el,\r\n format: 'DD/MM/YYYY',\r\n onSelect: () => {\r\n setVModelValue(picker.toString(), vnode)\r\n },\r\n i18n: {\r\n previousMonth: 'Mês Anterior',\r\n nextMonth: 'Mês Seguinte',\r\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\r\n weekdays: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\r\n weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\r\n }\r\n });\r\n \r\n function findVModelName(vnode) {\r\n return vnode.data.directives.find(function (o) {\r\n return o.name === 'model';\r\n }).expression;\r\n }\r\n\r\n function setVModelValue(value, vnode) {\r\n var prop = findVModelName(vnode)\r\n eval('vnode.context.' + prop + ' = ' + '\"' + value + '\"')\r\n }\r\n },\r\n\r\n})","(function () {\r\nvar link = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\r\n\r\n var assumeExternalTargets = function (editorSettings) {\r\n return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;\r\n };\r\n var hasContextToolbar = function (editorSettings) {\r\n return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;\r\n };\r\n var getLinkList = function (editorSettings) {\r\n return editorSettings.link_list;\r\n };\r\n var hasDefaultLinkTarget = function (editorSettings) {\r\n return typeof editorSettings.default_link_target === 'string';\r\n };\r\n var getDefaultLinkTarget = function (editorSettings) {\r\n return editorSettings.default_link_target;\r\n };\r\n var getTargetList = function (editorSettings) {\r\n return editorSettings.target_list;\r\n };\r\n var setTargetList = function (editor, list) {\r\n editor.settings.target_list = list;\r\n };\r\n var shouldShowTargetList = function (editorSettings) {\r\n return getTargetList(editorSettings) !== false;\r\n };\r\n var getRelList = function (editorSettings) {\r\n return editorSettings.rel_list;\r\n };\r\n var hasRelList = function (editorSettings) {\r\n return getRelList(editorSettings) !== undefined;\r\n };\r\n var getLinkClassList = function (editorSettings) {\r\n return editorSettings.link_class_list;\r\n };\r\n var hasLinkClassList = function (editorSettings) {\r\n return getLinkClassList(editorSettings) !== undefined;\r\n };\r\n var shouldShowLinkTitle = function (editorSettings) {\r\n return editorSettings.link_title !== false;\r\n };\r\n var allowUnsafeLinkTarget = function (editorSettings) {\r\n return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;\r\n };\r\n var $_7h5h1kfvjkmcwp8j = {\r\n assumeExternalTargets: assumeExternalTargets,\r\n hasContextToolbar: hasContextToolbar,\r\n getLinkList: getLinkList,\r\n hasDefaultLinkTarget: hasDefaultLinkTarget,\r\n getDefaultLinkTarget: getDefaultLinkTarget,\r\n getTargetList: getTargetList,\r\n setTargetList: setTargetList,\r\n shouldShowTargetList: shouldShowTargetList,\r\n getRelList: getRelList,\r\n hasRelList: hasRelList,\r\n getLinkClassList: getLinkClassList,\r\n hasLinkClassList: hasLinkClassList,\r\n shouldShowLinkTitle: shouldShowLinkTitle,\r\n allowUnsafeLinkTarget: allowUnsafeLinkTarget\r\n };\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var appendClickRemove = function (link, evt) {\r\n document.body.appendChild(link);\r\n link.dispatchEvent(evt);\r\n document.body.removeChild(link);\r\n };\r\n var open$$1 = function (url) {\r\n if (!global$3.ie || global$3.ie > 10) {\r\n var link = document.createElement('a');\r\n link.target = '_blank';\r\n link.href = url;\r\n link.rel = 'noreferrer noopener';\r\n var evt = document.createEvent('MouseEvents');\r\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\r\n appendClickRemove(link, evt);\r\n } else {\r\n var win = window.open('', '_blank');\r\n if (win) {\r\n win.opener = null;\r\n var doc = win.document;\r\n doc.open();\r\n doc.write('');\r\n doc.close();\r\n }\r\n }\r\n };\r\n var $_50rjczfwjkmcwp8l = { open: open$$1 };\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var toggleTargetRules = function (rel, isUnsafe) {\r\n var rules = ['noopener'];\r\n var newRel = rel ? rel.split(/\\s+/) : [];\r\n var toString = function (rel) {\r\n return global$4.trim(rel.sort().join(' '));\r\n };\r\n var addTargetRules = function (rel) {\r\n rel = removeTargetRules(rel);\r\n return rel.length ? rel.concat(rules) : rules;\r\n };\r\n var removeTargetRules = function (rel) {\r\n return rel.filter(function (val) {\r\n return global$4.inArray(rules, val) === -1;\r\n });\r\n };\r\n newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);\r\n return newRel.length ? toString(newRel) : null;\r\n };\r\n var trimCaretContainers = function (text) {\r\n return text.replace(/\\uFEFF/g, '');\r\n };\r\n var getAnchorElement = function (editor, selectedElm) {\r\n selectedElm = selectedElm || editor.selection.getNode();\r\n if (isImageFigure(selectedElm)) {\r\n return editor.dom.select('a[href]', selectedElm)[0];\r\n } else {\r\n return editor.dom.getParent(selectedElm, 'a[href]');\r\n }\r\n };\r\n var getAnchorText = function (selection, anchorElm) {\r\n var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });\r\n return trimCaretContainers(text);\r\n };\r\n var isLink = function (elm) {\r\n return elm && elm.nodeName === 'A' && elm.href;\r\n };\r\n var hasLinks = function (elements) {\r\n return global$4.grep(elements, isLink).length > 0;\r\n };\r\n var isOnlyTextSelected = function (html) {\r\n if (/]+>[^<]+<\\/a>$/.test(html) || html.indexOf('href=') === -1)) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n var isImageFigure = function (node) {\r\n return node && node.nodeName === 'FIGURE' && /\\bimage\\b/i.test(node.className);\r\n };\r\n var link = function (editor, attachState) {\r\n return function (data) {\r\n editor.undoManager.transact(function () {\r\n var selectedElm = editor.selection.getNode();\r\n var anchorElm = getAnchorElement(editor, selectedElm);\r\n var linkAttrs = {\r\n href: data.href,\r\n target: data.target ? data.target : null,\r\n rel: data.rel ? data.rel : null,\r\n class: data.class ? data.class : null,\r\n title: data.title ? data.title : null\r\n };\r\n if (!$_7h5h1kfvjkmcwp8j.hasRelList(editor.settings) && $_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\r\n linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');\r\n }\r\n if (data.href === attachState.href) {\r\n attachState.attach();\r\n attachState = {};\r\n }\r\n if (anchorElm) {\r\n editor.focus();\r\n if (data.hasOwnProperty('text')) {\r\n if ('innerText' in anchorElm) {\r\n anchorElm.innerText = data.text;\r\n } else {\r\n anchorElm.textContent = data.text;\r\n }\r\n }\r\n editor.dom.setAttribs(anchorElm, linkAttrs);\r\n editor.selection.select(anchorElm);\r\n editor.undoManager.add();\r\n } else {\r\n if (isImageFigure(selectedElm)) {\r\n linkImageFigure(editor, selectedElm, linkAttrs);\r\n } else if (data.hasOwnProperty('text')) {\r\n editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));\r\n } else {\r\n editor.execCommand('mceInsertLink', false, linkAttrs);\r\n }\r\n }\r\n });\r\n };\r\n };\r\n var unlink = function (editor) {\r\n return function () {\r\n editor.undoManager.transact(function () {\r\n var node = editor.selection.getNode();\r\n if (isImageFigure(node)) {\r\n unlinkImageFigure(editor, node);\r\n } else {\r\n editor.execCommand('unlink');\r\n }\r\n });\r\n };\r\n };\r\n var unlinkImageFigure = function (editor, fig) {\r\n var a, img;\r\n img = editor.dom.select('img', fig)[0];\r\n if (img) {\r\n a = editor.dom.getParents(img, 'a[href]', fig)[0];\r\n if (a) {\r\n a.parentNode.insertBefore(img, a);\r\n editor.dom.remove(a);\r\n }\r\n }\r\n };\r\n var linkImageFigure = function (editor, fig, attrs) {\r\n var a, img;\r\n img = editor.dom.select('img', fig)[0];\r\n if (img) {\r\n a = editor.dom.create('a', attrs);\r\n img.parentNode.insertBefore(a, img);\r\n a.appendChild(img);\r\n }\r\n };\r\n var $_f96xu2g0jkmcwp91 = {\r\n link: link,\r\n unlink: unlink,\r\n isLink: isLink,\r\n hasLinks: hasLinks,\r\n isOnlyTextSelected: isOnlyTextSelected,\r\n getAnchorElement: getAnchorElement,\r\n getAnchorText: getAnchorText,\r\n toggleTargetRules: toggleTargetRules\r\n };\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');\r\n\r\n var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');\r\n\r\n var attachState = {};\r\n var createLinkList = function (editor, callback) {\r\n var linkList = $_7h5h1kfvjkmcwp8j.getLinkList(editor.settings);\r\n if (typeof linkList === 'string') {\r\n global$6.send({\r\n url: linkList,\r\n success: function (text) {\r\n callback(editor, JSON.parse(text));\r\n }\r\n });\r\n } else if (typeof linkList === 'function') {\r\n linkList(function (list) {\r\n callback(editor, list);\r\n });\r\n } else {\r\n callback(editor, linkList);\r\n }\r\n };\r\n var buildListItems = function (inputList, itemCallback, startItems) {\r\n var appendItems = function (values, output) {\r\n output = output || [];\r\n global$4.each(values, function (item) {\r\n var menuItem = { text: item.text || item.title };\r\n if (item.menu) {\r\n menuItem.menu = appendItems(item.menu);\r\n } else {\r\n menuItem.value = item.value;\r\n if (itemCallback) {\r\n itemCallback(menuItem);\r\n }\r\n }\r\n output.push(menuItem);\r\n });\r\n return output;\r\n };\r\n return appendItems(inputList, startItems || []);\r\n };\r\n var delayedConfirm = function (editor, message, callback) {\r\n var rng = editor.selection.getRng();\r\n global$5.setEditorTimeout(editor, function () {\r\n editor.windowManager.confirm(message, function (state) {\r\n editor.selection.setRng(rng);\r\n callback(state);\r\n });\r\n });\r\n };\r\n var showDialog = function (editor, linkList) {\r\n var data = {};\r\n var selection = editor.selection;\r\n var dom = editor.dom;\r\n var anchorElm, initialText;\r\n var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;\r\n var linkListChangeHandler = function (e) {\r\n var textCtrl = win.find('#text');\r\n if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {\r\n textCtrl.value(e.control.text());\r\n }\r\n win.find('#href').value(e.control.value());\r\n };\r\n var buildAnchorListControl = function (url) {\r\n var anchorList = [];\r\n global$4.each(editor.dom.select('a:not([href])'), function (anchor) {\r\n var id = anchor.name || anchor.id;\r\n if (id) {\r\n anchorList.push({\r\n text: id,\r\n value: '#' + id,\r\n selected: url.indexOf('#' + id) !== -1\r\n });\r\n }\r\n });\r\n if (anchorList.length) {\r\n anchorList.unshift({\r\n text: 'None',\r\n value: ''\r\n });\r\n return {\r\n name: 'anchor',\r\n type: 'listbox',\r\n label: 'Anchors',\r\n values: anchorList,\r\n onselect: linkListChangeHandler\r\n };\r\n }\r\n };\r\n var updateText = function () {\r\n if (!initialText && onlyText && !data.text) {\r\n this.parent().parent().find('#text')[0].value(this.value());\r\n }\r\n };\r\n var urlChange = function (e) {\r\n var meta = e.meta || {};\r\n if (linkListCtrl) {\r\n linkListCtrl.value(editor.convertURL(this.value(), 'href'));\r\n }\r\n global$4.each(e.meta, function (value, key) {\r\n var inp = win.find('#' + key);\r\n if (key === 'text') {\r\n if (initialText.length === 0) {\r\n inp.value(value);\r\n data.text = value;\r\n }\r\n } else {\r\n inp.value(value);\r\n }\r\n });\r\n if (meta.attach) {\r\n attachState = {\r\n href: this.value(),\r\n attach: meta.attach\r\n };\r\n }\r\n if (!meta.text) {\r\n updateText.call(this);\r\n }\r\n };\r\n var onBeforeCall = function (e) {\r\n e.meta = win.toJSON();\r\n };\r\n onlyText = $_f96xu2g0jkmcwp91.isOnlyTextSelected(selection.getContent());\r\n anchorElm = $_f96xu2g0jkmcwp91.getAnchorElement(editor);\r\n data.text = initialText = $_f96xu2g0jkmcwp91.getAnchorText(editor.selection, anchorElm);\r\n data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';\r\n if (anchorElm) {\r\n data.target = dom.getAttrib(anchorElm, 'target');\r\n } else if ($_7h5h1kfvjkmcwp8j.hasDefaultLinkTarget(editor.settings)) {\r\n data.target = $_7h5h1kfvjkmcwp8j.getDefaultLinkTarget(editor.settings);\r\n }\r\n if (value = dom.getAttrib(anchorElm, 'rel')) {\r\n data.rel = value;\r\n }\r\n if (value = dom.getAttrib(anchorElm, 'class')) {\r\n data.class = value;\r\n }\r\n if (value = dom.getAttrib(anchorElm, 'title')) {\r\n data.title = value;\r\n }\r\n if (onlyText) {\r\n textListCtrl = {\r\n name: 'text',\r\n type: 'textbox',\r\n size: 40,\r\n label: 'Text to display',\r\n onchange: function () {\r\n data.text = this.value();\r\n }\r\n };\r\n }\r\n if (linkList) {\r\n linkListCtrl = {\r\n type: 'listbox',\r\n label: 'Link list',\r\n values: buildListItems(linkList, function (item) {\r\n item.value = editor.convertURL(item.value || item.url, 'href');\r\n }, [{\r\n text: 'None',\r\n value: ''\r\n }]),\r\n onselect: linkListChangeHandler,\r\n value: editor.convertURL(data.href, 'href'),\r\n onPostRender: function () {\r\n linkListCtrl = this;\r\n }\r\n };\r\n }\r\n if ($_7h5h1kfvjkmcwp8j.shouldShowTargetList(editor.settings)) {\r\n if ($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings) === undefined) {\r\n $_7h5h1kfvjkmcwp8j.setTargetList(editor, [\r\n {\r\n text: 'None',\r\n value: ''\r\n },\r\n {\r\n text: 'New window',\r\n value: '_blank'\r\n }\r\n ]);\r\n }\r\n targetListCtrl = {\r\n name: 'target',\r\n type: 'listbox',\r\n label: 'Target',\r\n values: buildListItems($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings))\r\n };\r\n }\r\n if ($_7h5h1kfvjkmcwp8j.hasRelList(editor.settings)) {\r\n relListCtrl = {\r\n name: 'rel',\r\n type: 'listbox',\r\n label: 'Rel',\r\n values: buildListItems($_7h5h1kfvjkmcwp8j.getRelList(editor.settings), function (item) {\r\n if ($_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\r\n item.value = $_f96xu2g0jkmcwp91.toggleTargetRules(item.value, data.target === '_blank');\r\n }\r\n })\r\n };\r\n }\r\n if ($_7h5h1kfvjkmcwp8j.hasLinkClassList(editor.settings)) {\r\n classListCtrl = {\r\n name: 'class',\r\n type: 'listbox',\r\n label: 'Class',\r\n values: buildListItems($_7h5h1kfvjkmcwp8j.getLinkClassList(editor.settings), function (item) {\r\n if (item.value) {\r\n item.textStyle = function () {\r\n return editor.formatter.getCssText({\r\n inline: 'a',\r\n classes: [item.value]\r\n });\r\n };\r\n }\r\n })\r\n };\r\n }\r\n if ($_7h5h1kfvjkmcwp8j.shouldShowLinkTitle(editor.settings)) {\r\n linkTitleCtrl = {\r\n name: 'title',\r\n type: 'textbox',\r\n label: 'Title',\r\n value: data.title\r\n };\r\n }\r\n win = editor.windowManager.open({\r\n title: 'Insert link',\r\n data: data,\r\n body: [\r\n {\r\n name: 'href',\r\n type: 'filepicker',\r\n filetype: 'file',\r\n size: 40,\r\n autofocus: true,\r\n label: 'Url',\r\n onchange: urlChange,\r\n onkeyup: updateText,\r\n onpaste: updateText,\r\n onbeforecall: onBeforeCall\r\n },\r\n textListCtrl,\r\n linkTitleCtrl,\r\n buildAnchorListControl(data.href),\r\n linkListCtrl,\r\n relListCtrl,\r\n targetListCtrl,\r\n classListCtrl\r\n ],\r\n onSubmit: function (e) {\r\n var assumeExternalTargets = $_7h5h1kfvjkmcwp8j.assumeExternalTargets(editor.settings);\r\n var insertLink = $_f96xu2g0jkmcwp91.link(editor, attachState);\r\n var removeLink = $_f96xu2g0jkmcwp91.unlink(editor);\r\n var resultData = global$4.extend({}, data, e.data);\r\n var href = resultData.href;\r\n if (!href) {\r\n removeLink();\r\n return;\r\n }\r\n if (!onlyText || resultData.text === initialText) {\r\n delete resultData.text;\r\n }\r\n if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {\r\n delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {\r\n if (state) {\r\n resultData.href = 'mailto:' + href;\r\n }\r\n insertLink(resultData);\r\n });\r\n return;\r\n }\r\n if (assumeExternalTargets === true && !/^\\w+:/i.test(href) || assumeExternalTargets === false && /^\\s*www[\\.|\\d\\.]/i.test(href)) {\r\n delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {\r\n if (state) {\r\n resultData.href = 'http://' + href;\r\n }\r\n insertLink(resultData);\r\n });\r\n return;\r\n }\r\n insertLink(resultData);\r\n }\r\n });\r\n };\r\n var open$1 = function (editor) {\r\n createLinkList(editor, showDialog);\r\n };\r\n var $_1hdbnpg2jkmcwp96 = { open: open$1 };\r\n\r\n var getLink = function (editor, elm) {\r\n return editor.dom.getParent(elm, 'a[href]');\r\n };\r\n var getSelectedLink = function (editor) {\r\n return getLink(editor, editor.selection.getStart());\r\n };\r\n var getHref = function (elm) {\r\n var href = elm.getAttribute('data-mce-href');\r\n return href ? href : elm.getAttribute('href');\r\n };\r\n var isContextMenuVisible = function (editor) {\r\n var contextmenu = editor.plugins.contextmenu;\r\n return contextmenu ? contextmenu.isContextMenuVisible() : false;\r\n };\r\n var hasOnlyAltModifier = function (e) {\r\n return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\r\n };\r\n var gotoLink = function (editor, a) {\r\n if (a) {\r\n var href = getHref(a);\r\n if (/^#/.test(href)) {\r\n var targetEl = editor.$(href);\r\n if (targetEl.length) {\r\n editor.selection.scrollIntoView(targetEl[0], true);\r\n }\r\n } else {\r\n $_50rjczfwjkmcwp8l.open(a.href);\r\n }\r\n }\r\n };\r\n var openDialog = function (editor) {\r\n return function () {\r\n $_1hdbnpg2jkmcwp96.open(editor);\r\n };\r\n };\r\n var gotoSelectedLink = function (editor) {\r\n return function () {\r\n gotoLink(editor, getSelectedLink(editor));\r\n };\r\n };\r\n var leftClickedOnAHref = function (editor) {\r\n return function (elm) {\r\n var sel, rng, node;\r\n if ($_7h5h1kfvjkmcwp8j.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && $_f96xu2g0jkmcwp91.isLink(elm)) {\r\n sel = editor.selection;\r\n rng = sel.getRng();\r\n node = rng.startContainer;\r\n if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var setupGotoLinks = function (editor) {\r\n editor.on('click', function (e) {\r\n var link = getLink(editor, e.target);\r\n if (link && global$1.metaKeyPressed(e)) {\r\n e.preventDefault();\r\n gotoLink(editor, link);\r\n }\r\n });\r\n editor.on('keydown', function (e) {\r\n var link = getSelectedLink(editor);\r\n if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {\r\n e.preventDefault();\r\n gotoLink(editor, link);\r\n }\r\n });\r\n };\r\n var toggleActiveState = function (editor) {\r\n return function () {\r\n var self = this;\r\n editor.on('nodechange', function (e) {\r\n self.active(!editor.readonly && !!$_f96xu2g0jkmcwp91.getAnchorElement(editor, e.element));\r\n });\r\n };\r\n };\r\n var toggleViewLinkState = function (editor) {\r\n return function () {\r\n var self = this;\r\n var toggleVisibility = function (e) {\r\n if ($_f96xu2g0jkmcwp91.hasLinks(e.parents)) {\r\n self.show();\r\n } else {\r\n self.hide();\r\n }\r\n };\r\n if (!$_f96xu2g0jkmcwp91.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {\r\n self.hide();\r\n }\r\n editor.on('nodechange', toggleVisibility);\r\n self.on('remove', function () {\r\n editor.off('nodechange', toggleVisibility);\r\n });\r\n };\r\n };\r\n var $_dlew49ftjkmcwp8f = {\r\n openDialog: openDialog,\r\n gotoSelectedLink: gotoSelectedLink,\r\n leftClickedOnAHref: leftClickedOnAHref,\r\n setupGotoLinks: setupGotoLinks,\r\n toggleActiveState: toggleActiveState,\r\n toggleViewLinkState: toggleViewLinkState\r\n };\r\n\r\n var register = function (editor) {\r\n editor.addCommand('mceLink', $_dlew49ftjkmcwp8f.openDialog(editor));\r\n };\r\n var $_3nvo42fsjkmcwp8b = { register: register };\r\n\r\n var setup = function (editor) {\r\n editor.addShortcut('Meta+K', '', $_dlew49ftjkmcwp8f.openDialog(editor));\r\n };\r\n var $_aoohpyg5jkmcwp9f = { setup: setup };\r\n\r\n var setupButtons = function (editor) {\r\n editor.addButton('link', {\r\n active: false,\r\n icon: 'link',\r\n tooltip: 'Insert/edit link',\r\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\r\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\r\n });\r\n editor.addButton('unlink', {\r\n active: false,\r\n icon: 'unlink',\r\n tooltip: 'Remove link',\r\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\r\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\r\n });\r\n if (editor.addContextToolbar) {\r\n editor.addButton('openlink', {\r\n icon: 'newtab',\r\n tooltip: 'Open link',\r\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor)\r\n });\r\n }\r\n };\r\n var setupMenuItems = function (editor) {\r\n editor.addMenuItem('openlink', {\r\n text: 'Open link',\r\n icon: 'newtab',\r\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor),\r\n onPostRender: $_dlew49ftjkmcwp8f.toggleViewLinkState(editor),\r\n prependToContext: true\r\n });\r\n editor.addMenuItem('link', {\r\n icon: 'link',\r\n text: 'Link',\r\n shortcut: 'Meta+K',\r\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\r\n stateSelector: 'a[href]',\r\n context: 'insert',\r\n prependToContext: true\r\n });\r\n editor.addMenuItem('unlink', {\r\n icon: 'unlink',\r\n text: 'Remove link',\r\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\r\n stateSelector: 'a[href]'\r\n });\r\n };\r\n var setupContextToolbars = function (editor) {\r\n if (editor.addContextToolbar) {\r\n editor.addContextToolbar($_dlew49ftjkmcwp8f.leftClickedOnAHref(editor), 'openlink | link unlink');\r\n }\r\n };\r\n var $_3wxsofg6jkmcwp9g = {\r\n setupButtons: setupButtons,\r\n setupMenuItems: setupMenuItems,\r\n setupContextToolbars: setupContextToolbars\r\n };\r\n\r\n global.add('link', function (editor) {\r\n $_3wxsofg6jkmcwp9g.setupButtons(editor);\r\n $_3wxsofg6jkmcwp9g.setupMenuItems(editor);\r\n $_3wxsofg6jkmcwp9g.setupContextToolbars(editor);\r\n $_dlew49ftjkmcwp8f.setupGotoLinks(editor);\r\n $_3nvo42fsjkmcwp8b.register(editor);\r\n $_aoohpyg5jkmcwp9f.setup(editor);\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","module.exports = __webpack_public_path__ + \"img/logo_cna_circulo.30c72b34.png\";","(function () {\r\nvar paste = (function () {\r\n 'use strict';\r\n\r\n var Cell = function (initial) {\r\n var value = initial;\r\n var get = function () {\r\n return value;\r\n };\r\n var set = function (v) {\r\n value = v;\r\n };\r\n var clone = function () {\r\n return Cell(get());\r\n };\r\n return {\r\n get: get,\r\n set: set,\r\n clone: clone\r\n };\r\n };\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var hasProPlugin = function (editor) {\r\n if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {\r\n if (typeof window.console !== 'undefined' && window.console.log) {\r\n window.console.log('PowerPaste is incompatible with Paste plugin! Remove \\'paste\\' from the \\'plugins\\' option.');\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n var $_ee0gktiejkmcwpkb = { hasProPlugin: hasProPlugin };\r\n\r\n var get = function (clipboard, quirks) {\r\n return {\r\n clipboard: clipboard,\r\n quirks: quirks\r\n };\r\n };\r\n var $_6khw6eigjkmcwpkp = { get: get };\r\n\r\n var firePastePreProcess = function (editor, html, internal, isWordHtml) {\r\n return editor.fire('PastePreProcess', {\r\n content: html,\r\n internal: internal,\r\n wordContent: isWordHtml\r\n });\r\n };\r\n var firePastePostProcess = function (editor, node, internal, isWordHtml) {\r\n return editor.fire('PastePostProcess', {\r\n node: node,\r\n internal: internal,\r\n wordContent: isWordHtml\r\n });\r\n };\r\n var firePastePlainTextToggle = function (editor, state) {\r\n return editor.fire('PastePlainTextToggle', { state: state });\r\n };\r\n var firePaste = function (editor, ieFake) {\r\n return editor.fire('paste', { ieFake: ieFake });\r\n };\r\n var $_d8ovv8ijjkmcwpku = {\r\n firePastePreProcess: firePastePreProcess,\r\n firePastePostProcess: firePastePostProcess,\r\n firePastePlainTextToggle: firePastePlainTextToggle,\r\n firePaste: firePaste\r\n };\r\n\r\n var shouldPlainTextInform = function (editor) {\r\n return editor.getParam('paste_plaintext_inform', true);\r\n };\r\n var shouldBlockDrop = function (editor) {\r\n return editor.getParam('paste_block_drop', false);\r\n };\r\n var shouldPasteDataImages = function (editor) {\r\n return editor.getParam('paste_data_images', false);\r\n };\r\n var shouldFilterDrop = function (editor) {\r\n return editor.getParam('paste_filter_drop', true);\r\n };\r\n var getPreProcess = function (editor) {\r\n return editor.getParam('paste_preprocess');\r\n };\r\n var getPostProcess = function (editor) {\r\n return editor.getParam('paste_postprocess');\r\n };\r\n var getWebkitStyles = function (editor) {\r\n return editor.getParam('paste_webkit_styles');\r\n };\r\n var shouldRemoveWebKitStyles = function (editor) {\r\n return editor.getParam('paste_remove_styles_if_webkit', true);\r\n };\r\n var shouldMergeFormats = function (editor) {\r\n return editor.getParam('paste_merge_formats', true);\r\n };\r\n var isSmartPasteEnabled = function (editor) {\r\n return editor.getParam('smart_paste', true);\r\n };\r\n var isPasteAsTextEnabled = function (editor) {\r\n return editor.getParam('paste_as_text', false);\r\n };\r\n var getRetainStyleProps = function (editor) {\r\n return editor.getParam('paste_retain_style_properties');\r\n };\r\n var getWordValidElements = function (editor) {\r\n var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody';\r\n return editor.getParam('paste_word_valid_elements', defaultValidElements);\r\n };\r\n var shouldConvertWordFakeLists = function (editor) {\r\n return editor.getParam('paste_convert_word_fake_lists', true);\r\n };\r\n var shouldUseDefaultFilters = function (editor) {\r\n return editor.getParam('paste_enable_default_filters', true);\r\n };\r\n var $_5peev0ikjkmcwpkv = {\r\n shouldPlainTextInform: shouldPlainTextInform,\r\n shouldBlockDrop: shouldBlockDrop,\r\n shouldPasteDataImages: shouldPasteDataImages,\r\n shouldFilterDrop: shouldFilterDrop,\r\n getPreProcess: getPreProcess,\r\n getPostProcess: getPostProcess,\r\n getWebkitStyles: getWebkitStyles,\r\n shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,\r\n shouldMergeFormats: shouldMergeFormats,\r\n isSmartPasteEnabled: isSmartPasteEnabled,\r\n isPasteAsTextEnabled: isPasteAsTextEnabled,\r\n getRetainStyleProps: getRetainStyleProps,\r\n getWordValidElements: getWordValidElements,\r\n shouldConvertWordFakeLists: shouldConvertWordFakeLists,\r\n shouldUseDefaultFilters: shouldUseDefaultFilters\r\n };\r\n\r\n var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {\r\n return userIsInformedState.get() === false && $_5peev0ikjkmcwpkv.shouldPlainTextInform(editor);\r\n };\r\n var displayNotification = function (editor, message) {\r\n editor.notificationManager.open({\r\n text: editor.translate(message),\r\n type: 'info'\r\n });\r\n };\r\n var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {\r\n if (clipboard.pasteFormat.get() === 'text') {\r\n clipboard.pasteFormat.set('html');\r\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, false);\r\n } else {\r\n clipboard.pasteFormat.set('text');\r\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, true);\r\n if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {\r\n displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');\r\n userIsInformedState.set(true);\r\n }\r\n }\r\n editor.focus();\r\n };\r\n var $_7rw4pkiijkmcwpks = { togglePlainTextPaste: togglePlainTextPaste };\r\n\r\n var register = function (editor, clipboard, userIsInformedState) {\r\n editor.addCommand('mceTogglePlainTextPaste', function () {\r\n $_7rw4pkiijkmcwpks.togglePlainTextPaste(editor, clipboard, userIsInformedState);\r\n });\r\n editor.addCommand('mceInsertClipboardContent', function (ui, value) {\r\n if (value.content) {\r\n clipboard.pasteHtml(value.content, value.internal);\r\n }\r\n if (value.text) {\r\n clipboard.pasteText(value.text);\r\n }\r\n });\r\n };\r\n var $_gh26txihjkmcwpkr = { register: register };\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\r\n\r\n var internalMimeType = 'x-tinymce/html';\r\n var internalMark = '';\r\n var mark = function (html) {\r\n return internalMark + html;\r\n };\r\n var unmark = function (html) {\r\n return html.replace(internalMark, '');\r\n };\r\n var isMarked = function (html) {\r\n return html.indexOf(internalMark) !== -1;\r\n };\r\n var $_93gcj3irjkmcwpld = {\r\n mark: mark,\r\n unmark: unmark,\r\n isMarked: isMarked,\r\n internalHtmlMime: function () {\r\n return internalMimeType;\r\n }\r\n };\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');\r\n\r\n var isPlainText = function (text) {\r\n return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\r\n };\r\n var toBRs = function (text) {\r\n return text.replace(/\\r?\\n/g, '
    ');\r\n };\r\n var openContainer = function (rootTag, rootAttrs) {\r\n var key;\r\n var attrs = [];\r\n var tag = '<' + rootTag;\r\n if (typeof rootAttrs === 'object') {\r\n for (key in rootAttrs) {\r\n if (rootAttrs.hasOwnProperty(key)) {\r\n attrs.push(key + '=\"' + global$5.encodeAllRaw(rootAttrs[key]) + '\"');\r\n }\r\n }\r\n if (attrs.length) {\r\n tag += ' ' + attrs.join(' ');\r\n }\r\n }\r\n return tag + '>';\r\n };\r\n var toBlockElements = function (text, rootTag, rootAttrs) {\r\n var blocks = text.split(/\\n\\n/);\r\n var tagOpen = openContainer(rootTag, rootAttrs);\r\n var tagClose = '';\r\n var paragraphs = global$3.map(blocks, function (p) {\r\n return p.split(/\\n/).join('
    ');\r\n });\r\n var stitch = function (p) {\r\n return tagOpen + p + tagClose;\r\n };\r\n return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');\r\n };\r\n var convert = function (text, rootTag, rootAttrs) {\r\n return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);\r\n };\r\n var $_3nag2qisjkmcwple = {\r\n isPlainText: isPlainText,\r\n convert: convert,\r\n toBRs: toBRs,\r\n toBlockElements: toBlockElements\r\n };\r\n\r\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');\r\n\r\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');\r\n\r\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');\r\n\r\n var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');\r\n\r\n function filter(content, items) {\r\n global$3.each(items, function (v) {\r\n if (v.constructor === RegExp) {\r\n content = content.replace(v, '');\r\n } else {\r\n content = content.replace(v[0], v[1]);\r\n }\r\n });\r\n return content;\r\n }\r\n function innerText(html) {\r\n var schema = global$8();\r\n var domParser = global$6({}, schema);\r\n var text = '';\r\n var shortEndedElements = schema.getShortEndedElements();\r\n var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');\r\n var blockElements = schema.getBlockElements();\r\n function walk(node) {\r\n var name$$1 = node.name, currentNode = node;\r\n if (name$$1 === 'br') {\r\n text += '\\n';\r\n return;\r\n }\r\n if (shortEndedElements[name$$1]) {\r\n text += ' ';\r\n }\r\n if (ignoreElements[name$$1]) {\r\n text += ' ';\r\n return;\r\n }\r\n if (node.type === 3) {\r\n text += node.value;\r\n }\r\n if (!node.shortEnded) {\r\n if (node = node.firstChild) {\r\n do {\r\n walk(node);\r\n } while (node = node.next);\r\n }\r\n }\r\n if (blockElements[name$$1] && currentNode.next) {\r\n text += '\\n';\r\n if (name$$1 === 'p') {\r\n text += '\\n';\r\n }\r\n }\r\n }\r\n html = filter(html, [//g]);\r\n walk(domParser.parse(html));\r\n return text;\r\n }\r\n function trimHtml(html) {\r\n function trimSpaces(all, s1, s2) {\r\n if (!s1 && !s2) {\r\n return ' ';\r\n }\r\n return '\\xA0';\r\n }\r\n html = filter(html, [\r\n /^[\\s\\S]*]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\r\n /|/g,\r\n [\r\n /( ?)\\u00a0<\\/span>( ?)/g,\r\n trimSpaces\r\n ],\r\n /
    /g,\r\n /
    $/i\r\n ]);\r\n return html;\r\n }\r\n function createIdGenerator(prefix) {\r\n var count = 0;\r\n return function () {\r\n return prefix + count++;\r\n };\r\n }\r\n var isMsEdge = function () {\r\n return navigator.userAgent.indexOf(' Edge/') !== -1;\r\n };\r\n var $_2u5gcyj0jkmcwplv = {\r\n filter: filter,\r\n innerText: innerText,\r\n trimHtml: trimHtml,\r\n createIdGenerator: createIdGenerator,\r\n isMsEdge: isMsEdge\r\n };\r\n\r\n function isWordContent(content) {\r\n return / 1) {\r\n currentListNode.attr('start', '' + start);\r\n }\r\n paragraphNode.wrap(currentListNode);\r\n } else {\r\n currentListNode.append(paragraphNode);\r\n }\r\n paragraphNode.name = 'li';\r\n if (level > lastLevel && prevListNode) {\r\n prevListNode.lastChild.append(currentListNode);\r\n }\r\n lastLevel = level;\r\n removeIgnoredNodes(paragraphNode);\r\n trimListStart(paragraphNode, /^\\u00a0+/);\r\n trimListStart(paragraphNode, /^\\s*([\\u2022\\u00b7\\u00a7\\u25CF]|\\w+\\.)/);\r\n trimListStart(paragraphNode, /^\\u00a0+/);\r\n }\r\n var elements = [];\r\n var child = node.firstChild;\r\n while (typeof child !== 'undefined' && child !== null) {\r\n elements.push(child);\r\n child = child.walk();\r\n if (child !== null) {\r\n while (typeof child !== 'undefined' && child.parent !== node) {\r\n child = child.walk();\r\n }\r\n }\r\n }\r\n for (var i = 0; i < elements.length; i++) {\r\n node = elements[i];\r\n if (node.name === 'p' && node.firstChild) {\r\n var nodeText = getText(node);\r\n if (isBulletList(nodeText)) {\r\n convertParagraphToLi(node, 'ul');\r\n continue;\r\n }\r\n if (isNumericList(nodeText)) {\r\n var matches = /([0-9]+)\\./.exec(nodeText);\r\n var start = 1;\r\n if (matches) {\r\n start = parseInt(matches[1], 10);\r\n }\r\n convertParagraphToLi(node, 'ol', start);\r\n continue;\r\n }\r\n if (node._listLevel) {\r\n convertParagraphToLi(node, 'ul', 1);\r\n continue;\r\n }\r\n currentListNode = null;\r\n } else {\r\n prevListNode = currentListNode;\r\n currentListNode = null;\r\n }\r\n }\r\n }\r\n function filterStyles(editor, validStyles, node, styleValue) {\r\n var outputStyles = {}, matches;\r\n var styles = editor.dom.parseStyle(styleValue);\r\n global$3.each(styles, function (value, name) {\r\n switch (name) {\r\n case 'mso-list':\r\n matches = /\\w+ \\w+([0-9]+)/i.exec(styleValue);\r\n if (matches) {\r\n node._listLevel = parseInt(matches[1], 10);\r\n }\r\n if (/Ignore/i.test(value) && node.firstChild) {\r\n node._listIgnore = true;\r\n node.firstChild._listIgnore = true;\r\n }\r\n break;\r\n case 'horiz-align':\r\n name = 'text-align';\r\n break;\r\n case 'vert-align':\r\n name = 'vertical-align';\r\n break;\r\n case 'font-color':\r\n case 'mso-foreground':\r\n name = 'color';\r\n break;\r\n case 'mso-background':\r\n case 'mso-highlight':\r\n name = 'background';\r\n break;\r\n case 'font-weight':\r\n case 'font-style':\r\n if (value !== 'normal') {\r\n outputStyles[name] = value;\r\n }\r\n return;\r\n case 'mso-element':\r\n if (/^(comment|comment-list)$/i.test(value)) {\r\n node.remove();\r\n return;\r\n }\r\n break;\r\n }\r\n if (name.indexOf('mso-comment') === 0) {\r\n node.remove();\r\n return;\r\n }\r\n if (name.indexOf('mso-') === 0) {\r\n return;\r\n }\r\n if ($_5peev0ikjkmcwpkv.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {\r\n outputStyles[name] = value;\r\n }\r\n });\r\n if (/(bold)/i.test(outputStyles['font-weight'])) {\r\n delete outputStyles['font-weight'];\r\n node.wrap(new global$7('b', 1));\r\n }\r\n if (/(italic)/i.test(outputStyles['font-style'])) {\r\n delete outputStyles['font-style'];\r\n node.wrap(new global$7('i', 1));\r\n }\r\n outputStyles = editor.dom.serializeStyle(outputStyles, node.name);\r\n if (outputStyles) {\r\n return outputStyles;\r\n }\r\n return null;\r\n }\r\n var filterWordContent = function (editor, content) {\r\n var retainStyleProperties, validStyles;\r\n retainStyleProperties = $_5peev0ikjkmcwpkv.getRetainStyleProps(editor);\r\n if (retainStyleProperties) {\r\n validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));\r\n }\r\n content = $_2u5gcyj0jkmcwplv.filter(content, [\r\n /
    /gi,\r\n /]+id=\"?docs-internal-[^>]*>/gi,\r\n //gi,\r\n /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\r\n [\r\n /<(\\/?)s>/gi,\r\n '<$1strike>'\r\n ],\r\n [\r\n / /gi,\r\n '\\xA0'\r\n ],\r\n [\r\n /([\\s\\u00a0]*)<\\/span>/gi,\r\n function (str, spaces) {\r\n return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\\xA0') : '';\r\n }\r\n ]\r\n ]);\r\n var validElements = $_5peev0ikjkmcwpkv.getWordValidElements(editor);\r\n var schema = global$8({\r\n valid_elements: validElements,\r\n valid_children: '-li[p]'\r\n });\r\n global$3.each(schema.elements, function (rule) {\r\n if (!rule.attributes.class) {\r\n rule.attributes.class = {};\r\n rule.attributesOrder.push('class');\r\n }\r\n if (!rule.attributes.style) {\r\n rule.attributes.style = {};\r\n rule.attributesOrder.push('style');\r\n }\r\n });\r\n var domParser = global$6({}, schema);\r\n domParser.addAttributeFilter('style', function (nodes) {\r\n var i = nodes.length, node;\r\n while (i--) {\r\n node = nodes[i];\r\n node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));\r\n if (node.name === 'span' && node.parent && !node.attributes.length) {\r\n node.unwrap();\r\n }\r\n }\r\n });\r\n domParser.addAttributeFilter('class', function (nodes) {\r\n var i = nodes.length, node, className;\r\n while (i--) {\r\n node = nodes[i];\r\n className = node.attr('class');\r\n if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {\r\n node.remove();\r\n }\r\n node.attr('class', null);\r\n }\r\n });\r\n domParser.addNodeFilter('del', function (nodes) {\r\n var i = nodes.length;\r\n while (i--) {\r\n nodes[i].remove();\r\n }\r\n });\r\n domParser.addNodeFilter('a', function (nodes) {\r\n var i = nodes.length, node, href, name;\r\n while (i--) {\r\n node = nodes[i];\r\n href = node.attr('href');\r\n name = node.attr('name');\r\n if (href && href.indexOf('#_msocom_') !== -1) {\r\n node.remove();\r\n continue;\r\n }\r\n if (href && href.indexOf('file://') === 0) {\r\n href = href.split('#')[1];\r\n if (href) {\r\n href = '#' + href;\r\n }\r\n }\r\n if (!href && !name) {\r\n node.unwrap();\r\n } else {\r\n if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {\r\n node.unwrap();\r\n continue;\r\n }\r\n node.attr({\r\n href: href,\r\n name: name\r\n });\r\n }\r\n }\r\n });\r\n var rootNode = domParser.parse(content);\r\n if ($_5peev0ikjkmcwpkv.shouldConvertWordFakeLists(editor)) {\r\n convertFakeListsToProperLists(rootNode);\r\n }\r\n content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);\r\n return content;\r\n };\r\n var preProcess = function (editor, content) {\r\n return $_5peev0ikjkmcwpkv.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;\r\n };\r\n var $_759xt5ivjkmcwplk = {\r\n preProcess: preProcess,\r\n isWordContent: isWordContent\r\n };\r\n\r\n var processResult = function (content, cancelled) {\r\n return {\r\n content: content,\r\n cancelled: cancelled\r\n };\r\n };\r\n var postProcessFilter = function (editor, html, internal, isWordHtml) {\r\n var tempBody = editor.dom.create('div', { style: 'display:none' }, html);\r\n var postProcessArgs = $_d8ovv8ijjkmcwpku.firePastePostProcess(editor, tempBody, internal, isWordHtml);\r\n return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\r\n };\r\n var filterContent = function (editor, content, internal, isWordHtml) {\r\n var preProcessArgs = $_d8ovv8ijjkmcwpku.firePastePreProcess(editor, content, internal, isWordHtml);\r\n if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\r\n return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);\r\n } else {\r\n return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());\r\n }\r\n };\r\n var process = function (editor, html, internal) {\r\n var isWordHtml = $_759xt5ivjkmcwplk.isWordContent(html);\r\n var content = isWordHtml ? $_759xt5ivjkmcwplk.preProcess(editor, html) : html;\r\n return filterContent(editor, content, internal, isWordHtml);\r\n };\r\n var $_7a37nniujkmcwplh = { process: process };\r\n\r\n var pasteHtml = function (editor, html) {\r\n editor.insertContent(html, {\r\n merge: $_5peev0ikjkmcwpkv.shouldMergeFormats(editor),\r\n paste: true\r\n });\r\n return true;\r\n };\r\n var isAbsoluteUrl = function (url) {\r\n return /^https?:\\/\\/[\\w\\?\\-\\/+=.&%@~#]+$/i.test(url);\r\n };\r\n var isImageUrl = function (url) {\r\n return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);\r\n };\r\n var createImage = function (editor, url, pasteHtmlFn) {\r\n editor.undoManager.extra(function () {\r\n pasteHtmlFn(editor, url);\r\n }, function () {\r\n editor.insertContent('');\r\n });\r\n return true;\r\n };\r\n var createLink = function (editor, url, pasteHtmlFn) {\r\n editor.undoManager.extra(function () {\r\n pasteHtmlFn(editor, url);\r\n }, function () {\r\n editor.execCommand('mceInsertLink', false, url);\r\n });\r\n return true;\r\n };\r\n var linkSelection = function (editor, html, pasteHtmlFn) {\r\n return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\r\n };\r\n var insertImage = function (editor, html, pasteHtmlFn) {\r\n return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;\r\n };\r\n var smartInsertContent = function (editor, html) {\r\n global$3.each([\r\n linkSelection,\r\n insertImage,\r\n pasteHtml\r\n ], function (action) {\r\n return action(editor, html, pasteHtml) !== true;\r\n });\r\n };\r\n var insertContent = function (editor, html) {\r\n if ($_5peev0ikjkmcwpkv.isSmartPasteEnabled(editor) === false) {\r\n pasteHtml(editor, html);\r\n } else {\r\n smartInsertContent(editor, html);\r\n }\r\n };\r\n var $_3wqigwj1jkmcwplz = {\r\n isImageUrl: isImageUrl,\r\n isAbsoluteUrl: isAbsoluteUrl,\r\n insertContent: insertContent\r\n };\r\n\r\n var pasteHtml$1 = function (editor, html, internalFlag) {\r\n var internal = internalFlag ? internalFlag : $_93gcj3irjkmcwpld.isMarked(html);\r\n var args = $_7a37nniujkmcwplh.process(editor, $_93gcj3irjkmcwpld.unmark(html), internal);\r\n if (args.cancelled === false) {\r\n $_3wqigwj1jkmcwplz.insertContent(editor, args.content);\r\n }\r\n };\r\n var pasteText = function (editor, text) {\r\n text = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\r\n text = $_3nag2qisjkmcwple.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);\r\n pasteHtml$1(editor, text, false);\r\n };\r\n var getDataTransferItems = function (dataTransfer) {\r\n var items = {};\r\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\r\n if (dataTransfer) {\r\n if (dataTransfer.getData) {\r\n var legacyText = dataTransfer.getData('Text');\r\n if (legacyText && legacyText.length > 0) {\r\n if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {\r\n items['text/plain'] = legacyText;\r\n }\r\n }\r\n }\r\n if (dataTransfer.types) {\r\n for (var i = 0; i < dataTransfer.types.length; i++) {\r\n var contentType = dataTransfer.types[i];\r\n try {\r\n items[contentType] = dataTransfer.getData(contentType);\r\n } catch (ex) {\r\n items[contentType] = '';\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n var getClipboardContent = function (editor, clipboardEvent) {\r\n var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);\r\n return $_2u5gcyj0jkmcwplv.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;\r\n };\r\n var hasContentType = function (clipboardContent, mimeType) {\r\n return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\r\n };\r\n var hasHtmlOrText = function (content) {\r\n return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\r\n };\r\n var getBase64FromUri = function (uri) {\r\n var idx;\r\n idx = uri.indexOf(',');\r\n if (idx !== -1) {\r\n return uri.substr(idx + 1);\r\n }\r\n return null;\r\n };\r\n var isValidDataUriImage = function (settings, imgElm) {\r\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\r\n };\r\n var extractFilename = function (editor, str) {\r\n var m = str.match(/([\\s\\S]+?)\\.(?:jpeg|jpg|png|gif)$/i);\r\n return m ? editor.dom.encode(m[1]) : null;\r\n };\r\n var uniqueId = $_2u5gcyj0jkmcwplv.createIdGenerator('mceclip');\r\n var pasteImage = function (editor, rng, reader, blob) {\r\n if (rng) {\r\n editor.selection.setRng(rng);\r\n rng = null;\r\n }\r\n var dataUri = reader.result;\r\n var base64 = getBase64FromUri(dataUri);\r\n var id = uniqueId();\r\n var name$$1 = editor.settings.images_reuse_filename && blob.name ? extractFilename(editor, blob.name) : id;\r\n var img = new Image();\r\n img.src = dataUri;\r\n if (isValidDataUriImage(editor.settings, img)) {\r\n var blobCache = editor.editorUpload.blobCache;\r\n var blobInfo = void 0, existingBlobInfo = void 0;\r\n existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {\r\n return cachedBlobInfo.base64() === base64;\r\n });\r\n if (!existingBlobInfo) {\r\n blobInfo = blobCache.create(id, blob, base64, name$$1);\r\n blobCache.add(blobInfo);\r\n } else {\r\n blobInfo = existingBlobInfo;\r\n }\r\n pasteHtml$1(editor, '', false);\r\n } else {\r\n pasteHtml$1(editor, '', false);\r\n }\r\n };\r\n var isClipboardEvent = function (event$$1) {\r\n return event$$1.type === 'paste';\r\n };\r\n var pasteImageData = function (editor, e, rng) {\r\n var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\r\n function processItems(items) {\r\n var i, item, reader, hadImage = false;\r\n if (items) {\r\n for (i = 0; i < items.length; i++) {\r\n item = items[i];\r\n if (/^image\\/(jpeg|png|gif|bmp)$/.test(item.type)) {\r\n var blob = item.getAsFile ? item.getAsFile() : item;\r\n reader = new window.FileReader();\r\n reader.onload = pasteImage.bind(null, editor, rng, reader, blob);\r\n reader.readAsDataURL(blob);\r\n e.preventDefault();\r\n hadImage = true;\r\n }\r\n }\r\n }\r\n return hadImage;\r\n }\r\n if (editor.settings.paste_data_images && dataTransfer) {\r\n return processItems(dataTransfer.items) || processItems(dataTransfer.files);\r\n }\r\n };\r\n var isBrokenAndroidClipboardEvent = function (e) {\r\n var clipboardData = e.clipboardData;\r\n return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;\r\n };\r\n var isKeyboardPasteEvent = function (e) {\r\n return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\r\n };\r\n var registerEventHandlers = function (editor, pasteBin, pasteFormat) {\r\n var keyboardPasteTimeStamp = 0;\r\n var keyboardPastePlainTextState;\r\n editor.on('keydown', function (e) {\r\n function removePasteBinOnKeyUp(e) {\r\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\r\n pasteBin.remove();\r\n }\r\n }\r\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\r\n keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\r\n if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n keyboardPasteTimeStamp = new Date().getTime();\r\n if (global$1.ie && keyboardPastePlainTextState) {\r\n e.preventDefault();\r\n $_d8ovv8ijjkmcwpku.firePaste(editor, true);\r\n return;\r\n }\r\n pasteBin.remove();\r\n pasteBin.create();\r\n editor.once('keyup', removePasteBinOnKeyUp);\r\n editor.once('paste', function () {\r\n editor.off('keyup', removePasteBinOnKeyUp);\r\n });\r\n }\r\n });\r\n function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {\r\n var content, isPlainTextHtml;\r\n if (hasContentType(clipboardContent, 'text/html')) {\r\n content = clipboardContent['text/html'];\r\n } else {\r\n content = pasteBin.getHtml();\r\n internal = internal ? internal : $_93gcj3irjkmcwpld.isMarked(content);\r\n if (pasteBin.isDefaultContent(content)) {\r\n plainTextMode = true;\r\n }\r\n }\r\n content = $_2u5gcyj0jkmcwplv.trimHtml(content);\r\n pasteBin.remove();\r\n isPlainTextHtml = internal === false && $_3nag2qisjkmcwple.isPlainText(content);\r\n if (!content.length || isPlainTextHtml) {\r\n plainTextMode = true;\r\n }\r\n if (plainTextMode) {\r\n if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\r\n content = clipboardContent['text/plain'];\r\n } else {\r\n content = $_2u5gcyj0jkmcwplv.innerText(content);\r\n }\r\n }\r\n if (pasteBin.isDefaultContent(content)) {\r\n if (!isKeyBoardPaste) {\r\n editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');\r\n }\r\n return;\r\n }\r\n if (plainTextMode) {\r\n pasteText(editor, content);\r\n } else {\r\n pasteHtml$1(editor, content, internal);\r\n }\r\n }\r\n var getLastRng = function () {\r\n return pasteBin.getLastRng() || editor.selection.getRng();\r\n };\r\n editor.on('paste', function (e) {\r\n var clipboardTimer = new Date().getTime();\r\n var clipboardContent = getClipboardContent(editor, e);\r\n var clipboardDelay = new Date().getTime() - clipboardTimer;\r\n var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;\r\n var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\r\n var internal = hasContentType(clipboardContent, $_93gcj3irjkmcwpld.internalHtmlMime());\r\n keyboardPastePlainTextState = false;\r\n if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\r\n pasteBin.remove();\r\n return;\r\n }\r\n if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\r\n pasteBin.remove();\r\n return;\r\n }\r\n if (!isKeyBoardPaste) {\r\n e.preventDefault();\r\n }\r\n if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {\r\n pasteBin.create();\r\n editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {\r\n e.stopPropagation();\r\n });\r\n editor.getDoc().execCommand('Paste', false, null);\r\n clipboardContent['text/html'] = pasteBin.getHtml();\r\n }\r\n if (hasContentType(clipboardContent, 'text/html')) {\r\n e.preventDefault();\r\n if (!internal) {\r\n internal = $_93gcj3irjkmcwpld.isMarked(clipboardContent['text/html']);\r\n }\r\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\r\n } else {\r\n global$2.setEditorTimeout(editor, function () {\r\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\r\n }, 0);\r\n }\r\n });\r\n };\r\n var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {\r\n registerEventHandlers(editor, pasteBin, pasteFormat);\r\n var src;\r\n editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {\r\n var isPasteInsert = function (args) {\r\n return args.data && args.data.paste === true;\r\n };\r\n var remove = function (node) {\r\n if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {\r\n node.remove();\r\n }\r\n };\r\n var isWebKitFakeUrl = function (src) {\r\n return src.indexOf('webkit-fake-url') === 0;\r\n };\r\n var isDataUri = function (src) {\r\n return src.indexOf('data:') === 0;\r\n };\r\n if (!editor.settings.paste_data_images && isPasteInsert(args)) {\r\n var i = nodes.length;\r\n while (i--) {\r\n src = nodes[i].attributes.map.src;\r\n if (!src) {\r\n continue;\r\n }\r\n if (isWebKitFakeUrl(src)) {\r\n remove(nodes[i]);\r\n } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {\r\n remove(nodes[i]);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var getPasteBinParent = function (editor) {\r\n return global$1.ie && editor.inline ? document.body : editor.getBody();\r\n };\r\n var isExternalPasteBin = function (editor) {\r\n return getPasteBinParent(editor) !== editor.getBody();\r\n };\r\n var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {\r\n if (isExternalPasteBin(editor)) {\r\n editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {\r\n if (!isDefault(editor, pasteBinDefaultContent)) {\r\n editor.fire('paste');\r\n }\r\n });\r\n }\r\n };\r\n var create = function (editor, lastRngCell, pasteBinDefaultContent) {\r\n var dom = editor.dom, body = editor.getBody();\r\n var pasteBinElm;\r\n lastRngCell.set(editor.selection.getRng());\r\n pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {\r\n 'id': 'mcepastebin',\r\n 'class': 'mce-pastebin',\r\n 'contentEditable': true,\r\n 'data-mce-bogus': 'all',\r\n 'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\r\n }, pasteBinDefaultContent);\r\n if (global$1.ie || global$1.gecko) {\r\n dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\r\n }\r\n dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {\r\n e.stopPropagation();\r\n });\r\n delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);\r\n pasteBinElm.focus();\r\n editor.selection.select(pasteBinElm, true);\r\n };\r\n var remove = function (editor, lastRngCell) {\r\n if (getEl(editor)) {\r\n var pasteBinClone = void 0;\r\n var lastRng = lastRngCell.get();\r\n while (pasteBinClone = editor.dom.get('mcepastebin')) {\r\n editor.dom.remove(pasteBinClone);\r\n editor.dom.unbind(pasteBinClone);\r\n }\r\n if (lastRng) {\r\n editor.selection.setRng(lastRng);\r\n }\r\n }\r\n lastRngCell.set(null);\r\n };\r\n var getEl = function (editor) {\r\n return editor.dom.get('mcepastebin');\r\n };\r\n var getHtml = function (editor) {\r\n var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;\r\n var copyAndRemove = function (toElm, fromElm) {\r\n toElm.appendChild(fromElm);\r\n editor.dom.remove(fromElm, true);\r\n };\r\n pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {\r\n return elm.id === 'mcepastebin';\r\n });\r\n pasteBinElm = pasteBinClones.shift();\r\n global$3.each(pasteBinClones, function (pasteBinClone) {\r\n copyAndRemove(pasteBinElm, pasteBinClone);\r\n });\r\n dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);\r\n for (i = dirtyWrappers.length - 1; i >= 0; i--) {\r\n cleanWrapper = editor.dom.create('div');\r\n pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\r\n copyAndRemove(cleanWrapper, dirtyWrappers[i]);\r\n }\r\n return pasteBinElm ? pasteBinElm.innerHTML : '';\r\n };\r\n var getLastRng = function (lastRng) {\r\n return lastRng.get();\r\n };\r\n var isDefaultContent = function (pasteBinDefaultContent, content) {\r\n return content === pasteBinDefaultContent;\r\n };\r\n var isPasteBin = function (elm) {\r\n return elm && elm.id === 'mcepastebin';\r\n };\r\n var isDefault = function (editor, pasteBinDefaultContent) {\r\n var pasteBinElm = getEl(editor);\r\n return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);\r\n };\r\n var PasteBin = function (editor) {\r\n var lastRng = Cell(null);\r\n var pasteBinDefaultContent = '%MCEPASTEBIN%';\r\n return {\r\n create: function () {\r\n return create(editor, lastRng, pasteBinDefaultContent);\r\n },\r\n remove: function () {\r\n return remove(editor, lastRng);\r\n },\r\n getEl: function () {\r\n return getEl(editor);\r\n },\r\n getHtml: function () {\r\n return getHtml(editor);\r\n },\r\n getLastRng: function () {\r\n return getLastRng(lastRng);\r\n },\r\n isDefault: function () {\r\n return isDefault(editor, pasteBinDefaultContent);\r\n },\r\n isDefaultContent: function (content) {\r\n return isDefaultContent(pasteBinDefaultContent, content);\r\n }\r\n };\r\n };\r\n\r\n var Clipboard = function (editor, pasteFormat) {\r\n var pasteBin = PasteBin(editor);\r\n editor.on('preInit', function () {\r\n return registerEventsAndFilters(editor, pasteBin, pasteFormat);\r\n });\r\n return {\r\n pasteFormat: pasteFormat,\r\n pasteHtml: function (html, internalFlag) {\r\n return pasteHtml$1(editor, html, internalFlag);\r\n },\r\n pasteText: function (text) {\r\n return pasteText(editor, text);\r\n },\r\n pasteImageData: function (e, rng) {\r\n return pasteImageData(editor, e, rng);\r\n },\r\n getDataTransferItems: getDataTransferItems,\r\n hasHtmlOrText: hasHtmlOrText,\r\n hasContentType: hasContentType\r\n };\r\n };\r\n\r\n var noop = function () {\r\n };\r\n var hasWorkingClipboardApi = function (clipboardData) {\r\n return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && $_2u5gcyj0jkmcwplv.isMsEdge() !== true;\r\n };\r\n var setHtml5Clipboard = function (clipboardData, html, text) {\r\n if (hasWorkingClipboardApi(clipboardData)) {\r\n try {\r\n clipboardData.clearData();\r\n clipboardData.setData('text/html', html);\r\n clipboardData.setData('text/plain', text);\r\n clipboardData.setData($_93gcj3irjkmcwpld.internalHtmlMime(), html);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n };\r\n var setClipboardData = function (evt, data, fallback, done) {\r\n if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\r\n evt.preventDefault();\r\n done();\r\n } else {\r\n fallback(data.html, done);\r\n }\r\n };\r\n var fallback = function (editor) {\r\n return function (html, done) {\r\n var markedHtml = $_93gcj3irjkmcwpld.mark(html);\r\n var outer = editor.dom.create('div', {\r\n 'contenteditable': 'false',\r\n 'data-mce-bogus': 'all'\r\n });\r\n var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);\r\n editor.dom.setStyles(outer, {\r\n position: 'fixed',\r\n top: '0',\r\n left: '-3000px',\r\n width: '1000px',\r\n overflow: 'hidden'\r\n });\r\n outer.appendChild(inner);\r\n editor.dom.add(editor.getBody(), outer);\r\n var range = editor.selection.getRng();\r\n inner.focus();\r\n var offscreenRange = editor.dom.createRng();\r\n offscreenRange.selectNodeContents(inner);\r\n editor.selection.setRng(offscreenRange);\r\n setTimeout(function () {\r\n editor.selection.setRng(range);\r\n outer.parentNode.removeChild(outer);\r\n done();\r\n }, 0);\r\n };\r\n };\r\n var getData = function (editor) {\r\n return {\r\n html: editor.selection.getContent({ contextual: true }),\r\n text: editor.selection.getContent({ format: 'text' })\r\n };\r\n };\r\n var cut = function (editor) {\r\n return function (evt) {\r\n if (editor.selection.isCollapsed() === false) {\r\n setClipboardData(evt, getData(editor), fallback(editor), function () {\r\n setTimeout(function () {\r\n editor.execCommand('Delete');\r\n }, 0);\r\n });\r\n }\r\n };\r\n };\r\n var copy = function (editor) {\r\n return function (evt) {\r\n if (editor.selection.isCollapsed() === false) {\r\n setClipboardData(evt, getData(editor), fallback(editor), noop);\r\n }\r\n };\r\n };\r\n var register$1 = function (editor) {\r\n editor.on('cut', cut(editor));\r\n editor.on('copy', copy(editor));\r\n };\r\n var $_5k6lg4j3jkmcwpmg = { register: register$1 };\r\n\r\n var global$10 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\r\n\r\n var getCaretRangeFromEvent = function (editor, e) {\r\n return global$10.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());\r\n };\r\n var isPlainTextFileUrl = function (content) {\r\n var plainTextContent = content['text/plain'];\r\n return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\r\n };\r\n var setFocusedRange = function (editor, rng) {\r\n editor.focus();\r\n editor.selection.setRng(rng);\r\n };\r\n var setup = function (editor, clipboard, draggingInternallyState) {\r\n if ($_5peev0ikjkmcwpkv.shouldBlockDrop(editor)) {\r\n editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n if (!$_5peev0ikjkmcwpkv.shouldPasteDataImages(editor)) {\r\n editor.on('drop', function (e) {\r\n var dataTransfer = e.dataTransfer;\r\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n editor.on('drop', function (e) {\r\n var dropContent, rng;\r\n rng = getCaretRangeFromEvent(editor, e);\r\n if (e.isDefaultPrevented() || draggingInternallyState.get()) {\r\n return;\r\n }\r\n dropContent = clipboard.getDataTransferItems(e.dataTransfer);\r\n var internal = clipboard.hasContentType(dropContent, $_93gcj3irjkmcwpld.internalHtmlMime());\r\n if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {\r\n return;\r\n }\r\n if (rng && $_5peev0ikjkmcwpkv.shouldFilterDrop(editor)) {\r\n var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];\r\n if (content_1) {\r\n e.preventDefault();\r\n global$2.setEditorTimeout(editor, function () {\r\n editor.undoManager.transact(function () {\r\n if (dropContent['mce-internal']) {\r\n editor.execCommand('Delete');\r\n }\r\n setFocusedRange(editor, rng);\r\n content_1 = $_2u5gcyj0jkmcwplv.trimHtml(content_1);\r\n if (!dropContent['text/html']) {\r\n clipboard.pasteText(content_1);\r\n } else {\r\n clipboard.pasteHtml(content_1, internal);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n });\r\n editor.on('dragstart', function (e) {\r\n draggingInternallyState.set(true);\r\n });\r\n editor.on('dragover dragend', function (e) {\r\n if ($_5peev0ikjkmcwpkv.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {\r\n e.preventDefault();\r\n setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\r\n }\r\n if (e.type === 'dragend') {\r\n draggingInternallyState.set(false);\r\n }\r\n });\r\n };\r\n var $_eiqz0aj4jkmcwpmj = { setup: setup };\r\n\r\n var setup$1 = function (editor) {\r\n var plugin = editor.plugins.paste;\r\n var preProcess = $_5peev0ikjkmcwpkv.getPreProcess(editor);\r\n if (preProcess) {\r\n editor.on('PastePreProcess', function (e) {\r\n preProcess.call(plugin, plugin, e);\r\n });\r\n }\r\n var postProcess = $_5peev0ikjkmcwpkv.getPostProcess(editor);\r\n if (postProcess) {\r\n editor.on('PastePostProcess', function (e) {\r\n postProcess.call(plugin, plugin, e);\r\n });\r\n }\r\n };\r\n var $_9alamfj6jkmcwpmm = { setup: setup$1 };\r\n\r\n function addPreProcessFilter(editor, filterFunc) {\r\n editor.on('PastePreProcess', function (e) {\r\n e.content = filterFunc(editor, e.content, e.internal, e.wordContent);\r\n });\r\n }\r\n function addPostProcessFilter(editor, filterFunc) {\r\n editor.on('PastePostProcess', function (e) {\r\n filterFunc(editor, e.node);\r\n });\r\n }\r\n function removeExplorerBrElementsAfterBlocks(editor, html) {\r\n if (!$_759xt5ivjkmcwplk.isWordContent(html)) {\r\n return html;\r\n }\r\n var blockElements = [];\r\n global$3.each(editor.schema.getBlockElements(), function (block, blockName) {\r\n blockElements.push(blockName);\r\n });\r\n var explorerBlocksRegExp = new RegExp('(?:
     [\\\\s\\\\r\\\\n]+|
    )*(<\\\\/?(' + blockElements.join('|') + ')[^>]*>)(?:
     [\\\\s\\\\r\\\\n]+|
    )*', 'g');\r\n html = $_2u5gcyj0jkmcwplv.filter(html, [[\r\n explorerBlocksRegExp,\r\n '$1'\r\n ]]);\r\n html = $_2u5gcyj0jkmcwplv.filter(html, [\r\n [\r\n /

    /g,\r\n '

    '\r\n ],\r\n [\r\n /
    /g,\r\n ' '\r\n ],\r\n [\r\n /

    /g,\r\n '
    '\r\n ]\r\n ]);\r\n return html;\r\n }\r\n function removeWebKitStyles(editor, content, internal, isWordHtml) {\r\n if (isWordHtml || internal) {\r\n return content;\r\n }\r\n var webKitStylesSetting = $_5peev0ikjkmcwpkv.getWebkitStyles(editor);\r\n var webKitStyles;\r\n if ($_5peev0ikjkmcwpkv.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {\r\n return content;\r\n }\r\n if (webKitStylesSetting) {\r\n webKitStyles = webKitStylesSetting.split(/[, ]/);\r\n }\r\n if (webKitStyles) {\r\n var dom_1 = editor.dom, node_1 = editor.selection.getNode();\r\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, function (all, before, value, after) {\r\n var inputStyles = dom_1.parseStyle(dom_1.decode(value));\r\n var outputStyles = {};\r\n if (webKitStyles === 'none') {\r\n return before + after;\r\n }\r\n for (var i = 0; i < webKitStyles.length; i++) {\r\n var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);\r\n if (/color/.test(webKitStyles[i])) {\r\n inputValue = dom_1.toHex(inputValue);\r\n currentValue = dom_1.toHex(currentValue);\r\n }\r\n if (currentValue !== inputValue) {\r\n outputStyles[webKitStyles[i]] = inputValue;\r\n }\r\n }\r\n outputStyles = dom_1.serializeStyle(outputStyles, 'span');\r\n if (outputStyles) {\r\n return before + ' style=\"' + outputStyles + '\"' + after;\r\n }\r\n return before + after;\r\n });\r\n } else {\r\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\r\n }\r\n content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, function (all, before, value, after) {\r\n return before + ' style=\"' + value + '\"' + after;\r\n });\r\n return content;\r\n }\r\n function removeUnderlineAndFontInAnchor(editor, root) {\r\n editor.$('a', root).find('font,u').each(function (i, node) {\r\n editor.dom.remove(node, true);\r\n });\r\n }\r\n var setup$2 = function (editor) {\r\n if (global$1.webkit) {\r\n addPreProcessFilter(editor, removeWebKitStyles);\r\n }\r\n if (global$1.ie) {\r\n addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);\r\n addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);\r\n }\r\n };\r\n var $_ca6muwj7jkmcwpmo = { setup: setup$2 };\r\n\r\n var curry = function (f) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = new Array(arguments.length - 1);\r\n for (var i = 1; i < arguments.length; i++)\r\n args[i - 1] = arguments[i];\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var newArgs = new Array(arguments.length);\r\n for (var j = 0; j < newArgs.length; j++)\r\n newArgs[j] = arguments[j];\r\n var all = args.concat(newArgs);\r\n return f.apply(null, all);\r\n };\r\n };\r\n\r\n var stateChange = function (editor, clipboard, e) {\r\n var ctrl = e.control;\r\n ctrl.active(clipboard.pasteFormat.get() === 'text');\r\n editor.on('PastePlainTextToggle', function (e) {\r\n ctrl.active(e.state);\r\n });\r\n };\r\n var register$2 = function (editor, clipboard) {\r\n var postRender = curry(stateChange, editor, clipboard);\r\n editor.addButton('pastetext', {\r\n active: false,\r\n icon: 'pastetext',\r\n tooltip: 'Paste as text',\r\n cmd: 'mceTogglePlainTextPaste',\r\n onPostRender: postRender\r\n });\r\n editor.addMenuItem('pastetext', {\r\n text: 'Paste as text',\r\n selectable: true,\r\n active: clipboard.pasteFormat,\r\n cmd: 'mceTogglePlainTextPaste',\r\n onPostRender: postRender\r\n });\r\n };\r\n var $_98erksj8jkmcwpmr = { register: register$2 };\r\n\r\n global.add('paste', function (editor) {\r\n if ($_ee0gktiejkmcwpkb.hasProPlugin(editor) === false) {\r\n var userIsInformedState = Cell(false);\r\n var draggingInternallyState = Cell(false);\r\n var pasteFormat = Cell($_5peev0ikjkmcwpkv.isPasteAsTextEnabled(editor) ? 'text' : 'html');\r\n var clipboard = Clipboard(editor, pasteFormat);\r\n var quirks = $_ca6muwj7jkmcwpmo.setup(editor);\r\n $_98erksj8jkmcwpmr.register(editor, clipboard);\r\n $_gh26txihjkmcwpkr.register(editor, clipboard, userIsInformedState);\r\n $_9alamfj6jkmcwpmm.setup(editor);\r\n $_5k6lg4j3jkmcwpmg.register(editor);\r\n $_eiqz0aj4jkmcwpmj.setup(editor, clipboard, draggingInternallyState);\r\n return $_6khw6eigjkmcwpkp.get(clipboard, quirks);\r\n }\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","import Vue from 'vue'\r\nimport axios from 'axios'\r\nimport VueAxios from 'vue-axios'\r\nimport Cache from './cache.js'\r\nimport Global from './global.js'\r\nimport Auth from './auth.js'\r\n\r\nVue.use(VueAxios, axios)\r\n\r\nexport function Api(resource, endpoint) {\r\n\r\n this.Resourse = resource;\r\n this.EndPoint = endpoint;\r\n\r\n this.defaultFilter = {\r\n pageSize: 10,\r\n pageIndex: 0,\r\n isPaginate: true,\r\n };\r\n\r\n this.byCache = false;\r\n this.hasDefaultFilters = true;\r\n this.lastAction = \"none\";\r\n this.url = \"\";\r\n\r\n this.get = _get;\r\n this.post = _post;\r\n this.put = _put;\r\n this.delete = _delete;\r\n this.dataItem = _dataItem;\r\n this.export = _export;\r\n this.upload = _upload;\r\n\r\n var self = this;\r\n\r\n function _upload(file, folder) {\r\n\r\n self.lastAction = \"upload\";\r\n self.url = makeUri();\r\n\r\n let formData = new FormData();\r\n formData.append('files', file, file.name);\r\n formData.append('folder', folder);\r\n\r\n return axios\r\n .post(self.url, formData)\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _post(model) {\r\n\r\n self.lastAction = \"post\";\r\n self.url = makeUri();\r\n\r\n return axios\r\n .post(self.url, model || {})\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _put(model) {\r\n\r\n self.lastAction = \"put\";\r\n self.url = makeUri();\r\n\r\n return axios\r\n .put(self.url, model)\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _delete(model) {\r\n\r\n self.lastAction = \"delete\";\r\n self.url = makeUri()\r\n\r\n return axios\r\n .delete(self.url, { params: model })\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _get(filters) {\r\n\r\n self.lastAction = \"get\";\r\n self.url = makeUri()\r\n\r\n var _filters = Object.assign(this.defaultFilter, filters);\r\n if (_filters.id)\r\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\r\n\r\n return axios\r\n .get(self.url, { params: _filters })\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _export(filters) {\r\n\r\n self.lastAction = \"export\";\r\n self.url = makeUri()\r\n\r\n var _filters = Object.assign(this.defaultFilter, filters);\r\n if (_filters.id)\r\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\r\n\r\n return axios\r\n .get(self.url, { params: _filters, responseType: \"blob\" })\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function _dataItem(filters) {\r\n\r\n self.lastAction = \"get\";\r\n self.url = makeUri()\r\n\r\n var _filters = Object.assign(this.defaultFilter, filters);\r\n if (_filters.id)\r\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\r\n\r\n return axios\r\n .get(self.url, { params: _filters })\r\n .then(res => { handleSuccess(res.data); return res.data; })\r\n .catch(err => { handleError(err.response); throw err.response; })\r\n }\r\n\r\n function makeUri() {\r\n\r\n var endpoint = self.EndPoint;\r\n\r\n if (!self.EndPoint)\r\n endpoint = Global.END_POINT_DEFAULT;\r\n\r\n configHeaders();\r\n\r\n return String.format(\"{0}/{1}\", endpoint, self.Resourse)\r\n }\r\n\r\n function configHeaders() {\r\n var accesstoken = Cache.get(Global.ACCESS_TOKEN);\r\n if (accesstoken)\r\n axios.defaults.headers.common['Authorization'] = \"Bearer \" + Cache.get(Global.ACCESS_TOKEN);\r\n\r\n axios.defaults.headers.common['Accept-Language'] = \"pt-BR\";\r\n }\r\n\r\n function handleSuccess(response) {\r\n addCache(response.data);\r\n }\r\n\r\n function handleError(err) {\r\n if (err && err.status == 401)\r\n Auth.login(true);\r\n }\r\n\r\n function addCache(data) {\r\n\r\n if (!self.byCache)\r\n return;\r\n\r\n if (self.url == \"\")\r\n return;\r\n\r\n if (self.lastAction == \"get\") {\r\n if (data.Data != null || (data.DataList != null && data.DataList.length > 0)) {\r\n data = JSON.stringify(data);\r\n Cache.Add(self.url, data)\r\n }\r\n }\r\n }\r\n\r\n //function loadFromCache() {\r\n\r\n // if (!self.byCache)\r\n // return;\r\n\r\n // var data = Cache.Get(self.url);\r\n // data = JSON.parse(data);\r\n\r\n // return new Promise(function (resolve, reject) {\r\n // if (data != null)\r\n // resolve(data);\r\n // else\r\n // reject(\"Nada encontrado\")\r\n // })\r\n //}\r\n\r\n //function isOffline() {\r\n // if (navigator.network != null) {\r\n // var isOffline = !navigator.onLine;\r\n // return isOffline;\r\n // }\r\n // return false;\r\n //}\r\n\r\n String.format = function () {\r\n var theString = arguments[0];\r\n for (var i = 1; i < arguments.length; i++) {\r\n var regEx = new RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\");\r\n theString = theString.replace(regEx, arguments[i]);\r\n }\r\n return theString;\r\n }\r\n\r\n Object.$httpParamSerializer = function () {\r\n var obj = arguments[0];\r\n return Object.entries(obj).map(([key, val]) => `${key}=${val}`).join('&')\r\n }\r\n\r\n}\r\n","(function () {\r\nvar media = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var getScripts = function (editor) {\r\n return editor.getParam('media_scripts');\r\n };\r\n var getAudioTemplateCallback = function (editor) {\r\n return editor.getParam('audio_template_callback');\r\n };\r\n var getVideoTemplateCallback = function (editor) {\r\n return editor.getParam('video_template_callback');\r\n };\r\n var hasLiveEmbeds = function (editor) {\r\n return editor.getParam('media_live_embeds', true);\r\n };\r\n var shouldFilterHtml = function (editor) {\r\n return editor.getParam('media_filter_html', true);\r\n };\r\n var getUrlResolver = function (editor) {\r\n return editor.getParam('media_url_resolver');\r\n };\r\n var hasAltSource = function (editor) {\r\n return editor.getParam('media_alt_source', true);\r\n };\r\n var hasPoster = function (editor) {\r\n return editor.getParam('media_poster', true);\r\n };\r\n var hasDimensions = function (editor) {\r\n return editor.getParam('media_dimensions', true);\r\n };\r\n var $_6qt1nth3jkmcwpf2 = {\r\n getScripts: getScripts,\r\n getAudioTemplateCallback: getAudioTemplateCallback,\r\n getVideoTemplateCallback: getVideoTemplateCallback,\r\n hasLiveEmbeds: hasLiveEmbeds,\r\n shouldFilterHtml: shouldFilterHtml,\r\n getUrlResolver: getUrlResolver,\r\n hasAltSource: hasAltSource,\r\n hasPoster: hasPoster,\r\n hasDimensions: hasDimensions\r\n };\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var getVideoScriptMatch = function (prefixes, src) {\r\n if (prefixes) {\r\n for (var i = 0; i < prefixes.length; i++) {\r\n if (src.indexOf(prefixes[i].filter) !== -1) {\r\n return prefixes[i];\r\n }\r\n }\r\n }\r\n };\r\n var $_5qpz66h7jkmcwpf7 = { getVideoScriptMatch: getVideoScriptMatch };\r\n\r\n var trimPx = function (value) {\r\n return value.replace(/px$/, '');\r\n };\r\n var addPx = function (value) {\r\n return /^[0-9.]+$/.test(value) ? value + 'px' : value;\r\n };\r\n var getSize = function (name) {\r\n return function (elm) {\r\n return elm ? trimPx(elm.style[name]) : '';\r\n };\r\n };\r\n var setSize = function (name) {\r\n return function (elm, value) {\r\n if (elm) {\r\n elm.style[name] = addPx(value);\r\n }\r\n };\r\n };\r\n var $_1gasfuh8jkmcwpf8 = {\r\n getMaxWidth: getSize('maxWidth'),\r\n getMaxHeight: getSize('maxHeight'),\r\n setMaxWidth: setSize('maxWidth'),\r\n setMaxHeight: setSize('maxHeight')\r\n };\r\n\r\n var DOM = global$4.DOM;\r\n var getEphoxEmbedIri = function (elm) {\r\n return DOM.getAttrib(elm, 'data-ephox-embed-iri');\r\n };\r\n var isEphoxEmbed = function (html) {\r\n var fragment = DOM.createFragment(html);\r\n return getEphoxEmbedIri(fragment.firstChild) !== '';\r\n };\r\n var htmlToDataSax = function (prefixes, html) {\r\n var data = {};\r\n global$3({\r\n validate: false,\r\n allow_conditional_comments: true,\r\n special: 'script,noscript',\r\n start: function (name, attrs) {\r\n if (!data.source1 && name === 'param') {\r\n data.source1 = attrs.map.movie;\r\n }\r\n if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\r\n if (!data.type) {\r\n data.type = name;\r\n }\r\n data = global$2.extend(attrs.map, data);\r\n }\r\n if (name === 'script') {\r\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch(prefixes, attrs.map.src);\r\n if (!videoScript) {\r\n return;\r\n }\r\n data = {\r\n type: 'script',\r\n source1: attrs.map.src,\r\n width: videoScript.width,\r\n height: videoScript.height\r\n };\r\n }\r\n if (name === 'source') {\r\n if (!data.source1) {\r\n data.source1 = attrs.map.src;\r\n } else if (!data.source2) {\r\n data.source2 = attrs.map.src;\r\n }\r\n }\r\n if (name === 'img' && !data.poster) {\r\n data.poster = attrs.map.src;\r\n }\r\n }\r\n }).parse(html);\r\n data.source1 = data.source1 || data.src || data.data;\r\n data.source2 = data.source2 || '';\r\n data.poster = data.poster || '';\r\n return data;\r\n };\r\n var ephoxEmbedHtmlToData = function (html) {\r\n var fragment = DOM.createFragment(html);\r\n var div = fragment.firstChild;\r\n return {\r\n type: 'ephox-embed-iri',\r\n source1: getEphoxEmbedIri(div),\r\n source2: '',\r\n poster: '',\r\n width: $_1gasfuh8jkmcwpf8.getMaxWidth(div),\r\n height: $_1gasfuh8jkmcwpf8.getMaxHeight(div)\r\n };\r\n };\r\n var htmlToData = function (prefixes, html) {\r\n return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\r\n };\r\n var $_1f89fyh4jkmcwpf3 = { htmlToData: htmlToData };\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');\r\n\r\n var guess = function (url) {\r\n var mimes = {\r\n mp3: 'audio/mpeg',\r\n wav: 'audio/wav',\r\n mp4: 'video/mp4',\r\n webm: 'video/webm',\r\n ogg: 'video/ogg',\r\n swf: 'application/x-shockwave-flash'\r\n };\r\n var fileEnd = url.toLowerCase().split('.').pop();\r\n var mime = mimes[fileEnd];\r\n return mime ? mime : '';\r\n };\r\n var $_e86s3ihcjkmcwpfk = { guess: guess };\r\n\r\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');\r\n\r\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');\r\n\r\n var DOM$1 = global$4.DOM;\r\n var setAttributes = function (attrs, updatedAttrs) {\r\n var name;\r\n var i;\r\n var value;\r\n var attr;\r\n for (name in updatedAttrs) {\r\n value = '' + updatedAttrs[name];\r\n if (attrs.map[name]) {\r\n i = attrs.length;\r\n while (i--) {\r\n attr = attrs[i];\r\n if (attr.name === name) {\r\n if (value) {\r\n attrs.map[name] = value;\r\n attr.value = value;\r\n } else {\r\n delete attrs.map[name];\r\n attrs.splice(i, 1);\r\n }\r\n }\r\n }\r\n } else if (value) {\r\n attrs.push({\r\n name: name,\r\n value: value\r\n });\r\n attrs.map[name] = value;\r\n }\r\n }\r\n };\r\n var normalizeHtml = function (html) {\r\n var writer = global$6();\r\n var parser = global$3(writer);\r\n parser.parse(html);\r\n return writer.getContent();\r\n };\r\n var updateHtmlSax = function (html, data, updateAll) {\r\n var writer = global$6();\r\n var sourceCount = 0;\r\n var hasImage;\r\n global$3({\r\n validate: false,\r\n allow_conditional_comments: true,\r\n special: 'script,noscript',\r\n comment: function (text) {\r\n writer.comment(text);\r\n },\r\n cdata: function (text) {\r\n writer.cdata(text);\r\n },\r\n text: function (text, raw) {\r\n writer.text(text, raw);\r\n },\r\n start: function (name, attrs, empty) {\r\n switch (name) {\r\n case 'video':\r\n case 'object':\r\n case 'embed':\r\n case 'img':\r\n case 'iframe':\r\n if (data.height !== undefined && data.width !== undefined) {\r\n setAttributes(attrs, {\r\n width: data.width,\r\n height: data.height\r\n });\r\n }\r\n break;\r\n }\r\n if (updateAll) {\r\n switch (name) {\r\n case 'video':\r\n setAttributes(attrs, {\r\n poster: data.poster,\r\n src: ''\r\n });\r\n if (data.source2) {\r\n setAttributes(attrs, { src: '' });\r\n }\r\n break;\r\n case 'iframe':\r\n setAttributes(attrs, { src: data.source1 });\r\n break;\r\n case 'source':\r\n sourceCount++;\r\n if (sourceCount <= 2) {\r\n setAttributes(attrs, {\r\n src: data['source' + sourceCount],\r\n type: data['source' + sourceCount + 'mime']\r\n });\r\n if (!data['source' + sourceCount]) {\r\n return;\r\n }\r\n }\r\n break;\r\n case 'img':\r\n if (!data.poster) {\r\n return;\r\n }\r\n hasImage = true;\r\n break;\r\n }\r\n }\r\n writer.start(name, attrs, empty);\r\n },\r\n end: function (name) {\r\n if (name === 'video' && updateAll) {\r\n for (var index = 1; index <= 2; index++) {\r\n if (data['source' + index]) {\r\n var attrs = [];\r\n attrs.map = {};\r\n if (sourceCount < index) {\r\n setAttributes(attrs, {\r\n src: data['source' + index],\r\n type: data['source' + index + 'mime']\r\n });\r\n writer.start('source', attrs, true);\r\n }\r\n }\r\n }\r\n }\r\n if (data.poster && name === 'object' && updateAll && !hasImage) {\r\n var imgAttrs = [];\r\n imgAttrs.map = {};\r\n setAttributes(imgAttrs, {\r\n src: data.poster,\r\n width: data.width,\r\n height: data.height\r\n });\r\n writer.start('img', imgAttrs, true);\r\n }\r\n writer.end(name);\r\n }\r\n }, global$7({})).parse(html);\r\n return writer.getContent();\r\n };\r\n var isEphoxEmbed$1 = function (html) {\r\n var fragment = DOM$1.createFragment(html);\r\n return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';\r\n };\r\n var updateEphoxEmbed = function (html, data) {\r\n var fragment = DOM$1.createFragment(html);\r\n var div = fragment.firstChild;\r\n $_1gasfuh8jkmcwpf8.setMaxWidth(div, data.width);\r\n $_1gasfuh8jkmcwpf8.setMaxHeight(div, data.height);\r\n return normalizeHtml(div.outerHTML);\r\n };\r\n var updateHtml = function (html, data, updateAll) {\r\n return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);\r\n };\r\n var $_6s992lhdjkmcwpfn = { updateHtml: updateHtml };\r\n\r\n var urlPatterns = [\r\n {\r\n regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\r\n type: 'iframe',\r\n w: 560,\r\n h: 314,\r\n url: '//www.youtube.com/embed/$1',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\r\n type: 'iframe',\r\n w: 560,\r\n h: 314,\r\n url: '//www.youtube.com/embed/$2?$4',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\r\n type: 'iframe',\r\n w: 560,\r\n h: 314,\r\n url: '//www.youtube.com/embed/$1',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /vimeo\\.com\\/([0-9]+)/,\r\n type: 'iframe',\r\n w: 425,\r\n h: 350,\r\n url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\r\n type: 'iframe',\r\n w: 425,\r\n h: 350,\r\n url: '//player.vimeo.com/video/$2?title=0&byline=0',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\r\n type: 'iframe',\r\n w: 425,\r\n h: 350,\r\n url: '//maps.google.com/maps/ms?msid=$2&output=embed\"',\r\n allowFullscreen: false\r\n },\r\n {\r\n regex: /dailymotion\\.com\\/video\\/([^_]+)/,\r\n type: 'iframe',\r\n w: 480,\r\n h: 270,\r\n url: '//www.dailymotion.com/embed/video/$1',\r\n allowFullscreen: true\r\n },\r\n {\r\n regex: /dai\\.ly\\/([^_]+)/,\r\n type: 'iframe',\r\n w: 480,\r\n h: 270,\r\n url: '//www.dailymotion.com/embed/video/$1',\r\n allowFullscreen: true\r\n }\r\n ];\r\n var getUrl = function (pattern, url) {\r\n var match = pattern.regex.exec(url);\r\n var newUrl = pattern.url;\r\n var _loop_1 = function (i) {\r\n newUrl = newUrl.replace('$' + i, function () {\r\n return match[i] ? match[i] : '';\r\n });\r\n };\r\n for (var i = 0; i < match.length; i++) {\r\n _loop_1(i);\r\n }\r\n return newUrl.replace(/\\?$/, '');\r\n };\r\n var matchPattern = function (url) {\r\n var pattern = urlPatterns.filter(function (pattern) {\r\n return pattern.regex.test(url);\r\n });\r\n if (pattern.length > 0) {\r\n return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n var getIframeHtml = function (data) {\r\n var allowFullscreen = data.allowFullscreen ? ' allowFullscreen=\"1\"' : '';\r\n return '';\r\n };\r\n var getFlashHtml = function (data) {\r\n var html = '';\r\n if (data.poster) {\r\n html += '';\r\n }\r\n html += '';\r\n return html;\r\n };\r\n var getAudioHtml = function (data, audioTemplateCallback) {\r\n if (audioTemplateCallback) {\r\n return audioTemplateCallback(data);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getVideoHtml = function (data, videoTemplateCallback) {\r\n if (videoTemplateCallback) {\r\n return videoTemplateCallback(data);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getScriptHtml = function (data) {\r\n return '';\r\n };\r\n var dataToHtml = function (editor, dataIn) {\r\n var data = global$2.extend({}, dataIn);\r\n if (!data.source1) {\r\n global$2.extend(data, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), data.embed));\r\n if (!data.source1) {\r\n return '';\r\n }\r\n }\r\n if (!data.source2) {\r\n data.source2 = '';\r\n }\r\n if (!data.poster) {\r\n data.poster = '';\r\n }\r\n data.source1 = editor.convertURL(data.source1, 'source');\r\n data.source2 = editor.convertURL(data.source2, 'source');\r\n data.source1mime = $_e86s3ihcjkmcwpfk.guess(data.source1);\r\n data.source2mime = $_e86s3ihcjkmcwpfk.guess(data.source2);\r\n data.poster = editor.convertURL(data.poster, 'poster');\r\n var pattern = matchPattern(data.source1);\r\n if (pattern) {\r\n data.source1 = pattern.url;\r\n data.type = pattern.type;\r\n data.allowFullscreen = pattern.allowFullscreen;\r\n data.width = data.width || pattern.w;\r\n data.height = data.height || pattern.h;\r\n }\r\n if (data.embed) {\r\n return $_6s992lhdjkmcwpfn.updateHtml(data.embed, data, true);\r\n } else {\r\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), data.source1);\r\n if (videoScript) {\r\n data.type = 'script';\r\n data.width = videoScript.width;\r\n data.height = videoScript.height;\r\n }\r\n var audioTemplateCallback = $_6qt1nth3jkmcwpf2.getAudioTemplateCallback(editor);\r\n var videoTemplateCallback = $_6qt1nth3jkmcwpf2.getVideoTemplateCallback(editor);\r\n data.width = data.width || 300;\r\n data.height = data.height || 150;\r\n global$2.each(data, function (value, key) {\r\n data[key] = editor.dom.encode(value);\r\n });\r\n if (data.type === 'iframe') {\r\n return getIframeHtml(data);\r\n } else if (data.source1mime === 'application/x-shockwave-flash') {\r\n return getFlashHtml(data);\r\n } else if (data.source1mime.indexOf('audio') !== -1) {\r\n return getAudioHtml(data, audioTemplateCallback);\r\n } else if (data.type === 'script') {\r\n return getScriptHtml(data);\r\n } else {\r\n return getVideoHtml(data, videoTemplateCallback);\r\n }\r\n }\r\n };\r\n var $_65qpjdhbjkmcwpfc = { dataToHtml: dataToHtml };\r\n\r\n var cache = {};\r\n var embedPromise = function (data, dataToHtml, handler) {\r\n return new global$5(function (res, rej) {\r\n var wrappedResolve = function (response) {\r\n if (response.html) {\r\n cache[data.source1] = response;\r\n }\r\n return res({\r\n url: data.source1,\r\n html: response.html ? response.html : dataToHtml(data)\r\n });\r\n };\r\n if (cache[data.source1]) {\r\n wrappedResolve(cache[data.source1]);\r\n } else {\r\n handler({ url: data.source1 }, wrappedResolve, rej);\r\n }\r\n });\r\n };\r\n var defaultPromise = function (data, dataToHtml) {\r\n return new global$5(function (res) {\r\n res({\r\n html: dataToHtml(data),\r\n url: data.source1\r\n });\r\n });\r\n };\r\n var loadedData = function (editor) {\r\n return function (data) {\r\n return $_65qpjdhbjkmcwpfc.dataToHtml(editor, data);\r\n };\r\n };\r\n var getEmbedHtml = function (editor, data) {\r\n var embedHandler = $_6qt1nth3jkmcwpf2.getUrlResolver(editor);\r\n return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\r\n };\r\n var isCached = function (url) {\r\n return cache.hasOwnProperty(url);\r\n };\r\n var $_74pv8fh9jkmcwpf9 = {\r\n getEmbedHtml: getEmbedHtml,\r\n isCached: isCached\r\n };\r\n\r\n var doSyncSize = function (widthCtrl, heightCtrl) {\r\n widthCtrl.state.set('oldVal', widthCtrl.value());\r\n heightCtrl.state.set('oldVal', heightCtrl.value());\r\n };\r\n var doSizeControls = function (win, f) {\r\n var widthCtrl = win.find('#width')[0];\r\n var heightCtrl = win.find('#height')[0];\r\n var constrained = win.find('#constrain')[0];\r\n if (widthCtrl && heightCtrl && constrained) {\r\n f(widthCtrl, heightCtrl, constrained.checked());\r\n }\r\n };\r\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\r\n var oldWidth = widthCtrl.state.get('oldVal');\r\n var oldHeight = heightCtrl.state.get('oldVal');\r\n var newWidth = widthCtrl.value();\r\n var newHeight = heightCtrl.value();\r\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\r\n if (newWidth !== oldWidth) {\r\n newHeight = Math.round(newWidth / oldWidth * newHeight);\r\n if (!isNaN(newHeight)) {\r\n heightCtrl.value(newHeight);\r\n }\r\n } else {\r\n newWidth = Math.round(newHeight / oldHeight * newWidth);\r\n if (!isNaN(newWidth)) {\r\n widthCtrl.value(newWidth);\r\n }\r\n }\r\n }\r\n doSyncSize(widthCtrl, heightCtrl);\r\n };\r\n var syncSize = function (win) {\r\n doSizeControls(win, doSyncSize);\r\n };\r\n var updateSize = function (win) {\r\n doSizeControls(win, doUpdateSize);\r\n };\r\n var createUi = function (onChange) {\r\n var recalcSize = function () {\r\n onChange(function (win) {\r\n updateSize(win);\r\n });\r\n };\r\n return {\r\n type: 'container',\r\n label: 'Dimensions',\r\n layout: 'flex',\r\n align: 'center',\r\n spacing: 5,\r\n items: [\r\n {\r\n name: 'width',\r\n type: 'textbox',\r\n maxLength: 5,\r\n size: 5,\r\n onchange: recalcSize,\r\n ariaLabel: 'Width'\r\n },\r\n {\r\n type: 'label',\r\n text: 'x'\r\n },\r\n {\r\n name: 'height',\r\n type: 'textbox',\r\n maxLength: 5,\r\n size: 5,\r\n onchange: recalcSize,\r\n ariaLabel: 'Height'\r\n },\r\n {\r\n name: 'constrain',\r\n type: 'checkbox',\r\n checked: true,\r\n text: 'Constrain proportions'\r\n }\r\n ]\r\n };\r\n };\r\n var $_gd8vqohhjkmcwpg2 = {\r\n createUi: createUi,\r\n syncSize: syncSize,\r\n updateSize: updateSize\r\n };\r\n\r\n var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';\r\n var handleError = function (editor) {\r\n return function (error) {\r\n var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\r\n editor.notificationManager.open({\r\n type: 'error',\r\n text: errorMessage\r\n });\r\n };\r\n };\r\n var getData = function (editor) {\r\n var element = editor.selection.getNode();\r\n var dataEmbed = element.getAttribute('data-ephox-embed-iri');\r\n if (dataEmbed) {\r\n return {\r\n 'source1': dataEmbed,\r\n 'data-ephox-embed-iri': dataEmbed,\r\n 'width': $_1gasfuh8jkmcwpf8.getMaxWidth(element),\r\n 'height': $_1gasfuh8jkmcwpf8.getMaxHeight(element)\r\n };\r\n }\r\n return element.getAttribute('data-mce-object') ? $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};\r\n };\r\n var getSource = function (editor) {\r\n var elm = editor.selection.getNode();\r\n if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {\r\n return editor.selection.getContent();\r\n }\r\n };\r\n var addEmbedHtml = function (win, editor) {\r\n return function (response) {\r\n var html = response.html;\r\n var embed = win.find('#embed')[0];\r\n var data = global$2.extend($_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), html), { source1: response.url });\r\n win.fromJSON(data);\r\n if (embed) {\r\n embed.value(html);\r\n $_gd8vqohhjkmcwpg2.updateSize(win);\r\n }\r\n };\r\n };\r\n var selectPlaceholder = function (editor, beforeObjects) {\r\n var i;\r\n var y;\r\n var afterObjects = editor.dom.select('img[data-mce-object]');\r\n for (i = 0; i < beforeObjects.length; i++) {\r\n for (y = afterObjects.length - 1; y >= 0; y--) {\r\n if (beforeObjects[i] === afterObjects[y]) {\r\n afterObjects.splice(y, 1);\r\n }\r\n }\r\n }\r\n editor.selection.select(afterObjects[0]);\r\n };\r\n var handleInsert = function (editor, html) {\r\n var beforeObjects = editor.dom.select('img[data-mce-object]');\r\n editor.insertContent(html);\r\n selectPlaceholder(editor, beforeObjects);\r\n editor.nodeChanged();\r\n };\r\n var submitForm = function (win, editor) {\r\n var data = win.toJSON();\r\n data.embed = $_6s992lhdjkmcwpfn.updateHtml(data.embed, data);\r\n if (data.embed && $_74pv8fh9jkmcwpf9.isCached(data.source1)) {\r\n handleInsert(editor, data.embed);\r\n } else {\r\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, data).then(function (response) {\r\n handleInsert(editor, response.html);\r\n }).catch(handleError(editor));\r\n }\r\n };\r\n var populateMeta = function (win, meta) {\r\n global$2.each(meta, function (value, key) {\r\n win.find('#' + key).value(value);\r\n });\r\n };\r\n var showDialog = function (editor) {\r\n var win;\r\n var data;\r\n var generalFormItems = [{\r\n name: 'source1',\r\n type: 'filepicker',\r\n filetype: 'media',\r\n size: 40,\r\n autofocus: true,\r\n label: 'Source',\r\n onpaste: function () {\r\n setTimeout(function () {\r\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\r\n }, 1);\r\n },\r\n onchange: function (e) {\r\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\r\n populateMeta(win, e.meta);\r\n },\r\n onbeforecall: function (e) {\r\n e.meta = win.toJSON();\r\n }\r\n }];\r\n var advancedFormItems = [];\r\n var reserialise = function (update) {\r\n update(win);\r\n data = win.toJSON();\r\n win.find('#embed').value($_6s992lhdjkmcwpfn.updateHtml(data.embed, data));\r\n };\r\n if ($_6qt1nth3jkmcwpf2.hasAltSource(editor)) {\r\n advancedFormItems.push({\r\n name: 'source2',\r\n type: 'filepicker',\r\n filetype: 'media',\r\n size: 40,\r\n label: 'Alternative source'\r\n });\r\n }\r\n if ($_6qt1nth3jkmcwpf2.hasPoster(editor)) {\r\n advancedFormItems.push({\r\n name: 'poster',\r\n type: 'filepicker',\r\n filetype: 'image',\r\n size: 40,\r\n label: 'Poster'\r\n });\r\n }\r\n if ($_6qt1nth3jkmcwpf2.hasDimensions(editor)) {\r\n var control = $_gd8vqohhjkmcwpg2.createUi(reserialise);\r\n generalFormItems.push(control);\r\n }\r\n data = getData(editor);\r\n var embedTextBox = {\r\n id: 'mcemediasource',\r\n type: 'textbox',\r\n flex: 1,\r\n name: 'embed',\r\n value: getSource(editor),\r\n multiline: true,\r\n rows: 5,\r\n label: 'Source'\r\n };\r\n var updateValueOnChange = function () {\r\n data = global$2.extend({}, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), this.value()));\r\n this.parent().parent().fromJSON(data);\r\n };\r\n embedTextBox[embedChange] = updateValueOnChange;\r\n var body = [\r\n {\r\n title: 'General',\r\n type: 'form',\r\n items: generalFormItems\r\n },\r\n {\r\n title: 'Embed',\r\n type: 'container',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n padding: 10,\r\n spacing: 10,\r\n items: [\r\n {\r\n type: 'label',\r\n text: 'Paste your embed code below:',\r\n forId: 'mcemediasource'\r\n },\r\n embedTextBox\r\n ]\r\n }\r\n ];\r\n if (advancedFormItems.length > 0) {\r\n body.push({\r\n title: 'Advanced',\r\n type: 'form',\r\n items: advancedFormItems\r\n });\r\n }\r\n win = editor.windowManager.open({\r\n title: 'Insert/edit media',\r\n data: data,\r\n bodyType: 'tabpanel',\r\n body: body,\r\n onSubmit: function () {\r\n $_gd8vqohhjkmcwpg2.updateSize(win);\r\n submitForm(win, editor);\r\n }\r\n });\r\n $_gd8vqohhjkmcwpg2.syncSize(win);\r\n };\r\n var $_3njyjoh0jkmcwpew = { showDialog: showDialog };\r\n\r\n var get = function (editor) {\r\n var showDialog = function () {\r\n $_3njyjoh0jkmcwpew.showDialog(editor);\r\n };\r\n return { showDialog: showDialog };\r\n };\r\n var $_eg0prjgzjkmcwpeu = { get: get };\r\n\r\n var register = function (editor) {\r\n var showDialog = function () {\r\n $_3njyjoh0jkmcwpew.showDialog(editor);\r\n };\r\n editor.addCommand('mceMedia', showDialog);\r\n };\r\n var $_8o48izhijkmcwpg5 = { register: register };\r\n\r\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\r\n\r\n var sanitize = function (editor, html) {\r\n if ($_6qt1nth3jkmcwpf2.shouldFilterHtml(editor) === false) {\r\n return html;\r\n }\r\n var writer = global$6();\r\n var blocked;\r\n global$3({\r\n validate: false,\r\n allow_conditional_comments: false,\r\n special: 'script,noscript',\r\n comment: function (text) {\r\n writer.comment(text);\r\n },\r\n cdata: function (text) {\r\n writer.cdata(text);\r\n },\r\n text: function (text, raw) {\r\n writer.text(text, raw);\r\n },\r\n start: function (name, attrs, empty) {\r\n blocked = true;\r\n if (name === 'script' || name === 'noscript') {\r\n return;\r\n }\r\n for (var i = 0; i < attrs.length; i++) {\r\n if (attrs[i].name.indexOf('on') === 0) {\r\n return;\r\n }\r\n if (attrs[i].name === 'style') {\r\n attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);\r\n }\r\n }\r\n writer.start(name, attrs, empty);\r\n blocked = false;\r\n },\r\n end: function (name) {\r\n if (blocked) {\r\n return;\r\n }\r\n writer.end(name);\r\n }\r\n }, global$7({})).parse(html);\r\n return writer.getContent();\r\n };\r\n var $_f1oicehmjkmcwpge = { sanitize: sanitize };\r\n\r\n var createPlaceholderNode = function (editor, node) {\r\n var placeHolder;\r\n var name = node.name;\r\n placeHolder = new global$8('img', 1);\r\n placeHolder.shortEnded = true;\r\n retainAttributesAndInnerHtml(editor, node, placeHolder);\r\n placeHolder.attr({\r\n 'width': node.attr('width') || '300',\r\n 'height': node.attr('height') || (name === 'audio' ? '30' : '150'),\r\n 'style': node.attr('style'),\r\n 'src': global$1.transparentSrc,\r\n 'data-mce-object': name,\r\n 'class': 'mce-object mce-object-' + name\r\n });\r\n return placeHolder;\r\n };\r\n var createPreviewIframeNode = function (editor, node) {\r\n var previewWrapper;\r\n var previewNode;\r\n var shimNode;\r\n var name = node.name;\r\n previewWrapper = new global$8('span', 1);\r\n previewWrapper.attr({\r\n 'contentEditable': 'false',\r\n 'style': node.attr('style'),\r\n 'data-mce-object': name,\r\n 'class': 'mce-preview-object mce-object-' + name\r\n });\r\n retainAttributesAndInnerHtml(editor, node, previewWrapper);\r\n previewNode = new global$8(name, 1);\r\n previewNode.attr({\r\n src: node.attr('src'),\r\n allowfullscreen: node.attr('allowfullscreen'),\r\n style: node.attr('style'),\r\n class: node.attr('class'),\r\n width: node.attr('width'),\r\n height: node.attr('height'),\r\n frameborder: '0'\r\n });\r\n shimNode = new global$8('span', 1);\r\n shimNode.attr('class', 'mce-shim');\r\n previewWrapper.append(previewNode);\r\n previewWrapper.append(shimNode);\r\n return previewWrapper;\r\n };\r\n var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {\r\n var attrName;\r\n var attrValue;\r\n var attribs;\r\n var ai;\r\n var innerHtml;\r\n attribs = sourceNode.attributes;\r\n ai = attribs.length;\r\n while (ai--) {\r\n attrName = attribs[ai].name;\r\n attrValue = attribs[ai].value;\r\n if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {\r\n if (attrName === 'data' || attrName === 'src') {\r\n attrValue = editor.convertURL(attrValue, attrName);\r\n }\r\n targetNode.attr('data-mce-p-' + attrName, attrValue);\r\n }\r\n }\r\n innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;\r\n if (innerHtml) {\r\n targetNode.attr('data-mce-html', escape($_f1oicehmjkmcwpge.sanitize(editor, innerHtml)));\r\n targetNode.firstChild = null;\r\n }\r\n };\r\n var isWithinEphoxEmbed = function (node) {\r\n while (node = node.parent) {\r\n if (node.attr('data-ephox-embed-iri')) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var placeHolderConverter = function (editor) {\r\n return function (nodes) {\r\n var i = nodes.length;\r\n var node;\r\n var videoScript;\r\n while (i--) {\r\n node = nodes[i];\r\n if (!node.parent) {\r\n continue;\r\n }\r\n if (node.parent.attr('data-mce-object')) {\r\n continue;\r\n }\r\n if (node.name === 'script') {\r\n videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), node.attr('src'));\r\n if (!videoScript) {\r\n continue;\r\n }\r\n }\r\n if (videoScript) {\r\n if (videoScript.width) {\r\n node.attr('width', videoScript.width.toString());\r\n }\r\n if (videoScript.height) {\r\n node.attr('height', videoScript.height.toString());\r\n }\r\n }\r\n if (node.name === 'iframe' && $_6qt1nth3jkmcwpf2.hasLiveEmbeds(editor) && global$1.ceFalse) {\r\n if (!isWithinEphoxEmbed(node)) {\r\n node.replace(createPreviewIframeNode(editor, node));\r\n }\r\n } else {\r\n if (!isWithinEphoxEmbed(node)) {\r\n node.replace(createPlaceholderNode(editor, node));\r\n }\r\n }\r\n }\r\n };\r\n };\r\n var $_f6hjinhljkmcwpga = {\r\n createPreviewIframeNode: createPreviewIframeNode,\r\n createPlaceholderNode: createPlaceholderNode,\r\n placeHolderConverter: placeHolderConverter\r\n };\r\n\r\n var setup = function (editor) {\r\n editor.on('preInit', function () {\r\n var specialElements = editor.schema.getSpecialElements();\r\n global$2.each('video audio iframe object'.split(' '), function (name) {\r\n specialElements[name] = new RegExp(']*>', 'gi');\r\n });\r\n var boolAttrs = editor.schema.getBoolAttrs();\r\n global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\r\n boolAttrs[name] = {};\r\n });\r\n editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', $_f6hjinhljkmcwpga.placeHolderConverter(editor));\r\n editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {\r\n var i = nodes.length;\r\n var node;\r\n var realElm;\r\n var ai;\r\n var attribs;\r\n var innerHtml;\r\n var innerNode;\r\n var realElmName;\r\n var className;\r\n while (i--) {\r\n node = nodes[i];\r\n if (!node.parent) {\r\n continue;\r\n }\r\n realElmName = node.attr(name);\r\n realElm = new global$8(realElmName, 1);\r\n if (realElmName !== 'audio' && realElmName !== 'script') {\r\n className = node.attr('class');\r\n if (className && className.indexOf('mce-preview-object') !== -1) {\r\n realElm.attr({\r\n width: node.firstChild.attr('width'),\r\n height: node.firstChild.attr('height')\r\n });\r\n } else {\r\n realElm.attr({\r\n width: node.attr('width'),\r\n height: node.attr('height')\r\n });\r\n }\r\n }\r\n realElm.attr({ style: node.attr('style') });\r\n attribs = node.attributes;\r\n ai = attribs.length;\r\n while (ai--) {\r\n var attrName = attribs[ai].name;\r\n if (attrName.indexOf('data-mce-p-') === 0) {\r\n realElm.attr(attrName.substr(11), attribs[ai].value);\r\n }\r\n }\r\n if (realElmName === 'script') {\r\n realElm.attr('type', 'text/javascript');\r\n }\r\n innerHtml = node.attr('data-mce-html');\r\n if (innerHtml) {\r\n innerNode = new global$8('#text', 3);\r\n innerNode.raw = true;\r\n innerNode.value = $_f1oicehmjkmcwpge.sanitize(editor, unescape(innerHtml));\r\n realElm.append(innerNode);\r\n }\r\n node.replace(realElm);\r\n }\r\n });\r\n });\r\n editor.on('setContent', function () {\r\n editor.$('span.mce-preview-object').each(function (index, elm) {\r\n var $elm = editor.$(elm);\r\n if ($elm.find('span.mce-shim', elm).length === 0) {\r\n $elm.append('');\r\n }\r\n });\r\n });\r\n };\r\n var $_b6ycdhhjjkmcwpg6 = { setup: setup };\r\n\r\n var setup$1 = function (editor) {\r\n editor.on('ResolveName', function (e) {\r\n var name;\r\n if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\r\n e.name = name;\r\n }\r\n });\r\n };\r\n var $_c1o1r8hnjkmcwpgg = { setup: setup$1 };\r\n\r\n var setup$2 = function (editor) {\r\n editor.on('click keyup', function () {\r\n var selectedNode = editor.selection.getNode();\r\n if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\r\n if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\r\n selectedNode.setAttribute('data-mce-selected', '2');\r\n }\r\n }\r\n });\r\n editor.on('ObjectSelected', function (e) {\r\n var objectType = e.target.getAttribute('data-mce-object');\r\n if (objectType === 'audio' || objectType === 'script') {\r\n e.preventDefault();\r\n }\r\n });\r\n editor.on('objectResized', function (e) {\r\n var target = e.target;\r\n var html;\r\n if (target.getAttribute('data-mce-object')) {\r\n html = target.getAttribute('data-mce-html');\r\n if (html) {\r\n html = unescape(html);\r\n target.setAttribute('data-mce-html', escape($_6s992lhdjkmcwpfn.updateHtml(html, {\r\n width: e.width,\r\n height: e.height\r\n })));\r\n }\r\n }\r\n });\r\n };\r\n var $_8yods0hojkmcwpgh = { setup: setup$2 };\r\n\r\n var register$1 = function (editor) {\r\n editor.addButton('media', {\r\n tooltip: 'Insert/edit media',\r\n cmd: 'mceMedia',\r\n stateSelector: [\r\n 'img[data-mce-object]',\r\n 'span[data-mce-object]',\r\n 'div[data-ephox-embed-iri]'\r\n ]\r\n });\r\n editor.addMenuItem('media', {\r\n icon: 'media',\r\n text: 'Media',\r\n cmd: 'mceMedia',\r\n context: 'insert',\r\n prependToContext: true\r\n });\r\n };\r\n var $_ew8gthhpjkmcwpgk = { register: register$1 };\r\n\r\n global.add('media', function (editor) {\r\n $_8o48izhijkmcwpg5.register(editor);\r\n $_ew8gthhpjkmcwpgk.register(editor);\r\n $_c1o1r8hnjkmcwpgg.setup(editor);\r\n $_b6ycdhhjjkmcwpg6.setup(editor);\r\n $_8yods0hojkmcwpgh.setup(editor);\r\n return $_eg0prjgzjkmcwpeu.get(editor);\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"","(function () {\r\nvar advlist = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var applyListFormat = function (editor, listName, styleValue) {\r\n var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';\r\n editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });\r\n };\r\n var $_55fky08fjkmcwo2a = { applyListFormat: applyListFormat };\r\n\r\n var register = function (editor) {\r\n editor.addCommand('ApplyUnorderedListStyle', function (ui, value) {\r\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'UL', value['list-style-type']);\r\n });\r\n editor.addCommand('ApplyOrderedListStyle', function (ui, value) {\r\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'OL', value['list-style-type']);\r\n });\r\n };\r\n var $_cjqqqe8ejkmcwo28 = { register: register };\r\n\r\n var getNumberStyles = function (editor) {\r\n var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman');\r\n return styles ? styles.split(/[ ,]/) : [];\r\n };\r\n var getBulletStyles = function (editor) {\r\n var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square');\r\n return styles ? styles.split(/[ ,]/) : [];\r\n };\r\n var $_2zo4iv8hjkmcwo2f = {\r\n getNumberStyles: getNumberStyles,\r\n getBulletStyles: getBulletStyles\r\n };\r\n\r\n var isChildOfBody = function (editor, elm) {\r\n return editor.$.contains(editor.getBody(), elm);\r\n };\r\n var isTableCellNode = function (node) {\r\n return node && /^(TH|TD)$/.test(node.nodeName);\r\n };\r\n var isListNode = function (editor) {\r\n return function (node) {\r\n return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node);\r\n };\r\n };\r\n var getSelectedStyleType = function (editor) {\r\n var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\r\n return editor.dom.getStyle(listElm, 'listStyleType') || '';\r\n };\r\n var $_djj0lo8ijkmcwo2g = {\r\n isTableCellNode: isTableCellNode,\r\n isListNode: isListNode,\r\n getSelectedStyleType: getSelectedStyleType\r\n };\r\n\r\n var styleValueToText = function (styleValue) {\r\n return styleValue.replace(/\\-/g, ' ').replace(/\\b\\w/g, function (chr) {\r\n return chr.toUpperCase();\r\n });\r\n };\r\n var toMenuItems = function (styles) {\r\n return global$1.map(styles, function (styleValue) {\r\n var text = styleValueToText(styleValue);\r\n var data = styleValue === 'default' ? '' : styleValue;\r\n return {\r\n text: text,\r\n data: data\r\n };\r\n });\r\n };\r\n var $_cbyrf58jjkmcwo2h = { toMenuItems: toMenuItems };\r\n\r\n var findIndex = function (list, predicate) {\r\n for (var index = 0; index < list.length; index++) {\r\n var element = list[index];\r\n if (predicate(element)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n };\r\n var listState = function (editor, listName) {\r\n return function (e) {\r\n var ctrl = e.control;\r\n editor.on('NodeChange', function (e) {\r\n var tableCellIndex = findIndex(e.parents, $_djj0lo8ijkmcwo2g.isTableCellNode);\r\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\r\n var lists = global$1.grep(parents, $_djj0lo8ijkmcwo2g.isListNode(editor));\r\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\r\n });\r\n };\r\n };\r\n var updateSelection = function (editor) {\r\n return function (e) {\r\n var listStyleType = $_djj0lo8ijkmcwo2g.getSelectedStyleType(editor);\r\n e.control.items().each(function (ctrl) {\r\n ctrl.active(ctrl.settings.data === listStyleType);\r\n });\r\n };\r\n };\r\n var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) {\r\n editor.addButton(id, {\r\n active: false,\r\n type: 'splitbutton',\r\n tooltip: tooltip,\r\n menu: $_cbyrf58jjkmcwo2h.toMenuItems(styles),\r\n onPostRender: listState(editor, nodeName),\r\n onshow: updateSelection(editor),\r\n onselect: function (e) {\r\n $_55fky08fjkmcwo2a.applyListFormat(editor, nodeName, e.control.settings.data);\r\n },\r\n onclick: function () {\r\n editor.execCommand(cmd);\r\n }\r\n });\r\n };\r\n var addButton = function (editor, id, tooltip, cmd, nodeName, styles) {\r\n editor.addButton(id, {\r\n active: false,\r\n type: 'button',\r\n tooltip: tooltip,\r\n onPostRender: listState(editor, nodeName),\r\n onclick: function () {\r\n editor.execCommand(cmd);\r\n }\r\n });\r\n };\r\n var addControl = function (editor, id, tooltip, cmd, nodeName, styles) {\r\n if (styles.length > 0) {\r\n addSplitButton(editor, id, tooltip, cmd, nodeName, styles);\r\n } else {\r\n addButton(editor, id, tooltip, cmd, nodeName, styles);\r\n }\r\n };\r\n var register$1 = function (editor) {\r\n addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', $_2zo4iv8hjkmcwo2f.getNumberStyles(editor));\r\n addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', $_2zo4iv8hjkmcwo2f.getBulletStyles(editor));\r\n };\r\n var $_d74fz58gjkmcwo2b = { register: register$1 };\r\n\r\n global.add('advlist', function (editor) {\r\n var hasPlugin = function (editor, plugin) {\r\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\r\n return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1;\r\n };\r\n if (hasPlugin(editor, 'lists')) {\r\n $_d74fz58gjkmcwo2b.register(editor);\r\n $_cjqqqe8ejkmcwo28.register(editor);\r\n }\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","(function () {\r\nvar preview = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var getPreviewDialogWidth = function (editor) {\r\n return parseInt(editor.getParam('plugin_preview_width', '650'), 10);\r\n };\r\n var getPreviewDialogHeight = function (editor) {\r\n return parseInt(editor.getParam('plugin_preview_height', '500'), 10);\r\n };\r\n var getContentStyle = function (editor) {\r\n return editor.getParam('content_style', '');\r\n };\r\n var $_6hy26xjfjkmcwppy = {\r\n getPreviewDialogWidth: getPreviewDialogWidth,\r\n getPreviewDialogHeight: getPreviewDialogHeight,\r\n getContentStyle: getContentStyle\r\n };\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var getPreviewHtml = function (editor) {\r\n var previewHtml;\r\n var headHtml = '';\r\n var encode = editor.dom.encode;\r\n var contentStyle = $_6hy26xjfjkmcwppy.getContentStyle(editor);\r\n headHtml += '';\r\n if (contentStyle) {\r\n headHtml += '';\r\n }\r\n global$2.each(editor.contentCSS, function (url) {\r\n headHtml += '';\r\n });\r\n var bodyId = editor.settings.body_id || 'tinymce';\r\n if (bodyId.indexOf('=') !== -1) {\r\n bodyId = editor.getParam('body_id', '', 'hash');\r\n bodyId = bodyId[editor.id] || bodyId;\r\n }\r\n var bodyClass = editor.settings.body_class || '';\r\n if (bodyClass.indexOf('=') !== -1) {\r\n bodyClass = editor.getParam('body_class', '', 'hash');\r\n bodyClass = bodyClass[editor.id] || '';\r\n }\r\n var preventClicksOnLinksScript = ' ';\r\n var dirAttr = editor.settings.directionality ? ' dir=\"' + editor.settings.directionality + '\"' : '';\r\n previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + '';\r\n return previewHtml;\r\n };\r\n var injectIframeContent = function (editor, iframe, sandbox) {\r\n var previewHtml = getPreviewHtml(editor);\r\n if (!sandbox) {\r\n var doc = iframe.contentWindow.document;\r\n doc.open();\r\n doc.write(previewHtml);\r\n doc.close();\r\n } else {\r\n iframe.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml);\r\n }\r\n };\r\n var $_5s7etcjgjkmcwppz = {\r\n getPreviewHtml: getPreviewHtml,\r\n injectIframeContent: injectIframeContent\r\n };\r\n\r\n var open = function (editor) {\r\n var sandbox = !global$1.ie;\r\n var dialogHtml = '';\r\n var dialogWidth = $_6hy26xjfjkmcwppy.getPreviewDialogWidth(editor);\r\n var dialogHeight = $_6hy26xjfjkmcwppy.getPreviewDialogHeight(editor);\r\n editor.windowManager.open({\r\n title: 'Preview',\r\n width: dialogWidth,\r\n height: dialogHeight,\r\n html: dialogHtml,\r\n buttons: {\r\n text: 'Close',\r\n onclick: function (e) {\r\n e.control.parent().parent().close();\r\n }\r\n },\r\n onPostRender: function (e) {\r\n var iframeElm = e.control.getEl('body').firstChild;\r\n $_5s7etcjgjkmcwppz.injectIframeContent(editor, iframeElm, sandbox);\r\n }\r\n });\r\n };\r\n var $_4mmnpbjdjkmcwppw = { open: open };\r\n\r\n var register = function (editor) {\r\n editor.addCommand('mcePreview', function () {\r\n $_4mmnpbjdjkmcwppw.open(editor);\r\n });\r\n };\r\n var $_c197icjcjkmcwppv = { register: register };\r\n\r\n var register$1 = function (editor) {\r\n editor.addButton('preview', {\r\n title: 'Preview',\r\n cmd: 'mcePreview'\r\n });\r\n editor.addMenuItem('preview', {\r\n text: 'Preview',\r\n cmd: 'mcePreview',\r\n context: 'view'\r\n });\r\n };\r\n var $_eluyd4jijkmcwpq6 = { register: register$1 };\r\n\r\n global.add('preview', function (editor) {\r\n $_c197icjcjkmcwppv.register(editor);\r\n $_eluyd4jijkmcwpq6.register(editor);\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=ea9b03dc&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-cna d-table text-center\",staticStyle:{\"border-radius\":\"5%\"}},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\",staticStyle:{\"font-size\":\"18px\"}},[_c('b',[_vm._v(\"Acesso realizado com sucesso.\")]),_c('br'),_c('button',{staticClass:\"btn btn-outline-danger mt-4\",on:{\"click\":function($event){return _vm.acessarShopping()}}},[_vm._v(\"Acessar o Shopping CNA\")])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1d60a480&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle\"},[(_vm.error)?_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-cna d-table text-center\",staticStyle:{\"border-radius\":\"5%\"}},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\",staticStyle:{\"color\":\"red\",\"font-size\":\"18px\"}},[_vm._m(0),_c('br'),_c('button',{staticClass:\"btn btn-outline-danger mt-4\",on:{\"click\":function($event){return _vm.logout()}}},[_vm._v(\"Sair\")])])]),_vm._m(1)]):_c('div',{staticClass:\"inner\"},[_vm._m(2),_vm._m(3)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b',[_vm._v(\"Opsss, nos desculpe!\"),_c('br'),_vm._v(\"Entre em contato com sua escola.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon-bottom text-center\"},[_c('i',{staticClass:\"fa fa-6x fa-times\",staticStyle:{\"font-size\":\"90px\",\"color\":\"red\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"titles text-cna d-table text-center\"},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\"},[_c('b',[_vm._v(\"Aguarde,\"),_c('br'),_vm._v(\"estamos concluindo seu acesso.\")]),_c('br')])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon-bottom\"},[_c('i',{staticClass:\"fa fa-6x fa-check-circle icon-animated\",staticStyle:{\"font-size\":\"90px\",\"color\":\"green\"}})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=35160770&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle \"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-primary d-table text-center p-2\"},[_c('h3',{staticClass:\"d-table-cell align-middle\"},[_c('span',{staticClass:\"text-uppercase\",staticStyle:{\"color\":\"red\"}},[_c('strong',[_vm._v(\"Acesso negado\")])]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Você não tem permissão para acessar esta tela! Favor entrar em contato com o Administrador do Sistema.\")])])]),_c('div',{staticClass:\"icon-bottom\"},[_c('i',{staticClass:\"fa fa-6x fa-exclamation-circle icon-animated\",staticStyle:{\"font-size\":\"90px\",\"color\":\"#cc2213\"}})]),_c('div',{staticClass:\"col-12\",staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticClass:\"form-group cna-login__group\"},[_c('a',{staticClass:\"btn btn-sm btn-default btn-default-app p-2 text-white\",attrs:{\"href\":\"/home\"}},[_vm._v(\"Ir para home\")])])])])])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=224162aa&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"back-perfil\"},[_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-5 mt-md-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body pr-md-4\"},[_c('h4',{staticClass:\"mt-0 text-primary text-center\"},[_vm._v(_vm._s(_vm.model.nome))]),_c('hr',{staticClass:\"mb-0\"}),_c('form',{ref:\"pessoa-cna-form-edit\",staticClass:\"form-group mt-3\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.executeEdit(_vm.model)}}},[_c('div',[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Meus Dados\",\"active\":\"\"}},[_c('div',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"editando-perfil w-100\"},[_c('div',{staticClass:\"ml-md-3\"},[_c('h6',[_vm._v(\"DADOS PESSOAIS\")])]),_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"email\"}},[_vm._v(\"E-mail\")]),_c('p',[_vm._v(_vm._s(_vm.model.email))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"emailAlternativo\"}},[_vm._v(\"E-mail alternativo\")]),_c('p',[_vm._v(_vm._s(_vm.model.emailAlternativo))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"CPF ou CNPJ\")]),_c('p',[_vm._v(_vm._s(_vm.model.cpF_CNPJFormatado))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"rG_IE\"}},[_vm._v(\"RG\")]),_c('the-mask',{staticClass:\"form-control\",attrs:{\"name\":\"rG_IE\",\"mask\":'##.###.###-X'},model:{value:(_vm.model.rG_IE),callback:function ($$v) {_vm.$set(_vm.model, \"rG_IE\", $$v)},expression:\"model.rG_IE\"}})],1),_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('span',{staticClass:\"text-primary text-sm-left font-italic\"},[_vm._v(\"*O e-mail e CPF são utilizados para realizar\\n o acesso ao Shopping CNA. Para alterar o seu\\n e-mail vá até a aba DADOS DE ACESSO\")])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"apelido\"}},[_vm._v(\"Apelido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.apelido),expression:\"model.apelido\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"apelido\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.apelido)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"apelido\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"celular\"}},[_vm._v(\"Celular\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##) #####-####'),expression:\"'(##) #####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.celular),expression:\"model.celular\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"celular\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.celular)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"celular\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"comercial\"}},[_vm._v(\"Telefone Comercial\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)####-####'),expression:\"'(##)####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefoneComercial),expression:\"model.telefoneComercial\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"13\",\"name\":\"comercial\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.telefoneComercial)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"telefoneComercial\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"telefone\"}},[_vm._v(\"Telefone\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##) ####-####'),expression:\"'(##) ####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefone),expression:\"model.telefone\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"telefone\",\"maxlength\":\"13\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.telefone)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"telefone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-4\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"dtNascimento\"}},[_vm._v(\"Data Nascimento\")]),_c('input',{directives:[{name:\"datepicker\",rawName:\"v-datepicker\"},{name:\"mask\",rawName:\"v-mask\",value:('##/##/####'),expression:\"'##/##/####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.dataNascimento),expression:\"model.dataNascimento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"10\",\"name\":\"dataNascimento\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.dataNascimento)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"dataNascimento\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-8\"},[_c('label',[_vm._v(\"Sexo\")]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"btn-group btn-group-toggle genero w-100\"},[_c('label',{staticClass:\"btn bg-light radius-left px-2 text-primary\",class:{ active: _vm.model.sexo == 1 }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-1\",\"name\":\"sexo\",\"value\":\"1\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"1\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"1\")}}}),_c('i',{staticClass:\"fas fa-male\"}),_vm._v(\" Masculino\\n \")]),_c('label',{staticClass:\"btn bg-light px-2 text-primary\",class:{ active: _vm.model.sexo == 2 }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-0\",\"name\":\"sexo\",\"value\":\"2\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"2\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"2\")}}}),_c('i',{staticClass:\"fas fa-female\"}),_vm._v(\" Feminino\\n \")]),_c('label',{staticClass:\"btn bg-light radius-right px-2 text-primary\",class:{\n active: _vm.model.sexo == null,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-null\",\"name\":\"sexo\",\"value\":\"null\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"null\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"null\")}}}),_vm._v(\"\\n Não informar\\n \")])])])])])])]),_c('div',{},[_c('div',{staticClass:\"editando-perfil w-100 mt-md-3\"},[_c('div',{staticClass:\"ml-md-3\"},[_c('h6',[_vm._v(\"ENDEREÇO\")])]),_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cep\"}},[_vm._v(\"CEP\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('#####-###'),expression:\"'#####-###'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.cep),expression:\"model.cep\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cep\",\"autocomplete\":\"off\",\"maxlength\":\"9\"},domProps:{\"value\":(_vm.model.cep)},on:{\"change\":function($event){return _vm.buscarCep()},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cep\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"rua\"}},[_vm._v(\"Rua\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rua),expression:\"model.rua\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rua\",\"autocomplete\":\"off\",\"maxlength\":\"255\"},domProps:{\"value\":(_vm.model.rua)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"rua\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-3\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"numero\"}},[_vm._v(\"Número\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.numero),expression:\"model.numero\"}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"name\":\"numero\",\"autocomplete\":\"off\",\"maxlength\":\"15\"},domProps:{\"value\":(_vm.model.numero)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"numero\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-3\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"complemento\"}},[_vm._v(\"Complemento\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.complemento),expression:\"model.complemento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"complemento\",\"autocomplete\":\"off\",\"maxlength\":\"50\"},domProps:{\"value\":(_vm.model.complemento)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"complemento\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"bairro\"}},[_vm._v(\"Bairro\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.bairro),expression:\"model.bairro\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"bairro\",\"autocomplete\":\"off\",\"maxlength\":\"50\"},domProps:{\"value\":(_vm.model.bairro)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"bairro\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cidade\"}},[_vm._v(\"Cidade\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cidade),expression:\"model.cidade\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cidade\",\"autocomplete\":\"off\",\"maxlength\":\"50\"},domProps:{\"value\":(_vm.model.cidade)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cidade\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"uf\"}},[_vm._v(\"UF\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.uf),expression:\"model.uf\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"uf\",\"autocomplete\":\"off\",\"maxlength\":\"2\"},domProps:{\"value\":(_vm.model.uf)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"uf\", $event.target.value)}}})]),_c('div',{staticClass:\"w-100 pr-3\"},[_c('button',{staticClass:\"btn btn-danger btn-round mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.dialogAlteraSenha = true}}},[_vm._v(\"\\n Alterar Senha\\n \")]),_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Confirmar\\n \")])])])])])]),_c('b-tab',{attrs:{\"title\":\"Dados de Acesso\"}},[_c('div',{staticClass:\"row pl-md-3 mt-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\",\"disabled\":\"\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"userName\"}},[_vm._v(\"Username\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.userName),expression:\"model.userName\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"userName\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.userName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"userName\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"CPF ou CNPJ\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cpF_CNPJFormatado),expression:\"model.cpF_CNPJFormatado\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cpF_CNPJ\",\"autocomplete\":\"off\",\"disabled\":\"\"},domProps:{\"value\":(_vm.model.cpF_CNPJFormatado)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cpF_CNPJFormatado\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"email\"}},[_vm._v(\"E-mail\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"email\", $event.target.value)}}})])]),_c('div',{staticClass:\"w-100 pr-3\"},[_c('button',{staticClass:\"btn btn-danger btn-round mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.dialogAlteraSenha = true}}},[_vm._v(\"\\n Alterar Senha\\n \")]),_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Confirmar\\n \")])])])],1)],1)])])])])])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"size\":\"lg\",\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Alterar Senha\"},model:{value:(_vm.dialogAlteraSenha),callback:function ($$v) {_vm.dialogAlteraSenha=$$v},expression:\"dialogAlteraSenha\"}},[(_vm.dialogAlteraSenha)?_c('nova-senha',{attrs:{\"id\":_vm.id},on:{\"on-saved\":function($event){return _vm.hideAll()},\"on-back\":function($event){return _vm.hideAll()}}}):_vm._e()],1),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"size\":\"lg\",\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Confirmar Senha\"},model:{value:(_vm.dialogConfirmarSenha),callback:function ($$v) {_vm.dialogConfirmarSenha=$$v},expression:\"dialogConfirmarSenha\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"Para realizar a alteração de e-mail ou username, é necessário a\\n confirmação da senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmarSenha),expression:\"model.confirmarSenha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmarSenha\",\"placeholder\":\"Informe a Confirmação de Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmarSenha)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"confirmarSenha\", $event.target.value)}}})])]),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-danger border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.hideAll()}}},[_vm._v(\"\\n Voltar\\n \")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarSenha(_vm.model)}}},[_vm._v(\"\\n Continuar\\n \")])])])])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Meus Dados\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"dados-conta bg-white mt-3 \"},[_c('form',{ref:\"form-nova-senha\",staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group form-group-custom\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"senhaAtual\"}},[_vm._v(\"Senha Atual\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senhaAtual),expression:\"model.senhaAtual\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senhaAtual\",\"placeholder\":\"Informe a Senha Atual\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senhaAtual)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"senhaAtual\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senha\",\"placeholder\":\"Informe a Nova Senha\",\"required\":\"\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmacao\",\"placeholder\":\"Informe a Confirmação da Senha\",\"required\":\"\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])]),_vm._m(0),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6 \"},[_c('button',{staticClass:\"btn btn-danger border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.onBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.alteraSenha()}}},[_vm._v(\"Continuar\")])])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-6 mt-4\"},[_c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('strong',[_vm._v(\"Dica de segurança\")]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha de 6 a 10 caracteres. \")])])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./novasenha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./novasenha.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./novasenha.vue?vue&type=template&id=0f8c02dd&\"\nimport script from \"./novasenha.vue?vue&type=script&lang=js&\"\nexport * from \"./novasenha.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3959a709&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"back-perfil height-senha\"},[_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-5 mt-md-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"wizard my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media-body pr-md-4\"},[(!_vm.senhaAlterada)?_c('div',[_c('div',{staticClass:\"dados-conta bg-white mt-3 \"},[_c('form',{ref:\"form-redefinir-senha\",staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group form-group-custom\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"senhaAtual\"}},[_vm._v(\"Senha Atual\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senhaAtual),expression:\"model.senhaAtual\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senhaAtual\",\"placeholder\":\"Informe a Senha Atual\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senhaAtual)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"senhaAtual\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senha\",\"placeholder\":\"Informe a Nova Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmacao\",\"placeholder\":\"Informe a Confirmação da Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])]),_vm._m(1),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6 \"}),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.alteraSenha()}}},[_vm._v(\"Continuar\")])])])])])])]):_vm._e(),(_vm.senhaAlterada)?_c('div',[_vm._m(2)]):_vm._e()])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Redefinir Senha\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-6 mt-4\"},[_c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('strong',[_vm._v(\"Dica de segurança\")]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha de 6 a 10 caracteres. \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Sua senha foi alterado com sucesso!.\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n|\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2d42f62e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('div',{staticClass:\"steps\"},[_c('form',{staticClass:\"form cf\"},[_c('div',{staticClass:\"wizard my-0 mx-auto\"},[_c('div',{staticClass:\"wizard-inner\"},[_c('div',{staticClass:\"connecting-line\"}),_c('div',{staticClass:\"connecting-line-status\",style:({ width: _vm.step.status })}),_c('ul',{staticClass:\"nav nav-tabs\"},[_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 1 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(1)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 2 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(2)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 3 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(3)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 4 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(4)])])])]),_c('div',{staticClass:\"tab-content\"},[(_vm.step.id == 1)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-identificacao',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepIdentificacaoFinished($event)},\"on-back\":function($event){return _vm.goStep('voltar')}}})],1):_vm._e(),(_vm.step.id == 2)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-dados-pessoais',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepDadosPessoaisFinished($event)},\"on-back\":function($event){return _vm.goStep('identificacao')}}})],1):_vm._e(),(_vm.step.id == 3)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-acesso',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepAcessoFinished($event)},\"on-back\":function($event){return _vm.goStep('dados-pessoais')}}})],1):_vm._e(),(_vm.step.id == 4)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-senha',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepSenhaFinished($event)},\"on-back\":function($event){return _vm.goStep('acesso')}}})],1):_vm._e(),(_vm.step.id == 5)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-finalizar',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepFinalizarFinished($event)}}})],1):_vm._e()])])])])])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Criar Conta\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Identificação\")]),_c('br'),_vm._v(\"\\n Qual conta você deseja ativar?\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Dados Pessoais\")]),_c('br'),_vm._v(\"\\n Queremos saber quem é você :)\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Acesso\")]),_c('br'),_vm._v(\"\\n Vamos configurar sua forma de acessar\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Senha\")]),_c('br'),_vm._v(\"\\n Porque segurança é importante pra gente!\\n \")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isloading),expression:\"isloading\"}],staticClass:\"loader\"},[_c('img',{attrs:{\"src\":require(\"../../assets/logo.png\"),\"alt\":\"Carregando...\"}}),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner\"},[_c('div',{staticClass:\"dot1\"}),_c('div',{staticClass:\"dot2\"})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=4ed0b74c&\"\nimport script from \"./loading.vue?vue&type=script&lang=js&\"\nexport * from \"./loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./loading.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',[_c('nav',{staticClass:\"bg-white text-center\"},[_c('a',{staticClass:\"navbar-brand p-0 my-0 mx-auto mx-md-0 logo-topo\",attrs:{\"href\":\"javascript:;\"}},[_c('img',{staticClass:\"mb-4\",attrs:{\"src\":require(\"../assets/images/logo_cna_circulo.png\"),\"alt\":\"CNA\",\"Title\":\"CNA\",\"width\":\"180\"}})])])])}]\n\nexport { render, staticRenderFns }","\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=7dbdf3c1&\"\nimport script from \"./header.vue?vue&type=script&lang=js&\"\nexport * from \"./header.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_vm._m(0),_vm._l((_vm.items),function(item){return _c('div',{key:item.metodoAcessoId,staticClass:\"px-0 col-md-6 pb-3\"},[(item.unico)?_c('div',[_c('strong',[(item.metodoAcessoId == 1)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"CPF/CNPJ:\")]):_vm._e(),(item.metodoAcessoId == 2)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"E-mail:\")]):_vm._e(),(item.metodoAcessoId == 3)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Celular:\")]):_vm._e(),(item.metodoAcessoId == 4)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Username:\")]):_vm._e()]),_c('br'),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(item.loginExibicao))])]):_c('div',[_c('strong',{staticClass:\"text-danger\"},[(item.metodoAcessoId == 1)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"CPF/CNPJ:\")]):_vm._e(),(item.metodoAcessoId == 2)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"E-mail:\")]):_vm._e(),(item.metodoAcessoId == 3)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Celular:\")]):_vm._e(),(item.metodoAcessoId == 4)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"UserName:\")]):_vm._e(),_c('br'),_c('span',[_vm._v(_vm._s(item.loginExibicao))]),_c('br'),_c('small',[_vm._v(\"Já existe um acesso configurado para este login.\")])])])])})],2),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarMetodoAcesso()}}},[_vm._v(\"Continuar\")])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Confirmação\"},model:{value:(_vm.dialogCodigoAcesso),callback:function ($$v) {_vm.dialogCodigoAcesso=$$v},expression:\"dialogCodigoAcesso\"}},[(_vm.metodoAcesso)?_c('div',[_c('h4',{staticClass:\"text-center text-azul-escuro\"},[_vm._v(\"Está faltando pouco para ativar sua conta!\")]),_c('div',{staticClass:\"row mt-4\"},[_c('div',{staticClass:\"col-md-12\"},[_c('span',{staticClass:\"text-center mt-3 text-azul-escuro\"},[_vm._v(\"\\n Para prosseguir, enviamos um código para \"),_c('strong',[_vm._v(_vm._s(_vm.metodoAcesso.login))]),_vm._v(\".\\n Insira a informação abaixo.\\n \")])]),_c('div',{staticClass:\"form-group col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.metodoAcesso.codigoValidacao),expression:\"metodoAcesso.codigoValidacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"codigoValidacao\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.metodoAcesso.codigoValidacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.metodoAcesso, \"codigoValidacao\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-4\"},[_c('div',{staticClass:\"col-md-6\"},[_c('button',{staticClass:\"btn btn-info btn-block rounded-pill\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarMetodoAcesso(true)}}},[_vm._v(\"Reenviar\")])]),_c('div',{staticClass:\"col-md-6\"},[_c('button',{staticClass:\"btn btn-secondary btn-block rounded-pill\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarCodigoAcesso()}}},[_vm._v(\"Confirmar\")])])])]):_vm._e()])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"text-center w-100\"},[_c('span',{staticClass:\"mt-3 text-azul-escuro\"},[_vm._v(\"\\n Essas são as formas possíveis para você se \"),_c('strong',[_vm._v(\"autenticar\")]),_vm._v(\".\\n\\n \")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./acesso.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./acesso.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./acesso.vue?vue&type=template&id=b346312a&\"\nimport script from \"./acesso.vue?vue&type=script&lang=js&\"\nexport * from \"./acesso.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('form',{ref:\"form-dados-pessoais\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.confirmarDados()}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group col-md-8\"},[_c('label',{attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"apelido\"}},[_vm._v(\"Apelido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.apelido),expression:\"model.apelido\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"apelido\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.apelido)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"apelido\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"\\n CPF ou CNPJ\\n \"),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fas fa-question-circle\",attrs:{\"title\":\"Não é possível alterar o CPF ou CNPJ. Caso esteja incorreto, por favor informe sua escola.\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cpF_CNPJFormatado),expression:\"model.cpF_CNPJFormatado\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cpF_CNPJ\",\"autocomplete\":\"off\",\"readonly\":\"\",\"required\":\"\"},domProps:{\"value\":(_vm.model.cpF_CNPJFormatado)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cpF_CNPJFormatado\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"rG_IE\"}},[_vm._v(\"RG\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rG_IE),expression:\"model.rG_IE\"},{name:\"mask\",rawName:\"v-mask\",value:(_vm.mask_rg),expression:\"mask_rg\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rG_IE\",\"autocomplete\":\"off\",\"maxlength\":\"12\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.rG_IE)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"rG_IE\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"dataNascimento\"}},[_vm._v(\"Data Nascimento\")]),_c('input',{directives:[{name:\"datepicker\",rawName:\"v-datepicker\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.dataNascimento),expression:\"model.dataNascimento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"10\",\"name\":\"dataNascimento\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.dataNascimento)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"dataNascimento\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"\\n E-mail\\n \"),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fas fa-question-circle\",attrs:{\"title\":\"Não é possível alterar o e-mail. Caso esteja incorreto, por favor informe sua escola.\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"email\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"emailSecundario\"}},[_vm._v(\"E-mail alternativo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.emailAlternativo),expression:\"model.emailAlternativo\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"emailSecundario\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.emailAlternativo)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"emailAlternativo\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"celular\"}},[_vm._v(\"Celular\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)#####-####'),expression:\"'(##)#####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.celular),expression:\"model.celular\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"celular\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.celular)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"celular\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"telefone\"}},[_vm._v(\"Telefone\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)####-####'),expression:\"'(##)####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefone),expression:\"model.telefone\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"telefone\",\"maxlength\":\"13\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.telefone)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"telefone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"comercial\"}},[_vm._v(\"Telefone Comercial\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)#####-####'),expression:\"'(##)#####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefoneComercial),expression:\"model.telefoneComercial\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"comercial\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.telefoneComercial)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"telefoneComercial\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"cep\"}},[_vm._v(\"CEP\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('#####-###'),expression:\"'#####-###'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.cep),expression:\"model.cep\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cep\",\"autocomplete\":\"off\",\"maxlength\":\"9\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.cep)},on:{\"change\":function($event){return _vm.buscarCep()},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cep\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"rua\"}},[_vm._v(\"Endereço\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rua),expression:\"model.rua\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rua\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.rua)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"rua\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-2\"},[_c('label',{attrs:{\"for\":\"numero\"}},[_vm._v(\"Número\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.numero),expression:\"model.numero\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"numero\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.numero)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"numero\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-3\"},[_c('label',{attrs:{\"for\":\"complemento\"}},[_vm._v(\"Complemento\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.complemento),expression:\"model.complemento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"complemento\",\"autocomplete\":\"off\",\"maxlength\":\"50\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.complemento)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"complemento\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-3\"},[_c('label',{attrs:{\"for\":\"bairro\"}},[_vm._v(\"Bairro\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.bairro),expression:\"model.bairro\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"bairro\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.bairro)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"bairro\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"cidade\"}},[_vm._v(\"Cidade\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cidade),expression:\"model.cidade\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cidade\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.cidade)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"cidade\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-2\"},[_c('label',{attrs:{\"for\":\"uf\"}},[_vm._v(\"UF\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.uf),expression:\"model.uf\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"uf\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.uf)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"uf\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarDados()}}},[_vm._v(\"Continuar\")])])])]),_c('div',{staticClass:\"alert alert-danger mt-4\"},[_vm._v(\"\\n Caso tenha encontrado alguma informação incorreta ou incompleta, por favor entre em contato com a sua escola CNA para ajuste.\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dados-pessoais.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dados-pessoais.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dados-pessoais.vue?vue&type=template&id=968f3a3e&\"\nimport script from \"./dados-pessoais.vue?vue&type=script&lang=js&\"\nexport * from \"./dados-pessoais.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_vm._m(0),_vm._m(1),_c('div',{staticClass:\"col-md-12 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-primary rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.redirecionar()}}},[_vm._v(\"Redirecionar\")])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center w-100 sucesso\"},[_c('strong',[_vm._v(\"Sucesso!\")]),_c('br')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-12 text-center\"},[_c('span',{staticClass:\" mt-3 text-azul-escuro\"},[_vm._v(\"\\n Seu cadastro foi finalizado, estamos te redicionando para o seu acesso, aguarde...\\n \")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./finalizar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./finalizar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./finalizar.vue?vue&type=template&id=9fe72630&\"\nimport script from \"./finalizar.vue?vue&type=script&lang=js&\"\nexport * from \"./finalizar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row justify-content-md-center\"},[_c('div',{staticClass:\"col-md-5\"},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('span',[_vm._v(\" \")]),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fa fa-question-circle\",attrs:{\"title\":\"Procure sua escola\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filter.codigoAcesso),expression:\"filter.codigoAcesso\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.filter.codigoAcesso)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.filter, \"codigoAcesso\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6 \"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.buscarPorCodigoAcesso()}}},[_vm._v(\"Continuar\")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_c('strong',[_vm._v(\"Chave de Acesso\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./identificacao.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./identificacao.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./identificacao.vue?vue&type=template&id=fb37fc18&\"\nimport script from \"./identificacao.vue?vue&type=script&lang=js&\"\nexport * from \"./identificacao.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\",style:({ opacity: _vm.criarSenhaManual ? 0.4 : 1 })},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Senha de acesso\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaPreConfigurada),expression:\"senhaPreConfigurada\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"password\",\"readonly\":\"\"},domProps:{\"value\":(_vm.senhaPreConfigurada)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.senhaPreConfigurada=$event.target.value}}})])]),(!_vm.criarSenhaManual)?_c('div',{staticClass:\"col-md-6 mt-4\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.criarSenhaManual = true;}}},[_vm._v(\"Deseja trocar a senha?\")])]):_vm._e()]),(_vm.criarSenhaManual)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaCriada),expression:\"senhaCriada\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"password\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.senhaCriada)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.senhaCriada=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"passwordConfirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaCriadaConfirmacao),expression:\"senhaCriadaConfirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"passwordConfirmacao\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.senhaCriadaConfirmacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.senhaCriadaConfirmacao=$event.target.value}}})])]),_c('div',{staticClass:\"col-md-6 mt-4\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4 mb-2\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.criarSenhaManual = false;}}},[_vm._v(\"Usar senha gerada\")]),_vm._m(0)])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.finalizaCadastro()}}},[_vm._v(\"Finalizar\")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha de 6 a 10 caracteres. \")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./senha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./senha.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./senha.vue?vue&type=template&id=a70f30ba&\"\nimport script from \"./senha.vue?vue&type=script&lang=js&\"\nexport * from \"./senha.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=46d37ab3&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"back-perfil\"},[_c('loading'),_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(_vm._s(_vm.cadastroRealizado == false ? 'Novo Cadastro' : 'Cadastro Realizado'))])]),(!_vm.cadastroRealizado)?_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"w-100 pb-1\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_c('span',{staticClass:\"text-primary text-sm-left\"},[_vm._v(\"\\n Se você já é aluno do CNA, verifique com sua escola se você já tem uma conta com um código de acesso\\n \")])])],1),_c('form',{ref:\"novo-cadastro\",staticClass:\"form-group\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.executeEdit(_vm.model)}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12 mt-3\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"E-mail\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"email\", $event.target.value)}}})])])]),_c('div',{staticClass:\"col-md-12\"},[_vm._m(1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Usuário\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.username),expression:\"model.username\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"username\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom\",class:[_vm.model.password ? 'col-md-6' : 'col-md-12']},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.password),expression:\"model.password\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"password\", $event.target.value)}}})]),(_vm.model.password)?_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Confirmar Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.passwordConfirmacao),expression:\"model.passwordConfirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.passwordConfirmacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"passwordConfirmacao\", $event.target.value)}}})]):_vm._e(),_c('div',{staticClass:\"w-100 col-md-12\"},[_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Salvar\\n \")])])])])])])])])])]):_vm._e(),(_vm.cadastroRealizado)?_c('div',{staticClass:\"dados-conta bg-white rounded p-2 shadow\",staticStyle:{\"margin-top\":\"17rem\"}},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body pr-md-4 mt-3\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"success\"}},[_c('span',{staticClass:\"text-success text-sm-left\"},[_vm._v(\"\\n Sua conta foi criada com sucesso, feche o navegador e realize o acesso no aplicativo.\\n \")])])],1)])])]):_vm._e()])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h6',[_vm._v(\"DADOS PESSOAIS\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h6',[_vm._v(\"LOGIN\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=63431131&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading'),_c('header-cna'),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=51d416bc&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('form',{staticClass:\"form cf\"},[(_vm.step == 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"Informe seu E-mail ou CPF/CNPJ utilizado para acesso.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.login),expression:\"model.login\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"E-mail ou CPF/CNPJ (Somente Números)\",\"name\":\"userName\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.login)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"login\", $event.target.value)}}}),_c('small',{staticClass:\"form-text text-muted\",attrs:{\"id\":\"emailHelp\"}},[_vm._v(\"Será enviado um e-mail com um link para recuperação da senha.\")])])]):_vm._e(),(_vm.step == 2 && _vm.result)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('div',{staticClass:\"row\"},[_c('strong',[_vm._v(\"Olá \"+_vm._s(_vm.result.nome)+\", \")]),_c('small',{staticClass:\"form-text text-muted\",attrs:{\"id\":\"nomeHelp\"}},[_vm._v(\"Clique em continuar para que seja enviado um link para alterar sua senha.\")])]),_c('div',{staticClass:\"row mt-3\"},[_c('span',[_vm._v(\"Será enviado um email para \"),_c('strong',[_vm._v(_vm._s(_vm.result.login))])])])])]):_vm._e(),(_vm.step == 3)?_c('div',{staticClass:\"row\"},[_vm._m(1)]):_vm._e(),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6 \"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),(_vm.step != 3)?_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.mudaPasso(_vm.step)}}},[_vm._v(\"Continuar\")])]):_vm._e()])])])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Recuperar Senha\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert alert-success col-12 mb-3\"},[_c('i',{staticClass:\"far fa-check-circle\"}),_c('strong',{staticClass:\"text-primary\"},[_vm._v(\" E-mail enviado com sucesso. \"),_c('br'),_vm._v(\"Por favor verifique sua caixa de entrada para mais informações!\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3eb4ac36&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('form',{staticClass:\"form cf\"},[(_vm.step == 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._m(1),_c('div',{staticClass:\"mb-3\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Informe seu código de solicitação recebido no e-mail.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.codigo),expression:\"model.codigo\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Código de Solicitação\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.codigo)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"codigo\", $event.target.value)}}})])])]):_vm._e(),(_vm.step == 2 && _vm.result)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Informe sua nova Senha.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Digite a nova senha\",\"autocomplete\":\"off\",\"required\":\"\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"senhaConfirma\"}},[_vm._v(\"Confirme sua Senha.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Digite novamente a senha\",\"autocomplete\":\"off\",\"required\":\"\",\"maxlength\":\"10\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])])])]):_vm._e(),(_vm.step == 3)?_c('div',{staticClass:\"row\"},[_vm._m(2)]):_vm._e(),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6 \"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),(_vm.step != 3)?_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.mudaPasso(_vm.step)}}},[_vm._v(\"Continuar\")])]):_vm._e()])])])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Trocar Senha\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('strong',[_vm._v(\"Olá, \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"alert alert-success col-12 mb-3\"},[_c('i',{staticClass:\"far fa-check-circle\"}),_c('strong',{staticClass:\"text-primary\"},[_vm._v(\" Sua senha foi alterada com sucesso. \"),_c('br'),_vm._v(\"Para acessar o sistema \"),_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(\"clique aqui\")]),_vm._v(\" e informe seus dados!\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trocarsenha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trocarsenha.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./trocarsenha.vue?vue&type=template&id=704f1b3f&\"\nimport script from \"./trocarsenha.vue?vue&type=script&lang=js&\"\nexport * from \"./trocarsenha.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nconst routers = [\r\n];\r\n\r\nexport default routers","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\n\r\nimport Auth from '@/common/auth'\r\n\r\nimport Home from '@/views/home'\r\nimport Authorized from '@/views/authorized'\r\nimport AcessoNegado from '@/views/acessonegado'\r\nimport Perfil from '@/views/perfil'\r\nimport RedefinirSenha from '@/views/redefinirsenha'\r\nimport Cadastro from '@/views/cadastro'\r\nimport NovoCadastro from '@/views/novocadastro'\r\nimport Template from '@/template'\r\nimport EsqueciSenha from '@/views/esquecisenha'\r\nimport TrocarSenha from '@/views/esquecisenha/trocarsenha'\r\n\r\nimport routersgenerated from './generated'\r\n\r\nVue.use(Router)\r\n\r\nlet childrens = routersgenerated.concat([\r\n {\r\n path: 'home',\r\n name: 'Home',\r\n component: Home\r\n },\r\n {\r\n path: '/perfil/:id',\r\n name: 'perfil',\r\n component: Perfil,\r\n },\r\n {\r\n path: '/redefinirsenha/:id',\r\n name: 'redefinirsenha',\r\n component: RedefinirSenha,\r\n },\r\n]);\r\n\r\nconst router = new Router({\r\n mode: 'history',\r\n routes: [\r\n {\r\n path: '/authorized',\r\n name: 'authorized',\r\n component: Authorized,\r\n },\r\n {\r\n path: '/acessonegado',\r\n name: 'acessonegado',\r\n component: AcessoNegado,\r\n },\r\n {\r\n path: '/cadastro',\r\n name: 'cadastro',\r\n component: Cadastro,\r\n },\r\n {\r\n path: '/novocadastro',\r\n name: 'novocadastro',\r\n component: NovoCadastro,\r\n },\r\n {\r\n path: '/esquecisenha',\r\n name: 'esquecisenha',\r\n component: EsqueciSenha,\r\n },\r\n {\r\n path: '/esquecisenha/trocarsenha',\r\n name: 'trocarsenha',\r\n component: TrocarSenha,\r\n },\r\n {\r\n path: '/',\r\n redirect: '/home',\r\n component: Template,\r\n meta: { requiresAuth: true },\r\n children: childrens\r\n },\r\n ]\r\n})\r\n\r\nrouter.beforeEach(async (to, from, next) => {\r\n if (to.matched.some(record => record.meta.requiresAuth)) {\r\n\r\n if (!Auth.logged()) {\r\n Auth.login(true);\r\n return;\r\n }\r\n\r\n if (!Auth.canAccess(to.path)) {\r\n next('/acessonegado')\r\n return;\r\n }\r\n }\r\n next();\r\n});\r\n\r\n\r\nexport default router;\r\n","import Vue from 'vue'\r\n\r\nimport { Api } from '@/common/api'\r\nimport Cache from '@/common/cache'\r\n\r\nfunction _addOption(el, text, value) {\r\n var option = document.createElement(\"option\");\r\n option.text = text;\r\n option.value = value;\r\n el.add(option);\r\n}\r\n\r\nfunction _addItems(el, items) {\r\n for (var i = 0; i < items.length; i++) {\r\n _addOption(el, items[i].name, items[i].id);\r\n }\r\n}\r\n\r\nVue.directive('select', {\r\n twoWay: true,\r\n bind: function (el, binding) {\r\n\r\n if (binding.value.default)\r\n _addOption(el, binding.value.default, \"\");\r\n\r\n var resource = binding.value.dataitem + \"/dataitems\";\r\n\r\n var filters = {};\r\n if (binding.value.filters)\r\n filters = binding.value.filters;\r\n\r\n var cachekey = \"combobox_\" + binding.value.dataitem + \"_\" + JSON.stringify(filters);\r\n\r\n var fromcache = Cache.get(cachekey);\r\n if (fromcache && !binding.value.notcache) {\r\n var items = JSON.parse(fromcache);\r\n _addItems(el, items);\r\n return;\r\n }\r\n\r\n var api = new Api(resource);\r\n api.dataItem(filters).then(data => {\r\n if (data.dataList) {\r\n Cache.add(cachekey, JSON.stringify(data.dataList));\r\n _addItems(el, data.dataList);\r\n }\r\n });\r\n }\r\n})","import Vue from 'vue'\r\nimport Auth from '../auth'\r\n\r\nVue.directive('canaccess', {\r\n twoWay: true,\r\n bind: function (el, binding, vnode, old) {\r\n var can = Auth.canAccess(binding.value);\r\n if (!can)\r\n el.style.display = 'none'\r\n }\r\n})","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router/index.js'\r\n\r\nimport './common/directives/select'\r\nimport './common/directives/datepicker'\r\nimport './common/directives/canaccess'\r\nimport './common/directives/htmleditor'\r\n\r\nimport BootstrapVue from 'bootstrap-vue'\r\nVue.use(BootstrapVue)\r\n\r\nimport VueTheMask from 'vue-the-mask'\r\nVue.use(VueTheMask)\r\n\r\nimport VueMask from 'di-vue-mask'\r\nVue.use(VueMask)\r\n\r\nimport money from 'v-money'\r\nVue.use(money)\r\n\r\nimport tinymce from 'vue-tinymce-editor'\r\nVue.component('tinymce', tinymce)\r\n\r\nimport vSelect from 'vue-select'\r\nVue.component('v-select', vSelect)\r\n\r\nimport VueSweetalert2 from 'vue-sweetalert2';\r\nVue.use(VueSweetalert2);\r\n\r\nimport 'bootstrap/dist/css/bootstrap.css'\r\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\r\nimport './assets/css/style.css'\r\n\r\nVue.config.productionTip = false\r\n\r\nVue.prototype.$eventHub = new Vue();\r\n\r\nnew Vue({\r\n router,\r\n render: h => h(App),\r\n mounted() {\r\n this.$eventHub.$on('show-notification', (data) => {\r\n\r\n let _config = {\r\n position: 'top',\r\n toast: IsMobile(),\r\n type: data.type,\r\n title: data.title,\r\n text: data.text,\r\n timer: 5000,\r\n showConfirmButton: false,\r\n }\r\n\r\n if (data.type == \"error\") {\r\n _config.timer = null;\r\n _config.showCancelButton = true;\r\n _config.cancelButtonText = \"Fechar\";\r\n }\r\n\r\n if (data.html) {\r\n _config.html = data.text;\r\n _config.text = \"\";\r\n }\r\n\r\n if (data.modal) {\r\n _config.position = 'center';\r\n _config.toast = false;\r\n _config.timer = null;\r\n if (data.type != \"error\")\r\n _config.showConfirmButton = true;\r\n }\r\n\r\n function IsMobile() {\r\n if (navigator.userAgent.match(/Android/i)\r\n || navigator.userAgent.match(/webOS/i)\r\n || navigator.userAgent.match(/iPhone/i)\r\n || navigator.userAgent.match(/iPad/i)\r\n || navigator.userAgent.match(/iPod/i)\r\n || navigator.userAgent.match(/BlackBerry/i)\r\n || navigator.userAgent.match(/Windows Phone/i)\r\n ) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n this.$swal(_config);\r\n })\r\n },\r\n beforeDestroy() {\r\n this.$eventHub.$off('show-notification');\r\n },\r\n}).$mount('#app')\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{class:[_vm.navClass]},[_c('ul',{staticClass:\"pagination justify-content-center\",class:[_vm.ulClass]},[(_vm.showPrevious())?_c('li',{staticClass:\"page-item\",class:[_vm.liClass, { 'disabled' : _vm.internalCurrentPage <= 1 }]},[(_vm.internalCurrentPage <= 1)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e(),(_vm.internalCurrentPage > 1 )?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaPrevious},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage - 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e()]):_vm._e(),_vm._l((_vm.array),function(num){return _c('li',{key:num,staticClass:\"page-item\",class:[_vm.liClass, { 'active': num === _vm.internalCurrentPage }]},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(num)}}},[_vm._v(_vm._s(num))])])}),(_vm.showNext())?_c('li',{staticClass:\"page-item\",class:[_vm.liClass, { 'disabled' : _vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0 }]},[(_vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e(),(_vm.internalCurrentPage < _vm.lastPage)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaNext},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage + 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e()]):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pagination.vue?vue&type=template&id=1c1a71a6&\"\nimport script from \"./pagination.vue?vue&type=script&lang=js&\"\nexport * from \"./pagination.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import pagination from '@/common/components/pagination'\r\n\r\nexport default {\r\ncomponents: { pagination },\r\n data: () => ({\r\n mask_data: '##/##/####',\r\n mask_cpf: '###.###.###-##',\r\n mask_rg: '##.###.###-#',\r\n mask_tel: '####-####',\r\n mask_cel: '#####-####',\r\n mask_cep: '#####-###',\r\n mask_ddd: '##',\r\n money: {\r\n decimal: ',',\r\n thousands: '.',\r\n precision: 2,\r\n masked: false,\r\n },\r\n }),\r\n methods: {\r\n\r\n defaultPageChanged(filter, index) {\r\n filter.pageIndex = index;\r\n return filter;\r\n },\r\n defaultOrderBy(filter, field) {\r\n let type = 0;\r\n if (filter.orderByType == 0) type = 1;\r\n filter.orderFields = field;\r\n filter.orderByType = type;\r\n filter.isOrderByDynamic = true;\r\n return filter;\r\n },\r\n\r\n defaultSuccessResult(msg) {\r\n this.hideLoading();\r\n this.$eventHub.$emit('show-notification', {\r\n type: 'success',\r\n title: 'Sucesso',\r\n text: msg\r\n })\r\n },\r\n defaultErrorResult(err, modal) {\r\n this.hideLoading();\r\n if (err.data && err.data.errors) {\r\n for (var i = 0; i < err.data.errors.length; i++) {\r\n this.$eventHub.$emit('show-notification', {\r\n type: 'error',\r\n title: 'Atenção',\r\n text: err.data.errors[i],\r\n modal: modal\r\n })\r\n }\r\n }\r\n\r\n else\r\n this.$eventHub.$emit('show-notification', {\r\n type: 'error',\r\n title: 'Atenção',\r\n text: err,\r\n modal: modal\r\n })\r\n },\r\n configNotification() {\r\n this.$eventHub.$on('show-notification', (data) => {\r\n this.$notify({\r\n type: data.type,\r\n title: data.title,\r\n text: data.text,\r\n duration: 10000,\r\n speed: 1000\r\n })\r\n })\r\n },\r\n showLoading() {\r\n this.$eventHub.$emit('show-loading', true)\r\n },\r\n hideLoading() {\r\n this.$eventHub.$emit('show-loading', false)\r\n },\r\n failLoading() {\r\n this.$eventHub.$emit('show-loading', false)\r\n },\r\n\r\n },\r\n mounted() {\r\n window.scrollTo(0, 0);\r\n },\r\n}\r\n","(function () {\r\nvar lists = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var isTextNode = function (node) {\r\n return node && node.nodeType === 3;\r\n };\r\n var isListNode = function (node) {\r\n return node && /^(OL|UL|DL)$/.test(node.nodeName);\r\n };\r\n var isListItemNode = function (node) {\r\n return node && /^(LI|DT|DD)$/.test(node.nodeName);\r\n };\r\n var isTableCellNode = function (node) {\r\n return node && /^(TH|TD)$/.test(node.nodeName);\r\n };\r\n var isBr = function (node) {\r\n return node && node.nodeName === 'BR';\r\n };\r\n var isFirstChild = function (node) {\r\n return node.parentNode.firstChild === node;\r\n };\r\n var isLastChild = function (node) {\r\n return node.parentNode.lastChild === node;\r\n };\r\n var isTextBlock = function (editor, node) {\r\n return node && !!editor.schema.getTextBlockElements()[node.nodeName];\r\n };\r\n var isBlock = function (node, blockElements) {\r\n return node && node.nodeName in blockElements;\r\n };\r\n var isBogusBr = function (dom, node) {\r\n if (!isBr(node)) {\r\n return false;\r\n }\r\n if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n var isEmpty = function (dom, elm, keepBookmarks) {\r\n var empty = dom.isEmpty(elm);\r\n if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\r\n return false;\r\n }\r\n return empty;\r\n };\r\n var isChildOfBody = function (dom, elm) {\r\n return dom.isChildOf(elm, dom.getRoot());\r\n };\r\n var $_eyfb4cgljkmcwpc0 = {\r\n isTextNode: isTextNode,\r\n isListNode: isListNode,\r\n isListItemNode: isListItemNode,\r\n isTableCellNode: isTableCellNode,\r\n isBr: isBr,\r\n isFirstChild: isFirstChild,\r\n isLastChild: isLastChild,\r\n isTextBlock: isTextBlock,\r\n isBlock: isBlock,\r\n isBogusBr: isBogusBr,\r\n isEmpty: isEmpty,\r\n isChildOfBody: isChildOfBody\r\n };\r\n\r\n var getNormalizedEndPoint = function (container, offset) {\r\n var node = global$1.getNode(container, offset);\r\n if ($_eyfb4cgljkmcwpc0.isListItemNode(container) && $_eyfb4cgljkmcwpc0.isTextNode(node)) {\r\n var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0;\r\n return {\r\n container: node,\r\n offset: textNodeOffset\r\n };\r\n }\r\n return {\r\n container: container,\r\n offset: offset\r\n };\r\n };\r\n var normalizeRange = function (rng) {\r\n var outRng = rng.cloneRange();\r\n var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset);\r\n outRng.setStart(rangeStart.container, rangeStart.offset);\r\n var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset);\r\n outRng.setEnd(rangeEnd.container, rangeEnd.offset);\r\n return outRng;\r\n };\r\n var $_8n62cfgkjkmcwpbw = {\r\n getNormalizedEndPoint: getNormalizedEndPoint,\r\n normalizeRange: normalizeRange\r\n };\r\n\r\n var DOM = global$6.DOM;\r\n var createBookmark = function (rng) {\r\n var bookmark = {};\r\n var setupEndPoint = function (start) {\r\n var offsetNode, container, offset;\r\n container = rng[start ? 'startContainer' : 'endContainer'];\r\n offset = rng[start ? 'startOffset' : 'endOffset'];\r\n if (container.nodeType === 1) {\r\n offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });\r\n if (container.hasChildNodes()) {\r\n offset = Math.min(offset, container.childNodes.length - 1);\r\n if (start) {\r\n container.insertBefore(offsetNode, container.childNodes[offset]);\r\n } else {\r\n DOM.insertAfter(offsetNode, container.childNodes[offset]);\r\n }\r\n } else {\r\n container.appendChild(offsetNode);\r\n }\r\n container = offsetNode;\r\n offset = 0;\r\n }\r\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\r\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\r\n };\r\n setupEndPoint(true);\r\n if (!rng.collapsed) {\r\n setupEndPoint();\r\n }\r\n return bookmark;\r\n };\r\n var resolveBookmark = function (bookmark) {\r\n function restoreEndPoint(start) {\r\n var container, offset, node;\r\n var nodeIndex = function (container) {\r\n var node = container.parentNode.firstChild, idx = 0;\r\n while (node) {\r\n if (node === container) {\r\n return idx;\r\n }\r\n if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {\r\n idx++;\r\n }\r\n node = node.nextSibling;\r\n }\r\n return -1;\r\n };\r\n container = node = bookmark[start ? 'startContainer' : 'endContainer'];\r\n offset = bookmark[start ? 'startOffset' : 'endOffset'];\r\n if (!container) {\r\n return;\r\n }\r\n if (container.nodeType === 1) {\r\n offset = nodeIndex(container);\r\n container = container.parentNode;\r\n DOM.remove(node);\r\n if (!container.hasChildNodes() && DOM.isBlock(container)) {\r\n container.appendChild(DOM.create('br'));\r\n }\r\n }\r\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\r\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\r\n }\r\n restoreEndPoint(true);\r\n restoreEndPoint();\r\n var rng = DOM.createRng();\r\n rng.setStart(bookmark.startContainer, bookmark.startOffset);\r\n if (bookmark.endContainer) {\r\n rng.setEnd(bookmark.endContainer, bookmark.endOffset);\r\n }\r\n return $_8n62cfgkjkmcwpbw.normalizeRange(rng);\r\n };\r\n var $_aredwjgjjkmcwpbt = {\r\n createBookmark: createBookmark,\r\n resolveBookmark: resolveBookmark\r\n };\r\n\r\n var DOM$1 = global$6.DOM;\r\n var normalizeList = function (dom, ul) {\r\n var sibling;\r\n var parentNode = ul.parentNode;\r\n if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {\r\n sibling = parentNode.previousSibling;\r\n if (sibling && sibling.nodeName === 'LI') {\r\n sibling.appendChild(ul);\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, parentNode)) {\r\n DOM$1.remove(parentNode);\r\n }\r\n } else {\r\n DOM$1.setStyle(parentNode, 'listStyleType', 'none');\r\n }\r\n }\r\n if ($_eyfb4cgljkmcwpc0.isListNode(parentNode)) {\r\n sibling = parentNode.previousSibling;\r\n if (sibling && sibling.nodeName === 'LI') {\r\n sibling.appendChild(ul);\r\n }\r\n }\r\n };\r\n var normalizeLists = function (dom, element) {\r\n global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {\r\n normalizeList(dom, ul);\r\n });\r\n };\r\n var $_f0sxyjgmjkmcwpc3 = {\r\n normalizeList: normalizeList,\r\n normalizeLists: normalizeLists\r\n };\r\n\r\n var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\r\n\r\n var getParentList = function (editor) {\r\n var selectionStart = editor.selection.getStart(true);\r\n return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));\r\n };\r\n var isParentListSelected = function (parentList, selectedBlocks) {\r\n return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\r\n };\r\n var findSubLists = function (parentList) {\r\n return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {\r\n return $_eyfb4cgljkmcwpc0.isListNode(elm);\r\n });\r\n };\r\n var getSelectedSubLists = function (editor) {\r\n var parentList = getParentList(editor);\r\n var selectedBlocks = editor.selection.getSelectedBlocks();\r\n if (isParentListSelected(parentList, selectedBlocks)) {\r\n return findSubLists(parentList);\r\n } else {\r\n return global$5.grep(selectedBlocks, function (elm) {\r\n return $_eyfb4cgljkmcwpc0.isListNode(elm) && parentList !== elm;\r\n });\r\n }\r\n };\r\n var findParentListItemsNodes = function (editor, elms) {\r\n var listItemsElms = global$5.map(elms, function (elm) {\r\n var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));\r\n return parentLi ? parentLi : elm;\r\n });\r\n return global$7.unique(listItemsElms);\r\n };\r\n var getSelectedListItems = function (editor) {\r\n var selectedBlocks = editor.selection.getSelectedBlocks();\r\n return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {\r\n return $_eyfb4cgljkmcwpc0.isListItemNode(block);\r\n });\r\n };\r\n var getClosestListRootElm = function (editor, elm) {\r\n var parentTableCell = editor.dom.getParents(elm, 'TD,TH');\r\n var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\r\n return root;\r\n };\r\n var $_g5359xgnjkmcwpc5 = {\r\n getParentList: getParentList,\r\n getSelectedSubLists: getSelectedSubLists,\r\n getSelectedListItems: getSelectedListItems,\r\n getClosestListRootElm: getClosestListRootElm\r\n };\r\n\r\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var DOM$2 = global$6.DOM;\r\n var createNewTextBlock = function (editor, contentNode, blockName) {\r\n var node, textBlock;\r\n var fragment = DOM$2.createFragment();\r\n var hasContentNode;\r\n var blockElements = editor.schema.getBlockElements();\r\n if (editor.settings.forced_root_block) {\r\n blockName = blockName || editor.settings.forced_root_block;\r\n }\r\n if (blockName) {\r\n textBlock = DOM$2.create(blockName);\r\n if (textBlock.tagName === editor.settings.forced_root_block) {\r\n DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs);\r\n }\r\n if (!$_eyfb4cgljkmcwpc0.isBlock(contentNode.firstChild, blockElements)) {\r\n fragment.appendChild(textBlock);\r\n }\r\n }\r\n if (contentNode) {\r\n while (node = contentNode.firstChild) {\r\n var nodeName = node.nodeName;\r\n if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\r\n hasContentNode = true;\r\n }\r\n if ($_eyfb4cgljkmcwpc0.isBlock(node, blockElements)) {\r\n fragment.appendChild(node);\r\n textBlock = null;\r\n } else {\r\n if (blockName) {\r\n if (!textBlock) {\r\n textBlock = DOM$2.create(blockName);\r\n fragment.appendChild(textBlock);\r\n }\r\n textBlock.appendChild(node);\r\n } else {\r\n fragment.appendChild(node);\r\n }\r\n }\r\n }\r\n }\r\n if (!editor.settings.forced_root_block) {\r\n fragment.appendChild(DOM$2.create('br'));\r\n } else {\r\n if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {\r\n textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' }));\r\n }\r\n }\r\n return fragment;\r\n };\r\n var $_givla1gqjkmcwpcb = { createNewTextBlock: createNewTextBlock };\r\n\r\n var DOM$3 = global$6.DOM;\r\n var splitList = function (editor, ul, li, newBlock) {\r\n var tmpRng, fragment, bookmarks, node;\r\n var removeAndKeepBookmarks = function (targetNode) {\r\n global$5.each(bookmarks, function (node) {\r\n targetNode.parentNode.insertBefore(node, li.parentNode);\r\n });\r\n DOM$3.remove(targetNode);\r\n };\r\n bookmarks = DOM$3.select('span[data-mce-type=\"bookmark\"]', ul);\r\n newBlock = newBlock || $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\r\n tmpRng = DOM$3.createRng();\r\n tmpRng.setStartAfter(li);\r\n tmpRng.setEndAfter(ul);\r\n fragment = tmpRng.extractContents();\r\n for (node = fragment.firstChild; node; node = node.firstChild) {\r\n if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\r\n DOM$3.remove(node);\r\n break;\r\n }\r\n }\r\n if (!editor.dom.isEmpty(fragment)) {\r\n DOM$3.insertAfter(fragment, ul);\r\n }\r\n DOM$3.insertAfter(newBlock, ul);\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li.parentNode)) {\r\n removeAndKeepBookmarks(li.parentNode);\r\n }\r\n DOM$3.remove(li);\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, ul)) {\r\n DOM$3.remove(ul);\r\n }\r\n };\r\n var $_3aykwpgpjkmcwpc8 = { splitList: splitList };\r\n\r\n var DOM$4 = global$6.DOM;\r\n var removeEmptyLi = function (dom, li) {\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, li)) {\r\n DOM$4.remove(li);\r\n }\r\n };\r\n var outdent = function (editor, li) {\r\n var ul = li.parentNode;\r\n var ulParent, newBlock;\r\n if (ul) {\r\n ulParent = ul.parentNode;\r\n } else {\r\n removeEmptyLi(editor.dom, li);\r\n return true;\r\n }\r\n if (ul === editor.getBody()) {\r\n return true;\r\n }\r\n if (li.nodeName === 'DD') {\r\n DOM$4.rename(li, 'DT');\r\n return true;\r\n }\r\n if ($_eyfb4cgljkmcwpc0.isFirstChild(li) && $_eyfb4cgljkmcwpc0.isLastChild(li)) {\r\n if (ulParent.nodeName === 'LI') {\r\n DOM$4.insertAfter(li, ulParent);\r\n removeEmptyLi(editor.dom, ulParent);\r\n DOM$4.remove(ul);\r\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\r\n DOM$4.remove(ul, true);\r\n } else {\r\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\r\n DOM$4.remove(ul);\r\n }\r\n return true;\r\n } else if ($_eyfb4cgljkmcwpc0.isFirstChild(li)) {\r\n if (ulParent.nodeName === 'LI') {\r\n DOM$4.insertAfter(li, ulParent);\r\n li.appendChild(ul);\r\n removeEmptyLi(editor.dom, ulParent);\r\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\r\n ulParent.insertBefore(li, ul);\r\n } else {\r\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\r\n DOM$4.remove(li);\r\n }\r\n return true;\r\n } else if ($_eyfb4cgljkmcwpc0.isLastChild(li)) {\r\n if (ulParent.nodeName === 'LI') {\r\n DOM$4.insertAfter(li, ulParent);\r\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\r\n DOM$4.insertAfter(li, ul);\r\n } else {\r\n DOM$4.insertAfter($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\r\n DOM$4.remove(li);\r\n }\r\n return true;\r\n }\r\n if (ulParent.nodeName === 'LI') {\r\n ul = ulParent;\r\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\r\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\r\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\r\n } else {\r\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\r\n }\r\n $_3aykwpgpjkmcwpc8.splitList(editor, ul, li, newBlock);\r\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, ul.parentNode);\r\n return true;\r\n };\r\n var outdentSelection = function (editor) {\r\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\r\n if (listElements.length) {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng());\r\n var i = void 0, y = void 0;\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\r\n i = listElements.length;\r\n while (i--) {\r\n var node = listElements[i].parentNode;\r\n while (node && node !== root) {\r\n y = listElements.length;\r\n while (y--) {\r\n if (listElements[y] === node) {\r\n listElements.splice(i, 1);\r\n break;\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n for (i = 0; i < listElements.length; i++) {\r\n if (!outdent(editor, listElements[i]) && i === 0) {\r\n break;\r\n }\r\n }\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n editor.nodeChanged();\r\n return true;\r\n }\r\n };\r\n var $_80fi2gghjkmcwpbq = {\r\n outdent: outdent,\r\n outdentSelection: outdentSelection\r\n };\r\n\r\n var updateListStyle = function (dom, el, detail) {\r\n var type = detail['list-style-type'] ? detail['list-style-type'] : null;\r\n dom.setStyle(el, 'list-style-type', type);\r\n };\r\n var setAttribs = function (elm, attrs) {\r\n global$5.each(attrs, function (value, key) {\r\n elm.setAttribute(key, value);\r\n });\r\n };\r\n var updateListAttrs = function (dom, el, detail) {\r\n setAttribs(el, detail['list-attributes']);\r\n global$5.each(dom.select('li', el), function (li) {\r\n setAttribs(li, detail['list-item-attributes']);\r\n });\r\n };\r\n var updateListWithDetails = function (dom, el, detail) {\r\n updateListStyle(dom, el, detail);\r\n updateListAttrs(dom, el, detail);\r\n };\r\n var removeStyles = function (dom, element, styles) {\r\n global$5.each(styles, function (style) {\r\n var _a;\r\n return dom.setStyle(element, (_a = {}, _a[style] = '', _a));\r\n });\r\n };\r\n var getEndPointNode = function (editor, rng, start, root) {\r\n var container, offset;\r\n container = rng[start ? 'startContainer' : 'endContainer'];\r\n offset = rng[start ? 'startOffset' : 'endOffset'];\r\n if (container.nodeType === 1) {\r\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\r\n }\r\n if (!start && $_eyfb4cgljkmcwpc0.isBr(container.nextSibling)) {\r\n container = container.nextSibling;\r\n }\r\n while (container.parentNode !== root) {\r\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, container)) {\r\n return container;\r\n }\r\n if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {\r\n return container;\r\n }\r\n container = container.parentNode;\r\n }\r\n return container;\r\n };\r\n var getSelectedTextBlocks = function (editor, rng, root) {\r\n var textBlocks = [], dom = editor.dom;\r\n var startNode = getEndPointNode(editor, rng, true, root);\r\n var endNode = getEndPointNode(editor, rng, false, root);\r\n var block;\r\n var siblings = [];\r\n for (var node = startNode; node; node = node.nextSibling) {\r\n siblings.push(node);\r\n if (node === endNode) {\r\n break;\r\n }\r\n }\r\n global$5.each(siblings, function (node) {\r\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, node)) {\r\n textBlocks.push(node);\r\n block = null;\r\n return;\r\n }\r\n if (dom.isBlock(node) || $_eyfb4cgljkmcwpc0.isBr(node)) {\r\n if ($_eyfb4cgljkmcwpc0.isBr(node)) {\r\n dom.remove(node);\r\n }\r\n block = null;\r\n return;\r\n }\r\n var nextSibling = node.nextSibling;\r\n if (global$4.isBookmarkNode(node)) {\r\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\r\n block = null;\r\n return;\r\n }\r\n }\r\n if (!block) {\r\n block = dom.create('p');\r\n node.parentNode.insertBefore(block, node);\r\n textBlocks.push(block);\r\n }\r\n block.appendChild(node);\r\n });\r\n return textBlocks;\r\n };\r\n var hasCompatibleStyle = function (dom, sib, detail) {\r\n var sibStyle = dom.getStyle(sib, 'list-style-type');\r\n var detailStyle = detail ? detail['list-style-type'] : '';\r\n detailStyle = detailStyle === null ? '' : detailStyle;\r\n return sibStyle === detailStyle;\r\n };\r\n var applyList = function (editor, listName, detail) {\r\n if (detail === void 0) {\r\n detail = {};\r\n }\r\n var rng = editor.selection.getRng(true);\r\n var bookmark;\r\n var listItemName = 'LI';\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\r\n var dom = editor.dom;\r\n if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\r\n return;\r\n }\r\n listName = listName.toUpperCase();\r\n if (listName === 'DL') {\r\n listItemName = 'DT';\r\n }\r\n bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\r\n global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {\r\n var listBlock, sibling;\r\n sibling = block.previousSibling;\r\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\r\n listBlock = sibling;\r\n block = dom.rename(block, listItemName);\r\n sibling.appendChild(block);\r\n } else {\r\n listBlock = dom.create(listName);\r\n block.parentNode.insertBefore(listBlock, block);\r\n listBlock.appendChild(block);\r\n block = dom.rename(block, listItemName);\r\n }\r\n removeStyles(dom, block, [\r\n 'margin',\r\n 'margin-right',\r\n 'margin-bottom',\r\n 'margin-left',\r\n 'margin-top',\r\n 'padding',\r\n 'padding-right',\r\n 'padding-bottom',\r\n 'padding-left',\r\n 'padding-top'\r\n ]);\r\n updateListWithDetails(dom, listBlock, detail);\r\n mergeWithAdjacentLists(editor.dom, listBlock);\r\n });\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n };\r\n var removeList = function (editor) {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\r\n var listItems = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\r\n var emptyListItems = global$5.grep(listItems, function (li) {\r\n return editor.dom.isEmpty(li);\r\n });\r\n listItems = global$5.grep(listItems, function (li) {\r\n return !editor.dom.isEmpty(li);\r\n });\r\n global$5.each(emptyListItems, function (li) {\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li)) {\r\n $_80fi2gghjkmcwpbq.outdent(editor, li);\r\n return;\r\n }\r\n });\r\n global$5.each(listItems, function (li) {\r\n var node, rootList;\r\n if (li.parentNode === editor.getBody()) {\r\n return;\r\n }\r\n for (node = li; node && node !== root; node = node.parentNode) {\r\n if ($_eyfb4cgljkmcwpc0.isListNode(node)) {\r\n rootList = node;\r\n }\r\n }\r\n $_3aykwpgpjkmcwpc8.splitList(editor, rootList, li);\r\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, rootList.parentNode);\r\n });\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n };\r\n var isValidLists = function (list1, list2) {\r\n return list1 && list2 && $_eyfb4cgljkmcwpc0.isListNode(list1) && list1.nodeName === list2.nodeName;\r\n };\r\n var hasSameListStyle = function (dom, list1, list2) {\r\n var targetStyle = dom.getStyle(list1, 'list-style-type', true);\r\n var style = dom.getStyle(list2, 'list-style-type', true);\r\n return targetStyle === style;\r\n };\r\n var hasSameClasses = function (elm1, elm2) {\r\n return elm1.className === elm2.className;\r\n };\r\n var shouldMerge = function (dom, list1, list2) {\r\n return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\r\n };\r\n var mergeWithAdjacentLists = function (dom, listBlock) {\r\n var sibling, node;\r\n sibling = listBlock.nextSibling;\r\n if (shouldMerge(dom, listBlock, sibling)) {\r\n while (node = sibling.firstChild) {\r\n listBlock.appendChild(node);\r\n }\r\n dom.remove(sibling);\r\n }\r\n sibling = listBlock.previousSibling;\r\n if (shouldMerge(dom, listBlock, sibling)) {\r\n while (node = sibling.lastChild) {\r\n listBlock.insertBefore(node, listBlock.firstChild);\r\n }\r\n dom.remove(sibling);\r\n }\r\n };\r\n var updateList = function (dom, list, listName, detail) {\r\n if (list.nodeName !== listName) {\r\n var newList = dom.rename(list, listName);\r\n updateListWithDetails(dom, newList, detail);\r\n } else {\r\n updateListWithDetails(dom, list, detail);\r\n }\r\n };\r\n var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {\r\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\r\n removeList(editor);\r\n } else {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\r\n global$5.each([parentList].concat(lists), function (elm) {\r\n updateList(editor.dom, elm, listName, detail);\r\n });\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n }\r\n };\r\n var hasListStyleDetail = function (detail) {\r\n return 'list-style-type' in detail;\r\n };\r\n var toggleSingleList = function (editor, parentList, listName, detail) {\r\n if (parentList === editor.getBody()) {\r\n return;\r\n }\r\n if (parentList) {\r\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\r\n removeList(editor);\r\n } else {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\r\n updateListWithDetails(editor.dom, parentList, detail);\r\n mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n }\r\n } else {\r\n applyList(editor, listName, detail);\r\n }\r\n };\r\n var toggleList = function (editor, listName, detail) {\r\n var parentList = $_g5359xgnjkmcwpc5.getParentList(editor);\r\n var selectedSubLists = $_g5359xgnjkmcwpc5.getSelectedSubLists(editor);\r\n detail = detail ? detail : {};\r\n if (parentList && selectedSubLists.length > 0) {\r\n toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\r\n } else {\r\n toggleSingleList(editor, parentList, listName, detail);\r\n }\r\n };\r\n var $_8bvl87gejkmcwpbi = {\r\n toggleList: toggleList,\r\n removeList: removeList,\r\n mergeWithAdjacentLists: mergeWithAdjacentLists\r\n };\r\n\r\n var findNextCaretContainer = function (editor, rng, isForward, root) {\r\n var node = rng.startContainer;\r\n var offset = rng.startOffset;\r\n var nonEmptyBlocks, walker;\r\n if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {\r\n return node;\r\n }\r\n nonEmptyBlocks = editor.schema.getNonEmptyElements();\r\n if (node.nodeType === 1) {\r\n node = global$1.getNode(node, offset);\r\n }\r\n walker = new global$2(node, root);\r\n if (isForward) {\r\n if ($_eyfb4cgljkmcwpc0.isBogusBr(editor.dom, node)) {\r\n walker.next();\r\n }\r\n }\r\n while (node = walker[isForward ? 'next' : 'prev2']()) {\r\n if (node.nodeName === 'LI' && !node.hasChildNodes()) {\r\n return node;\r\n }\r\n if (nonEmptyBlocks[node.nodeName]) {\r\n return node;\r\n }\r\n if (node.nodeType === 3 && node.data.length > 0) {\r\n return node;\r\n }\r\n }\r\n };\r\n var hasOnlyOneBlockChild = function (dom, elm) {\r\n var childNodes = elm.childNodes;\r\n return childNodes.length === 1 && !$_eyfb4cgljkmcwpc0.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\r\n };\r\n var unwrapSingleBlockChild = function (dom, elm) {\r\n if (hasOnlyOneBlockChild(dom, elm)) {\r\n dom.remove(elm.firstChild, true);\r\n }\r\n };\r\n var moveChildren = function (dom, fromElm, toElm) {\r\n var node, targetElm;\r\n targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\r\n unwrapSingleBlockChild(dom, fromElm);\r\n if (!$_eyfb4cgljkmcwpc0.isEmpty(dom, fromElm, true)) {\r\n while (node = fromElm.firstChild) {\r\n targetElm.appendChild(node);\r\n }\r\n }\r\n };\r\n var mergeLiElements = function (dom, fromElm, toElm) {\r\n var node, listNode;\r\n var ul = fromElm.parentNode;\r\n if (!$_eyfb4cgljkmcwpc0.isChildOfBody(dom, fromElm) || !$_eyfb4cgljkmcwpc0.isChildOfBody(dom, toElm)) {\r\n return;\r\n }\r\n if ($_eyfb4cgljkmcwpc0.isListNode(toElm.lastChild)) {\r\n listNode = toElm.lastChild;\r\n }\r\n if (ul === toElm.lastChild) {\r\n if ($_eyfb4cgljkmcwpc0.isBr(ul.previousSibling)) {\r\n dom.remove(ul.previousSibling);\r\n }\r\n }\r\n node = toElm.lastChild;\r\n if (node && $_eyfb4cgljkmcwpc0.isBr(node) && fromElm.hasChildNodes()) {\r\n dom.remove(node);\r\n }\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, toElm, true)) {\r\n dom.$(toElm).empty();\r\n }\r\n moveChildren(dom, fromElm, toElm);\r\n if (listNode) {\r\n toElm.appendChild(listNode);\r\n }\r\n dom.remove(fromElm);\r\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, ul) && ul !== dom.getRoot()) {\r\n dom.remove(ul);\r\n }\r\n };\r\n var mergeIntoEmptyLi = function (editor, fromLi, toLi) {\r\n editor.dom.$(toLi).empty();\r\n mergeLiElements(editor.dom, fromLi, toLi);\r\n editor.selection.setCursorLocation(toLi);\r\n };\r\n var mergeForward = function (editor, rng, fromLi, toLi) {\r\n var dom = editor.dom;\r\n if (dom.isEmpty(toLi)) {\r\n mergeIntoEmptyLi(editor, fromLi, toLi);\r\n } else {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\r\n mergeLiElements(dom, fromLi, toLi);\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n }\r\n };\r\n var mergeBackward = function (editor, rng, fromLi, toLi) {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\r\n mergeLiElements(editor.dom, fromLi, toLi);\r\n var resolvedBookmark = $_aredwjgjjkmcwpbt.resolveBookmark(bookmark);\r\n editor.selection.setRng(resolvedBookmark);\r\n };\r\n var backspaceDeleteFromListToListCaret = function (editor, isForward) {\r\n var dom = editor.dom, selection = editor.selection;\r\n var selectionStartElm = selection.getStart();\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\r\n var li = dom.getParent(selection.getStart(), 'LI', root);\r\n var ul, rng, otherLi;\r\n if (li) {\r\n ul = li.parentNode;\r\n if (ul === editor.getBody() && $_eyfb4cgljkmcwpc0.isEmpty(dom, ul)) {\r\n return true;\r\n }\r\n rng = $_8n62cfgkjkmcwpbw.normalizeRange(selection.getRng(true));\r\n otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\r\n if (otherLi && otherLi !== li) {\r\n if (isForward) {\r\n mergeForward(editor, rng, otherLi, li);\r\n } else {\r\n mergeBackward(editor, rng, li, otherLi);\r\n }\r\n return true;\r\n } else if (!otherLi) {\r\n if (!isForward && $_8bvl87gejkmcwpbi.removeList(editor)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var removeBlock = function (dom, block, root) {\r\n var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\r\n dom.remove(block);\r\n if (parentBlock && dom.isEmpty(parentBlock)) {\r\n dom.remove(parentBlock);\r\n }\r\n };\r\n var backspaceDeleteIntoListCaret = function (editor, isForward) {\r\n var dom = editor.dom;\r\n var selectionStartElm = editor.selection.getStart();\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\r\n var block = dom.getParent(selectionStartElm, dom.isBlock, root);\r\n if (block && dom.isEmpty(block)) {\r\n var rng = $_8n62cfgkjkmcwpbw.normalizeRange(editor.selection.getRng(true));\r\n var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\r\n if (otherLi_1) {\r\n editor.undoManager.transact(function () {\r\n removeBlock(dom, block, root);\r\n $_8bvl87gejkmcwpbi.mergeWithAdjacentLists(dom, otherLi_1.parentNode);\r\n editor.selection.select(otherLi_1, true);\r\n editor.selection.collapse(isForward);\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var backspaceDeleteCaret = function (editor, isForward) {\r\n return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\r\n };\r\n var backspaceDeleteRange = function (editor) {\r\n var selectionStartElm = editor.selection.getStart();\r\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\r\n var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\r\n if (startListParent || $_g5359xgnjkmcwpc5.getSelectedListItems(editor).length > 0) {\r\n editor.undoManager.transact(function () {\r\n editor.execCommand('Delete');\r\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, editor.getBody());\r\n });\r\n return true;\r\n }\r\n return false;\r\n };\r\n var backspaceDelete = function (editor, isForward) {\r\n return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);\r\n };\r\n var setup = function (editor) {\r\n editor.on('keydown', function (e) {\r\n if (e.keyCode === global$3.BACKSPACE) {\r\n if (backspaceDelete(editor, false)) {\r\n e.preventDefault();\r\n }\r\n } else if (e.keyCode === global$3.DELETE) {\r\n if (backspaceDelete(editor, true)) {\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n var $_17li1sgajkmcwpb9 = {\r\n setup: setup,\r\n backspaceDelete: backspaceDelete\r\n };\r\n\r\n var get = function (editor) {\r\n return {\r\n backspaceDelete: function (isForward) {\r\n $_17li1sgajkmcwpb9.backspaceDelete(editor, isForward);\r\n }\r\n };\r\n };\r\n var $_4wrbe2g9jkmcwpb7 = { get: get };\r\n\r\n var DOM$5 = global$6.DOM;\r\n var mergeLists = function (from, to) {\r\n var node;\r\n if ($_eyfb4cgljkmcwpc0.isListNode(from)) {\r\n while (node = from.firstChild) {\r\n to.appendChild(node);\r\n }\r\n DOM$5.remove(from);\r\n }\r\n };\r\n var indent = function (li) {\r\n var sibling, newList, listStyle;\r\n if (li.nodeName === 'DT') {\r\n DOM$5.rename(li, 'DD');\r\n return true;\r\n }\r\n sibling = li.previousSibling;\r\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\r\n sibling.appendChild(li);\r\n return true;\r\n }\r\n if (sibling && sibling.nodeName === 'LI' && $_eyfb4cgljkmcwpc0.isListNode(sibling.lastChild)) {\r\n sibling.lastChild.appendChild(li);\r\n mergeLists(li.lastChild, sibling.lastChild);\r\n return true;\r\n }\r\n sibling = li.nextSibling;\r\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\r\n sibling.insertBefore(li, sibling.firstChild);\r\n return true;\r\n }\r\n sibling = li.previousSibling;\r\n if (sibling && sibling.nodeName === 'LI') {\r\n newList = DOM$5.create(li.parentNode.nodeName);\r\n listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType');\r\n if (listStyle) {\r\n DOM$5.setStyle(newList, 'listStyleType', listStyle);\r\n }\r\n sibling.appendChild(newList);\r\n newList.appendChild(li);\r\n mergeLists(li.lastChild, newList);\r\n return true;\r\n }\r\n return false;\r\n };\r\n var indentSelection = function (editor) {\r\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\r\n if (listElements.length) {\r\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\r\n for (var i = 0; i < listElements.length; i++) {\r\n if (!indent(listElements[i]) && i === 0) {\r\n break;\r\n }\r\n }\r\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\r\n editor.nodeChanged();\r\n return true;\r\n }\r\n };\r\n var $_fhzwh2gtjkmcwpco = { indentSelection: indentSelection };\r\n\r\n var queryListCommandState = function (editor, listName) {\r\n return function () {\r\n var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');\r\n return parentList && parentList.nodeName === listName;\r\n };\r\n };\r\n var register = function (editor) {\r\n editor.on('BeforeExecCommand', function (e) {\r\n var cmd = e.command.toLowerCase();\r\n var isHandled;\r\n if (cmd === 'indent') {\r\n if ($_fhzwh2gtjkmcwpco.indentSelection(editor)) {\r\n isHandled = true;\r\n }\r\n } else if (cmd === 'outdent') {\r\n if ($_80fi2gghjkmcwpbq.outdentSelection(editor)) {\r\n isHandled = true;\r\n }\r\n }\r\n if (isHandled) {\r\n editor.fire('ExecCommand', { command: e.command });\r\n e.preventDefault();\r\n return true;\r\n }\r\n });\r\n editor.addCommand('InsertUnorderedList', function (ui, detail) {\r\n $_8bvl87gejkmcwpbi.toggleList(editor, 'UL', detail);\r\n });\r\n editor.addCommand('InsertOrderedList', function (ui, detail) {\r\n $_8bvl87gejkmcwpbi.toggleList(editor, 'OL', detail);\r\n });\r\n editor.addCommand('InsertDefinitionList', function (ui, detail) {\r\n $_8bvl87gejkmcwpbi.toggleList(editor, 'DL', detail);\r\n });\r\n editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\r\n editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\r\n editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\r\n };\r\n var $_7snno4gsjkmcwpcf = { register: register };\r\n\r\n var shouldIndentOnTab = function (editor) {\r\n return editor.getParam('lists_indent_on_tab', true);\r\n };\r\n var $_7hi6itgvjkmcwpcr = { shouldIndentOnTab: shouldIndentOnTab };\r\n\r\n var setupTabKey = function (editor) {\r\n editor.on('keydown', function (e) {\r\n if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {\r\n return;\r\n }\r\n if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {\r\n e.preventDefault();\r\n if (e.shiftKey) {\r\n $_80fi2gghjkmcwpbq.outdentSelection(editor);\r\n } else {\r\n $_fhzwh2gtjkmcwpco.indentSelection(editor);\r\n }\r\n }\r\n });\r\n };\r\n var setup$1 = function (editor) {\r\n if ($_7hi6itgvjkmcwpcr.shouldIndentOnTab(editor)) {\r\n setupTabKey(editor);\r\n }\r\n $_17li1sgajkmcwpb9.setup(editor);\r\n };\r\n var $_fv3b7wgujkmcwpcq = { setup: setup$1 };\r\n\r\n var findIndex = function (list, predicate) {\r\n for (var index = 0; index < list.length; index++) {\r\n var element = list[index];\r\n if (predicate(element)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n };\r\n var listState = function (editor, listName) {\r\n return function (e) {\r\n var ctrl = e.control;\r\n editor.on('NodeChange', function (e) {\r\n var tableCellIndex = findIndex(e.parents, $_eyfb4cgljkmcwpc0.isTableCellNode);\r\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\r\n var lists = global$5.grep(parents, $_eyfb4cgljkmcwpc0.isListNode);\r\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\r\n });\r\n };\r\n };\r\n var indentPostRender = function (editor) {\r\n return function (e) {\r\n var ctrl = e.control;\r\n editor.on('nodechange', function () {\r\n var listItemBlocks = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\r\n var disable = listItemBlocks.length > 0 && $_eyfb4cgljkmcwpc0.isFirstChild(listItemBlocks[0]);\r\n ctrl.disabled(disable);\r\n });\r\n };\r\n };\r\n var register$1 = function (editor) {\r\n var hasPlugin = function (editor, plugin) {\r\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\r\n return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;\r\n };\r\n if (!hasPlugin(editor, 'advlist')) {\r\n editor.addButton('numlist', {\r\n active: false,\r\n title: 'Numbered list',\r\n cmd: 'InsertOrderedList',\r\n onPostRender: listState(editor, 'OL')\r\n });\r\n editor.addButton('bullist', {\r\n active: false,\r\n title: 'Bullet list',\r\n cmd: 'InsertUnorderedList',\r\n onPostRender: listState(editor, 'UL')\r\n });\r\n }\r\n editor.addButton('indent', {\r\n icon: 'indent',\r\n title: 'Increase indent',\r\n cmd: 'Indent',\r\n onPostRender: indentPostRender(editor)\r\n });\r\n };\r\n var $_e09q6ogwjkmcwpct = { register: register$1 };\r\n\r\n global.add('lists', function (editor) {\r\n $_fv3b7wgujkmcwpcq.setup(editor);\r\n $_e09q6ogwjkmcwpct.register(editor);\r\n $_7snno4gsjkmcwpcf.register(editor);\r\n return $_4wrbe2g9jkmcwpb7.get(editor);\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","function _get(key) {\r\n var _name = key + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(_name) == 0) return c.substring(_name.length, c.length);\r\n }\r\n return null;\r\n};\r\n\r\nfunction _add(key, data, seconds) {\r\n if (seconds) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (seconds * 1000));\r\n var expires = \"; expires=\" + date.toGMTString();\r\n } else var expires = \"\";\r\n document.cookie = key + \"=\" + data + expires + \"; path=/\";\r\n};\r\n\r\nfunction _update(key, data, seconds) {\r\n _remove(key);\r\n _add(key, data, seconds);\r\n};\r\n\r\nfunction _remove(key) {\r\n _add(key, \"\", -1);\r\n};\r\n\r\nexport default {\r\n get: _get,\r\n add: _add,\r\n update: _update,\r\n remove: _remove,\r\n}\r\n","import Cache from './cache'\r\nimport Cookie from './cookie'\r\nimport Global from './global'\r\nimport { Api } from './api'\r\nimport { setTimeout } from 'timers';\r\n\r\nexport default {\r\n\r\n authorize_url: Global.SSO_END_POINT + 'connect/authorize',\r\n addclaims_authorize_url: Global.SSO_END_POINT + '/accountafterauth/claimsadd',\r\n endsession_url: Global.SSO_END_POINT + 'connect/endsession',\r\n redirect_uri: Global.SSO_REDIRECT_LOGIN_URL,\r\n post_logout_redirect_uri: Global.SSO_REDIRECT_LOGOUT_URL,\r\n\r\n client_id: Global.SSO_CLIENT_ID,\r\n response_type: Global.SSO_RESPONSE_TYPE,\r\n scope: Global.SSO_SCOPE,\r\n\r\n menu_key: 'ACC___FXX_JB_01',\r\n permissoes_key: 'ACC___FXX_JB_02',\r\n loadfinished_key: 'ACC___FXX_JB_04',\r\n lastlocation_key: 'ACC___AEF_03_5O',\r\n\r\n getToken() {\r\n return Cache.get(Global.ID_TOKEN);\r\n },\r\n\r\n getAccessToken() {\r\n return Cache.get(Global.ACCESS_TOKEN);\r\n },\r\n\r\n getState() {\r\n return Cache.get(Global.ID_STATE);\r\n },\r\n\r\n logged() {\r\n return Cache.get(Global.ID_TOKEN) && Cache.get(this.loadfinished_key) == \"finished\";\r\n },\r\n\r\n login(saveActualPage) {\r\n\r\n if (saveActualPage)\r\n Cache.add(this.lastlocation_key, window.location.pathname);\r\n\r\n Cache.add(Global.ID_STATE, Date.now());\r\n\r\n var url = this.authorize_url + \"?\" +\r\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\r\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\r\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\r\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\r\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\r\n \"nonce=xyz\";\r\n\r\n window.location = url;\r\n },\r\n\r\n getCurrentUser(callback) {\r\n var api = new Api(\"currentuser\");\r\n api.hasDefaultFilters = false;\r\n api.get().then(response => {\r\n var _user = response.data;\r\n new Api('pessoacna').get({\r\n id: _user.pessoacna\r\n }).then(result => {\r\n Cache.add(Global.USER_INFO, JSON.stringify(result.data));\r\n setTimeout(() => { callback(result.data, _user.pessoacna) }, 500);\r\n })\r\n });\r\n },\r\n\r\n currentUser() {\r\n var _user = JSON.parse(Cache.get(Global.USER_INFO));\r\n return _user;\r\n },\r\n\r\n logout() {\r\n\r\n var url = this.endsession_url + \"?\" +\r\n \"id_token_hint=\" + this.getToken() + \"&\" +\r\n \"post_logout_redirect_uri=\" + encodeURIComponent(this.post_logout_redirect_uri) + \"&\" +\r\n \"state=\" + encodeURIComponent(this.getState());\r\n\r\n this.reset();\r\n\r\n window.location = url;\r\n },\r\n\r\n processTokenCallback(callback) {\r\n\r\n if (window.location.href.indexOf(\"access_token\") < 0) {\r\n callback();\r\n return;\r\n }\r\n\r\n this.reset();\r\n\r\n var itens = window.location.hash.split('#');\r\n var result = itens[1].split('&').reduce(function (result, item) {\r\n var parts = item.split('=');\r\n result[parts[0]] = parts[1];\r\n return result;\r\n }, {});\r\n\r\n Cache.add(Global.ACCESS_TOKEN, result.access_token, result.expires_in);\r\n Cache.add(Global.ID_TOKEN, result.id_token, result.expires_in);\r\n\r\n setTimeout(() => {\r\n callback();\r\n }, 500);\r\n\r\n },\r\n\r\n claimsAddLoginSso(claim_type, claim_value) {\r\n\r\n Cache.add(Global.ID_STATE, Date.now());\r\n\r\n let url = this.addclaims_authorize_url + \"?\" +\r\n \"claims_type=\" + encodeURIComponent(claim_type) + \"&\" +\r\n \"claims_value=\" + encodeURIComponent(claim_value) + \"&\" +\r\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\r\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\r\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\r\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\r\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\r\n \"nonce=xyz\";\r\n\r\n Cache.remove(Global.USER_INFO);\r\n\r\n window.location = url;\r\n },\r\n\r\n reset() {\r\n Cache.remove(Global.ACCESS_TOKEN);\r\n Cache.remove(Global.ID_TOKEN);\r\n Cache.remove(Global.USER_INFO);\r\n },\r\n\r\n getPermissoes() {\r\n var _fromcache = Cache.get(this.permissoes_key);\r\n return JSON.parse(_fromcache);\r\n },\r\n\r\n getMenu() {\r\n var _fromcache = Cache.get(this.menu_key);\r\n return JSON.parse(_fromcache);\r\n },\r\n\r\n canAccess(url) {\r\n\r\n return true;\r\n\r\n if (url == '' ||\r\n url == '/' ||\r\n url == '/home')\r\n return true;\r\n\r\n var permissions = this.getPermissoes();\r\n var can = false;\r\n\r\n if (url.endsWith(\"/\"))\r\n url = url.slice(0, -1)\r\n\r\n var rotaSplited = url.split('/');\r\n\r\n for (var key in permissions) {\r\n var splited = permissions[key].split('/');\r\n var todosparametrosbatem = false;\r\n for (var itemrota in rotaSplited) {\r\n if (splited[itemrota] == \"[parametro]\" || rotaSplited[itemrota] == splited[itemrota]) {\r\n todosparametrosbatem = true;\r\n }\r\n else {\r\n todosparametrosbatem = false;\r\n break;\r\n }\r\n }\r\n\r\n if (todosparametrosbatem) {\r\n can = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!can)\r\n return false;\r\n\r\n return true;\r\n }\r\n}\r\n","export default {\r\n\r\n END_POINT_DEFAULT: process.env.VUE_APP_ENDPOINT_DEFAULT,\r\n END_POINT_PORTAL_CORPORATIVO: process.env.VUE_APP_END_POINT_PORTAL_CORPORATIVO,\r\n \r\n SSO_END_POINT: process.env.VUE_APP_ENDPOINT_SSO,\r\n\r\n SSO_REDIRECT_LOGIN_URL: process.env.VUE_APP_LOCATION_URL + \"authorized/?\",\r\n SSO_REDIRECT_LOGOUT_URL: \"https://www.cna.com.br\",\r\n\r\n SSO_CLIENT_ID: \"account-user\",\r\n SSO_RESPONSE_TYPE: \"id_token token\",\r\n SSO_SCOPE: \"openid profile email account_user_api\",\r\n\r\n ACCESS_TOKEN: \"PFB_AC_T_X857D\",\r\n ID_TOKEN: \"PFB_ID_T_D98SW\",\r\n USER_INFO: \"PFB_U_I_D8D5D\",\r\n ID_STATE: \"PFB_ID_S_852PL\",\r\n\r\n CHAVE_IDENTIFICACAO_SISTEMA: \"SHOPPING_NOVO\",\r\n\r\n URL_SHOPPING_CNA: process.env.VUE_APP_SHOPPING_URL,\r\n URL_PORTAL_CORPORATIVO: process.env.VUE_APP_PORTAL_CORPORATIVO,\r\n URL_DOWNLOAD: process.env.VUE_APP_ENDPOINT_DOWNLOAD + '/document/download/',\r\n\r\n\r\n}\r\n","(function () {\r\nvar image = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\r\n\r\n var hasDimensions = function (editor) {\r\n return editor.settings.image_dimensions === false ? false : true;\r\n };\r\n var hasAdvTab = function (editor) {\r\n return editor.settings.image_advtab === true ? true : false;\r\n };\r\n var getPrependUrl = function (editor) {\r\n return editor.getParam('image_prepend_url', '');\r\n };\r\n var getClassList = function (editor) {\r\n return editor.getParam('image_class_list');\r\n };\r\n var hasDescription = function (editor) {\r\n return editor.settings.image_description === false ? false : true;\r\n };\r\n var hasImageTitle = function (editor) {\r\n return editor.settings.image_title === true ? true : false;\r\n };\r\n var hasImageCaption = function (editor) {\r\n return editor.settings.image_caption === true ? true : false;\r\n };\r\n var getImageList = function (editor) {\r\n return editor.getParam('image_list', false);\r\n };\r\n var hasUploadUrl = function (editor) {\r\n return editor.getParam('images_upload_url', false);\r\n };\r\n var hasUploadHandler = function (editor) {\r\n return editor.getParam('images_upload_handler', false);\r\n };\r\n var getUploadUrl = function (editor) {\r\n return editor.getParam('images_upload_url');\r\n };\r\n var getUploadHandler = function (editor) {\r\n return editor.getParam('images_upload_handler');\r\n };\r\n var getUploadBasePath = function (editor) {\r\n return editor.getParam('images_upload_base_path');\r\n };\r\n var getUploadCredentials = function (editor) {\r\n return editor.getParam('images_upload_credentials');\r\n };\r\n var $_gc1jdictjkmcwomd = {\r\n hasDimensions: hasDimensions,\r\n hasAdvTab: hasAdvTab,\r\n getPrependUrl: getPrependUrl,\r\n getClassList: getClassList,\r\n hasDescription: hasDescription,\r\n hasImageTitle: hasImageTitle,\r\n hasImageCaption: hasImageCaption,\r\n getImageList: getImageList,\r\n hasUploadUrl: hasUploadUrl,\r\n hasUploadHandler: hasUploadHandler,\r\n getUploadUrl: getUploadUrl,\r\n getUploadHandler: getUploadHandler,\r\n getUploadBasePath: getUploadBasePath,\r\n getUploadCredentials: getUploadCredentials\r\n };\r\n\r\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\r\n\r\n var path = function (parts, scope) {\r\n var o = scope !== undefined && scope !== null ? scope : Global;\r\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\r\n o = o[parts[i]];\r\n return o;\r\n };\r\n var resolve = function (p, scope) {\r\n var parts = p.split('.');\r\n return path(parts, scope);\r\n };\r\n\r\n var unsafe = function (name, scope) {\r\n return resolve(name, scope);\r\n };\r\n var getOrDie = function (name, scope) {\r\n var actual = unsafe(name, scope);\r\n if (actual === undefined || actual === null)\r\n throw name + ' not available on this browser';\r\n return actual;\r\n };\r\n var $_db9o2scwjkmcwomp = { getOrDie: getOrDie };\r\n\r\n function FileReader () {\r\n var f = $_db9o2scwjkmcwomp.getOrDie('FileReader');\r\n return new f();\r\n }\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');\r\n\r\n var parseIntAndGetMax = function (val1, val2) {\r\n return Math.max(parseInt(val1, 10), parseInt(val2, 10));\r\n };\r\n var getImageSize = function (url, callback) {\r\n var img = document.createElement('img');\r\n function done(width, height) {\r\n if (img.parentNode) {\r\n img.parentNode.removeChild(img);\r\n }\r\n callback({\r\n width: width,\r\n height: height\r\n });\r\n }\r\n img.onload = function () {\r\n var width = parseIntAndGetMax(img.width, img.clientWidth);\r\n var height = parseIntAndGetMax(img.height, img.clientHeight);\r\n done(width, height);\r\n };\r\n img.onerror = function () {\r\n done(0, 0);\r\n };\r\n var style = img.style;\r\n style.visibility = 'hidden';\r\n style.position = 'fixed';\r\n style.bottom = style.left = '0px';\r\n style.width = style.height = 'auto';\r\n document.body.appendChild(img);\r\n img.src = url;\r\n };\r\n var buildListItems = function (inputList, itemCallback, startItems) {\r\n function appendItems(values, output) {\r\n output = output || [];\r\n global$2.each(values, function (item) {\r\n var menuItem = { text: item.text || item.title };\r\n if (item.menu) {\r\n menuItem.menu = appendItems(item.menu);\r\n } else {\r\n menuItem.value = item.value;\r\n itemCallback(menuItem);\r\n }\r\n output.push(menuItem);\r\n });\r\n return output;\r\n }\r\n return appendItems(inputList, startItems || []);\r\n };\r\n var removePixelSuffix = function (value) {\r\n if (value) {\r\n value = value.replace(/px$/, '');\r\n }\r\n return value;\r\n };\r\n var addPixelSuffix = function (value) {\r\n if (value.length > 0 && /^[0-9]+$/.test(value)) {\r\n value += 'px';\r\n }\r\n return value;\r\n };\r\n var mergeMargins = function (css) {\r\n if (css.margin) {\r\n var splitMargin = css.margin.split(' ');\r\n switch (splitMargin.length) {\r\n case 1:\r\n css['margin-top'] = css['margin-top'] || splitMargin[0];\r\n css['margin-right'] = css['margin-right'] || splitMargin[0];\r\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\r\n css['margin-left'] = css['margin-left'] || splitMargin[0];\r\n break;\r\n case 2:\r\n css['margin-top'] = css['margin-top'] || splitMargin[0];\r\n css['margin-right'] = css['margin-right'] || splitMargin[1];\r\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\r\n css['margin-left'] = css['margin-left'] || splitMargin[1];\r\n break;\r\n case 3:\r\n css['margin-top'] = css['margin-top'] || splitMargin[0];\r\n css['margin-right'] = css['margin-right'] || splitMargin[1];\r\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\r\n css['margin-left'] = css['margin-left'] || splitMargin[1];\r\n break;\r\n case 4:\r\n css['margin-top'] = css['margin-top'] || splitMargin[0];\r\n css['margin-right'] = css['margin-right'] || splitMargin[1];\r\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\r\n css['margin-left'] = css['margin-left'] || splitMargin[3];\r\n }\r\n delete css.margin;\r\n }\r\n return css;\r\n };\r\n var createImageList = function (editor, callback) {\r\n var imageList = $_gc1jdictjkmcwomd.getImageList(editor);\r\n if (typeof imageList === 'string') {\r\n global$3.send({\r\n url: imageList,\r\n success: function (text) {\r\n callback(JSON.parse(text));\r\n }\r\n });\r\n } else if (typeof imageList === 'function') {\r\n imageList(callback);\r\n } else {\r\n callback(imageList);\r\n }\r\n };\r\n var waitLoadImage = function (editor, data, imgElm) {\r\n function selectImage() {\r\n imgElm.onload = imgElm.onerror = null;\r\n if (editor.selection) {\r\n editor.selection.select(imgElm);\r\n editor.nodeChanged();\r\n }\r\n }\r\n imgElm.onload = function () {\r\n if (!data.width && !data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\r\n editor.dom.setAttribs(imgElm, {\r\n width: imgElm.clientWidth,\r\n height: imgElm.clientHeight\r\n });\r\n }\r\n selectImage();\r\n };\r\n imgElm.onerror = selectImage;\r\n };\r\n var blobToDataUri = function (blob) {\r\n return new global$1(function (resolve, reject) {\r\n var reader = new FileReader();\r\n reader.onload = function () {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = function () {\r\n reject(FileReader.error.message);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n };\r\n var $_9v7cmwcujkmcwomi = {\r\n getImageSize: getImageSize,\r\n buildListItems: buildListItems,\r\n removePixelSuffix: removePixelSuffix,\r\n addPixelSuffix: addPixelSuffix,\r\n mergeMargins: mergeMargins,\r\n createImageList: createImageList,\r\n waitLoadImage: waitLoadImage,\r\n blobToDataUri: blobToDataUri\r\n };\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n var shallow = function (old, nu) {\r\n return nu;\r\n };\r\n var baseMerge = function (merger) {\r\n return function () {\r\n var objects = new Array(arguments.length);\r\n for (var i = 0; i < objects.length; i++)\r\n objects[i] = arguments[i];\r\n if (objects.length === 0)\r\n throw new Error('Can\\'t merge zero objects');\r\n var ret = {};\r\n for (var j = 0; j < objects.length; j++) {\r\n var curObject = objects[j];\r\n for (var key in curObject)\r\n if (hasOwnProperty.call(curObject, key)) {\r\n ret[key] = merger(ret[key], curObject[key]);\r\n }\r\n }\r\n return ret;\r\n };\r\n };\r\n\r\n var merge = baseMerge(shallow);\r\n\r\n var DOM = global$4.DOM;\r\n var getHspace = function (image) {\r\n if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {\r\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginLeft);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getVspace = function (image) {\r\n if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {\r\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginTop);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getBorder = function (image) {\r\n if (image.style.borderWidth) {\r\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.borderWidth);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getAttrib = function (image, name$$1) {\r\n if (image.hasAttribute(name$$1)) {\r\n return image.getAttribute(name$$1);\r\n } else {\r\n return '';\r\n }\r\n };\r\n var getStyle = function (image, name$$1) {\r\n return image.style[name$$1] ? image.style[name$$1] : '';\r\n };\r\n var hasCaption = function (image) {\r\n return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';\r\n };\r\n var setAttrib = function (image, name$$1, value) {\r\n image.setAttribute(name$$1, value);\r\n };\r\n var wrapInFigure = function (image) {\r\n var figureElm = DOM.create('figure', { class: 'image' });\r\n DOM.insertAfter(figureElm, image);\r\n figureElm.appendChild(image);\r\n figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\r\n figureElm.contentEditable = 'false';\r\n };\r\n var removeFigure = function (image) {\r\n var figureElm = image.parentNode;\r\n DOM.insertAfter(image, figureElm);\r\n DOM.remove(figureElm);\r\n };\r\n var toggleCaption = function (image) {\r\n if (hasCaption(image)) {\r\n removeFigure(image);\r\n } else {\r\n wrapInFigure(image);\r\n }\r\n };\r\n var normalizeStyle = function (image, normalizeCss) {\r\n var attrValue = image.getAttribute('style');\r\n var value = normalizeCss(attrValue !== null ? attrValue : '');\r\n if (value.length > 0) {\r\n image.setAttribute('style', value);\r\n image.setAttribute('data-mce-style', value);\r\n } else {\r\n image.removeAttribute('style');\r\n }\r\n };\r\n var setSize = function (name$$1, normalizeCss) {\r\n return function (image, name$$1, value) {\r\n if (image.style[name$$1]) {\r\n image.style[name$$1] = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\r\n normalizeStyle(image, normalizeCss);\r\n } else {\r\n setAttrib(image, name$$1, value);\r\n }\r\n };\r\n };\r\n var getSize = function (image, name$$1) {\r\n if (image.style[name$$1]) {\r\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style[name$$1]);\r\n } else {\r\n return getAttrib(image, name$$1);\r\n }\r\n };\r\n var setHspace = function (image, value) {\r\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\r\n image.style.marginLeft = pxValue;\r\n image.style.marginRight = pxValue;\r\n };\r\n var setVspace = function (image, value) {\r\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\r\n image.style.marginTop = pxValue;\r\n image.style.marginBottom = pxValue;\r\n };\r\n var setBorder = function (image, value) {\r\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\r\n image.style.borderWidth = pxValue;\r\n };\r\n var setBorderStyle = function (image, value) {\r\n image.style.borderStyle = value;\r\n };\r\n var getBorderStyle = function (image) {\r\n return getStyle(image, 'borderStyle');\r\n };\r\n var isFigure = function (elm) {\r\n return elm.nodeName === 'FIGURE';\r\n };\r\n var defaultData = function () {\r\n return {\r\n src: '',\r\n alt: '',\r\n title: '',\r\n width: '',\r\n height: '',\r\n class: '',\r\n style: '',\r\n caption: false,\r\n hspace: '',\r\n vspace: '',\r\n border: '',\r\n borderStyle: ''\r\n };\r\n };\r\n var getStyleValue = function (normalizeCss, data) {\r\n var image = document.createElement('img');\r\n setAttrib(image, 'style', data.style);\r\n if (getHspace(image) || data.hspace !== '') {\r\n setHspace(image, data.hspace);\r\n }\r\n if (getVspace(image) || data.vspace !== '') {\r\n setVspace(image, data.vspace);\r\n }\r\n if (getBorder(image) || data.border !== '') {\r\n setBorder(image, data.border);\r\n }\r\n if (getBorderStyle(image) || data.borderStyle !== '') {\r\n setBorderStyle(image, data.borderStyle);\r\n }\r\n return normalizeCss(image.getAttribute('style'));\r\n };\r\n var create = function (normalizeCss, data) {\r\n var image = document.createElement('img');\r\n write(normalizeCss, merge(data, { caption: false }), image);\r\n setAttrib(image, 'alt', data.alt);\r\n if (data.caption) {\r\n var figure = DOM.create('figure', { class: 'image' });\r\n figure.appendChild(image);\r\n figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\r\n figure.contentEditable = 'false';\r\n return figure;\r\n } else {\r\n return image;\r\n }\r\n };\r\n var read = function (normalizeCss, image) {\r\n return {\r\n src: getAttrib(image, 'src'),\r\n alt: getAttrib(image, 'alt'),\r\n title: getAttrib(image, 'title'),\r\n width: getSize(image, 'width'),\r\n height: getSize(image, 'height'),\r\n class: getAttrib(image, 'class'),\r\n style: normalizeCss(getAttrib(image, 'style')),\r\n caption: hasCaption(image),\r\n hspace: getHspace(image),\r\n vspace: getVspace(image),\r\n border: getBorder(image),\r\n borderStyle: getStyle(image, 'borderStyle')\r\n };\r\n };\r\n var updateProp = function (image, oldData, newData, name$$1, set) {\r\n if (newData[name$$1] !== oldData[name$$1]) {\r\n set(image, name$$1, newData[name$$1]);\r\n }\r\n };\r\n var normalized = function (set, normalizeCss) {\r\n return function (image, name$$1, value) {\r\n set(image, value);\r\n normalizeStyle(image, normalizeCss);\r\n };\r\n };\r\n var write = function (normalizeCss, newData, image) {\r\n var oldData = read(normalizeCss, image);\r\n updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {\r\n return toggleCaption(image);\r\n });\r\n updateProp(image, oldData, newData, 'src', setAttrib);\r\n updateProp(image, oldData, newData, 'alt', setAttrib);\r\n updateProp(image, oldData, newData, 'title', setAttrib);\r\n updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));\r\n updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));\r\n updateProp(image, oldData, newData, 'class', setAttrib);\r\n updateProp(image, oldData, newData, 'style', normalized(function (image, value) {\r\n return setAttrib(image, 'style', value);\r\n }, normalizeCss));\r\n updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));\r\n updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));\r\n updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));\r\n updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));\r\n };\r\n\r\n var normalizeCss = function (editor, cssText) {\r\n var css = editor.dom.styles.parse(cssText);\r\n var mergedCss = $_9v7cmwcujkmcwomi.mergeMargins(css);\r\n var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));\r\n return editor.dom.styles.serialize(compressed);\r\n };\r\n var getSelectedImage = function (editor) {\r\n var imgElm = editor.selection.getNode();\r\n var figureElm = editor.dom.getParent(imgElm, 'figure.image');\r\n if (figureElm) {\r\n return editor.dom.select('img', figureElm)[0];\r\n }\r\n if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {\r\n return null;\r\n }\r\n return imgElm;\r\n };\r\n var splitTextBlock = function (editor, figure) {\r\n var dom = editor.dom;\r\n var textBlock = dom.getParent(figure.parentNode, function (node) {\r\n return editor.schema.getTextBlockElements()[node.nodeName];\r\n });\r\n if (textBlock) {\r\n return dom.split(textBlock, figure);\r\n } else {\r\n return figure;\r\n }\r\n };\r\n var readImageDataFromSelection = function (editor) {\r\n var image = getSelectedImage(editor);\r\n return image ? read(function (css) {\r\n return normalizeCss(editor, css);\r\n }, image) : defaultData();\r\n };\r\n var insertImageAtCaret = function (editor, data) {\r\n var elm = create(function (css) {\r\n return normalizeCss(editor, css);\r\n }, data);\r\n editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');\r\n editor.focus();\r\n editor.selection.setContent(elm.outerHTML);\r\n var insertedElm = editor.dom.select('*[data-mce-id=\"__mcenew\"]')[0];\r\n editor.dom.setAttrib(insertedElm, 'data-mce-id', null);\r\n if (isFigure(insertedElm)) {\r\n var figure = splitTextBlock(editor, insertedElm);\r\n editor.selection.select(figure);\r\n } else {\r\n editor.selection.select(insertedElm);\r\n }\r\n };\r\n var syncSrcAttr = function (editor, image) {\r\n editor.dom.setAttrib(image, 'src', image.getAttribute('src'));\r\n };\r\n var deleteImage = function (editor, image) {\r\n if (image) {\r\n var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;\r\n editor.dom.remove(elm);\r\n editor.focus();\r\n editor.nodeChanged();\r\n if (editor.dom.isEmpty(editor.getBody())) {\r\n editor.setContent('');\r\n editor.selection.setCursorLocation();\r\n }\r\n }\r\n };\r\n var writeImageDataToSelection = function (editor, data) {\r\n var image = getSelectedImage(editor);\r\n write(function (css) {\r\n return normalizeCss(editor, css);\r\n }, data, image);\r\n syncSrcAttr(editor, image);\r\n if (isFigure(image.parentNode)) {\r\n var figure = image.parentNode;\r\n splitTextBlock(editor, figure);\r\n editor.selection.select(image.parentNode);\r\n } else {\r\n editor.selection.select(image);\r\n $_9v7cmwcujkmcwomi.waitLoadImage(editor, data, image);\r\n }\r\n };\r\n var insertOrUpdateImage = function (editor, data) {\r\n var image = getSelectedImage(editor);\r\n if (image) {\r\n if (data.src) {\r\n writeImageDataToSelection(editor, data);\r\n } else {\r\n deleteImage(editor, image);\r\n }\r\n } else if (data.src) {\r\n insertImageAtCaret(editor, data);\r\n }\r\n };\r\n\r\n var updateVSpaceHSpaceBorder = function (editor) {\r\n return function (evt) {\r\n var dom = editor.dom;\r\n var rootControl = evt.control.rootControl;\r\n if (!$_gc1jdictjkmcwomd.hasAdvTab(editor)) {\r\n return;\r\n }\r\n var data = rootControl.toJSON();\r\n var css = dom.parseStyle(data.style);\r\n rootControl.find('#vspace').value('');\r\n rootControl.find('#hspace').value('');\r\n css = $_9v7cmwcujkmcwomi.mergeMargins(css);\r\n if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {\r\n if (css['margin-top'] === css['margin-bottom']) {\r\n rootControl.find('#vspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-top']));\r\n } else {\r\n rootControl.find('#vspace').value('');\r\n }\r\n if (css['margin-right'] === css['margin-left']) {\r\n rootControl.find('#hspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-right']));\r\n } else {\r\n rootControl.find('#hspace').value('');\r\n }\r\n }\r\n if (css['border-width']) {\r\n rootControl.find('#border').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['border-width']));\r\n } else {\r\n rootControl.find('#border').value('');\r\n }\r\n if (css['border-style']) {\r\n rootControl.find('#borderStyle').value(css['border-style']);\r\n } else {\r\n rootControl.find('#borderStyle').value('');\r\n }\r\n rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));\r\n };\r\n };\r\n var updateStyle = function (editor, win) {\r\n win.find('#style').each(function (ctrl) {\r\n var value = getStyleValue(function (css) {\r\n return normalizeCss(editor, css);\r\n }, merge(defaultData(), win.toJSON()));\r\n ctrl.value(value);\r\n });\r\n };\r\n var makeTab = function (editor) {\r\n return {\r\n title: 'Advanced',\r\n type: 'form',\r\n pack: 'start',\r\n items: [\r\n {\r\n label: 'Style',\r\n name: 'style',\r\n type: 'textbox',\r\n onchange: updateVSpaceHSpaceBorder(editor)\r\n },\r\n {\r\n type: 'form',\r\n layout: 'grid',\r\n packV: 'start',\r\n columns: 2,\r\n padding: 0,\r\n defaults: {\r\n type: 'textbox',\r\n maxWidth: 50,\r\n onchange: function (evt) {\r\n updateStyle(editor, evt.control.rootControl);\r\n }\r\n },\r\n items: [\r\n {\r\n label: 'Vertical space',\r\n name: 'vspace'\r\n },\r\n {\r\n label: 'Border width',\r\n name: 'border'\r\n },\r\n {\r\n label: 'Horizontal space',\r\n name: 'hspace'\r\n },\r\n {\r\n label: 'Border style',\r\n type: 'listbox',\r\n name: 'borderStyle',\r\n width: 90,\r\n maxWidth: 90,\r\n onselect: function (evt) {\r\n updateStyle(editor, evt.control.rootControl);\r\n },\r\n values: [\r\n {\r\n text: 'Select...',\r\n value: ''\r\n },\r\n {\r\n text: 'Solid',\r\n value: 'solid'\r\n },\r\n {\r\n text: 'Dotted',\r\n value: 'dotted'\r\n },\r\n {\r\n text: 'Dashed',\r\n value: 'dashed'\r\n },\r\n {\r\n text: 'Double',\r\n value: 'double'\r\n },\r\n {\r\n text: 'Groove',\r\n value: 'groove'\r\n },\r\n {\r\n text: 'Ridge',\r\n value: 'ridge'\r\n },\r\n {\r\n text: 'Inset',\r\n value: 'inset'\r\n },\r\n {\r\n text: 'Outset',\r\n value: 'outset'\r\n },\r\n {\r\n text: 'None',\r\n value: 'none'\r\n },\r\n {\r\n text: 'Hidden',\r\n value: 'hidden'\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n };\r\n var $_4qd61kd3jkmcwonl = { makeTab: makeTab };\r\n\r\n var doSyncSize = function (widthCtrl, heightCtrl) {\r\n widthCtrl.state.set('oldVal', widthCtrl.value());\r\n heightCtrl.state.set('oldVal', heightCtrl.value());\r\n };\r\n var doSizeControls = function (win, f) {\r\n var widthCtrl = win.find('#width')[0];\r\n var heightCtrl = win.find('#height')[0];\r\n var constrained = win.find('#constrain')[0];\r\n if (widthCtrl && heightCtrl && constrained) {\r\n f(widthCtrl, heightCtrl, constrained.checked());\r\n }\r\n };\r\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\r\n var oldWidth = widthCtrl.state.get('oldVal');\r\n var oldHeight = heightCtrl.state.get('oldVal');\r\n var newWidth = widthCtrl.value();\r\n var newHeight = heightCtrl.value();\r\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\r\n if (newWidth !== oldWidth) {\r\n newHeight = Math.round(newWidth / oldWidth * newHeight);\r\n if (!isNaN(newHeight)) {\r\n heightCtrl.value(newHeight);\r\n }\r\n } else {\r\n newWidth = Math.round(newHeight / oldHeight * newWidth);\r\n if (!isNaN(newWidth)) {\r\n widthCtrl.value(newWidth);\r\n }\r\n }\r\n }\r\n doSyncSize(widthCtrl, heightCtrl);\r\n };\r\n var syncSize = function (win) {\r\n doSizeControls(win, doSyncSize);\r\n };\r\n var updateSize = function (win) {\r\n doSizeControls(win, doUpdateSize);\r\n };\r\n var createUi = function () {\r\n var recalcSize = function (evt) {\r\n updateSize(evt.control.rootControl);\r\n };\r\n return {\r\n type: 'container',\r\n label: 'Dimensions',\r\n layout: 'flex',\r\n align: 'center',\r\n spacing: 5,\r\n items: [\r\n {\r\n name: 'width',\r\n type: 'textbox',\r\n maxLength: 5,\r\n size: 5,\r\n onchange: recalcSize,\r\n ariaLabel: 'Width'\r\n },\r\n {\r\n type: 'label',\r\n text: 'x'\r\n },\r\n {\r\n name: 'height',\r\n type: 'textbox',\r\n maxLength: 5,\r\n size: 5,\r\n onchange: recalcSize,\r\n ariaLabel: 'Height'\r\n },\r\n {\r\n name: 'constrain',\r\n type: 'checkbox',\r\n checked: true,\r\n text: 'Constrain proportions'\r\n }\r\n ]\r\n };\r\n };\r\n var $_14kdtjdajkmcwoo8 = {\r\n createUi: createUi,\r\n syncSize: syncSize,\r\n updateSize: updateSize\r\n };\r\n\r\n var onSrcChange = function (evt, editor) {\r\n var srcURL, prependURL, absoluteURLPattern;\r\n var meta = evt.meta || {};\r\n var control = evt.control;\r\n var rootControl = control.rootControl;\r\n var imageListCtrl = rootControl.find('#image-list')[0];\r\n if (imageListCtrl) {\r\n imageListCtrl.value(editor.convertURL(control.value(), 'src'));\r\n }\r\n global$2.each(meta, function (value, key) {\r\n rootControl.find('#' + key).value(value);\r\n });\r\n if (!meta.width && !meta.height) {\r\n srcURL = editor.convertURL(control.value(), 'src');\r\n prependURL = $_gc1jdictjkmcwomd.getPrependUrl(editor);\r\n absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {\r\n srcURL = prependURL + srcURL;\r\n }\r\n control.value(srcURL);\r\n $_9v7cmwcujkmcwomi.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {\r\n if (data.width && data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\r\n rootControl.find('#width').value(data.width);\r\n rootControl.find('#height').value(data.height);\r\n $_14kdtjdajkmcwoo8.syncSize(rootControl);\r\n }\r\n });\r\n }\r\n };\r\n var onBeforeCall = function (evt) {\r\n evt.meta = evt.control.rootControl.toJSON();\r\n };\r\n var getGeneralItems = function (editor, imageListCtrl) {\r\n var generalFormItems = [\r\n {\r\n name: 'src',\r\n type: 'filepicker',\r\n filetype: 'image',\r\n label: 'Source',\r\n autofocus: true,\r\n onchange: function (evt) {\r\n onSrcChange(evt, editor);\r\n },\r\n onbeforecall: onBeforeCall\r\n },\r\n imageListCtrl\r\n ];\r\n if ($_gc1jdictjkmcwomd.hasDescription(editor)) {\r\n generalFormItems.push({\r\n name: 'alt',\r\n type: 'textbox',\r\n label: 'Image description'\r\n });\r\n }\r\n if ($_gc1jdictjkmcwomd.hasImageTitle(editor)) {\r\n generalFormItems.push({\r\n name: 'title',\r\n type: 'textbox',\r\n label: 'Image Title'\r\n });\r\n }\r\n if ($_gc1jdictjkmcwomd.hasDimensions(editor)) {\r\n generalFormItems.push($_14kdtjdajkmcwoo8.createUi());\r\n }\r\n if ($_gc1jdictjkmcwomd.getClassList(editor)) {\r\n generalFormItems.push({\r\n name: 'class',\r\n type: 'listbox',\r\n label: 'Class',\r\n values: $_9v7cmwcujkmcwomi.buildListItems($_gc1jdictjkmcwomd.getClassList(editor), function (item) {\r\n if (item.value) {\r\n item.textStyle = function () {\r\n return editor.formatter.getCssText({\r\n inline: 'img',\r\n classes: [item.value]\r\n });\r\n };\r\n }\r\n })\r\n });\r\n }\r\n if ($_gc1jdictjkmcwomd.hasImageCaption(editor)) {\r\n generalFormItems.push({\r\n name: 'caption',\r\n type: 'checkbox',\r\n label: 'Caption'\r\n });\r\n }\r\n return generalFormItems;\r\n };\r\n var makeTab$1 = function (editor, imageListCtrl) {\r\n return {\r\n title: 'General',\r\n type: 'form',\r\n items: getGeneralItems(editor, imageListCtrl)\r\n };\r\n };\r\n var $_bpqbuud9jkmcwoo5 = {\r\n makeTab: makeTab$1,\r\n getGeneralItems: getGeneralItems\r\n };\r\n\r\n var url = function () {\r\n return $_db9o2scwjkmcwomp.getOrDie('URL');\r\n };\r\n var createObjectURL = function (blob) {\r\n return url().createObjectURL(blob);\r\n };\r\n var revokeObjectURL = function (u) {\r\n url().revokeObjectURL(u);\r\n };\r\n var $_e8tsx4dcjkmcwooe = {\r\n createObjectURL: createObjectURL,\r\n revokeObjectURL: revokeObjectURL\r\n };\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\r\n\r\n function XMLHttpRequest () {\r\n var f = $_db9o2scwjkmcwomp.getOrDie('XMLHttpRequest');\r\n return new f();\r\n }\r\n\r\n var noop = function () {\r\n };\r\n var pathJoin = function (path1, path2) {\r\n if (path1) {\r\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\r\n }\r\n return path2;\r\n };\r\n function Uploader (settings) {\r\n var defaultHandler = function (blobInfo, success, failure, progress) {\r\n var xhr, formData;\r\n xhr = new XMLHttpRequest();\r\n xhr.open('POST', settings.url);\r\n xhr.withCredentials = settings.credentials;\r\n xhr.upload.onprogress = function (e) {\r\n progress(e.loaded / e.total * 100);\r\n };\r\n xhr.onerror = function () {\r\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\r\n };\r\n xhr.onload = function () {\r\n var json;\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n failure('HTTP Error: ' + xhr.status);\r\n return;\r\n }\r\n json = JSON.parse(xhr.responseText);\r\n if (!json || typeof json.location !== 'string') {\r\n failure('Invalid JSON: ' + xhr.responseText);\r\n return;\r\n }\r\n success(pathJoin(settings.basePath, json.location));\r\n };\r\n formData = new FormData();\r\n formData.append('file', blobInfo.blob(), blobInfo.filename());\r\n xhr.send(formData);\r\n };\r\n var uploadBlob = function (blobInfo, handler) {\r\n return new global$1(function (resolve, reject) {\r\n try {\r\n handler(blobInfo, resolve, reject, noop);\r\n } catch (ex) {\r\n reject(ex.message);\r\n }\r\n });\r\n };\r\n var isDefaultHandler = function (handler) {\r\n return handler === defaultHandler;\r\n };\r\n var upload = function (blobInfo) {\r\n return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);\r\n };\r\n settings = global$2.extend({\r\n credentials: false,\r\n handler: defaultHandler\r\n }, settings);\r\n return { upload: upload };\r\n }\r\n\r\n var onFileInput = function (editor) {\r\n return function (evt) {\r\n var Throbber = global$5.get('Throbber');\r\n var rootControl = evt.control.rootControl;\r\n var throbber = new Throbber(rootControl.getEl());\r\n var file = evt.control.value();\r\n var blobUri = $_e8tsx4dcjkmcwooe.createObjectURL(file);\r\n var uploader = Uploader({\r\n url: $_gc1jdictjkmcwomd.getUploadUrl(editor),\r\n basePath: $_gc1jdictjkmcwomd.getUploadBasePath(editor),\r\n credentials: $_gc1jdictjkmcwomd.getUploadCredentials(editor),\r\n handler: $_gc1jdictjkmcwomd.getUploadHandler(editor)\r\n });\r\n var finalize = function () {\r\n throbber.hide();\r\n $_e8tsx4dcjkmcwooe.revokeObjectURL(blobUri);\r\n };\r\n throbber.show();\r\n return $_9v7cmwcujkmcwomi.blobToDataUri(file).then(function (dataUrl) {\r\n var blobInfo = editor.editorUpload.blobCache.create({\r\n blob: file,\r\n blobUri: blobUri,\r\n name: file.name ? file.name.replace(/\\.[^\\.]+$/, '') : null,\r\n base64: dataUrl.split(',')[1]\r\n });\r\n return uploader.upload(blobInfo).then(function (url) {\r\n var src = rootControl.find('#src');\r\n src.value(url);\r\n rootControl.find('tabpanel')[0].activateTab(0);\r\n src.fire('change');\r\n finalize();\r\n return url;\r\n });\r\n }).catch(function (err) {\r\n editor.windowManager.alert(err);\r\n finalize();\r\n });\r\n };\r\n };\r\n var acceptExts = '.jpg,.jpeg,.png,.gif';\r\n var makeTab$2 = function (editor) {\r\n return {\r\n title: 'Upload',\r\n type: 'form',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n padding: '20 20 20 20',\r\n items: [\r\n {\r\n type: 'container',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'center',\r\n spacing: 10,\r\n items: [\r\n {\r\n text: 'Browse for an image',\r\n type: 'browsebutton',\r\n accept: acceptExts,\r\n onchange: onFileInput(editor)\r\n },\r\n {\r\n text: 'OR',\r\n type: 'label'\r\n }\r\n ]\r\n },\r\n {\r\n text: 'Drop an image here',\r\n type: 'dropzone',\r\n accept: acceptExts,\r\n height: 100,\r\n onchange: onFileInput(editor)\r\n }\r\n ]\r\n };\r\n };\r\n var $_26ghgddbjkmcwooa = { makeTab: makeTab$2 };\r\n\r\n var curry = function (f) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = new Array(arguments.length - 1);\r\n for (var i = 1; i < arguments.length; i++)\r\n args[i - 1] = arguments[i];\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var newArgs = new Array(arguments.length);\r\n for (var j = 0; j < newArgs.length; j++)\r\n newArgs[j] = arguments[j];\r\n var all = args.concat(newArgs);\r\n return f.apply(null, all);\r\n };\r\n };\r\n\r\n var submitForm = function (editor, evt) {\r\n var win = evt.control.getRoot();\r\n $_14kdtjdajkmcwoo8.updateSize(win);\r\n editor.undoManager.transact(function () {\r\n var data = merge(readImageDataFromSelection(editor), win.toJSON());\r\n insertOrUpdateImage(editor, data);\r\n });\r\n editor.editorUpload.uploadImagesAuto();\r\n };\r\n function Dialog (editor) {\r\n function showDialog(imageList) {\r\n var data = readImageDataFromSelection(editor);\r\n var win, imageListCtrl;\r\n if (imageList) {\r\n imageListCtrl = {\r\n type: 'listbox',\r\n label: 'Image list',\r\n name: 'image-list',\r\n values: $_9v7cmwcujkmcwomi.buildListItems(imageList, function (item) {\r\n item.value = editor.convertURL(item.value || item.url, 'src');\r\n }, [{\r\n text: 'None',\r\n value: ''\r\n }]),\r\n value: data.src && editor.convertURL(data.src, 'src'),\r\n onselect: function (e) {\r\n var altCtrl = win.find('#alt');\r\n if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {\r\n altCtrl.value(e.control.text());\r\n }\r\n win.find('#src').value(e.control.value()).fire('change');\r\n },\r\n onPostRender: function () {\r\n imageListCtrl = this;\r\n }\r\n };\r\n }\r\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor) || $_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\r\n var body = [$_bpqbuud9jkmcwoo5.makeTab(editor, imageListCtrl)];\r\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor)) {\r\n body.push($_4qd61kd3jkmcwonl.makeTab(editor));\r\n }\r\n if ($_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\r\n body.push($_26ghgddbjkmcwooa.makeTab(editor));\r\n }\r\n win = editor.windowManager.open({\r\n title: 'Insert/edit image',\r\n data: data,\r\n bodyType: 'tabpanel',\r\n body: body,\r\n onSubmit: curry(submitForm, editor)\r\n });\r\n } else {\r\n win = editor.windowManager.open({\r\n title: 'Insert/edit image',\r\n data: data,\r\n body: $_bpqbuud9jkmcwoo5.getGeneralItems(editor, imageListCtrl),\r\n onSubmit: curry(submitForm, editor)\r\n });\r\n }\r\n $_14kdtjdajkmcwoo8.syncSize(win);\r\n }\r\n function open() {\r\n $_9v7cmwcujkmcwomi.createImageList(editor, showDialog);\r\n }\r\n return { open: open };\r\n }\r\n\r\n var register = function (editor) {\r\n editor.addCommand('mceImage', Dialog(editor).open);\r\n };\r\n var $_cwg86qcrjkmcwom6 = { register: register };\r\n\r\n var hasImageClass = function (node) {\r\n var className = node.attr('class');\r\n return className && /\\bimage\\b/.test(className);\r\n };\r\n var toggleContentEditableState = function (state) {\r\n return function (nodes) {\r\n var i = nodes.length, node;\r\n var toggleContentEditable = function (node) {\r\n node.attr('contenteditable', state ? 'true' : null);\r\n };\r\n while (i--) {\r\n node = nodes[i];\r\n if (hasImageClass(node)) {\r\n node.attr('contenteditable', state ? 'false' : null);\r\n global$2.each(node.getAll('figcaption'), toggleContentEditable);\r\n }\r\n }\r\n };\r\n };\r\n var setup = function (editor) {\r\n editor.on('preInit', function () {\r\n editor.parser.addNodeFilter('figure', toggleContentEditableState(true));\r\n editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));\r\n });\r\n };\r\n var $_8m7aavdhjkmcwooq = { setup: setup };\r\n\r\n var register$1 = function (editor) {\r\n editor.addButton('image', {\r\n icon: 'image',\r\n tooltip: 'Insert/edit image',\r\n onclick: Dialog(editor).open,\r\n stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'\r\n });\r\n editor.addMenuItem('image', {\r\n icon: 'image',\r\n text: 'Image',\r\n onclick: Dialog(editor).open,\r\n context: 'insert',\r\n prependToContext: true\r\n });\r\n };\r\n var $_2zobs0dijkmcwoos = { register: register$1 };\r\n\r\n global.add('image', function (editor) {\r\n $_8m7aavdhjkmcwooq.setup(editor);\r\n $_2zobs0dijkmcwoos.register(editor);\r\n $_cwg86qcrjkmcwom6.register(editor);\r\n });\r\n function Plugin () {\r\n }\r\n\r\n return Plugin;\r\n\r\n}());\r\n})();\r\n","(function () {\r\nvar modern = (function () {\r\n 'use strict';\r\n\r\n var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');\r\n\r\n var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\r\n\r\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\r\n\r\n var isBrandingEnabled = function (editor) {\r\n return editor.getParam('branding', true, 'boolean');\r\n };\r\n var hasMenubar = function (editor) {\r\n return getMenubar(editor) !== false;\r\n };\r\n var getMenubar = function (editor) {\r\n return editor.getParam('menubar');\r\n };\r\n var hasStatusbar = function (editor) {\r\n return editor.getParam('statusbar', true, 'boolean');\r\n };\r\n var getToolbarSize = function (editor) {\r\n return editor.getParam('toolbar_items_size');\r\n };\r\n var isReadOnly = function (editor) {\r\n return editor.getParam('readonly', false, 'boolean');\r\n };\r\n var getFixedToolbarContainer = function (editor) {\r\n return editor.getParam('fixed_toolbar_container');\r\n };\r\n var getInlineToolbarPositionHandler = function (editor) {\r\n return editor.getParam('inline_toolbar_position_handler');\r\n };\r\n var getMenu = function (editor) {\r\n return editor.getParam('menu');\r\n };\r\n var getRemovedMenuItems = function (editor) {\r\n return editor.getParam('removed_menuitems', '');\r\n };\r\n var getMinWidth = function (editor) {\r\n return editor.getParam('min_width', 100, 'number');\r\n };\r\n var getMinHeight = function (editor) {\r\n return editor.getParam('min_height', 100, 'number');\r\n };\r\n var getMaxWidth = function (editor) {\r\n return editor.getParam('max_width', 65535, 'number');\r\n };\r\n var getMaxHeight = function (editor) {\r\n return editor.getParam('max_height', 65535, 'number');\r\n };\r\n var isSkinDisabled = function (editor) {\r\n return editor.settings.skin === false;\r\n };\r\n var isInline = function (editor) {\r\n return editor.getParam('inline', false, 'boolean');\r\n };\r\n var getResize = function (editor) {\r\n var resize = editor.getParam('resize', 'vertical');\r\n if (resize === false) {\r\n return 'none';\r\n } else if (resize === 'both') {\r\n return 'both';\r\n } else {\r\n return 'vertical';\r\n }\r\n };\r\n var getSkinUrl = function (editor) {\r\n var settings = editor.settings;\r\n var skin = settings.skin;\r\n var skinUrl = settings.skin_url;\r\n if (skin !== false) {\r\n var skinName = skin ? skin : 'lightgray';\r\n if (skinUrl) {\r\n skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\r\n } else {\r\n skinUrl = global$1.baseURL + '/skins/' + skinName;\r\n }\r\n }\r\n return skinUrl;\r\n };\r\n var getIndexedToolbars = function (settings, defaultToolbar) {\r\n var toolbars = [];\r\n for (var i = 1; i < 10; i++) {\r\n var toolbar = settings['toolbar' + i];\r\n if (!toolbar) {\r\n break;\r\n }\r\n toolbars.push(toolbar);\r\n }\r\n var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];\r\n return toolbars.length > 0 ? toolbars : mainToolbar;\r\n };\r\n var getToolbars = function (editor) {\r\n var toolbar = editor.getParam('toolbar');\r\n var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';\r\n if (toolbar === false) {\r\n return [];\r\n } else if (global$2.isArray(toolbar)) {\r\n return global$2.grep(toolbar, function (toolbar) {\r\n return toolbar.length > 0;\r\n });\r\n } else {\r\n return getIndexedToolbars(editor.settings, defaultToolbar);\r\n }\r\n };\r\n\r\n var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\r\n\r\n var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\r\n\r\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');\r\n\r\n var fireSkinLoaded = function (editor) {\r\n return editor.fire('SkinLoaded');\r\n };\r\n var fireResizeEditor = function (editor) {\r\n return editor.fire('ResizeEditor');\r\n };\r\n var fireBeforeRenderUI = function (editor) {\r\n return editor.fire('BeforeRenderUI');\r\n };\r\n var $_1jkxpltzjkmcwsg4 = {\r\n fireSkinLoaded: fireSkinLoaded,\r\n fireResizeEditor: fireResizeEditor,\r\n fireBeforeRenderUI: fireBeforeRenderUI\r\n };\r\n\r\n var focus = function (panel, type) {\r\n return function () {\r\n var item = panel.find(type)[0];\r\n if (item) {\r\n item.focus(true);\r\n }\r\n };\r\n };\r\n var addKeys = function (editor, panel) {\r\n editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));\r\n editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));\r\n editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));\r\n panel.on('cancel', function () {\r\n editor.focus();\r\n });\r\n };\r\n var $_1mdekmu0jkmcwsg5 = { addKeys: addKeys };\r\n\r\n var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');\r\n\r\n var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');\r\n\r\n var noop = function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n };\r\n\r\n var compose = function (fa, fb) {\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n return fa(fb.apply(null, arguments));\r\n };\r\n };\r\n var constant = function (value) {\r\n return function () {\r\n return value;\r\n };\r\n };\r\n\r\n\r\n var curry = function (f) {\r\n var x = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n x[_i - 1] = arguments[_i];\r\n }\r\n var args = new Array(arguments.length - 1);\r\n for (var i = 1; i < arguments.length; i++)\r\n args[i - 1] = arguments[i];\r\n return function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n var newArgs = new Array(arguments.length);\r\n for (var j = 0; j < newArgs.length; j++)\r\n newArgs[j] = arguments[j];\r\n var all = args.concat(newArgs);\r\n return f.apply(null, all);\r\n };\r\n };\r\n\r\n\r\n\r\n\r\n var never = constant(false);\r\n var always = constant(true);\r\n\r\n var never$1 = never;\r\n var always$1 = always;\r\n var none = function () {\r\n return NONE;\r\n };\r\n var NONE = function () {\r\n var eq = function (o) {\r\n return o.isNone();\r\n };\r\n var call$$1 = function (thunk) {\r\n return thunk();\r\n };\r\n var id = function (n) {\r\n return n;\r\n };\r\n var noop$$1 = function () {\r\n };\r\n var nul = function () {\r\n return null;\r\n };\r\n var undef = function () {\r\n return undefined;\r\n };\r\n var me = {\r\n fold: function (n, s) {\r\n return n();\r\n },\r\n is: never$1,\r\n isSome: never$1,\r\n isNone: always$1,\r\n getOr: id,\r\n getOrThunk: call$$1,\r\n getOrDie: function (msg) {\r\n throw new Error(msg || 'error: getOrDie called on none.');\r\n },\r\n getOrNull: nul,\r\n getOrUndefined: undef,\r\n or: id,\r\n orThunk: call$$1,\r\n map: none,\r\n ap: none,\r\n each: noop$$1,\r\n bind: none,\r\n flatten: none,\r\n exists: never$1,\r\n forall: always$1,\r\n filter: none,\r\n equals: eq,\r\n equals_: eq,\r\n toArray: function () {\r\n return [];\r\n },\r\n toString: constant('none()')\r\n };\r\n if (Object.freeze)\r\n Object.freeze(me);\r\n return me;\r\n }();\r\n var some = function (a) {\r\n var constant_a = function () {\r\n return a;\r\n };\r\n var self = function () {\r\n return me;\r\n };\r\n var map = function (f) {\r\n return some(f(a));\r\n };\r\n var bind = function (f) {\r\n return f(a);\r\n };\r\n var me = {\r\n fold: function (n, s) {\r\n return s(a);\r\n },\r\n is: function (v) {\r\n return a === v;\r\n },\r\n isSome: always$1,\r\n isNone: never$1,\r\n getOr: constant_a,\r\n getOrThunk: constant_a,\r\n getOrDie: constant_a,\r\n getOrNull: constant_a,\r\n getOrUndefined: constant_a,\r\n or: self,\r\n orThunk: self,\r\n map: map,\r\n ap: function (optfab) {\r\n return optfab.fold(none, function (fab) {\r\n return some(fab(a));\r\n });\r\n },\r\n each: function (f) {\r\n f(a);\r\n },\r\n bind: bind,\r\n flatten: constant_a,\r\n exists: bind,\r\n forall: bind,\r\n filter: function (f) {\r\n return f(a) ? me : NONE;\r\n },\r\n equals: function (o) {\r\n return o.is(a);\r\n },\r\n equals_: function (o, elementEq) {\r\n return o.fold(never$1, function (b) {\r\n return elementEq(a, b);\r\n });\r\n },\r\n toArray: function () {\r\n return [a];\r\n },\r\n toString: function () {\r\n return 'some(' + a + ')';\r\n }\r\n };\r\n return me;\r\n };\r\n var from = function (value) {\r\n return value === null || value === undefined ? NONE : some(value);\r\n };\r\n var Option = {\r\n some: some,\r\n none: none,\r\n from: from\r\n };\r\n\r\n var getUiContainerDelta = function (ctrl) {\r\n var uiContainer = getUiContainer(ctrl);\r\n if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {\r\n var containerPos = global$3.DOM.getPos(uiContainer);\r\n var dx = uiContainer.scrollLeft - containerPos.x;\r\n var dy = uiContainer.scrollTop - containerPos.y;\r\n return Option.some({\r\n x: dx,\r\n y: dy\r\n });\r\n } else {\r\n return Option.none();\r\n }\r\n };\r\n var setUiContainer = function (editor, ctrl) {\r\n var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];\r\n ctrl.getRoot().uiContainer = uiContainer;\r\n };\r\n var getUiContainer = function (ctrl) {\r\n return ctrl ? ctrl.getRoot().uiContainer : null;\r\n };\r\n var inheritUiContainer = function (fromCtrl, toCtrl) {\r\n return toCtrl.uiContainer = getUiContainer(fromCtrl);\r\n };\r\n var $_5kmlp5u4jkmcwsge = {\r\n getUiContainerDelta: getUiContainerDelta,\r\n setUiContainer: setUiContainer,\r\n getUiContainer: getUiContainer,\r\n inheritUiContainer: inheritUiContainer\r\n };\r\n\r\n var createToolbar = function (editor, items, size) {\r\n var toolbarItems = [];\r\n var buttonGroup;\r\n if (!items) {\r\n return;\r\n }\r\n global$2.each(items.split(/[ ,]/), function (item) {\r\n var itemName;\r\n var bindSelectorChanged = function () {\r\n var selection = editor.selection;\r\n if (item.settings.stateSelector) {\r\n selection.selectorChanged(item.settings.stateSelector, function (state) {\r\n item.active(state);\r\n }, true);\r\n }\r\n if (item.settings.disabledStateSelector) {\r\n selection.selectorChanged(item.settings.disabledStateSelector, function (state) {\r\n item.disabled(state);\r\n });\r\n }\r\n };\r\n if (item === '|') {\r\n buttonGroup = null;\r\n } else {\r\n if (!buttonGroup) {\r\n buttonGroup = {\r\n type: 'buttongroup',\r\n items: []\r\n };\r\n toolbarItems.push(buttonGroup);\r\n }\r\n if (editor.buttons[item]) {\r\n itemName = item;\r\n item = editor.buttons[itemName];\r\n if (typeof item === 'function') {\r\n item = item();\r\n }\r\n item.type = item.type || 'button';\r\n item.size = size;\r\n item = global$4.create(item);\r\n buttonGroup.items.push(item);\r\n if (editor.initialized) {\r\n bindSelectorChanged();\r\n } else {\r\n editor.on('init', bindSelectorChanged);\r\n }\r\n }\r\n }\r\n });\r\n return {\r\n type: 'toolbar',\r\n layout: 'flow',\r\n items: toolbarItems\r\n };\r\n };\r\n var createToolbars = function (editor, size) {\r\n var toolbars = [];\r\n var addToolbar = function (items) {\r\n if (items) {\r\n toolbars.push(createToolbar(editor, items, size));\r\n }\r\n };\r\n global$2.each(getToolbars(editor), function (toolbar) {\r\n addToolbar(toolbar);\r\n });\r\n if (toolbars.length) {\r\n return {\r\n type: 'panel',\r\n layout: 'stack',\r\n classes: 'toolbar-grp',\r\n ariaRoot: true,\r\n ariaRemember: true,\r\n items: toolbars\r\n };\r\n }\r\n };\r\n var $_5g1hacu7jkmcwsgn = {\r\n createToolbar: createToolbar,\r\n createToolbars: createToolbars\r\n };\r\n\r\n var DOM = global$3.DOM;\r\n var toClientRect = function (geomRect) {\r\n return {\r\n left: geomRect.x,\r\n top: geomRect.y,\r\n width: geomRect.w,\r\n height: geomRect.h,\r\n right: geomRect.x + geomRect.w,\r\n bottom: geomRect.y + geomRect.h\r\n };\r\n };\r\n var hideAllFloatingPanels = function (editor) {\r\n global$2.each(editor.contextToolbars, function (toolbar) {\r\n if (toolbar.panel) {\r\n toolbar.panel.hide();\r\n }\r\n });\r\n };\r\n var movePanelTo = function (panel, pos) {\r\n panel.moveTo(pos.left, pos.top);\r\n };\r\n var togglePositionClass = function (panel, relPos, predicate) {\r\n relPos = relPos ? relPos.substr(0, 2) : '';\r\n global$2.each({\r\n t: 'down',\r\n b: 'up'\r\n }, function (cls, pos) {\r\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));\r\n });\r\n global$2.each({\r\n l: 'left',\r\n r: 'right'\r\n }, function (cls, pos) {\r\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));\r\n });\r\n };\r\n var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {\r\n panelRect = toClientRect({\r\n x: x,\r\n y: y,\r\n w: panelRect.w,\r\n h: panelRect.h\r\n });\r\n if (handler) {\r\n panelRect = handler({\r\n elementRect: toClientRect(elementRect),\r\n contentAreaRect: toClientRect(contentAreaRect),\r\n panelRect: panelRect\r\n });\r\n }\r\n return panelRect;\r\n };\r\n var addContextualToolbars = function (editor) {\r\n var scrollContainer;\r\n var getContextToolbars = function () {\r\n return editor.contextToolbars || [];\r\n };\r\n var getElementRect = function (elm) {\r\n var pos, targetRect, root;\r\n pos = DOM.getPos(editor.getContentAreaContainer());\r\n targetRect = editor.dom.getRect(elm);\r\n root = editor.dom.getRoot();\r\n if (root.nodeName === 'BODY') {\r\n targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;\r\n targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;\r\n }\r\n targetRect.x += pos.x;\r\n targetRect.y += pos.y;\r\n return targetRect;\r\n };\r\n var reposition = function (match, shouldShow) {\r\n var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;\r\n var handler = getInlineToolbarPositionHandler(editor);\r\n if (editor.removed) {\r\n return;\r\n }\r\n if (!match || !match.toolbar.panel) {\r\n hideAllFloatingPanels(editor);\r\n return;\r\n }\r\n testPositions = [\r\n 'bc-tc',\r\n 'tc-bc',\r\n 'tl-bl',\r\n 'bl-tl',\r\n 'tr-br',\r\n 'br-tr'\r\n ];\r\n panel = match.toolbar.panel;\r\n if (shouldShow) {\r\n panel.show();\r\n }\r\n elementRect = getElementRect(match.element);\r\n panelRect = DOM.getRect(panel.getEl());\r\n contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());\r\n var delta = $_5kmlp5u4jkmcwsge.getUiContainerDelta(panel).getOr({\r\n x: 0,\r\n y: 0\r\n });\r\n elementRect.x += delta.x;\r\n elementRect.y += delta.y;\r\n panelRect.x += delta.x;\r\n panelRect.y += delta.y;\r\n contentAreaRect.x += delta.x;\r\n contentAreaRect.y += delta.y;\r\n smallElementWidthThreshold = 25;\r\n if (DOM.getStyle(match.element, 'display', true) !== 'inline') {\r\n var clientRect = match.element.getBoundingClientRect();\r\n elementRect.w = clientRect.width;\r\n elementRect.h = clientRect.height;\r\n }\r\n if (!editor.inline) {\r\n contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;\r\n }\r\n if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {\r\n elementRect = global$6.inflate(elementRect, 0, 8);\r\n }\r\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);\r\n elementRect = global$6.clamp(elementRect, contentAreaRect);\r\n if (relPos) {\r\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\r\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\r\n } else {\r\n contentAreaRect.h += panelRect.h;\r\n elementRect = global$6.intersect(contentAreaRect, elementRect);\r\n if (elementRect) {\r\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [\r\n 'bc-tc',\r\n 'bl-tl',\r\n 'br-tr'\r\n ]);\r\n if (relPos) {\r\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\r\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\r\n } else {\r\n movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));\r\n }\r\n } else {\r\n panel.hide();\r\n }\r\n }\r\n togglePositionClass(panel, relPos, function (pos1, pos2) {\r\n return pos1 === pos2;\r\n });\r\n };\r\n var repositionHandler = function (show) {\r\n return function () {\r\n var execute = function () {\r\n if (editor.selection) {\r\n reposition(findFrontMostMatch(editor.selection.getNode()), show);\r\n }\r\n };\r\n global$7.requestAnimationFrame(execute);\r\n };\r\n };\r\n var bindScrollEvent = function (panel) {\r\n if (!scrollContainer) {\r\n var reposition_1 = repositionHandler(true);\r\n var uiContainer_1 = $_5kmlp5u4jkmcwsge.getUiContainer(panel);\r\n scrollContainer = editor.selection.getScrollContainer() || editor.getWin();\r\n DOM.bind(scrollContainer, 'scroll', reposition_1);\r\n DOM.bind(uiContainer_1, 'scroll', reposition_1);\r\n editor.on('remove', function () {\r\n DOM.unbind(scrollContainer, 'scroll', reposition_1);\r\n DOM.unbind(uiContainer_1, 'scroll', reposition_1);\r\n });\r\n }\r\n };\r\n var showContextToolbar = function (match) {\r\n var panel;\r\n if (match.toolbar.panel) {\r\n match.toolbar.panel.show();\r\n reposition(match);\r\n return;\r\n }\r\n panel = global$4.create({\r\n type: 'floatpanel',\r\n role: 'dialog',\r\n classes: 'tinymce tinymce-inline arrow',\r\n ariaLabel: 'Inline toolbar',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n autohide: false,\r\n autofix: true,\r\n fixed: true,\r\n border: 1,\r\n items: $_5g1hacu7jkmcwsgn.createToolbar(editor, match.toolbar.items),\r\n oncancel: function () {\r\n editor.focus();\r\n }\r\n });\r\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\r\n bindScrollEvent(panel);\r\n match.toolbar.panel = panel;\r\n panel.renderTo().reflow();\r\n reposition(match);\r\n };\r\n var hideAllContextToolbars = function () {\r\n global$2.each(getContextToolbars(), function (toolbar) {\r\n if (toolbar.panel) {\r\n toolbar.panel.hide();\r\n }\r\n });\r\n };\r\n var findFrontMostMatch = function (targetElm) {\r\n var i, y, parentsAndSelf;\r\n var toolbars = getContextToolbars();\r\n parentsAndSelf = editor.$(targetElm).parents().add(targetElm);\r\n for (i = parentsAndSelf.length - 1; i >= 0; i--) {\r\n for (y = toolbars.length - 1; y >= 0; y--) {\r\n if (toolbars[y].predicate(parentsAndSelf[i])) {\r\n return {\r\n toolbar: toolbars[y],\r\n element: parentsAndSelf[i]\r\n };\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n editor.on('click keyup setContent ObjectResized', function (e) {\r\n if (e.type === 'setcontent' && !e.selection) {\r\n return;\r\n }\r\n global$7.setEditorTimeout(editor, function () {\r\n var match;\r\n match = findFrontMostMatch(editor.selection.getNode());\r\n if (match) {\r\n hideAllContextToolbars();\r\n showContextToolbar(match);\r\n } else {\r\n hideAllContextToolbars();\r\n }\r\n });\r\n });\r\n editor.on('blur hide contextmenu', hideAllContextToolbars);\r\n editor.on('ObjectResizeStart', function () {\r\n var match = findFrontMostMatch(editor.selection.getNode());\r\n if (match && match.toolbar.panel) {\r\n match.toolbar.panel.hide();\r\n }\r\n });\r\n editor.on('ResizeEditor ResizeWindow', repositionHandler(true));\r\n editor.on('nodeChange', repositionHandler(false));\r\n editor.on('remove', function () {\r\n global$2.each(getContextToolbars(), function (toolbar) {\r\n if (toolbar.panel) {\r\n toolbar.panel.remove();\r\n }\r\n });\r\n editor.contextToolbars = {};\r\n });\r\n editor.shortcuts.add('ctrl+shift+e > ctrl+shift+p', '', function () {\r\n var match = findFrontMostMatch(editor.selection.getNode());\r\n if (match && match.toolbar.panel) {\r\n match.toolbar.panel.items()[0].focus();\r\n }\r\n });\r\n };\r\n var $_44ggy0u1jkmcwsg7 = { addContextualToolbars: addContextualToolbars };\r\n\r\n var typeOf = function (x) {\r\n if (x === null)\r\n return 'null';\r\n var t = typeof x;\r\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\r\n return 'array';\r\n if (t === 'object' && String.prototype.isPrototypeOf(x))\r\n return 'string';\r\n return t;\r\n };\r\n var isType = function (type) {\r\n return function (value) {\r\n return typeOf(value) === type;\r\n };\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n var isFunction = isType('function');\r\n var isNumber = isType('number');\r\n\r\n var rawIndexOf = function () {\r\n var pIndexOf = Array.prototype.indexOf;\r\n var fastIndex = function (xs, x) {\r\n return pIndexOf.call(xs, x);\r\n };\r\n var slowIndex = function (xs, x) {\r\n return slowIndexOf(xs, x);\r\n };\r\n return pIndexOf === undefined ? slowIndex : fastIndex;\r\n }();\r\n var indexOf = function (xs, x) {\r\n var r = rawIndexOf(xs, x);\r\n return r === -1 ? Option.none() : Option.some(r);\r\n };\r\n\r\n var exists = function (xs, pred) {\r\n return findIndex(xs, pred).isSome();\r\n };\r\n\r\n\r\n var map = function (xs, f) {\r\n var len = xs.length;\r\n var r = new Array(len);\r\n for (var i = 0; i < len; i++) {\r\n var x = xs[i];\r\n r[i] = f(x, i, xs);\r\n }\r\n return r;\r\n };\r\n var each = function (xs, f) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n f(x, i, xs);\r\n }\r\n };\r\n\r\n\r\n var filter = function (xs, pred) {\r\n var r = [];\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n r.push(x);\r\n }\r\n }\r\n return r;\r\n };\r\n\r\n\r\n var foldl = function (xs, f, acc) {\r\n each(xs, function (x) {\r\n acc = f(acc, x);\r\n });\r\n return acc;\r\n };\r\n var find = function (xs, pred) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n return Option.some(x);\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var findIndex = function (xs, pred) {\r\n for (var i = 0, len = xs.length; i < len; i++) {\r\n var x = xs[i];\r\n if (pred(x, i, xs)) {\r\n return Option.some(i);\r\n }\r\n }\r\n return Option.none();\r\n };\r\n var slowIndexOf = function (xs, x) {\r\n for (var i = 0, len = xs.length; i < len; ++i) {\r\n if (xs[i] === x) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n var push = Array.prototype.push;\r\n var flatten = function (xs) {\r\n var r = [];\r\n for (var i = 0, len = xs.length; i < len; ++i) {\r\n if (!Array.prototype.isPrototypeOf(xs[i]))\r\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\r\n push.apply(r, xs[i]);\r\n }\r\n return r;\r\n };\r\n\r\n\r\n\r\n var slice = Array.prototype.slice;\r\n var reverse = function (xs) {\r\n var r = slice.call(xs, 0);\r\n r.reverse();\r\n return r;\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\r\n return slice.call(x);\r\n };\r\n\r\n var defaultMenus = {\r\n file: {\r\n title: 'File',\r\n items: 'newdocument restoredraft | preview | print'\r\n },\r\n edit: {\r\n title: 'Edit',\r\n items: 'undo redo | cut copy paste pastetext | selectall'\r\n },\r\n view: {\r\n title: 'View',\r\n items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'\r\n },\r\n insert: {\r\n title: 'Insert',\r\n items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'\r\n },\r\n format: {\r\n title: 'Format',\r\n items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'\r\n },\r\n tools: {\r\n title: 'Tools',\r\n items: 'spellchecker spellcheckerlanguage | a11ycheck code'\r\n },\r\n table: { title: 'Table' },\r\n help: { title: 'Help' }\r\n };\r\n var delimiterMenuNamePair = function () {\r\n return {\r\n name: '|',\r\n item: { text: '|' }\r\n };\r\n };\r\n var createMenuNameItemPair = function (name, item) {\r\n var menuItem = item ? {\r\n name: name,\r\n item: item\r\n } : null;\r\n return name === '|' ? delimiterMenuNamePair() : menuItem;\r\n };\r\n var hasItemName = function (namedMenuItems, name) {\r\n return findIndex(namedMenuItems, function (namedMenuItem) {\r\n return namedMenuItem.name === name;\r\n }).isSome();\r\n };\r\n var isSeparator = function (namedMenuItem) {\r\n return namedMenuItem && namedMenuItem.item.text === '|';\r\n };\r\n var cleanupMenu = function (namedMenuItems, removedMenuItems) {\r\n var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {\r\n return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;\r\n });\r\n var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {\r\n return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);\r\n });\r\n return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {\r\n return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;\r\n });\r\n };\r\n var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {\r\n var menuButton, menu, namedMenuItems, isUserDefined;\r\n if (menus) {\r\n menu = menus[context];\r\n isUserDefined = true;\r\n } else {\r\n menu = defaultMenus[context];\r\n }\r\n if (menu) {\r\n menuButton = { text: menu.title };\r\n namedMenuItems = [];\r\n global$2.each((menu.items || '').split(/[ ,]/), function (name) {\r\n var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);\r\n if (namedMenuItem) {\r\n namedMenuItems.push(namedMenuItem);\r\n }\r\n });\r\n if (!isUserDefined) {\r\n global$2.each(editorMenuItems, function (item, name) {\r\n if (item.context === context && !hasItemName(namedMenuItems, name)) {\r\n if (item.separator === 'before') {\r\n namedMenuItems.push(delimiterMenuNamePair());\r\n }\r\n if (item.prependToContext) {\r\n namedMenuItems.unshift(createMenuNameItemPair(name, item));\r\n } else {\r\n namedMenuItems.push(createMenuNameItemPair(name, item));\r\n }\r\n if (item.separator === 'after') {\r\n namedMenuItems.push(delimiterMenuNamePair());\r\n }\r\n }\r\n });\r\n }\r\n menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {\r\n return menuItem.item;\r\n });\r\n if (!menuButton.menu.length) {\r\n return null;\r\n }\r\n }\r\n return menuButton;\r\n };\r\n var getDefaultMenubar = function (editor) {\r\n var name;\r\n var defaultMenuBar = [];\r\n var menu = getMenu(editor);\r\n if (menu) {\r\n for (name in menu) {\r\n defaultMenuBar.push(name);\r\n }\r\n } else {\r\n for (name in defaultMenus) {\r\n defaultMenuBar.push(name);\r\n }\r\n }\r\n return defaultMenuBar;\r\n };\r\n var createMenuButtons = function (editor) {\r\n var menuButtons = [];\r\n var defaultMenuBar = getDefaultMenubar(editor);\r\n var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));\r\n var menubar = getMenubar(editor);\r\n var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;\r\n for (var i = 0; i < enabledMenuNames.length; i++) {\r\n var menuItems = enabledMenuNames[i];\r\n var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);\r\n if (menu) {\r\n menuButtons.push(menu);\r\n }\r\n }\r\n return menuButtons;\r\n };\r\n var $_3ke8tlu8jkmcwsgq = { createMenuButtons: createMenuButtons };\r\n\r\n var DOM$1 = global$3.DOM;\r\n var getSize = function (elm) {\r\n return {\r\n width: elm.clientWidth,\r\n height: elm.clientHeight\r\n };\r\n };\r\n var resizeTo = function (editor, width, height) {\r\n var containerElm, iframeElm, containerSize, iframeSize;\r\n containerElm = editor.getContainer();\r\n iframeElm = editor.getContentAreaContainer().firstChild;\r\n containerSize = getSize(containerElm);\r\n iframeSize = getSize(iframeElm);\r\n if (width !== null) {\r\n width = Math.max(getMinWidth(editor), width);\r\n width = Math.min(getMaxWidth(editor), width);\r\n DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));\r\n DOM$1.setStyle(iframeElm, 'width', width);\r\n }\r\n height = Math.max(getMinHeight(editor), height);\r\n height = Math.min(getMaxHeight(editor), height);\r\n DOM$1.setStyle(iframeElm, 'height', height);\r\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\r\n };\r\n var resizeBy = function (editor, dw, dh) {\r\n var elm = editor.getContentAreaContainer();\r\n resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);\r\n };\r\n var $_focm2tubjkmcwsh5 = {\r\n resizeTo: resizeTo,\r\n resizeBy: resizeBy\r\n };\r\n\r\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\r\n\r\n var api = function (elm) {\r\n return {\r\n element: function () {\r\n return elm;\r\n }\r\n };\r\n };\r\n var trigger = function (sidebar, panel, callbackName) {\r\n var callback = sidebar.settings[callbackName];\r\n if (callback) {\r\n callback(api(panel.getEl('body')));\r\n }\r\n };\r\n var hidePanels = function (name, container, sidebars) {\r\n global$2.each(sidebars, function (sidebar) {\r\n var panel = container.items().filter('#' + sidebar.name)[0];\r\n if (panel && panel.visible() && sidebar.name !== name) {\r\n trigger(sidebar, panel, 'onhide');\r\n panel.visible(false);\r\n }\r\n });\r\n };\r\n var deactivateButtons = function (toolbar) {\r\n toolbar.items().each(function (ctrl) {\r\n ctrl.active(false);\r\n });\r\n };\r\n var findSidebar = function (sidebars, name) {\r\n return global$2.grep(sidebars, function (sidebar) {\r\n return sidebar.name === name;\r\n })[0];\r\n };\r\n var showPanel = function (editor, name, sidebars) {\r\n return function (e) {\r\n var btnCtrl = e.control;\r\n var container = btnCtrl.parents().filter('panel')[0];\r\n var panel = container.find('#' + name)[0];\r\n var sidebar = findSidebar(sidebars, name);\r\n hidePanels(name, container, sidebars);\r\n deactivateButtons(btnCtrl.parent());\r\n if (panel && panel.visible()) {\r\n trigger(sidebar, panel, 'onhide');\r\n panel.hide();\r\n btnCtrl.active(false);\r\n } else {\r\n if (panel) {\r\n panel.show();\r\n trigger(sidebar, panel, 'onshow');\r\n } else {\r\n panel = global$4.create({\r\n type: 'container',\r\n name: name,\r\n layout: 'stack',\r\n classes: 'sidebar-panel',\r\n html: ''\r\n });\r\n container.prepend(panel);\r\n trigger(sidebar, panel, 'onrender');\r\n trigger(sidebar, panel, 'onshow');\r\n }\r\n btnCtrl.active(true);\r\n }\r\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\r\n };\r\n };\r\n var isModernBrowser = function () {\r\n return !global$8.ie || global$8.ie >= 11;\r\n };\r\n var hasSidebar = function (editor) {\r\n return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;\r\n };\r\n var createSidebar = function (editor) {\r\n var buttons = global$2.map(editor.sidebars, function (sidebar) {\r\n var settings = sidebar.settings;\r\n return {\r\n type: 'button',\r\n icon: settings.icon,\r\n image: settings.image,\r\n tooltip: settings.tooltip,\r\n onclick: showPanel(editor, sidebar.name, editor.sidebars)\r\n };\r\n });\r\n return {\r\n type: 'panel',\r\n name: 'sidebar',\r\n layout: 'stack',\r\n classes: 'sidebar',\r\n items: [{\r\n type: 'toolbar',\r\n layout: 'stack',\r\n classes: 'sidebar-toolbar',\r\n items: buttons\r\n }]\r\n };\r\n };\r\n var $_93h32bucjkmcwsh7 = {\r\n hasSidebar: hasSidebar,\r\n createSidebar: createSidebar\r\n };\r\n\r\n var fireSkinLoaded$1 = function (editor) {\r\n var done = function () {\r\n editor._skinLoaded = true;\r\n $_1jkxpltzjkmcwsg4.fireSkinLoaded(editor);\r\n };\r\n return function () {\r\n if (editor.initialized) {\r\n done();\r\n } else {\r\n editor.on('init', done);\r\n }\r\n };\r\n };\r\n var $_2tsyb2uejkmcwsha = { fireSkinLoaded: fireSkinLoaded$1 };\r\n\r\n var DOM$2 = global$3.DOM;\r\n var switchMode = function (panel) {\r\n return function (e) {\r\n panel.find('*').disabled(e.mode === 'readonly');\r\n };\r\n };\r\n var editArea = function (border) {\r\n return {\r\n type: 'panel',\r\n name: 'iframe',\r\n layout: 'stack',\r\n classes: 'edit-area',\r\n border: border,\r\n html: ''\r\n };\r\n };\r\n var editAreaContainer = function (editor) {\r\n return {\r\n type: 'panel',\r\n layout: 'stack',\r\n classes: 'edit-aria-container',\r\n border: '1 0 0 0',\r\n items: [\r\n editArea('0'),\r\n $_93h32bucjkmcwsh7.createSidebar(editor)\r\n ]\r\n };\r\n };\r\n var render = function (editor, theme, args) {\r\n var panel, resizeHandleCtrl, startSize;\r\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\r\n DOM$2.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\r\n } else {\r\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\r\n }\r\n panel = theme.panel = global$4.create({\r\n type: 'panel',\r\n role: 'application',\r\n classes: 'tinymce',\r\n style: 'visibility: hidden',\r\n layout: 'stack',\r\n border: 1,\r\n items: [\r\n {\r\n type: 'container',\r\n classes: 'top-part',\r\n items: [\r\n hasMenubar(editor) === false ? null : {\r\n type: 'menubar',\r\n border: '0 0 1 0',\r\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\r\n },\r\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\r\n ]\r\n },\r\n $_93h32bucjkmcwsh7.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')\r\n ]\r\n });\r\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\r\n if (getResize(editor) !== 'none') {\r\n resizeHandleCtrl = {\r\n type: 'resizehandle',\r\n direction: getResize(editor),\r\n onResizeStart: function () {\r\n var elm = editor.getContentAreaContainer().firstChild;\r\n startSize = {\r\n width: elm.clientWidth,\r\n height: elm.clientHeight\r\n };\r\n },\r\n onResize: function (e) {\r\n if (getResize(editor) === 'both') {\r\n $_focm2tubjkmcwsh5.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);\r\n } else {\r\n $_focm2tubjkmcwsh5.resizeTo(editor, null, startSize.height + e.deltaY);\r\n }\r\n }\r\n };\r\n }\r\n if (hasStatusbar(editor)) {\r\n var linkHtml = 'tinymce';\r\n var html = global$5.translate([\r\n 'Powered by {0}',\r\n linkHtml\r\n ]);\r\n var brandingLabel = isBrandingEnabled(editor) ? {\r\n type: 'label',\r\n classes: 'branding',\r\n html: ' ' + html\r\n } : null;\r\n panel.add({\r\n type: 'panel',\r\n name: 'statusbar',\r\n classes: 'statusbar',\r\n layout: 'flow',\r\n border: '1 0 0 0',\r\n ariaRoot: true,\r\n items: [\r\n {\r\n type: 'elementpath',\r\n editor: editor\r\n },\r\n resizeHandleCtrl,\r\n brandingLabel\r\n ]\r\n });\r\n }\r\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\r\n editor.on('SwitchMode', switchMode(panel));\r\n panel.renderBefore(args.targetNode).reflow();\r\n if (isReadOnly(editor)) {\r\n editor.setMode('readonly');\r\n }\r\n if (args.width) {\r\n DOM$2.setStyle(panel.getEl(), 'width', args.width);\r\n }\r\n editor.on('remove', function () {\r\n panel.remove();\r\n panel = null;\r\n });\r\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\r\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\r\n return {\r\n iframeContainer: panel.find('#iframe')[0].getEl(),\r\n editorContainer: panel.getEl()\r\n };\r\n };\r\n var $_9mz4sntvjkmcwsft = { render: render };\r\n\r\n var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\r\n\r\n var count = 0;\r\n var funcs = {\r\n id: function () {\r\n return 'mceu_' + count++;\r\n },\r\n create: function (name$$1, attrs, children) {\r\n var elm = document.createElement(name$$1);\r\n global$3.DOM.setAttribs(elm, attrs);\r\n if (typeof children === 'string') {\r\n elm.innerHTML = children;\r\n } else {\r\n global$2.each(children, function (child) {\r\n if (child.nodeType) {\r\n elm.appendChild(child);\r\n }\r\n });\r\n }\r\n return elm;\r\n },\r\n createFragment: function (html) {\r\n return global$3.DOM.createFragment(html);\r\n },\r\n getWindowSize: function () {\r\n return global$3.DOM.getViewPort();\r\n },\r\n getSize: function (elm) {\r\n var width, height;\r\n if (elm.getBoundingClientRect) {\r\n var rect = elm.getBoundingClientRect();\r\n width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);\r\n height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);\r\n } else {\r\n width = elm.offsetWidth;\r\n height = elm.offsetHeight;\r\n }\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n },\r\n getPos: function (elm, root) {\r\n return global$3.DOM.getPos(elm, root || funcs.getContainer());\r\n },\r\n getContainer: function () {\r\n return global$8.container ? global$8.container : document.body;\r\n },\r\n getViewPort: function (win) {\r\n return global$3.DOM.getViewPort(win);\r\n },\r\n get: function (id) {\r\n return document.getElementById(id);\r\n },\r\n addClass: function (elm, cls) {\r\n return global$3.DOM.addClass(elm, cls);\r\n },\r\n removeClass: function (elm, cls) {\r\n return global$3.DOM.removeClass(elm, cls);\r\n },\r\n hasClass: function (elm, cls) {\r\n return global$3.DOM.hasClass(elm, cls);\r\n },\r\n toggleClass: function (elm, cls, state) {\r\n return global$3.DOM.toggleClass(elm, cls, state);\r\n },\r\n css: function (elm, name$$1, value) {\r\n return global$3.DOM.setStyle(elm, name$$1, value);\r\n },\r\n getRuntimeStyle: function (elm, name$$1) {\r\n return global$3.DOM.getStyle(elm, name$$1, true);\r\n },\r\n on: function (target, name$$1, callback, scope) {\r\n return global$3.DOM.bind(target, name$$1, callback, scope);\r\n },\r\n off: function (target, name$$1, callback) {\r\n return global$3.DOM.unbind(target, name$$1, callback);\r\n },\r\n fire: function (target, name$$1, args) {\r\n return global$3.DOM.fire(target, name$$1, args);\r\n },\r\n innerHtml: function (elm, html) {\r\n global$3.DOM.setHTML(elm, html);\r\n }\r\n };\r\n\r\n var isStatic = function (elm) {\r\n return funcs.getRuntimeStyle(elm, 'position') === 'static';\r\n };\r\n var isFixed = function (ctrl) {\r\n return ctrl.state.get('fixed');\r\n };\r\n function calculateRelativePosition(ctrl, targetElm, rel) {\r\n var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;\r\n viewport = getWindowViewPort();\r\n pos = funcs.getPos(targetElm, $_5kmlp5u4jkmcwsge.getUiContainer(ctrl));\r\n x = pos.x;\r\n y = pos.y;\r\n if (isFixed(ctrl) && isStatic(document.body)) {\r\n x -= viewport.x;\r\n y -= viewport.y;\r\n }\r\n ctrlElm = ctrl.getEl();\r\n size = funcs.getSize(ctrlElm);\r\n selfW = size.width;\r\n selfH = size.height;\r\n size = funcs.getSize(targetElm);\r\n targetW = size.width;\r\n targetH = size.height;\r\n rel = (rel || '').split('');\r\n if (rel[0] === 'b') {\r\n y += targetH;\r\n }\r\n if (rel[1] === 'r') {\r\n x += targetW;\r\n }\r\n if (rel[0] === 'c') {\r\n y += Math.round(targetH / 2);\r\n }\r\n if (rel[1] === 'c') {\r\n x += Math.round(targetW / 2);\r\n }\r\n if (rel[3] === 'b') {\r\n y -= selfH;\r\n }\r\n if (rel[4] === 'r') {\r\n x -= selfW;\r\n }\r\n if (rel[3] === 'c') {\r\n y -= Math.round(selfH / 2);\r\n }\r\n if (rel[4] === 'c') {\r\n x -= Math.round(selfW / 2);\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n w: selfW,\r\n h: selfH\r\n };\r\n }\r\n var getUiContainerViewPort = function (customUiContainer) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n w: customUiContainer.scrollWidth - 1,\r\n h: customUiContainer.scrollHeight - 1\r\n };\r\n };\r\n var getWindowViewPort = function () {\r\n var win = window;\r\n var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);\r\n var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);\r\n var w = win.innerWidth || document.documentElement.clientWidth;\r\n var h = win.innerHeight || document.documentElement.clientHeight;\r\n return {\r\n x: x,\r\n y: y,\r\n w: x + w,\r\n h: y + h\r\n };\r\n };\r\n var getViewPortRect = function (ctrl) {\r\n var customUiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(ctrl);\r\n return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();\r\n };\r\n var $_77p0ikukjkmcwsie = {\r\n testMoveRel: function (elm, rels) {\r\n var viewPortRect = getViewPortRect(this);\r\n for (var i = 0; i < rels.length; i++) {\r\n var pos = calculateRelativePosition(this, elm, rels[i]);\r\n if (isFixed(this)) {\r\n if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {\r\n return rels[i];\r\n }\r\n } else {\r\n if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {\r\n return rels[i];\r\n }\r\n }\r\n }\r\n return rels[0];\r\n },\r\n moveRel: function (elm, rel) {\r\n if (typeof rel !== 'string') {\r\n rel = this.testMoveRel(elm, rel);\r\n }\r\n var pos = calculateRelativePosition(this, elm, rel);\r\n return this.moveTo(pos.x, pos.y);\r\n },\r\n moveBy: function (dx, dy) {\r\n var self$$1 = this, rect = self$$1.layoutRect();\r\n self$$1.moveTo(rect.x + dx, rect.y + dy);\r\n return self$$1;\r\n },\r\n moveTo: function (x, y) {\r\n var self$$1 = this;\r\n function constrain(value, max, size) {\r\n if (value < 0) {\r\n return 0;\r\n }\r\n if (value + size > max) {\r\n value = max - size;\r\n return value < 0 ? 0 : value;\r\n }\r\n return value;\r\n }\r\n if (self$$1.settings.constrainToViewport) {\r\n var viewPortRect = getViewPortRect(this);\r\n var layoutRect = self$$1.layoutRect();\r\n x = constrain(x, viewPortRect.w, layoutRect.w);\r\n y = constrain(y, viewPortRect.h, layoutRect.h);\r\n }\r\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(self$$1);\r\n if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {\r\n x -= uiContainer.scrollLeft;\r\n y -= uiContainer.scrollTop;\r\n }\r\n if (uiContainer) {\r\n x += 1;\r\n y += 1;\r\n }\r\n if (self$$1.state.get('rendered')) {\r\n self$$1.layoutRect({\r\n x: x,\r\n y: y\r\n }).repaint();\r\n } else {\r\n self$$1.settings.x = x;\r\n self$$1.settings.y = y;\r\n }\r\n self$$1.fire('move', {\r\n x: x,\r\n y: y\r\n });\r\n return self$$1;\r\n }\r\n };\r\n\r\n var global$10 = tinymce.util.Tools.resolve('tinymce.util.Class');\r\n\r\n var global$11 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');\r\n\r\n var $_79d0aauqjkmcwsj9 = {\r\n parseBox: function (value) {\r\n var len;\r\n var radix = 10;\r\n if (!value) {\r\n return;\r\n }\r\n if (typeof value === 'number') {\r\n value = value || 0;\r\n return {\r\n top: value,\r\n left: value,\r\n bottom: value,\r\n right: value\r\n };\r\n }\r\n value = value.split(' ');\r\n len = value.length;\r\n if (len === 1) {\r\n value[1] = value[2] = value[3] = value[0];\r\n } else if (len === 2) {\r\n value[2] = value[0];\r\n value[3] = value[1];\r\n } else if (len === 3) {\r\n value[3] = value[1];\r\n }\r\n return {\r\n top: parseInt(value[0], radix) || 0,\r\n right: parseInt(value[1], radix) || 0,\r\n bottom: parseInt(value[2], radix) || 0,\r\n left: parseInt(value[3], radix) || 0\r\n };\r\n },\r\n measureBox: function (elm, prefix) {\r\n function getStyle(name) {\r\n var defaultView = elm.ownerDocument.defaultView;\r\n if (defaultView) {\r\n var computedStyle = defaultView.getComputedStyle(elm, null);\r\n if (computedStyle) {\r\n name = name.replace(/[A-Z]/g, function (a) {\r\n return '-' + a;\r\n });\r\n return computedStyle.getPropertyValue(name);\r\n } else {\r\n return null;\r\n }\r\n }\r\n return elm.currentStyle[name];\r\n }\r\n function getSide(name) {\r\n var val = parseFloat(getStyle(name));\r\n return isNaN(val) ? 0 : val;\r\n }\r\n return {\r\n top: getSide(prefix + 'TopWidth'),\r\n right: getSide(prefix + 'RightWidth'),\r\n bottom: getSide(prefix + 'BottomWidth'),\r\n left: getSide(prefix + 'LeftWidth')\r\n };\r\n }\r\n };\r\n\r\n function noop$1() {\r\n }\r\n function ClassList(onchange) {\r\n this.cls = [];\r\n this.cls._map = {};\r\n this.onchange = onchange || noop$1;\r\n this.prefix = '';\r\n }\r\n global$2.extend(ClassList.prototype, {\r\n add: function (cls) {\r\n if (cls && !this.contains(cls)) {\r\n this.cls._map[cls] = true;\r\n this.cls.push(cls);\r\n this._change();\r\n }\r\n return this;\r\n },\r\n remove: function (cls) {\r\n if (this.contains(cls)) {\r\n var i = void 0;\r\n for (i = 0; i < this.cls.length; i++) {\r\n if (this.cls[i] === cls) {\r\n break;\r\n }\r\n }\r\n this.cls.splice(i, 1);\r\n delete this.cls._map[cls];\r\n this._change();\r\n }\r\n return this;\r\n },\r\n toggle: function (cls, state) {\r\n var curState = this.contains(cls);\r\n if (curState !== state) {\r\n if (curState) {\r\n this.remove(cls);\r\n } else {\r\n this.add(cls);\r\n }\r\n this._change();\r\n }\r\n return this;\r\n },\r\n contains: function (cls) {\r\n return !!this.cls._map[cls];\r\n },\r\n _change: function () {\r\n delete this.clsValue;\r\n this.onchange.call(this);\r\n }\r\n });\r\n ClassList.prototype.toString = function () {\r\n var value;\r\n if (this.clsValue) {\r\n return this.clsValue;\r\n }\r\n value = '';\r\n for (var i = 0; i < this.cls.length; i++) {\r\n if (i > 0) {\r\n value += ' ';\r\n }\r\n value += this.prefix + this.cls[i];\r\n }\r\n return value;\r\n };\r\n\r\n function unique(array) {\r\n var uniqueItems = [];\r\n var i = array.length, item;\r\n while (i--) {\r\n item = array[i];\r\n if (!item.__checked) {\r\n uniqueItems.push(item);\r\n item.__checked = 1;\r\n }\r\n }\r\n i = uniqueItems.length;\r\n while (i--) {\r\n delete uniqueItems[i].__checked;\r\n }\r\n return uniqueItems;\r\n }\r\n var expression = /^([\\w\\\\*]+)?(?:#([\\w\\-\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@?([\\w\\\\]+)([\\^\\$\\*!~]?=)([\\w\\\\]+)\\])?(?:\\:(.+))?/i;\r\n var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\r\n var whiteSpace = /^\\s*|\\s*$/g;\r\n var Collection;\r\n var Selector = global$10.extend({\r\n init: function (selector) {\r\n var match = this.match;\r\n function compileNameFilter(name) {\r\n if (name) {\r\n name = name.toLowerCase();\r\n return function (item) {\r\n return name === '*' || item.type === name;\r\n };\r\n }\r\n }\r\n function compileIdFilter(id) {\r\n if (id) {\r\n return function (item) {\r\n return item._name === id;\r\n };\r\n }\r\n }\r\n function compileClassesFilter(classes) {\r\n if (classes) {\r\n classes = classes.split('.');\r\n return function (item) {\r\n var i = classes.length;\r\n while (i--) {\r\n if (!item.classes.contains(classes[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n }\r\n }\r\n function compileAttrFilter(name, cmp, check) {\r\n if (name) {\r\n return function (item) {\r\n var value = item[name] ? item[name]() : '';\r\n return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;\r\n };\r\n }\r\n }\r\n function compilePsuedoFilter(name) {\r\n var notSelectors;\r\n if (name) {\r\n name = /(?:not\\((.+)\\))|(.+)/i.exec(name);\r\n if (!name[1]) {\r\n name = name[2];\r\n return function (item, index, length) {\r\n return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;\r\n };\r\n }\r\n notSelectors = parseChunks(name[1], []);\r\n return function (item) {\r\n return !match(item, notSelectors);\r\n };\r\n }\r\n }\r\n function compile(selector, filters, direct) {\r\n var parts;\r\n function add(filter) {\r\n if (filter) {\r\n filters.push(filter);\r\n }\r\n }\r\n parts = expression.exec(selector.replace(whiteSpace, ''));\r\n add(compileNameFilter(parts[1]));\r\n add(compileIdFilter(parts[2]));\r\n add(compileClassesFilter(parts[3]));\r\n add(compileAttrFilter(parts[4], parts[5], parts[6]));\r\n add(compilePsuedoFilter(parts[7]));\r\n filters.pseudo = !!parts[7];\r\n filters.direct = direct;\r\n return filters;\r\n }\r\n function parseChunks(selector, selectors) {\r\n var parts = [];\r\n var extra, matches, i;\r\n do {\r\n chunker.exec('');\r\n matches = chunker.exec(selector);\r\n if (matches) {\r\n selector = matches[3];\r\n parts.push(matches[1]);\r\n if (matches[2]) {\r\n extra = matches[3];\r\n break;\r\n }\r\n }\r\n } while (matches);\r\n if (extra) {\r\n parseChunks(extra, selectors);\r\n }\r\n selector = [];\r\n for (i = 0; i < parts.length; i++) {\r\n if (parts[i] !== '>') {\r\n selector.push(compile(parts[i], [], parts[i - 1] === '>'));\r\n }\r\n }\r\n selectors.push(selector);\r\n return selectors;\r\n }\r\n this._selectors = parseChunks(selector, []);\r\n },\r\n match: function (control, selectors) {\r\n var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;\r\n selectors = selectors || this._selectors;\r\n for (i = 0, l = selectors.length; i < l; i++) {\r\n selector = selectors[i];\r\n sl = selector.length;\r\n item = control;\r\n count = 0;\r\n for (si = sl - 1; si >= 0; si--) {\r\n filters = selector[si];\r\n while (item) {\r\n if (filters.pseudo) {\r\n siblings = item.parent().items();\r\n index = length = siblings.length;\r\n while (index--) {\r\n if (siblings[index] === item) {\r\n break;\r\n }\r\n }\r\n }\r\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\r\n if (!filters[fi](item, index, length)) {\r\n fi = fl + 1;\r\n break;\r\n }\r\n }\r\n if (fi === fl) {\r\n count++;\r\n break;\r\n } else {\r\n if (si === sl - 1) {\r\n break;\r\n }\r\n }\r\n item = item.parent();\r\n }\r\n }\r\n if (count === sl) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n find: function (container) {\r\n var matches = [], i, l;\r\n var selectors = this._selectors;\r\n function collect(items, selector, index) {\r\n var i, l, fi, fl, item;\r\n var filters = selector[index];\r\n for (i = 0, l = items.length; i < l; i++) {\r\n item = items[i];\r\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\r\n if (!filters[fi](item, i, l)) {\r\n fi = fl + 1;\r\n break;\r\n }\r\n }\r\n if (fi === fl) {\r\n if (index === selector.length - 1) {\r\n matches.push(item);\r\n } else {\r\n if (item.items) {\r\n collect(item.items(), selector, index + 1);\r\n }\r\n }\r\n } else if (filters.direct) {\r\n return;\r\n }\r\n if (item.items) {\r\n collect(item.items(), selector, index);\r\n }\r\n }\r\n }\r\n if (container.items) {\r\n for (i = 0, l = selectors.length; i < l; i++) {\r\n collect(container.items(), selectors[i], 0);\r\n }\r\n if (l > 1) {\r\n matches = unique(matches);\r\n }\r\n }\r\n if (!Collection) {\r\n Collection = Selector.Collection;\r\n }\r\n return new Collection(matches);\r\n }\r\n });\r\n\r\n var Collection$1;\r\n var proto;\r\n var push$1 = Array.prototype.push;\r\n var slice$1 = Array.prototype.slice;\r\n proto = {\r\n length: 0,\r\n init: function (items) {\r\n if (items) {\r\n this.add(items);\r\n }\r\n },\r\n add: function (items) {\r\n var self = this;\r\n if (!global$2.isArray(items)) {\r\n if (items instanceof Collection$1) {\r\n self.add(items.toArray());\r\n } else {\r\n push$1.call(self, items);\r\n }\r\n } else {\r\n push$1.apply(self, items);\r\n }\r\n return self;\r\n },\r\n set: function (items) {\r\n var self = this;\r\n var len = self.length;\r\n var i;\r\n self.length = 0;\r\n self.add(items);\r\n for (i = self.length; i < len; i++) {\r\n delete self[i];\r\n }\r\n return self;\r\n },\r\n filter: function (selector) {\r\n var self = this;\r\n var i, l;\r\n var matches = [];\r\n var item, match;\r\n if (typeof selector === 'string') {\r\n selector = new Selector(selector);\r\n match = function (item) {\r\n return selector.match(item);\r\n };\r\n } else {\r\n match = selector;\r\n }\r\n for (i = 0, l = self.length; i < l; i++) {\r\n item = self[i];\r\n if (match(item)) {\r\n matches.push(item);\r\n }\r\n }\r\n return new Collection$1(matches);\r\n },\r\n slice: function () {\r\n return new Collection$1(slice$1.apply(this, arguments));\r\n },\r\n eq: function (index) {\r\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\r\n },\r\n each: function (callback) {\r\n global$2.each(this, callback);\r\n return this;\r\n },\r\n toArray: function () {\r\n return global$2.toArray(this);\r\n },\r\n indexOf: function (ctrl) {\r\n var self = this;\r\n var i = self.length;\r\n while (i--) {\r\n if (self[i] === ctrl) {\r\n break;\r\n }\r\n }\r\n return i;\r\n },\r\n reverse: function () {\r\n return new Collection$1(global$2.toArray(this).reverse());\r\n },\r\n hasClass: function (cls) {\r\n return this[0] ? this[0].classes.contains(cls) : false;\r\n },\r\n prop: function (name, value) {\r\n var self = this;\r\n var item;\r\n if (value !== undefined) {\r\n self.each(function (item) {\r\n if (item[name]) {\r\n item[name](value);\r\n }\r\n });\r\n return self;\r\n }\r\n item = self[0];\r\n if (item && item[name]) {\r\n return item[name]();\r\n }\r\n },\r\n exec: function (name) {\r\n var self = this, args = global$2.toArray(arguments).slice(1);\r\n self.each(function (item) {\r\n if (item[name]) {\r\n item[name].apply(item, args);\r\n }\r\n });\r\n return self;\r\n },\r\n remove: function () {\r\n var i = this.length;\r\n while (i--) {\r\n this[i].remove();\r\n }\r\n return this;\r\n },\r\n addClass: function (cls) {\r\n return this.each(function (item) {\r\n item.classes.add(cls);\r\n });\r\n },\r\n removeClass: function (cls) {\r\n return this.each(function (item) {\r\n item.classes.remove(cls);\r\n });\r\n }\r\n };\r\n global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {\r\n proto[name] = function () {\r\n var args = global$2.toArray(arguments);\r\n this.each(function (ctrl) {\r\n if (name in ctrl) {\r\n ctrl[name].apply(ctrl, args);\r\n }\r\n });\r\n return this;\r\n };\r\n });\r\n global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {\r\n proto[name] = function (value) {\r\n return this.prop(name, value);\r\n };\r\n });\r\n Collection$1 = global$10.extend(proto);\r\n Selector.Collection = Collection$1;\r\n var Collection$2 = Collection$1;\r\n\r\n var Binding = function (settings) {\r\n this.create = settings.create;\r\n };\r\n Binding.create = function (model, name) {\r\n return new Binding({\r\n create: function (otherModel, otherName) {\r\n var bindings;\r\n var fromSelfToOther = function (e) {\r\n otherModel.set(otherName, e.value);\r\n };\r\n var fromOtherToSelf = function (e) {\r\n model.set(name, e.value);\r\n };\r\n otherModel.on('change:' + otherName, fromOtherToSelf);\r\n model.on('change:' + name, fromSelfToOther);\r\n bindings = otherModel._bindings;\r\n if (!bindings) {\r\n bindings = otherModel._bindings = [];\r\n otherModel.on('destroy', function () {\r\n var i = bindings.length;\r\n while (i--) {\r\n bindings[i]();\r\n }\r\n });\r\n }\r\n bindings.push(function () {\r\n model.off('change:' + name, fromSelfToOther);\r\n });\r\n return model.get(name);\r\n }\r\n });\r\n };\r\n\r\n var global$12 = tinymce.util.Tools.resolve('tinymce.util.Observable');\r\n\r\n function isNode(node) {\r\n return node.nodeType > 0;\r\n }\r\n function isEqual(a, b) {\r\n var k, checked;\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null || b === null) {\r\n return a === b;\r\n }\r\n if (typeof a !== 'object' || typeof b !== 'object') {\r\n return a === b;\r\n }\r\n if (global$2.isArray(b)) {\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n k = a.length;\r\n while (k--) {\r\n if (!isEqual(a[k], b[k])) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (isNode(a) || isNode(b)) {\r\n return a === b;\r\n }\r\n checked = {};\r\n for (k in b) {\r\n if (!isEqual(a[k], b[k])) {\r\n return false;\r\n }\r\n checked[k] = true;\r\n }\r\n for (k in a) {\r\n if (!checked[k] && !isEqual(a[k], b[k])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n var ObservableObject = global$10.extend({\r\n Mixins: [global$12],\r\n init: function (data) {\r\n var name, value;\r\n data = data || {};\r\n for (name in data) {\r\n value = data[name];\r\n if (value instanceof Binding) {\r\n data[name] = value.create(this, name);\r\n }\r\n }\r\n this.data = data;\r\n },\r\n set: function (name, value) {\r\n var key, args;\r\n var oldValue = this.data[name];\r\n if (value instanceof Binding) {\r\n value = value.create(this, name);\r\n }\r\n if (typeof name === 'object') {\r\n for (key in name) {\r\n this.set(key, name[key]);\r\n }\r\n return this;\r\n }\r\n if (!isEqual(oldValue, value)) {\r\n this.data[name] = value;\r\n args = {\r\n target: this,\r\n name: name,\r\n value: value,\r\n oldValue: oldValue\r\n };\r\n this.fire('change:' + name, args);\r\n this.fire('change', args);\r\n }\r\n return this;\r\n },\r\n get: function (name) {\r\n return this.data[name];\r\n },\r\n has: function (name) {\r\n return name in this.data;\r\n },\r\n bind: function (name) {\r\n return Binding.create(this, name);\r\n },\r\n destroy: function () {\r\n this.fire('destroy');\r\n }\r\n });\r\n\r\n var dirtyCtrls = {};\r\n var animationFrameRequested;\r\n var $_921m08uxjkmcwsk2 = {\r\n add: function (ctrl) {\r\n var parent$$1 = ctrl.parent();\r\n if (parent$$1) {\r\n if (!parent$$1._layout || parent$$1._layout.isNative()) {\r\n return;\r\n }\r\n if (!dirtyCtrls[parent$$1._id]) {\r\n dirtyCtrls[parent$$1._id] = parent$$1;\r\n }\r\n if (!animationFrameRequested) {\r\n animationFrameRequested = true;\r\n global$7.requestAnimationFrame(function () {\r\n var id, ctrl;\r\n animationFrameRequested = false;\r\n for (id in dirtyCtrls) {\r\n ctrl = dirtyCtrls[id];\r\n if (ctrl.state.get('rendered')) {\r\n ctrl.reflow();\r\n }\r\n }\r\n dirtyCtrls = {};\r\n }, document.body);\r\n }\r\n }\r\n },\r\n remove: function (ctrl) {\r\n if (dirtyCtrls[ctrl._id]) {\r\n delete dirtyCtrls[ctrl._id];\r\n }\r\n }\r\n };\r\n\r\n var hasMouseWheelEventSupport = 'onmousewheel' in document;\r\n var hasWheelEventSupport = false;\r\n var classPrefix = 'mce-';\r\n var Control;\r\n var idCounter = 0;\r\n var proto$1 = {\r\n Statics: { classPrefix: classPrefix },\r\n isRtl: function () {\r\n return Control.rtl;\r\n },\r\n classPrefix: classPrefix,\r\n init: function (settings) {\r\n var self$$1 = this;\r\n var classes, defaultClasses;\r\n function applyClasses(classes) {\r\n var i;\r\n classes = classes.split(' ');\r\n for (i = 0; i < classes.length; i++) {\r\n self$$1.classes.add(classes[i]);\r\n }\r\n }\r\n self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);\r\n self$$1._id = settings.id || 'mceu_' + idCounter++;\r\n self$$1._aria = { role: settings.role };\r\n self$$1._elmCache = {};\r\n self$$1.$ = global$9;\r\n self$$1.state = new ObservableObject({\r\n visible: true,\r\n active: false,\r\n disabled: false,\r\n value: ''\r\n });\r\n self$$1.data = new ObservableObject(settings.data);\r\n self$$1.classes = new ClassList(function () {\r\n if (self$$1.state.get('rendered')) {\r\n self$$1.getEl().className = this.toString();\r\n }\r\n });\r\n self$$1.classes.prefix = self$$1.classPrefix;\r\n classes = settings.classes;\r\n if (classes) {\r\n if (self$$1.Defaults) {\r\n defaultClasses = self$$1.Defaults.classes;\r\n if (defaultClasses && classes !== defaultClasses) {\r\n applyClasses(defaultClasses);\r\n }\r\n }\r\n applyClasses(classes);\r\n }\r\n global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {\r\n if (name$$1 in settings) {\r\n self$$1[name$$1](settings[name$$1]);\r\n }\r\n });\r\n self$$1.on('click', function () {\r\n if (self$$1.disabled()) {\r\n return false;\r\n }\r\n });\r\n self$$1.settings = settings;\r\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(settings.border);\r\n self$$1.paddingBox = $_79d0aauqjkmcwsj9.parseBox(settings.padding);\r\n self$$1.marginBox = $_79d0aauqjkmcwsj9.parseBox(settings.margin);\r\n if (settings.hidden) {\r\n self$$1.hide();\r\n }\r\n },\r\n Properties: 'parent,name',\r\n getContainerElm: function () {\r\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(this);\r\n return uiContainer ? uiContainer : funcs.getContainer();\r\n },\r\n getParentCtrl: function (elm) {\r\n var ctrl;\r\n var lookup = this.getRoot().controlIdLookup;\r\n while (elm && lookup) {\r\n ctrl = lookup[elm.id];\r\n if (ctrl) {\r\n break;\r\n }\r\n elm = elm.parentNode;\r\n }\r\n return ctrl;\r\n },\r\n initLayoutRect: function () {\r\n var self$$1 = this;\r\n var settings = self$$1.settings;\r\n var borderBox, layoutRect;\r\n var elm = self$$1.getEl();\r\n var width, height, minWidth, minHeight, autoResize;\r\n var startMinWidth, startMinHeight, initialSize;\r\n borderBox = self$$1.borderBox = self$$1.borderBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'border');\r\n self$$1.paddingBox = self$$1.paddingBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'padding');\r\n self$$1.marginBox = self$$1.marginBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'margin');\r\n initialSize = funcs.getSize(elm);\r\n startMinWidth = settings.minWidth;\r\n startMinHeight = settings.minHeight;\r\n minWidth = startMinWidth || initialSize.width;\r\n minHeight = startMinHeight || initialSize.height;\r\n width = settings.width;\r\n height = settings.height;\r\n autoResize = settings.autoResize;\r\n autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;\r\n width = width || minWidth;\r\n height = height || minHeight;\r\n var deltaW = borderBox.left + borderBox.right;\r\n var deltaH = borderBox.top + borderBox.bottom;\r\n var maxW = settings.maxWidth || 65535;\r\n var maxH = settings.maxHeight || 65535;\r\n self$$1._layoutRect = layoutRect = {\r\n x: settings.x || 0,\r\n y: settings.y || 0,\r\n w: width,\r\n h: height,\r\n deltaW: deltaW,\r\n deltaH: deltaH,\r\n contentW: width - deltaW,\r\n contentH: height - deltaH,\r\n innerW: width - deltaW,\r\n innerH: height - deltaH,\r\n startMinWidth: startMinWidth || 0,\r\n startMinHeight: startMinHeight || 0,\r\n minW: Math.min(minWidth, maxW),\r\n minH: Math.min(minHeight, maxH),\r\n maxW: maxW,\r\n maxH: maxH,\r\n autoResize: autoResize,\r\n scrollW: 0\r\n };\r\n self$$1._lastLayoutRect = {};\r\n return layoutRect;\r\n },\r\n layoutRect: function (newRect) {\r\n var self$$1 = this;\r\n var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;\r\n if (!curRect) {\r\n curRect = self$$1.initLayoutRect();\r\n }\r\n if (newRect) {\r\n deltaWidth = curRect.deltaW;\r\n deltaHeight = curRect.deltaH;\r\n if (newRect.x !== undefined) {\r\n curRect.x = newRect.x;\r\n }\r\n if (newRect.y !== undefined) {\r\n curRect.y = newRect.y;\r\n }\r\n if (newRect.minW !== undefined) {\r\n curRect.minW = newRect.minW;\r\n }\r\n if (newRect.minH !== undefined) {\r\n curRect.minH = newRect.minH;\r\n }\r\n size = newRect.w;\r\n if (size !== undefined) {\r\n size = size < curRect.minW ? curRect.minW : size;\r\n size = size > curRect.maxW ? curRect.maxW : size;\r\n curRect.w = size;\r\n curRect.innerW = size - deltaWidth;\r\n }\r\n size = newRect.h;\r\n if (size !== undefined) {\r\n size = size < curRect.minH ? curRect.minH : size;\r\n size = size > curRect.maxH ? curRect.maxH : size;\r\n curRect.h = size;\r\n curRect.innerH = size - deltaHeight;\r\n }\r\n size = newRect.innerW;\r\n if (size !== undefined) {\r\n size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;\r\n size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;\r\n curRect.innerW = size;\r\n curRect.w = size + deltaWidth;\r\n }\r\n size = newRect.innerH;\r\n if (size !== undefined) {\r\n size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;\r\n size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;\r\n curRect.innerH = size;\r\n curRect.h = size + deltaHeight;\r\n }\r\n if (newRect.contentW !== undefined) {\r\n curRect.contentW = newRect.contentW;\r\n }\r\n if (newRect.contentH !== undefined) {\r\n curRect.contentH = newRect.contentH;\r\n }\r\n lastLayoutRect = self$$1._lastLayoutRect;\r\n if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {\r\n repaintControls = Control.repaintControls;\r\n if (repaintControls) {\r\n if (repaintControls.map && !repaintControls.map[self$$1._id]) {\r\n repaintControls.push(self$$1);\r\n repaintControls.map[self$$1._id] = true;\r\n }\r\n }\r\n lastLayoutRect.x = curRect.x;\r\n lastLayoutRect.y = curRect.y;\r\n lastLayoutRect.w = curRect.w;\r\n lastLayoutRect.h = curRect.h;\r\n }\r\n return self$$1;\r\n }\r\n return curRect;\r\n },\r\n repaint: function () {\r\n var self$$1 = this;\r\n var style, bodyStyle, bodyElm, rect, borderBox;\r\n var borderW, borderH, lastRepaintRect, round, value;\r\n round = !document.createRange ? Math.round : function (value) {\r\n return value;\r\n };\r\n style = self$$1.getEl().style;\r\n rect = self$$1._layoutRect;\r\n lastRepaintRect = self$$1._lastRepaintRect || {};\r\n borderBox = self$$1.borderBox;\r\n borderW = borderBox.left + borderBox.right;\r\n borderH = borderBox.top + borderBox.bottom;\r\n if (rect.x !== lastRepaintRect.x) {\r\n style.left = round(rect.x) + 'px';\r\n lastRepaintRect.x = rect.x;\r\n }\r\n if (rect.y !== lastRepaintRect.y) {\r\n style.top = round(rect.y) + 'px';\r\n lastRepaintRect.y = rect.y;\r\n }\r\n if (rect.w !== lastRepaintRect.w) {\r\n value = round(rect.w - borderW);\r\n style.width = (value >= 0 ? value : 0) + 'px';\r\n lastRepaintRect.w = rect.w;\r\n }\r\n if (rect.h !== lastRepaintRect.h) {\r\n value = round(rect.h - borderH);\r\n style.height = (value >= 0 ? value : 0) + 'px';\r\n lastRepaintRect.h = rect.h;\r\n }\r\n if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {\r\n value = round(rect.innerW);\r\n bodyElm = self$$1.getEl('body');\r\n if (bodyElm) {\r\n bodyStyle = bodyElm.style;\r\n bodyStyle.width = (value >= 0 ? value : 0) + 'px';\r\n }\r\n lastRepaintRect.innerW = rect.innerW;\r\n }\r\n if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {\r\n value = round(rect.innerH);\r\n bodyElm = bodyElm || self$$1.getEl('body');\r\n if (bodyElm) {\r\n bodyStyle = bodyStyle || bodyElm.style;\r\n bodyStyle.height = (value >= 0 ? value : 0) + 'px';\r\n }\r\n lastRepaintRect.innerH = rect.innerH;\r\n }\r\n self$$1._lastRepaintRect = lastRepaintRect;\r\n self$$1.fire('repaint', {}, false);\r\n },\r\n updateLayoutRect: function () {\r\n var self$$1 = this;\r\n self$$1.parent()._lastRect = null;\r\n funcs.css(self$$1.getEl(), {\r\n width: '',\r\n height: ''\r\n });\r\n self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;\r\n self$$1.initLayoutRect();\r\n },\r\n on: function (name$$1, callback) {\r\n var self$$1 = this;\r\n function resolveCallbackName(name$$1) {\r\n var callback, scope;\r\n if (typeof name$$1 !== 'string') {\r\n return name$$1;\r\n }\r\n return function (e) {\r\n if (!callback) {\r\n self$$1.parentsAndSelf().each(function (ctrl) {\r\n var callbacks = ctrl.settings.callbacks;\r\n if (callbacks && (callback = callbacks[name$$1])) {\r\n scope = ctrl;\r\n return false;\r\n }\r\n });\r\n }\r\n if (!callback) {\r\n e.action = name$$1;\r\n this.fire('execute', e);\r\n return;\r\n }\r\n return callback.call(scope, e);\r\n };\r\n }\r\n getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));\r\n return self$$1;\r\n },\r\n off: function (name$$1, callback) {\r\n getEventDispatcher(this).off(name$$1, callback);\r\n return this;\r\n },\r\n fire: function (name$$1, args, bubble) {\r\n var self$$1 = this;\r\n args = args || {};\r\n if (!args.control) {\r\n args.control = self$$1;\r\n }\r\n args = getEventDispatcher(self$$1).fire(name$$1, args);\r\n if (bubble !== false && self$$1.parent) {\r\n var parent$$1 = self$$1.parent();\r\n while (parent$$1 && !args.isPropagationStopped()) {\r\n parent$$1.fire(name$$1, args, false);\r\n parent$$1 = parent$$1.parent();\r\n }\r\n }\r\n return args;\r\n },\r\n hasEventListeners: function (name$$1) {\r\n return getEventDispatcher(this).has(name$$1);\r\n },\r\n parents: function (selector) {\r\n var self$$1 = this;\r\n var ctrl, parents = new Collection$2();\r\n for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {\r\n parents.add(ctrl);\r\n }\r\n if (selector) {\r\n parents = parents.filter(selector);\r\n }\r\n return parents;\r\n },\r\n parentsAndSelf: function (selector) {\r\n return new Collection$2(this).add(this.parents(selector));\r\n },\r\n next: function () {\r\n var parentControls = this.parent().items();\r\n return parentControls[parentControls.indexOf(this) + 1];\r\n },\r\n prev: function () {\r\n var parentControls = this.parent().items();\r\n return parentControls[parentControls.indexOf(this) - 1];\r\n },\r\n innerHtml: function (html) {\r\n this.$el.html(html);\r\n return this;\r\n },\r\n getEl: function (suffix) {\r\n var id = suffix ? this._id + '-' + suffix : this._id;\r\n if (!this._elmCache[id]) {\r\n this._elmCache[id] = global$9('#' + id)[0];\r\n }\r\n return this._elmCache[id];\r\n },\r\n show: function () {\r\n return this.visible(true);\r\n },\r\n hide: function () {\r\n return this.visible(false);\r\n },\r\n focus: function () {\r\n try {\r\n this.getEl().focus();\r\n } catch (ex) {\r\n }\r\n return this;\r\n },\r\n blur: function () {\r\n this.getEl().blur();\r\n return this;\r\n },\r\n aria: function (name$$1, value) {\r\n var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);\r\n if (typeof value === 'undefined') {\r\n return self$$1._aria[name$$1];\r\n }\r\n self$$1._aria[name$$1] = value;\r\n if (self$$1.state.get('rendered')) {\r\n elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);\r\n }\r\n return self$$1;\r\n },\r\n encode: function (text, translate) {\r\n if (translate !== false) {\r\n text = this.translate(text);\r\n }\r\n return (text || '').replace(/[&<>\"]/g, function (match) {\r\n return '&#' + match.charCodeAt(0) + ';';\r\n });\r\n },\r\n translate: function (text) {\r\n return Control.translate ? Control.translate(text) : text;\r\n },\r\n before: function (items) {\r\n var self$$1 = this, parent$$1 = self$$1.parent();\r\n if (parent$$1) {\r\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);\r\n }\r\n return self$$1;\r\n },\r\n after: function (items) {\r\n var self$$1 = this, parent$$1 = self$$1.parent();\r\n if (parent$$1) {\r\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1));\r\n }\r\n return self$$1;\r\n },\r\n remove: function () {\r\n var self$$1 = this;\r\n var elm = self$$1.getEl();\r\n var parent$$1 = self$$1.parent();\r\n var newItems, i;\r\n if (self$$1.items) {\r\n var controls = self$$1.items().toArray();\r\n i = controls.length;\r\n while (i--) {\r\n controls[i].remove();\r\n }\r\n }\r\n if (parent$$1 && parent$$1.items) {\r\n newItems = [];\r\n parent$$1.items().each(function (item) {\r\n if (item !== self$$1) {\r\n newItems.push(item);\r\n }\r\n });\r\n parent$$1.items().set(newItems);\r\n parent$$1._lastRect = null;\r\n }\r\n if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {\r\n global$9(elm).off();\r\n }\r\n var lookup = self$$1.getRoot().controlIdLookup;\r\n if (lookup) {\r\n delete lookup[self$$1._id];\r\n }\r\n if (elm && elm.parentNode) {\r\n elm.parentNode.removeChild(elm);\r\n }\r\n self$$1.state.set('rendered', false);\r\n self$$1.state.destroy();\r\n self$$1.fire('remove');\r\n return self$$1;\r\n },\r\n renderBefore: function (elm) {\r\n global$9(elm).before(this.renderHtml());\r\n this.postRender();\r\n return this;\r\n },\r\n renderTo: function (elm) {\r\n global$9(elm || this.getContainerElm()).append(this.renderHtml());\r\n this.postRender();\r\n return this;\r\n },\r\n preRender: function () {\r\n },\r\n render: function () {\r\n },\r\n renderHtml: function () {\r\n return '
    ';\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n var settings = self$$1.settings;\r\n var elm, box, parent$$1, name$$1, parentEventsRoot;\r\n self$$1.$el = global$9(self$$1.getEl());\r\n self$$1.state.set('rendered', true);\r\n for (name$$1 in settings) {\r\n if (name$$1.indexOf('on') === 0) {\r\n self$$1.on(name$$1.substr(2), settings[name$$1]);\r\n }\r\n }\r\n if (self$$1._eventsRoot) {\r\n for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {\r\n parentEventsRoot = parent$$1._eventsRoot;\r\n }\r\n if (parentEventsRoot) {\r\n for (name$$1 in parentEventsRoot._nativeEvents) {\r\n self$$1._nativeEvents[name$$1] = true;\r\n }\r\n }\r\n }\r\n bindPendingEvents(self$$1);\r\n if (settings.style) {\r\n elm = self$$1.getEl();\r\n if (elm) {\r\n elm.setAttribute('style', settings.style);\r\n elm.style.cssText = settings.style;\r\n }\r\n }\r\n if (self$$1.settings.border) {\r\n box = self$$1.borderBox;\r\n self$$1.$el.css({\r\n 'border-top-width': box.top,\r\n 'border-right-width': box.right,\r\n 'border-bottom-width': box.bottom,\r\n 'border-left-width': box.left\r\n });\r\n }\r\n var root = self$$1.getRoot();\r\n if (!root.controlIdLookup) {\r\n root.controlIdLookup = {};\r\n }\r\n root.controlIdLookup[self$$1._id] = self$$1;\r\n for (var key in self$$1._aria) {\r\n self$$1.aria(key, self$$1._aria[key]);\r\n }\r\n if (self$$1.state.get('visible') === false) {\r\n self$$1.getEl().style.display = 'none';\r\n }\r\n self$$1.bindStates();\r\n self$$1.state.on('change:visible', function (e) {\r\n var state = e.value;\r\n var parentCtrl;\r\n if (self$$1.state.get('rendered')) {\r\n self$$1.getEl().style.display = state === false ? 'none' : '';\r\n self$$1.getEl().getBoundingClientRect();\r\n }\r\n parentCtrl = self$$1.parent();\r\n if (parentCtrl) {\r\n parentCtrl._lastRect = null;\r\n }\r\n self$$1.fire(state ? 'show' : 'hide');\r\n $_921m08uxjkmcwsk2.add(self$$1);\r\n });\r\n self$$1.fire('postrender', {}, false);\r\n },\r\n bindStates: function () {\r\n },\r\n scrollIntoView: function (align) {\r\n function getOffset(elm, rootElm) {\r\n var x, y, parent$$1 = elm;\r\n x = y = 0;\r\n while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {\r\n x += parent$$1.offsetLeft || 0;\r\n y += parent$$1.offsetTop || 0;\r\n parent$$1 = parent$$1.offsetParent;\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n }\r\n var elm = this.getEl(), parentElm = elm.parentNode;\r\n var x, y, width, height, parentWidth, parentHeight;\r\n var pos = getOffset(elm, parentElm);\r\n x = pos.x;\r\n y = pos.y;\r\n width = elm.offsetWidth;\r\n height = elm.offsetHeight;\r\n parentWidth = parentElm.clientWidth;\r\n parentHeight = parentElm.clientHeight;\r\n if (align === 'end') {\r\n x -= parentWidth - width;\r\n y -= parentHeight - height;\r\n } else if (align === 'center') {\r\n x -= parentWidth / 2 - width / 2;\r\n y -= parentHeight / 2 - height / 2;\r\n }\r\n parentElm.scrollLeft = x;\r\n parentElm.scrollTop = y;\r\n return this;\r\n },\r\n getRoot: function () {\r\n var ctrl = this, rootControl;\r\n var parents = [];\r\n while (ctrl) {\r\n if (ctrl.rootControl) {\r\n rootControl = ctrl.rootControl;\r\n break;\r\n }\r\n parents.push(ctrl);\r\n rootControl = ctrl;\r\n ctrl = ctrl.parent();\r\n }\r\n if (!rootControl) {\r\n rootControl = this;\r\n }\r\n var i = parents.length;\r\n while (i--) {\r\n parents[i].rootControl = rootControl;\r\n }\r\n return rootControl;\r\n },\r\n reflow: function () {\r\n $_921m08uxjkmcwsk2.remove(this);\r\n var parent$$1 = this.parent();\r\n if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {\r\n parent$$1.reflow();\r\n }\r\n return this;\r\n }\r\n };\r\n global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {\r\n proto$1[name$$1] = function (value) {\r\n if (arguments.length === 0) {\r\n return this.state.get(name$$1);\r\n }\r\n if (typeof value !== 'undefined') {\r\n this.state.set(name$$1, value);\r\n }\r\n return this;\r\n };\r\n });\r\n Control = global$10.extend(proto$1);\r\n function getEventDispatcher(obj) {\r\n if (!obj._eventDispatcher) {\r\n obj._eventDispatcher = new global$11({\r\n scope: obj,\r\n toggleEvent: function (name$$1, state) {\r\n if (state && global$11.isNative(name$$1)) {\r\n if (!obj._nativeEvents) {\r\n obj._nativeEvents = {};\r\n }\r\n obj._nativeEvents[name$$1] = true;\r\n if (obj.state.get('rendered')) {\r\n bindPendingEvents(obj);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return obj._eventDispatcher;\r\n }\r\n function bindPendingEvents(eventCtrl) {\r\n var i, l, parents, eventRootCtrl, nativeEvents, name$$1;\r\n function delegate(e) {\r\n var control = eventCtrl.getParentCtrl(e.target);\r\n if (control) {\r\n control.fire(e.type, e);\r\n }\r\n }\r\n function mouseLeaveHandler() {\r\n var ctrl = eventRootCtrl._lastHoverCtrl;\r\n if (ctrl) {\r\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\r\n ctrl.parents().each(function (ctrl) {\r\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\r\n });\r\n eventRootCtrl._lastHoverCtrl = null;\r\n }\r\n }\r\n function mouseEnterHandler(e) {\r\n var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;\r\n if (ctrl !== lastCtrl) {\r\n eventRootCtrl._lastHoverCtrl = ctrl;\r\n parents = ctrl.parents().toArray().reverse();\r\n parents.push(ctrl);\r\n if (lastCtrl) {\r\n lastParents = lastCtrl.parents().toArray().reverse();\r\n lastParents.push(lastCtrl);\r\n for (idx = 0; idx < lastParents.length; idx++) {\r\n if (parents[idx] !== lastParents[idx]) {\r\n break;\r\n }\r\n }\r\n for (i = lastParents.length - 1; i >= idx; i--) {\r\n lastCtrl = lastParents[i];\r\n lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });\r\n }\r\n }\r\n for (i = idx; i < parents.length; i++) {\r\n ctrl = parents[i];\r\n ctrl.fire('mouseenter', { target: ctrl.getEl() });\r\n }\r\n }\r\n }\r\n function fixWheelEvent(e) {\r\n e.preventDefault();\r\n if (e.type === 'mousewheel') {\r\n e.deltaY = -1 / 40 * e.wheelDelta;\r\n if (e.wheelDeltaX) {\r\n e.deltaX = -1 / 40 * e.wheelDeltaX;\r\n }\r\n } else {\r\n e.deltaX = 0;\r\n e.deltaY = e.detail;\r\n }\r\n e = eventCtrl.fire('wheel', e);\r\n }\r\n nativeEvents = eventCtrl._nativeEvents;\r\n if (nativeEvents) {\r\n parents = eventCtrl.parents().toArray();\r\n parents.unshift(eventCtrl);\r\n for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {\r\n eventRootCtrl = parents[i]._eventsRoot;\r\n }\r\n if (!eventRootCtrl) {\r\n eventRootCtrl = parents[parents.length - 1] || eventCtrl;\r\n }\r\n eventCtrl._eventsRoot = eventRootCtrl;\r\n for (l = i, i = 0; i < l; i++) {\r\n parents[i]._eventsRoot = eventRootCtrl;\r\n }\r\n var eventRootDelegates = eventRootCtrl._delegates;\r\n if (!eventRootDelegates) {\r\n eventRootDelegates = eventRootCtrl._delegates = {};\r\n }\r\n for (name$$1 in nativeEvents) {\r\n if (!nativeEvents) {\r\n return false;\r\n }\r\n if (name$$1 === 'wheel' && !hasWheelEventSupport) {\r\n if (hasMouseWheelEventSupport) {\r\n global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);\r\n } else {\r\n global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);\r\n }\r\n continue;\r\n }\r\n if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {\r\n if (!eventRootCtrl._hasMouseEnter) {\r\n global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);\r\n eventRootCtrl._hasMouseEnter = 1;\r\n }\r\n } else if (!eventRootDelegates[name$$1]) {\r\n global$9(eventRootCtrl.getEl()).on(name$$1, delegate);\r\n eventRootDelegates[name$$1] = true;\r\n }\r\n nativeEvents[name$$1] = false;\r\n }\r\n }\r\n }\r\n var Control$1 = Control;\r\n\r\n var hasTabstopData = function (elm) {\r\n return elm.getAttribute('data-mce-tabstop') ? true : false;\r\n };\r\n function KeyboardNavigation (settings) {\r\n var root = settings.root;\r\n var focusedElement, focusedControl;\r\n function isElement(node) {\r\n return node && node.nodeType === 1;\r\n }\r\n try {\r\n focusedElement = document.activeElement;\r\n } catch (ex) {\r\n focusedElement = document.body;\r\n }\r\n focusedControl = root.getParentCtrl(focusedElement);\r\n function getRole(elm) {\r\n elm = elm || focusedElement;\r\n if (isElement(elm)) {\r\n return elm.getAttribute('role');\r\n }\r\n return null;\r\n }\r\n function getParentRole(elm) {\r\n var role, parent$$1 = elm || focusedElement;\r\n while (parent$$1 = parent$$1.parentNode) {\r\n if (role = getRole(parent$$1)) {\r\n return role;\r\n }\r\n }\r\n }\r\n function getAriaProp(name$$1) {\r\n var elm = focusedElement;\r\n if (isElement(elm)) {\r\n return elm.getAttribute('aria-' + name$$1);\r\n }\r\n }\r\n function isTextInputElement(elm) {\r\n var tagName = elm.tagName.toUpperCase();\r\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';\r\n }\r\n function canFocus(elm) {\r\n if (isTextInputElement(elm) && !elm.hidden) {\r\n return true;\r\n }\r\n if (hasTabstopData(elm)) {\r\n return true;\r\n }\r\n if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function getFocusElements(elm) {\r\n var elements = [];\r\n function collect(elm) {\r\n if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {\r\n return;\r\n }\r\n if (canFocus(elm)) {\r\n elements.push(elm);\r\n }\r\n for (var i = 0; i < elm.childNodes.length; i++) {\r\n collect(elm.childNodes[i]);\r\n }\r\n }\r\n collect(elm || root.getEl());\r\n return elements;\r\n }\r\n function getNavigationRoot(targetControl) {\r\n var navigationRoot, controls;\r\n targetControl = targetControl || focusedControl;\r\n controls = targetControl.parents().toArray();\r\n controls.unshift(targetControl);\r\n for (var i = 0; i < controls.length; i++) {\r\n navigationRoot = controls[i];\r\n if (navigationRoot.settings.ariaRoot) {\r\n break;\r\n }\r\n }\r\n return navigationRoot;\r\n }\r\n function focusFirst(targetControl) {\r\n var navigationRoot = getNavigationRoot(targetControl);\r\n var focusElements = getFocusElements(navigationRoot.getEl());\r\n if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {\r\n moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);\r\n } else {\r\n moveFocusToIndex(0, focusElements);\r\n }\r\n }\r\n function moveFocusToIndex(idx, elements) {\r\n if (idx < 0) {\r\n idx = elements.length - 1;\r\n } else if (idx >= elements.length) {\r\n idx = 0;\r\n }\r\n if (elements[idx]) {\r\n elements[idx].focus();\r\n }\r\n return idx;\r\n }\r\n function moveFocus(dir, elements) {\r\n var idx = -1;\r\n var navigationRoot = getNavigationRoot();\r\n elements = elements || getFocusElements(navigationRoot.getEl());\r\n for (var i = 0; i < elements.length; i++) {\r\n if (elements[i] === focusedElement) {\r\n idx = i;\r\n }\r\n }\r\n idx += dir;\r\n navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);\r\n }\r\n function left() {\r\n var parentRole = getParentRole();\r\n if (parentRole === 'tablist') {\r\n moveFocus(-1, getFocusElements(focusedElement.parentNode));\r\n } else if (focusedControl.parent().submenu) {\r\n cancel();\r\n } else {\r\n moveFocus(-1);\r\n }\r\n }\r\n function right() {\r\n var role = getRole(), parentRole = getParentRole();\r\n if (parentRole === 'tablist') {\r\n moveFocus(1, getFocusElements(focusedElement.parentNode));\r\n } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {\r\n enter();\r\n } else {\r\n moveFocus(1);\r\n }\r\n }\r\n function up() {\r\n moveFocus(-1);\r\n }\r\n function down() {\r\n var role = getRole(), parentRole = getParentRole();\r\n if (role === 'menuitem' && parentRole === 'menubar') {\r\n enter();\r\n } else if (role === 'button' && getAriaProp('haspopup')) {\r\n enter({ key: 'down' });\r\n } else {\r\n moveFocus(1);\r\n }\r\n }\r\n function tab(e) {\r\n var parentRole = getParentRole();\r\n if (parentRole === 'tablist') {\r\n var elm = getFocusElements(focusedControl.getEl('body'))[0];\r\n if (elm) {\r\n elm.focus();\r\n }\r\n } else {\r\n moveFocus(e.shiftKey ? -1 : 1);\r\n }\r\n }\r\n function cancel() {\r\n focusedControl.fire('cancel');\r\n }\r\n function enter(aria) {\r\n aria = aria || {};\r\n focusedControl.fire('click', {\r\n target: focusedElement,\r\n aria: aria\r\n });\r\n }\r\n root.on('keydown', function (e) {\r\n function handleNonTabOrEscEvent(e, handler) {\r\n if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {\r\n return;\r\n }\r\n if (getRole(focusedElement) === 'slider') {\r\n return;\r\n }\r\n if (handler(e) !== false) {\r\n e.preventDefault();\r\n }\r\n }\r\n if (e.isDefaultPrevented()) {\r\n return;\r\n }\r\n switch (e.keyCode) {\r\n case 37:\r\n handleNonTabOrEscEvent(e, left);\r\n break;\r\n case 39:\r\n handleNonTabOrEscEvent(e, right);\r\n break;\r\n case 38:\r\n handleNonTabOrEscEvent(e, up);\r\n break;\r\n case 40:\r\n handleNonTabOrEscEvent(e, down);\r\n break;\r\n case 27:\r\n cancel();\r\n break;\r\n case 14:\r\n case 13:\r\n case 32:\r\n handleNonTabOrEscEvent(e, enter);\r\n break;\r\n case 9:\r\n tab(e);\r\n e.preventDefault();\r\n break;\r\n }\r\n });\r\n root.on('focusin', function (e) {\r\n focusedElement = e.target;\r\n focusedControl = e.control;\r\n });\r\n return { focusFirst: focusFirst };\r\n }\r\n\r\n var selectorCache = {};\r\n var Container = Control$1.extend({\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n settings = self.settings;\r\n if (settings.fixed) {\r\n self.state.set('fixed', true);\r\n }\r\n self._items = new Collection$2();\r\n if (self.isRtl()) {\r\n self.classes.add('rtl');\r\n }\r\n self.bodyClasses = new ClassList(function () {\r\n if (self.state.get('rendered')) {\r\n self.getEl('body').className = this.toString();\r\n }\r\n });\r\n self.bodyClasses.prefix = self.classPrefix;\r\n self.classes.add('container');\r\n self.bodyClasses.add('container-body');\r\n if (settings.containerCls) {\r\n self.classes.add(settings.containerCls);\r\n }\r\n self._layout = global$4.create((settings.layout || '') + 'layout');\r\n if (self.settings.items) {\r\n self.add(self.settings.items);\r\n } else {\r\n self.add(self.render());\r\n }\r\n self._hasBody = true;\r\n },\r\n items: function () {\r\n return this._items;\r\n },\r\n find: function (selector) {\r\n selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);\r\n return selector.find(this);\r\n },\r\n add: function (items) {\r\n var self = this;\r\n self.items().add(self.create(items)).parent(self);\r\n return self;\r\n },\r\n focus: function (keyboard) {\r\n var self = this;\r\n var focusCtrl, keyboardNav, items;\r\n if (keyboard) {\r\n keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;\r\n if (keyboardNav) {\r\n keyboardNav.focusFirst(self);\r\n return;\r\n }\r\n }\r\n items = self.find('*');\r\n if (self.statusbar) {\r\n items.add(self.statusbar.items());\r\n }\r\n items.each(function (ctrl) {\r\n if (ctrl.settings.autofocus) {\r\n focusCtrl = null;\r\n return false;\r\n }\r\n if (ctrl.canFocus) {\r\n focusCtrl = focusCtrl || ctrl;\r\n }\r\n });\r\n if (focusCtrl) {\r\n focusCtrl.focus();\r\n }\r\n return self;\r\n },\r\n replace: function (oldItem, newItem) {\r\n var ctrlElm;\r\n var items = this.items();\r\n var i = items.length;\r\n while (i--) {\r\n if (items[i] === oldItem) {\r\n items[i] = newItem;\r\n break;\r\n }\r\n }\r\n if (i >= 0) {\r\n ctrlElm = newItem.getEl();\r\n if (ctrlElm) {\r\n ctrlElm.parentNode.removeChild(ctrlElm);\r\n }\r\n ctrlElm = oldItem.getEl();\r\n if (ctrlElm) {\r\n ctrlElm.parentNode.removeChild(ctrlElm);\r\n }\r\n }\r\n newItem.parent(this);\r\n },\r\n create: function (items) {\r\n var self = this;\r\n var settings;\r\n var ctrlItems = [];\r\n if (!global$2.isArray(items)) {\r\n items = [items];\r\n }\r\n global$2.each(items, function (item) {\r\n if (item) {\r\n if (!(item instanceof Control$1)) {\r\n if (typeof item === 'string') {\r\n item = { type: item };\r\n }\r\n settings = global$2.extend({}, self.settings.defaults, item);\r\n item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);\r\n item = global$4.create(settings);\r\n }\r\n ctrlItems.push(item);\r\n }\r\n });\r\n return ctrlItems;\r\n },\r\n renderNew: function () {\r\n var self = this;\r\n self.items().each(function (ctrl, index) {\r\n var containerElm;\r\n ctrl.parent(self);\r\n if (!ctrl.state.get('rendered')) {\r\n containerElm = self.getEl('body');\r\n if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {\r\n global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());\r\n } else {\r\n global$9(containerElm).append(ctrl.renderHtml());\r\n }\r\n ctrl.postRender();\r\n $_921m08uxjkmcwsk2.add(ctrl);\r\n }\r\n });\r\n self._layout.applyClasses(self.items().filter(':visible'));\r\n self._lastRect = null;\r\n return self;\r\n },\r\n append: function (items) {\r\n return this.add(items).renderNew();\r\n },\r\n prepend: function (items) {\r\n var self = this;\r\n self.items().set(self.create(items).concat(self.items().toArray()));\r\n return self.renderNew();\r\n },\r\n insert: function (items, index, before) {\r\n var self = this;\r\n var curItems, beforeItems, afterItems;\r\n items = self.create(items);\r\n curItems = self.items();\r\n if (!before && index < curItems.length - 1) {\r\n index += 1;\r\n }\r\n if (index >= 0 && index < curItems.length) {\r\n beforeItems = curItems.slice(0, index).toArray();\r\n afterItems = curItems.slice(index).toArray();\r\n curItems.set(beforeItems.concat(items, afterItems));\r\n }\r\n return self.renderNew();\r\n },\r\n fromJSON: function (data) {\r\n var self = this;\r\n for (var name in data) {\r\n self.find('#' + name).value(data[name]);\r\n }\r\n return self;\r\n },\r\n toJSON: function () {\r\n var self = this, data = {};\r\n self.find('*').each(function (ctrl) {\r\n var name = ctrl.name(), value = ctrl.value();\r\n if (name && typeof value !== 'undefined') {\r\n data[name] = value;\r\n }\r\n });\r\n return data;\r\n },\r\n renderHtml: function () {\r\n var self = this, layout = self._layout, role = this.settings.role;\r\n self.preRender();\r\n layout.preRender(self);\r\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this;\r\n var box;\r\n self.items().exec('postRender');\r\n self._super();\r\n self._layout.postRender(self);\r\n self.state.set('rendered', true);\r\n if (self.settings.style) {\r\n self.$el.css(self.settings.style);\r\n }\r\n if (self.settings.border) {\r\n box = self.borderBox;\r\n self.$el.css({\r\n 'border-top-width': box.top,\r\n 'border-right-width': box.right,\r\n 'border-bottom-width': box.bottom,\r\n 'border-left-width': box.left\r\n });\r\n }\r\n if (!self.parent()) {\r\n self.keyboardNav = KeyboardNavigation({ root: self });\r\n }\r\n return self;\r\n },\r\n initLayoutRect: function () {\r\n var self = this, layoutRect = self._super();\r\n self._layout.recalc(self);\r\n return layoutRect;\r\n },\r\n recalc: function () {\r\n var self = this;\r\n var rect = self._layoutRect;\r\n var lastRect = self._lastRect;\r\n if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {\r\n self._layout.recalc(self);\r\n rect = self.layoutRect();\r\n self._lastRect = {\r\n x: rect.x,\r\n y: rect.y,\r\n w: rect.w,\r\n h: rect.h\r\n };\r\n return true;\r\n }\r\n },\r\n reflow: function () {\r\n var i;\r\n $_921m08uxjkmcwsk2.remove(this);\r\n if (this.visible()) {\r\n Control$1.repaintControls = [];\r\n Control$1.repaintControls.map = {};\r\n this.recalc();\r\n i = Control$1.repaintControls.length;\r\n while (i--) {\r\n Control$1.repaintControls[i].repaint();\r\n }\r\n if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {\r\n this.repaint();\r\n }\r\n Control$1.repaintControls = [];\r\n }\r\n return this;\r\n }\r\n });\r\n\r\n function getDocumentSize(doc) {\r\n var documentElement, body, scrollWidth, clientWidth;\r\n var offsetWidth, scrollHeight, clientHeight, offsetHeight;\r\n var max = Math.max;\r\n documentElement = doc.documentElement;\r\n body = doc.body;\r\n scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);\r\n clientWidth = max(documentElement.clientWidth, body.clientWidth);\r\n offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);\r\n scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);\r\n clientHeight = max(documentElement.clientHeight, body.clientHeight);\r\n offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);\r\n return {\r\n width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,\r\n height: scrollHeight < offsetHeight ? clientHeight : scrollHeight\r\n };\r\n }\r\n function updateWithTouchData(e) {\r\n var keys, i;\r\n if (e.changedTouches) {\r\n keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');\r\n for (i = 0; i < keys.length; i++) {\r\n e[keys[i]] = e.changedTouches[0][keys[i]];\r\n }\r\n }\r\n }\r\n function DragHelper (id, settings) {\r\n var $eventOverlay;\r\n var doc = settings.document || document;\r\n var downButton;\r\n var start, stop$$1, drag, startX, startY;\r\n settings = settings || {};\r\n var handleElement = doc.getElementById(settings.handle || id);\r\n start = function (e) {\r\n var docSize = getDocumentSize(doc);\r\n var handleElm, cursor;\r\n updateWithTouchData(e);\r\n e.preventDefault();\r\n downButton = e.button;\r\n handleElm = handleElement;\r\n startX = e.screenX;\r\n startY = e.screenY;\r\n if (window.getComputedStyle) {\r\n cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');\r\n } else {\r\n cursor = handleElm.runtimeStyle.cursor;\r\n }\r\n $eventOverlay = global$9('
    ').css({\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: docSize.width,\r\n height: docSize.height,\r\n zIndex: 2147483647,\r\n opacity: 0.0001,\r\n cursor: cursor\r\n }).appendTo(doc.body);\r\n global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);\r\n settings.start(e);\r\n };\r\n drag = function (e) {\r\n updateWithTouchData(e);\r\n if (e.button !== downButton) {\r\n return stop$$1(e);\r\n }\r\n e.deltaX = e.screenX - startX;\r\n e.deltaY = e.screenY - startY;\r\n e.preventDefault();\r\n settings.drag(e);\r\n };\r\n stop$$1 = function (e) {\r\n updateWithTouchData(e);\r\n global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);\r\n $eventOverlay.remove();\r\n if (settings.stop) {\r\n settings.stop(e);\r\n }\r\n };\r\n this.destroy = function () {\r\n global$9(handleElement).off();\r\n };\r\n global$9(handleElement).on('mousedown touchstart', start);\r\n }\r\n\r\n var $_c9juz9uzjkmcwskb = {\r\n init: function () {\r\n var self = this;\r\n self.on('repaint', self.renderScroll);\r\n },\r\n renderScroll: function () {\r\n var self = this, margin = 2;\r\n function repaintScroll() {\r\n var hasScrollH, hasScrollV, bodyElm;\r\n function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {\r\n var containerElm, scrollBarElm, scrollThumbElm;\r\n var containerSize, scrollSize, ratio, rect;\r\n var posNameLower, sizeNameLower;\r\n scrollBarElm = self.getEl('scroll' + axisName);\r\n if (scrollBarElm) {\r\n posNameLower = posName.toLowerCase();\r\n sizeNameLower = sizeName.toLowerCase();\r\n global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);\r\n if (!hasScroll) {\r\n global$9(scrollBarElm).css('display', 'none');\r\n return;\r\n }\r\n global$9(scrollBarElm).css('display', 'block');\r\n containerElm = self.getEl('body');\r\n scrollThumbElm = self.getEl('scroll' + axisName + 't');\r\n containerSize = containerElm['client' + sizeName] - margin * 2;\r\n containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;\r\n scrollSize = containerElm['scroll' + sizeName];\r\n ratio = containerSize / scrollSize;\r\n rect = {};\r\n rect[posNameLower] = containerElm['offset' + posName] + margin;\r\n rect[sizeNameLower] = containerSize;\r\n global$9(scrollBarElm).css(rect);\r\n rect = {};\r\n rect[posNameLower] = containerElm['scroll' + posName] * ratio;\r\n rect[sizeNameLower] = containerSize * ratio;\r\n global$9(scrollThumbElm).css(rect);\r\n }\r\n }\r\n bodyElm = self.getEl('body');\r\n hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;\r\n hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;\r\n repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');\r\n repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');\r\n }\r\n function addScroll() {\r\n function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {\r\n var scrollStart;\r\n var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;\r\n global$9(self.getEl()).append('
    ' + '
    ' + '
    ');\r\n self.draghelper = new DragHelper(axisId + 't', {\r\n start: function () {\r\n scrollStart = self.getEl('body')['scroll' + posName];\r\n global$9('#' + axisId).addClass(prefix + 'active');\r\n },\r\n drag: function (e) {\r\n var ratio, hasScrollH, hasScrollV, containerSize;\r\n var layoutRect = self.layoutRect();\r\n hasScrollH = layoutRect.contentW > layoutRect.innerW;\r\n hasScrollV = layoutRect.contentH > layoutRect.innerH;\r\n containerSize = self.getEl('body')['client' + sizeName] - margin * 2;\r\n containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;\r\n ratio = containerSize / self.getEl('body')['scroll' + sizeName];\r\n self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;\r\n },\r\n stop: function () {\r\n global$9('#' + axisId).removeClass(prefix + 'active');\r\n }\r\n });\r\n }\r\n self.classes.add('scroll');\r\n addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');\r\n addScrollAxis('h', 'Left', 'Width', 'X', 'Height');\r\n }\r\n if (self.settings.autoScroll) {\r\n if (!self._hasScroll) {\r\n self._hasScroll = true;\r\n addScroll();\r\n self.on('wheel', function (e) {\r\n var bodyEl = self.getEl('body');\r\n bodyEl.scrollLeft += (e.deltaX || 0) * 10;\r\n bodyEl.scrollTop += e.deltaY * 10;\r\n repaintScroll();\r\n });\r\n global$9(self.getEl('body')).on('scroll', repaintScroll);\r\n }\r\n repaintScroll();\r\n }\r\n }\r\n };\r\n\r\n var Panel = Container.extend({\r\n Defaults: {\r\n layout: 'fit',\r\n containerCls: 'panel'\r\n },\r\n Mixins: [$_c9juz9uzjkmcwskb],\r\n renderHtml: function () {\r\n var self = this;\r\n var layout = self._layout;\r\n var innerHtml = self.settings.html;\r\n self.preRender();\r\n layout.preRender(self);\r\n if (typeof innerHtml === 'undefined') {\r\n innerHtml = '
    ' + layout.renderHtml(self) + '
    ';\r\n } else {\r\n if (typeof innerHtml === 'function') {\r\n innerHtml = innerHtml.call(self);\r\n }\r\n self._hasBody = false;\r\n }\r\n return '
    ' + (self._preBodyHtml || '') + innerHtml + '
    ';\r\n }\r\n });\r\n\r\n var $_4ci2x6v1jkmcwski = {\r\n resizeToContent: function () {\r\n this._layoutRect.autoResize = true;\r\n this._lastRect = null;\r\n this.reflow();\r\n },\r\n resizeTo: function (w, h) {\r\n if (w <= 1 || h <= 1) {\r\n var rect = funcs.getWindowSize();\r\n w = w <= 1 ? w * rect.w : w;\r\n h = h <= 1 ? h * rect.h : h;\r\n }\r\n this._layoutRect.autoResize = false;\r\n return this.layoutRect({\r\n minW: w,\r\n minH: h,\r\n w: w,\r\n h: h\r\n }).reflow();\r\n },\r\n resizeBy: function (dw, dh) {\r\n var self = this, rect = self.layoutRect();\r\n return self.resizeTo(rect.w + dw, rect.h + dh);\r\n }\r\n };\r\n\r\n var documentClickHandler;\r\n var documentScrollHandler;\r\n var windowResizeHandler;\r\n var visiblePanels = [];\r\n var zOrder = [];\r\n var hasModal;\r\n function isChildOf(ctrl, parent$$1) {\r\n while (ctrl) {\r\n if (ctrl === parent$$1) {\r\n return true;\r\n }\r\n ctrl = ctrl.parent();\r\n }\r\n }\r\n function skipOrHidePanels(e) {\r\n var i = visiblePanels.length;\r\n while (i--) {\r\n var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);\r\n if (panel.settings.autohide) {\r\n if (clickCtrl) {\r\n if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {\r\n continue;\r\n }\r\n }\r\n e = panel.fire('autohide', { target: e.target });\r\n if (!e.isDefaultPrevented()) {\r\n panel.hide();\r\n }\r\n }\r\n }\r\n }\r\n function bindDocumentClickHandler() {\r\n if (!documentClickHandler) {\r\n documentClickHandler = function (e) {\r\n if (e.button === 2) {\r\n return;\r\n }\r\n skipOrHidePanels(e);\r\n };\r\n global$9(document).on('click touchstart', documentClickHandler);\r\n }\r\n }\r\n function bindDocumentScrollHandler() {\r\n if (!documentScrollHandler) {\r\n documentScrollHandler = function () {\r\n var i;\r\n i = visiblePanels.length;\r\n while (i--) {\r\n repositionPanel(visiblePanels[i]);\r\n }\r\n };\r\n global$9(window).on('scroll', documentScrollHandler);\r\n }\r\n }\r\n function bindWindowResizeHandler() {\r\n if (!windowResizeHandler) {\r\n var docElm_1 = document.documentElement;\r\n var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;\r\n windowResizeHandler = function () {\r\n if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {\r\n clientWidth_1 = docElm_1.clientWidth;\r\n clientHeight_1 = docElm_1.clientHeight;\r\n FloatPanel.hideAll();\r\n }\r\n };\r\n global$9(window).on('resize', windowResizeHandler);\r\n }\r\n }\r\n function repositionPanel(panel) {\r\n var scrollY$$1 = funcs.getViewPort().y;\r\n function toggleFixedChildPanels(fixed, deltaY) {\r\n var parent$$1;\r\n for (var i = 0; i < visiblePanels.length; i++) {\r\n if (visiblePanels[i] !== panel) {\r\n parent$$1 = visiblePanels[i].parent();\r\n while (parent$$1 && (parent$$1 = parent$$1.parent())) {\r\n if (parent$$1 === panel) {\r\n visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (panel.settings.autofix) {\r\n if (!panel.state.get('fixed')) {\r\n panel._autoFixY = panel.layoutRect().y;\r\n if (panel._autoFixY < scrollY$$1) {\r\n panel.fixed(true).layoutRect({ y: 0 }).repaint();\r\n toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);\r\n }\r\n } else {\r\n if (panel._autoFixY > scrollY$$1) {\r\n panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();\r\n toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);\r\n }\r\n }\r\n }\r\n }\r\n function addRemove(add, ctrl) {\r\n var i, zIndex = FloatPanel.zIndex || 65535, topModal;\r\n if (add) {\r\n zOrder.push(ctrl);\r\n } else {\r\n i = zOrder.length;\r\n while (i--) {\r\n if (zOrder[i] === ctrl) {\r\n zOrder.splice(i, 1);\r\n }\r\n }\r\n }\r\n if (zOrder.length) {\r\n for (i = 0; i < zOrder.length; i++) {\r\n if (zOrder[i].modal) {\r\n zIndex++;\r\n topModal = zOrder[i];\r\n }\r\n zOrder[i].getEl().style.zIndex = zIndex;\r\n zOrder[i].zIndex = zIndex;\r\n zIndex++;\r\n }\r\n }\r\n var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];\r\n if (topModal) {\r\n global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);\r\n } else if (modalBlockEl) {\r\n modalBlockEl.parentNode.removeChild(modalBlockEl);\r\n hasModal = false;\r\n }\r\n FloatPanel.currentZIndex = zIndex;\r\n }\r\n var FloatPanel = Panel.extend({\r\n Mixins: [\r\n $_77p0ikukjkmcwsie,\r\n $_4ci2x6v1jkmcwski\r\n ],\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._super(settings);\r\n self$$1._eventsRoot = self$$1;\r\n self$$1.classes.add('floatpanel');\r\n if (settings.autohide) {\r\n bindDocumentClickHandler();\r\n bindWindowResizeHandler();\r\n visiblePanels.push(self$$1);\r\n }\r\n if (settings.autofix) {\r\n bindDocumentScrollHandler();\r\n self$$1.on('move', function () {\r\n repositionPanel(this);\r\n });\r\n }\r\n self$$1.on('postrender show', function (e) {\r\n if (e.control === self$$1) {\r\n var $modalBlockEl_1;\r\n var prefix_1 = self$$1.classPrefix;\r\n if (self$$1.modal && !hasModal) {\r\n $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());\r\n if (!$modalBlockEl_1[0]) {\r\n $modalBlockEl_1 = global$9('
    ').appendTo(self$$1.getContainerElm());\r\n }\r\n global$7.setTimeout(function () {\r\n $modalBlockEl_1.addClass(prefix_1 + 'in');\r\n global$9(self$$1.getEl()).addClass(prefix_1 + 'in');\r\n });\r\n hasModal = true;\r\n }\r\n addRemove(true, self$$1);\r\n }\r\n });\r\n self$$1.on('show', function () {\r\n self$$1.parents().each(function (ctrl) {\r\n if (ctrl.state.get('fixed')) {\r\n self$$1.fixed(true);\r\n return false;\r\n }\r\n });\r\n });\r\n if (settings.popover) {\r\n self$$1._preBodyHtml = '
    ';\r\n self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');\r\n }\r\n self$$1.aria('label', settings.ariaLabel);\r\n self$$1.aria('labelledby', self$$1._id);\r\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\r\n },\r\n fixed: function (state) {\r\n var self$$1 = this;\r\n if (self$$1.state.get('fixed') !== state) {\r\n if (self$$1.state.get('rendered')) {\r\n var viewport = funcs.getViewPort();\r\n if (state) {\r\n self$$1.layoutRect().y -= viewport.y;\r\n } else {\r\n self$$1.layoutRect().y += viewport.y;\r\n }\r\n }\r\n self$$1.classes.toggle('fixed', state);\r\n self$$1.state.set('fixed', state);\r\n }\r\n return self$$1;\r\n },\r\n show: function () {\r\n var self$$1 = this;\r\n var i;\r\n var state = self$$1._super();\r\n i = visiblePanels.length;\r\n while (i--) {\r\n if (visiblePanels[i] === self$$1) {\r\n break;\r\n }\r\n }\r\n if (i === -1) {\r\n visiblePanels.push(self$$1);\r\n }\r\n return state;\r\n },\r\n hide: function () {\r\n removeVisiblePanel(this);\r\n addRemove(false, this);\r\n return this._super();\r\n },\r\n hideAll: function () {\r\n FloatPanel.hideAll();\r\n },\r\n close: function () {\r\n var self$$1 = this;\r\n if (!self$$1.fire('close').isDefaultPrevented()) {\r\n self$$1.remove();\r\n addRemove(false, self$$1);\r\n }\r\n return self$$1;\r\n },\r\n remove: function () {\r\n removeVisiblePanel(this);\r\n this._super();\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n if (self$$1.settings.bodyRole) {\r\n this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);\r\n }\r\n return self$$1._super();\r\n }\r\n });\r\n FloatPanel.hideAll = function () {\r\n var i = visiblePanels.length;\r\n while (i--) {\r\n var panel = visiblePanels[i];\r\n if (panel && panel.settings.autohide) {\r\n panel.hide();\r\n visiblePanels.splice(i, 1);\r\n }\r\n }\r\n };\r\n function removeVisiblePanel(panel) {\r\n var i;\r\n i = visiblePanels.length;\r\n while (i--) {\r\n if (visiblePanels[i] === panel) {\r\n visiblePanels.splice(i, 1);\r\n }\r\n }\r\n i = zOrder.length;\r\n while (i--) {\r\n if (zOrder[i] === panel) {\r\n zOrder.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n var isFixed$1 = function (inlineToolbarContainer, editor) {\r\n return !!(inlineToolbarContainer && !editor.settings.ui_container);\r\n };\r\n var render$1 = function (editor, theme, args) {\r\n var panel, inlineToolbarContainer;\r\n var DOM = global$3.DOM;\r\n var fixedToolbarContainer = getFixedToolbarContainer(editor);\r\n if (fixedToolbarContainer) {\r\n inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];\r\n }\r\n var reposition = function () {\r\n if (panel && panel.moveRel && panel.visible() && !panel._fixed) {\r\n var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();\r\n var deltaX = 0, deltaY = 0;\r\n if (scrollContainer) {\r\n var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);\r\n deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);\r\n deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);\r\n }\r\n panel.fixed(false).moveRel(body, editor.rtl ? [\r\n 'tr-br',\r\n 'br-tr'\r\n ] : [\r\n 'tl-bl',\r\n 'bl-tl',\r\n 'tr-br'\r\n ]).moveBy(deltaX, deltaY);\r\n }\r\n };\r\n var show = function () {\r\n if (panel) {\r\n panel.show();\r\n reposition();\r\n DOM.addClass(editor.getBody(), 'mce-edit-focus');\r\n }\r\n };\r\n var hide = function () {\r\n if (panel) {\r\n panel.hide();\r\n FloatPanel.hideAll();\r\n DOM.removeClass(editor.getBody(), 'mce-edit-focus');\r\n }\r\n };\r\n var render = function () {\r\n if (panel) {\r\n if (!panel.visible()) {\r\n show();\r\n }\r\n return;\r\n }\r\n panel = theme.panel = global$4.create({\r\n type: inlineToolbarContainer ? 'panel' : 'floatpanel',\r\n role: 'application',\r\n classes: 'tinymce tinymce-inline',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n autohide: false,\r\n autofix: isFixed$1(inlineToolbarContainer, editor),\r\n fixed: isFixed$1(inlineToolbarContainer, editor),\r\n border: 1,\r\n items: [\r\n hasMenubar(editor) === false ? null : {\r\n type: 'menubar',\r\n border: '0 0 1 0',\r\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\r\n },\r\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\r\n ]\r\n });\r\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\r\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\r\n if (inlineToolbarContainer) {\r\n panel.renderTo(inlineToolbarContainer).reflow();\r\n } else {\r\n panel.renderTo().reflow();\r\n }\r\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\r\n show();\r\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\r\n editor.on('nodeChange', reposition);\r\n editor.on('ResizeWindow', reposition);\r\n editor.on('activate', show);\r\n editor.on('deactivate', hide);\r\n editor.nodeChanged();\r\n };\r\n editor.settings.content_editable = true;\r\n editor.on('focus', function () {\r\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\r\n DOM.styleSheetLoader.load(args.skinUiCss, render, render);\r\n } else {\r\n render();\r\n }\r\n });\r\n editor.on('blur hide', hide);\r\n editor.on('remove', function () {\r\n if (panel) {\r\n panel.remove();\r\n panel = null;\r\n }\r\n });\r\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\r\n DOM.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\r\n } else {\r\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\r\n }\r\n return {};\r\n };\r\n var $_aqv3nuufjkmcwshc = { render: render$1 };\r\n\r\n function Throbber (elm, inline) {\r\n var self = this;\r\n var state;\r\n var classPrefix = Control$1.classPrefix;\r\n var timer;\r\n self.show = function (time, callback) {\r\n function render() {\r\n if (state) {\r\n global$9(elm).append('
    ');\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n self.hide();\r\n state = true;\r\n if (time) {\r\n timer = global$7.setTimeout(render, time);\r\n } else {\r\n render();\r\n }\r\n return self;\r\n };\r\n self.hide = function () {\r\n var child = elm.lastChild;\r\n global$7.clearTimeout(timer);\r\n if (child && child.className.indexOf('throbber') !== -1) {\r\n child.parentNode.removeChild(child);\r\n }\r\n state = false;\r\n return self;\r\n };\r\n }\r\n\r\n var setup = function (editor, theme) {\r\n var throbber;\r\n editor.on('ProgressState', function (e) {\r\n throbber = throbber || new Throbber(theme.panel.getEl('body'));\r\n if (e.state) {\r\n throbber.show(e.time);\r\n } else {\r\n throbber.hide();\r\n }\r\n });\r\n };\r\n var $_575jhev2jkmcwskj = { setup: setup };\r\n\r\n var renderUI = function (editor, theme, args) {\r\n var skinUrl = getSkinUrl(editor);\r\n if (skinUrl) {\r\n args.skinUiCss = skinUrl + '/skin.min.css';\r\n editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');\r\n }\r\n $_575jhev2jkmcwskj.setup(editor, theme);\r\n return isInline(editor) ? $_aqv3nuufjkmcwshc.render(editor, theme, args) : $_9mz4sntvjkmcwsft.render(editor, theme, args);\r\n };\r\n var $_7k92xgtrjkmcwsfn = { renderUI: renderUI };\r\n\r\n var Tooltip = Control$1.extend({\r\n Mixins: [$_77p0ikukjkmcwsie],\r\n Defaults: { classes: 'widget tooltip tooltip-n' },\r\n renderHtml: function () {\r\n var self = this, prefix = self.classPrefix;\r\n return '
    ' + '
    ' + '
    ' + self.encode(self.state.get('text')) + '
    ' + '
    ';\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:text', function (e) {\r\n self.getEl().lastChild.innerHTML = self.encode(e.value);\r\n });\r\n return self._super();\r\n },\r\n repaint: function () {\r\n var self = this;\r\n var style, rect;\r\n style = self.getEl().style;\r\n rect = self._layoutRect;\r\n style.left = rect.x + 'px';\r\n style.top = rect.y + 'px';\r\n style.zIndex = 65535 + 65535;\r\n }\r\n });\r\n\r\n var Widget = Control$1.extend({\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n settings = self.settings;\r\n self.canFocus = true;\r\n if (settings.tooltip && Widget.tooltips !== false) {\r\n self.on('mouseenter', function (e) {\r\n var tooltip = self.tooltip().moveTo(-65535);\r\n if (e.control === self) {\r\n var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [\r\n 'bc-tc',\r\n 'bc-tl',\r\n 'bc-tr'\r\n ]);\r\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\r\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\r\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\r\n tooltip.moveRel(self.getEl(), rel);\r\n } else {\r\n tooltip.hide();\r\n }\r\n });\r\n self.on('mouseleave mousedown click', function () {\r\n self.tooltip().remove();\r\n self._tooltip = null;\r\n });\r\n }\r\n self.aria('label', settings.ariaLabel || settings.tooltip);\r\n },\r\n tooltip: function () {\r\n if (!this._tooltip) {\r\n this._tooltip = new Tooltip({ type: 'tooltip' });\r\n $_5kmlp5u4jkmcwsge.inheritUiContainer(this, this._tooltip);\r\n this._tooltip.renderTo();\r\n }\r\n return this._tooltip;\r\n },\r\n postRender: function () {\r\n var self = this, settings = self.settings;\r\n self._super();\r\n if (!self.parent() && (settings.width || settings.height)) {\r\n self.initLayoutRect();\r\n self.repaint();\r\n }\r\n if (settings.autofocus) {\r\n self.focus();\r\n }\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n function disable(state) {\r\n self.aria('disabled', state);\r\n self.classes.toggle('disabled', state);\r\n }\r\n function active(state) {\r\n self.aria('pressed', state);\r\n self.classes.toggle('active', state);\r\n }\r\n self.state.on('change:disabled', function (e) {\r\n disable(e.value);\r\n });\r\n self.state.on('change:active', function (e) {\r\n active(e.value);\r\n });\r\n if (self.state.get('disabled')) {\r\n disable(true);\r\n }\r\n if (self.state.get('active')) {\r\n active(true);\r\n }\r\n return self._super();\r\n },\r\n remove: function () {\r\n this._super();\r\n if (this._tooltip) {\r\n this._tooltip.remove();\r\n this._tooltip = null;\r\n }\r\n }\r\n });\r\n\r\n var Progress = Widget.extend({\r\n Defaults: { value: 0 },\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n self.classes.add('progress');\r\n if (!self.settings.filter) {\r\n self.settings.filter = function (value) {\r\n return Math.round(value);\r\n };\r\n }\r\n },\r\n renderHtml: function () {\r\n var self = this, id = self._id, prefix = this.classPrefix;\r\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    0%
    ' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self._super();\r\n self.value(self.settings.value);\r\n return self;\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n function setValue(value) {\r\n value = self.settings.filter(value);\r\n self.getEl().lastChild.innerHTML = value + '%';\r\n self.getEl().firstChild.firstChild.style.width = value + '%';\r\n }\r\n self.state.on('change:value', function (e) {\r\n setValue(e.value);\r\n });\r\n setValue(self.state.get('value'));\r\n return self._super();\r\n }\r\n });\r\n\r\n var updateLiveRegion = function (ctx, text) {\r\n ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');\r\n };\r\n var Notification = Control$1.extend({\r\n Mixins: [$_77p0ikukjkmcwsie],\r\n Defaults: { classes: 'widget notification' },\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n self.maxWidth = settings.maxWidth;\r\n if (settings.text) {\r\n self.text(settings.text);\r\n }\r\n if (settings.icon) {\r\n self.icon = settings.icon;\r\n }\r\n if (settings.color) {\r\n self.color = settings.color;\r\n }\r\n if (settings.type) {\r\n self.classes.add('notification-' + settings.type);\r\n }\r\n if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {\r\n self.closeButton = false;\r\n } else {\r\n self.classes.add('has-close');\r\n self.closeButton = true;\r\n }\r\n if (settings.progressBar) {\r\n self.progressBar = new Progress();\r\n }\r\n self.on('click', function (e) {\r\n if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {\r\n self.close();\r\n }\r\n });\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var prefix = self.classPrefix;\r\n var icon = '', closeButton = '', progressBar = '', notificationStyle = '';\r\n if (self.icon) {\r\n icon = '';\r\n }\r\n notificationStyle = ' style=\"max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';\"' : '\"');\r\n if (self.closeButton) {\r\n closeButton = '';\r\n }\r\n if (self.progressBar) {\r\n progressBar = self.progressBar.renderHtml();\r\n }\r\n return '
    ' + icon + '
    ' + self.state.get('text') + '
    ' + progressBar + closeButton + '
    ' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this;\r\n global$7.setTimeout(function () {\r\n self.$el.addClass(self.classPrefix + 'in');\r\n updateLiveRegion(self, self.state.get('text'));\r\n }, 100);\r\n return self._super();\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:text', function (e) {\r\n self.getEl().firstChild.innerHTML = e.value;\r\n updateLiveRegion(self, e.value);\r\n });\r\n if (self.progressBar) {\r\n self.progressBar.bindStates();\r\n self.progressBar.state.on('change:value', function (e) {\r\n updateLiveRegion(self, self.state.get('text'));\r\n });\r\n }\r\n return self._super();\r\n },\r\n close: function () {\r\n var self = this;\r\n if (!self.fire('close').isDefaultPrevented()) {\r\n self.remove();\r\n }\r\n return self;\r\n },\r\n repaint: function () {\r\n var self = this;\r\n var style, rect;\r\n style = self.getEl().style;\r\n rect = self._layoutRect;\r\n style.left = rect.x + 'px';\r\n style.top = rect.y + 'px';\r\n style.zIndex = 65535 - 1;\r\n }\r\n });\r\n\r\n function NotificationManagerImpl (editor) {\r\n var getEditorContainer = function (editor) {\r\n return editor.inline ? editor.getElement() : editor.getContentAreaContainer();\r\n };\r\n var getContainerWidth = function () {\r\n var container = getEditorContainer(editor);\r\n return funcs.getSize(container).width;\r\n };\r\n var prePositionNotifications = function (notifications) {\r\n each(notifications, function (notification) {\r\n notification.moveTo(0, 0);\r\n });\r\n };\r\n var positionNotifications = function (notifications) {\r\n if (notifications.length > 0) {\r\n var firstItem = notifications.slice(0, 1)[0];\r\n var container = getEditorContainer(editor);\r\n firstItem.moveRel(container, 'tc-tc');\r\n each(notifications, function (notification, index) {\r\n if (index > 0) {\r\n notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');\r\n }\r\n });\r\n }\r\n };\r\n var reposition = function (notifications) {\r\n prePositionNotifications(notifications);\r\n positionNotifications(notifications);\r\n };\r\n var open = function (args, closeCallback) {\r\n var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });\r\n var notif = new Notification(extendedArgs);\r\n notif.args = extendedArgs;\r\n if (extendedArgs.timeout > 0) {\r\n notif.timer = setTimeout(function () {\r\n notif.close();\r\n closeCallback();\r\n }, extendedArgs.timeout);\r\n }\r\n notif.on('close', function () {\r\n closeCallback();\r\n });\r\n notif.renderTo();\r\n return notif;\r\n };\r\n var close = function (notification) {\r\n notification.close();\r\n };\r\n var getArgs = function (notification) {\r\n return notification.args;\r\n };\r\n return {\r\n open: open,\r\n close: close,\r\n reposition: reposition,\r\n getArgs: getArgs\r\n };\r\n }\r\n\r\n var windows = [];\r\n var oldMetaValue = '';\r\n function toggleFullScreenState(state) {\r\n var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';\r\n var viewport = global$9('meta[name=viewport]')[0], contentValue;\r\n if (global$8.overrideViewPort === false) {\r\n return;\r\n }\r\n if (!viewport) {\r\n viewport = document.createElement('meta');\r\n viewport.setAttribute('name', 'viewport');\r\n document.getElementsByTagName('head')[0].appendChild(viewport);\r\n }\r\n contentValue = viewport.getAttribute('content');\r\n if (contentValue && typeof oldMetaValue !== 'undefined') {\r\n oldMetaValue = contentValue;\r\n }\r\n viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);\r\n }\r\n function toggleBodyFullScreenClasses(classPrefix, state) {\r\n if (checkFullscreenWindows() && state === false) {\r\n global$9([\r\n document.documentElement,\r\n document.body\r\n ]).removeClass(classPrefix + 'fullscreen');\r\n }\r\n }\r\n function checkFullscreenWindows() {\r\n for (var i = 0; i < windows.length; i++) {\r\n if (windows[i]._fullscreen) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function handleWindowResize() {\r\n if (!global$8.desktop) {\r\n var lastSize_1 = {\r\n w: window.innerWidth,\r\n h: window.innerHeight\r\n };\r\n global$7.setInterval(function () {\r\n var w = window.innerWidth, h = window.innerHeight;\r\n if (lastSize_1.w !== w || lastSize_1.h !== h) {\r\n lastSize_1 = {\r\n w: w,\r\n h: h\r\n };\r\n global$9(window).trigger('resize');\r\n }\r\n }, 100);\r\n }\r\n function reposition() {\r\n var i;\r\n var rect = funcs.getWindowSize();\r\n var layoutRect;\r\n for (i = 0; i < windows.length; i++) {\r\n layoutRect = windows[i].layoutRect();\r\n windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));\r\n }\r\n }\r\n global$9(window).on('resize', reposition);\r\n }\r\n var Window$$1 = FloatPanel.extend({\r\n modal: true,\r\n Defaults: {\r\n border: 1,\r\n layout: 'flex',\r\n containerCls: 'panel',\r\n role: 'dialog',\r\n callbacks: {\r\n submit: function () {\r\n this.fire('submit', { data: this.toJSON() });\r\n },\r\n close: function () {\r\n this.close();\r\n }\r\n }\r\n },\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._super(settings);\r\n if (self$$1.isRtl()) {\r\n self$$1.classes.add('rtl');\r\n }\r\n self$$1.classes.add('window');\r\n self$$1.bodyClasses.add('window-body');\r\n self$$1.state.set('fixed', true);\r\n if (settings.buttons) {\r\n self$$1.statusbar = new Panel({\r\n layout: 'flex',\r\n border: '1 0 0 0',\r\n spacing: 3,\r\n padding: 10,\r\n align: 'center',\r\n pack: self$$1.isRtl() ? 'start' : 'end',\r\n defaults: { type: 'button' },\r\n items: settings.buttons\r\n });\r\n self$$1.statusbar.classes.add('foot');\r\n self$$1.statusbar.parent(self$$1);\r\n }\r\n self$$1.on('click', function (e) {\r\n var closeClass = self$$1.classPrefix + 'close';\r\n if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {\r\n self$$1.close();\r\n }\r\n });\r\n self$$1.on('cancel', function () {\r\n self$$1.close();\r\n });\r\n self$$1.on('move', function (e) {\r\n if (e.control === self$$1) {\r\n FloatPanel.hideAll();\r\n }\r\n });\r\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\r\n self$$1.aria('label', settings.title);\r\n self$$1._fullscreen = false;\r\n },\r\n recalc: function () {\r\n var self$$1 = this;\r\n var statusbar$$1 = self$$1.statusbar;\r\n var layoutRect, width, x, needsRecalc;\r\n if (self$$1._fullscreen) {\r\n self$$1.layoutRect(funcs.getWindowSize());\r\n self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;\r\n }\r\n self$$1._super();\r\n layoutRect = self$$1.layoutRect();\r\n if (self$$1.settings.title && !self$$1._fullscreen) {\r\n width = layoutRect.headerW;\r\n if (width > layoutRect.w) {\r\n x = layoutRect.x - Math.max(0, width / 2);\r\n self$$1.layoutRect({\r\n w: width,\r\n x: x\r\n });\r\n needsRecalc = true;\r\n }\r\n }\r\n if (statusbar$$1) {\r\n statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();\r\n width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;\r\n if (width > layoutRect.w) {\r\n x = layoutRect.x - Math.max(0, width - layoutRect.w);\r\n self$$1.layoutRect({\r\n w: width,\r\n x: x\r\n });\r\n needsRecalc = true;\r\n }\r\n }\r\n if (needsRecalc) {\r\n self$$1.recalc();\r\n }\r\n },\r\n initLayoutRect: function () {\r\n var self$$1 = this;\r\n var layoutRect = self$$1._super();\r\n var deltaH = 0, headEl;\r\n if (self$$1.settings.title && !self$$1._fullscreen) {\r\n headEl = self$$1.getEl('head');\r\n var size = funcs.getSize(headEl);\r\n layoutRect.headerW = size.width;\r\n layoutRect.headerH = size.height;\r\n deltaH += layoutRect.headerH;\r\n }\r\n if (self$$1.statusbar) {\r\n deltaH += self$$1.statusbar.layoutRect().h;\r\n }\r\n layoutRect.deltaH += deltaH;\r\n layoutRect.minH += deltaH;\r\n layoutRect.h += deltaH;\r\n var rect = funcs.getWindowSize();\r\n layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);\r\n layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);\r\n return layoutRect;\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;\r\n var settings = self$$1.settings;\r\n var headerHtml = '', footerHtml = '', html = settings.html;\r\n self$$1.preRender();\r\n layout.preRender(self$$1);\r\n if (settings.title) {\r\n headerHtml = '
    ' + '
    ' + self$$1.encode(settings.title) + '
    ' + '
    ' + '' + '
    ';\r\n }\r\n if (settings.url) {\r\n html = '';\r\n }\r\n if (typeof html === 'undefined') {\r\n html = layout.renderHtml(self$$1);\r\n }\r\n if (self$$1.statusbar) {\r\n footerHtml = self$$1.statusbar.renderHtml();\r\n }\r\n return '
    ' + '
    ' + headerHtml + '
    ' + html + '
    ' + footerHtml + '
    ' + '
    ';\r\n },\r\n fullscreen: function (state) {\r\n var self$$1 = this;\r\n var documentElement = document.documentElement;\r\n var slowRendering;\r\n var prefix = self$$1.classPrefix;\r\n var layoutRect;\r\n if (state !== self$$1._fullscreen) {\r\n global$9(window).on('resize', function () {\r\n var time;\r\n if (self$$1._fullscreen) {\r\n if (!slowRendering) {\r\n time = new Date().getTime();\r\n var rect = funcs.getWindowSize();\r\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\r\n if (new Date().getTime() - time > 50) {\r\n slowRendering = true;\r\n }\r\n } else {\r\n if (!self$$1._timer) {\r\n self$$1._timer = global$7.setTimeout(function () {\r\n var rect = funcs.getWindowSize();\r\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\r\n self$$1._timer = 0;\r\n }, 50);\r\n }\r\n }\r\n }\r\n });\r\n layoutRect = self$$1.layoutRect();\r\n self$$1._fullscreen = state;\r\n if (!state) {\r\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(self$$1.settings.border);\r\n self$$1.getEl('head').style.display = '';\r\n layoutRect.deltaH += layoutRect.headerH;\r\n global$9([\r\n documentElement,\r\n document.body\r\n ]).removeClass(prefix + 'fullscreen');\r\n self$$1.classes.remove('fullscreen');\r\n self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);\r\n } else {\r\n self$$1._initial = {\r\n x: layoutRect.x,\r\n y: layoutRect.y,\r\n w: layoutRect.w,\r\n h: layoutRect.h\r\n };\r\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox('0');\r\n self$$1.getEl('head').style.display = 'none';\r\n layoutRect.deltaH -= layoutRect.headerH + 2;\r\n global$9([\r\n documentElement,\r\n document.body\r\n ]).addClass(prefix + 'fullscreen');\r\n self$$1.classes.add('fullscreen');\r\n var rect = funcs.getWindowSize();\r\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\r\n }\r\n }\r\n return self$$1.reflow();\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n var startPos;\r\n setTimeout(function () {\r\n self$$1.classes.add('in');\r\n self$$1.fire('open');\r\n }, 0);\r\n self$$1._super();\r\n if (self$$1.statusbar) {\r\n self$$1.statusbar.postRender();\r\n }\r\n self$$1.focus();\r\n this.dragHelper = new DragHelper(self$$1._id + '-dragh', {\r\n start: function () {\r\n startPos = {\r\n x: self$$1.layoutRect().x,\r\n y: self$$1.layoutRect().y\r\n };\r\n },\r\n drag: function (e) {\r\n self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);\r\n }\r\n });\r\n self$$1.on('submit', function (e) {\r\n if (!e.isDefaultPrevented()) {\r\n self$$1.close();\r\n }\r\n });\r\n windows.push(self$$1);\r\n toggleFullScreenState(true);\r\n },\r\n submit: function () {\r\n return this.fire('submit', { data: this.toJSON() });\r\n },\r\n remove: function () {\r\n var self$$1 = this;\r\n var i;\r\n self$$1.dragHelper.destroy();\r\n self$$1._super();\r\n if (self$$1.statusbar) {\r\n this.statusbar.remove();\r\n }\r\n toggleBodyFullScreenClasses(self$$1.classPrefix, false);\r\n i = windows.length;\r\n while (i--) {\r\n if (windows[i] === self$$1) {\r\n windows.splice(i, 1);\r\n }\r\n }\r\n toggleFullScreenState(windows.length > 0);\r\n },\r\n getContentWindow: function () {\r\n var ifr = this.getEl().getElementsByTagName('iframe')[0];\r\n return ifr ? ifr.contentWindow : null;\r\n }\r\n });\r\n handleWindowResize();\r\n\r\n var MessageBox = Window$$1.extend({\r\n init: function (settings) {\r\n settings = {\r\n border: 1,\r\n padding: 20,\r\n layout: 'flex',\r\n pack: 'center',\r\n align: 'center',\r\n containerCls: 'panel',\r\n autoScroll: true,\r\n buttons: {\r\n type: 'button',\r\n text: 'Ok',\r\n action: 'ok'\r\n },\r\n items: {\r\n type: 'label',\r\n multiline: true,\r\n maxWidth: 500,\r\n maxHeight: 200\r\n }\r\n };\r\n this._super(settings);\r\n },\r\n Statics: {\r\n OK: 1,\r\n OK_CANCEL: 2,\r\n YES_NO: 3,\r\n YES_NO_CANCEL: 4,\r\n msgBox: function (settings) {\r\n var buttons;\r\n var callback = settings.callback || function () {\r\n };\r\n function createButton(text, status$$1, primary) {\r\n return {\r\n type: 'button',\r\n text: text,\r\n subtype: primary ? 'primary' : '',\r\n onClick: function (e) {\r\n e.control.parents()[1].close();\r\n callback(status$$1);\r\n }\r\n };\r\n }\r\n switch (settings.buttons) {\r\n case MessageBox.OK_CANCEL:\r\n buttons = [\r\n createButton('Ok', true, true),\r\n createButton('Cancel', false)\r\n ];\r\n break;\r\n case MessageBox.YES_NO:\r\n case MessageBox.YES_NO_CANCEL:\r\n buttons = [\r\n createButton('Yes', 1, true),\r\n createButton('No', 0)\r\n ];\r\n if (settings.buttons === MessageBox.YES_NO_CANCEL) {\r\n buttons.push(createButton('Cancel', -1));\r\n }\r\n break;\r\n default:\r\n buttons = [createButton('Ok', true, true)];\r\n break;\r\n }\r\n return new Window$$1({\r\n padding: 20,\r\n x: settings.x,\r\n y: settings.y,\r\n minWidth: 300,\r\n minHeight: 100,\r\n layout: 'flex',\r\n pack: 'center',\r\n align: 'center',\r\n buttons: buttons,\r\n title: settings.title,\r\n role: 'alertdialog',\r\n items: {\r\n type: 'label',\r\n multiline: true,\r\n maxWidth: 500,\r\n maxHeight: 200,\r\n text: settings.text\r\n },\r\n onPostRender: function () {\r\n this.aria('describedby', this.items()[0]._id);\r\n },\r\n onClose: settings.onClose,\r\n onCancel: function () {\r\n callback(false);\r\n }\r\n }).renderTo(document.body).reflow();\r\n },\r\n alert: function (settings, callback) {\r\n if (typeof settings === 'string') {\r\n settings = { text: settings };\r\n }\r\n settings.callback = callback;\r\n return MessageBox.msgBox(settings);\r\n },\r\n confirm: function (settings, callback) {\r\n if (typeof settings === 'string') {\r\n settings = { text: settings };\r\n }\r\n settings.callback = callback;\r\n settings.buttons = MessageBox.OK_CANCEL;\r\n return MessageBox.msgBox(settings);\r\n }\r\n }\r\n });\r\n\r\n function WindowManagerImpl (editor) {\r\n var open$$1 = function (args, params, closeCallback) {\r\n var win;\r\n args.title = args.title || ' ';\r\n args.url = args.url || args.file;\r\n if (args.url) {\r\n args.width = parseInt(args.width || 320, 10);\r\n args.height = parseInt(args.height || 240, 10);\r\n }\r\n if (args.body) {\r\n args.items = {\r\n defaults: args.defaults,\r\n type: args.bodyType || 'form',\r\n items: args.body,\r\n data: args.data,\r\n callbacks: args.commands\r\n };\r\n }\r\n if (!args.url && !args.buttons) {\r\n args.buttons = [\r\n {\r\n text: 'Ok',\r\n subtype: 'primary',\r\n onclick: function () {\r\n win.find('form')[0].submit();\r\n }\r\n },\r\n {\r\n text: 'Cancel',\r\n onclick: function () {\r\n win.close();\r\n }\r\n }\r\n ];\r\n }\r\n win = new Window$$1(args);\r\n win.on('close', function () {\r\n closeCallback(win);\r\n });\r\n if (args.data) {\r\n win.on('postRender', function () {\r\n this.find('*').each(function (ctrl) {\r\n var name$$1 = ctrl.name();\r\n if (name$$1 in args.data) {\r\n ctrl.value(args.data[name$$1]);\r\n }\r\n });\r\n });\r\n }\r\n win.features = args || {};\r\n win.params = params || {};\r\n win = win.renderTo(document.body).reflow();\r\n return win;\r\n };\r\n var alert$$1 = function (message, choiceCallback, closeCallback) {\r\n var win;\r\n win = MessageBox.alert(message, function () {\r\n choiceCallback();\r\n });\r\n win.on('close', function () {\r\n closeCallback(win);\r\n });\r\n return win;\r\n };\r\n var confirm$$1 = function (message, choiceCallback, closeCallback) {\r\n var win;\r\n win = MessageBox.confirm(message, function (state) {\r\n choiceCallback(state);\r\n });\r\n win.on('close', function () {\r\n closeCallback(win);\r\n });\r\n return win;\r\n };\r\n var close$$1 = function (window$$1) {\r\n window$$1.close();\r\n };\r\n var getParams = function (window$$1) {\r\n return window$$1.params;\r\n };\r\n var setParams = function (window$$1, params) {\r\n window$$1.params = params;\r\n };\r\n return {\r\n open: open$$1,\r\n alert: alert$$1,\r\n confirm: confirm$$1,\r\n close: close$$1,\r\n getParams: getParams,\r\n setParams: setParams\r\n };\r\n }\r\n\r\n var get = function (editor) {\r\n var renderUI = function (args) {\r\n return $_7k92xgtrjkmcwsfn.renderUI(editor, this, args);\r\n };\r\n var resizeTo = function (w, h) {\r\n return $_focm2tubjkmcwsh5.resizeTo(editor, w, h);\r\n };\r\n var resizeBy = function (dw, dh) {\r\n return $_focm2tubjkmcwsh5.resizeBy(editor, dw, dh);\r\n };\r\n var getNotificationManagerImpl = function () {\r\n return NotificationManagerImpl(editor);\r\n };\r\n var getWindowManagerImpl = function () {\r\n return WindowManagerImpl(editor);\r\n };\r\n return {\r\n renderUI: renderUI,\r\n resizeTo: resizeTo,\r\n resizeBy: resizeBy,\r\n getNotificationManagerImpl: getNotificationManagerImpl,\r\n getWindowManagerImpl: getWindowManagerImpl\r\n };\r\n };\r\n var $_f0tepxtqjkmcwsfm = { get: get };\r\n\r\n var Layout = global$10.extend({\r\n Defaults: {\r\n firstControlClass: 'first',\r\n lastControlClass: 'last'\r\n },\r\n init: function (settings) {\r\n this.settings = global$2.extend({}, this.Defaults, settings);\r\n },\r\n preRender: function (container) {\r\n container.bodyClasses.add(this.settings.containerClass);\r\n },\r\n applyClasses: function (items) {\r\n var self = this;\r\n var settings = self.settings;\r\n var firstClass, lastClass, firstItem, lastItem;\r\n firstClass = settings.firstControlClass;\r\n lastClass = settings.lastControlClass;\r\n items.each(function (item) {\r\n item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);\r\n if (item.visible()) {\r\n if (!firstItem) {\r\n firstItem = item;\r\n }\r\n lastItem = item;\r\n }\r\n });\r\n if (firstItem) {\r\n firstItem.classes.add(firstClass);\r\n }\r\n if (lastItem) {\r\n lastItem.classes.add(lastClass);\r\n }\r\n },\r\n renderHtml: function (container) {\r\n var self = this;\r\n var html = '';\r\n self.applyClasses(container.items());\r\n container.items().each(function (item) {\r\n html += item.renderHtml();\r\n });\r\n return html;\r\n },\r\n recalc: function () {\r\n },\r\n postRender: function () {\r\n },\r\n isNative: function () {\r\n return false;\r\n }\r\n });\r\n\r\n var AbsoluteLayout = Layout.extend({\r\n Defaults: {\r\n containerClass: 'abs-layout',\r\n controlClass: 'abs-layout-item'\r\n },\r\n recalc: function (container) {\r\n container.items().filter(':visible').each(function (ctrl) {\r\n var settings = ctrl.settings;\r\n ctrl.layoutRect({\r\n x: settings.x,\r\n y: settings.y,\r\n w: settings.w,\r\n h: settings.h\r\n });\r\n if (ctrl.recalc) {\r\n ctrl.recalc();\r\n }\r\n });\r\n },\r\n renderHtml: function (container) {\r\n return '
    ' + this._super(container);\r\n }\r\n });\r\n\r\n var Button = Widget.extend({\r\n Defaults: {\r\n classes: 'widget btn',\r\n role: 'button'\r\n },\r\n init: function (settings) {\r\n var self$$1 = this;\r\n var size;\r\n self$$1._super(settings);\r\n settings = self$$1.settings;\r\n size = self$$1.settings.size;\r\n self$$1.on('click mousedown', function (e) {\r\n e.preventDefault();\r\n });\r\n self$$1.on('touchstart', function (e) {\r\n self$$1.fire('click', e);\r\n e.preventDefault();\r\n });\r\n if (settings.subtype) {\r\n self$$1.classes.add(settings.subtype);\r\n }\r\n if (size) {\r\n self$$1.classes.add('btn-' + size);\r\n }\r\n if (settings.icon) {\r\n self$$1.icon(settings.icon);\r\n }\r\n },\r\n icon: function (icon) {\r\n if (!arguments.length) {\r\n return this.state.get('icon');\r\n }\r\n this.state.set('icon', icon);\r\n return this;\r\n },\r\n repaint: function () {\r\n var btnElm = this.getEl().firstChild;\r\n var btnStyle;\r\n if (btnElm) {\r\n btnStyle = btnElm.style;\r\n btnStyle.width = btnStyle.height = '100%';\r\n }\r\n this._super();\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\r\n var icon = self$$1.state.get('icon'), image;\r\n var text = self$$1.state.get('text');\r\n var textHtml = '';\r\n var ariaPressed;\r\n var settings = self$$1.settings;\r\n image = settings.image;\r\n if (image) {\r\n icon = 'none';\r\n if (typeof image !== 'string') {\r\n image = window.getSelection ? image[0] : image[1];\r\n }\r\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\r\n } else {\r\n image = '';\r\n }\r\n if (text) {\r\n self$$1.classes.add('btn-has-text');\r\n textHtml = '' + self$$1.encode(text) + '';\r\n }\r\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\r\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\r\n return '
    ' + '' + '
    ';\r\n },\r\n bindStates: function () {\r\n var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';\r\n function setButtonText(text) {\r\n var $span = $('span.' + textCls, self$$1.getEl());\r\n if (text) {\r\n if (!$span[0]) {\r\n $('button:first', self$$1.getEl()).append('');\r\n $span = $('span.' + textCls, self$$1.getEl());\r\n }\r\n $span.html(self$$1.encode(text));\r\n } else {\r\n $span.remove();\r\n }\r\n self$$1.classes.toggle('btn-has-text', !!text);\r\n }\r\n self$$1.state.on('change:text', function (e) {\r\n setButtonText(e.value);\r\n });\r\n self$$1.state.on('change:icon', function (e) {\r\n var icon = e.value;\r\n var prefix = self$$1.classPrefix;\r\n self$$1.settings.icon = icon;\r\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\r\n var btnElm = self$$1.getEl().firstChild;\r\n var iconElm = btnElm.getElementsByTagName('i')[0];\r\n if (icon) {\r\n if (!iconElm || iconElm !== btnElm.firstChild) {\r\n iconElm = document.createElement('i');\r\n btnElm.insertBefore(iconElm, btnElm.firstChild);\r\n }\r\n iconElm.className = icon;\r\n } else if (iconElm) {\r\n btnElm.removeChild(iconElm);\r\n }\r\n setButtonText(self$$1.state.get('text'));\r\n });\r\n return self$$1._super();\r\n }\r\n });\r\n\r\n var BrowseButton = Button.extend({\r\n init: function (settings) {\r\n var self = this;\r\n settings = global$2.extend({\r\n text: 'Browse...',\r\n multiple: false,\r\n accept: null\r\n }, settings);\r\n self._super(settings);\r\n self.classes.add('browsebutton');\r\n if (settings.multiple) {\r\n self.classes.add('multiple');\r\n }\r\n },\r\n postRender: function () {\r\n var self = this;\r\n var input = funcs.create('input', {\r\n type: 'file',\r\n id: self._id + '-browse',\r\n accept: self.settings.accept\r\n });\r\n self._super();\r\n global$9(input).on('change', function (e) {\r\n var files = e.target.files;\r\n self.value = function () {\r\n if (!files.length) {\r\n return null;\r\n } else if (self.settings.multiple) {\r\n return files;\r\n } else {\r\n return files[0];\r\n }\r\n };\r\n e.preventDefault();\r\n if (files.length) {\r\n self.fire('change', e);\r\n }\r\n });\r\n global$9(input).on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n global$9(self.getEl('button')).on('click', function (e) {\r\n e.stopPropagation();\r\n input.click();\r\n });\r\n self.getEl().appendChild(input);\r\n },\r\n remove: function () {\r\n global$9(this.getEl('button')).off();\r\n global$9(this.getEl('input')).off();\r\n this._super();\r\n }\r\n });\r\n\r\n var ButtonGroup = Container.extend({\r\n Defaults: {\r\n defaultType: 'button',\r\n role: 'group'\r\n },\r\n renderHtml: function () {\r\n var self = this, layout = self._layout;\r\n self.classes.add('btn-group');\r\n self.preRender();\r\n layout.preRender(self);\r\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\r\n }\r\n });\r\n\r\n var Checkbox = Widget.extend({\r\n Defaults: {\r\n classes: 'checkbox',\r\n role: 'checkbox',\r\n checked: false\r\n },\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._super(settings);\r\n self$$1.on('click mousedown', function (e) {\r\n e.preventDefault();\r\n });\r\n self$$1.on('click', function (e) {\r\n e.preventDefault();\r\n if (!self$$1.disabled()) {\r\n self$$1.checked(!self$$1.checked());\r\n }\r\n });\r\n self$$1.checked(self$$1.settings.checked);\r\n },\r\n checked: function (state) {\r\n if (!arguments.length) {\r\n return this.state.get('checked');\r\n }\r\n this.state.set('checked', state);\r\n return this;\r\n },\r\n value: function (state) {\r\n if (!arguments.length) {\r\n return this.checked();\r\n }\r\n return this.checked(state);\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\r\n return '
    ' + '' + '' + self$$1.encode(self$$1.state.get('text')) + '' + '
    ';\r\n },\r\n bindStates: function () {\r\n var self$$1 = this;\r\n function checked(state) {\r\n self$$1.classes.toggle('checked', state);\r\n self$$1.aria('checked', state);\r\n }\r\n self$$1.state.on('change:text', function (e) {\r\n self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);\r\n });\r\n self$$1.state.on('change:checked change:value', function (e) {\r\n self$$1.fire('change');\r\n checked(e.value);\r\n });\r\n self$$1.state.on('change:icon', function (e) {\r\n var icon = e.value;\r\n var prefix = self$$1.classPrefix;\r\n if (typeof icon === 'undefined') {\r\n return self$$1.settings.icon;\r\n }\r\n self$$1.settings.icon = icon;\r\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\r\n var btnElm = self$$1.getEl().firstChild;\r\n var iconElm = btnElm.getElementsByTagName('i')[0];\r\n if (icon) {\r\n if (!iconElm || iconElm !== btnElm.firstChild) {\r\n iconElm = document.createElement('i');\r\n btnElm.insertBefore(iconElm, btnElm.firstChild);\r\n }\r\n iconElm.className = icon;\r\n } else if (iconElm) {\r\n btnElm.removeChild(iconElm);\r\n }\r\n });\r\n if (self$$1.state.get('checked')) {\r\n checked(true);\r\n }\r\n return self$$1._super();\r\n }\r\n });\r\n\r\n var global$13 = tinymce.util.Tools.resolve('tinymce.util.VK');\r\n\r\n var ComboBox = Widget.extend({\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._super(settings);\r\n settings = self$$1.settings;\r\n self$$1.classes.add('combobox');\r\n self$$1.subinput = true;\r\n self$$1.ariaTarget = 'inp';\r\n settings.menu = settings.menu || settings.values;\r\n if (settings.menu) {\r\n settings.icon = 'caret';\r\n }\r\n self$$1.on('click', function (e) {\r\n var elm = e.target;\r\n var root = self$$1.getEl();\r\n if (!global$9.contains(root, elm) && elm !== root) {\r\n return;\r\n }\r\n while (elm && elm !== root) {\r\n if (elm.id && elm.id.indexOf('-open') !== -1) {\r\n self$$1.fire('action');\r\n if (settings.menu) {\r\n self$$1.showMenu();\r\n if (e.aria) {\r\n self$$1.menu.items()[0].focus();\r\n }\r\n }\r\n }\r\n elm = elm.parentNode;\r\n }\r\n });\r\n self$$1.on('keydown', function (e) {\r\n var rootControl;\r\n if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {\r\n e.preventDefault();\r\n self$$1.parents().reverse().each(function (ctrl) {\r\n if (ctrl.toJSON) {\r\n rootControl = ctrl;\r\n return false;\r\n }\r\n });\r\n self$$1.fire('submit', { data: rootControl.toJSON() });\r\n }\r\n });\r\n self$$1.on('keyup', function (e) {\r\n if (e.target.nodeName === 'INPUT') {\r\n var oldValue = self$$1.state.get('value');\r\n var newValue = e.target.value;\r\n if (newValue !== oldValue) {\r\n self$$1.state.set('value', newValue);\r\n self$$1.fire('autocomplete', e);\r\n }\r\n }\r\n });\r\n self$$1.on('mouseover', function (e) {\r\n var tooltip = self$$1.tooltip().moveTo(-65535);\r\n if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {\r\n var statusMessage = self$$1.statusMessage() || 'Ok';\r\n var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [\r\n 'bc-tc',\r\n 'bc-tl',\r\n 'bc-tr'\r\n ]);\r\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\r\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\r\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\r\n tooltip.moveRel(e.target, rel);\r\n }\r\n });\r\n },\r\n statusLevel: function (value) {\r\n if (arguments.length > 0) {\r\n this.state.set('statusLevel', value);\r\n }\r\n return this.state.get('statusLevel');\r\n },\r\n statusMessage: function (value) {\r\n if (arguments.length > 0) {\r\n this.state.set('statusMessage', value);\r\n }\r\n return this.state.get('statusMessage');\r\n },\r\n showMenu: function () {\r\n var self$$1 = this;\r\n var settings = self$$1.settings;\r\n var menu;\r\n if (!self$$1.menu) {\r\n menu = settings.menu || [];\r\n if (menu.length) {\r\n menu = {\r\n type: 'menu',\r\n items: menu\r\n };\r\n } else {\r\n menu.type = menu.type || 'menu';\r\n }\r\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());\r\n self$$1.fire('createmenu');\r\n self$$1.menu.reflow();\r\n self$$1.menu.on('cancel', function (e) {\r\n if (e.control === self$$1.menu) {\r\n self$$1.focus();\r\n }\r\n });\r\n self$$1.menu.on('show hide', function (e) {\r\n e.control.items().each(function (ctrl) {\r\n ctrl.active(ctrl.value() === self$$1.value());\r\n });\r\n }).fire('show');\r\n self$$1.menu.on('select', function (e) {\r\n self$$1.value(e.control.value());\r\n });\r\n self$$1.on('focusin', function (e) {\r\n if (e.target.tagName.toUpperCase() === 'INPUT') {\r\n self$$1.menu.hide();\r\n }\r\n });\r\n self$$1.aria('expanded', true);\r\n }\r\n self$$1.menu.show();\r\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\r\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\r\n 'br-tr',\r\n 'tr-br'\r\n ] : [\r\n 'bl-tl',\r\n 'tl-bl'\r\n ]);\r\n },\r\n focus: function () {\r\n this.getEl('inp').focus();\r\n },\r\n repaint: function () {\r\n var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();\r\n var width, lineHeight, innerPadding = 0;\r\n var inputElm = elm.firstChild;\r\n if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {\r\n innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);\r\n }\r\n if (openElm) {\r\n width = rect.w - funcs.getSize(openElm).width - 10;\r\n } else {\r\n width = rect.w - 10;\r\n }\r\n var doc = document;\r\n if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\r\n lineHeight = self$$1.layoutRect().h - 2 + 'px';\r\n }\r\n global$9(inputElm).css({\r\n width: width - innerPadding,\r\n lineHeight: lineHeight\r\n });\r\n self$$1._super();\r\n return self$$1;\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n global$9(this.getEl('inp')).on('change', function (e) {\r\n self$$1.state.set('value', e.target.value);\r\n self$$1.fire('change', e);\r\n });\r\n return self$$1._super();\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;\r\n var value = self$$1.state.get('value') || '';\r\n var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';\r\n if ('spellcheck' in settings) {\r\n extraAttrs += ' spellcheck=\"' + settings.spellcheck + '\"';\r\n }\r\n if (settings.maxLength) {\r\n extraAttrs += ' maxlength=\"' + settings.maxLength + '\"';\r\n }\r\n if (settings.size) {\r\n extraAttrs += ' size=\"' + settings.size + '\"';\r\n }\r\n if (settings.subtype) {\r\n extraAttrs += ' type=\"' + settings.subtype + '\"';\r\n }\r\n statusHtml = '';\r\n if (self$$1.disabled()) {\r\n extraAttrs += ' disabled=\"disabled\"';\r\n }\r\n icon = settings.icon;\r\n if (icon && icon !== 'caret') {\r\n icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;\r\n }\r\n text = self$$1.state.get('text');\r\n if (icon || text) {\r\n openBtnHtml = '
    ' + '' + '
    ';\r\n self$$1.classes.add('has-open');\r\n }\r\n return '
    ' + '' + statusHtml + openBtnHtml + '
    ';\r\n },\r\n value: function (value) {\r\n if (arguments.length) {\r\n this.state.set('value', value);\r\n return this;\r\n }\r\n if (this.state.get('rendered')) {\r\n this.state.set('value', this.getEl('inp').value);\r\n }\r\n return this.state.get('value');\r\n },\r\n showAutoComplete: function (items, term) {\r\n var self$$1 = this;\r\n if (items.length === 0) {\r\n self$$1.hideMenu();\r\n return;\r\n }\r\n var insert = function (value, title) {\r\n return function () {\r\n self$$1.fire('selectitem', {\r\n title: title,\r\n value: value\r\n });\r\n };\r\n };\r\n if (self$$1.menu) {\r\n self$$1.menu.items().remove();\r\n } else {\r\n self$$1.menu = global$4.create({\r\n type: 'menu',\r\n classes: 'combobox-menu',\r\n layout: 'flow'\r\n }).parent(self$$1).renderTo();\r\n }\r\n global$2.each(items, function (item) {\r\n self$$1.menu.add({\r\n text: item.title,\r\n url: item.previewUrl,\r\n match: term,\r\n classes: 'menu-item-ellipsis',\r\n onclick: insert(item.value, item.title)\r\n });\r\n });\r\n self$$1.menu.renderNew();\r\n self$$1.hideMenu();\r\n self$$1.menu.on('cancel', function (e) {\r\n if (e.control.parent() === self$$1.menu) {\r\n e.stopPropagation();\r\n self$$1.focus();\r\n self$$1.hideMenu();\r\n }\r\n });\r\n self$$1.menu.on('select', function () {\r\n self$$1.focus();\r\n });\r\n var maxW = self$$1.layoutRect().w;\r\n self$$1.menu.layoutRect({\r\n w: maxW,\r\n minW: 0,\r\n maxW: maxW\r\n });\r\n self$$1.menu.repaint();\r\n self$$1.menu.reflow();\r\n self$$1.menu.show();\r\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\r\n 'br-tr',\r\n 'tr-br'\r\n ] : [\r\n 'bl-tl',\r\n 'tl-bl'\r\n ]);\r\n },\r\n hideMenu: function () {\r\n if (this.menu) {\r\n this.menu.hide();\r\n }\r\n },\r\n bindStates: function () {\r\n var self$$1 = this;\r\n self$$1.state.on('change:value', function (e) {\r\n if (self$$1.getEl('inp').value !== e.value) {\r\n self$$1.getEl('inp').value = e.value;\r\n }\r\n });\r\n self$$1.state.on('change:disabled', function (e) {\r\n self$$1.getEl('inp').disabled = e.value;\r\n });\r\n self$$1.state.on('change:statusLevel', function (e) {\r\n var statusIconElm = self$$1.getEl('status');\r\n var prefix = self$$1.classPrefix, value = e.value;\r\n funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');\r\n funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');\r\n funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');\r\n funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');\r\n self$$1.classes.toggle('has-status', value !== 'none');\r\n self$$1.repaint();\r\n });\r\n funcs.on(self$$1.getEl('status'), 'mouseleave', function () {\r\n self$$1.tooltip().hide();\r\n });\r\n self$$1.on('cancel', function (e) {\r\n if (self$$1.menu && self$$1.menu.visible()) {\r\n e.stopPropagation();\r\n self$$1.hideMenu();\r\n }\r\n });\r\n var focusIdx = function (idx, menu) {\r\n if (menu && menu.items().length > 0) {\r\n menu.items().eq(idx)[0].focus();\r\n }\r\n };\r\n self$$1.on('keydown', function (e) {\r\n var keyCode = e.keyCode;\r\n if (e.target.nodeName === 'INPUT') {\r\n if (keyCode === global$13.DOWN) {\r\n e.preventDefault();\r\n self$$1.fire('autocomplete');\r\n focusIdx(0, self$$1.menu);\r\n } else if (keyCode === global$13.UP) {\r\n e.preventDefault();\r\n focusIdx(-1, self$$1.menu);\r\n }\r\n }\r\n });\r\n return self$$1._super();\r\n },\r\n remove: function () {\r\n global$9(this.getEl('inp')).off();\r\n if (this.menu) {\r\n this.menu.remove();\r\n }\r\n this._super();\r\n }\r\n });\r\n\r\n var ColorBox = ComboBox.extend({\r\n init: function (settings) {\r\n var self = this;\r\n settings.spellcheck = false;\r\n if (settings.onaction) {\r\n settings.icon = 'none';\r\n }\r\n self._super(settings);\r\n self.classes.add('colorbox');\r\n self.on('change keyup postrender', function () {\r\n self.repaintColor(self.value());\r\n });\r\n },\r\n repaintColor: function (value) {\r\n var openElm = this.getEl('open');\r\n var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;\r\n if (elm) {\r\n try {\r\n elm.style.background = value;\r\n } catch (ex) {\r\n }\r\n }\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:value', function (e) {\r\n if (self.state.get('rendered')) {\r\n self.repaintColor(e.value);\r\n }\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var PanelButton = Button.extend({\r\n showPanel: function () {\r\n var self = this, settings = self.settings;\r\n self.classes.add('opened');\r\n if (!self.panel) {\r\n var panelSettings = settings.panel;\r\n if (panelSettings.type) {\r\n panelSettings = {\r\n layout: 'grid',\r\n items: panelSettings\r\n };\r\n }\r\n panelSettings.role = panelSettings.role || 'dialog';\r\n panelSettings.popover = true;\r\n panelSettings.autohide = true;\r\n panelSettings.ariaRoot = true;\r\n self.panel = new FloatPanel(panelSettings).on('hide', function () {\r\n self.classes.remove('opened');\r\n }).on('cancel', function (e) {\r\n e.stopPropagation();\r\n self.focus();\r\n self.hidePanel();\r\n }).parent(self).renderTo(self.getContainerElm());\r\n self.panel.fire('show');\r\n self.panel.reflow();\r\n } else {\r\n self.panel.show();\r\n }\r\n var rtlRels = [\r\n 'bc-tc',\r\n 'bc-tl',\r\n 'bc-tr'\r\n ];\r\n var ltrRels = [\r\n 'bc-tc',\r\n 'bc-tr',\r\n 'bc-tl',\r\n 'tc-bc',\r\n 'tc-br',\r\n 'tc-bl'\r\n ];\r\n var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));\r\n self.panel.classes.toggle('start', rel.substr(-1) === 'l');\r\n self.panel.classes.toggle('end', rel.substr(-1) === 'r');\r\n var isTop = rel.substr(0, 1) === 't';\r\n self.panel.classes.toggle('bottom', !isTop);\r\n self.panel.classes.toggle('top', isTop);\r\n self.panel.moveRel(self.getEl(), rel);\r\n },\r\n hidePanel: function () {\r\n var self = this;\r\n if (self.panel) {\r\n self.panel.hide();\r\n }\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self.aria('haspopup', true);\r\n self.on('click', function (e) {\r\n if (e.control === self) {\r\n if (self.panel && self.panel.visible()) {\r\n self.hidePanel();\r\n } else {\r\n self.showPanel();\r\n self.panel.focus(!!e.aria);\r\n }\r\n }\r\n });\r\n return self._super();\r\n },\r\n remove: function () {\r\n if (this.panel) {\r\n this.panel.remove();\r\n this.panel = null;\r\n }\r\n return this._super();\r\n }\r\n });\r\n\r\n var DOM$3 = global$3.DOM;\r\n var ColorButton = PanelButton.extend({\r\n init: function (settings) {\r\n this._super(settings);\r\n this.classes.add('splitbtn');\r\n this.classes.add('colorbutton');\r\n },\r\n color: function (color) {\r\n if (color) {\r\n this._color = color;\r\n this.getEl('preview').style.backgroundColor = color;\r\n return this;\r\n }\r\n return this._color;\r\n },\r\n resetColor: function () {\r\n this._color = null;\r\n this.getEl('preview').style.backgroundColor = null;\r\n return this;\r\n },\r\n renderHtml: function () {\r\n var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');\r\n var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';\r\n var image = self.settings.image ? ' style=\"background-image: url(\\'' + self.settings.image + '\\')\"' : '';\r\n var textHtml = '';\r\n if (text) {\r\n self.classes.add('btn-has-text');\r\n textHtml = '' + self.encode(text) + '';\r\n }\r\n return '
    ' + '' + '' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this, onClickHandler = self.settings.onclick;\r\n self.on('click', function (e) {\r\n if (e.aria && e.aria.key === 'down') {\r\n return;\r\n }\r\n if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {\r\n e.stopImmediatePropagation();\r\n onClickHandler.call(self, e);\r\n }\r\n });\r\n delete self.settings.onclick;\r\n return self._super();\r\n }\r\n });\r\n\r\n var global$14 = tinymce.util.Tools.resolve('tinymce.util.Color');\r\n\r\n var ColorPicker = Widget.extend({\r\n Defaults: { classes: 'widget colorpicker' },\r\n init: function (settings) {\r\n this._super(settings);\r\n },\r\n postRender: function () {\r\n var self = this;\r\n var color = self.color();\r\n var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;\r\n hueRootElm = self.getEl('h');\r\n huePointElm = self.getEl('hp');\r\n svRootElm = self.getEl('sv');\r\n svPointElm = self.getEl('svp');\r\n function getPos(elm, event) {\r\n var pos = funcs.getPos(elm);\r\n var x, y;\r\n x = event.pageX - pos.x;\r\n y = event.pageY - pos.y;\r\n x = Math.max(0, Math.min(x / elm.clientWidth, 1));\r\n y = Math.max(0, Math.min(y / elm.clientHeight, 1));\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n }\r\n function updateColor(hsv, hueUpdate) {\r\n var hue = (360 - hsv.h) / 360;\r\n funcs.css(huePointElm, { top: hue * 100 + '%' });\r\n if (!hueUpdate) {\r\n funcs.css(svPointElm, {\r\n left: hsv.s + '%',\r\n top: 100 - hsv.v + '%'\r\n });\r\n }\r\n svRootElm.style.background = global$14({\r\n s: 100,\r\n v: 100,\r\n h: hsv.h\r\n }).toHex();\r\n self.color().parse({\r\n s: hsv.s,\r\n v: hsv.v,\r\n h: hsv.h\r\n });\r\n }\r\n function updateSaturationAndValue(e) {\r\n var pos;\r\n pos = getPos(svRootElm, e);\r\n hsv.s = pos.x * 100;\r\n hsv.v = (1 - pos.y) * 100;\r\n updateColor(hsv);\r\n self.fire('change');\r\n }\r\n function updateHue(e) {\r\n var pos;\r\n pos = getPos(hueRootElm, e);\r\n hsv = color.toHsv();\r\n hsv.h = (1 - pos.y) * 360;\r\n updateColor(hsv, true);\r\n self.fire('change');\r\n }\r\n self._repaint = function () {\r\n hsv = color.toHsv();\r\n updateColor(hsv);\r\n };\r\n self._super();\r\n self._svdraghelper = new DragHelper(self._id + '-sv', {\r\n start: updateSaturationAndValue,\r\n drag: updateSaturationAndValue\r\n });\r\n self._hdraghelper = new DragHelper(self._id + '-h', {\r\n start: updateHue,\r\n drag: updateHue\r\n });\r\n self._repaint();\r\n },\r\n rgb: function () {\r\n return this.color().toRgb();\r\n },\r\n value: function (value) {\r\n var self = this;\r\n if (arguments.length) {\r\n self.color().parse(value);\r\n if (self._rendered) {\r\n self._repaint();\r\n }\r\n } else {\r\n return self.color().toHex();\r\n }\r\n },\r\n color: function () {\r\n if (!this._color) {\r\n this._color = global$14();\r\n }\r\n return this._color;\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var id = self._id;\r\n var prefix = self.classPrefix;\r\n var hueHtml;\r\n var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';\r\n function getOldIeFallbackHtml() {\r\n var i, l, html = '', gradientPrefix, stopsList;\r\n gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';\r\n stopsList = stops.split(',');\r\n for (i = 0, l = stopsList.length - 1; i < l; i++) {\r\n html += '
    ';\r\n }\r\n return html;\r\n }\r\n var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';\r\n hueHtml = '
    ' + getOldIeFallbackHtml() + '
    ' + '
    ';\r\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + hueHtml + '
    ';\r\n }\r\n });\r\n\r\n var DropZone = Widget.extend({\r\n init: function (settings) {\r\n var self = this;\r\n settings = global$2.extend({\r\n height: 100,\r\n text: 'Drop an image here',\r\n multiple: false,\r\n accept: null\r\n }, settings);\r\n self._super(settings);\r\n self.classes.add('dropzone');\r\n if (settings.multiple) {\r\n self.classes.add('multiple');\r\n }\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var attrs, elm;\r\n var cfg = self.settings;\r\n attrs = {\r\n id: self._id,\r\n hidefocus: '1'\r\n };\r\n elm = funcs.create('div', attrs, '' + this.translate(cfg.text) + '');\r\n if (cfg.height) {\r\n funcs.css(elm, 'height', cfg.height + 'px');\r\n }\r\n if (cfg.width) {\r\n funcs.css(elm, 'width', cfg.width + 'px');\r\n }\r\n elm.className = self.classes;\r\n return elm.outerHTML;\r\n },\r\n postRender: function () {\r\n var self = this;\r\n var toggleDragClass = function (e) {\r\n e.preventDefault();\r\n self.classes.toggle('dragenter');\r\n self.getEl().className = self.classes;\r\n };\r\n var filter = function (files) {\r\n var accept = self.settings.accept;\r\n if (typeof accept !== 'string') {\r\n return files;\r\n }\r\n var re = new RegExp('(' + accept.split(/\\s*,\\s*/).join('|') + ')$', 'i');\r\n return global$2.grep(files, function (file) {\r\n return re.test(file.name);\r\n });\r\n };\r\n self._super();\r\n self.$el.on('dragover', function (e) {\r\n e.preventDefault();\r\n });\r\n self.$el.on('dragenter', toggleDragClass);\r\n self.$el.on('dragleave', toggleDragClass);\r\n self.$el.on('drop', function (e) {\r\n e.preventDefault();\r\n if (self.state.get('disabled')) {\r\n return;\r\n }\r\n var files = filter(e.dataTransfer.files);\r\n self.value = function () {\r\n if (!files.length) {\r\n return null;\r\n } else if (self.settings.multiple) {\r\n return files;\r\n } else {\r\n return files[0];\r\n }\r\n };\r\n if (files.length) {\r\n self.fire('change', e);\r\n }\r\n });\r\n },\r\n remove: function () {\r\n this.$el.off();\r\n this._super();\r\n }\r\n });\r\n\r\n var Path = Widget.extend({\r\n init: function (settings) {\r\n var self = this;\r\n if (!settings.delimiter) {\r\n settings.delimiter = '\\xBB';\r\n }\r\n self._super(settings);\r\n self.classes.add('path');\r\n self.canFocus = true;\r\n self.on('click', function (e) {\r\n var index;\r\n var target = e.target;\r\n if (index = target.getAttribute('data-index')) {\r\n self.fire('select', {\r\n value: self.row()[index],\r\n index: index\r\n });\r\n }\r\n });\r\n self.row(self.settings.row);\r\n },\r\n focus: function () {\r\n var self = this;\r\n self.getEl().firstChild.focus();\r\n return self;\r\n },\r\n row: function (row) {\r\n if (!arguments.length) {\r\n return this.state.get('row');\r\n }\r\n this.state.set('row', row);\r\n return this;\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n return '
    ' + self._getDataPathHtml(self.state.get('row')) + '
    ';\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:row', function (e) {\r\n self.innerHtml(self._getDataPathHtml(e.value));\r\n });\r\n return self._super();\r\n },\r\n _getDataPathHtml: function (data) {\r\n var self = this;\r\n var parts = data || [];\r\n var i, l, html = '';\r\n var prefix = self.classPrefix;\r\n for (i = 0, l = parts.length; i < l; i++) {\r\n html += (i > 0 ? '
    ' + self.settings.delimiter + '
    ' : '') + '
    ' + parts[i].name + '
    ';\r\n }\r\n if (!html) {\r\n html = '
    \\xA0
    ';\r\n }\r\n return html;\r\n }\r\n });\r\n\r\n var ElementPath = Path.extend({\r\n postRender: function () {\r\n var self = this, editor = self.settings.editor;\r\n function isHidden(elm) {\r\n if (elm.nodeType === 1) {\r\n if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {\r\n return true;\r\n }\r\n if (elm.getAttribute('data-mce-type') === 'bookmark') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n if (editor.settings.elementpath !== false) {\r\n self.on('select', function (e) {\r\n editor.focus();\r\n editor.selection.select(this.row()[e.index].element);\r\n editor.nodeChanged();\r\n });\r\n editor.on('nodeChange', function (e) {\r\n var outParents = [];\r\n var parents = e.parents;\r\n var i = parents.length;\r\n while (i--) {\r\n if (parents[i].nodeType === 1 && !isHidden(parents[i])) {\r\n var args = editor.fire('ResolveName', {\r\n name: parents[i].nodeName.toLowerCase(),\r\n target: parents[i]\r\n });\r\n if (!args.isDefaultPrevented()) {\r\n outParents.push({\r\n name: args.name,\r\n element: parents[i]\r\n });\r\n }\r\n if (args.isPropagationStopped()) {\r\n break;\r\n }\r\n }\r\n }\r\n self.row(outParents);\r\n });\r\n }\r\n return self._super();\r\n }\r\n });\r\n\r\n var FormItem = Container.extend({\r\n Defaults: {\r\n layout: 'flex',\r\n align: 'center',\r\n defaults: { flex: 1 }\r\n },\r\n renderHtml: function () {\r\n var self = this, layout = self._layout, prefix = self.classPrefix;\r\n self.classes.add('formitem');\r\n layout.preRender(self);\r\n return '
    ' + (self.settings.title ? '
    ' + self.settings.title + '
    ' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\r\n }\r\n });\r\n\r\n var Form = Container.extend({\r\n Defaults: {\r\n containerCls: 'form',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n flex: 1,\r\n padding: 15,\r\n labelGap: 30,\r\n spacing: 10,\r\n callbacks: {\r\n submit: function () {\r\n this.submit();\r\n }\r\n }\r\n },\r\n preRender: function () {\r\n var self = this, items = self.items();\r\n if (!self.settings.formItemDefaults) {\r\n self.settings.formItemDefaults = {\r\n layout: 'flex',\r\n autoResize: 'overflow',\r\n defaults: { flex: 1 }\r\n };\r\n }\r\n items.each(function (ctrl) {\r\n var formItem;\r\n var label = ctrl.settings.label;\r\n if (label) {\r\n formItem = new FormItem(global$2.extend({\r\n items: {\r\n type: 'label',\r\n id: ctrl._id + '-l',\r\n text: label,\r\n flex: 0,\r\n forId: ctrl._id,\r\n disabled: ctrl.disabled()\r\n }\r\n }, self.settings.formItemDefaults));\r\n formItem.type = 'formitem';\r\n ctrl.aria('labelledby', ctrl._id + '-l');\r\n if (typeof ctrl.settings.flex === 'undefined') {\r\n ctrl.settings.flex = 1;\r\n }\r\n self.replace(ctrl, formItem);\r\n formItem.add(ctrl);\r\n }\r\n });\r\n },\r\n submit: function () {\r\n return this.fire('submit', { data: this.toJSON() });\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self._super();\r\n self.fromJSON(self.settings.data);\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self._super();\r\n function recalcLabels() {\r\n var maxLabelWidth = 0;\r\n var labels = [];\r\n var i, labelGap, items;\r\n if (self.settings.labelGapCalc === false) {\r\n return;\r\n }\r\n if (self.settings.labelGapCalc === 'children') {\r\n items = self.find('formitem');\r\n } else {\r\n items = self.items();\r\n }\r\n items.filter('formitem').each(function (item) {\r\n var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;\r\n maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;\r\n labels.push(labelCtrl);\r\n });\r\n labelGap = self.settings.labelGap || 0;\r\n i = labels.length;\r\n while (i--) {\r\n labels[i].settings.minWidth = maxLabelWidth + labelGap;\r\n }\r\n }\r\n self.on('show', recalcLabels);\r\n recalcLabels();\r\n }\r\n });\r\n\r\n var FieldSet = Form.extend({\r\n Defaults: {\r\n containerCls: 'fieldset',\r\n layout: 'flex',\r\n direction: 'column',\r\n align: 'stretch',\r\n flex: 1,\r\n padding: '25 15 5 15',\r\n labelGap: 30,\r\n spacing: 10,\r\n border: 1\r\n },\r\n renderHtml: function () {\r\n var self = this, layout = self._layout, prefix = self.classPrefix;\r\n self.preRender();\r\n layout.preRender(self);\r\n return '
    ' + (self.settings.title ? '' + self.settings.title + '' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\r\n }\r\n });\r\n\r\n var unique$1 = 0;\r\n var generate = function (prefix) {\r\n var date = new Date();\r\n var time = date.getTime();\r\n var random = Math.floor(Math.random() * 1000000000);\r\n unique$1++;\r\n return prefix + '_' + random + unique$1 + String(time);\r\n };\r\n\r\n var fromHtml = function (html, scope) {\r\n var doc = scope || document;\r\n var div = doc.createElement('div');\r\n div.innerHTML = html;\r\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\r\n console.error('HTML does not have a single root node', html);\r\n throw 'HTML must have a single root node';\r\n }\r\n return fromDom(div.childNodes[0]);\r\n };\r\n var fromTag = function (tag, scope) {\r\n var doc = scope || document;\r\n var node = doc.createElement(tag);\r\n return fromDom(node);\r\n };\r\n var fromText = function (text, scope) {\r\n var doc = scope || document;\r\n var node = doc.createTextNode(text);\r\n return fromDom(node);\r\n };\r\n var fromDom = function (node) {\r\n if (node === null || node === undefined)\r\n throw new Error('Node cannot be null or undefined');\r\n return { dom: constant(node) };\r\n };\r\n var fromPoint = function (docElm, x, y) {\r\n var doc = docElm.dom();\r\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\r\n };\r\n var Element$$1 = {\r\n fromHtml: fromHtml,\r\n fromTag: fromTag,\r\n fromText: fromText,\r\n fromDom: fromDom,\r\n fromPoint: fromPoint\r\n };\r\n\r\n var cached = function (f) {\r\n var called = false;\r\n var r;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!called) {\r\n called = true;\r\n r = f.apply(null, args);\r\n }\r\n return r;\r\n };\r\n };\r\n\r\n var $_g9js5fw5jkmcwsoh = {\r\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\r\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\r\n COMMENT: Node.COMMENT_NODE,\r\n DOCUMENT: Node.DOCUMENT_NODE,\r\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\r\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\r\n ELEMENT: Node.ELEMENT_NODE,\r\n TEXT: Node.TEXT_NODE,\r\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\r\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\r\n ENTITY: Node.ENTITY_NODE,\r\n NOTATION: Node.NOTATION_NODE\r\n };\r\n\r\n var name = function (element) {\r\n var r = element.dom().nodeName;\r\n return r.toLowerCase();\r\n };\r\n var type = function (element) {\r\n return element.dom().nodeType;\r\n };\r\n var value = function (element) {\r\n return element.dom().nodeValue;\r\n };\r\n var isType$1 = function (t) {\r\n return function (element) {\r\n return type(element) === t;\r\n };\r\n };\r\n var isComment = function (element) {\r\n return type(element) === $_g9js5fw5jkmcwsoh.COMMENT || name(element) === '#comment';\r\n };\r\n var isElement = isType$1($_g9js5fw5jkmcwsoh.ELEMENT);\r\n var isText = isType$1($_g9js5fw5jkmcwsoh.TEXT);\r\n var isDocument = isType$1($_g9js5fw5jkmcwsoh.DOCUMENT);\r\n var $_dg0wqww4jkmcwsog = {\r\n name: name,\r\n type: type,\r\n value: value,\r\n isElement: isElement,\r\n isText: isText,\r\n isDocument: isDocument,\r\n isComment: isComment\r\n };\r\n\r\n var inBody = function (element) {\r\n var dom = $_dg0wqww4jkmcwsog.isText(element) ? element.dom().parentNode : element.dom();\r\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\r\n };\r\n var body = cached(function () {\r\n return getBody(Element$$1.fromDom(document));\r\n });\r\n var getBody = function (doc) {\r\n var body = doc.dom().body;\r\n if (body === null || body === undefined)\r\n throw 'Body is not available yet';\r\n return Element$$1.fromDom(body);\r\n };\r\n var $_9gi0tmw2jkmcwsob = {\r\n body: body,\r\n getBody: getBody,\r\n inBody: inBody\r\n };\r\n\r\n var Immutable = function () {\r\n var fields = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n fields[_i] = arguments[_i];\r\n }\r\n return function () {\r\n var values = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n values[_i] = arguments[_i];\r\n }\r\n if (fields.length !== values.length) {\r\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\r\n }\r\n var struct = {};\r\n each(fields, function (name, i) {\r\n struct[name] = constant(values[i]);\r\n });\r\n return struct;\r\n };\r\n };\r\n\r\n var toArray = function (target, f) {\r\n var r = [];\r\n var recurse = function (e) {\r\n r.push(e);\r\n return f(e);\r\n };\r\n var cur = f(target);\r\n do {\r\n cur = cur.bind(recurse);\r\n } while (cur.isSome());\r\n return r;\r\n };\r\n var $_9vmnzpwcjkmcwsph = { toArray: toArray };\r\n\r\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\r\n\r\n var path = function (parts, scope) {\r\n var o = scope !== undefined && scope !== null ? scope : Global;\r\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\r\n o = o[parts[i]];\r\n return o;\r\n };\r\n var resolve = function (p, scope) {\r\n var parts = p.split('.');\r\n return path(parts, scope);\r\n };\r\n\r\n var unsafe = function (name, scope) {\r\n return resolve(name, scope);\r\n };\r\n var getOrDie = function (name, scope) {\r\n var actual = unsafe(name, scope);\r\n if (actual === undefined || actual === null)\r\n throw name + ' not available on this browser';\r\n return actual;\r\n };\r\n var $_22q3m2wfjkmcwsps = { getOrDie: getOrDie };\r\n\r\n var node = function () {\r\n var f = $_22q3m2wfjkmcwsps.getOrDie('Node');\r\n return f;\r\n };\r\n var compareDocumentPosition = function (a, b, match) {\r\n return (a.compareDocumentPosition(b) & match) !== 0;\r\n };\r\n var documentPositionPreceding = function (a, b) {\r\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\r\n };\r\n var documentPositionContainedBy = function (a, b) {\r\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\r\n };\r\n var $_60zxbqwejkmcwspr = {\r\n documentPositionPreceding: documentPositionPreceding,\r\n documentPositionContainedBy: documentPositionContainedBy\r\n };\r\n\r\n var firstMatch = function (regexes, s) {\r\n for (var i = 0; i < regexes.length; i++) {\r\n var x = regexes[i];\r\n if (x.test(s))\r\n return x;\r\n }\r\n return undefined;\r\n };\r\n var find$2 = function (regexes, agent) {\r\n var r = firstMatch(regexes, agent);\r\n if (!r)\r\n return {\r\n major: 0,\r\n minor: 0\r\n };\r\n var group = function (i) {\r\n return Number(agent.replace(r, '$' + i));\r\n };\r\n return nu(group(1), group(2));\r\n };\r\n var detect = function (versionRegexes, agent) {\r\n var cleanedAgent = String(agent).toLowerCase();\r\n if (versionRegexes.length === 0)\r\n return unknown();\r\n return find$2(versionRegexes, cleanedAgent);\r\n };\r\n var unknown = function () {\r\n return nu(0, 0);\r\n };\r\n var nu = function (major, minor) {\r\n return {\r\n major: major,\r\n minor: minor\r\n };\r\n };\r\n var $_7ota5pwljkmcwsq4 = {\r\n nu: nu,\r\n detect: detect,\r\n unknown: unknown\r\n };\r\n\r\n var edge = 'Edge';\r\n var chrome = 'Chrome';\r\n var ie = 'IE';\r\n var opera = 'Opera';\r\n var firefox = 'Firefox';\r\n var safari = 'Safari';\r\n var isBrowser = function (name, current) {\r\n return function () {\r\n return current === name;\r\n };\r\n };\r\n var unknown$1 = function () {\r\n return nu$1({\r\n current: undefined,\r\n version: $_7ota5pwljkmcwsq4.unknown()\r\n });\r\n };\r\n var nu$1 = function (info) {\r\n var current = info.current;\r\n var version = info.version;\r\n return {\r\n current: current,\r\n version: version,\r\n isEdge: isBrowser(edge, current),\r\n isChrome: isBrowser(chrome, current),\r\n isIE: isBrowser(ie, current),\r\n isOpera: isBrowser(opera, current),\r\n isFirefox: isBrowser(firefox, current),\r\n isSafari: isBrowser(safari, current)\r\n };\r\n };\r\n var $_fknyifwkjkmcwsq1 = {\r\n unknown: unknown$1,\r\n nu: nu$1,\r\n edge: constant(edge),\r\n chrome: constant(chrome),\r\n ie: constant(ie),\r\n opera: constant(opera),\r\n firefox: constant(firefox),\r\n safari: constant(safari)\r\n };\r\n\r\n var windows$1 = 'Windows';\r\n var ios = 'iOS';\r\n var android = 'Android';\r\n var linux = 'Linux';\r\n var osx = 'OSX';\r\n var solaris = 'Solaris';\r\n var freebsd = 'FreeBSD';\r\n var isOS = function (name, current) {\r\n return function () {\r\n return current === name;\r\n };\r\n };\r\n var unknown$2 = function () {\r\n return nu$2({\r\n current: undefined,\r\n version: $_7ota5pwljkmcwsq4.unknown()\r\n });\r\n };\r\n var nu$2 = function (info) {\r\n var current = info.current;\r\n var version = info.version;\r\n return {\r\n current: current,\r\n version: version,\r\n isWindows: isOS(windows$1, current),\r\n isiOS: isOS(ios, current),\r\n isAndroid: isOS(android, current),\r\n isOSX: isOS(osx, current),\r\n isLinux: isOS(linux, current),\r\n isSolaris: isOS(solaris, current),\r\n isFreeBSD: isOS(freebsd, current)\r\n };\r\n };\r\n var $_4dmnqawmjkmcwsq6 = {\r\n unknown: unknown$2,\r\n nu: nu$2,\r\n windows: constant(windows$1),\r\n ios: constant(ios),\r\n android: constant(android),\r\n linux: constant(linux),\r\n osx: constant(osx),\r\n solaris: constant(solaris),\r\n freebsd: constant(freebsd)\r\n };\r\n\r\n function DeviceType (os, browser, userAgent) {\r\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\r\n var isiPhone = os.isiOS() && !isiPad;\r\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\r\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\r\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\r\n var isTouch = os.isiOS() || os.isAndroid();\r\n var isPhone = isTouch && !isTablet;\r\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\r\n return {\r\n isiPad: constant(isiPad),\r\n isiPhone: constant(isiPhone),\r\n isTablet: constant(isTablet),\r\n isPhone: constant(isPhone),\r\n isTouch: constant(isTouch),\r\n isAndroid: os.isAndroid,\r\n isiOS: os.isiOS,\r\n isWebView: constant(iOSwebview)\r\n };\r\n }\r\n\r\n var detect$1 = function (candidates, userAgent) {\r\n var agent = String(userAgent).toLowerCase();\r\n return find(candidates, function (candidate) {\r\n return candidate.search(agent);\r\n });\r\n };\r\n var detectBrowser = function (browsers, userAgent) {\r\n return detect$1(browsers, userAgent).map(function (browser) {\r\n var version = $_7ota5pwljkmcwsq4.detect(browser.versionRegexes, userAgent);\r\n return {\r\n current: browser.name,\r\n version: version\r\n };\r\n });\r\n };\r\n var detectOs = function (oses, userAgent) {\r\n return detect$1(oses, userAgent).map(function (os) {\r\n var version = $_7ota5pwljkmcwsq4.detect(os.versionRegexes, userAgent);\r\n return {\r\n current: os.name,\r\n version: version\r\n };\r\n });\r\n };\r\n var $_21yllowojkmcwsqc = {\r\n detectBrowser: detectBrowser,\r\n detectOs: detectOs\r\n };\r\n\r\n var contains$1 = function (str, substr) {\r\n return str.indexOf(substr) !== -1;\r\n };\r\n\r\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\r\n var checkContains = function (target) {\r\n return function (uastring) {\r\n return contains$1(uastring, target);\r\n };\r\n };\r\n var browsers = [\r\n {\r\n name: 'Edge',\r\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\r\n search: function (uastring) {\r\n var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\r\n return monstrosity;\r\n }\r\n },\r\n {\r\n name: 'Chrome',\r\n versionRegexes: [\r\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\r\n normalVersionRegex\r\n ],\r\n search: function (uastring) {\r\n return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\r\n }\r\n },\r\n {\r\n name: 'IE',\r\n versionRegexes: [\r\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\r\n /.*?rv:([0-9]+)\\.([0-9]+).*/\r\n ],\r\n search: function (uastring) {\r\n return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\r\n }\r\n },\r\n {\r\n name: 'Opera',\r\n versionRegexes: [\r\n normalVersionRegex,\r\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\r\n ],\r\n search: checkContains('opera')\r\n },\r\n {\r\n name: 'Firefox',\r\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\r\n search: checkContains('firefox')\r\n },\r\n {\r\n name: 'Safari',\r\n versionRegexes: [\r\n normalVersionRegex,\r\n /.*?cpu os ([0-9]+)_([0-9]+).*/\r\n ],\r\n search: function (uastring) {\r\n return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\r\n }\r\n }\r\n ];\r\n var oses = [\r\n {\r\n name: 'Windows',\r\n search: checkContains('win'),\r\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\r\n },\r\n {\r\n name: 'iOS',\r\n search: function (uastring) {\r\n return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\r\n },\r\n versionRegexes: [\r\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\r\n /.*cpu os ([0-9]+)_([0-9]+).*/,\r\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\r\n ]\r\n },\r\n {\r\n name: 'Android',\r\n search: checkContains('android'),\r\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\r\n },\r\n {\r\n name: 'OSX',\r\n search: checkContains('os x'),\r\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\r\n },\r\n {\r\n name: 'Linux',\r\n search: checkContains('linux'),\r\n versionRegexes: []\r\n },\r\n {\r\n name: 'Solaris',\r\n search: checkContains('sunos'),\r\n versionRegexes: []\r\n },\r\n {\r\n name: 'FreeBSD',\r\n search: checkContains('freebsd'),\r\n versionRegexes: []\r\n }\r\n ];\r\n var $_993j3rwpjkmcwsqg = {\r\n browsers: constant(browsers),\r\n oses: constant(oses)\r\n };\r\n\r\n var detect$2 = function (userAgent) {\r\n var browsers = $_993j3rwpjkmcwsqg.browsers();\r\n var oses = $_993j3rwpjkmcwsqg.oses();\r\n var browser = $_21yllowojkmcwsqc.detectBrowser(browsers, userAgent).fold($_fknyifwkjkmcwsq1.unknown, $_fknyifwkjkmcwsq1.nu);\r\n var os = $_21yllowojkmcwsqc.detectOs(oses, userAgent).fold($_4dmnqawmjkmcwsq6.unknown, $_4dmnqawmjkmcwsq6.nu);\r\n var deviceType = DeviceType(os, browser, userAgent);\r\n return {\r\n browser: browser,\r\n os: os,\r\n deviceType: deviceType\r\n };\r\n };\r\n var $_4sbeluwjjkmcwsq0 = { detect: detect$2 };\r\n\r\n var detect$3 = cached(function () {\r\n var userAgent = navigator.userAgent;\r\n return $_4sbeluwjjkmcwsq0.detect(userAgent);\r\n });\r\n var $_g4vzapwijkmcwspx = { detect: detect$3 };\r\n\r\n var ELEMENT = $_g9js5fw5jkmcwsoh.ELEMENT;\r\n var DOCUMENT = $_g9js5fw5jkmcwsoh.DOCUMENT;\r\n var is = function (element, selector) {\r\n var elem = element.dom();\r\n if (elem.nodeType !== ELEMENT)\r\n return false;\r\n else if (elem.matches !== undefined)\r\n return elem.matches(selector);\r\n else if (elem.msMatchesSelector !== undefined)\r\n return elem.msMatchesSelector(selector);\r\n else if (elem.webkitMatchesSelector !== undefined)\r\n return elem.webkitMatchesSelector(selector);\r\n else if (elem.mozMatchesSelector !== undefined)\r\n return elem.mozMatchesSelector(selector);\r\n else\r\n throw new Error('Browser lacks native selectors');\r\n };\r\n var bypassSelector = function (dom) {\r\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\r\n };\r\n var all = function (selector, scope) {\r\n var base = scope === undefined ? document : scope.dom();\r\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\r\n };\r\n var one = function (selector, scope) {\r\n var base = scope === undefined ? document : scope.dom();\r\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\r\n };\r\n var $_3tbwnywtjkmcwsqr = {\r\n all: all,\r\n is: is,\r\n one: one\r\n };\r\n\r\n var eq = function (e1, e2) {\r\n return e1.dom() === e2.dom();\r\n };\r\n var isEqualNode = function (e1, e2) {\r\n return e1.dom().isEqualNode(e2.dom());\r\n };\r\n var member = function (element, elements) {\r\n return exists(elements, curry(eq, element));\r\n };\r\n var regularContains = function (e1, e2) {\r\n var d1 = e1.dom(), d2 = e2.dom();\r\n return d1 === d2 ? false : d1.contains(d2);\r\n };\r\n var ieContains = function (e1, e2) {\r\n return $_60zxbqwejkmcwspr.documentPositionContainedBy(e1.dom(), e2.dom());\r\n };\r\n var browser = $_g4vzapwijkmcwspx.detect().browser;\r\n var contains$2 = browser.isIE() ? ieContains : regularContains;\r\n var $_622morwdjkmcwspi = {\r\n eq: eq,\r\n isEqualNode: isEqualNode,\r\n member: member,\r\n contains: contains$2,\r\n is: $_3tbwnywtjkmcwsqr.is\r\n };\r\n\r\n var owner = function (element) {\r\n return Element$$1.fromDom(element.dom().ownerDocument);\r\n };\r\n var documentElement = function (element) {\r\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\r\n };\r\n var defaultView = function (element) {\r\n var el = element.dom();\r\n var defaultView = el.ownerDocument.defaultView;\r\n return Element$$1.fromDom(defaultView);\r\n };\r\n var parent = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\r\n };\r\n var findIndex$1 = function (element) {\r\n return parent(element).bind(function (p) {\r\n var kin = children(p);\r\n return findIndex(kin, function (elem) {\r\n return $_622morwdjkmcwspi.eq(element, elem);\r\n });\r\n });\r\n };\r\n var parents = function (element, isRoot) {\r\n var stop = isFunction(isRoot) ? isRoot : constant(false);\r\n var dom = element.dom();\r\n var ret = [];\r\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\r\n var rawParent = dom.parentNode;\r\n var parent = Element$$1.fromDom(rawParent);\r\n ret.push(parent);\r\n if (stop(parent) === true)\r\n break;\r\n else\r\n dom = rawParent;\r\n }\r\n return ret;\r\n };\r\n var siblings = function (element) {\r\n var filterSelf = function (elements) {\r\n return filter(elements, function (x) {\r\n return !$_622morwdjkmcwspi.eq(element, x);\r\n });\r\n };\r\n return parent(element).map(children).map(filterSelf).getOr([]);\r\n };\r\n var offsetParent = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\r\n };\r\n var prevSibling = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\r\n };\r\n var nextSibling = function (element) {\r\n var dom = element.dom();\r\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\r\n };\r\n var prevSiblings = function (element) {\r\n return reverse($_9vmnzpwcjkmcwsph.toArray(element, prevSibling));\r\n };\r\n var nextSiblings = function (element) {\r\n return $_9vmnzpwcjkmcwsph.toArray(element, nextSibling);\r\n };\r\n var children = function (element) {\r\n var dom = element.dom();\r\n return map(dom.childNodes, Element$$1.fromDom);\r\n };\r\n var child = function (element, index) {\r\n var children = element.dom().childNodes;\r\n return Option.from(children[index]).map(Element$$1.fromDom);\r\n };\r\n var firstChild = function (element) {\r\n return child(element, 0);\r\n };\r\n var lastChild = function (element) {\r\n return child(element, element.dom().childNodes.length - 1);\r\n };\r\n var childNodesCount = function (element) {\r\n return element.dom().childNodes.length;\r\n };\r\n var hasChildNodes = function (element) {\r\n return element.dom().hasChildNodes();\r\n };\r\n var spot = Immutable('element', 'offset');\r\n var leaf = function (element, offset) {\r\n var cs = children(element);\r\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\r\n };\r\n var $_adk4mbw6jkmcwsok = {\r\n owner: owner,\r\n defaultView: defaultView,\r\n documentElement: documentElement,\r\n parent: parent,\r\n findIndex: findIndex$1,\r\n parents: parents,\r\n siblings: siblings,\r\n prevSibling: prevSibling,\r\n offsetParent: offsetParent,\r\n prevSiblings: prevSiblings,\r\n nextSibling: nextSibling,\r\n nextSiblings: nextSiblings,\r\n children: children,\r\n child: child,\r\n firstChild: firstChild,\r\n lastChild: lastChild,\r\n childNodesCount: childNodesCount,\r\n hasChildNodes: hasChildNodes,\r\n leaf: leaf\r\n };\r\n\r\n var all$1 = function (predicate) {\r\n return descendants($_9gi0tmw2jkmcwsob.body(), predicate);\r\n };\r\n var ancestors = function (scope, predicate, isRoot) {\r\n return filter($_adk4mbw6jkmcwsok.parents(scope, isRoot), predicate);\r\n };\r\n var siblings$1 = function (scope, predicate) {\r\n return filter($_adk4mbw6jkmcwsok.siblings(scope), predicate);\r\n };\r\n var children$1 = function (scope, predicate) {\r\n return filter($_adk4mbw6jkmcwsok.children(scope), predicate);\r\n };\r\n var descendants = function (scope, predicate) {\r\n var result = [];\r\n each($_adk4mbw6jkmcwsok.children(scope), function (x) {\r\n if (predicate(x)) {\r\n result = result.concat([x]);\r\n }\r\n result = result.concat(descendants(x, predicate));\r\n });\r\n return result;\r\n };\r\n var $_bf8vd5w1jkmcwso8 = {\r\n all: all$1,\r\n ancestors: ancestors,\r\n siblings: siblings$1,\r\n children: children$1,\r\n descendants: descendants\r\n };\r\n\r\n var all$2 = function (selector) {\r\n return $_3tbwnywtjkmcwsqr.all(selector);\r\n };\r\n var ancestors$1 = function (scope, selector, isRoot) {\r\n return $_bf8vd5w1jkmcwso8.ancestors(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n }, isRoot);\r\n };\r\n var siblings$2 = function (scope, selector) {\r\n return $_bf8vd5w1jkmcwso8.siblings(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n });\r\n };\r\n var children$2 = function (scope, selector) {\r\n return $_bf8vd5w1jkmcwso8.children(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n });\r\n };\r\n var descendants$1 = function (scope, selector) {\r\n return $_3tbwnywtjkmcwsqr.all(selector, scope);\r\n };\r\n var $_4ig9ruw0jkmcwso7 = {\r\n all: all$2,\r\n ancestors: ancestors$1,\r\n siblings: siblings$2,\r\n children: children$2,\r\n descendants: descendants$1\r\n };\r\n\r\n var trim$1 = global$2.trim;\r\n var hasContentEditableState = function (value) {\r\n return function (node) {\r\n if (node && node.nodeType === 1) {\r\n if (node.contentEditable === value) {\r\n return true;\r\n }\r\n if (node.getAttribute('data-mce-contenteditable') === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n };\r\n var isContentEditableTrue = hasContentEditableState('true');\r\n var isContentEditableFalse = hasContentEditableState('false');\r\n var create = function (type, title, url, level, attach) {\r\n return {\r\n type: type,\r\n title: title,\r\n url: url,\r\n level: level,\r\n attach: attach\r\n };\r\n };\r\n var isChildOfContentEditableTrue = function (node) {\r\n while (node = node.parentNode) {\r\n var value = node.contentEditable;\r\n if (value && value !== 'inherit') {\r\n return isContentEditableTrue(node);\r\n }\r\n }\r\n return false;\r\n };\r\n var select = function (selector, root) {\r\n return map($_4ig9ruw0jkmcwso7.descendants(Element$$1.fromDom(root), selector), function (element) {\r\n return element.dom();\r\n });\r\n };\r\n var getElementText = function (elm) {\r\n return elm.innerText || elm.textContent;\r\n };\r\n var getOrGenerateId = function (elm) {\r\n return elm.id ? elm.id : generate('h');\r\n };\r\n var isAnchor = function (elm) {\r\n return elm && elm.nodeName === 'A' && (elm.id || elm.name);\r\n };\r\n var isValidAnchor = function (elm) {\r\n return isAnchor(elm) && isEditable(elm);\r\n };\r\n var isHeader = function (elm) {\r\n return elm && /^(H[1-6])$/.test(elm.nodeName);\r\n };\r\n var isEditable = function (elm) {\r\n return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\r\n };\r\n var isValidHeader = function (elm) {\r\n return isHeader(elm) && isEditable(elm);\r\n };\r\n var getLevel = function (elm) {\r\n return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\r\n };\r\n var headerTarget = function (elm) {\r\n var headerId = getOrGenerateId(elm);\r\n var attach = function () {\r\n elm.id = headerId;\r\n };\r\n return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);\r\n };\r\n var anchorTarget = function (elm) {\r\n var anchorId = elm.id || elm.name;\r\n var anchorText = getElementText(elm);\r\n return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\r\n };\r\n var getHeaderTargets = function (elms) {\r\n return map(filter(elms, isValidHeader), headerTarget);\r\n };\r\n var getAnchorTargets = function (elms) {\r\n return map(filter(elms, isValidAnchor), anchorTarget);\r\n };\r\n var getTargetElements = function (elm) {\r\n var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\r\n return elms;\r\n };\r\n var hasTitle = function (target) {\r\n return trim$1(target.title).length > 0;\r\n };\r\n var find$3 = function (elm) {\r\n var elms = getTargetElements(elm);\r\n return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\r\n };\r\n var $_cb7rvvvxjkmcwsnn = { find: find$3 };\r\n\r\n var getActiveEditor = function () {\r\n return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;\r\n };\r\n var history = {};\r\n var HISTORY_LENGTH = 5;\r\n var clearHistory = function () {\r\n history = {};\r\n };\r\n var toMenuItem = function (target) {\r\n return {\r\n title: target.title,\r\n value: {\r\n title: { raw: target.title },\r\n url: target.url,\r\n attach: target.attach\r\n }\r\n };\r\n };\r\n var toMenuItems = function (targets) {\r\n return global$2.map(targets, toMenuItem);\r\n };\r\n var staticMenuItem = function (title, url) {\r\n return {\r\n title: title,\r\n value: {\r\n title: title,\r\n url: url,\r\n attach: noop\r\n }\r\n };\r\n };\r\n var isUniqueUrl = function (url, targets) {\r\n var foundTarget = exists(targets, function (target) {\r\n return target.url === url;\r\n });\r\n return !foundTarget;\r\n };\r\n var getSetting = function (editorSettings, name, defaultValue) {\r\n var value = name in editorSettings ? editorSettings[name] : defaultValue;\r\n return value === false ? null : value;\r\n };\r\n var createMenuItems = function (term, targets, fileType, editorSettings) {\r\n var separator = { title: '-' };\r\n var fromHistoryMenuItems = function (history) {\r\n var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];\r\n var uniqueHistory = filter(historyItems, function (url) {\r\n return isUniqueUrl(url, targets);\r\n });\r\n return global$2.map(uniqueHistory, function (url) {\r\n return {\r\n title: url,\r\n value: {\r\n title: url,\r\n url: url,\r\n attach: noop\r\n }\r\n };\r\n });\r\n };\r\n var fromMenuItems = function (type) {\r\n var filteredTargets = filter(targets, function (target) {\r\n return target.type === type;\r\n });\r\n return toMenuItems(filteredTargets);\r\n };\r\n var anchorMenuItems = function () {\r\n var anchorMenuItems = fromMenuItems('anchor');\r\n var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');\r\n var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');\r\n if (topAnchor !== null) {\r\n anchorMenuItems.unshift(staticMenuItem('', topAnchor));\r\n }\r\n if (bottomAchor !== null) {\r\n anchorMenuItems.push(staticMenuItem('', bottomAchor));\r\n }\r\n return anchorMenuItems;\r\n };\r\n var join = function (items) {\r\n return foldl(items, function (a, b) {\r\n var bothEmpty = a.length === 0 || b.length === 0;\r\n return bothEmpty ? a.concat(b) : a.concat(separator, b);\r\n }, []);\r\n };\r\n if (editorSettings.typeahead_urls === false) {\r\n return [];\r\n }\r\n return fileType === 'file' ? join([\r\n filterByQuery(term, fromHistoryMenuItems(history)),\r\n filterByQuery(term, fromMenuItems('header')),\r\n filterByQuery(term, anchorMenuItems())\r\n ]) : filterByQuery(term, fromHistoryMenuItems(history));\r\n };\r\n var addToHistory = function (url, fileType) {\r\n var items = history[fileType];\r\n if (!/^https?/.test(url)) {\r\n return;\r\n }\r\n if (items) {\r\n if (indexOf(items, url).isNone()) {\r\n history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);\r\n }\r\n } else {\r\n history[fileType] = [url];\r\n }\r\n };\r\n var filterByQuery = function (term, menuItems) {\r\n var lowerCaseTerm = term.toLowerCase();\r\n var result = global$2.grep(menuItems, function (item) {\r\n return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;\r\n });\r\n return result.length === 1 && result[0].title === term ? [] : result;\r\n };\r\n var getTitle = function (linkDetails) {\r\n var title = linkDetails.title;\r\n return title.raw ? title.raw : title;\r\n };\r\n var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {\r\n var autocomplete = function (term) {\r\n var linkTargets = $_cb7rvvvxjkmcwsnn.find(bodyElm);\r\n var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);\r\n ctrl.showAutoComplete(menuItems, term);\r\n };\r\n ctrl.on('autocomplete', function () {\r\n autocomplete(ctrl.value());\r\n });\r\n ctrl.on('selectitem', function (e) {\r\n var linkDetails = e.value;\r\n ctrl.value(linkDetails.url);\r\n var title = getTitle(linkDetails);\r\n if (fileType === 'image') {\r\n ctrl.fire('change', {\r\n meta: {\r\n alt: title,\r\n attach: linkDetails.attach\r\n }\r\n });\r\n } else {\r\n ctrl.fire('change', {\r\n meta: {\r\n text: title,\r\n attach: linkDetails.attach\r\n }\r\n });\r\n }\r\n ctrl.focus();\r\n });\r\n ctrl.on('click', function (e) {\r\n if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {\r\n autocomplete('');\r\n }\r\n });\r\n ctrl.on('PostRender', function () {\r\n ctrl.getRoot().on('submit', function (e) {\r\n if (!e.isDefaultPrevented()) {\r\n addToHistory(ctrl.value(), fileType);\r\n }\r\n });\r\n });\r\n };\r\n var statusToUiState = function (result) {\r\n var status = result.status, message = result.message;\r\n if (status === 'valid') {\r\n return {\r\n status: 'ok',\r\n message: message\r\n };\r\n } else if (status === 'unknown') {\r\n return {\r\n status: 'warn',\r\n message: message\r\n };\r\n } else if (status === 'invalid') {\r\n return {\r\n status: 'warn',\r\n message: message\r\n };\r\n } else {\r\n return {\r\n status: 'none',\r\n message: ''\r\n };\r\n }\r\n };\r\n var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {\r\n var validatorHandler = editorSettings.filepicker_validator_handler;\r\n if (validatorHandler) {\r\n var validateUrl_1 = function (url) {\r\n if (url.length === 0) {\r\n ctrl.statusLevel('none');\r\n return;\r\n }\r\n validatorHandler({\r\n url: url,\r\n type: fileType\r\n }, function (result) {\r\n var uiState = statusToUiState(result);\r\n ctrl.statusMessage(uiState.message);\r\n ctrl.statusLevel(uiState.status);\r\n });\r\n };\r\n ctrl.state.on('change:value', function (e) {\r\n validateUrl_1(e.value);\r\n });\r\n }\r\n };\r\n var FilePicker = ComboBox.extend({\r\n Statics: { clearHistory: clearHistory },\r\n init: function (settings) {\r\n var self = this, editor = getActiveEditor(), editorSettings = editor.settings;\r\n var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;\r\n var fileType = settings.filetype;\r\n settings.spellcheck = false;\r\n fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;\r\n if (fileBrowserCallbackTypes) {\r\n fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);\r\n }\r\n if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {\r\n fileBrowserCallback = editorSettings.file_picker_callback;\r\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\r\n actionCallback = function () {\r\n var meta = self.fire('beforecall').meta;\r\n meta = global$2.extend({ filetype: fileType }, meta);\r\n fileBrowserCallback.call(editor, function (value, meta) {\r\n self.value(value).fire('change', { meta: meta });\r\n }, self.value(), meta);\r\n };\r\n } else {\r\n fileBrowserCallback = editorSettings.file_browser_callback;\r\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\r\n actionCallback = function () {\r\n fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);\r\n };\r\n }\r\n }\r\n }\r\n if (actionCallback) {\r\n settings.icon = 'browse';\r\n settings.onaction = actionCallback;\r\n }\r\n self._super(settings);\r\n self.classes.add('filepicker');\r\n setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);\r\n setupLinkValidatorHandler(self, editorSettings, fileType);\r\n }\r\n });\r\n\r\n var FitLayout = AbsoluteLayout.extend({\r\n recalc: function (container) {\r\n var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;\r\n container.items().filter(':visible').each(function (ctrl) {\r\n ctrl.layoutRect({\r\n x: paddingBox.left,\r\n y: paddingBox.top,\r\n w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,\r\n h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom\r\n });\r\n if (ctrl.recalc) {\r\n ctrl.recalc();\r\n }\r\n });\r\n }\r\n });\r\n\r\n var FlexLayout = AbsoluteLayout.extend({\r\n recalc: function (container) {\r\n var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;\r\n var ctrl, ctrlLayoutRect, ctrlSettings, flex;\r\n var maxSizeItems = [];\r\n var size, maxSize, ratio, rect, pos, maxAlignEndPos;\r\n var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;\r\n var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;\r\n var alignDeltaSizeName, alignContentSizeName;\r\n var max = Math.max, min = Math.min;\r\n items = container.items().filter(':visible');\r\n contLayoutRect = container.layoutRect();\r\n contPaddingBox = container.paddingBox;\r\n contSettings = container.settings;\r\n direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;\r\n align = contSettings.align;\r\n pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;\r\n spacing = contSettings.spacing || 0;\r\n if (direction === 'row-reversed' || direction === 'column-reverse') {\r\n items = items.set(items.toArray().reverse());\r\n direction = direction.split('-')[0];\r\n }\r\n if (direction === 'column') {\r\n posName = 'y';\r\n sizeName = 'h';\r\n minSizeName = 'minH';\r\n maxSizeName = 'maxH';\r\n innerSizeName = 'innerH';\r\n beforeName = 'top';\r\n deltaSizeName = 'deltaH';\r\n contentSizeName = 'contentH';\r\n alignBeforeName = 'left';\r\n alignSizeName = 'w';\r\n alignAxisName = 'x';\r\n alignInnerSizeName = 'innerW';\r\n alignMinSizeName = 'minW';\r\n alignAfterName = 'right';\r\n alignDeltaSizeName = 'deltaW';\r\n alignContentSizeName = 'contentW';\r\n } else {\r\n posName = 'x';\r\n sizeName = 'w';\r\n minSizeName = 'minW';\r\n maxSizeName = 'maxW';\r\n innerSizeName = 'innerW';\r\n beforeName = 'left';\r\n deltaSizeName = 'deltaW';\r\n contentSizeName = 'contentW';\r\n alignBeforeName = 'top';\r\n alignSizeName = 'h';\r\n alignAxisName = 'y';\r\n alignInnerSizeName = 'innerH';\r\n alignMinSizeName = 'minH';\r\n alignAfterName = 'bottom';\r\n alignDeltaSizeName = 'deltaH';\r\n alignContentSizeName = 'contentH';\r\n }\r\n availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];\r\n maxAlignEndPos = totalFlex = 0;\r\n for (i = 0, l = items.length; i < l; i++) {\r\n ctrl = items[i];\r\n ctrlLayoutRect = ctrl.layoutRect();\r\n ctrlSettings = ctrl.settings;\r\n flex = ctrlSettings.flex;\r\n availableSpace -= i < l - 1 ? spacing : 0;\r\n if (flex > 0) {\r\n totalFlex += flex;\r\n if (ctrlLayoutRect[maxSizeName]) {\r\n maxSizeItems.push(ctrl);\r\n }\r\n ctrlLayoutRect.flex = flex;\r\n }\r\n availableSpace -= ctrlLayoutRect[minSizeName];\r\n size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];\r\n if (size > maxAlignEndPos) {\r\n maxAlignEndPos = size;\r\n }\r\n }\r\n rect = {};\r\n if (availableSpace < 0) {\r\n rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];\r\n } else {\r\n rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];\r\n }\r\n rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];\r\n rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;\r\n rect[alignContentSizeName] = maxAlignEndPos;\r\n rect.minW = min(rect.minW, contLayoutRect.maxW);\r\n rect.minH = min(rect.minH, contLayoutRect.maxH);\r\n rect.minW = max(rect.minW, contLayoutRect.startMinWidth);\r\n rect.minH = max(rect.minH, contLayoutRect.startMinHeight);\r\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\r\n rect.w = rect.minW;\r\n rect.h = rect.minH;\r\n container.layoutRect(rect);\r\n this.recalc(container);\r\n if (container._lastRect === null) {\r\n var parentCtrl = container.parent();\r\n if (parentCtrl) {\r\n parentCtrl._lastRect = null;\r\n parentCtrl.recalc();\r\n }\r\n }\r\n return;\r\n }\r\n ratio = availableSpace / totalFlex;\r\n for (i = 0, l = maxSizeItems.length; i < l; i++) {\r\n ctrl = maxSizeItems[i];\r\n ctrlLayoutRect = ctrl.layoutRect();\r\n maxSize = ctrlLayoutRect[maxSizeName];\r\n size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;\r\n if (size > maxSize) {\r\n availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];\r\n totalFlex -= ctrlLayoutRect.flex;\r\n ctrlLayoutRect.flex = 0;\r\n ctrlLayoutRect.maxFlexSize = maxSize;\r\n } else {\r\n ctrlLayoutRect.maxFlexSize = 0;\r\n }\r\n }\r\n ratio = availableSpace / totalFlex;\r\n pos = contPaddingBox[beforeName];\r\n rect = {};\r\n if (totalFlex === 0) {\r\n if (pack === 'end') {\r\n pos = availableSpace + contPaddingBox[beforeName];\r\n } else if (pack === 'center') {\r\n pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];\r\n if (pos < 0) {\r\n pos = contPaddingBox[beforeName];\r\n }\r\n } else if (pack === 'justify') {\r\n pos = contPaddingBox[beforeName];\r\n spacing = Math.floor(availableSpace / (items.length - 1));\r\n }\r\n }\r\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\r\n for (i = 0, l = items.length; i < l; i++) {\r\n ctrl = items[i];\r\n ctrlLayoutRect = ctrl.layoutRect();\r\n size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];\r\n if (align === 'center') {\r\n rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);\r\n } else if (align === 'stretch') {\r\n rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);\r\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\r\n } else if (align === 'end') {\r\n rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;\r\n }\r\n if (ctrlLayoutRect.flex > 0) {\r\n size += ctrlLayoutRect.flex * ratio;\r\n }\r\n rect[sizeName] = size;\r\n rect[posName] = pos;\r\n ctrl.layoutRect(rect);\r\n if (ctrl.recalc) {\r\n ctrl.recalc();\r\n }\r\n pos += size + spacing;\r\n }\r\n }\r\n });\r\n\r\n var FlowLayout = Layout.extend({\r\n Defaults: {\r\n containerClass: 'flow-layout',\r\n controlClass: 'flow-layout-item',\r\n endClass: 'break'\r\n },\r\n recalc: function (container) {\r\n container.items().filter(':visible').each(function (ctrl) {\r\n if (ctrl.recalc) {\r\n ctrl.recalc();\r\n }\r\n });\r\n },\r\n isNative: function () {\r\n return true;\r\n }\r\n });\r\n\r\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\r\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\r\n }\r\n\r\n var first$1 = function (predicate) {\r\n return descendant($_9gi0tmw2jkmcwsob.body(), predicate);\r\n };\r\n var ancestor = function (scope, predicate, isRoot) {\r\n var element = scope.dom();\r\n var stop = isFunction(isRoot) ? isRoot : constant(false);\r\n while (element.parentNode) {\r\n element = element.parentNode;\r\n var el = Element$$1.fromDom(element);\r\n if (predicate(el))\r\n return Option.some(el);\r\n else if (stop(el))\r\n break;\r\n }\r\n return Option.none();\r\n };\r\n var closest = function (scope, predicate, isRoot) {\r\n var is = function (scope) {\r\n return predicate(scope);\r\n };\r\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\r\n };\r\n var sibling = function (scope, predicate) {\r\n var element = scope.dom();\r\n if (!element.parentNode)\r\n return Option.none();\r\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\r\n return !$_622morwdjkmcwspi.eq(scope, x) && predicate(x);\r\n });\r\n };\r\n var child$1 = function (scope, predicate) {\r\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\r\n return result.map(Element$$1.fromDom);\r\n };\r\n var descendant = function (scope, predicate) {\r\n var descend = function (node) {\r\n for (var i = 0; i < node.childNodes.length; i++) {\r\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\r\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\r\n var res = descend(node.childNodes[i]);\r\n if (res.isSome())\r\n return res;\r\n }\r\n return Option.none();\r\n };\r\n return descend(scope.dom());\r\n };\r\n var $_13w0c1wzjkmcwsri = {\r\n first: first$1,\r\n ancestor: ancestor,\r\n closest: closest,\r\n sibling: sibling,\r\n child: child$1,\r\n descendant: descendant\r\n };\r\n\r\n var first$2 = function (selector) {\r\n return $_3tbwnywtjkmcwsqr.one(selector);\r\n };\r\n var ancestor$1 = function (scope, selector, isRoot) {\r\n return $_13w0c1wzjkmcwsri.ancestor(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n }, isRoot);\r\n };\r\n var sibling$1 = function (scope, selector) {\r\n return $_13w0c1wzjkmcwsri.sibling(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n });\r\n };\r\n var child$2 = function (scope, selector) {\r\n return $_13w0c1wzjkmcwsri.child(scope, function (e) {\r\n return $_3tbwnywtjkmcwsqr.is(e, selector);\r\n });\r\n };\r\n var descendant$1 = function (scope, selector) {\r\n return $_3tbwnywtjkmcwsqr.one(selector, scope);\r\n };\r\n var closest$1 = function (scope, selector, isRoot) {\r\n return ClosestOrAncestor($_3tbwnywtjkmcwsqr.is, ancestor$1, scope, selector, isRoot);\r\n };\r\n var $_epq3p6wyjkmcwsrh = {\r\n first: first$2,\r\n ancestor: ancestor$1,\r\n sibling: sibling$1,\r\n child: child$2,\r\n descendant: descendant$1,\r\n closest: closest$1\r\n };\r\n\r\n var toggleFormat = function (editor, fmt) {\r\n return function () {\r\n editor.execCommand('mceToggleFormat', false, fmt);\r\n };\r\n };\r\n var addFormatChangedListener = function (editor, name, changed) {\r\n var handler = function (state) {\r\n changed(state, name);\r\n };\r\n if (editor.formatter) {\r\n editor.formatter.formatChanged(name, handler);\r\n } else {\r\n editor.on('init', function () {\r\n editor.formatter.formatChanged(name, handler);\r\n });\r\n }\r\n };\r\n var postRenderFormatToggle = function (editor, name) {\r\n return function (e) {\r\n addFormatChangedListener(editor, name, function (state) {\r\n e.control.active(state);\r\n });\r\n };\r\n };\r\n\r\n var register = function (editor) {\r\n var alignFormats = [\r\n 'alignleft',\r\n 'aligncenter',\r\n 'alignright',\r\n 'alignjustify'\r\n ];\r\n var defaultAlign = 'alignleft';\r\n var alignMenuItems = [\r\n {\r\n text: 'Left',\r\n icon: 'alignleft',\r\n onclick: toggleFormat(editor, 'alignleft')\r\n },\r\n {\r\n text: 'Center',\r\n icon: 'aligncenter',\r\n onclick: toggleFormat(editor, 'aligncenter')\r\n },\r\n {\r\n text: 'Right',\r\n icon: 'alignright',\r\n onclick: toggleFormat(editor, 'alignright')\r\n },\r\n {\r\n text: 'Justify',\r\n icon: 'alignjustify',\r\n onclick: toggleFormat(editor, 'alignjustify')\r\n }\r\n ];\r\n editor.addMenuItem('align', {\r\n text: 'Align',\r\n menu: alignMenuItems\r\n });\r\n editor.addButton('align', {\r\n type: 'menubutton',\r\n icon: defaultAlign,\r\n menu: alignMenuItems,\r\n onShowMenu: function (e) {\r\n var menu = e.control.menu;\r\n global$2.each(alignFormats, function (formatName, idx) {\r\n menu.items().eq(idx).each(function (item) {\r\n return item.active(editor.formatter.match(formatName));\r\n });\r\n });\r\n },\r\n onPostRender: function (e) {\r\n var ctrl = e.control;\r\n global$2.each(alignFormats, function (formatName, idx) {\r\n addFormatChangedListener(editor, formatName, function (state) {\r\n ctrl.icon(defaultAlign);\r\n if (state) {\r\n ctrl.icon(formatName);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n global$2.each({\r\n alignleft: [\r\n 'Align left',\r\n 'JustifyLeft'\r\n ],\r\n aligncenter: [\r\n 'Align center',\r\n 'JustifyCenter'\r\n ],\r\n alignright: [\r\n 'Align right',\r\n 'JustifyRight'\r\n ],\r\n alignjustify: [\r\n 'Justify',\r\n 'JustifyFull'\r\n ],\r\n alignnone: [\r\n 'No alignment',\r\n 'JustifyNone'\r\n ]\r\n }, function (item, name) {\r\n editor.addButton(name, {\r\n active: false,\r\n tooltip: item[0],\r\n cmd: item[1],\r\n onPostRender: postRenderFormatToggle(editor, name)\r\n });\r\n });\r\n };\r\n var $_ffg0cgx1jkmcwsrx = { register: register };\r\n\r\n var getFirstFont = function (fontFamily) {\r\n return fontFamily ? fontFamily.split(',')[0] : '';\r\n };\r\n var findMatchingValue = function (items, fontFamily) {\r\n var font = fontFamily ? fontFamily.toLowerCase() : '';\r\n var value;\r\n global$2.each(items, function (item) {\r\n if (item.value.toLowerCase() === font) {\r\n value = item.value;\r\n }\r\n });\r\n global$2.each(items, function (item) {\r\n if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {\r\n value = item.value;\r\n }\r\n });\r\n return value;\r\n };\r\n var createFontNameListBoxChangeHandler = function (editor, items) {\r\n return function () {\r\n var self = this;\r\n self.state.set('value', null);\r\n editor.on('init nodeChange', function (e) {\r\n var fontFamily = editor.queryCommandValue('FontName');\r\n var match = findMatchingValue(items, fontFamily);\r\n self.value(match ? match : null);\r\n if (!match && fontFamily) {\r\n self.text(getFirstFont(fontFamily));\r\n }\r\n });\r\n };\r\n };\r\n var createFormats = function (formats) {\r\n formats = formats.replace(/;$/, '').split(';');\r\n var i = formats.length;\r\n while (i--) {\r\n formats[i] = formats[i].split('=');\r\n }\r\n return formats;\r\n };\r\n var getFontItems = function (editor) {\r\n var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';\r\n var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);\r\n return global$2.map(fonts, function (font) {\r\n return {\r\n text: { raw: font[0] },\r\n value: font[1],\r\n textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''\r\n };\r\n });\r\n };\r\n var registerButtons = function (editor) {\r\n editor.addButton('fontselect', function () {\r\n var items = getFontItems(editor);\r\n return {\r\n type: 'listbox',\r\n text: 'Font Family',\r\n tooltip: 'Font Family',\r\n values: items,\r\n fixedWidth: true,\r\n onPostRender: createFontNameListBoxChangeHandler(editor, items),\r\n onselect: function (e) {\r\n if (e.control.settings.value) {\r\n editor.execCommand('FontName', false, e.control.settings.value);\r\n }\r\n }\r\n };\r\n });\r\n };\r\n var register$1 = function (editor) {\r\n registerButtons(editor);\r\n };\r\n var $_1be6fjx3jkmcwss1 = { register: register$1 };\r\n\r\n var round = function (number, precision) {\r\n var factor = Math.pow(10, precision);\r\n return Math.round(number * factor) / factor;\r\n };\r\n var toPt = function (fontSize, precision) {\r\n if (/[0-9.]+px$/.test(fontSize)) {\r\n return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\r\n }\r\n return fontSize;\r\n };\r\n var findMatchingValue$1 = function (items, pt, px) {\r\n var value;\r\n global$2.each(items, function (item) {\r\n if (item.value === px) {\r\n value = px;\r\n } else if (item.value === pt) {\r\n value = pt;\r\n }\r\n });\r\n return value;\r\n };\r\n var createFontSizeListBoxChangeHandler = function (editor, items) {\r\n return function () {\r\n var self = this;\r\n editor.on('init nodeChange', function (e) {\r\n var px, pt, precision, match;\r\n px = editor.queryCommandValue('FontSize');\r\n if (px) {\r\n for (precision = 3; !match && precision >= 0; precision--) {\r\n pt = toPt(px, precision);\r\n match = findMatchingValue$1(items, pt, px);\r\n }\r\n }\r\n self.value(match ? match : null);\r\n if (!match) {\r\n self.text(pt);\r\n }\r\n });\r\n };\r\n };\r\n var getFontSizeItems = function (editor) {\r\n var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';\r\n var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;\r\n return global$2.map(fontsizeFormats.split(' '), function (item) {\r\n var text = item, value = item;\r\n var values = item.split('=');\r\n if (values.length > 1) {\r\n text = values[0];\r\n value = values[1];\r\n }\r\n return {\r\n text: text,\r\n value: value\r\n };\r\n });\r\n };\r\n var registerButtons$1 = function (editor) {\r\n editor.addButton('fontsizeselect', function () {\r\n var items = getFontSizeItems(editor);\r\n return {\r\n type: 'listbox',\r\n text: 'Font Sizes',\r\n tooltip: 'Font Sizes',\r\n values: items,\r\n fixedWidth: true,\r\n onPostRender: createFontSizeListBoxChangeHandler(editor, items),\r\n onclick: function (e) {\r\n if (e.control.settings.value) {\r\n editor.execCommand('FontSize', false, e.control.settings.value);\r\n }\r\n }\r\n };\r\n });\r\n };\r\n var register$2 = function (editor) {\r\n registerButtons$1(editor);\r\n };\r\n var $_fnu5cxx4jkmcwss4 = { register: register$2 };\r\n\r\n var hideMenuObjects = function (editor, menu) {\r\n var count = menu.length;\r\n global$2.each(menu, function (item) {\r\n if (item.menu) {\r\n item.hidden = hideMenuObjects(editor, item.menu) === 0;\r\n }\r\n var formatName = item.format;\r\n if (formatName) {\r\n item.hidden = !editor.formatter.canApply(formatName);\r\n }\r\n if (item.hidden) {\r\n count--;\r\n }\r\n });\r\n return count;\r\n };\r\n var hideFormatMenuItems = function (editor, menu) {\r\n var count = menu.items().length;\r\n menu.items().each(function (item) {\r\n if (item.menu) {\r\n item.visible(hideFormatMenuItems(editor, item.menu) > 0);\r\n }\r\n if (!item.menu && item.settings.menu) {\r\n item.visible(hideMenuObjects(editor, item.settings.menu) > 0);\r\n }\r\n var formatName = item.settings.format;\r\n if (formatName) {\r\n item.visible(editor.formatter.canApply(formatName));\r\n }\r\n if (!item.visible()) {\r\n count--;\r\n }\r\n });\r\n return count;\r\n };\r\n var createFormatMenu = function (editor) {\r\n var count = 0;\r\n var newFormats = [];\r\n var defaultStyleFormats = [\r\n {\r\n title: 'Headings',\r\n items: [\r\n {\r\n title: 'Heading 1',\r\n format: 'h1'\r\n },\r\n {\r\n title: 'Heading 2',\r\n format: 'h2'\r\n },\r\n {\r\n title: 'Heading 3',\r\n format: 'h3'\r\n },\r\n {\r\n title: 'Heading 4',\r\n format: 'h4'\r\n },\r\n {\r\n title: 'Heading 5',\r\n format: 'h5'\r\n },\r\n {\r\n title: 'Heading 6',\r\n format: 'h6'\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Inline',\r\n items: [\r\n {\r\n title: 'Bold',\r\n icon: 'bold',\r\n format: 'bold'\r\n },\r\n {\r\n title: 'Italic',\r\n icon: 'italic',\r\n format: 'italic'\r\n },\r\n {\r\n title: 'Underline',\r\n icon: 'underline',\r\n format: 'underline'\r\n },\r\n {\r\n title: 'Strikethrough',\r\n icon: 'strikethrough',\r\n format: 'strikethrough'\r\n },\r\n {\r\n title: 'Superscript',\r\n icon: 'superscript',\r\n format: 'superscript'\r\n },\r\n {\r\n title: 'Subscript',\r\n icon: 'subscript',\r\n format: 'subscript'\r\n },\r\n {\r\n title: 'Code',\r\n icon: 'code',\r\n format: 'code'\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Blocks',\r\n items: [\r\n {\r\n title: 'Paragraph',\r\n format: 'p'\r\n },\r\n {\r\n title: 'Blockquote',\r\n format: 'blockquote'\r\n },\r\n {\r\n title: 'Div',\r\n format: 'div'\r\n },\r\n {\r\n title: 'Pre',\r\n format: 'pre'\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Alignment',\r\n items: [\r\n {\r\n title: 'Left',\r\n icon: 'alignleft',\r\n format: 'alignleft'\r\n },\r\n {\r\n title: 'Center',\r\n icon: 'aligncenter',\r\n format: 'aligncenter'\r\n },\r\n {\r\n title: 'Right',\r\n icon: 'alignright',\r\n format: 'alignright'\r\n },\r\n {\r\n title: 'Justify',\r\n icon: 'alignjustify',\r\n format: 'alignjustify'\r\n }\r\n ]\r\n }\r\n ];\r\n var createMenu = function (formats) {\r\n var menu = [];\r\n if (!formats) {\r\n return;\r\n }\r\n global$2.each(formats, function (format) {\r\n var menuItem = {\r\n text: format.title,\r\n icon: format.icon\r\n };\r\n if (format.items) {\r\n menuItem.menu = createMenu(format.items);\r\n } else {\r\n var formatName = format.format || 'custom' + count++;\r\n if (!format.format) {\r\n format.name = formatName;\r\n newFormats.push(format);\r\n }\r\n menuItem.format = formatName;\r\n menuItem.cmd = format.cmd;\r\n }\r\n menu.push(menuItem);\r\n });\r\n return menu;\r\n };\r\n var createStylesMenu = function () {\r\n var menu;\r\n if (editor.settings.style_formats_merge) {\r\n if (editor.settings.style_formats) {\r\n menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));\r\n } else {\r\n menu = createMenu(defaultStyleFormats);\r\n }\r\n } else {\r\n menu = createMenu(editor.settings.style_formats || defaultStyleFormats);\r\n }\r\n return menu;\r\n };\r\n editor.on('init', function () {\r\n global$2.each(newFormats, function (format) {\r\n editor.formatter.register(format.name, format);\r\n });\r\n });\r\n return {\r\n type: 'menu',\r\n items: createStylesMenu(),\r\n onPostRender: function (e) {\r\n editor.fire('renderFormatsMenu', { control: e.control });\r\n },\r\n itemDefaults: {\r\n preview: true,\r\n textStyle: function () {\r\n if (this.settings.format) {\r\n return editor.formatter.getCssText(this.settings.format);\r\n }\r\n },\r\n onPostRender: function () {\r\n var self = this;\r\n self.parent().on('show', function () {\r\n var formatName, command;\r\n formatName = self.settings.format;\r\n if (formatName) {\r\n self.disabled(!editor.formatter.canApply(formatName));\r\n self.active(editor.formatter.match(formatName));\r\n }\r\n command = self.settings.cmd;\r\n if (command) {\r\n self.active(editor.queryCommandState(command));\r\n }\r\n });\r\n },\r\n onclick: function () {\r\n if (this.settings.format) {\r\n toggleFormat(editor, this.settings.format)();\r\n }\r\n if (this.settings.cmd) {\r\n editor.execCommand(this.settings.cmd);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n var registerMenuItems = function (editor, formatMenu) {\r\n editor.addMenuItem('formats', {\r\n text: 'Formats',\r\n menu: formatMenu\r\n });\r\n };\r\n var registerButtons$2 = function (editor, formatMenu) {\r\n editor.addButton('styleselect', {\r\n type: 'menubutton',\r\n text: 'Formats',\r\n menu: formatMenu,\r\n onShowMenu: function () {\r\n if (editor.settings.style_formats_autohide) {\r\n hideFormatMenuItems(editor, this.menu);\r\n }\r\n }\r\n });\r\n };\r\n var register$3 = function (editor) {\r\n var formatMenu = createFormatMenu(editor);\r\n registerMenuItems(editor, formatMenu);\r\n registerButtons$2(editor, formatMenu);\r\n };\r\n var $_cmdomhx5jkmcwss6 = { register: register$3 };\r\n\r\n var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';\r\n var createFormats$1 = function (formats) {\r\n formats = formats.replace(/;$/, '').split(';');\r\n var i = formats.length;\r\n while (i--) {\r\n formats[i] = formats[i].split('=');\r\n }\r\n return formats;\r\n };\r\n var createListBoxChangeHandler = function (editor, items, formatName) {\r\n return function () {\r\n var self = this;\r\n editor.on('nodeChange', function (e) {\r\n var formatter = editor.formatter;\r\n var value = null;\r\n global$2.each(e.parents, function (node) {\r\n global$2.each(items, function (item) {\r\n if (formatName) {\r\n if (formatter.matchNode(node, formatName, { value: item.value })) {\r\n value = item.value;\r\n }\r\n } else {\r\n if (formatter.matchNode(node, item.value)) {\r\n value = item.value;\r\n }\r\n }\r\n if (value) {\r\n return false;\r\n }\r\n });\r\n if (value) {\r\n return false;\r\n }\r\n });\r\n self.value(value);\r\n });\r\n };\r\n };\r\n var lazyFormatSelectBoxItems = function (editor, blocks) {\r\n return function () {\r\n var items = [];\r\n global$2.each(blocks, function (block) {\r\n items.push({\r\n text: block[0],\r\n value: block[1],\r\n textStyle: function () {\r\n return editor.formatter.getCssText(block[1]);\r\n }\r\n });\r\n });\r\n return {\r\n type: 'listbox',\r\n text: blocks[0][0],\r\n values: items,\r\n fixedWidth: true,\r\n onselect: function (e) {\r\n if (e.control) {\r\n var fmt = e.control.value();\r\n toggleFormat(editor, fmt)();\r\n }\r\n },\r\n onPostRender: createListBoxChangeHandler(editor, items)\r\n };\r\n };\r\n };\r\n var buildMenuItems = function (editor, blocks) {\r\n return global$2.map(blocks, function (block) {\r\n return {\r\n text: block[0],\r\n onclick: toggleFormat(editor, block[1]),\r\n textStyle: function () {\r\n return editor.formatter.getCssText(block[1]);\r\n }\r\n };\r\n });\r\n };\r\n var register$4 = function (editor) {\r\n var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);\r\n editor.addMenuItem('blockformats', {\r\n text: 'Blocks',\r\n menu: buildMenuItems(editor, blocks)\r\n });\r\n editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));\r\n };\r\n var $_cl4rffx6jkmcwssb = { register: register$4 };\r\n\r\n var createCustomMenuItems = function (editor, names) {\r\n var items, nameList;\r\n if (typeof names === 'string') {\r\n nameList = names.split(' ');\r\n } else if (global$2.isArray(names)) {\r\n return flatten(global$2.map(names, function (names) {\r\n return createCustomMenuItems(editor, names);\r\n }));\r\n }\r\n items = global$2.grep(nameList, function (name) {\r\n return name === '|' || name in editor.menuItems;\r\n });\r\n return global$2.map(items, function (name) {\r\n return name === '|' ? { text: '-' } : editor.menuItems[name];\r\n });\r\n };\r\n var isSeparator$1 = function (menuItem) {\r\n return menuItem && menuItem.text === '-';\r\n };\r\n var trimMenuItems = function (menuItems) {\r\n var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {\r\n return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);\r\n });\r\n return filter(menuItems2, function (menuItem, i, menuItems) {\r\n return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;\r\n });\r\n };\r\n var createContextMenuItems = function (editor, context) {\r\n var outputMenuItems = [{ text: '-' }];\r\n var menuItems = global$2.grep(editor.menuItems, function (menuItem) {\r\n return menuItem.context === context;\r\n });\r\n global$2.each(menuItems, function (menuItem) {\r\n if (menuItem.separator === 'before') {\r\n outputMenuItems.push({ text: '|' });\r\n }\r\n if (menuItem.prependToContext) {\r\n outputMenuItems.unshift(menuItem);\r\n } else {\r\n outputMenuItems.push(menuItem);\r\n }\r\n if (menuItem.separator === 'after') {\r\n outputMenuItems.push({ text: '|' });\r\n }\r\n });\r\n return outputMenuItems;\r\n };\r\n var createInsertMenu = function (editor) {\r\n var insertButtonItems = editor.settings.insert_button_items;\r\n if (insertButtonItems) {\r\n return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));\r\n } else {\r\n return trimMenuItems(createContextMenuItems(editor, 'insert'));\r\n }\r\n };\r\n var registerButtons$3 = function (editor) {\r\n editor.addButton('insert', {\r\n type: 'menubutton',\r\n icon: 'insert',\r\n menu: [],\r\n oncreatemenu: function () {\r\n this.menu.add(createInsertMenu(editor));\r\n this.menu.renderNew();\r\n }\r\n });\r\n };\r\n var register$5 = function (editor) {\r\n registerButtons$3(editor);\r\n };\r\n var $_7ix8zax7jkmcwssd = { register: register$5 };\r\n\r\n var registerFormatButtons = function (editor) {\r\n global$2.each({\r\n bold: 'Bold',\r\n italic: 'Italic',\r\n underline: 'Underline',\r\n strikethrough: 'Strikethrough',\r\n subscript: 'Subscript',\r\n superscript: 'Superscript'\r\n }, function (text, name) {\r\n editor.addButton(name, {\r\n active: false,\r\n tooltip: text,\r\n onPostRender: postRenderFormatToggle(editor, name),\r\n onclick: toggleFormat(editor, name)\r\n });\r\n });\r\n };\r\n var registerCommandButtons = function (editor) {\r\n global$2.each({\r\n outdent: [\r\n 'Decrease indent',\r\n 'Outdent'\r\n ],\r\n indent: [\r\n 'Increase indent',\r\n 'Indent'\r\n ],\r\n cut: [\r\n 'Cut',\r\n 'Cut'\r\n ],\r\n copy: [\r\n 'Copy',\r\n 'Copy'\r\n ],\r\n paste: [\r\n 'Paste',\r\n 'Paste'\r\n ],\r\n help: [\r\n 'Help',\r\n 'mceHelp'\r\n ],\r\n selectall: [\r\n 'Select all',\r\n 'SelectAll'\r\n ],\r\n visualaid: [\r\n 'Visual aids',\r\n 'mceToggleVisualAid'\r\n ],\r\n newdocument: [\r\n 'New document',\r\n 'mceNewDocument'\r\n ],\r\n removeformat: [\r\n 'Clear formatting',\r\n 'RemoveFormat'\r\n ],\r\n remove: [\r\n 'Remove',\r\n 'Delete'\r\n ]\r\n }, function (item, name) {\r\n editor.addButton(name, {\r\n tooltip: item[0],\r\n cmd: item[1]\r\n });\r\n });\r\n };\r\n var registerCommandToggleButtons = function (editor) {\r\n global$2.each({\r\n blockquote: [\r\n 'Blockquote',\r\n 'mceBlockQuote'\r\n ],\r\n subscript: [\r\n 'Subscript',\r\n 'Subscript'\r\n ],\r\n superscript: [\r\n 'Superscript',\r\n 'Superscript'\r\n ]\r\n }, function (item, name) {\r\n editor.addButton(name, {\r\n active: false,\r\n tooltip: item[0],\r\n cmd: item[1],\r\n onPostRender: postRenderFormatToggle(editor, name)\r\n });\r\n });\r\n };\r\n var registerButtons$4 = function (editor) {\r\n registerFormatButtons(editor);\r\n registerCommandButtons(editor);\r\n registerCommandToggleButtons(editor);\r\n };\r\n var registerMenuItems$1 = function (editor) {\r\n global$2.each({\r\n bold: [\r\n 'Bold',\r\n 'Bold',\r\n 'Meta+B'\r\n ],\r\n italic: [\r\n 'Italic',\r\n 'Italic',\r\n 'Meta+I'\r\n ],\r\n underline: [\r\n 'Underline',\r\n 'Underline',\r\n 'Meta+U'\r\n ],\r\n strikethrough: [\r\n 'Strikethrough',\r\n 'Strikethrough'\r\n ],\r\n subscript: [\r\n 'Subscript',\r\n 'Subscript'\r\n ],\r\n superscript: [\r\n 'Superscript',\r\n 'Superscript'\r\n ],\r\n removeformat: [\r\n 'Clear formatting',\r\n 'RemoveFormat'\r\n ],\r\n newdocument: [\r\n 'New document',\r\n 'mceNewDocument'\r\n ],\r\n cut: [\r\n 'Cut',\r\n 'Cut',\r\n 'Meta+X'\r\n ],\r\n copy: [\r\n 'Copy',\r\n 'Copy',\r\n 'Meta+C'\r\n ],\r\n paste: [\r\n 'Paste',\r\n 'Paste',\r\n 'Meta+V'\r\n ],\r\n selectall: [\r\n 'Select all',\r\n 'SelectAll',\r\n 'Meta+A'\r\n ]\r\n }, function (item, name) {\r\n editor.addMenuItem(name, {\r\n text: item[0],\r\n icon: name,\r\n shortcut: item[2],\r\n cmd: item[1]\r\n });\r\n });\r\n editor.addMenuItem('codeformat', {\r\n text: 'Code',\r\n icon: 'code',\r\n onclick: toggleFormat(editor, 'code')\r\n });\r\n };\r\n var register$6 = function (editor) {\r\n registerButtons$4(editor);\r\n registerMenuItems$1(editor);\r\n };\r\n var $_gbsmm2x8jkmcwssh = { register: register$6 };\r\n\r\n var toggleUndoRedoState = function (editor, type) {\r\n return function () {\r\n var self = this;\r\n var checkState = function () {\r\n var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';\r\n return editor.undoManager ? editor.undoManager[typeFn]() : false;\r\n };\r\n self.disabled(!checkState());\r\n editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {\r\n self.disabled(editor.readonly || !checkState());\r\n });\r\n };\r\n };\r\n var registerMenuItems$2 = function (editor) {\r\n editor.addMenuItem('undo', {\r\n text: 'Undo',\r\n icon: 'undo',\r\n shortcut: 'Meta+Z',\r\n onPostRender: toggleUndoRedoState(editor, 'undo'),\r\n cmd: 'undo'\r\n });\r\n editor.addMenuItem('redo', {\r\n text: 'Redo',\r\n icon: 'redo',\r\n shortcut: 'Meta+Y',\r\n onPostRender: toggleUndoRedoState(editor, 'redo'),\r\n cmd: 'redo'\r\n });\r\n };\r\n var registerButtons$5 = function (editor) {\r\n editor.addButton('undo', {\r\n tooltip: 'Undo',\r\n onPostRender: toggleUndoRedoState(editor, 'undo'),\r\n cmd: 'undo'\r\n });\r\n editor.addButton('redo', {\r\n tooltip: 'Redo',\r\n onPostRender: toggleUndoRedoState(editor, 'redo'),\r\n cmd: 'redo'\r\n });\r\n };\r\n var register$7 = function (editor) {\r\n registerMenuItems$2(editor);\r\n registerButtons$5(editor);\r\n };\r\n var $_1bdkmax9jkmcwssr = { register: register$7 };\r\n\r\n var toggleVisualAidState = function (editor) {\r\n return function () {\r\n var self = this;\r\n editor.on('VisualAid', function (e) {\r\n self.active(e.hasVisual);\r\n });\r\n self.active(editor.hasVisual);\r\n };\r\n };\r\n var registerMenuItems$3 = function (editor) {\r\n editor.addMenuItem('visualaid', {\r\n text: 'Visual aids',\r\n selectable: true,\r\n onPostRender: toggleVisualAidState(editor),\r\n cmd: 'mceToggleVisualAid'\r\n });\r\n };\r\n var register$8 = function (editor) {\r\n registerMenuItems$3(editor);\r\n };\r\n var $_21pl3hxajkmcwsst = { register: register$8 };\r\n\r\n var setupEnvironment = function () {\r\n Widget.tooltips = !global$8.iOS;\r\n Control$1.translate = function (text) {\r\n return global$1.translate(text);\r\n };\r\n };\r\n var setupUiContainer = function (editor) {\r\n if (editor.settings.ui_container) {\r\n global$8.container = $_epq3p6wyjkmcwsrh.descendant(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {\r\n return elm.dom();\r\n });\r\n }\r\n };\r\n var setupRtlMode = function (editor) {\r\n if (editor.rtl) {\r\n Control$1.rtl = true;\r\n }\r\n };\r\n var setupHideFloatPanels = function (editor) {\r\n editor.on('mousedown', function () {\r\n FloatPanel.hideAll();\r\n });\r\n };\r\n var setup$1 = function (editor) {\r\n setupRtlMode(editor);\r\n setupHideFloatPanels(editor);\r\n setupUiContainer(editor);\r\n setupEnvironment();\r\n $_cl4rffx6jkmcwssb.register(editor);\r\n $_ffg0cgx1jkmcwsrx.register(editor);\r\n $_gbsmm2x8jkmcwssh.register(editor);\r\n $_1bdkmax9jkmcwssr.register(editor);\r\n $_fnu5cxx4jkmcwss4.register(editor);\r\n $_1be6fjx3jkmcwss1.register(editor);\r\n $_cmdomhx5jkmcwss6.register(editor);\r\n $_21pl3hxajkmcwsst.register(editor);\r\n $_7ix8zax7jkmcwssd.register(editor);\r\n };\r\n var $_drujjnwxjkmcwsrc = { setup: setup$1 };\r\n\r\n var GridLayout = AbsoluteLayout.extend({\r\n recalc: function (container) {\r\n var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;\r\n var colWidths = [];\r\n var rowHeights = [];\r\n var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;\r\n settings = container.settings;\r\n items = container.items().filter(':visible');\r\n contLayoutRect = container.layoutRect();\r\n cols = settings.columns || Math.ceil(Math.sqrt(items.length));\r\n rows = Math.ceil(items.length / cols);\r\n spacingH = settings.spacingH || settings.spacing || 0;\r\n spacingV = settings.spacingV || settings.spacing || 0;\r\n alignH = settings.alignH || settings.align;\r\n alignV = settings.alignV || settings.align;\r\n contPaddingBox = container.paddingBox;\r\n reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();\r\n if (alignH && typeof alignH === 'string') {\r\n alignH = [alignH];\r\n }\r\n if (alignV && typeof alignV === 'string') {\r\n alignV = [alignV];\r\n }\r\n for (x = 0; x < cols; x++) {\r\n colWidths.push(0);\r\n }\r\n for (y = 0; y < rows; y++) {\r\n rowHeights.push(0);\r\n }\r\n for (y = 0; y < rows; y++) {\r\n for (x = 0; x < cols; x++) {\r\n ctrl = items[y * cols + x];\r\n if (!ctrl) {\r\n break;\r\n }\r\n ctrlLayoutRect = ctrl.layoutRect();\r\n ctrlMinWidth = ctrlLayoutRect.minW;\r\n ctrlMinHeight = ctrlLayoutRect.minH;\r\n colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];\r\n rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];\r\n }\r\n }\r\n availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;\r\n for (maxX = 0, x = 0; x < cols; x++) {\r\n maxX += colWidths[x] + (x > 0 ? spacingH : 0);\r\n availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];\r\n }\r\n availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;\r\n for (maxY = 0, y = 0; y < rows; y++) {\r\n maxY += rowHeights[y] + (y > 0 ? spacingV : 0);\r\n availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];\r\n }\r\n maxX += contPaddingBox.left + contPaddingBox.right;\r\n maxY += contPaddingBox.top + contPaddingBox.bottom;\r\n rect = {};\r\n rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);\r\n rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);\r\n rect.contentW = rect.minW - contLayoutRect.deltaW;\r\n rect.contentH = rect.minH - contLayoutRect.deltaH;\r\n rect.minW = Math.min(rect.minW, contLayoutRect.maxW);\r\n rect.minH = Math.min(rect.minH, contLayoutRect.maxH);\r\n rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);\r\n rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);\r\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\r\n rect.w = rect.minW;\r\n rect.h = rect.minH;\r\n container.layoutRect(rect);\r\n this.recalc(container);\r\n if (container._lastRect === null) {\r\n var parentCtrl = container.parent();\r\n if (parentCtrl) {\r\n parentCtrl._lastRect = null;\r\n parentCtrl.recalc();\r\n }\r\n }\r\n return;\r\n }\r\n if (contLayoutRect.autoResize) {\r\n rect = container.layoutRect(rect);\r\n rect.contentW = rect.minW - contLayoutRect.deltaW;\r\n rect.contentH = rect.minH - contLayoutRect.deltaH;\r\n }\r\n var flexV;\r\n if (settings.packV === 'start') {\r\n flexV = 0;\r\n } else {\r\n flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;\r\n }\r\n var totalFlex = 0;\r\n var flexWidths = settings.flexWidths;\r\n if (flexWidths) {\r\n for (x = 0; x < flexWidths.length; x++) {\r\n totalFlex += flexWidths[x];\r\n }\r\n } else {\r\n totalFlex = cols;\r\n }\r\n var ratio = availableWidth / totalFlex;\r\n for (x = 0; x < cols; x++) {\r\n colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;\r\n }\r\n posY = contPaddingBox.top;\r\n for (y = 0; y < rows; y++) {\r\n posX = contPaddingBox.left;\r\n height = rowHeights[y] + flexV;\r\n for (x = 0; x < cols; x++) {\r\n if (reverseRows) {\r\n idx = y * cols + cols - 1 - x;\r\n } else {\r\n idx = y * cols + x;\r\n }\r\n ctrl = items[idx];\r\n if (!ctrl) {\r\n break;\r\n }\r\n ctrlSettings = ctrl.settings;\r\n ctrlLayoutRect = ctrl.layoutRect();\r\n width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);\r\n ctrlLayoutRect.x = posX;\r\n ctrlLayoutRect.y = posY;\r\n align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);\r\n if (align === 'center') {\r\n ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;\r\n } else if (align === 'right') {\r\n ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;\r\n } else if (align === 'stretch') {\r\n ctrlLayoutRect.w = width;\r\n }\r\n align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);\r\n if (align === 'center') {\r\n ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;\r\n } else if (align === 'bottom') {\r\n ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;\r\n } else if (align === 'stretch') {\r\n ctrlLayoutRect.h = height;\r\n }\r\n ctrl.layoutRect(ctrlLayoutRect);\r\n posX += width + spacingH;\r\n if (ctrl.recalc) {\r\n ctrl.recalc();\r\n }\r\n }\r\n posY += height + spacingV;\r\n }\r\n }\r\n });\r\n\r\n var Iframe$1 = Widget.extend({\r\n renderHtml: function () {\r\n var self = this;\r\n self.classes.add('iframe');\r\n self.canFocus = false;\r\n return '';\r\n },\r\n src: function (src) {\r\n this.getEl().src = src;\r\n },\r\n html: function (html, callback) {\r\n var self = this, body = this.getEl().contentWindow.document.body;\r\n if (!body) {\r\n global$7.setTimeout(function () {\r\n self.html(html);\r\n });\r\n } else {\r\n body.innerHTML = html;\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n return this;\r\n }\r\n });\r\n\r\n var InfoBox = Widget.extend({\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n self.classes.add('widget').add('infobox');\r\n self.canFocus = false;\r\n },\r\n severity: function (level) {\r\n this.classes.remove('error');\r\n this.classes.remove('warning');\r\n this.classes.remove('success');\r\n this.classes.add(level);\r\n },\r\n help: function (state) {\r\n this.state.set('help', state);\r\n },\r\n renderHtml: function () {\r\n var self = this, prefix = self.classPrefix;\r\n return '
    ' + '
    ' + self.encode(self.state.get('text')) + '' + '
    ' + '
    ';\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:text', function (e) {\r\n self.getEl('body').firstChild.data = self.encode(e.value);\r\n if (self.state.get('rendered')) {\r\n self.updateLayoutRect();\r\n }\r\n });\r\n self.state.on('change:help', function (e) {\r\n self.classes.toggle('has-help', e.value);\r\n if (self.state.get('rendered')) {\r\n self.updateLayoutRect();\r\n }\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var Label = Widget.extend({\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n self.classes.add('widget').add('label');\r\n self.canFocus = false;\r\n if (settings.multiline) {\r\n self.classes.add('autoscroll');\r\n }\r\n if (settings.strong) {\r\n self.classes.add('strong');\r\n }\r\n },\r\n initLayoutRect: function () {\r\n var self = this, layoutRect = self._super();\r\n if (self.settings.multiline) {\r\n var size = funcs.getSize(self.getEl());\r\n if (size.width > layoutRect.maxW) {\r\n layoutRect.minW = layoutRect.maxW;\r\n self.classes.add('multiline');\r\n }\r\n self.getEl().style.width = layoutRect.minW + 'px';\r\n layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);\r\n }\r\n return layoutRect;\r\n },\r\n repaint: function () {\r\n var self = this;\r\n if (!self.settings.multiline) {\r\n self.getEl().style.lineHeight = self.layoutRect().h + 'px';\r\n }\r\n return self._super();\r\n },\r\n severity: function (level) {\r\n this.classes.remove('error');\r\n this.classes.remove('warning');\r\n this.classes.remove('success');\r\n this.classes.add(level);\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var targetCtrl, forName, forId = self.settings.forId;\r\n var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));\r\n if (!forId && (forName = self.settings.forName)) {\r\n targetCtrl = self.getRoot().find('#' + forName)[0];\r\n if (targetCtrl) {\r\n forId = targetCtrl._id;\r\n }\r\n }\r\n if (forId) {\r\n return '';\r\n }\r\n return '' + text + '';\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:text', function (e) {\r\n self.innerHtml(self.encode(e.value));\r\n if (self.state.get('rendered')) {\r\n self.updateLayoutRect();\r\n }\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var Toolbar$1 = Container.extend({\r\n Defaults: {\r\n role: 'toolbar',\r\n layout: 'flow'\r\n },\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n self.classes.add('toolbar');\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self.items().each(function (ctrl) {\r\n ctrl.classes.add('toolbar-item');\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var MenuBar = Toolbar$1.extend({\r\n Defaults: {\r\n role: 'menubar',\r\n containerCls: 'menubar',\r\n ariaRoot: true,\r\n defaults: { type: 'menubutton' }\r\n }\r\n });\r\n\r\n function isChildOf$1(node, parent$$1) {\r\n while (node) {\r\n if (parent$$1 === node) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n var MenuButton = Button.extend({\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._renderOpen = true;\r\n self$$1._super(settings);\r\n settings = self$$1.settings;\r\n self$$1.classes.add('menubtn');\r\n if (settings.fixedWidth) {\r\n self$$1.classes.add('fixed-width');\r\n }\r\n self$$1.aria('haspopup', true);\r\n self$$1.state.set('menu', settings.menu || self$$1.render());\r\n },\r\n showMenu: function (toggle) {\r\n var self$$1 = this;\r\n var menu;\r\n if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {\r\n return self$$1.hideMenu();\r\n }\r\n if (!self$$1.menu) {\r\n menu = self$$1.state.get('menu') || [];\r\n self$$1.classes.add('opened');\r\n if (menu.length) {\r\n menu = {\r\n type: 'menu',\r\n animate: true,\r\n items: menu\r\n };\r\n } else {\r\n menu.type = menu.type || 'menu';\r\n menu.animate = true;\r\n }\r\n if (!menu.renderTo) {\r\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();\r\n } else {\r\n self$$1.menu = menu.parent(self$$1).show().renderTo();\r\n }\r\n self$$1.fire('createmenu');\r\n self$$1.menu.reflow();\r\n self$$1.menu.on('cancel', function (e) {\r\n if (e.control.parent() === self$$1.menu) {\r\n e.stopPropagation();\r\n self$$1.focus();\r\n self$$1.hideMenu();\r\n }\r\n });\r\n self$$1.menu.on('select', function () {\r\n self$$1.focus();\r\n });\r\n self$$1.menu.on('show hide', function (e) {\r\n if (e.control === self$$1.menu) {\r\n self$$1.activeMenu(e.type === 'show');\r\n self$$1.classes.toggle('opened', e.type === 'show');\r\n }\r\n self$$1.aria('expanded', e.type === 'show');\r\n }).fire('show');\r\n }\r\n self$$1.menu.show();\r\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\r\n self$$1.menu.repaint();\r\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\r\n 'br-tr',\r\n 'tr-br'\r\n ] : [\r\n 'bl-tl',\r\n 'tl-bl'\r\n ]);\r\n self$$1.fire('showmenu');\r\n },\r\n hideMenu: function () {\r\n var self$$1 = this;\r\n if (self$$1.menu) {\r\n self$$1.menu.items().each(function (item) {\r\n if (item.hideMenu) {\r\n item.hideMenu();\r\n }\r\n });\r\n self$$1.menu.hide();\r\n }\r\n },\r\n activeMenu: function (state) {\r\n this.classes.toggle('active', state);\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\r\n var icon = self$$1.settings.icon, image;\r\n var text = self$$1.state.get('text');\r\n var textHtml = '';\r\n image = self$$1.settings.image;\r\n if (image) {\r\n icon = 'none';\r\n if (typeof image !== 'string') {\r\n image = window.getSelection ? image[0] : image[1];\r\n }\r\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\r\n } else {\r\n image = '';\r\n }\r\n if (text) {\r\n self$$1.classes.add('btn-has-text');\r\n textHtml = '' + self$$1.encode(text) + '';\r\n }\r\n icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\r\n self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');\r\n return '
    ' + '' + '
    ';\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n self$$1.on('click', function (e) {\r\n if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {\r\n self$$1.focus();\r\n self$$1.showMenu(!e.aria);\r\n if (e.aria) {\r\n self$$1.menu.items().filter(':visible')[0].focus();\r\n }\r\n }\r\n });\r\n self$$1.on('mouseenter', function (e) {\r\n var overCtrl = e.control;\r\n var parent$$1 = self$$1.parent();\r\n var hasVisibleSiblingMenu;\r\n if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {\r\n parent$$1.items().filter('MenuButton').each(function (ctrl) {\r\n if (ctrl.hideMenu && ctrl !== overCtrl) {\r\n if (ctrl.menu && ctrl.menu.visible()) {\r\n hasVisibleSiblingMenu = true;\r\n }\r\n ctrl.hideMenu();\r\n }\r\n });\r\n if (hasVisibleSiblingMenu) {\r\n overCtrl.focus();\r\n overCtrl.showMenu();\r\n }\r\n }\r\n });\r\n return self$$1._super();\r\n },\r\n bindStates: function () {\r\n var self$$1 = this;\r\n self$$1.state.on('change:menu', function () {\r\n if (self$$1.menu) {\r\n self$$1.menu.remove();\r\n }\r\n self$$1.menu = null;\r\n });\r\n return self$$1._super();\r\n },\r\n remove: function () {\r\n this._super();\r\n if (this.menu) {\r\n this.menu.remove();\r\n }\r\n }\r\n });\r\n\r\n var Menu = FloatPanel.extend({\r\n Defaults: {\r\n defaultType: 'menuitem',\r\n border: 1,\r\n layout: 'stack',\r\n role: 'application',\r\n bodyRole: 'menu',\r\n ariaRoot: true\r\n },\r\n init: function (settings) {\r\n var self = this;\r\n settings.autohide = true;\r\n settings.constrainToViewport = true;\r\n if (typeof settings.items === 'function') {\r\n settings.itemsFactory = settings.items;\r\n settings.items = [];\r\n }\r\n if (settings.itemDefaults) {\r\n var items = settings.items;\r\n var i = items.length;\r\n while (i--) {\r\n items[i] = global$2.extend({}, settings.itemDefaults, items[i]);\r\n }\r\n }\r\n self._super(settings);\r\n self.classes.add('menu');\r\n if (settings.animate && global$8.ie !== 11) {\r\n self.classes.add('animate');\r\n }\r\n },\r\n repaint: function () {\r\n this.classes.toggle('menu-align', true);\r\n this._super();\r\n this.getEl().style.height = '';\r\n this.getEl('body').style.height = '';\r\n return this;\r\n },\r\n cancel: function () {\r\n var self = this;\r\n self.hideAll();\r\n self.fire('select');\r\n },\r\n load: function () {\r\n var self = this;\r\n var time, factory;\r\n function hideThrobber() {\r\n if (self.throbber) {\r\n self.throbber.hide();\r\n self.throbber = null;\r\n }\r\n }\r\n factory = self.settings.itemsFactory;\r\n if (!factory) {\r\n return;\r\n }\r\n if (!self.throbber) {\r\n self.throbber = new Throbber(self.getEl('body'), true);\r\n if (self.items().length === 0) {\r\n self.throbber.show();\r\n self.fire('loading');\r\n } else {\r\n self.throbber.show(100, function () {\r\n self.items().remove();\r\n self.fire('loading');\r\n });\r\n }\r\n self.on('hide close', hideThrobber);\r\n }\r\n self.requestTime = time = new Date().getTime();\r\n self.settings.itemsFactory(function (items) {\r\n if (items.length === 0) {\r\n self.hide();\r\n return;\r\n }\r\n if (self.requestTime !== time) {\r\n return;\r\n }\r\n self.getEl().style.width = '';\r\n self.getEl('body').style.width = '';\r\n hideThrobber();\r\n self.items().remove();\r\n self.getEl('body').innerHTML = '';\r\n self.add(items);\r\n self.renderNew();\r\n self.fire('loaded');\r\n });\r\n },\r\n hideAll: function () {\r\n var self = this;\r\n this.find('menuitem').exec('hideMenu');\r\n return self._super();\r\n },\r\n preRender: function () {\r\n var self = this;\r\n self.items().each(function (ctrl) {\r\n var settings = ctrl.settings;\r\n if (settings.icon || settings.image || settings.selectable) {\r\n self._hasIcons = true;\r\n return false;\r\n }\r\n });\r\n if (self.settings.itemsFactory) {\r\n self.on('postrender', function () {\r\n if (self.settings.itemsFactory) {\r\n self.load();\r\n }\r\n });\r\n }\r\n self.on('show hide', function (e) {\r\n if (e.control === self) {\r\n if (e.type === 'show') {\r\n global$7.setTimeout(function () {\r\n self.classes.add('in');\r\n }, 0);\r\n } else {\r\n self.classes.remove('in');\r\n }\r\n }\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var ListBox = MenuButton.extend({\r\n init: function (settings) {\r\n var self = this;\r\n var values, selected, selectedText, lastItemCtrl;\r\n function setSelected(menuValues) {\r\n for (var i = 0; i < menuValues.length; i++) {\r\n selected = menuValues[i].selected || settings.value === menuValues[i].value;\r\n if (selected) {\r\n selectedText = selectedText || menuValues[i].text;\r\n self.state.set('value', menuValues[i].value);\r\n return true;\r\n }\r\n if (menuValues[i].menu) {\r\n if (setSelected(menuValues[i].menu)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n self._super(settings);\r\n settings = self.settings;\r\n self._values = values = settings.values;\r\n if (values) {\r\n if (typeof settings.value !== 'undefined') {\r\n setSelected(values);\r\n }\r\n if (!selected && values.length > 0) {\r\n selectedText = values[0].text;\r\n self.state.set('value', values[0].value);\r\n }\r\n self.state.set('menu', values);\r\n }\r\n self.state.set('text', settings.text || selectedText);\r\n self.classes.add('listbox');\r\n self.on('select', function (e) {\r\n var ctrl = e.control;\r\n if (lastItemCtrl) {\r\n e.lastControl = lastItemCtrl;\r\n }\r\n if (settings.multiple) {\r\n ctrl.active(!ctrl.active());\r\n } else {\r\n self.value(e.control.value());\r\n }\r\n lastItemCtrl = ctrl;\r\n });\r\n },\r\n value: function (value) {\r\n if (arguments.length === 0) {\r\n return this.state.get('value');\r\n }\r\n if (typeof value === 'undefined') {\r\n return this;\r\n }\r\n if (this.settings.values) {\r\n var matchingValues = global$2.grep(this.settings.values, function (a) {\r\n return a.value === value;\r\n });\r\n if (matchingValues.length > 0) {\r\n this.state.set('value', value);\r\n } else if (value === null) {\r\n this.state.set('value', null);\r\n }\r\n } else {\r\n this.state.set('value', value);\r\n }\r\n return this;\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n function activateMenuItemsByValue(menu, value) {\r\n if (menu instanceof Menu) {\r\n menu.items().each(function (ctrl) {\r\n if (!ctrl.hasMenus()) {\r\n ctrl.active(ctrl.value() === value);\r\n }\r\n });\r\n }\r\n }\r\n function getSelectedItem(menuValues, value) {\r\n var selectedItem;\r\n if (!menuValues) {\r\n return;\r\n }\r\n for (var i = 0; i < menuValues.length; i++) {\r\n if (menuValues[i].value === value) {\r\n return menuValues[i];\r\n }\r\n if (menuValues[i].menu) {\r\n selectedItem = getSelectedItem(menuValues[i].menu, value);\r\n if (selectedItem) {\r\n return selectedItem;\r\n }\r\n }\r\n }\r\n }\r\n self.on('show', function (e) {\r\n activateMenuItemsByValue(e.control, self.value());\r\n });\r\n self.state.on('change:value', function (e) {\r\n var selectedItem = getSelectedItem(self.state.get('menu'), e.value);\r\n if (selectedItem) {\r\n self.text(selectedItem.text);\r\n } else {\r\n self.text(self.settings.text);\r\n }\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var toggleTextStyle = function (ctrl, state) {\r\n var textStyle = ctrl._textStyle;\r\n if (textStyle) {\r\n var textElm = ctrl.getEl('text');\r\n textElm.setAttribute('style', textStyle);\r\n if (state) {\r\n textElm.style.color = '';\r\n textElm.style.backgroundColor = '';\r\n }\r\n }\r\n };\r\n var MenuItem = Widget.extend({\r\n Defaults: {\r\n border: 0,\r\n role: 'menuitem'\r\n },\r\n init: function (settings) {\r\n var self = this;\r\n var text;\r\n self._super(settings);\r\n settings = self.settings;\r\n self.classes.add('menu-item');\r\n if (settings.menu) {\r\n self.classes.add('menu-item-expand');\r\n }\r\n if (settings.preview) {\r\n self.classes.add('menu-item-preview');\r\n }\r\n text = self.state.get('text');\r\n if (text === '-' || text === '|') {\r\n self.classes.add('menu-item-sep');\r\n self.aria('role', 'separator');\r\n self.state.set('text', '-');\r\n }\r\n if (settings.selectable) {\r\n self.aria('role', 'menuitemcheckbox');\r\n self.classes.add('menu-item-checkbox');\r\n settings.icon = 'selected';\r\n }\r\n if (!settings.preview && !settings.selectable) {\r\n self.classes.add('menu-item-normal');\r\n }\r\n self.on('mousedown', function (e) {\r\n e.preventDefault();\r\n });\r\n if (settings.menu && !settings.ariaHideMenu) {\r\n self.aria('haspopup', true);\r\n }\r\n },\r\n hasMenus: function () {\r\n return !!this.settings.menu;\r\n },\r\n showMenu: function () {\r\n var self = this;\r\n var settings = self.settings;\r\n var menu;\r\n var parent = self.parent();\r\n parent.items().each(function (ctrl) {\r\n if (ctrl !== self) {\r\n ctrl.hideMenu();\r\n }\r\n });\r\n if (settings.menu) {\r\n menu = self.menu;\r\n if (!menu) {\r\n menu = settings.menu;\r\n if (menu.length) {\r\n menu = {\r\n type: 'menu',\r\n items: menu\r\n };\r\n } else {\r\n menu.type = menu.type || 'menu';\r\n }\r\n if (parent.settings.itemDefaults) {\r\n menu.itemDefaults = parent.settings.itemDefaults;\r\n }\r\n menu = self.menu = global$4.create(menu).parent(self).renderTo();\r\n menu.reflow();\r\n menu.on('cancel', function (e) {\r\n e.stopPropagation();\r\n self.focus();\r\n menu.hide();\r\n });\r\n menu.on('show hide', function (e) {\r\n if (e.control.items) {\r\n e.control.items().each(function (ctrl) {\r\n ctrl.active(ctrl.settings.selected);\r\n });\r\n }\r\n }).fire('show');\r\n menu.on('hide', function (e) {\r\n if (e.control === menu) {\r\n self.classes.remove('selected');\r\n }\r\n });\r\n menu.submenu = true;\r\n } else {\r\n menu.show();\r\n }\r\n menu._parentMenu = parent;\r\n menu.classes.add('menu-sub');\r\n var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [\r\n 'tl-tr',\r\n 'bl-br',\r\n 'tr-tl',\r\n 'br-bl'\r\n ] : [\r\n 'tr-tl',\r\n 'br-bl',\r\n 'tl-tr',\r\n 'bl-br'\r\n ]);\r\n menu.moveRel(self.getEl(), rel);\r\n menu.rel = rel;\r\n rel = 'menu-sub-' + rel;\r\n menu.classes.remove(menu._lastRel).add(rel);\r\n menu._lastRel = rel;\r\n self.classes.add('selected');\r\n self.aria('expanded', true);\r\n }\r\n },\r\n hideMenu: function () {\r\n var self = this;\r\n if (self.menu) {\r\n self.menu.items().each(function (item) {\r\n if (item.hideMenu) {\r\n item.hideMenu();\r\n }\r\n });\r\n self.menu.hide();\r\n self.aria('expanded', false);\r\n }\r\n return self;\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var id = self._id;\r\n var settings = self.settings;\r\n var prefix = self.classPrefix;\r\n var text = self.state.get('text');\r\n var icon = self.settings.icon, image = '', shortcut = settings.shortcut;\r\n var url = self.encode(settings.url), iconHtml = '';\r\n function convertShortcut(shortcut) {\r\n var i, value, replace = {};\r\n if (global$8.mac) {\r\n replace = {\r\n alt: '⌥',\r\n ctrl: '⌘',\r\n shift: '⇧',\r\n meta: '⌘'\r\n };\r\n } else {\r\n replace = { meta: 'Ctrl' };\r\n }\r\n shortcut = shortcut.split('+');\r\n for (i = 0; i < shortcut.length; i++) {\r\n value = replace[shortcut[i].toLowerCase()];\r\n if (value) {\r\n shortcut[i] = value;\r\n }\r\n }\r\n return shortcut.join('+');\r\n }\r\n function escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n }\r\n function markMatches(text) {\r\n var match = settings.match || '';\r\n return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {\r\n return '!mce~match[' + match + ']mce~match!';\r\n }) : text;\r\n }\r\n function boldMatches(text) {\r\n return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '');\r\n }\r\n if (icon) {\r\n self.parent().classes.add('menu-has-icons');\r\n }\r\n if (settings.image) {\r\n image = ' style=\"background-image: url(\\'' + settings.image + '\\')\"';\r\n }\r\n if (shortcut) {\r\n shortcut = convertShortcut(shortcut);\r\n }\r\n icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');\r\n iconHtml = text !== '-' ? '\\xA0' : '';\r\n text = boldMatches(self.encode(markMatches(text)));\r\n url = boldMatches(self.encode(markMatches(url)));\r\n return '
    ' + iconHtml + (text !== '-' ? '' + text + '' : '') + (shortcut ? '
    ' + shortcut + '
    ' : '') + (settings.menu ? '
    ' : '') + (url ? '
    ' + url + '
    ' : '') + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this, settings = self.settings;\r\n var textStyle = settings.textStyle;\r\n if (typeof textStyle === 'function') {\r\n textStyle = textStyle.call(this);\r\n }\r\n if (textStyle) {\r\n var textElm = self.getEl('text');\r\n if (textElm) {\r\n textElm.setAttribute('style', textStyle);\r\n self._textStyle = textStyle;\r\n }\r\n }\r\n self.on('mouseenter click', function (e) {\r\n if (e.control === self) {\r\n if (!settings.menu && e.type === 'click') {\r\n self.fire('select');\r\n global$7.requestAnimationFrame(function () {\r\n self.parent().hideAll();\r\n });\r\n } else {\r\n self.showMenu();\r\n if (e.aria) {\r\n self.menu.focus(true);\r\n }\r\n }\r\n }\r\n });\r\n self._super();\r\n return self;\r\n },\r\n hover: function () {\r\n var self = this;\r\n self.parent().items().each(function (ctrl) {\r\n ctrl.classes.remove('selected');\r\n });\r\n self.classes.toggle('selected', true);\r\n return self;\r\n },\r\n active: function (state) {\r\n toggleTextStyle(this, state);\r\n if (typeof state !== 'undefined') {\r\n this.aria('checked', state);\r\n }\r\n return this._super(state);\r\n },\r\n remove: function () {\r\n this._super();\r\n if (this.menu) {\r\n this.menu.remove();\r\n }\r\n }\r\n });\r\n\r\n var Radio = Checkbox.extend({\r\n Defaults: {\r\n classes: 'radio',\r\n role: 'radio'\r\n }\r\n });\r\n\r\n var ResizeHandle = Widget.extend({\r\n renderHtml: function () {\r\n var self = this, prefix = self.classPrefix;\r\n self.classes.add('resizehandle');\r\n if (self.settings.direction === 'both') {\r\n self.classes.add('resizehandle-both');\r\n }\r\n self.canFocus = false;\r\n return '
    ' + '' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self._super();\r\n self.resizeDragHelper = new DragHelper(this._id, {\r\n start: function () {\r\n self.fire('ResizeStart');\r\n },\r\n drag: function (e) {\r\n if (self.settings.direction !== 'both') {\r\n e.deltaX = 0;\r\n }\r\n self.fire('Resize', e);\r\n },\r\n stop: function () {\r\n self.fire('ResizeEnd');\r\n }\r\n });\r\n },\r\n remove: function () {\r\n if (this.resizeDragHelper) {\r\n this.resizeDragHelper.destroy();\r\n }\r\n return this._super();\r\n }\r\n });\r\n\r\n function createOptions(options) {\r\n var strOptions = '';\r\n if (options) {\r\n for (var i = 0; i < options.length; i++) {\r\n strOptions += '';\r\n }\r\n }\r\n return strOptions;\r\n }\r\n var SelectBox = Widget.extend({\r\n Defaults: {\r\n classes: 'selectbox',\r\n role: 'selectbox',\r\n options: []\r\n },\r\n init: function (settings) {\r\n var self = this;\r\n self._super(settings);\r\n if (self.settings.size) {\r\n self.size = self.settings.size;\r\n }\r\n if (self.settings.options) {\r\n self._options = self.settings.options;\r\n }\r\n self.on('keydown', function (e) {\r\n var rootControl;\r\n if (e.keyCode === 13) {\r\n e.preventDefault();\r\n self.parents().reverse().each(function (ctrl) {\r\n if (ctrl.toJSON) {\r\n rootControl = ctrl;\r\n return false;\r\n }\r\n });\r\n self.fire('submit', { data: rootControl.toJSON() });\r\n }\r\n });\r\n },\r\n options: function (state) {\r\n if (!arguments.length) {\r\n return this.state.get('options');\r\n }\r\n this.state.set('options', state);\r\n return this;\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var options, size = '';\r\n options = createOptions(self._options);\r\n if (self.size) {\r\n size = ' size = \"' + self.size + '\"';\r\n }\r\n return '';\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:options', function (e) {\r\n self.getEl().innerHTML = createOptions(e.value);\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n function constrain(value, minVal, maxVal) {\r\n if (value < minVal) {\r\n value = minVal;\r\n }\r\n if (value > maxVal) {\r\n value = maxVal;\r\n }\r\n return value;\r\n }\r\n function setAriaProp(el, name, value) {\r\n el.setAttribute('aria-' + name, value);\r\n }\r\n function updateSliderHandle(ctrl, value) {\r\n var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;\r\n if (ctrl.settings.orientation === 'v') {\r\n stylePosName = 'top';\r\n sizeName = 'height';\r\n shortSizeName = 'h';\r\n } else {\r\n stylePosName = 'left';\r\n sizeName = 'width';\r\n shortSizeName = 'w';\r\n }\r\n handleEl = ctrl.getEl('handle');\r\n maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\r\n styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';\r\n handleEl.style[stylePosName] = styleValue;\r\n handleEl.style.height = ctrl.layoutRect().h + 'px';\r\n setAriaProp(handleEl, 'valuenow', value);\r\n setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));\r\n setAriaProp(handleEl, 'valuemin', ctrl._minValue);\r\n setAriaProp(handleEl, 'valuemax', ctrl._maxValue);\r\n }\r\n var Slider = Widget.extend({\r\n init: function (settings) {\r\n var self = this;\r\n if (!settings.previewFilter) {\r\n settings.previewFilter = function (value) {\r\n return Math.round(value * 100) / 100;\r\n };\r\n }\r\n self._super(settings);\r\n self.classes.add('slider');\r\n if (settings.orientation === 'v') {\r\n self.classes.add('vertical');\r\n }\r\n self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;\r\n self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;\r\n self._initValue = self.state.get('value');\r\n },\r\n renderHtml: function () {\r\n var self = this, id = self._id, prefix = self.classPrefix;\r\n return '
    ' + '
    ' + '
    ';\r\n },\r\n reset: function () {\r\n this.value(this._initValue).repaint();\r\n },\r\n postRender: function () {\r\n var self = this;\r\n var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;\r\n function toFraction(min, max, val) {\r\n return (val + min) / (max - min);\r\n }\r\n function fromFraction(min, max, val) {\r\n return val * (max - min) - min;\r\n }\r\n function handleKeyboard(minValue, maxValue) {\r\n function alter(delta) {\r\n var value;\r\n value = self.value();\r\n value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);\r\n value = constrain(value, minValue, maxValue);\r\n self.value(value);\r\n self.fire('dragstart', { value: value });\r\n self.fire('drag', { value: value });\r\n self.fire('dragend', { value: value });\r\n }\r\n self.on('keydown', function (e) {\r\n switch (e.keyCode) {\r\n case 37:\r\n case 38:\r\n alter(-1);\r\n break;\r\n case 39:\r\n case 40:\r\n alter(1);\r\n break;\r\n }\r\n });\r\n }\r\n function handleDrag(minValue, maxValue, handleEl) {\r\n var startPos, startHandlePos, maxHandlePos, handlePos, value;\r\n self._dragHelper = new DragHelper(self._id, {\r\n handle: self._id + '-handle',\r\n start: function (e) {\r\n startPos = e[screenCordName];\r\n startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);\r\n maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\r\n self.fire('dragstart', { value: value });\r\n },\r\n drag: function (e) {\r\n var delta = e[screenCordName] - startPos;\r\n handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);\r\n handleEl.style[stylePosName] = handlePos + 'px';\r\n value = minValue + handlePos / maxHandlePos * (maxValue - minValue);\r\n self.value(value);\r\n self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');\r\n self.fire('drag', { value: value });\r\n },\r\n stop: function () {\r\n self.tooltip().hide();\r\n self.fire('dragend', { value: value });\r\n }\r\n });\r\n }\r\n minValue = self._minValue;\r\n maxValue = self._maxValue;\r\n if (self.settings.orientation === 'v') {\r\n screenCordName = 'screenY';\r\n stylePosName = 'top';\r\n sizeName = 'height';\r\n shortSizeName = 'h';\r\n } else {\r\n screenCordName = 'screenX';\r\n stylePosName = 'left';\r\n sizeName = 'width';\r\n shortSizeName = 'w';\r\n }\r\n self._super();\r\n handleKeyboard(minValue, maxValue);\r\n handleDrag(minValue, maxValue, self.getEl('handle'));\r\n },\r\n repaint: function () {\r\n this._super();\r\n updateSliderHandle(this, this.value());\r\n },\r\n bindStates: function () {\r\n var self = this;\r\n self.state.on('change:value', function (e) {\r\n updateSliderHandle(self, e.value);\r\n });\r\n return self._super();\r\n }\r\n });\r\n\r\n var Spacer = Widget.extend({\r\n renderHtml: function () {\r\n var self = this;\r\n self.classes.add('spacer');\r\n self.canFocus = false;\r\n return '
    ';\r\n }\r\n });\r\n\r\n var SplitButton = MenuButton.extend({\r\n Defaults: {\r\n classes: 'widget btn splitbtn',\r\n role: 'button'\r\n },\r\n repaint: function () {\r\n var self$$1 = this;\r\n var elm = self$$1.getEl();\r\n var rect = self$$1.layoutRect();\r\n var mainButtonElm, menuButtonElm;\r\n self$$1._super();\r\n mainButtonElm = elm.firstChild;\r\n menuButtonElm = elm.lastChild;\r\n global$9(mainButtonElm).css({\r\n width: rect.w - funcs.getSize(menuButtonElm).width,\r\n height: rect.h - 2\r\n });\r\n global$9(menuButtonElm).css({ height: rect.h - 2 });\r\n return self$$1;\r\n },\r\n activeMenu: function (state) {\r\n var self$$1 = this;\r\n global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this;\r\n var id = self$$1._id;\r\n var prefix = self$$1.classPrefix;\r\n var image;\r\n var icon = self$$1.state.get('icon');\r\n var text = self$$1.state.get('text');\r\n var settings = self$$1.settings;\r\n var textHtml = '', ariaPressed;\r\n image = settings.image;\r\n if (image) {\r\n icon = 'none';\r\n if (typeof image !== 'string') {\r\n image = window.getSelection ? image[0] : image[1];\r\n }\r\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\r\n } else {\r\n image = '';\r\n }\r\n icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\r\n if (text) {\r\n self$$1.classes.add('btn-has-text');\r\n textHtml = '' + self$$1.encode(text) + '';\r\n }\r\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\r\n return '
    ' + '' + '' + '
    ';\r\n },\r\n postRender: function () {\r\n var self$$1 = this, onClickHandler = self$$1.settings.onclick;\r\n self$$1.on('click', function (e) {\r\n var node = e.target;\r\n if (e.control === this) {\r\n while (node) {\r\n if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {\r\n e.stopImmediatePropagation();\r\n if (onClickHandler) {\r\n onClickHandler.call(this, e);\r\n }\r\n return;\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n });\r\n delete self$$1.settings.onclick;\r\n return self$$1._super();\r\n }\r\n });\r\n\r\n var StackLayout = FlowLayout.extend({\r\n Defaults: {\r\n containerClass: 'stack-layout',\r\n controlClass: 'stack-layout-item',\r\n endClass: 'break'\r\n },\r\n isNative: function () {\r\n return true;\r\n }\r\n });\r\n\r\n var TabPanel = Panel.extend({\r\n Defaults: {\r\n layout: 'absolute',\r\n defaults: { type: 'panel' }\r\n },\r\n activateTab: function (idx) {\r\n var activeTabElm;\r\n if (this.activeTabId) {\r\n activeTabElm = this.getEl(this.activeTabId);\r\n global$9(activeTabElm).removeClass(this.classPrefix + 'active');\r\n activeTabElm.setAttribute('aria-selected', 'false');\r\n }\r\n this.activeTabId = 't' + idx;\r\n activeTabElm = this.getEl('t' + idx);\r\n activeTabElm.setAttribute('aria-selected', 'true');\r\n global$9(activeTabElm).addClass(this.classPrefix + 'active');\r\n this.items()[idx].show().fire('showtab');\r\n this.reflow();\r\n this.items().each(function (item, i) {\r\n if (idx !== i) {\r\n item.hide();\r\n }\r\n });\r\n },\r\n renderHtml: function () {\r\n var self = this;\r\n var layout = self._layout;\r\n var tabsHtml = '';\r\n var prefix = self.classPrefix;\r\n self.preRender();\r\n layout.preRender(self);\r\n self.items().each(function (ctrl, i) {\r\n var id = self._id + '-t' + i;\r\n ctrl.aria('role', 'tabpanel');\r\n ctrl.aria('labelledby', id);\r\n tabsHtml += '
    ' + self.encode(ctrl.settings.title) + '
    ';\r\n });\r\n return '
    ' + '
    ' + tabsHtml + '
    ' + '
    ' + layout.renderHtml(self) + '
    ' + '
    ';\r\n },\r\n postRender: function () {\r\n var self = this;\r\n self._super();\r\n self.settings.activeTab = self.settings.activeTab || 0;\r\n self.activateTab(self.settings.activeTab);\r\n this.on('click', function (e) {\r\n var targetParent = e.target.parentNode;\r\n if (targetParent && targetParent.id === self._id + '-head') {\r\n var i = targetParent.childNodes.length;\r\n while (i--) {\r\n if (targetParent.childNodes[i] === e.target) {\r\n self.activateTab(i);\r\n }\r\n }\r\n }\r\n });\r\n },\r\n initLayoutRect: function () {\r\n var self = this;\r\n var rect, minW, minH;\r\n minW = funcs.getSize(self.getEl('head')).width;\r\n minW = minW < 0 ? 0 : minW;\r\n minH = 0;\r\n self.items().each(function (item) {\r\n minW = Math.max(minW, item.layoutRect().minW);\r\n minH = Math.max(minH, item.layoutRect().minH);\r\n });\r\n self.items().each(function (ctrl) {\r\n ctrl.settings.x = 0;\r\n ctrl.settings.y = 0;\r\n ctrl.settings.w = minW;\r\n ctrl.settings.h = minH;\r\n ctrl.layoutRect({\r\n x: 0,\r\n y: 0,\r\n w: minW,\r\n h: minH\r\n });\r\n });\r\n var headH = funcs.getSize(self.getEl('head')).height;\r\n self.settings.minWidth = minW;\r\n self.settings.minHeight = minH + headH;\r\n rect = self._super();\r\n rect.deltaH += headH;\r\n rect.innerH = rect.h - rect.deltaH;\r\n return rect;\r\n }\r\n });\r\n\r\n var TextBox = Widget.extend({\r\n init: function (settings) {\r\n var self$$1 = this;\r\n self$$1._super(settings);\r\n self$$1.classes.add('textbox');\r\n if (settings.multiline) {\r\n self$$1.classes.add('multiline');\r\n } else {\r\n self$$1.on('keydown', function (e) {\r\n var rootControl;\r\n if (e.keyCode === 13) {\r\n e.preventDefault();\r\n self$$1.parents().reverse().each(function (ctrl) {\r\n if (ctrl.toJSON) {\r\n rootControl = ctrl;\r\n return false;\r\n }\r\n });\r\n self$$1.fire('submit', { data: rootControl.toJSON() });\r\n }\r\n });\r\n self$$1.on('keyup', function (e) {\r\n self$$1.state.set('value', e.target.value);\r\n });\r\n }\r\n },\r\n repaint: function () {\r\n var self$$1 = this;\r\n var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;\r\n style = self$$1.getEl().style;\r\n rect = self$$1._layoutRect;\r\n lastRepaintRect = self$$1._lastRepaintRect || {};\r\n var doc = document;\r\n if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\r\n style.lineHeight = rect.h - borderH + 'px';\r\n }\r\n borderBox = self$$1.borderBox;\r\n borderW = borderBox.left + borderBox.right + 8;\r\n borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);\r\n if (rect.x !== lastRepaintRect.x) {\r\n style.left = rect.x + 'px';\r\n lastRepaintRect.x = rect.x;\r\n }\r\n if (rect.y !== lastRepaintRect.y) {\r\n style.top = rect.y + 'px';\r\n lastRepaintRect.y = rect.y;\r\n }\r\n if (rect.w !== lastRepaintRect.w) {\r\n style.width = rect.w - borderW + 'px';\r\n lastRepaintRect.w = rect.w;\r\n }\r\n if (rect.h !== lastRepaintRect.h) {\r\n style.height = rect.h - borderH + 'px';\r\n lastRepaintRect.h = rect.h;\r\n }\r\n self$$1._lastRepaintRect = lastRepaintRect;\r\n self$$1.fire('repaint', {}, false);\r\n return self$$1;\r\n },\r\n renderHtml: function () {\r\n var self$$1 = this;\r\n var settings = self$$1.settings;\r\n var attrs, elm;\r\n attrs = {\r\n id: self$$1._id,\r\n hidefocus: '1'\r\n };\r\n global$2.each([\r\n 'rows',\r\n 'spellcheck',\r\n 'maxLength',\r\n 'size',\r\n 'readonly',\r\n 'min',\r\n 'max',\r\n 'step',\r\n 'list',\r\n 'pattern',\r\n 'placeholder',\r\n 'required',\r\n 'multiple'\r\n ], function (name$$1) {\r\n attrs[name$$1] = settings[name$$1];\r\n });\r\n if (self$$1.disabled()) {\r\n attrs.disabled = 'disabled';\r\n }\r\n if (settings.subtype) {\r\n attrs.type = settings.subtype;\r\n }\r\n elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);\r\n elm.value = self$$1.state.get('value');\r\n elm.className = self$$1.classes.toString();\r\n return elm.outerHTML;\r\n },\r\n value: function (value) {\r\n if (arguments.length) {\r\n this.state.set('value', value);\r\n return this;\r\n }\r\n if (this.state.get('rendered')) {\r\n this.state.set('value', this.getEl().value);\r\n }\r\n return this.state.get('value');\r\n },\r\n postRender: function () {\r\n var self$$1 = this;\r\n self$$1.getEl().value = self$$1.state.get('value');\r\n self$$1._super();\r\n self$$1.$el.on('change', function (e) {\r\n self$$1.state.set('value', e.target.value);\r\n self$$1.fire('change', e);\r\n });\r\n },\r\n bindStates: function () {\r\n var self$$1 = this;\r\n self$$1.state.on('change:value', function (e) {\r\n if (self$$1.getEl().value !== e.value) {\r\n self$$1.getEl().value = e.value;\r\n }\r\n });\r\n self$$1.state.on('change:disabled', function (e) {\r\n self$$1.getEl().disabled = e.value;\r\n });\r\n return self$$1._super();\r\n },\r\n remove: function () {\r\n this.$el.off();\r\n this._super();\r\n }\r\n });\r\n\r\n var getApi = function () {\r\n return {\r\n Selector: Selector,\r\n Collection: Collection$2,\r\n ReflowQueue: $_921m08uxjkmcwsk2,\r\n Control: Control$1,\r\n Factory: global$4,\r\n KeyboardNavigation: KeyboardNavigation,\r\n Container: Container,\r\n DragHelper: DragHelper,\r\n Scrollable: $_c9juz9uzjkmcwskb,\r\n Panel: Panel,\r\n Movable: $_77p0ikukjkmcwsie,\r\n Resizable: $_4ci2x6v1jkmcwski,\r\n FloatPanel: FloatPanel,\r\n Window: Window$$1,\r\n MessageBox: MessageBox,\r\n Tooltip: Tooltip,\r\n Widget: Widget,\r\n Progress: Progress,\r\n Notification: Notification,\r\n Layout: Layout,\r\n AbsoluteLayout: AbsoluteLayout,\r\n Button: Button,\r\n ButtonGroup: ButtonGroup,\r\n Checkbox: Checkbox,\r\n ComboBox: ComboBox,\r\n ColorBox: ColorBox,\r\n PanelButton: PanelButton,\r\n ColorButton: ColorButton,\r\n ColorPicker: ColorPicker,\r\n Path: Path,\r\n ElementPath: ElementPath,\r\n FormItem: FormItem,\r\n Form: Form,\r\n FieldSet: FieldSet,\r\n FilePicker: FilePicker,\r\n FitLayout: FitLayout,\r\n FlexLayout: FlexLayout,\r\n FlowLayout: FlowLayout,\r\n FormatControls: $_drujjnwxjkmcwsrc,\r\n GridLayout: GridLayout,\r\n Iframe: Iframe$1,\r\n InfoBox: InfoBox,\r\n Label: Label,\r\n Toolbar: Toolbar$1,\r\n MenuBar: MenuBar,\r\n MenuButton: MenuButton,\r\n MenuItem: MenuItem,\r\n Throbber: Throbber,\r\n Menu: Menu,\r\n ListBox: ListBox,\r\n Radio: Radio,\r\n ResizeHandle: ResizeHandle,\r\n SelectBox: SelectBox,\r\n Slider: Slider,\r\n Spacer: Spacer,\r\n SplitButton: SplitButton,\r\n StackLayout: StackLayout,\r\n TabPanel: TabPanel,\r\n TextBox: TextBox,\r\n DropZone: DropZone,\r\n BrowseButton: BrowseButton\r\n };\r\n };\r\n var appendTo = function (target) {\r\n if (target.ui) {\r\n global$2.each(getApi(), function (ref, key) {\r\n target.ui[key] = ref;\r\n });\r\n } else {\r\n target.ui = getApi();\r\n }\r\n };\r\n var registerToFactory = function () {\r\n global$2.each(getApi(), function (ref, key) {\r\n global$4.add(key, ref);\r\n });\r\n };\r\n var Api = {\r\n appendTo: appendTo,\r\n registerToFactory: registerToFactory\r\n };\r\n\r\n Api.registerToFactory();\r\n Api.appendTo(window.tinymce ? window.tinymce : {});\r\n global.add('modern', function (editor) {\r\n $_drujjnwxjkmcwsrc.setup(editor);\r\n return $_f0tepxtqjkmcwsfm.get(editor);\r\n });\r\n function Theme () {\r\n }\r\n\r\n return Theme;\r\n\r\n}());\r\n})();\r\n","module.exports = __webpack_public_path__ + \"img/logo.33012821.png\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","\r\nimport Vue from 'vue';\r\n\r\nimport { Api } from '../api';\r\nimport Global from '../global';\r\nimport Base from '../base';\r\n\r\nimport '../../assets/js/tinymce/tinymce'\r\nimport '../../assets/js/tinymce/themes/modern/theme';\r\nimport '../../assets/js/tinymce/plugins/link/plugin';\r\nimport '../../assets/js/tinymce/plugins/paste/plugin';\r\nimport '../../assets/js/tinymce/plugins/lists/plugin';\r\nimport '../../assets/js/tinymce/plugins/code/plugin';\r\nimport '../../assets/js/tinymce/plugins/preview/plugin';\r\nimport '../../assets/js/tinymce/plugins/advlist/plugin';\r\nimport '../../assets/js/tinymce/plugins/image/plugin';\r\nimport '../../assets/js/tinymce/plugins/media/plugin';\r\n\r\nVue.directive('htmleditor', {\r\n twoWay: true,\r\n inserted: (el, binding, vnode) => {\r\n\r\n let _lastfileuploaded;\r\n let _interval;\r\n let _hascustomtag;\r\n\r\n if (binding && binding.value) {\r\n _hascustomtag = binding.value.hascustomtag == true;\r\n }\r\n\r\n tinymce.PluginManager.add('customtag', (editor) => {\r\n\r\n editor.addButton('customTagButton', {\r\n text: 'Tag de Resposta',\r\n icon: false,\r\n onclick: () => {\r\n _pluginWindowsCustomTag(editor)\r\n }\r\n });\r\n\r\n editor.addMenuItem('customTagMenuItem', {\r\n text: 'Tag de Resposta',\r\n context: 'tools',\r\n onclick: () => {\r\n _pluginWindowsCustomTag(editor)\r\n }\r\n });\r\n });\r\n\r\n function _pluginWindowsCustomTag(editor) {\r\n editor.windowManager.open({\r\n title: 'Insira a Resposta',\r\n body: [\r\n { type: 'textbox', name: 'description', label: 'Resposta' }\r\n ],\r\n onsubmit: (e) => {\r\n editor.insertContent('##' + e.data.description + '##');\r\n }\r\n });\r\n }\r\n\r\n tinymce.init({\r\n target: el,\r\n mode: \"inline\",\r\n language_url: '/js/tinymce-pt_br.js',\r\n plugins: ['link', 'paste', 'lists', 'code', 'preview', 'advlist', 'image', 'media', _hascustomtag ? 'customtag' : ''],\r\n\r\n toolbar: \"formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | image media\" + (_hascustomtag ? \" | customTagButton\" : \"\"),\r\n\r\n extended_valid_elements: \"customtag\",\r\n custom_elements: \"customtag\",\r\n\r\n media_live_embeds: true,\r\n image_advtab: true,\r\n file_picker_types: 'file image media',\r\n setup: (editor) => {\r\n \r\n _interval = setInterval(() => {\r\n if (el.value && el.value.length > 0) {\r\n tinymce.get(el.id).getBody().innerHTML = el.value;\r\n clearInterval(_interval)\r\n }\r\n }, 1000)\r\n\r\n editor.on('change', () => {\r\n clearInterval(_interval)\r\n var value = editor.getContent();\r\n value = value.replace(/'/g, '\\\"');\r\n value = value.replace(/\\r?\\n|\\r/g, '');\r\n\r\n el.value = value;\r\n\r\n setVModelValue(value, vnode)\r\n });\r\n },\r\n file_picker_types: 'image media',\r\n\r\n relative_urls: false,\r\n remove_script_host: false,\r\n media_poster: false,\r\n media_filter_html: false,\r\n\r\n images_upload_url: Global.URL_DOWNLOAD,\r\n\r\n images_upload_handler: (blobInfo, success, failure) => {\r\n new Api('document/upload', Global.END_POINT_PORTAL_CORPORATIVO)\r\n .upload(blobInfo.blob(), \"editorhtml\", true)\r\n .then(result => {\r\n success(Global.URL_DOWNLOAD + \"editorhtml/\" + result.data[0]);\r\n }, (err) => {\r\n failure('Erro ao fazer upload');\r\n });\r\n },\r\n audio_template_callback: function (data) {\r\n return '';\r\n },\r\n video_template_callback: function (data) {\r\n if (_lastfileuploaded && _lastfileuploaded.indexOf(\"audio\") > -1)\r\n return '';\r\n else\r\n return '';\r\n },\r\n file_picker_callback: (cb, value, meta) => {\r\n\r\n if (meta.filetype == 'image') {\r\n var input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n input.setAttribute('accept', 'image/*');\r\n input.onchange = () => {\r\n var file = input.files[0];\r\n _lastfileuploaded = file.type;\r\n var reader = new FileReader();\r\n reader.onload = () => {\r\n var id = 'blobid' + (new Date()).getTime();\r\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\r\n var base64 = reader.result.split(',')[1];\r\n var blobInfo = blobCache.create(id, file, base64);\r\n blobCache.add(blobInfo);\r\n cb(blobInfo.blobUri(), { title: file.name });\r\n };\r\n reader.readAsDataURL(file);\r\n };\r\n input.click();\r\n }\r\n\r\n if (meta.filetype == 'media') {\r\n var input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n input.setAttribute('accept', 'audio/*');\r\n input.setAttribute('accept', 'video/*');\r\n input.onchange = () => {\r\n\r\n var file = input.files[0];\r\n if (file.size > 1 * 1024 * 1000) {\r\n event.target.files = [];\r\n return false;\r\n }\r\n \r\n _lastfileuploaded = file.type;\r\n var reader = new FileReader();\r\n reader.onload = () => {\r\n var id = 'blobid' + (new Date()).getTime();\r\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\r\n var base64 = reader.result.split(',')[1];\r\n var blobInfo = blobCache.create(id, file, base64);\r\n blobCache.add(blobInfo);\r\n cb(blobInfo.blobUri());\r\n };\r\n reader.readAsDataURL(file);\r\n };\r\n input.click();\r\n }\r\n\r\n }\r\n });\r\n\r\n function findVModelName(vnode) {\r\n return vnode.data.directives.find(function (o) {\r\n return o.name === 'model';\r\n }).expression;\r\n }\r\n\r\n function setVModelValue(value, vnode) {\r\n var prop = findVModelName(vnode)\r\n eval('vnode.context.' + prop + ' = ' + '\\'' + value + '\\'')\r\n }\r\n }\r\n})"],"sourceRoot":""}