1 |
- {"version":3,"sources":["webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///src/components/editor/UeCard.vue","webpack:///src/views/answer-sheet/Index.vue","webpack:///src/views/answer-sheet/common/SubjectSelect.vue","webpack:///src/views/answer-sheet/paper/Index.vue","webpack:///src/views/answer-sheet/paper/PaperContent.vue","webpack:///src/views/answer-sheet/paper/PaperLine.vue","webpack:///src/views/answer-sheet/paper/paper-info/GradeAndName.vue","webpack:///src/views/answer-sheet/paper/paper-info/Index.vue","webpack:///src/views/answer-sheet/paper/paper-info/PaperAttention.vue","webpack:///src/views/answer-sheet/paper/paper-info/PaperCard.vue","webpack:///src/views/answer-sheet/paper/paper-info/PaperInfo.vue","webpack:///src/views/answer-sheet/paper/paper-info/PaperTitle.vue","webpack:///src/views/answer-sheet/paper/paper-topic/ArticleCh.vue","webpack:///src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue","webpack:///src/views/answer-sheet/paper/paper-topic/Index.vue","webpack:///src/views/answer-sheet/paper/paper-topic/Topic.vue","webpack:///src/views/answer-sheet/paper/paper-topic/TopicChoice.vue","webpack:///src/views/answer-sheet/paper/paper-topic/TopicExplain.vue","webpack:///src/views/answer-sheet/paper/paper-topic/TopicFill.vue","webpack:///src/views/answer-sheet/paper/paper-topic/TopicTitle.vue","webpack:///src/views/answer-sheet/setting/Index.vue","webpack:///src/views/answer-sheet/setting/SetAnswer.vue","webpack:///src/views/answer-sheet/topic/AddTopic.vue","webpack:///src/views/answer-sheet/topic/MinTopicEditItem.vue","webpack:///./src/components/editor/UeCard.vue?d328","webpack:///./src/views/answer-sheet/Index.vue?85c4","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?5f7c","webpack:///./src/views/answer-sheet/paper/Index.vue?29d9","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?4b08","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?099a","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?74f1","webpack:///./src/views/answer-sheet/paper/paper-info/Index.vue?efe1","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?4b3f","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?bd6a","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?4280","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?91c6","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?7f13","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?7850","webpack:///./src/views/answer-sheet/paper/paper-topic/Index.vue?c4d2","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?3682","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?1a6d","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?aead","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?79e7","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?a649","webpack:///./src/views/answer-sheet/setting/Index.vue?95f1","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?306c","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?94f5","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?c225","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./node_modules/core-js/modules/es.string.fontsize.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/modules/es.string.repeat.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./src/components/editor/UeCard.vue?efa5","webpack:///./src/views/answer-sheet/setting/Index.vue?7774","webpack:///./src/views/answer-sheet/Index.vue?01b2","webpack:///./src/views/answer-sheet/Index.vue?aaa4","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?4a5f","webpack:///./src/views/answer-sheet/paper/Index.vue?c332","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?5014","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?36e4","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?dce7","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?c95a","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?fce5","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?8aff","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?92a1","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?58d7","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?f937","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?5f44","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?e6fb","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?a2ba","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?b25c","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?5653","webpack:///./src/views/answer-sheet/setting/Index.vue?2656","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?e5f9","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?7788","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?96ae","webpack:///./src/components/editor/UeCard.vue?d512","webpack:///./src/views/answer-sheet/setting/Index.vue?43b6","webpack:///./src/views/answer-sheet/Index.vue?97ba","webpack:///./src/views/answer-sheet/Index.vue?99b3","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?f09b","webpack:///./src/views/answer-sheet/paper/Index.vue?6f2c","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?236c","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?9e97","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?a1dd","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?7241","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?e689","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?e5ba","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?95ac","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?3dec","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?6617","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?65b9","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?8047","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?5757","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?1d0d","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?4a4b","webpack:///./src/views/answer-sheet/setting/Index.vue?b49b","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?6616","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?da4d","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?83e3","webpack:///./public/ueditor/horizontal-line/addHorizontalLineDialog.js","webpack:///./public/ueditor/kityformula-plugin/addKityFormulaDialog.js","webpack:///./public/ueditor/kityformula-plugin/defaultFilterFix.js","webpack:///./public/ueditor/kityformula-plugin/editKityFormulaDialog.js","webpack:///./public/ueditor/kityformula-plugin/getKfContent.js","webpack:///./public/ueditor/lang/zh-cn/zh-cn.js","webpack:///./public/ueditor/ueditor.all.card.js","webpack:///./public/ueditor/ueditor.config.js","webpack:///./src/assets/img-answer-sheet/img-drag.png","webpack:///./src/components/editor/UeCard.vue","webpack:///./src/components/editor/UeCard.vue?db9d","webpack:///./src/components/editor/UeCard.vue?54ee","webpack:///./src/components/editor/UeCard.vue?ac6a","webpack:///./src/lib/getPos.js","webpack:///./src/mixins/answersheet/setPage.js","webpack:///./src/mixins/answersheet/setPagePos.js","webpack:///./src/views/answer-sheet/Index.vue","webpack:///./src/views/answer-sheet/Index.vue?a9ae","webpack:///./src/views/answer-sheet/Index.vue?f3ac","webpack:///./src/views/answer-sheet/Index.vue?589d","webpack:///./src/views/answer-sheet/Index.vue?50a6","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?5c29","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?92db","webpack:///./src/views/answer-sheet/common/SubjectSelect.vue?1978","webpack:///./src/views/answer-sheet/paper/Index.vue","webpack:///./src/views/answer-sheet/paper/Index.vue?8f27","webpack:///./src/views/answer-sheet/paper/Index.vue?bd8f","webpack:///./src/views/answer-sheet/paper/Index.vue?13e6","webpack:///./src/views/answer-sheet/paper/PaperContent.vue","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?4410","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?e84d","webpack:///./src/views/answer-sheet/paper/PaperContent.vue?4d4b","webpack:///./src/views/answer-sheet/paper/PaperLine.vue","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?bf04","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?3310","webpack:///./src/views/answer-sheet/paper/PaperLine.vue?ee2c","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?498e","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?940f","webpack:///./src/views/answer-sheet/paper/paper-info/GradeAndName.vue?54f8","webpack:///./src/views/answer-sheet/paper/paper-info/Index.vue","webpack:///./src/views/answer-sheet/paper/paper-info/Index.vue?e9fa","webpack:///./src/views/answer-sheet/paper/paper-info/Index.vue?030b","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?3560","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?a8e0","webpack:///./src/views/answer-sheet/paper/paper-info/PaperAttention.vue?a216","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?a393","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?b87f","webpack:///./src/views/answer-sheet/paper/paper-info/PaperCard.vue?097b","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?b1a3","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?f824","webpack:///./src/views/answer-sheet/paper/paper-info/PaperInfo.vue?2a7a","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?fe6f","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?b24c","webpack:///./src/views/answer-sheet/paper/paper-info/PaperTitle.vue?21f2","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?55fe","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?ba1f","webpack:///./src/views/answer-sheet/paper/paper-topic/ArticleCh.vue?84b0","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?12a1","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?ec90","webpack:///./src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue?f65c","webpack:///./src/views/answer-sheet/paper/paper-topic/Index.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/Index.vue?9716","webpack:///./src/views/answer-sheet/paper/paper-topic/Index.vue?f575","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?7cae","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?0b5e","webpack:///./src/views/answer-sheet/paper/paper-topic/Topic.vue?e92f","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?d63e","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?80f3","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicChoice.vue?01a9","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?2c89","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?9ae9","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicExplain.vue?b269","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?19c6","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?9f57","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicFill.vue?cbdc","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?452a","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?6168","webpack:///./src/views/answer-sheet/paper/paper-topic/TopicTitle.vue?7216","webpack:///./src/views/answer-sheet/setting/Index.vue","webpack:///./src/views/answer-sheet/setting/Index.vue?4dae","webpack:///./src/views/answer-sheet/setting/Index.vue?8e4e","webpack:///./src/views/answer-sheet/setting/Index.vue?876b","webpack:///./src/views/answer-sheet/setting/Index.vue?f668","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?278a","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?6674","webpack:///./src/views/answer-sheet/setting/SetAnswer.vue?930d","webpack:///./src/views/answer-sheet/topic/AddTopic.vue","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?d673","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?2a0a","webpack:///./src/views/answer-sheet/topic/AddTopic.vue?8142","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?5c66","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?4c25","webpack:///./src/views/answer-sheet/topic/MinTopicEditItem.vue?6c4b"],"names":["_typeof","obj","Symbol","iterator","module","exports","constructor","prototype","UE","registerUI","editor","uiname","toMathType","type","text","HorizontalLineDialog","ui","Dialog","iframeUrl","options","UEDITOR_HOME_URL","name","title","cssRules","buttons","className","label","onclick","close","ready","utils","cssRule","document","iconUrl","tmpLink","createElement","href","HorizontalLineBtn","Button","render","open","addListener","state","queryCommandState","setDisabled","setChecked","kfDialog","kfBtn","plugins","me","setOpt","addInputRule","root","allowDivTransToP","val","tdParent","node","tagName","parentNode","traversal","dom","dtd","$cdata","autoClearEmptyNode","$inline","$empty","attrs","isEmptyObject","firstChild","removeChild","setAttr","cdata_tag","cdata_data","innerHTML","getAttr","browser","webkit","getStyle","test","setStyle","each","children","n","next","nextSibling","insertAfter","last","tmp","ie","tmpNode","p","uNode","$block","appendChild","insertBefore","tmpNodes","getNodesByTagName","length","ie11below","createText","disabledTableInTable","innerText","addOutputRule","html","getOpt","cssStyle","replace","a","value","array","split","i","color","parseInt","toString","toUpperCase","editKityFormula","latexUse","sessionStorage","JSON","stringify","Editor","getKfContent","callback","actionUrl","getActionUrl","params","serializeParam","queryCommandValue","url","formatUrl","indexOf","count","imgs","body","getElementsByTagName","base64Imgs","item","imgType","getAttribute","match","push","execCallback","opt","onsuccess","xhr","json","str2json","responseText","scrawlUrlPrefix","setAttribute","onerror","err","console","error","ajax","request","sync","getContent","I18N","searchError","lang_city","lang_address","city","lang_search","lang_dynamicmap","cityMsg","errorMsg","lang_tab_search","lang_tab_replace","lang_search1","lang_search2","lang_replace","lang_searchReg","lang_searchReg1","lang_case_sensitive1","lang_case_sensitive2","nextFindBtn","preFindBtn","nextReplaceBtn","preReplaceBtn","repalceBtn","repalceAllBtn","getEnd","getStart","countMsg","lang_showMsg","lang_download","lang_step1","lang_step2","tsfh","lmsz","szfh","rwfh","xlzm","ewzm","pyzm","yyyb","zyzf","captionName","titleName","cellsName","lang_delRow","lang_delCol","lang_tdBkColor","lang_resave","uploadBtn","src","alt","clipboard","style","lang_step","UEDITOR_CONFIG","window","baidu","commands","instants","_customizeUI","version","agent","navigator","userAgent","toLowerCase","opera","mac","quirks","compatMode","gecko","product","v1","v2","Math","max","ie11Compat","documentMode","ie9Compat","ie8","ie8Compat","ie7Compat","ie6Compat","ie9above","ie9below","ie11above","geckoRelease","chrome","RegExp","safari","parseFloat","isCompatible","mobile","air","context","l","call","key","hasOwnProperty","makeInstance","noop","Function","extend","t","s","b","k","extend2","arguments","x","inherits","subClass","superClass","oldP","newP","bind","fn","apply","defer","delay","exclusion","timerID","clearTimeout","setTimeout","start","index","isNumber","v","removeItem","splice","trim","str","listToMap","list","isArray","ci","unhtml","reg","unhtmlForUrl","m","cssStyleToDomStyle","cache","cssFloat","undefined","styleFloat","cssName","charAt","loadFile","tmpList","getItem","doc","e","funs","write","tag","join","id","getElementById","element","onload","onreadystatechange","readyState","fi","pop","Error","isString","fixColor","optCss","padding","margin","border","top","bottom","left","r","right","clone","source","target","transUnitToPx","unit","u","round","domReady","fnArr","doReady","isReady","onready","win","documentElement","doScroll","callee","attachEvent","addEventListener","removeEventListener","indexList","nodeType","styleSheets","cssText","sheetStyle","createStyleSheet","head","sort","compareFn","item1","item2","localeCompare","len","j","strArr","encodeURIComponent","isCrossDomainUrl","protocol","location","hostname","port","clearEmptyAttrs","parse","json2str","escapeMap","encodeString","c","charCodeAt","floor","encodeArray","result","preComma","pad","encodeDate","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","isFinite","String","isDate","encode","Object","EventBase","types","listener","ti","getListener","on","off","removeListener","trigger","fireEvent","listeners","force","allListeners","__allListeners","_","X","A","isindex","fieldset","B","input","button","select","textarea","C","D","iframe","E","hr","ul","menu","div","blockquote","noscript","table","center","address","dir","pre","h5","dl","h4","noframes","h6","ol","h1","h3","h2","F","ins","del","script","G","acronym","bdo","abbr","code","br","cite","kbd","strike","tt","strong","q","samp","em","dfn","span","H","sub","img","embed","object","sup","basefont","map","applet","font","big","small","I","J","K","form","L","M","tr","N","O","param","P","Q","li","R","S","base","link","meta","T","U","V","block","empty","area","col","command","dialog","keygen","track","wbr","$nonBodyContent","$inlineWithA","$body","$nonChild","$listItem","dd","dt","$list","$isNotEmpty","$removeEmpty","$removeEmptyBlock","$tableContent","caption","colgroup","tbody","td","tfoot","th","thead","$notTransContent","option","optgroup","legend","getDomNode","ltr","startFromChild","guard","parent","attrFix","tabindex","readonly","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","styleBlock","domUtils","NODE_ELEMENT","NODE_DOCUMENT","NODE_TEXT","NODE_COMMENT","NODE_DOCUMENT_FRAGMENT","POSITION_IDENTICAL","POSITION_DISCONNECTED","POSITION_FOLLOWING","POSITION_PRECEDING","POSITION_IS_CONTAINED","POSITION_CONTAINS","fillChar","keys","getPosition","nodeA","nodeB","parentsA","parentsB","reverse","getNodeIndex","ignoreTextNode","preNode","previousSibling","inDoc","findParent","filterFn","includeSelf","isBody","findParentByTagName","tagNames","excludeFn","findParents","closerFirst","parents","newNode","remove","keepChildren","child","hasChildNodes","getNextDomNode","getPreDomNode","isBookmarkNode","getWindow","ownerDocument","defaultView","parentWindow","getCommonAncestor","clearEmptySibling","ignoreNext","ignorePre","clear","isEmptyInlineElement","nodeValue","offset","createTextNode","retval","splitText","isWhitespace","getXY","y","offsetParent","offsetTop","offsetLeft","handler","_d","els","evt","srcElement","event","un","detachEvent","isSameElement","thisAttrs","attributes","otherAttrs","attrA","attrB","al","bl","nodeName","specified","isSameStyle","getNamedItem","styleA","styleB","isBlockElm","getComputedStyle","breakParent","parentClone","leftNodes","rightNodes","cloneNode","trimWhiteTextNode","mergeChild","childNodes","filter","hasClass","arr","ni","mergeToParent","textDecoration","mergeSibling","merge","rtl","lastChild","unSelectable","onselectstart","onkeyup","onkeydown","unselectable","all","MozUserSelect","webkitUserSelect","msUserSelect","KhtmlUserSelect","removeAttributes","attrNames","getAttributeNode","removeAttributeNode","removeAttribute","setAttributes","attr","styleName","pros","fontSize","offsetHeight","getPropertyValue","currentStyle","removeClasses","elm","classNames","cls","addClass","isRegExp","preventDefault","returnValue","removeStyle","removeProperty","setStyles","styles","removeDirtyAttr","nodes","getChildCount","first","isEmptyNode","isBr","clearSelectedArr","scrollToView","getViewPaneSize","mode","width","clientWidth","height","clientHeight","getScrollPosition","pageXOffset","pageYOffset","scrollLeft","scrollTop","winHeight","elementPosition","currentScroll","scrollTo","isFillChar","isInStart","isStartInblock","range","tmpRange","cloneRange","flag","startContainer","startOffset","setStartBefore","setStart","collapse","isEmptyBlock","setViewportOffset","rect","getBoundingClientRect","fillNode","moveChild","hasNoAttributes","outerHTML","isCustomeNode","isTagNode","filterNodeList","nodelist","forAll","results","isFunction","isInNodeEndBoundary","rng","isBoundaryNode","fillHtml","fillCharReg","guid","fillData","updateCollapse","collapsed","endContainer","endOffset","selectOneNode","setEndPoint","toStart","execContentsAction","action","end","frag","createDocumentFragment","tmpStart","tmpEnd","substringData","deleteData","current","currentLevel","startParents","endParents","si","slice","ei","Range","removeFillData","excludeNode","contains","cloneContents","deleteContents","txt","extractContents","setEnd","setStartAfter","setEndAfter","setEndBefore","setStartAtFirst","setStartAtLast","setEndAtFirst","setEndAtLast","selectNode","selectNodeContents","shrinkBoundary","ignoreEnd","check","trimBoundary","txtToElmBoundary","textNode","ignoreCollapsed","adjust","container","insertNode","nextNode","setCursor","toEnd","noFillData","createBookmark","serialize","same","endNode","startNode","moveToBookmark","bookmark","enlarge","toBlock","stopFn","enlargeToBlockElm","adjustmentBoundary","applyInlineStyle","level","aNode","removeInlineStyle","getClosedNode","textRange","nativeRange","createControlRange","addElement","createTextRange","moveToElementText","moveStart","nativeRangeEnd","tmpText","notInsertFillData","checkOffset","sel","getSelection","txtNode","focus","removeAllRanges","createRange","addRange","inFillChar","createAddress","ignoreTxt","addr","getAddress","isStart","addrs","firstIndex","startAddress","endAddress","concat","moveToAddress","getNode","equals","doFn","getBoundaryInformation","getIndex","duplicate","parentElement","siblings","testRange","startIndex","endIndex","distance","position","compareEndPoints","transformIERangeToRange","ieRange","bi","_getIERange","getNative","el","Selection","frameElement","_bakIERange","getIERange","ex","rangeInBody","txtRange","selection","_cachedRange","getRange","_cachedStartElement","_cachedStartElementPath","getStartElementPath","isFocus","rangeCount","optimze","firstRange","getRangeAt","lastRange","_bakRange","min","getText","nativeSel","clearRange","uid","_selectionChangeTimer","setValue","tis","hasContents","allHtmlEnabled","getAllHtml","loadPlugins","pi","checkCurLang","lang","langReadied","langIsReady","shortcutkeys","inputRules","outputRules","defaultOptions","loadServerConfig","plugin","load","langPath","registerCommand","destroy","display","offsetWidth","delEditor","getStyleValue","initialFrameWidth","minFrameWidth","initialFrameHeight","minFrameHeight","zIndex","iframeCssUrl","initialStyle","customDomain","domain","overflow","_setup","disabled","contentEditable","spellcheck","geckoSel","_initEvents","autoSyncData","initialContent","autoClearinitialContent","oldExecCommand","execCommand","_setDefaultContent","setContent","focusInEnd","_selectionChange","fullscreen","setFullScreen","_bindshortcutKeys","_bakNativeRange","setInterval","isShow","setHide","formId","setHeight","notSetHeight","addshortcutkey","cmd","keyCode","which","$1","ctrlKey","metaKey","$2","$3","notSetCursor","ignoreBlank","formatter","htmlparser","filterOutputRule","toHtml","headHtml","headHtmlForIE9","charset","getPlainTxt","getContentTxt","isAppendTo","notFireSelectionchange","filterInputRule","isCdataDiv","enterTag","blur","nativeRng","_proxyDomEvent","stopPropagation","shiftKey","altKey","hackForMouseUp","mouseX","mouseY","clientX","clientY","moveToPoint","bakGetIERange","_callCmdFn","fnName","args","cmdName","cmdFn","notNeedUndo","__hasEnterExecCommand","ignoreContentChange","_ignoreContentChange","tags","cn","reset","setEnabled","lastBk","bkqueryCommandState","bkqueryCommandValue","enable","except","disable","cont","setShow","show","hide","getLang","path","getContentLength","ingoneHtml","rule","actionName","imageUrl","serverUrl","_url","imagePopup","theme","themePath","scaleEnabled","tableNativeEditInFF","fileNameFormat","configUrl","isJsonp","_serverConfigLoaded","config","eval","showErrorMsg","msg","isServerConfigLoaded","afterConfigReady","readyHandler","fnStr","ActiveXObject","creatAjaxRequest","doAjax","ajaxOptions","timeIsOut","defaultAjaxOptions","method","timeout","async","data","ajaxOpts","submitStr","abort","Date","status","setRequestHeader","send","doJsonp","opts","successhandler","scr","callbackField","callbackFnName","timeOut","timer","matches","random","getCallBack","exec","search","queryStr","createScriptTag","onTimeOut","exception","oncomplete","dataType","getJSONP","filterWord","isWordDocument","transUnit","filterPasteWord","marks","parts","notTransAttrs","notTransTagName","indentChar","breakChar","insertLine","begin","insertIndent","noTrans","nodeToHtml","isText","isElement","isComment","attrhtml","getNodeById","nodeTraversal","htmlstr","tmpRoot","textStr","getData","replaceChild","cj","attrName","attrVal","isObject","re_tag","re_attr","allowEmptyTags","needParentNode","needChild","htmlattr","needParentTag","tmpParent","hasParent","comment","currentIndex","nextIndex","currentParent","lastIndex","filterNode","rules","tmpAttrs","tmpVal","tmpCssStyle","_plugins","register","pluginName","oldOptionName","afterDisabled","optionName","execFn","_export","eventName","execName","run","exeFn","keymap","LocalStorage","storage","localStorage","getUserData","LOCAL_FILE","saveLocalData","setItem","getLocalData","addBehavior","save","ROOTKEY","setPreferences","getPreferences","removePreferences","notNeedFilter","filterRules","hadBreak","tmpLi","autoHeightEnabled","mergeEmptyline","removeClass","removeEmptyline","textAlign","imageBlockLine","pasteFilter","clearFontSize","clearFontFamily","removeEmptyNode","removeTagNames","indent","indentValue","bdc2sb","tobdc","autotypeset","remainClass","remainTag","highlightCont","readLocalOpts","isLine","notEmpty","removeNotAttributeSpan","autotype","fontFamily","textIndent","pN","pNode","ToDBC","DBC2SB","fromCharCode","txtstring","mark","cookieOpt","shortcutkey","submit","cssRuleId","isSetColored","stringToObj","substr","setBackground","orgFn","bindEvents","su","imagePath","substring","bgObj","inputRule","outputRule","align","floatStyle","unhtmlData","imgCi","shift","_src","hspace","vspace","defaultValue","justify","doJustify","bookmark2","common","cell","fonts","needCmd","needSetChild","mergeWithParent","bk","mergesibling","backgroundColor","spanParent","styleVal","optimize","highlight","doLink","rngClone","textValue","_href","as","ps","pe","deleteIframe","_iframe","notIncludeA","tagReg","removeFormatTags","removeFormatAttributes","isRedundantSpan","doRemove","bookmark1","getObj","startBlock","endBlock","blockquotes","doEnd","childs","bkEnd","curNode","print","w","d","notExchange","doParagraph","sourceCmdName","para","doDirectionality","forward","format","date","formatTime","hh","ii","ss","formatDate","yyyy","yy","mm","filterTxtRules","brs","notNeedCodeQuery","help","undo","redo","searchreplace","preview","insertparagraph","elementpath","insertcode","inserthtml","selectall","orgQuery","fillchar","evtName","anchorname","anchor","ignores","notBreakTags","isHr","pageBreakTag","noshade","size","images","urlList","word_img","saveSceneTimer","maxUndoCount","maxInputCount","noNeedFillCharTags","orgState","compareAddr","indexA","indexB","compareRangeAddress","rngAddrA","rngAddrB","UndoManager","hasUndo","hasRedo","content","restore","scene","update","clearKey","getScene","rngAddress","notCompareRange","currentScene","lastScene","keycont","lastKeyCode","undoManger","saveScene","Array","exclude","inputType","isCollapsed","interalTimer","clearInterval","stopCmdUndo","startCmdUndo","initZeroClipboard","ZeroClipboard","debug","swfPath","client","zeroclipboard","setText","textContent","setHtml","alert","getClipboardData","pastebin","pastebins","querySelectorAll","retainOnlyLabelPasted","txtContent","htmlContent","getPureHtml","atr","divs","di","tmpP","metas","dirtyNodes","spans","plainType","tmpAddress","transP","removeNode","$","pasteplain","customStyle","listDefaultPaddingLeft","listiconpath","maxListLevel","disablePInList","listToArray","listStyle","insertorderedlist","insertunorderedlist","liiconpath","customCss","pn","newChildrens","lastNode","autoTransWordToList","orderlisttype","unorderlisttype","checkListType","appendLi","cacheNode","adjustListStyle","ignore","nodeStyleType","parentStyleType","styleIndex","setListStyle","paddingLeft","adjustList","ignoreEmpty","nextList","preList","preventAndSave","findList","parentList","nextLi","checkLevel","levelNum","parentLi","closeList","getLi","bko","modifyStart","modifyEnd","startParent","endParent","nodeStyle","tmpFrag","tmpfrag","hasBlock","tmpDiv","tmpDivs","sourceEditors","holder","onresize","setSelectionRange","dispose","codemirror","codeEditor","CodeMirror","tabMode","lineNumbers","lineWrapping","getWrapperElement","getScrollerElement","refresh","getCodeMirror","getValue","sourceMode","sourceEditor","orgSetContent","sourceEditorFirst","createSourceEditor","bakCssText","oldGetContent","bakAddress","oldQueryCommandState","codeMirrorJsUrl","rel","codeMirrorCssUrl","hTag","doSave","h","startTd","endTd","Backspace","Tab","excludeTagNameForTabKey","tabSize","tabNode","autoClearTagName","elementUpdated","Scale","resizer","cover","prePos","startPos","init","dragId","hands","getDom","initStyle","initEvents","isDraging","_eventHandler","hand","proxy","updateContainerStyle","updateTargetElement","attachTo","_validScaledProp","prop","ele","wrap","isNaN","hideCover","showCover","editorPos","iframePos","targetObj","imgPos","borderLeftWidth","borderTopWidth","imageScale","imageScaleEnabled","_keyDownHandler","_mouseDownHandler","charCode","keyCodes","checkIsCludeLink","bakOverflow","lastHeight","currentHeight","adjustHeight","isFullscreen","f","enableAutoHeight","overflowY","disableAutoHeight","lastScrollY","onscroll","scrollY","topOffset","optsAutoFloatEnabled","autoFloatEnabled","uiUtils","LteIE6","checkHasUI","autofloatMsg","fixIE6FixedPos","docStyle","backgroundImage","backgroundAttachment","placeHolder","toolbarBox","orgTop","setFloating","toobarBoxPos","origalFloat","origalLeft","unsetFloating","updateFloating","rect3","toolbarTopOffset","defer_updateFloating","getClientRect","enabled","creatInsertStr","classname","ext","lastIndexOf","switchImgAndVideo","img2video","videoObjs","cl","vi","UETable","indexTable","selectedTds","cellsRange","removeSelectedClass","cells","addSelectedClass","getWidth","getTableCellAlignState","tempStatus","isSame","cellNode","currentState","getTableItemsByRange","getUETableBySelected","ueTable","getDefaultValue","borderMap","thin","medium","thick","tableBorder","tdPadding","tdBorder","tmpValue","insertRow","insertCell","getUETable","tdOrTable","cloneCell","ignoreMerge","keepPro","tmpCell","rowSpan","colSpan","borderLeftStyle","borderTopStyle","borderLeftColor","borderRightColor","borderRightWidth","borderTopColor","borderBottomColor","borderBottomWidth","getMaxRows","rows","maxLen","row","currentMax","getMaxCols","cellRows","cellsNum","getCellColIndex","getHSideCell","cellInfo","getCellInfo","previewRowIndex","previewColIndex","colIndex","beginColIndex","colsNum","endColIndex","rowIndex","beginRowIndex","getCell","cellIndex","showError","getTabNextCell","preRowIndex","nextCell","getVSideCell","ignoreRange","nextRowIndex","nextColIndex","rowsNum","endRowIndex","getSameEndPosCells","xOrY","returns","setCellContent","getSameStartPosXCells","dNum","tds","selectTds","startInfo","endInfo","rowInfo","numCols","deleteCell","getCellsRange","cellA","cellB","checkRange","tmpBeginRowIndex","tmpBeginColIndex","tmpEndRowIndex","tmpEndColIndex","cellAInfo","cellBInfo","getCells","clearSelected","tdHash","returnTds","setSelected","isFullRow","isFullCol","ths","getNextCell","getPreviewCell","moveContent","cellTo","cellFrom","mergeRight","rightColIndex","rightCellInfo","rightCell","mergeDown","downRowIndex","downCellInfo","downCell","mergeRange","leftTopCell","info","deleteRow","curIndex","sourceCell","isInsertTitle","replaceTdToTh","tableRow","infoRow","nextRow","insertCellIndex","preMerged","getPreviewMergedCellsNum","deleteTds","cacheMap","tmpRowIndex","tmpCellIndex","mergeTds","insertCol","backWidth","isInsertTitleCol","preCell","updateWidth","tmpWidth","deleteCol","tableRows","backTableWidth","backTdWidth","toFixed","splitToCells","splitToRows","splitToCols","endRow","indexRow","num","endCol","isLastCell","getLastCell","firstInfo","cols","selectRow","selectTable","repeat","colorList","colors","getColor","removeBackground","UT","createTable","tdWidth","numRows","tdvalign","defaultCols","defaultRows","firstParentBlock","tableWidth","getSelectedArr","valign","firstRow","lastRow","resetTdWidth","tableItems","ut","maxRowNum","newCell","maxColNum","getAverageWidth","tb","averageWidth","sumWidth","tbAttr","ceil","setAverageWidth","getAverageHeight","averageHeight","rowNum","sumHeight","tdpadding","captionArr","thArr","captionHeight","thHeight","trs","setAverageHeight","verticalAlign","vAlign","activeMenuCell","borderColor","bkColor","interlaced","classList","borderWidth","borderStyle","getTableWidth","tdsWidths","needIEHack","tabTimer","tableDragTimer","tableResizeTimer","cellMinWidth","isInResizeBuffer","cellBorderWidth","offsetOfTableCell","singleClickState","userActionStatus","dblclickTime","orgGetText","currentTd","onDrag","onBorder","dragButton","dragOver","dragLine","dragTd","mousedown","tableCopyList","toggleDraggableState","cloneTd","tables","removeStyleSize","wordBreak","hideDragLine","onmouseover","onmousemove","tableDragable","toggleDragButton","onmouseout","getParentTdOrTh","inTableSide","endTdCol","endTdRow","switchBorderColor","mouseMoveEvent","getClass","mouseDownEvent","mouseUpEvent","currentRowIndex","ua","notCtrlKey","ratio","backWidths","datatat","cmdFun","lastState","lastValue","replaceToProperty","mouseCoords","pageX","pageY","clientLeft","clientTop","isEditorDisabled","pos","abs","clearTableDragTimer","tableBorderDrag","getPermissionX","getPermissionY","getRelation","cursor","cursorpath","curCell","dragButtonTimer","createDragButton","doClick","doDblClick","capHeight","preTd","nextTd","mousePosY","draggable","mousePos","getDragLine","showDragLineAt","getResizeLineByUETable","lineId","line","contnetEditable","background","updateResizeLine","uetable","showResizeLine","elePos","getTargetTd","tableClickHander","clearTableTimer","tableDbclickHandler","getCellsByMoveBorder","extractArray","oldWidth","newWidth","changeable","change","getTabcellSpace","mouseOverEvent","borderActionHandler","reconstruct","originArr","newObj","dragTdPos","dragLinePos","changeColWidth","changeRowHeight","tar","setCellHeight","backHeight","lineHight","tmpHeight","changeValue","correctChangeValue","cellGroup","isContainMergeCell","temp","borderCells","tabRow","currIndex","tabCell","getMinWidthByTableCells","minWidth","Number","MAX_VALUE","getTableCellWidth","relatedCell","direction","getTableCellOffset","tab","offsetVal","prev","tabcellSpace","trow","tabcell","mirror","paddingSpace","tmpTabWidth","contenteditable","tablePos","cellPos","css","tableArr","cellWidth","cellHeight","sortTable","sortByCellIndex","trArray","lastRowIndex","Fn","td1","td2","value1","value2","tr1","tr2","fragment","items","contextMenu","cleardoc","confirm","confirmclear","unlink","group","paragraph","icon","subMenu","justifyleft","justifyright","justifycenter","justifyjustify","inserttable","deletetable","deleterow","deletecol","insertcol","insertcolnext","insertrow","insertrownext","insertcaption","deletecaption","inserttitle","deletetitle","inserttitlecol","deletetitlecol","mergecells","mergeright","mergedown","splittorows","splittocols","splittocells","averageDiseRow","averageDisCol","edittd","getDialog","edittable","setbordervisible","tablesort","enablesort","disablesort","reversecurrent","orderbyasc","reversebyasc","orderbynum","reversebynum","borderbk","setcolor","unsetcolor","setbackground","unsetbackground","redandblue","threecolorgradient","aligntd","aligntable","tableleft","tablecenter","tableright","insertparagraphbefore","insertparagraphafter","getViewportOffsetByEvent","contextItems","subItem","query","getLabel","Menu","showAt","clip","shortcutMenu","customEvt","screenX","screenY","ShortCutMenu","isHidden","basestyles","elementPathEnabled","names","addList","addFormat","imgT","_blockElm","findTextInString","searchStr","casesensitive","findTextBlockElm","methodName","findNTextInBlockElm","currentNode","currentNodeLength","searchReplace","startBlockNode","rngText","replaceStr","replaceText","rngStart","rngEnd","tmpObj","catchRemoteImageEnable","catcherLocalDomain","catcherActionUrl","catcherUrlPrefix","catcherFieldName","remoteImages","urls","host","catchremoteimage","success","oldSrc","newSrc","callbacks","snapplugin","getLocation","pathname","hash","local","res","onSuccess","rs","snapscreenUrlPrefix","snapscreenImgAlign","callBackErrorMsg","saveSnapshot","_dialogs","front","createInsertStr","toEmbed","logo","cssfloat","tnode","musicObj","sendAndInsertFile","file","fieldName","urlPrefix","maxSize","allowFiles","loadingHtml","errorHandler","successHandler","filetype","loadingId","loader","original","fileext","XMLHttpRequest","fd","FormData","append","response","er","getPasteImage","clipboardData","getDropImage","dataTransfer","files","FileReader","hasImg","getAsFile","lastSaveTime","MIN_TIME","saveKey","saveData","_saveFlag","saveInterval","enableAutoSave","_suffix","tableNode","flagText","validData","subTitle","xTitle","yTitle","suffix","tip","dataFormat","tableDataFormat","chartType","firstRows","cellCount","Section","nextSection","previousSection","parentSection","getSection","section","getNodeFromAddress","bindMultiEvents","levels","levelFn","getSectionLevel","Directory","previous","tmpSection","sourceSection","targetSection","isAfter","targetAddress","isContainsAddress","addressTarget","isAfterStartAddress","isBeforeEndAddress","containerBtn","timestrap","initUploadBtn","btnStyle","enctype","accept","imageFieldName","imageActionUrl","showErrorLoader","filename","headers","imageUrlPrefix","serverParam","getFileIcon","maps","filelist","URL","iconDir","xssFilter","whitList","xssFilterRules","tagList","inputXssFilter","outputXssFilter","magic","uidMagic","uidCount","hook","dg","_callbacks","createElementByHtml","getViewportElement","bcr","getViewportRect","viewportEl","innerWidth","innerHeight","fixedLayer","getFixedLayer","getEventOffset","frameEl","setGlobal","unsetGlobal","copyAttributes","tgt","attrNode","elA","elB","compareDocumentPosition","startDrag","startX","startY","handleMouseMove","ondragmove","cancelBubble","handleMouseUp","ondragstop","setCapture","releaseCaptrue","releaseCapture","ondragstart","layer","bindFixedLayer","updateFixedOffset","makeUnselectable","WebkitUserSelect","adjOffset","UIBase","uiName","initOptions","initUIBase","_globalKey","renderHtml","seatEl","postRender","getHtmlTpl","formatHtml","tpl","prefix","box","Separator","initSeparator","Mask","_fill","_onMouseDown","_onClick","vpRect","Popup","initPopup","allPopups","closeAllPopup","queryAutoHide","postHide","ANCHOR_CLASSES","SHADOW_RADIUS","_hidden","autoRender","canSideLeft","canSideUp","getContentHtmlTpl","_UIBase_postRender","captureWheel","captured","_height","_top","combox","ifr","wheelDelta","detail","_doAutoRender","mesureSize","fitSize","sized","__size","popBodyEl","showAnchor","hoz","showAnchorRect","adj","visibility","_show","popSize","sideLeft","sideUp","popEl","notNofity","ColorPicker","noColorText","genColorPicker","_onTableClick","_onTableOver","_onTableOut","_onPickNoColor","COLORS","TablePicker","initTablePicker","defaultNumRows","defaultNumCols","maxNumRows","maxNumCols","lengthOfCellSide","_UIBase_render","_track","sideLen","_onMouseOver","relatedTarget","fromElement","_onMouseOut","toElement","_onMouseMove","TPL_STATEFUL","Stateful","alwalysHoverable","Stateful_init","_Stateful_dGetHtmlTpl","Stateful_getHtmlTpl","Stateful_onMouseEnter","isDisabled","addState","Stateful_onMouseLeave","removeState","Stateful_onMouseOver","Stateful_onMouseOut","Stateful_onMouseDown","Stateful_onMouseUp","Stateful_postRender","hasState","getStateDom","isChecked","checked","btnName","initButton","showIcon","showText","setTitle","SplitButton","initSplitButton","popup","setPopup","_onPopupShow","_onPopupHide","showPopup","_onArrowClick","_onButtonClick","ColorButton","initColorButton","onpickcolor","_onPickColor","onpicknocolor","_SplitButton_postRender","setColor","TableButton","initTableButton","onpicktable","_onPickTable","AutoTypeSetPicker","initAutoTypeSetPicker","textAlignInputName","imageBlockInputName","symbolConverInputName","mergeLine","delLine","removeFormat","alignment","imageFloat","removeFontsize","removeFontFamily","removeHtml","symbol","AutoTypeSetButton","initAutoTypeSetButton","getPara","editorId","ipts","ipt","attrValue","iptChilds","iptchild","selects","popupUI","btn","radioTd","radios","defalutSelect","checkboxs","CellAlignPicker","initSelected","initCellAlignPicker","middle","selected","selectedIndex","alignType","COUNT","tempClassName","tempIndex","tmpl","PastePicker","initPastePicker","_isTransfer","cur","screenHt","subPop","Toolbar","initToolbar","add","buff","initMenu","menuSeparator","initItems","getSeparator","MenuItem","createItem","_Popup_getContentHtmlTpl","_Popup_postRender","ownerMenu","clearItems","_showingTimer","_closingTimer","parentMenu","renderLabelHtml","delayShowSubMenu","delayHideSubMenu","hideSubMenu","_bakQueryAutoHide","tabIndex","showSubMenu","this_","Combox","initCombox","onbuttonclick","selectByIndex","setLabel","initValue","indexByValue","getLabelForUnknowValue","autoReset","onok","oncancel","onclose","ok","holdScroll","initDialog","modalMask","dragMask","activeDialog","closeButton","closeDialog","initResizeEvent","__resizeTimer","dialogWrapNode","contentNode","wrapRect","contentRect","safeSetOffset","showAtCenter","titleHeight","_originalContext","overflowX","getContentHtml","contentHtml","footHtml","_hide","dialogBodyStyle","_onTitlebarMouseDown","wrapNode","_onCloseButtonClick","contentDocument","contentWindow","MenuButton","initMenuButton","_value","MultiMenuPop","initMultiMenu","iframe_rendered","onshow","UI","allMenus","timeID","isSubMenuShow","initShortCutMenu","hideAllMenu","SPACE","initEvent","getSubMenuMark","eventType","wt","ht","distanceX","distanceY","setOpacity","relatedTgt","opacity","layerEle","hasContextmenu","fixedlayer","setPos","setPosByCxtMenu","Breakline","Message","initMessage","keepshow","setType","closer","getType","editorui","_Dialog","scrollX","iframeUrlMap","btnCmds","labelMap","causeByUi","uiReady","typeset","cmd2","dialogBtns","noOk","vals","mapUrl","unNeedCheckState","snapscreen","onselect","fontfamily","langLabel","fontsize","customstyle","langCs","ck","lineheight","rowspacings","ri","lists","_onMenuClick","isFullScreen","iconSpan","nodeStack","EditorUI","initEditorUI","_initToolbars","_actualFrameWidth","wordCount","countFn","setCount","_scale","enableScale","disableScale","pastePop","isPaste","maximumWords","wordCountMsg","wordOverFlowMsg","errMsg","countDom","_onEditButtonClick","linkDialog","_onImgEditButtonClick","_onImgSetFloat","_setIframeAlign","frame","anchorEl","newFrame","_updateIframe","mapDialog","insertframeDialog","_onRemoveButtonClick","dialogs","dialogName","toolbars","toolbarUis","toolbar","toolbarUi","toolbarItem","toolbarItemUi","itemUI","renderToolbarBoxHtml","showWordImageDialog","_fullscreen","_bakHtmlOverflow","_bakBodyOverflow","_bakAutoHeight","_bakScrollTop","_bakEditorContaninerWidth","_bakCssText","_bakCssText1","_updateFullScreen","scroll","triggerLayout","_updateElementPath","disableElementPath","enableElementPath","editorHolder","editorDocument","bottombar","scale","scalelayer","isMouseMove","minEditorHeight","minEditorWidth","scaleWidth","scaleHeight","down","move","up","fullScreen","clearSelection","timerId","updateFullScreenTime","showToolbarMsg","hideToolbarMsg","zoom","instances","oldRender","renderUI","newDiv","displays","styleWidth","getEditor","_messageItems","updateHolderPos","message","mid","toolbarbox","getUEBasePath","RemoteUrl","__phpBaseUrl","whiteList","article","aside","audio","bdi","details","footer","header","nav","video","docUrl","confUrl","getBasePath","self","getConfigFilePath","configPath","basePath","optimizationPath","getPointPos","includes","getPos","point","pointPos","elementPos","computed","mapGetters","watch","initPageFlag","$nextTick","loading","$loading","service","lock","spinner","scrollPageIndex","baseRect","paperInfoH","querySelector","initPage","chageSomePageIndex","deep","isToCurPage","changeUeReadyHeightArr","setChangeUeReadyHeight","UeReadyHeightChangeReloadPage","arrH","isRunInitPage","isRunSetInterval","methods","mapMutations","setBigTopicPageArr","SET_PAGETOPIC_ARR","SET_CHANGE_UE_READY_HEIGHT_ARR","pageIndex","bigTopicPageArr","page","conts","from","changePage","tempCount","allTags","nodeH","topicConfig","questionTypeId","isQuestionText","sortChoice","sortTopicContent","sortFill","sortTopicFill","QuestionTextList","sortTopicChoose","sortExplain","topicConfigureData","subject","sortArticleCn","getDisTop","realTop","allChoiceUl","allChoiceLiLength","choiceUlRow","choiceUlCol","overArr","curArr","isTitleOver","isLast","setNextPage","questions","topicContent","isSubTitleOver","smallTopicIndex","optionIndex","titleH","tempNodeH","listType","fillItemAll","fillRows","columns","rowLineHeight","nextArrTopic","curArrTopic","$set","queOptions","isOnlyShowOption","nextArr","surplusH","domH","nextSurplusH","ueIframe","topicContentDom","isNoRead","overTopic","curTopicAreaHeight","cutId","curHtml","overHtml","unshift","explainTopicContentCut","TopicAreaHeight","setTopicChoosePaging","setExplainPaging","explainQuestionsCut","forEach","sortArticle","svgWidth","rowCount","squareSize","compositionNumber","startPositionNumber","prevEndNum","isLastMod","nextPageFistModId","modelId","overLastMinTopicData","nextFistMinTopicData","alias","nextPage","articleObj","cardSetting","hasBindingLine","scrollHeight","ArticleCnH","endPositionNumber","isShowArticleCn","_this","myVar","ReloadPage","setIntervalReloadPage","minIndexPage","baseArr","resetArr","resetPage","wordsArr","scoreTypeArr","pages","pageNo","imge","topicTypeJsToC","typeId","marktype","getAllTopicPos","topicTypeId","explain","getPageFirstElement","getTopicPos","firstEle","firstJson","firstEleLenArr","lastEle","lastJson","lastEleLenArr","commonChoicPos","dotX","optPos","answer","questionNum","score","full","fullScore","optName","commonFillPos","column","rowLinHeight","scoreStyle","cut","scorebox","Score","commonExplainPos","selectOptEle","paperSource","required","total","topicTypeArr","chooseSelectOption","chooseOption","selectqts","linkparm","scoreBoxJson","noScoreJson","scoreLimit","limit","hasHalfScore","eleLenArr","topicType","tempArr","reduce","elem","pageFront","setTopicPageContent","pageBack","eleArr","resetTopicJson","objArr","pageEle","tempObjArr","pageList","baseCount","tempTopicArr","flat","tempFirstJsonArr","pageSide","uniqueCode","paper","paperWidth","paperHeight","uniquePos","arrDotTemp","arrDot","pointWay","qrCode","qrCodePos","useQrCode","absentX","absent","codeX","studentcode_bar","QrCode","identCard","studentcode_fill","examinationNumberType","cardIdBox","baseW","groupCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,OAAT,CAAiBC,GAAjB,EAAsB;AACpB;;AAEA,MAAI,OAAOC,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACC,QAAd,KAA2B,QAA/D,EAAyE;AACvEC,UAAM,CAACC,OAAP,GAAiBL,OAAO,GAAG,SAASA,OAAT,CAAiBC,GAAjB,EAAsB;AAC/C,aAAO,OAAOA,GAAd;AACD,KAFD;AAGD,GAJD,MAIO;AACLG,UAAM,CAACC,OAAP,GAAiBL,OAAO,GAAG,SAASA,OAAT,CAAiBC,GAAjB,EAAsB;AAC/C,aAAOA,GAAG,IAAI,OAAOC,MAAP,KAAkB,UAAzB,IAAuCD,GAAG,CAACK,WAAJ,KAAoBJ,MAA3D,IAAqED,GAAG,KAAKC,MAAM,CAACK,SAApF,GAAgG,QAAhG,GAA2G,OAAON,GAAzH;AACD,KAFD;AAGD;;AAED,SAAOD,OAAO,CAACC,GAAD,CAAd;AACD;;AAEDG,MAAM,CAACC,OAAP,GAAiBL,OAAjB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AAEA;AACA;CAEA;;CAGA;;CAIA;AACA;AACA;;AACA;AACA;AACA;AACA,YADA;AAEA;AACA,mBADA;AAEA;AACA,kBADA;AAEA;AAFA,KAFA;AAMA,kBANA;AAOA;AAPA,GAFA;AAWA,MAXA,kBAWA;AACA;AACA,cADA;AAEA,8DAFA;AAGA,wBAHA;AAIA;AACA,oBACA,aADA,EACA,MADA,EACA,MADA,EACA,UADA,EACA,MADA,EACA,QADA,EACA,WADA,EACA,WADA,EACA,aADA,EAEA,cAFA,EAEA,YAFA,EAEA,aAFA,EAEA,eAFA,EAEA,cAFA,EAEA,gBAFA,EAGA,cAHA,EAGA,YAHA,EAGA,UAHA,EAIA,aAJA,EAIA,aAJA,EAIA,4BAJA,EAIA,WAJA,EAIA,WAJA,EAKA,WALA,EAKA,WALA,EAKA,YALA,EAKA,aALA,EAKA,gBALA,EAKA,gBALA,EADA;AAQA,6BARA;AASA,gCATA;AAUA,yBAVA;AAWA,8BAXA;AAYA;AAZA,OAJA;AAkBA;AACA,qBADA;AAEA,gBAFA;AAGA,gBAHA;AAIA,sBAJA;AAKA;AALA,OAlBA;AAyBA;AAzBA;AA2BA,GAvCA;AAwCA,4JACA,sFADA,CAxCA;AA2CA;AACA;AACA;AACA;AACA;AACA,KALA;AAMA;AACA;AACA;AACA;AACA,KAVA;AAWA;AACA;AACA,KAbA;AAcA,aAdA,qBAcA,GAdA,EAcA;AACA;AACA;AAhBA,GA3CA;AA6DA,SA7DA,qBA6DA;AACA;AACA,GA/DA;AAgEA,eAhEA,2BAgEA;AACA;AACA;AACA;AACA;AACA,GArEA;AAsEA,uSACA;AAAA;AAAA,IADA;AAEA,cAFA,wBAEA;AAAA;;AACA,uBADA,CAEA;AACA;;;AACA;AACA;AACA;AACA;AACA,iFADA,CAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;AACA;AACA,aAFA;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,aAdA;;AAgBA;AACA;AACA;AACA;AACA;AACA,eAJA;;AAKA;AACA;;AAEA;AACA;;AACA,yDAFA,CAGA;;AACA,aAJA;;AAKA;AACA;;AACA;;AACA;AACA,aAJA;;AAMA;AACA;;AACA;AACA,aAHA;AAKA,WAxDA;AA2DA,SAxEA;AAyEA;AACA,KAnFA;AAoFA,gBApFA,0BAoFA;AAAA;AACA;AACA,KAtFA;AAuFA,WAvFA,mBAuFA,GAvFA,EAuFA;AACA;AACA;AACA,KA1FA;AA2FA,cA3FA,sBA2FA,cA3FA,EA2FA;AAEA;;AACA,gCAHA,CAGA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AAEA;;AACA;AACA;AACA;AACA;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA,WATA,EAXA,CAqBA;;AACA;;AACA;AACA;AACA;;AAGA;AACA;;AACA;AACA,0BADA;AAEA;AAFA;AAIA;AAEA;AACA,OAlDA;AAoDA,KApJA;AAqJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBA7JA,iCA6JA;AACA;;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SARA,MAQA;AACA;AACA;AACA,OAdA;AAeA,KA9KA;AA+KA,uBA/KA,iCA+KA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,OArBA;AAsBA,KAvMA;AAwMA,qBAxMA,+BAwMA;AACA;;AACA;AACA;AACA;AACA;AACA,qCAJA,CAKA;AACA;AACA,OAPA;AAQA,KAlNA;AAmNA,eAnNA,yBAmNA;AACA;AACA,KArNA;AAsNA,eAtNA,yBAsNA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AA7NA;AAtEA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AACA,qBADA;AAEA;AACA,wEADA;AAEA,oEAFA;AAGA;AAHA,GAFA;AAOA,gFAPA;AAQA,MARA,kBAQA;AACA;AACA,iBADA;AACA;AACA,oCAFA;AAEA;AACA,cAHA;AAIA;AACA,sBADA;AACA;AACA,2BAFA,CAEA;;AAFA,OAJA;AAQA,mBARA;AAQA;AACA,gBATA;AASA;AACA,mBAVA;AAUA;AACA;AACA,oBADA;AACA;AACA,oBAFA;AAEA;AACA,iBAHA;AAGA;AACA,yBAJA;AAIA;AACA,yBALA;AAKA;AACA,qCANA;AAMA;AACA,wBAPA;AAOA;AACA,iBARA;AAQA;AACA,yBACA;AACA,eADA;AAEA,oBAFA;AAGA,sBAHA;AAIA,qBAJA;AAKA;AALA,SADA,EAQA;AACA,eADA;AAEA,oBAFA;AAGA,sBAHA;AAIA,kBAJA;AAKA;AALA,SARA,EAeA;AACA,eADA;AAEA,qBAFA;AAGA,sBAHA;AAIA,kBAJA;AAKA;AALA,SAfA,EAsBA;AACA,eADA;AAEA,qBAFA;AAGA,sBAHA;AAIA,kBAJA;AAKA;AALA,SAtBA,CATA;AAuCA;AACA,qBAxCA;AAwCA;AACA,qBAzCA;AAyCA;AACA,qBA1CA;AA0CA;AACA,gBA3CA;AA4CA,sBA5CA,CA4CA;;AA5CA,OAXA;AAyDA,iBAzDA;AAyDA;AACA;AA1DA;AA4DA,GArEA;AAsEA,wSACA,yEACA,aADA,EAEA,aAFA,EAGA,eAHA,EAIA,YAJA,EAKA,iBALA,EAMA,cANA,EAOA,aAPA,EAQA,eARA,EASA,cATA,EADA;AAWA,qBAXA,+BAWA;AACA;AACA;AAbA,IAtEA;AAqFA,SArFA,qBAqFA;AACA;AACA,GAvFA;AAwFA,uSACA;AAAA;AACA,sFADA;AAEA,0FAFA;AAGA,0FAHA;AAIA,4FAJA;AAKA,qFALA;AAMA,uFANA;AAOA,wFAPA;AAQA,4EARA;AASA,0FATA;AAUA;AAVA,IADA;AAaA,kBAbA,4BAaA;AAAA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,iDATA,CASA;;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA,yCAlBA,CAmBA;;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;AACA;AACA;AACA,WARA,CASA;;;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;;AACA;AAEA,WANA,MAMA;AACA;AACA;;AACA;AAEA;AAGA,SAjCA,EAiCA,KAjCA,CAiCA;AACA;AACA,SAnCA;AAoCA,OAvCA,MAwCA;AACA;AACA;;AAEA;AACA,oDADA,CAEA;;AACA,oDAHA,CAMA;;AACA,qDAPA,CAOA;;AAEA;;AACA;AACA;AACA;;AACA;AACA;;AAEA;AACA;AACA;AAEA,WAJA,MAIA;AACA;AACA;AACA;AACA,SA5BA,CA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OA/HA,CAgIA;;AAEA,KA/IA;AAgJA,sBAhJA,8BAgJA,IAhJA,EAgJA;AAAA;;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA,4BADA;AAEA,oKAFA;AAGA,wBAHA;AAIA,+CAJA;AAKA,kCALA;AAMA;AANA;AAQA;AACA;AACA,OAjBA;AAkBA;AACA;AACA,OAFA;AAGA;AACA,KA1KA;AA2KA,eA3KA,uBA2KA,GA3KA,EA2KA;AACA;;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;;AACA;AACA;AACA;AACA,WAFA;AAGA;;AAEA;AACA;AACA,SAFA,MAEA;AACA;AACA,SAFA,MAEA;AACA;AACA,SAFA,MAEA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;;AAEA;AACA,KA1MA;AA2MA,cA3MA,sBA2MA,GA3MA,EA2MA;AAAA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AAZA;AAcA,OAfA;AAgBA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA,+CADA;AAEA;AAFA;AAIA;AACA,OANA;AAOA;;AAEA;AAAA;;AACA;AACA;AACA,SAFA,IADA,CAKA;;AACA;AACA;;AACA;AACA;AACA;AAAA;AAAA;AACA,aAFA;AAGA;AAEA,SARA;;AASA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,4BAHA,CAGA;;AACA;AACA,iCALA,CAKA;;AACA;AACA;AACA,WARA;AASA,SAVA,MAUA;AACA;AACA,gDADA;AAEA;AAFA,aADA,CAKA;;AACA;AACA;AACA;AACA;AACA,aAFA;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;;AACA;AACA,6FADA,CAEA;;AACA;AACA;AACA;AACA,WARA,MAQA;AACA;AACA;AACA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qBA,oBArBA;AAsBA,uBAtBA;AAwBA,2BAxBA;AAyBA;AACA,yBADA;AACA;AACA,wBAFA;AAGA,sBACA;AAAA;AAAA;AAAA,SADA,EAEA;AAAA;AAAA;AAAA,SAFA,EAGA;AAAA;AAAA;AAAA,SAHA,EAIA;AAAA;AAAA;AAAA,SAJA;AAHA;AAzBA;AAoCA,GA9DA;AA+DA,sSACA,wFACA,iBADA,EAEA,eAFA,EAGA,cAHA,EAIA,aAJA,EAKA,aALA,EAMA,oBANA,EAOA,eAPA,EAQA,wBARA,EADA;AAUA;AACA;AACA;AAGA,cAfA,wBAeA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA,OALA,MAKA;AACA;AACA;AACA;AAEA,OAdA,CAeA;AACA;AACA;;;AACA;;AACA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;AACA;AACA,OATA,MASA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AAEA;AACA,KAtDA;AAuDA,mBAvDA,6BAuDA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,OAJA,MAIA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAxEA;AA0EA;AACA;AACA;AACA,mBA7EA,6BA6EA;AACA;AACA,KA/EA;AAgFA,mBAhFA,6BAgFA;AACA;AACA,sDADA;AAEA;AAFA;AAIA;AArFA,IA/DA;AAuJA;AACA;AACA,aADA,qBACA;AACA;AACA,OAHA;AAIA;AAJA,KADA,CAOA;AACA;AACA;AACA;AACA;AACA;;AAZA,GAvJA;AAqKA,SArKA,qBAqKA;AACA;AACA;AACA;AACA,GAzKA;AA0KA,SA1KA,qBA0KA;AACA;AACA,GA5KA;AA6KA,qSACA;AAAA;AACA,0FADA;AAEA,0FAFA;AAGA,uFAHA;AAIA,sGAJA;AAKA,wFALA;AAMA;AANA,IADA;AAQA,WARA,qBAQA;AACA;;AAEA;AACA;AACA;AACA;AACA,2DAJA,CAKA;AACA;AAEA,KAnBA;AAoBA,cApBA,sBAoBA,IApBA,EAoBA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KA3BA;AA4BA,UA5BA,oBA4BA;AACA;AACA,KA9BA;AA+BA,kBA/BA,4BA+BA;AACA;;AACA;AACA;AACA;AAEA,KArCA;AAsCA,oBAtCA,8BAsCA;AACA;AACA;;AACA;AACA;AACA;AACA;AAEA,KA9CA;AA+CA,iBA/CA,2BA+CA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA,KAxDA;AAyDA,sBAzDA,gCAyDA;AACA,uBADA,CAEA;;;AACA;;AACA;AACA;AACA,mEAFA,CAIA;AACA;;AACA;AACA,mCADA,CACA;;AACA,SAFA,EAEA,GAFA,EANA,CAUA;AACA,OAfA,CAgBA;;AACA,KA1EA;AA2EA,oBA3EA,8BA2EA;AAAA;;AAAA;AACA;AACA;AACA;AAEA,6BALA,CAQA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCADA;AAEA,2BAFA;AAEA;AACA;AAHA,WADA,CAKA;;AACA,OANA,EAlBA,CA0BA;AACA;AACA;AACA;AACA,KAzGA;AA0GA,uBA1GA,+BA0GA,CA1GA,EA0GA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAJA;AAKA;AACA;AACA,OAFA;AAGA,4DAZA,CAaA;;AACA;;AACA;AACA;AACA,OAjBA,CAkBA;;;AACA,kDAnBA,CAoBA;;AACA,+BArBA,CAsBA;;AACA,uBAvBA,CAwBA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAPA,EAOA,IAPA,EA3BA,CAoCA;AACA;AACA;AACA;;AAEA,gFAzCA,CA0CA;AACA;AAEA,KAvJA;AAwJA,2BAxJA,qCAwJA;AACA;AACA;AACA;AAEA,kCALA,CAMA;;AACA,mFAPA,CAQA;AACA;AAEA,KAnKA;AAoKA,uBApKA,iCAoKA;AACA;AACA,KAtKA;AAuKA,oBAvKA,8BAuKA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,KA9KA;AA+KA,iBA/KA,2BA+KA;AAAA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAJA;AAKA;AACA,SARA;AASA,OAVA;AAWA;AACA;AACA;AACA,OAHA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,OALA,EApBA,CA0BA;;AACA;AACA,qQA5BA,CA6BA;;AACA;AACA;AAEA,KAhNA;AAiNA,gBAjNA,0BAiNA;AAAA;;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;AACA;;AAEA;AAEA,8BAdA,CAgBA;AACA;AACA;AACA,KApOA;AAqOA;AACA,WAtOA,qBAsOA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA,KApPA;AAqPA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,KA9PA;AA+PA,UA/PA,oBA+PA;AAEA;AACA;AAEA,KApQA;AAqQA,YArQA,sBAqQA;AAAA;;AACA,uBADA,CAEA;;;AACA;AACA,8BADA;AAEA,+BAFA;AAGA;AACA;AAGA,gHAJA,CAMA;;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAFA;AAIA,WAbA;;AAcA;AACA;AACA;AACA;AACA,WAJA,EAtBA,CA2BA;;;AAEA;;AAGA;AAAA;AAAA;;AACA,iFAjCA,CAmCA;;;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,eAPA;AASA,aAVA,MAUA;AACA;AACA;AACA;AACA;AACA,WAjBA;;AAoBA;AACA;AACA;AACA,WAHA,MAGA;AACA;AACA,WAFA,MAEA;AACA;AAEA;AACA;AACA;AAEA;;AACA;AACA;AACA,aAFA,EARA,CAWA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA,qBAFA,MAEA;AACA;AACA;AACA;AAEA,mBARA,MAQA;AACA;AACA;AACA,qBAFA,MAEA;AACA;AACA;AACA;AAEA,iBAjBA,MAiBA;AACA;;AACA;AACA;AACA;AACA,mBAHA,MAGA;AACA;AACA;AACA,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AACA;AACA;;AACA;AACA,iCADA;AAEA;AAFA;AAIA,eANA,MAMA;AACA;AACA;;AACA,oDAXA,CAYA;AACA;AACA;AACA;;AACA,aApBA,EAoBA,KApBA,CAoBA;AACA;AACA,4BADA;AAEA;AAFA;AAIA,aAzBA;AA0BA;AACA;;AAGA;AACA;AACA;AACA,OA/DA,CAgEA;;;AACA;AACA;AACA;AACA,wBAHA,CAGA;AACA;;AACA;;AACA;AACA;AACA;;AAEA;AAEA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAPA;AASA,aAVA;AAYA,WAvBA;AAwBA,SA1BA;AA2BA;AACA;AACA;;AAKA;;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAFA,CAGA;;AACA;AACA;;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAJA;AAKA;AACA;;AACA;AACA;AACA,oCAFA,CAGA;;AACA;AACA;;AAEA;AACA,4CA5IA,CA8IA;AACA;;AACA;AACA,kBADA;AAEA,sBAFA;AAGA,kCAHA;AAIA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA,2CAFA,CAGA;;;AACA;AACA;AACA,WAFA;AAIA;AACA,0BADA;AAEA,2BAFA;AAGA,uBAHA;AAIA,uDAJA;AAKA;AALA;AAOA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA,WAFA;AAGA;AACA;AACA;AACA;AACA;;AACA;;AACA;;AACA;;AACA;AACA,aANA,MAMA;AAEA;AACA;AACA;AACA;;AACA;;AAGA;AACA;AACA;AACA,uDAHA,CAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,mDADA;AAEA;AAFA;AAIA;;AACA;;AACA,iDAjBA,CAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAlCA,MAkCA;AACA;AACA;AAEA;AAEA;;AACA,iDAPA,CAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AADA;AAGA;AAEA;AACA;AACA;AACA,mBAFA,MAEA;AACA;AACA;AAEA,iBAPA;;AAQA,oFAvCA,CAwCA;AACA;AACA;AACA;;;AACA;AACA;;AACA,mCAFA,CAGA;;AACA;AAEA,iBANA,EAMA,KANA,CAMA;AACA;;AACA;;AACA;;AACA;;AACA;AAEA,iBAbA,EA5CA,CA0DA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,WAxHA,EAwHA,KAxHA,CAwHA;AACA;;AACA;;AACA;;AACA;AACA,WA7HA;AA8HA,SAvJA,EADA,CA2JA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAlKA,EAkKA,GAlKA;AAoKA,KAxZA;AAyZA,kBAzZA,4BAyZA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AAGA;AACA,KAraA;AAsaA,uBAtaA,+BAsaA,IAtaA,EAsaA;AACA;AACA;AACA;AACA,KA1aA;AA2aA,uBA3aA,iCA2aA;AACA;AACA;AACA;AACA;;AACA;AACA,KAjbA;AAkbA,iBAlbA,yBAkbA,IAlbA,EAkbA;AACA;AACA;AACA;;AACA;AACA,KAvbA;AAwbA,mBAxbA,2BAwbA,IAxbA,EAwbA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAhcA;AAicA,wBAjcA,gCAicA,IAjcA,EAicA;AACA;AACA;AACA;AACA,KArcA;AAscA,mCAtcA,6CAscA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAhdA;AAidA,uBAjdA,+BAidA,IAjdA,EAidA;AAAA;;AACA;;AACA;AACA;AACA,mCADA;AAEA,gCAFA;AAGA;AAHA,WAIA,IAJA,CAIA;AACA;AACA;;AACA;AACA,SARA,EAQA,KARA,CAQA;AACA;AACA,wBADA;AAEA;AAFA;;AAIA;AACA,SAdA;AAgBA,OAjBA,MAiBA;AACA;AACA;AACA;AACA,KAxeA;AAyeA,mBAzeA,6BAyeA;AACA;AACA,KA3eA;AA4eA,mBA5eA,6BA4eA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA,KAjfA;AAkfA,mBAlfA,6BAkfA;AACA;AACA;AACA;;AAEA;AAEA,4CAPA,CASA;;AACA;AACA;AACA;AACA;AACA,KAhgBA;AAigBA,uBAjgBA,iCAigBA;AACA;AACA;AACA,KApgBA;AAqgBA,oBArgBA,4BAqgBA,IArgBA,EAqgBA;AACA;AACA;AACA;AACA;AACA;AACA,OAJA;AAKA;AACA,KA7gBA;AA8gBA,aA9gBA,uBA8gBA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,KAhhBA;AAihBA,cAjhBA,wBAihBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAhiBA;AAiiBA,WAjiBA,mBAiiBA,IAjiBA,EAiiBA;AAAA;;AACA;AACA,sBADA;AAEA,uBAFA;AAGA,mBAHA;AAIA,iDAJA;AAKA;AALA;AAQA;AACA;AACA;AACA,OAFA;AAGA;AACA;AACA;AACA;AACA;;AACA;AACA,SAHA,MAGA;AACA,oCADA,CAEA;;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA,WAPA,CASA;AAEA;;AACA;AAEA,OAnBA;AAoBA,KAnkBA;AAokBA,cApkBA,wBAokBA;AAAA;;AACA;;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AACA,iCADA;AAEA,gCAFA;AAGA;AAHA,WAIA,IAJA,CAIA;AACA;AACA;AACA;AACA;AACA;AACA,+BADA;AAEA;AAFA;AAIA;AAEA,WARA;AAUA,SAjBA,EAiBA,KAjBA,CAiBA;AACA;AACA,wBADA;AAEA;AAFA;AAIA,SAtBA;AAyBA,OA1BA,MA0BA;AACA;AACA;AACA,KAxmBA;AAymBA,kBAzmBA,4BAymBA;AACA;AACA,KA3mBA;AA4mBA,kBA5mBA,4BA4mBA;AACA;AACA,KA9mBA;AA+mBA,gBA/mBA,0BA+mBA;AACA;AACA,KAjnBA;AAknBA,gBAlnBA,0BAknBA;AACA;AACA,KApnBA;AAqnBA,oBArnBA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;AACA;AACA;AACA,aADA,mBACA,MADA,EACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAbA;AAcA;AAdA;AAfA,GAtNA;AAsPA,SAtPA,qBAsPA;AACA;AACA,GAxPA;AAyPA,uSACA;AAAA;AACA,0FADA;AAEA,0FAFA;AAGA,uFAHA;AAIA,qFAJA;AAKA;AALA,IADA;AAOA,UAPA,oBAOA;AACA;AACA,KATA;AAUA,kBAVA,4BAUA;AAAA;;AACA;;AACA;AACA;AACA;AACA,sEAHA,CAIA;AACA,OALA,MAKA;AACA;AACA;AACA;;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA,SANA,MAMA;AACA;AACA;AACA,OAvBA,CAwBA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAFA;AAGA;AACA,OANA,EA3BA,CAkCA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SANA,MAMA;AACA;AACA;AACA;AACA,SAJA,MAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAnBA;AAqBA,KAnEA;AAoEA;AACA,aArEA,uBAqEA;AACA;;AACA;AACA;AACA;AACA,6BADA;AAEA;AAFA;AAIA;;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA,SAJA;AAKA,OANA;AAQA;AACA,KA3FA;AA4FA,gBA5FA,0BA4FA;AACA;AACA;AACA;AACA,KAhGA;AAiGA,gBAjGA,wBAiGA,KAjGA,EAiGA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA,qEAFA,CAGA;AACA;;AACA;AACA,KA1GA;AA2GA,kBA3GA,0BA2GA,GA3GA,EA2GA;AACA;AACA;AACA;AAAA;AAAA;AAAA;;AACA;AACA;AACA;AACA,OAHA,MAGA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA,KAnIA;AAoIA,gBApIA,wBAoIA,IApIA,EAoIA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AACA;AACA;;AACA;AACA;AACA;AADA;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AADA;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gDADA;AAEA,sBAFA;AAGA,sCAHA;AAIA,+BAJA;AAKA,yBALA;AAMA,qDANA;AAOA,kDAPA;AAQA,0CARA;AASA,gCATA;AAUA,kCAVA;AAWA,kCAXA;AAYA,uBAZA;AAaA,0BAbA;AAcA,gCAdA;AAeA;AAfA,aAgBA,aAhBA;;AAkBA;AACA;AACA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA,aANA,MAMA;AACA;AACA;AAEA;;AACA;;AACA;AACA;AACA,OAlDA;AAoDA,KA5MA;AA6MA,gCA7MA,wCA6MA,IA7MA,EA6MA;AAAA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AACA;AACA;AACA;;AA1CA,mCA2CA,CA3CA;AA4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WARA;AA5CA;;AA2CA;AAAA;AAUA;AACA,OAtDA,EAHA,CA0DA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,SAPA;;AAQA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AACA;AACA,OAHA,MAGA;AACA;AACA;AACA,KA/RA;AAgSA,oBAhSA,4BAgSA,IAhSA,EAgSA;AACA;AACA;AACA;AACA;AACA;AACA,OAJA;AAKA;AACA,KAxSA;AAySA,UAzSA,oBAySA;AACA;AACA,KA3SA;AA4SA,4BA5SA,sCA4SA;AACA;;AACA;AACA;AACA;AACA,OALA,CAMA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA,OAJA;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,WAPA;;AAQA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,eAPA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA,WAvBA;;AAyBA;AACA;AACA;AACA;AACA;AAEA;AACA,OA3DA;;AA6DA;AACA;AACA;;AACA;AACA;AACA,KA7YA;AA8YA,QA9YA,kBA8YA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;;AAGA;;AACA;AACA;AACA,OAFA,MAEA;AACA;;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA;AAEA;;AACA;AACA;AACA,wBADA;AAEA,oFAFA;AAGA,oBAHA;AAIA,yDAJA;AAKA,mDALA;AAMA,iCANA;AAOA;AAPA,QAvBA,CAgCA;;AACA;AACA;AACA;AACA;AACA,8PArCA,CAuCA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA,6FADA,CAEA;;AACA;AACA;AACA,aAPA,CAQA;;AACA,WATA,MASA;AACA;AACA;AACA;;AACA;AACA;AACA,OApBA;AAsBA,2CA9DA,CA+DA;;AACA;AACA;AACA;AACA;AACA,SAFA;AAGA,OAJA;AAKA;AACA;AACA;AACA;AACA,OAJA,EAtEA,CA6EA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAXA;AAYA,SAbA;AAeA;AACA,OAlBA,MAkBA;AACA;AACA;AACA;AACA;AACA;AACA,wBADA;AAEA,8BAFA;AAEA;AACA;AAHA,aADA,CAKA;;AACA,SANA;AAQA;;AACA;AACA,KA9fA;AA+fA,mBA/fA,6BA+fA;AAAA;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mEADA;AAEA,8FAFA;AAGA,iEAHA;AAIA,8CAJA;AAKA,mDALA;AAMA,0BANA;AAOA,sCAPA;AAQA,sCARA;AASA,0BATA;AAUA,oCAVA;AAWA,kDAXA;AAYA,wBAZA;AAaA,qCAbA;AAcA,sCAdA;AAeA;AAfA;;AAiBA;AACA;AAAA;AAAA;AACA;;AACA;AACA,aAtBA;AAuBA,WAxBA,MAwBA;AACA;AACA,6DADA;AAEA,oFAFA;AAGA,2DAHA;AAIA,wCAJA;AAKA,6CALA;AAMA,wBANA;AAOA,oCAPA;AAQA,gCARA;AASA,wBATA;AAUA,kCAVA;AAWA,4CAXA;AAYA,sBAZA;AAaA,mCAbA;AAcA,oCAdA;AAeA;AAfA;;AAiBA;AACA;AACA,aApBA,CAqBA;;;AACA;AAAA;AAAA;AACA;AAEA;AACA,SApDA,MAoDA;AACA;AACA;AACA,2DADA;AAEA,kFAFA;AAGA,yDAHA;AAIA,sCAJA;AAKA,2CALA;AAMA,sBANA;AAOA,kCAPA;AAQA,8BARA;AASA,sBATA;AAUA,gCAVA;AAWA,0CAXA;AAYA,oBAZA;AAaA,iCAbA;AAcA,kCAdA;AAeA;AAfA;;AAiBA;AACA;AACA;;AACA;AACA,mCADA,CAEA;;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;;AACA;AACA;AACA;;AACA;AACA;AAGA,OA7FA;AA8FA;AACA,KAjmBA;AAkmBA,oBAlmBA,4BAkmBA,SAlmBA,EAkmBA,IAlmBA,EAkmBA,eAlmBA,EAkmBA;AAAA;;AACA;AACA;AACA;AAEA,6BALA,CAQA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BADA;AAEA,2BAFA;AAEA;AACA;AAHA,WADA,CAKA;;AACA,OANA,EAlBA,CA0BA;AACA;AACA;AACA;AACA,KAhoBA;AAioBA,uBAjoBA,+BAioBA,IAjoBA,EAioBA;AAAA;;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAFA,MAEA;AACA;AACA;AACA;AAEA;AACA;AACA,OAfA;;AAiBA;AACA;AACA;AACA,0BADA,CAEA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA,SApBA,EAFA,CAuBA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aANA;AAOA;AACA;AACA,OA1CA,MA0CA;AACA;AACA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,WAJA,MAIA;AACA;AACA;AACA;AACA;AACA,SAfA,EAHA,CAmBA;;AACA;AACA;AACA;AACA;AACA;AACA,SAJA,EArBA,CA0BA;;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AAGA,KAtuBA;AAuuBA;AACA,eAxuBA,uBAwuBA,IAxuBA,EAwuBA,IAxuBA,EAwuBA;AACA;;AACA;AACA;AACA;AACA;AACA,SAHA;AAIA,OALA,MAKA;AACA;AACA;AACA,KAlvBA;AAmvBA;AACA,kBApvBA,0BAovBA,IApvBA,EAovBA,IApvBA,EAovBA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;;AACA;AACA,KA7vBA;AA8vBA;AACA,cA/vBA,sBA+vBA,IA/vBA,EA+vBA;AACA;AACA;AACA,KAlwBA;AAmwBA;AACA,kBApwBA,0BAowBA,IApwBA,EAowBA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AAEA,KA7wBA;AA8wBA;AACA,uBA/wBA,+BA+wBA,GA/wBA,EA+wBA;AACA;AACA;AACA;AAlxBA;AAzPA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxFA;AAEA;AAEA;AACA,0BADA;AAEA;AACA;AADA,GAFA;AAKA,aALA;AAQA;AACA,wBADA;AAEA;AAFA,GARA;AAYA,MAZA,kBAYA;AACA,YACA;AACA;AACA;AACA;AACA;AALA;AAOA,GApBA;AAqBA,sSACA,mGADA;AAEA,gBAFA,0BAEA;AACA;AACA,KAJA;AAKA;AACA,oBANA,8BAMA;AACA;AACA,KARA;AASA;AACA,sBAVA,gCAUA;AACA;AACA,KAZA;AAaA;AACA,YAdA,sBAcA;AACA;AACA;AAhBA,IArBA;AAuCA,WAvCA;AAwCA,SAxCA,qBAwCA;AACA;AACA;AACA;AACA,GA5CA;AA6CA,SA7CA,qBA6CA,CAEA,CA/CA;AAgDA;AACA;AACA,gBAFA,0BAEA;AACA;AACA;AACA,gCADA;AAEA;AAFA;AAIA;;AACA;AACA;AACA,uFADA;AAEA,4BAFA;AAGA,iBAHA;AAIA,qBAJA;AAKA,sBALA;AAMA,qBANA;AAOA,kGAPA;AAQA;AARA;AAUA;AACA;AACA,KAtBA;AAuBA;AACA,eAxBA,uBAwBA,GAxBA,EAwBA;AACA;AACA;AACA;;AACA;AACA;AACA,oEADA;AAEA;AAFA;AAIA;AACA;AAEA,KApCA;AAqCA,iBArCA,yBAqCA,IArCA,EAqCA;AACA;AACA,KAvCA;AAwCA;AACA,eAzCA,uBAyCA,IAzCA,EAyCA,IAzCA,EAyCA;AACA;AACA;AACA,KA5CA;AA6CA;AACA,YA9CA,sBA8CA;AACA;AACA;AACA;AACA,OAFA;AAGA;AACA,KApDA;AAqDA;AACA,UAtDA,kBAsDA,IAtDA,EAsDA;AACA;AACA;AACA;AACA,OAFA;AAGA;;AACA;AACA;AACA;AAEA,KAhEA;AAiEA;AACA,kBAlEA,0BAkEA,IAlEA,EAkEA,IAlEA,EAkEA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;;AACA;AACA,KA3EA;AA4EA;AACA,cA7EA,sBA6EA,IA7EA,EA6EA,IA7EA,EA6EA;AACA;AACA;AACA,KAhFA;AAiFA;AACA,kBAlFA,0BAkFA,IAlFA,EAkFA,IAlFA,EAkFA,KAlFA,EAkFA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KA1FA;AA2FA,iBA3FA,yBA2FA,GA3FA,EA2FA;AACA;AACA,KA7FA;AA8FA,mBA9FA,2BA8FA,IA9FA,EA8FA,IA9FA,EA8FA;AACA;AACA;AACA;AACA,OAHA,MAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAxGA;AAyGA,gBAzGA,wBAyGA,SAzGA,EAyGA;AACA;AAAA;AAAA;AACA;AACA;AA5GA;AAhDA,G;;;;;;;;;;;;ACjHA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,2CAA2C;AAC/D,kBAAkB,SAAS,uCAAuC,EAAE;AACpE;AACA;AACA;AACA;;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS,4CAA4C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS,mCAAmC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAsC,oBAAoB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB,qDAAqD;AACzE;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACpFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+BAA+B;AACpC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT,kBAAkB,yCAAyC;AAC3D;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC;AACrD,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB;AACpB,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB;AACpB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gCAAgC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACrFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS,2BAA2B,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;AACA,2BAA2B,sBAAsB;AACjD,8BAA8B,uCAAuC;AACrE;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA,wCAAwC,WAAW;AACnD,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,iBAAiB,uCAAuC;AACxD;AACA;AACA;AACA,wCAAwC,WAAW;AACnD,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACvGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,sCAAsC;AAC1D,eAAe,sBAAsB;AACrC;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA;AACA,eAAe,sBAAsB;AACrC;AACA,kBAAkB,kCAAkC;AACpD;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA,sBAAsB,kCAAkC;AACxD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,kCAAkC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,iCAAiC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,iBAAiB,qCAAqC;AACtD,iBAAiB,+BAA+B;AAChD,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,mBAAmB,8BAA8B;AACjD,qBAAqB,4BAA4B;AACjD;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAO,CAAC,wEAAoC;AACrE;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD,0CAA0C,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA,mBAAmB,mCAAmC;AACtD;AACA;AACA,aAAa,kCAAkC;AAC/C;AACA,gCAAgC,wCAAwC;AACxE,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oCAAoC;AAC7D;AACA;AACA;AACA;AACA;AACA,mBAAmB,qCAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAA6B;AACnD,iBAAiB,4BAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D,iBAAiB,6BAA6B;AAC9C,mBAAmB,uCAAuC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,qCAAqC;AAC1C;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C,oBAAoB,0CAA0C;AAC9D,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB,SAAS,kBAAkB,OAAO,qBAAqB,EAAE;AAC1E;AACA;AACA,+BAA+B,MAAM,oBAAoB,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,iBAAiB,+BAA+B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB;AACpB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8CAA8C;AAC1E,sBAAsB;AACtB,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA,4BAA4B,8CAA8C;AAC1E,sBAAsB;AACtB,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACrEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,8BAA8B;AACnC;AACA,wBAAwB,wCAAwC;AAChE,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4CAA4C;AAC9E,kCAAkC;AAClC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzJA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,0BAA0B;AACpD;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA,8BAA8B,YAAY,iCAAiC,EAAE;AAC7E;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa,sBAAsB,0CAA0C,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB;AACA;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oCAAoC;AACpC,2BAA2B;AAC3B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS,eAAe,EAAE;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,wBAAwB;AACtD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS,gBAAgB,EAAE;AAC5C;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB,SAAS,kBAAkB,OAAO,qBAAqB,EAAE;AAC1E;AACA;AACA,+BAA+B,MAAM,oBAAoB,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACrNA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW,sDAAsD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa,sBAAsB,0CAA0C,EAAE;AAC/E;AACA;AACA;AACA,iBAAiB,SAAS,kBAAkB,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB,mBAAmB,iBAAiB,EAAE;AAC/D;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB,SAAS,kBAAkB,OAAO,qBAAqB,EAAE;AAC1E;AACA;AACA,+BAA+B,MAAM,oBAAoB,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACrIA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,gCAAgC,+BAA+B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D,6BAA6B,yCAAyC;AACtE;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,4BAA4B,gDAAgD;AAC5E;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB,SAAS,gBAAgB,EAAE;AACpD;AACA;AACA;AACA;AACA,sCAAsC,uBAAuB;AAC7D;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,wCAAwC;AACxC,+BAA+B;AAC/B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS,YAAY,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,+BAA+B;AAC/B,yBAAyB;AACzB;AACA;AACA,uCAAuC,MAAM,oBAAoB,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClSA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+CAA+C;AAC9D,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAqD;AAC3E;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa,sBAAsB,0CAA0C,EAAE;AAC/E;AACA;AACA;AACA,iBAAiB,SAAS,gBAAgB,EAAE;AAC5C;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS,eAAe,EAAE;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,gCAAgC;AAChC,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS,gBAAgB,EAAE;AAC5C;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB,SAAS,kBAAkB,OAAO,qBAAqB,EAAE;AAC1E;AACA;AACA,+BAA+B,MAAM,oBAAoB,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACvMA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,8BAA8B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB,oCAAoC;AACxD;AACA;AACA,qBAAqB,kCAAkC;AACvD,uBAAuB,mCAAmC;AAC1D,yBAAyB,sBAAsB;AAC/C;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,sCAAsC,SAAS,WAAW,EAAE;AAC5D,sCAAsC,SAAS,WAAW,EAAE;AAC5D,sCAAsC,SAAS,WAAW,EAAE;AAC5D;AACA;AACA,sCAAsC,SAAS,WAAW,EAAE;AAC5D;AACA;AACA,sCAAsC,SAAS,WAAW,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D,yBAAyB,sBAAsB;AAC/C;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE,yBAAyB,sBAAsB;AAC/C,yBAAyB,yBAAyB;AAClD,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE,yBAAyB,sBAAsB;AAC/C;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,sCAAsC,SAAS,WAAW,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE,yBAAyB,sBAAsB;AAC/C;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,sCAAsC,SAAS,cAAc,EAAE;AAC/D;AACA;AACA,sCAAsC,SAAS,eAAe,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE,yBAAyB,sBAAsB;AAC/C;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA,8BAA8B,sCAAsC;AACpE,2BAA2B,8CAA8C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB,SAAS,yCAAyC,EAAE;AAC7E;AACA;AACA;AACA;AACA,yBAAyB,SAAS,yCAAyC,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yCAAyC;AAC/E;AACA;AACA;AACA;AACA,yBAAyB;AACzB,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA,iCAAiC,wCAAwC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA,mBAAmB,+CAA+C;AAClE;AACA;AACA;AACA,qCAAqC,sBAAsB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB;AACtD;AACA;AACA;AACA;AACA;AACA,mCAAmC,mCAAmC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,2BAA2B,oCAAoC;AAC/D;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,wBAAwB,4BAA4B;AACpD,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC;AAC1D,wBAAwB,kCAAkC;AAC1D,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7kBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD,cAAc,oCAAoC;AAClD;AACA;AACA,OAAO,iCAAiC;AACxC;AACA,0BAA0B,+CAA+C;AACzE,sBAAsB,wBAAwB;AAC9C,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;AACA,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS,2CAA2C,oBAAoB,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,2BAA2B;AAC/C,eAAe,oCAAoC;AACnD;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAwC;AACvD;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,kCAAkC;AAClC,yBAAyB;AACzB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,kCAAkC;AAClC,yBAAyB;AACzB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,kCAAkC;AAClC,yBAAyB;AACzB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,8BAA8B,gCAAgC;AAC9D;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA,8BAA8B,gCAAgC;AAC9D;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,8BAA8B,gCAAgC;AAC9D;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAA+C;AAC7E,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8CAA8C;AAC3D;AACA;AACA;AACA,iBAAiB,kDAAkD;AACnE;AACA;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,qBAAqB,8CAA8C;AACnE,qBAAqB,qBAAqB;AAC1C;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA,oCAAoC,SAAS,WAAW,EAAE;AAC1D,oCAAoC,SAAS,WAAW,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC;AACA;AACA,SAAS,8CAA8C,kBAAkB,EAAE;AAC3E;AACA;AACA;AACA;AACA,SAAS,gDAAgD,oBAAoB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjrBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,+BAA+B;AACnD,eAAe,2BAA2B;AAC1C,iBAAiB,sBAAsB;AACvC,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA,4BAA4B,yCAAyC;AACrE,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA,4BAA4B,yCAAyC;AACrE,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,qBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA,wBAAwB,gDAAgD;AACxE;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,8BAA8B;AACrC;AACA;AACA;AACA,WAAW,2DAA2D;AACtE;AACA,uBAAuB,sBAAsB;AAC7C,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO,4BAA4B;AACnC;AACA;AACA;AACA,WAAW,kEAAkE;AAC7E;AACA,uBAAuB,kCAAkC;AACzD,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,8BAA8B,yCAAyC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+BAA+B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,+BAA+B,sBAAsB;AACrD,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA,kCAAkC,gCAAgC;AAClE;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC1ca;AACb,qBAAqB,mBAAO,CAAC,uGAAqC;AAClE,aAAa,mBAAO,CAAC,qFAA4B;AACjD,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,WAAW,mBAAO,CAAC,qGAAoC;AACvD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,cAAc,mBAAO,CAAC,6FAAgC;AACtD,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAA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CAAG/J,CAAC,CAACI,CAAD,CAAT,CACA,IAAK,GAAIwJ,EAAT,GAAcG,EAAd,CAAiB,CACb,GAAI,CAACN,CAAC,CAACL,cAAF,CAAiBQ,CAAjB,CAAL,CAA0B,CACtBH,CAAC,CAACG,CAAD,CAAD,CAAOG,CAAC,CAACH,CAAD,CAAR,CACH,CACJ,CACJ,CACD,MAAOH,EAAP,CACH,CAxKkB,CA0KnB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIO,QAAQ,CAAC,kBAAUC,QAAV,CAAoBC,UAApB,CAAgC,CACrC,GAAIC,KAAI,CAAGF,QAAQ,CAACrQ,SAApB,CACIwQ,IAAI,CAAGjP,KAAK,CAACkO,YAAN,CAAmBa,UAAU,CAACtQ,SAA9B,CADX,CAEAuB,KAAK,CAACqO,MAAN,CAAaY,IAAb,CAAmBD,IAAnB,CAAyB,IAAzB,EACAF,QAAQ,CAACrQ,SAAT,CAAqBwQ,IAArB,CACA,MAAQA,KAAI,CAACzQ,WAAL,CAAmBsQ,QAA3B,CACH,CA9MkB,CAgNnB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACII,IAAI,CAAC,cAAUC,EAAV,CAActB,OAAd,CAAuB,CACxB,MAAO,WAAY,CACf,MAAOsB,GAAE,CAACC,KAAH,CAASvB,OAAT,CAAkBc,SAAlB,CAAP,CACH,CAFD,CAGH,CA9OkB,CAgPnB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAtQuB,CAwQnB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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c,CAAD,CAAhB,CACAmc,KAAK,CAAGE,QAAQ,CAACrc,CAAD,CAAhB,CACA,MAAOkc,KAAK,CAAGA,KAAK,CAAC7d,WAArB,CAAkC,CAC9B,GAAI6d,KAAK,GAAKC,KAAd,CAAqB,CACjB;AACA,MAAO,EAAP,CACH,CACJ,CACD;AACA,MAAQ,EAAR,CACH,CArHyB,CAuH1B;AACJ;AACA;AACA;AACA;AACA;AACA,OA7H8B,CA+H1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACII,YAAY,CAAC,sBAAU9f,IAAV,CAAgB+f,cAAhB,CAAgC,CACzC,GAAIC,QAAO,CAAGhgB,IAAd,CACIuD,CAAC,CAAG,CADR,CAEA,MAAOyc,OAAO,CAAGA,OAAO,CAACC,eAAzB,CAA0C,CACtC,GAAIF,cAAc,EAAIC,OAAO,CAACvN,QAAR,EAAoB,CAA1C,CAA6C,CACzC,GAAGuN,OAAO,CAACvN,QAAR,EAAoBuN,OAAO,CAACpe,WAAR,CAAoB6Q,QAA3C,CAAqD,CACjDlP,CAAC,GACJ,CACD,SACH,CACDA,CAAC,GACJ,CACD,MAAOA,EAAP,CACH,CAnKyB,CAqK1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI2c,KAAK,CAAC,eAAUlgB,IAAV,CAAgB2P,GAAhB,CAAqB,CACvB,MAAO+O,SAAQ,CAACc,WAAT,CAAqBxf,IAArB,CAA2B2P,GAA3B,GAAmC,EAA1C,CACH,CA5LyB,CA6L1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAnN8B,CAqN1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIwQ,UAAU,CAAC,oBAAUngB,IAAV,CAAgBogB,QAAhB,CAA0BC,WAA1B,CAAuC,CAC9C,GAAIrgB,IAAI,EAAI,CAAC0e,QAAQ,CAAC4B,MAAT,CAAgBtgB,IAAhB,CAAb,CAAoC,CAChCA,IAAI,CAAGqgB,WAAW,CAAGrgB,IAAH,CAAUA,IAAI,CAACE,UAAjC,CACA,MAAOF,IAAP,CAAa,CACT,GAAI,CAACogB,QAAD,EAAaA,QAAQ,CAACpgB,IAAD,CAArB,EAA+B0e,QAAQ,CAAC4B,MAAT,CAAgBtgB,IAAhB,CAAnC,CAA0D,CACtD,MAAOogB,SAAQ,EAAI,CAACA,QAAQ,CAACpgB,IAAD,CAArB,EAA+B0e,QAAQ,CAAC4B,MAAT,CAAgBtgB,IAAhB,CAA/B,CAAuD,IAAvD,CAA8DA,IAArE,CACH,CACDA,IAAI,CAAGA,IAAI,CAACE,UAAZ,CACH,CACJ,CACD,MAAO,KAAP,CACH,CAlQyB,CAmQ1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhR8B,CAkR1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIqgB,mBAAmB,CAAC,6BAAUvgB,IAAV,CAAgBwgB,QAAhB,CAA0BH,WAA1B,CAAuCI,SAAvC,CAAkD,CAClED,QAAQ,CAAGliB,KAAK,CAACmQ,SAAN,CAAgBnQ,KAAK,CAACqQ,OAAN,CAAc6R,QAAd,EAA0BA,QAA1B,CAAqC,CAACA,QAAD,CAArD,CAAX,CACA,MAAO9B,SAAQ,CAACyB,UAAT,CAAoBngB,IAApB,CAA0B,SAAUA,IAAV,CAAgB,CAC7C,MAAOwgB,SAAQ,CAACxgB,IAAI,CAACC,OAAN,CAAR,EAA0B,EAAEwgB,SAAS,EAAIA,SAAS,CAACzgB,IAAD,CAAxB,CAAjC,CACH,CAFM,CAEJqgB,WAFI,CAAP,CAGH,CAxSyB,CAyS1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAlT8B,CAoT1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,OACIK,WAAW,CAAC,qBAAU1gB,IAAV,CAAgBqgB,WAAhB,CAA6BD,QAA7B,CAAuCO,WAAvC,CAAoD,CAC5D,GAAIC,QAAO,CAAGP,WAAW,GAAMD,QAAQ,EAAIA,QAAQ,CAACpgB,IAAD,CAApB,EAA8B,CAACogB,QAArC,CAAX,CAA6D,CAACpgB,IAAD,CAA7D,CAAsE,EAApF,CACA,MAAOA,IAAI,CAAG0e,QAAQ,CAACyB,UAAT,CAAoBngB,IAApB,CAA0BogB,QAA1B,CAAd,CAAmD,CAC/CQ,OAAO,CAACvb,IAAR,CAAarF,IAAb,EACH,CACD,MAAO2gB,YAAW,CAAGC,OAAH,CAAaA,OAAO,CAACf,OAAR,EAA/B,CACH,CAlUyB,CAoU1B;AACJ;AACA;AACA;AACA;AACA;AACA,OACIhe,WAAW,CAAC,qBAAU7B,IAAV,CAAgB6gB,OAAhB,CAAyB,CACjC,MAAO7gB,KAAI,CAAC4B,WAAL,CAAmB5B,IAAI,CAACE,UAAL,CAAgBoC,YAAhB,CAA6Bue,OAA7B,CAAsC7gB,IAAI,CAAC4B,WAA3C,CAAnB,CACH5B,IAAI,CAACE,UAAL,CAAgBmC,WAAhB,CAA4Bwe,OAA5B,CADJ,CAEH,CA9UyB,CAgV1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhW8B,CAkW1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIC,MAAM,CAAC,gBAAU9gB,IAAV,CAAgB+gB,YAAhB,CAA8B,CACjC,GAAIjD,OAAM,CAAG9d,IAAI,CAACE,UAAlB,CACI8gB,KADJ,CAEA,GAAIlD,MAAJ,CAAY,CACR,GAAIiD,YAAY,EAAI/gB,IAAI,CAACihB,aAAL,EAApB,CAA0C,CACtC,MAAOD,KAAK,CAAGhhB,IAAI,CAACY,UAApB,CAAgC,CAC5Bkd,MAAM,CAACxb,YAAP,CAAoB0e,KAApB,CAA2BhhB,IAA3B,EACH,CACJ,CACD8d,MAAM,CAACjd,WAAP,CAAmBb,IAAnB,EACH,CACD,MAAOA,KAAP,CACH,CAhYyB,CAkY1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAxa8B,CA0a1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIkhB,cAAc,CAAC,wBAAUlhB,IAAV,CAAgB4d,cAAhB,CAAgCwC,QAAhC,CAA0CvC,KAA1C,CAAiD,CAC5D,MAAOH,WAAU,CAAC1d,IAAD,CAAO,YAAP,CAAqB,aAArB,CAAoC4d,cAApC,CAAoDwC,QAApD,CAA8DvC,KAA9D,CAAjB,CACH,CAtbyB,CAub1BsD,aAAa,CAAC,uBAAUnhB,IAAV,CAAgB4d,cAAhB,CAAgCwC,QAAhC,CAA0CvC,KAA1C,CAAiD,CAC3D,MAAOH,WAAU,CAAC1d,IAAD,CAAO,WAAP,CAAoB,iBAApB,CAAuC4d,cAAvC,CAAuDwC,QAAvD,CAAiEvC,KAAjE,CAAjB,CACH,CAzbyB,CA0b1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIuD,cAAc,CAAC,wBAAUphB,IAAV,CAAgB,CAC3B,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBzS,IAAI,CAACiQ,EAA3B,EAAiC,qBAAqB3O,IAArB,CAA0BtB,IAAI,CAACiQ,EAA/B,CAAxC,CACH,CA5cyB,CA6c1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIoR,SAAS,CAAC,mBAAUrhB,IAAV,CAAgB,CACtB,GAAI2P,IAAG,CAAG3P,IAAI,CAACshB,aAAL,EAAsBthB,IAAhC,CACA,MAAO2P,IAAG,CAAC4R,WAAJ,EAAmB5R,GAAG,CAAC6R,YAA9B,CACH,CA3dyB,CA4d1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIC,iBAAiB,CAAC,2BAAUhC,KAAV,CAAiBC,KAAjB,CAAwB,CACtC,GAAID,KAAK,GAAKC,KAAd,CACI,MAAOD,MAAP,CACJ,GAAIE,SAAQ,CAAG,CAACF,KAAD,CAAf,CAAyBG,QAAQ,CAAG,CAACF,KAAD,CAApC,CAA6C5B,MAAM,CAAG2B,KAAtD,CAA6Dlc,CAAC,CAAG,CAAC,CAAlE,CACA,MAAOua,MAAM,CAAGA,MAAM,CAAC5d,UAAvB,CAAmC,CAC/B,GAAI4d,MAAM,GAAK4B,KAAf,CAAsB,CAClB,MAAO5B,OAAP,CACH,CACD6B,QAAQ,CAACta,IAAT,CAAcyY,MAAd,EACH,CACDA,MAAM,CAAG4B,KAAT,CACA,MAAO5B,MAAM,CAAGA,MAAM,CAAC5d,UAAvB,CAAmC,CAC/B,GAAI4d,MAAM,GAAK2B,KAAf,CACI,MAAO3B,OAAP,CACJ8B,QAAQ,CAACva,IAAT,CAAcyY,MAAd,EACH,CACD6B,QAAQ,CAACE,OAAT,GACAD,QAAQ,CAACC,OAAT,GACA,MAAOtc,CAAC,GAAIoc,QAAQ,CAACpc,CAAD,CAAR,GAAgBqc,QAAQ,CAACrc,CAAD,CAApC,CAAyC,CACxC,CACD,MAAOA,EAAC,EAAI,CAAL,CAAS,IAAT,CAAgBoc,QAAQ,CAACpc,CAAC,CAAG,CAAL,CAA/B,CAEH,CAhgByB,CAigB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA3hB8B,CA6hB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAriB8B,CAuiB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIme,iBAAiB,CAAC,2BAAU1hB,IAAV,CAAgB2hB,UAAhB,CAA4BC,SAA5B,CAAuC,CACrD,QAASC,MAAT,CAAelgB,IAAf,CAAqB+V,GAArB,CAA0B,CACtB,GAAIzV,QAAJ,CACA,MAAON,IAAI,EAAI,CAAC+c,QAAQ,CAAC0C,cAAT,CAAwBzf,IAAxB,CAAT,GAA2C+c,QAAQ,CAACoD,oBAAT,CAA8BngB,IAA9B,CAC9C;AAD8C,EAE3C,CAAC,GAAIkK,OAAJ,CAAW,WAAa6S,QAAQ,CAACY,QAAtB,CAAiC,GAA5C,EAAiDhe,IAAjD,CAAsDK,IAAI,CAACogB,SAA3D,CAFD,CAAP,CAEiF,CAC7E9f,OAAO,CAAGN,IAAI,CAAC+V,GAAD,CAAd,CACAgH,QAAQ,CAACoC,MAAT,CAAgBnf,IAAhB,EACAA,IAAI,CAAGM,OAAP,CACH,CACJ,CACD,CAAC0f,UAAD,EAAeE,KAAK,CAAC7hB,IAAI,CAAC4B,WAAN,CAAmB,aAAnB,CAApB,CACA,CAACggB,SAAD,EAAcC,KAAK,CAAC7hB,IAAI,CAACigB,eAAN,CAAuB,iBAAvB,CAAnB,CACH,CA9jByB,CA+jB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI3c,KAAK,CAAC,eAAUtD,IAAV,CAAgBgiB,MAAhB,CAAwB,CAC1B,GAAIrS,IAAG,CAAG3P,IAAI,CAACshB,aAAf,CACA,GAAIngB,OAAO,CAACa,EAAR,EAAcggB,MAAM,EAAIhiB,IAAI,CAAC+hB,SAAL,CAAetf,MAA3C,CAAmD,CAC/C,GAAId,KAAI,CAAGgO,GAAG,CAACsS,cAAJ,CAAmB,EAAnB,CAAX,CACA,MAAOvD,SAAQ,CAAC7c,WAAT,CAAqB7B,IAArB,CAA2B2B,IAA3B,CAAP,CACH,CACD,GAAIugB,OAAM,CAAGliB,IAAI,CAACmiB,SAAL,CAAeH,MAAf,CAAb,CACA;AACA,GAAI7gB,OAAO,CAACiK,GAAZ,CAAiB,CACb,GAAInJ,QAAO,CAAG0N,GAAG,CAACsS,cAAJ,CAAmB,EAAnB,CAAd,CACAvD,QAAQ,CAAC7c,WAAT,CAAqBqgB,MAArB,CAA6BjgB,OAA7B,EACAyc,QAAQ,CAACoC,MAAT,CAAgB7e,OAAhB,EACH,CACD,MAAOigB,OAAP,CACH,CA7lByB,CA+lB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIE,YAAY,CAAC,sBAAUpiB,IAAV,CAAgB,CACzB,MAAO,CAAC,GAAI6L,OAAJ,CAAW,YAAc6S,QAAQ,CAACY,QAAvB,CAAkC,GAA7C,EAAkDhe,IAAlD,CAAuDtB,IAAI,CAAC+hB,SAA5D,CAAR,CACH,CAjnByB,CAknB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIM,KAAK,CAAC,eAAUlS,OAAV,CAAmB,CACrB,GAAIjD,EAAC,CAAG,CAAR,CAAWoV,CAAC,CAAG,CAAf,CACA,MAAOnS,OAAO,CAACoS,YAAf,CAA6B,CACzBD,CAAC,EAAInS,OAAO,CAACqS,SAAb,CACAtV,CAAC,EAAIiD,OAAO,CAACsS,UAAb,CACAtS,OAAO,CAAGA,OAAO,CAACoS,YAAlB,CACH,CACD,MAAO,CAAE,IAAIrV,CAAN,CAAS,IAAIoV,CAAb,CAAP,CACH,CAxoByB,CAyoB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OArpB8B,CAupB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI5M,EAAE,CAAC,YAAUvF,OAAV,CAAmB9S,IAAnB,CAAyBqlB,OAAzB,CAAkC,CAEjC,GAAIpN,MAAK,CAAGhX,KAAK,CAACqQ,OAAN,CAActR,IAAd,EAAsBA,IAAtB,CAA6BiB,KAAK,CAACiQ,IAAN,CAAWlR,IAAX,EAAiBiG,KAAjB,CAAuB,KAAvB,CAAzC,CACIyJ,CAAC,CAAGuI,KAAK,CAAC7S,MADd,CAEA,GAAIsK,CAAJ,CAAO,MAAOA,CAAC,EAAR,CAAY,CACf1P,IAAI,CAAGiY,KAAK,CAACvI,CAAD,CAAZ,CACA,GAAIoD,OAAO,CAACmC,gBAAZ,CAA8B,CAC1BnC,OAAO,CAACmC,gBAAR,CAAyBjV,IAAzB,CAA+BqlB,OAA/B,CAAwC,KAAxC,EACH,CAFD,IAEO,CACH,GAAI,CAACA,OAAO,CAACC,EAAb,CAAiB,CACbD,OAAO,CAACC,EAAR,CAAa,CACTC,GAAG,CAAG,EADG,CAAb,CAGH,CACD,GAAItW,IAAG,CAAGjP,IAAI,CAAGqlB,OAAO,CAAChf,QAAR,EAAjB,CAAoCwK,KAAK,CAAG5P,KAAK,CAACqG,OAAN,CAAc+d,OAAO,CAACC,EAAR,CAAWC,GAAzB,CAA6BzS,OAA7B,CAA5C,CACA,GAAI,CAACuS,OAAO,CAACC,EAAR,CAAWrW,GAAX,CAAD,EAAoB4B,KAAK,EAAI,CAAC,CAAlC,CAAqC,CACjC,GAAGA,KAAK,EAAI,CAAC,CAAb,CAAe,CACXwU,OAAO,CAACC,EAAR,CAAWC,GAAX,CAAevd,IAAf,CAAoB8K,OAApB,EACH,CACD,GAAG,CAACuS,OAAO,CAACC,EAAR,CAAWrW,GAAX,CAAJ,CAAoB,CAChBoW,OAAO,CAACC,EAAR,CAAWrW,GAAX,EAAkB,SAAUuW,GAAV,CAAe,CAC7B,MAAOH,QAAO,CAACrW,IAAR,CAAawW,GAAG,CAACC,UAAjB,CAA6BD,GAAG,EAAIhZ,MAAM,CAACkZ,KAA3C,CAAP,CACH,CAFD,CAGH,CAGD5S,OAAO,CAACkC,WAAR,CAAoB,KAAOhV,IAA3B,CAAiCqlB,OAAO,CAACC,EAAR,CAAWrW,GAAX,CAAjC,EACH,CACJ,CACJ,CACD6D,OAAO,CAAG,IAAV,CACH,CAnsByB,CAosB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhtB8B,CAktB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI6S,EAAE,CAAC,YAAU7S,OAAV,CAAmB9S,IAAnB,CAAyBqlB,OAAzB,CAAkC,CACjC,GAAIpN,MAAK,CAAGhX,KAAK,CAACqQ,OAAN,CAActR,IAAd,EAAsBA,IAAtB,CAA6BiB,KAAK,CAACiQ,IAAN,CAAWlR,IAAX,EAAiBiG,KAAjB,CAAuB,KAAvB,CAAzC,CACIyJ,CAAC,CAAGuI,KAAK,CAAC7S,MADd,CAEA,GAAIsK,CAAJ,CAAO,MAAOA,CAAC,EAAR,CAAY,CACf1P,IAAI,CAAGiY,KAAK,CAACvI,CAAD,CAAZ,CACA,GAAIoD,OAAO,CAACoC,mBAAZ,CAAiC,CAC7BpC,OAAO,CAACoC,mBAAR,CAA4BlV,IAA5B,CAAkCqlB,OAAlC,CAA2C,KAA3C,EACH,CAFD,IAEO,CACH,GAAIpW,IAAG,CAAGjP,IAAI,CAAGqlB,OAAO,CAAChf,QAAR,EAAjB,CACA,GAAG,CACCyM,OAAO,CAAC8S,WAAR,CAAoB,KAAO5lB,IAA3B,CAAiCqlB,OAAO,CAACC,EAAR,CAAaD,OAAO,CAACC,EAAR,CAAWrW,GAAX,CAAb,CAA+BoW,OAAhE,EACH,OAAM9S,CAAN,CAAQ,CAAE,CACX,GAAI8S,OAAO,CAACC,EAAR,EAAcD,OAAO,CAACC,EAAR,CAAWrW,GAAX,CAAlB,CAAmC,CAC/B,GAAI4B,MAAK,CAAG5P,KAAK,CAACqG,OAAN,CAAc+d,OAAO,CAACC,EAAR,CAAWC,GAAzB,CAA6BzS,OAA7B,CAAZ,CACA,GAAGjC,KAAK,EAAE,CAAC,CAAX,CAAa,CACTwU,OAAO,CAACC,EAAR,CAAWC,GAAX,CAAetU,MAAf,CAAsBJ,KAAtB,CAA4B,CAA5B,EACH,CACDwU,OAAO,CAACC,EAAR,CAAWC,GAAX,CAAengB,MAAf,EAAyB,CAAzB,EAA8B,MAAOigB,QAAO,CAACC,EAAR,CAAWrW,GAAX,CAArC,CACH,CACJ,CACJ,CACJ,CApvByB,CAsvB1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI4W,aAAa,CAAC,uBAAUzD,KAAV,CAAiBC,KAAjB,CAAwB,CAClC,GAAID,KAAK,CAACxf,OAAN,EAAiByf,KAAK,CAACzf,OAA3B,CAAoC,CAChC,MAAO,MAAP,CACH,CACD,GAAIkjB,UAAS,CAAG1D,KAAK,CAAC2D,UAAtB,CACIC,UAAU,CAAG3D,KAAK,CAAC0D,UADvB,CAEA,GAAI,CAACphB,EAAD,EAAOmhB,SAAS,CAAC1gB,MAAV,EAAoB4gB,UAAU,CAAC5gB,MAA1C,CAAkD,CAC9C,MAAO,MAAP,CACH,CACD,GAAI6gB,MAAJ,CAAWC,KAAX,CAAkBC,EAAE,CAAG,CAAvB,CAA0BC,EAAE,CAAG,CAA/B,CACA,IAAK,GAAIlgB,EAAC,CAAG,CAAb,CAAgB+f,KAAK,CAAGH,SAAS,CAAC5f,CAAC,EAAF,CAAjC,EAAyC,CACrC,GAAI+f,KAAK,CAACI,QAAN,EAAkB,OAAtB,CAA+B,CAC3B,GAAIJ,KAAK,CAACK,SAAV,CAAqB,CACjBH,EAAE,GACL,CACD,GAAI9E,QAAQ,CAACkF,WAAT,CAAqBnE,KAArB,CAA4BC,KAA5B,CAAJ,CAAwC,CACpC,SACH,CAFD,IAEO,CACH,MAAO,MAAP,CACH,CACJ,CACD,GAAI1d,EAAJ,CAAQ,CACJ,GAAIshB,KAAK,CAACK,SAAV,CAAqB,CACjBH,EAAE,GACFD,KAAK,CAAGF,UAAU,CAACQ,YAAX,CAAwBP,KAAK,CAACI,QAA9B,CAAR,CACH,CAHD,IAGO,CACH,SACH,CACJ,CAPD,IAOO,CACHH,KAAK,CAAG7D,KAAK,CAAC0D,UAAN,CAAiBE,KAAK,CAACI,QAAvB,CAAR,CACH,CACD,GAAI,CAACH,KAAK,CAACI,SAAP,EAAoBL,KAAK,CAACvB,SAAN,EAAmBwB,KAAK,CAACxB,SAAjD,CAA4D,CACxD,MAAO,MAAP,CACH,CACJ,CACD;AACA,GAAI/f,EAAJ,CAAQ,CACJ,IAAKuB,CAAC,CAAG,CAAT,CAAYggB,KAAK,CAAGF,UAAU,CAAC9f,CAAC,EAAF,CAA9B,EAAsC,CAClC,GAAIggB,KAAK,CAACI,SAAV,CAAqB,CACjBF,EAAE,GACL,CACJ,CACD,GAAID,EAAE,EAAIC,EAAV,CAAc,CACV,MAAO,MAAP,CACH,CACJ,CACD,MAAO,KAAP,CACH,CA/zByB,CAi0B1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIG,WAAW,CAAC,qBAAUnE,KAAV,CAAiBC,KAAjB,CAAwB,CAChC,GAAIoE,OAAM,CAAGrE,KAAK,CAAC/V,KAAN,CAAYiJ,OAAZ,CAAoBzP,OAApB,CAA4B,UAA5B,CAAwC,GAAxC,EAA6CA,OAA7C,CAAqD,UAArD,CAAiE,GAAjE,CAAb,CACI6gB,MAAM,CAAGrE,KAAK,CAAChW,KAAN,CAAYiJ,OAAZ,CAAoBzP,OAApB,CAA4B,UAA5B,CAAwC,GAAxC,EAA6CA,OAA7C,CAAqD,UAArD,CAAiE,GAAjE,CADb,CAEA,GAAI/B,OAAO,CAACoJ,KAAZ,CAAmB,CACfuZ,MAAM,CAAGrE,KAAK,CAAC/V,KAAf,CACAqa,MAAM,CAAGrE,KAAK,CAAChW,KAAf,CACA,GAAIoa,MAAM,CAACrhB,MAAP,EAAiBshB,MAAM,CAACthB,MAA5B,CACI,MAAO,MAAP,CACJ,IAAK,GAAIP,EAAT,GAAc4hB,OAAd,CAAsB,CAClB,GAAI,mBAAmBxiB,IAAnB,CAAwBY,CAAxB,CAAJ,CAAgC,CAC5B,SACH,CACD,GAAI4hB,MAAM,CAAC5hB,CAAD,CAAN,EAAa6hB,MAAM,CAAC7hB,CAAD,CAAvB,CAA4B,CACxB,MAAO,MAAP,CACH,CACJ,CACD,MAAO,KAAP,CACH,CACD,GAAI,CAAC4hB,MAAD,EAAW,CAACC,MAAhB,CAAwB,CACpB,MAAOD,OAAM,EAAIC,MAAjB,CACH,CACDD,MAAM,CAAGA,MAAM,CAACxgB,KAAP,CAAa,GAAb,CAAT,CACAygB,MAAM,CAAGA,MAAM,CAACzgB,KAAP,CAAa,GAAb,CAAT,CACA,GAAIwgB,MAAM,CAACrhB,MAAP,EAAiBshB,MAAM,CAACthB,MAA5B,CAAoC,CAChC,MAAO,MAAP,CACH,CACD,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGkV,MAAM,CAACvgB,CAAC,EAAF,CAA/B,EAAuC,CACnC,GAAIjF,KAAK,CAACqG,OAAN,CAAcof,MAAd,CAAsBnV,EAAtB,GAA6B,CAAC,CAAlC,CAAqC,CACjC,MAAO,MAAP,CACH,CACJ,CACD,MAAO,KAAP,CACH,CA33ByB,CA43B1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIoV,UAAU,CAAC,oBAAUhkB,IAAV,CAAgB,CACvB,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,GAAuBpS,GAAG,CAAC+B,MAAJ,CAAWpC,IAAI,CAACC,OAAhB,GAA4Bwe,UAAU,CAACC,QAAQ,CAACuF,gBAAT,CAA0BjkB,IAA1B,CAAgC,SAAhC,CAAD,CAA7D,GAA8G,CAACK,GAAG,CAACic,SAAJ,CAActc,IAAI,CAACC,OAAnB,CAAtH,CACH,CAz5ByB,CA05B1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIqgB,MAAM,CAAC,gBAAUtgB,IAAV,CAAgB,CACnB,MAAQA,KAAI,EAAIA,IAAI,CAACyS,QAAL,EAAiB,CAAzB,EAA8BzS,IAAI,CAACC,OAAL,CAAaqK,WAAb,IAA8B,MAApE,CACH,CAv6ByB,CAw6B1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI4Z,WAAW,CAAC,qBAAUlkB,IAAV,CAAgB8d,MAAhB,CAAwB,CAChC,GAAI7b,QAAJ,CACIkiB,WAAW,CAAGnkB,IADlB,CAEIqR,KAAK,CAAGrR,IAFZ,CAGIokB,SAHJ,CAIIC,UAJJ,CAKA,EAAG,CACCF,WAAW,CAAGA,WAAW,CAACjkB,UAA1B,CACA,GAAIkkB,SAAJ,CAAe,CACXniB,OAAO,CAAGkiB,WAAW,CAACG,SAAZ,CAAsB,KAAtB,CAAV,CACAriB,OAAO,CAACI,WAAR,CAAoB+hB,SAApB,EACAA,SAAS,CAAGniB,OAAZ,CACAA,OAAO,CAAGkiB,WAAW,CAACG,SAAZ,CAAsB,KAAtB,CAAV,CACAriB,OAAO,CAACI,WAAR,CAAoBgiB,UAApB,EACAA,UAAU,CAAGpiB,OAAb,CACH,CAPD,IAOO,CACHmiB,SAAS,CAAGD,WAAW,CAACG,SAAZ,CAAsB,KAAtB,CAAZ,CACAD,UAAU,CAAGD,SAAS,CAACE,SAAV,CAAoB,KAApB,CAAb,CACH,CACD,MAAOriB,OAAO,CAAGoP,KAAK,CAAC4O,eAAvB,CAAwC,CACpCmE,SAAS,CAAC9hB,YAAV,CAAuBL,OAAvB,CAAgCmiB,SAAS,CAACxjB,UAA1C,EACH,CACD,MAAOqB,OAAO,CAAGoP,KAAK,CAACzP,WAAvB,CAAoC,CAChCyiB,UAAU,CAAChiB,WAAX,CAAuBJ,OAAvB,EACH,CACDoP,KAAK,CAAG8S,WAAR,CACH,CApBD,MAoBSrG,MAAM,GAAKqG,WApBpB,EAqBAliB,OAAO,CAAG6b,MAAM,CAAC5d,UAAjB,CACA+B,OAAO,CAACK,YAAR,CAAqB8hB,SAArB,CAAgCtG,MAAhC,EACA7b,OAAO,CAACK,YAAR,CAAqB+hB,UAArB,CAAiCvG,MAAjC,EACA7b,OAAO,CAACK,YAAR,CAAqBtC,IAArB,CAA2BqkB,UAA3B,EACA3F,QAAQ,CAACoC,MAAT,CAAgBhD,MAAhB,EACA,MAAO9d,KAAP,CACH,CAt+ByB,CAu+B1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI8hB,oBAAoB,CAAC,8BAAU9hB,IAAV,CAAgB,CACjC,GAAIA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsB,CAACpS,GAAG,CAACuc,YAAJ,CAAkB5c,IAAI,CAACC,OAAvB,CAA3B,CAA6D,CACzD,MAAO,EAAP,CACH,CACDD,IAAI,CAAGA,IAAI,CAACY,UAAZ,CACA,MAAOZ,IAAP,CAAa,CACT;AACA,GAAI0e,QAAQ,CAAC0C,cAAT,CAAwBphB,IAAxB,CAAJ,CAAmC,CAC/B,MAAO,EAAP,CACH,CACD,GAAIA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsB,CAACiM,QAAQ,CAACoD,oBAAT,CAA8B9hB,IAA9B,CAAvB,EACAA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsB,CAACiM,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAD3B,CAEM,CACF,MAAO,EAAP,CACH,CACDA,IAAI,CAAGA,IAAI,CAAC4B,WAAZ,CACH,CACD,MAAO,EAAP,CAEH,CAvgCyB,CAygC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI2iB,iBAAiB,CAAC,2BAAUvkB,IAAV,CAAgB,CAC9B,QAAS8gB,OAAT,CAAgBpJ,GAAhB,CAAqB,CACjB,GAAIsJ,MAAJ,CACA,MAAO,CAACA,KAAK,CAAGhhB,IAAI,CAAC0X,GAAD,CAAb,GAAuBsJ,KAAK,CAACvO,QAAN,EAAkB,CAAzC,EAA8CiM,QAAQ,CAAC0D,YAAT,CAAsBpB,KAAtB,CAArD,CAAmF,CAC/EhhB,IAAI,CAACa,WAAL,CAAiBmgB,KAAjB,EACH,CACJ,CACDF,MAAM,CAAC,YAAD,CAAN,CACAA,MAAM,CAAC,WAAD,CAAN,CACH,CAziCyB,CA2iC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI0D,UAAU,CAAC,oBAAUxkB,IAAV,CAAgBC,OAAhB,CAAyBS,KAAzB,CAAgC,CACvC,GAAIgO,KAAI,CAAGgQ,QAAQ,CAAC3Z,oBAAT,CAA8B/E,IAA9B,CAAoCA,IAAI,CAACC,OAAL,CAAaqK,WAAb,EAApC,CAAX,CACA,IAAK,GAAI/G,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGF,IAAI,CAACnL,CAAC,EAAF,CAA7B,EAAqC,CACjC,GAAI,CAACqL,EAAE,CAAC1O,UAAJ,EAAkBwe,QAAQ,CAAC0C,cAAT,CAAwBxS,EAAxB,CAAtB,CAAmD,CAC/C,SACH,CACD;AACA,GAAIA,EAAE,CAAC3O,OAAH,CAAWqK,WAAX,IAA4B,MAAhC,CAAwC,CACpC,GAAItK,IAAI,GAAK4O,EAAE,CAAC1O,UAAhB,CAA4B,CACxBwe,QAAQ,CAAC6F,iBAAT,CAA2BvkB,IAA3B,EACA,GAAIA,IAAI,CAACykB,UAAL,CAAgBhiB,MAAhB,EAA0B,CAA9B,CAAiC,CAC7BzC,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqB/D,EAAE,CAAClF,KAAH,CAASiJ,OAAT,CAAmB,GAAnB,CAAyB3S,IAAI,CAAC0J,KAAL,CAAWiJ,OAAzD,CACA+L,QAAQ,CAACoC,MAAT,CAAgBlS,EAAhB,CAAoB,IAApB,EACA,SACH,CACJ,CACDA,EAAE,CAAClF,KAAH,CAASiJ,OAAT,CAAmB3S,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqB,GAArB,CAA2B/D,EAAE,CAAClF,KAAH,CAASiJ,OAAvD,CACA,GAAIjS,KAAJ,CAAW,CACP,GAAIgJ,MAAK,CAAGhJ,KAAK,CAACgJ,KAAlB,CACA,GAAIA,KAAJ,CAAW,CACPA,KAAK,CAAGA,KAAK,CAACpG,KAAN,CAAY,GAAZ,CAAR,CACA,IAAK,GAAI+P,EAAC,CAAG,CAAR,CAAWxG,CAAhB,CAAmBA,CAAC,CAAGnD,KAAK,CAAC2J,CAAC,EAAF,CAA5B,EAAoC,CAChCzE,EAAE,CAAClF,KAAH,CAASpL,KAAK,CAAC2Q,kBAAN,CAAyBpC,CAAC,CAACvJ,KAAF,CAAQ,GAAR,EAAa,CAAb,CAAzB,CAAT,EAAsDuJ,CAAC,CAACvJ,KAAF,CAAQ,GAAR,EAAa,CAAb,CAAtD,CACH,CACJ,CACJ,CACD,GAAIob,QAAQ,CAACkF,WAAT,CAAqBhV,EAArB,CAAyB5O,IAAzB,CAAJ,CAAoC,CAChC0e,QAAQ,CAACoC,MAAT,CAAgBlS,EAAhB,CAAoB,IAApB,EACH,CACD,SACH,CACD,GAAI8P,QAAQ,CAACwE,aAAT,CAAuBljB,IAAvB,CAA6B4O,EAA7B,CAAJ,CAAsC,CAClC8P,QAAQ,CAACoC,MAAT,CAAgBlS,EAAhB,CAAoB,IAApB,EACH,CACJ,CACJ,CAxlCyB,CA0lC1B;AACJ;AACA;AACA;AACA;AACA;AACA,OACI7J,oBAAoB,CAAC,8BAAU/E,IAAV,CAAgBnC,IAAhB,CAAqB6mB,MAArB,CAA6B,CAC9C,GAAGA,MAAM,EAAIpmB,KAAK,CAACoS,QAAN,CAAegU,MAAf,CAAb,CAAoC,CACjC,GAAIzmB,UAAS,CAAGymB,MAAhB,CACAA,MAAM,CAAI,gBAAS1kB,IAAT,CAAc,CAAC,MAAO0e,SAAQ,CAACiG,QAAT,CAAkB3kB,IAAlB,CAAuB/B,SAAvB,CAAP,CAAyC,CAAlE,CACF,CACDJ,IAAI,CAAGS,KAAK,CAACiQ,IAAN,CAAW1Q,IAAX,EAAiBqF,OAAjB,CAAyB,UAAzB,CAAoC,GAApC,EAAyCI,KAAzC,CAA+C,GAA/C,CAAP,CACA,GAAIshB,IAAG,CAAG,EAAV,CACA,IAAI,GAAIljB,EAAC,CAAG,CAAR,CAAUmjB,EAAd,CAAiBA,EAAE,CAAChnB,IAAI,CAAC6D,CAAC,EAAF,CAAxB,EAA+B,CAC3B,GAAIgN,KAAI,CAAG1O,IAAI,CAAC+E,oBAAL,CAA0B8f,EAA1B,CAAX,CACA,IAAK,GAAIthB,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGF,IAAI,CAACnL,CAAC,EAAF,CAA7B,EAAqC,CACjC,GAAG,CAACmhB,MAAD,EAAWA,MAAM,CAAC9V,EAAD,CAApB,CACIgW,GAAG,CAACvf,IAAJ,CAASuJ,EAAT,EACP,CACJ,CAED,MAAOgW,IAAP,CACH,CAjnCyB,CAknC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIE,aAAa,CAAC,uBAAU9kB,IAAV,CAAgB,CAC1B,GAAI8d,OAAM,CAAG9d,IAAI,CAACE,UAAlB,CACA,MAAO4d,MAAM,EAAIzd,GAAG,CAACuc,YAAJ,CAAiBkB,MAAM,CAAC7d,OAAxB,CAAjB,CAAmD,CAC/C,GAAI6d,MAAM,CAAC7d,OAAP,EAAkBD,IAAI,CAACC,OAAvB,EAAkC6d,MAAM,CAAC7d,OAAP,EAAkB,GAAxD,CAA6D,CAAC;AAC1Dye,QAAQ,CAAC6F,iBAAT,CAA2BzG,MAA3B,EACA;AACA,GAAIA,MAAM,CAAC7d,OAAP,EAAkB,MAAlB,EAA4B,CAACye,QAAQ,CAACkF,WAAT,CAAqB9F,MAArB,CAA6B9d,IAA7B,CAA7B,EACI8d,MAAM,CAAC7d,OAAP,EAAkB,GAAlB,EAAyBD,IAAI,CAACC,OAAL,EAAgB,MADjD,CAC0D,CACtD,GAAI6d,MAAM,CAAC2G,UAAP,CAAkBhiB,MAAlB,CAA2B,CAA3B,EAAgCqb,MAAM,GAAK9d,IAAI,CAACE,UAApD,CAAgE,CAC5DF,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqBmL,MAAM,CAACpU,KAAP,CAAaiJ,OAAb,CAAuB,GAAvB,CAA6B3S,IAAI,CAAC0J,KAAL,CAAWiJ,OAA7D,CACAmL,MAAM,CAAGA,MAAM,CAAC5d,UAAhB,CACA,SACH,CAJD,IAIO,CACH4d,MAAM,CAACpU,KAAP,CAAaiJ,OAAb,EAAwB,IAAM3S,IAAI,CAAC0J,KAAL,CAAWiJ,OAAzC,CACA;AACA,GAAImL,MAAM,CAAC7d,OAAP,EAAkB,GAAtB,CAA2B,CACvB6d,MAAM,CAACpU,KAAP,CAAaqb,cAAb,CAA8B,WAA9B,CACH,CACJ,CACJ,CACD,GAAIjH,MAAM,CAAC7d,OAAP,EAAkB,GAAtB,CAA2B,CACvB6d,MAAM,GAAK9d,IAAI,CAACE,UAAhB,EAA8Bwe,QAAQ,CAACoC,MAAT,CAAgB9gB,IAAhB,CAAsB,IAAtB,CAA9B,CACA,MACH,CACJ,CACD8d,MAAM,CAAGA,MAAM,CAAC5d,UAAhB,CACH,CACJ,CAxqCyB,CAyqC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAxrC8B,CA0rC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA1sC8B,CA4sC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI8kB,YAAY,CAAC,sBAAUhlB,IAAV,CAAgB4hB,SAAhB,CAA2BD,UAA3B,CAAuC,CAChD,QAASsD,MAAT,CAAeC,GAAf,CAAoBjX,KAApB,CAA2BjO,IAA3B,CAAiC,CAC7B,GAAI2B,KAAJ,CACA,GAAI,CAACA,IAAI,CAAG3B,IAAI,CAACklB,GAAD,CAAZ,GAAsB,CAACxG,QAAQ,CAAC0C,cAAT,CAAwBzf,IAAxB,CAAvB,EAAwDA,IAAI,CAAC8Q,QAAL,EAAiB,CAAzE,EAA8EiM,QAAQ,CAACwE,aAAT,CAAuBljB,IAAvB,CAA6B2B,IAA7B,CAAlF,CAAsH,CAClH,MAAOA,IAAI,CAACf,UAAZ,CAAwB,CACpB,GAAIqN,KAAK,EAAI,YAAb,CAA2B,CACvBjO,IAAI,CAACsC,YAAL,CAAkBX,IAAI,CAACwjB,SAAvB,CAAkCnlB,IAAI,CAACY,UAAvC,EACH,CAFD,IAEO,CACHZ,IAAI,CAACqC,WAAL,CAAiBV,IAAI,CAACf,UAAtB,EACH,CACJ,CACD8d,QAAQ,CAACoC,MAAT,CAAgBnf,IAAhB,EACH,CACJ,CACD,CAACigB,SAAD,EAAcqD,KAAK,CAAC,iBAAD,CAAoB,YAApB,CAAkCjlB,IAAlC,CAAnB,CACA,CAAC2hB,UAAD,EAAesD,KAAK,CAAC,aAAD,CAAgB,WAAhB,CAA6BjlB,IAA7B,CAApB,CACH,CA/uCyB,CAivC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIolB,YAAY,CAACpjB,EAAE,EAAIb,OAAO,CAACsK,QAAd,EAA0BtK,OAAO,CAACoJ,KAAlC,CAA0C,SAAUvK,IAAV,CAAgB,CACnE;AACAA,IAAI,CAACqlB,aAAL,CAAqB,UAAY,CAC7B,MAAO,MAAP,CACH,CAFD,CAGArlB,IAAI,CAAC7B,OAAL,CAAe6B,IAAI,CAACslB,OAAL,CAAetlB,IAAI,CAACulB,SAAL,CAAiB,UAAY,CACvD,MAAO,MAAP,CACH,CAFD,CAGAvlB,IAAI,CAACwlB,YAAL,CAAoB,IAApB,CACAxlB,IAAI,CAAC8F,YAAL,CAAkB,cAAlB,CAAkC,IAAlC,EACA,IAAK,GAAIvC,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG5O,IAAI,CAACylB,GAAL,CAASliB,CAAC,EAAV,CAAzB,EAAyC,CACrC,OAAQqL,EAAE,CAAC3O,OAAH,CAAWqK,WAAX,EAAR,EACI,IAAK,QAAL,CACA,IAAK,UAAL,CACA,IAAK,OAAL,CACA,IAAK,QAAL,CACI,MACJ,QACIsE,EAAE,CAAC4W,YAAH,CAAkB,IAAlB,CACAxlB,IAAI,CAAC8F,YAAL,CAAkB,cAAlB,CAAkC,IAAlC,EARR,CAUH,CACJ,CAtBY,CAsBT,SAAU9F,IAAV,CAAgB,CAChBA,IAAI,CAAC0J,KAAL,CAAWgc,aAAX,CACI1lB,IAAI,CAAC0J,KAAL,CAAWic,gBAAX,CACI3lB,IAAI,CAAC0J,KAAL,CAAWkc,YAAX,CACI5lB,IAAI,CAAC0J,KAAL,CAAWmc,eAAX,CAA6B,MAHzC,CAIH,CAtxCyB,CAuxC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA3yC8B,CA6yC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIC,gBAAgB,CAAC,0BAAU9lB,IAAV,CAAgB+lB,SAAhB,CAA2B,CACxCA,SAAS,CAAGznB,KAAK,CAACqQ,OAAN,CAAcoX,SAAd,EAA2BA,SAA3B,CAAuCznB,KAAK,CAACiQ,IAAN,CAAWwX,SAAX,EAAsB7iB,OAAtB,CAA8B,UAA9B,CAAyC,GAAzC,EAA8CI,KAA9C,CAAoD,GAApD,CAAnD,CACA,IAAK,GAAIC,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGmX,SAAS,CAACxiB,CAAC,EAAF,CAAlC,EAA0C,CACtCqL,EAAE,CAAGmP,OAAO,CAACnP,EAAD,CAAP,EAAeA,EAApB,CACA,OAAQA,EAAR,EACI,IAAK,WAAL,CACI5O,IAAI,CAAC4O,EAAD,CAAJ,CAAW,EAAX,CACA,MACJ,IAAK,OAAL,CACI5O,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqB,EAArB,CACA,GAAI7S,IAAG,CAAGE,IAAI,CAACgmB,gBAAL,CAAsB,OAAtB,CAAV,CACA,CAAC7kB,OAAO,CAACa,EAAT,EAAelC,GAAf,EAAsBE,IAAI,CAACimB,mBAAL,CAAyBnmB,GAAzB,CAAtB,CAPR,CASAE,IAAI,CAACkmB,eAAL,CAAqBtX,EAArB,EACH,CACJ,CAj1CyB,CAk1C1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIjQ,aAAa,CAAC,uBAAUgR,GAAV,CAAeI,GAAf,CAAoBrP,KAApB,CAA2B,CACrC,MAAOge,SAAQ,CAACyH,aAAT,CAAuBxW,GAAG,CAAChR,aAAJ,CAAkBoR,GAAlB,CAAvB,CAA+CrP,KAA/C,CAAP,CACH,CAz2CyB,CA02C1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIylB,aAAa,CAAC,uBAAUnmB,IAAV,CAAgBU,KAAhB,CAAuB,CACjC,IAAK,GAAI0lB,KAAT,GAAiB1lB,MAAjB,CAAwB,CACpB,GAAGA,KAAK,CAAC6L,cAAN,CAAqB6Z,IAArB,CAAH,CAA8B,CAC1B,GAAIhjB,MAAK,CAAG1C,KAAK,CAAC0lB,IAAD,CAAjB,CACA,OAAQA,IAAR,EACI,IAAK,OAAL,CACI;AACApmB,IAAI,CAAC/B,SAAL,CAAiBmF,KAAjB,CACA,MACJ,IAAK,OAAL,CACIpD,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqB3S,IAAI,CAAC0J,KAAL,CAAWiJ,OAAX,CAAqB,GAArB,CAA2BvP,KAAhD,CACA,MACJ,IAAK,WAAL,CACIpD,IAAI,CAAComB,IAAD,CAAJ,CAAahjB,KAAb,CACA,MACJ,IAAK,OAAL,CACIpD,IAAI,CAACoD,KAAL,CAAaA,KAAb,CACA,MACJ,QACIpD,IAAI,CAAC8F,YAAL,CAAkBiY,OAAO,CAACqI,IAAD,CAAP,EAAiBA,IAAnC,CAAyChjB,KAAzC,EAfR,CAiBH,CACJ,CACD,MAAOpD,KAAP,CACH,CAx5CyB,CA05C1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIikB,gBAAgB,CAAC,0BAAU9T,OAAV,CAAmBkW,SAAnB,CAA8B,CAC3C;AACA,GAAIC,KAAI,CAAG,uBAAX,CAEA,GAAGA,IAAI,CAAC3hB,OAAL,CAAa0hB,SAAb,EAA0B,CAAC,CAA9B,CAAgC,CAC5B,MAAOlW,QAAO,CAAC,SAAWkW,SAAS,CAACnjB,OAAV,CAAkB,KAAlB,CAAwB,SAAS2J,CAAT,CAAW,CAAC,MAAOA,EAAC,CAAClJ,WAAF,EAAP,CAAuB,CAA3D,CAAZ,CAAP,CAAmF,IAA1F,CACH,CACD;AACA,GAAIwM,OAAO,CAACsC,QAAR,EAAoB,CAAxB,CAA2B,CACvBtC,OAAO,CAAGA,OAAO,CAACjQ,UAAlB,CACH,CACD;AACA,GAAIiB,OAAO,CAACa,EAAR,EAAcb,OAAO,CAAC+I,OAAR,CAAkB,CAAhC,EAAqCmc,SAAS,EAAI,WAAlD,EAAiE,CAAClW,OAAO,CAACzG,KAAR,CAAc6c,QAAhF,EACA,CAAClmB,GAAG,CAACI,MAAJ,CAAW0P,OAAO,CAAClQ,OAAnB,CADD,EACgC,CAACI,GAAG,CAACic,SAAJ,CAAcnM,OAAO,CAAClQ,OAAtB,CADrC,CACqE,CACjE,GAAIuZ,KAAI,CAAGrJ,OAAO,CAACmR,aAAR,CAAsB3iB,aAAtB,CAAoC,MAApC,CAAX,CACA6a,IAAI,CAAC9P,KAAL,CAAWiJ,OAAX,CAAqB,wCAArB,CACA6G,IAAI,CAACvY,SAAL,CAAiB,GAAjB,CACAkP,OAAO,CAAC9N,WAAR,CAAoBmX,IAApB,EACA,GAAIlF,OAAM,CAAGkF,IAAI,CAACgN,YAAlB,CACArW,OAAO,CAACtP,WAAR,CAAoB2Y,IAApB,EACAA,IAAI,CAAG,IAAP,CACA,MAAOlF,OAAM,CAAG,IAAhB,CACH,CACD,GAAI,CACA,GAAIlR,MAAK,CAAGsb,QAAQ,CAACrd,QAAT,CAAkB8O,OAAlB,CAA2BkW,SAA3B,IACPxc,MAAM,CAACoa,gBAAP,CAA0BvF,QAAQ,CAAC2C,SAAT,CAAmBlR,OAAnB,EAA4B8T,gBAA5B,CAA6C9T,OAA7C,CAAsD,EAAtD,EAA0DsW,gBAA1D,CAA2EJ,SAA3E,CAA1B,CACG,CAAElW,OAAO,CAACuW,YAAR,EAAwBvW,OAAO,CAACzG,KAAlC,EAA0CpL,KAAK,CAAC2Q,kBAAN,CAAyBoX,SAAzB,CAA1C,CAFI,CAAZ,CAIH,CAAC,MAAOzW,CAAP,CAAU,CACR,MAAO,EAAP,CACH,CACD,MAAOtR,MAAK,CAACkT,aAAN,CAAoBlT,KAAK,CAACqS,QAAN,CAAe0V,SAAf,CAA0BjjB,KAA1B,CAApB,CAAP,CACH,CAh9CyB,CAi9C1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAp+C8B,CAs+C1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIujB,aAAa,CAAC,uBAAUC,GAAV,CAAeC,UAAf,CAA2B,CACrCA,UAAU,CAAGvoB,KAAK,CAACqQ,OAAN,CAAckY,UAAd,EAA4BA,UAA5B,CACTvoB,KAAK,CAACiQ,IAAN,CAAWsY,UAAX,EAAuB3jB,OAAvB,CAA+B,UAA/B,CAA0C,GAA1C,EAA+CI,KAA/C,CAAqD,GAArD,CADJ,CAEA,IAAI,GAAIC,EAAC,CAAG,CAAR,CAAUqL,EAAV,CAAakY,GAAG,CAAGF,GAAG,CAAC3oB,SAA3B,CAAqC2Q,EAAE,CAACiY,UAAU,CAACtjB,CAAC,EAAF,CAAlD,EAAyD,CACrDujB,GAAG,CAAGA,GAAG,CAAC5jB,OAAJ,CAAY,GAAI2I,OAAJ,CAAW,MAAQ+C,EAAR,CAAa,KAAxB,CAAZ,CAA2C,EAA3C,CAAN,CACH,CACDkY,GAAG,CAAGxoB,KAAK,CAACiQ,IAAN,CAAWuY,GAAX,EAAgB5jB,OAAhB,CAAwB,UAAxB,CAAmC,GAAnC,CAAN,CACA,GAAG4jB,GAAH,CAAO,CACHF,GAAG,CAAC3oB,SAAJ,CAAgB6oB,GAAhB,CACH,CAFD,IAEK,CACDpI,QAAQ,CAACoH,gBAAT,CAA0Bc,GAA1B,CAA8B,CAAC,OAAD,CAA9B,EACH,CACJ,CAtgDyB,CAugD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA3hD8B,CA6hD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIG,QAAQ,CAAC,kBAAUH,GAAV,CAAeC,UAAf,CAA2B,CAChC,GAAG,CAACD,GAAJ,CAAQ,OACRC,UAAU,CAAGvoB,KAAK,CAACiQ,IAAN,CAAWsY,UAAX,EAAuB3jB,OAAvB,CAA+B,UAA/B,CAA0C,GAA1C,EAA+CI,KAA/C,CAAqD,GAArD,CAAb,CACA,IAAI,GAAIC,EAAC,CAAG,CAAR,CAAUqL,EAAV,CAAakY,GAAG,CAAGF,GAAG,CAAC3oB,SAA3B,CAAqC2Q,EAAE,CAACiY,UAAU,CAACtjB,CAAC,EAAF,CAAlD,EAAyD,CACrD,GAAG,CAAC,GAAIsI,OAAJ,CAAW,MAAQ+C,EAAR,CAAa,KAAxB,EAA+BtN,IAA/B,CAAoCwlB,GAApC,CAAJ,CAA6C,CACzCA,GAAG,EAAI,IAAMlY,EAAb,CACH,CACJ,CACDgY,GAAG,CAAC3oB,SAAJ,CAAgBK,KAAK,CAACiQ,IAAN,CAAWuY,GAAX,CAAhB,CACH,CA3jDyB,CA4jD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhlD8B,CAklD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACInC,QAAQ,CAAC,kBAAUxU,OAAV,CAAmBlS,SAAnB,CAA8B,CACnC,GAAGK,KAAK,CAAC0oB,QAAN,CAAe/oB,SAAf,CAAH,CAA6B,CACzB,MAAOA,UAAS,CAACqD,IAAV,CAAe6O,OAAO,CAAClS,SAAvB,CAAP,CACH,CACDA,SAAS,CAAGK,KAAK,CAACiQ,IAAN,CAAWtQ,SAAX,EAAsBiF,OAAtB,CAA8B,UAA9B,CAAyC,GAAzC,EAA8CI,KAA9C,CAAoD,GAApD,CAAZ,CACA,IAAI,GAAIC,EAAC,CAAG,CAAR,CAAUqL,EAAV,CAAakY,GAAG,CAAG3W,OAAO,CAAClS,SAA/B,CAAyC2Q,EAAE,CAAC3Q,SAAS,CAACsF,CAAC,EAAF,CAArD,EAA4D,CACxD,GAAG,CAAC,GAAIsI,OAAJ,CAAW,MAAQ+C,EAAR,CAAa,KAAxB,CAA8B,GAA9B,EAAmCtN,IAAnC,CAAwCwlB,GAAxC,CAAJ,CAAiD,CAC7C,MAAO,MAAP,CACH,CACJ,CACD,MAAOvjB,EAAC,CAAG,CAAJ,EAAStF,SAAS,CAACwE,MAA1B,CACH,CAlnDyB,CAonD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIwkB,cAAc,CAAC,wBAAUpE,GAAV,CAAe,CAC1BA,GAAG,CAACoE,cAAJ,CAAqBpE,GAAG,CAACoE,cAAJ,EAArB,CAA6CpE,GAAG,CAACqE,WAAJ,CAAkB,KAA/D,CACH,CA/nDyB,CAgoD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIC,WAAW,CAAC,qBAAUhX,OAAV,CAAmBtS,IAAnB,CAAyB,CACjC,GAAGsD,OAAO,CAACa,EAAX,CAAe,CACX;AACA,GAAGnE,IAAI,EAAI,OAAX,CAAmB,CACfA,IAAI,CAAG,QAAUA,IAAjB,CACH,CACDsS,OAAO,CAACzG,KAAR,CAAciJ,OAAd,CAAwBxC,OAAO,CAACzG,KAAR,CAAciJ,OAAd,CAAsBzP,OAAtB,CAA8B,GAAI2I,OAAJ,CAAWhO,IAAI,CAAG,eAAlB,CAAkC,IAAlC,CAA9B,CAAsE,EAAtE,CAAxB,CACH,CAND,IAMK,CACD,GAAIsS,OAAO,CAACzG,KAAR,CAAc0d,cAAlB,CAAkC,CAC9BjX,OAAO,CAACzG,KAAR,CAAc0d,cAAd,CAA8BvpB,IAA9B,EACH,CAFD,IAEM,CACFsS,OAAO,CAACzG,KAAR,CAAcwc,eAAd,CAA+B5nB,KAAK,CAAC2Q,kBAAN,CAAyBpR,IAAzB,CAA/B,EACH,CACJ,CAGD,GAAI,CAACsS,OAAO,CAACzG,KAAR,CAAciJ,OAAnB,CAA4B,CACxB+L,QAAQ,CAACoH,gBAAT,CAA0B3V,OAA1B,CAAmC,CAAC,OAAD,CAAnC,EACH,CACJ,CAxqDyB,CAyqD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI9O,QAAQ,CAAC,kBAAU8O,OAAV,CAAmBtS,IAAnB,CAAyB,CAC9B,GAAIuF,MAAK,CAAG+M,OAAO,CAACzG,KAAR,CAAepL,KAAK,CAAC2Q,kBAAN,CAAyBpR,IAAzB,CAAf,CAAZ,CACA,MAAOS,MAAK,CAACqS,QAAN,CAAe9S,IAAf,CAAqBuF,KAArB,CAAP,CACH,CApsDyB,CAqsD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI7B,QAAQ,CAAC,kBAAU4O,OAAV,CAAmBtS,IAAnB,CAAyBuF,KAAzB,CAAgC,CACrC+M,OAAO,CAACzG,KAAR,CAAcpL,KAAK,CAAC2Q,kBAAN,CAAyBpR,IAAzB,CAAd,EAAgDuF,KAAhD,CACA,GAAG,CAAC9E,KAAK,CAACiQ,IAAN,CAAW4B,OAAO,CAACzG,KAAR,CAAciJ,OAAzB,CAAJ,CAAsC,CAClC,KAAKmT,gBAAL,CAAsB3V,OAAtB,CAA8B,OAA9B,EACH,CACJ,CAluDyB,CAmuD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIkX,SAAS,CAAC,mBAAUlX,OAAV,CAAmBmX,MAAnB,CAA2B,CACjC,IAAK,GAAIzpB,KAAT,GAAiBypB,OAAjB,CAAyB,CACrB,GAAIA,MAAM,CAAC/a,cAAP,CAAsB1O,IAAtB,CAAJ,CAAiC,CAC7B6gB,QAAQ,CAACnd,QAAT,CAAkB4O,OAAlB,CAA2BtS,IAA3B,CAAiCypB,MAAM,CAACzpB,IAAD,CAAvC,EACH,CACJ,CACJ,CAlwDyB,CAmwD1B;AACJ;AACA;AACA;AACA,OACI0pB,eAAe,CAAC,yBAAUvnB,IAAV,CAAgB,CAC5B,IAAK,GAAIuD,EAAC,CAAG,CAAR,CAAWqL,EAAX,CAAe4Y,KAAK,CAAGxnB,IAAI,CAAC+E,oBAAL,CAA0B,GAA1B,CAA5B,CAA4D6J,EAAE,CAAG4Y,KAAK,CAACjkB,CAAC,EAAF,CAAtE,EAA8E,CAC1EqL,EAAE,CAACsX,eAAH,CAAmB,YAAnB,EACH,CACDlmB,IAAI,CAACkmB,eAAL,CAAqB,YAArB,EACH,CA7wDyB,CA8wD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhyD8B,CAkyD1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIuB,aAAa,CAAC,uBAAUznB,IAAV,CAAgByN,EAAhB,CAAoB,CAC9B,GAAI7I,MAAK,CAAG,CAAZ,CAAe8iB,KAAK,CAAG1nB,IAAI,CAACY,UAA5B,CACA6M,EAAE,CAAGA,EAAE,EAAI,UAAY,CACnB,MAAO,EAAP,CACH,CAFD,CAGA,MAAOia,KAAP,CAAc,CACV,GAAIja,EAAE,CAACia,KAAD,CAAN,CAAe,CACX9iB,KAAK,GACR,CACD8iB,KAAK,CAAGA,KAAK,CAAC9lB,WAAd,CACH,CACD,MAAOgD,MAAP,CACH,CAt0DyB,CAw0D1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI+iB,WAAW,CAAC,qBAAU3nB,IAAV,CAAgB,CACxB,MAAO,CAACA,IAAI,CAACY,UAAN,EAAoB8d,QAAQ,CAAC+I,aAAT,CAAuBznB,IAAvB,CAA6B,SAAUA,IAAV,CAAgB,CACpE,MAAQ,CAAC0e,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAD,EAAwB,CAAC0e,QAAQ,CAAC0C,cAAT,CAAwBphB,IAAxB,CAAzB,EAA0D,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAnE,CACH,CAF0B,GAErB,CAFN,CAGH,CAt1DyB,CAu1D1B6nB,gBAAgB,CAAC,0BAAUL,KAAV,CAAiB,CAC9B,GAAIxnB,KAAJ,CACA,MAAOA,IAAI,CAAGwnB,KAAK,CAAChX,GAAN,EAAd,CAA2B,CACvBkO,QAAQ,CAACoH,gBAAT,CAA0B9lB,IAA1B,CAAgC,CAAC,OAAD,CAAhC,EACH,CACJ,CA51DyB,CA61D1B;AACJ;AACA;AACA;AACA;AACA;AACA,OACI8nB,YAAY,CAAC,sBAAU9nB,IAAV,CAAgBiS,GAAhB,CAAqBuQ,SAArB,CAAgC,CACzC,GAAIuF,gBAAe,CAAG,QAAlBA,gBAAkB,EAAY,CAC1B,GAAIpY,IAAG,CAAGsC,GAAG,CAACzT,QAAd,CACIwpB,IAAI,CAAGrY,GAAG,CAACjF,UAAJ,EAAkB,YAD7B,CAEA,MAAO,CACHud,KAAK,CAAC,CAAED,IAAI,CAAGrY,GAAG,CAACuC,eAAJ,CAAoBgW,WAAvB,CAAqCvY,GAAG,CAAC7K,IAAJ,CAASojB,WAApD,GAAqE,CADxE,CAEHC,MAAM,CAAC,CAAEH,IAAI,CAAGrY,GAAG,CAACuC,eAAJ,CAAoBkW,YAAvB,CAAsCzY,GAAG,CAAC7K,IAAJ,CAASsjB,YAArD,GAAuE,CAF3E,CAAP,CAIH,CAPL,CAQIC,iBAAiB,CAAG,QAApBA,kBAAoB,CAAUpW,GAAV,CAAe,CAC/B,GAAI,eAAiBA,IAArB,CAA0B,CACtB,MAAO,CACH/E,CAAC,CAAC+E,GAAG,CAACqW,WAAJ,EAAmB,CADlB,CAEHhG,CAAC,CAACrQ,GAAG,CAACsW,WAAJ,EAAmB,CAFlB,CAAP,CAIH,CALD,IAMK,CACD,GAAI5Y,IAAG,CAAGsC,GAAG,CAACzT,QAAd,CACA,MAAO,CACH0O,CAAC,CAACyC,GAAG,CAACuC,eAAJ,CAAoBsW,UAApB,EAAkC7Y,GAAG,CAAC7K,IAAJ,CAAS0jB,UAA3C,EAAyD,CADxD,CAEHlG,CAAC,CAAC3S,GAAG,CAACuC,eAAJ,CAAoBuW,SAApB,EAAiC9Y,GAAG,CAAC7K,IAAJ,CAAS2jB,SAA1C,EAAuD,CAFtD,CAAP,CAIH,CACJ,CAtBL,CAuBA,GAAIC,UAAS,CAAGX,eAAe,GAAGI,MAAlC,CAA0CnG,MAAM,CAAG0G,SAAS,CAAG,CAAC,CAAb,CAAiBlG,SAApE,CACAR,MAAM,EAAKhiB,IAAI,CAACwmB,YAAL,EAAqB,CAAhC,CACA,GAAImC,gBAAe,CAAGjK,QAAQ,CAAC2D,KAAT,CAAeriB,IAAf,CAAtB,CACAgiB,MAAM,EAAI2G,eAAe,CAACrG,CAA1B,CACA,GAAIsG,cAAa,CAAGP,iBAAiB,CAACpW,GAAD,CAAjB,CAAuBqQ,CAA3C,CACA;AACA,GAAIN,MAAM,CAAG4G,aAAT,EAA0B5G,MAAM,CAAG4G,aAAa,CAAGF,SAAvD,CAAkE,CAC9DzW,GAAG,CAAC4W,QAAJ,CAAa,CAAb,CAAgB7G,MAAM,EAAIA,MAAM,CAAG,CAAT,CAAa,CAAC,EAAd,CAAmB,EAAvB,CAAtB,EACH,CACJ,CAr4DyB,CAs4D1B;AACJ;AACA;AACA;AACA;AACA,OACI4F,IAAI,CAAC,cAAU5nB,IAAV,CAAgB,CACjB,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBzS,IAAI,CAACC,OAAL,EAAgB,IAA7C,CACH,CA94DyB,CA+4D1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,OACI6oB,UAAU,CAAC,oBAAU9oB,IAAV,CAAe+oB,SAAf,CAA0B,CACjC,GAAG/oB,IAAI,CAACyS,QAAL,EAAiB,CAApB,CACI,MAAO,MAAP,CACJ,GAAInV,KAAI,CAAG0C,IAAI,CAAC+hB,SAAhB,CACA,GAAGgH,SAAH,CAAa,CACT,MAAO,IAAIld,OAAJ,CAAW,IAAM6S,QAAQ,CAACY,QAA1B,EAAoChe,IAApC,CAAyChE,IAAzC,CAAP,CACH,CACD,MAAO,CAACA,IAAI,CAAC4F,OAAL,CAAa,GAAI2I,OAAJ,CAAW6S,QAAQ,CAACY,QAApB,CAA6B,GAA7B,CAAb,CAAgD,EAAhD,EAAoD7c,MAA5D,CACH,CA/5DyB,CAg6D1BumB,cAAc,CAAC,wBAAUC,KAAV,CAAiB,CAC5B,GAAIC,SAAQ,CAAGD,KAAK,CAACE,UAAN,EAAf,CACIC,IAAI,CAAG,CADX,CAEInb,KAAK,CAAGib,QAAQ,CAACG,cAFrB,CAGItnB,GAHJ,CAIA,GAAGkM,KAAK,CAACwE,QAAN,EAAkB,CAAlB,EAAuBxE,KAAK,CAACwW,UAAN,CAAiByE,QAAQ,CAACI,WAA1B,CAA1B,CAAiE,CAC7Drb,KAAK,CAAGA,KAAK,CAACwW,UAAN,CAAiByE,QAAQ,CAACI,WAA1B,CAAR,CACA,GAAI3R,IAAG,CAAG1J,KAAK,CAACgS,eAAhB,CACA,MAAMtI,GAAG,EAAI+G,QAAQ,CAACoK,UAAT,CAAoBnR,GAApB,CAAb,CAAsC,CAClC1J,KAAK,CAAG0J,GAAR,CACAA,GAAG,CAAGA,GAAG,CAACsI,eAAV,CACH,CACJ,CACD,GAAG,KAAK6I,UAAL,CAAgB7a,KAAhB,CAAsB,IAAtB,GAA+Bib,QAAQ,CAACI,WAAT,EAAwB,CAA1D,CAA4D,CACxDJ,QAAQ,CAACK,cAAT,CAAwBtb,KAAxB,EACAA,KAAK,CAAGib,QAAQ,CAACG,cAAjB,CACH,CAED,MAAOpb,KAAK,EAAIyQ,QAAQ,CAACoK,UAAT,CAAoB7a,KAApB,CAAhB,CAA4C,CACxClM,GAAG,CAAGkM,KAAN,CACAA,KAAK,CAAGA,KAAK,CAACgS,eAAd,CACH,CACD,GAAIle,GAAJ,CAAS,CACLmnB,QAAQ,CAACK,cAAT,CAAwBxnB,GAAxB,EACAkM,KAAK,CAAGib,QAAQ,CAACG,cAAjB,CACH,CACD,GAAIpb,KAAK,CAACwE,QAAN,EAAkB,CAAlB,EAAuBiM,QAAQ,CAACiJ,WAAT,CAAqB1Z,KAArB,CAAvB,EAAsDib,QAAQ,CAACI,WAAT,EAAwB,CAAlF,CAAqF,CACjFJ,QAAQ,CAACM,QAAT,CAAkBvb,KAAlB,CAAyB,CAAzB,EAA4Bwb,QAA5B,CAAqC,IAArC,EACH,CACD,MAAO,CAACP,QAAQ,CAACI,WAAjB,CAA8B,CAC1Brb,KAAK,CAAGib,QAAQ,CAACG,cAAjB,CACA,GAAI3K,QAAQ,CAACsF,UAAT,CAAoB/V,KAApB,GAA8ByQ,QAAQ,CAAC4B,MAAT,CAAgBrS,KAAhB,CAAlC,CAA0D,CACtDmb,IAAI,CAAG,CAAP,CACA,MACH,CACD,GAAIzR,IAAG,CAAGuR,QAAQ,CAACG,cAAT,CAAwBpJ,eAAlC,CACIhe,OADJ,CAEA,GAAI,CAAC0V,GAAL,CAAU,CACNuR,QAAQ,CAACK,cAAT,CAAwBL,QAAQ,CAACG,cAAjC,EACH,CAFD,IAEO,CACH,MAAO1R,GAAG,EAAI+G,QAAQ,CAACoK,UAAT,CAAoBnR,GAApB,CAAd,CAAwC,CACpC1V,OAAO,CAAG0V,GAAV,CACAA,GAAG,CAAGA,GAAG,CAACsI,eAAV,CACH,CACD,GAAIhe,OAAJ,CAAa,CACTinB,QAAQ,CAACK,cAAT,CAAwBtnB,OAAxB,EACH,CAFD,IAEO,CACHinB,QAAQ,CAACK,cAAT,CAAwBL,QAAQ,CAACG,cAAjC,EACH,CACJ,CACJ,CACD,MAAOD,KAAI,EAAI,CAAC1K,QAAQ,CAAC4B,MAAT,CAAgB4I,QAAQ,CAACG,cAAzB,CAAT,CAAoD,CAApD,CAAwD,CAA/D,CACH,CAp9DyB,CAs9D1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAp+D8B,CAs+D1B;AACJ;AACA;AACA;AACA;AACA;AACA,OACIK,YAAY,CAAC,sBAAU1pB,IAAV,CAAe8O,GAAf,CAAoB,CAC7B;AACA,GAAG,CAAC9O,IAAJ,CAAS,CACL,OACH,CACD,GAAGA,IAAI,CAACyS,QAAL,EAAiB,CAApB,CACI,MAAO,EAAP,CACJ3D,GAAG,CAAGA,GAAG,EAAI,GAAIjD,OAAJ,CAAW,eAAiB6S,QAAQ,CAACY,QAA1B,CAAqC,GAAhD,CAAqD,GAArD,CAAb,CAEA,GAAItf,IAAI,CAACmB,OAAO,CAACa,EAAR,CAAa,WAAb,CAA2B,aAA5B,CAAJ,CAA+CkB,OAA/C,CAAuD4L,GAAvD,CAA4D,EAA5D,EAAgErM,MAAhE,CAAyE,CAA7E,CAAgF,CAC5E,MAAO,EAAP,CACH,CACD,IAAK,GAAIf,EAAT,GAAcrB,IAAG,CAACsc,WAAlB,CAA+B,CAC3B,GAAI3c,IAAI,CAAC+E,oBAAL,CAA0BrD,CAA1B,EAA6Be,MAAjC,CAAyC,CACrC,MAAO,EAAP,CACH,CACJ,CACD,MAAO,EAAP,CACH,CA//DyB,CAigE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIknB,iBAAiB,CAAC,2BAAUxZ,OAAV,CAAmB6R,MAAnB,CAA2B,CACzC,GAAI9Q,KAAI,CAAGzN,QAAQ,CAAC0M,OAAO,CAACzG,KAAR,CAAcwH,IAAf,CAAR,CAA+B,CAA1C,CACA,GAAIF,IAAG,CAAGvN,QAAQ,CAAC0M,OAAO,CAACzG,KAAR,CAAcsH,GAAf,CAAR,CAA8B,CAAxC,CACA,GAAI4Y,KAAI,CAAGzZ,OAAO,CAAC0Z,qBAAR,EAAX,CACA,GAAIpH,WAAU,CAAGT,MAAM,CAAC9Q,IAAP,CAAc0Y,IAAI,CAAC1Y,IAApC,CACA,GAAIsR,UAAS,CAAGR,MAAM,CAAChR,GAAP,CAAa4Y,IAAI,CAAC5Y,GAAlC,CACA,GAAIyR,UAAJ,CAAgB,CACZtS,OAAO,CAACzG,KAAR,CAAcwH,IAAd,CAAqBA,IAAI,CAAGuR,UAAP,CAAoB,IAAzC,CACH,CACD,GAAID,SAAJ,CAAe,CACXrS,OAAO,CAACzG,KAAR,CAAcsH,GAAd,CAAoBA,GAAG,CAAGwR,SAAN,CAAkB,IAAtC,CACH,CACJ,CAviEyB,CAyiE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIsH,QAAQ,CAAC,kBAAUna,GAAV,CAAe3P,IAAf,CAAqB,CAC1B,GAAIiC,QAAO,CAAGd,OAAO,CAACa,EAAR,CAAa2N,GAAG,CAACsS,cAAJ,CAAmBvD,QAAQ,CAACY,QAA5B,CAAb,CAAqD3P,GAAG,CAAChR,aAAJ,CAAkB,IAAlB,CAAnE,CACAqB,IAAI,CAACiB,SAAL,CAAiB,EAAjB,CACAjB,IAAI,CAACqC,WAAL,CAAiBJ,OAAjB,EACH,CArkEyB,CAukE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OApmE8B,CAsmE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI8nB,SAAS,CAAC,mBAAUxgB,GAAV,CAAewG,GAAf,CAAoB2H,GAApB,CAAyB,CAC/B,MAAOnO,GAAG,CAAC3I,UAAX,CAAuB,CACnB,GAAI8W,GAAG,EAAI3H,GAAG,CAACnP,UAAf,CAA2B,CACvBmP,GAAG,CAACzN,YAAJ,CAAiBiH,GAAG,CAAC4b,SAArB,CAAgCpV,GAAG,CAACnP,UAApC,EACH,CAFD,IAEO,CACHmP,GAAG,CAAC1N,WAAJ,CAAgBkH,GAAG,CAAC3I,UAApB,EACH,CACJ,CACJ,CA7oEyB,CA+oE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACIopB,eAAe,CAAC,yBAAUhqB,IAAV,CAAgB,CAC5B,MAAOmB,QAAO,CAACa,EAAR,CAAa,aAAaV,IAAb,CAAkBtB,IAAI,CAACiqB,SAAvB,CAAb,CAAiDjqB,IAAI,CAACojB,UAAL,CAAgB3gB,MAAhB,EAA0B,CAAlF,CACH,CAtqEyB,CAwqE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,OACIynB,aAAa,CAAC,uBAAUlqB,IAAV,CAAgB,CAC1B,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBzS,IAAI,CAACmF,YAAL,CAAkB,kBAAlB,CAA7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jB,CAAwBM,kBAAkB,CAAC,IAAD,CAAO,CAAP,CAAjD,CACH,CA5Ba,CA8Bd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQqB,cAAc,CAAC,yBAAY,CACvB,GAAIC,IAAJ,CACA,GAAI,CAAC,KAAK5B,SAAV,CAAqB,CACjBM,kBAAkB,CAAC,IAAD,CAAO,CAAP,CAAlB,CACH,CACD,GAAIpqB,OAAO,CAACC,MAAZ,CAAoB,CAChByrB,GAAG,CAAG,KAAKxD,cAAX,CACA,GAAIwD,GAAG,CAACpa,QAAJ,EAAgB,CAAhB,EAAqB,CAACoa,GAAG,CAAC9K,SAAJ,CAActf,MAAxC,CAAgD,CAC5C,KAAK8mB,cAAL,CAAoBsD,GAApB,EAAyBpD,QAAzB,CAAkC,IAAlC,EACA/K,QAAQ,CAACoC,MAAT,CAAgB+L,GAAhB,EACH,CACJ,CACD,MAAO,KAAP,CACH,CA9Ea,CAgFd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQC,eAAe,CAAC,0BAAY,CACxB,MAAO,MAAK7B,SAAL,CAAiB,IAAjB,CAAwBM,kBAAkB,CAAC,IAAD,CAAO,CAAP,CAAjD,CACH,CA3Ha,CA6Hd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ/B,QAAQ,CAAC,kBAAUxpB,IAAV,CAAgBgiB,MAAhB,CAAwB,CAC7B,MAAOqJ,YAAW,CAAC,IAAD,CAAOrrB,IAAP,CAAagiB,MAAb,CAAqB,IAArB,CAAlB,CACH,CAzKa,CA2Kd;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQ+K,MAAM,CAAC,gBAAU/sB,IAAV,CAAgBgiB,MAAhB,CAAwB,CAC3B,MAAOqJ,YAAW,CAAC,KAAD,CAAQrrB,IAAR,CAAcgiB,MAAd,CAAsB,IAAtB,CAAlB,CACH,CArLa,CAuLd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQgL,aAAa,CAAC,uBAAUhtB,IAAV,CAAgB,CAC1B,MAAO,MAAKwpB,QAAL,CAAcxpB,IAAI,CAACE,UAAnB,CAA+Bwe,QAAQ,CAACoB,YAAT,CAAsB9f,IAAtB,EAA8B,CAA7D,CAAP,CACH,CA/Ma,CAiNd;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQupB,cAAc,CAAC,wBAAUvpB,IAAV,CAAgB,CAC3B,MAAO,MAAKwpB,QAAL,CAAcxpB,IAAI,CAACE,UAAnB,CAA+Bwe,QAAQ,CAACoB,YAAT,CAAsB9f,IAAtB,CAA/B,CAAP,CACH,CA3Na,CA6Nd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQitB,WAAW,CAAC,qBAAUjtB,IAAV,CAAgB,CACxB,MAAO,MAAK+sB,MAAL,CAAY/sB,IAAI,CAACE,UAAjB,CAA6Bwe,QAAQ,CAACoB,YAAT,CAAsB9f,IAAtB,EAA8B,CAA3D,CAAP,CACH,CAtPa,CAwPd;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQktB,YAAY,CAAC,sBAAUltB,IAAV,CAAgB,CACzB,MAAO,MAAK+sB,MAAL,CAAY/sB,IAAI,CAACE,UAAjB,CAA6Bwe,QAAQ,CAACoB,YAAT,CAAsB9f,IAAtB,CAA7B,CAAP,CACH,CAlQa,CAoQd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQmtB,eAAe,CAAC,yBAAUntB,IAAV,CAAgB,CAC5B,MAAO,MAAKwpB,QAAL,CAAcxpB,IAAd,CAAoB,CAApB,CAAP,CACH,CA9Ra,CAgSd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQotB,cAAc,CAAC,wBAAUptB,IAAV,CAAgB,CAC3B,MAAO,MAAKwpB,QAAL,CAAcxpB,IAAd,CAAoBA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,CAAqBzS,IAAI,CAAC+hB,SAAL,CAAetf,MAApC,CAA6CzC,IAAI,CAACykB,UAAL,CAAgBhiB,MAAjF,CAAP,CACH,CA3Sa,CA6Sd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ4qB,aAAa,CAAC,uBAAUrtB,IAAV,CAAgB,CAC1B,MAAO,MAAK+sB,MAAL,CAAY/sB,IAAZ,CAAkB,CAAlB,CAAP,CACH,CAxTa,CA0Td;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQstB,YAAY,CAAC,sBAAUttB,IAAV,CAAgB,CACzB,MAAO,MAAK+sB,MAAL,CAAY/sB,IAAZ,CAAkBA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,CAAqBzS,IAAI,CAAC+hB,SAAL,CAAetf,MAApC,CAA6CzC,IAAI,CAACykB,UAAL,CAAgBhiB,MAA/E,CAAP,CACH,CArUa,CAuUd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ8qB,UAAU,CAAC,oBAAUvtB,IAAV,CAAgB,CACvB,MAAO,MAAKupB,cAAL,CAAoBvpB,IAApB,EAA0BitB,WAA1B,CAAsCjtB,IAAtC,CAAP,CACH,CAhWa,CAkWd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAthBsB,CAwhBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAnjBsB,CAqjBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQgiB,iBAAiB,CAAC,2BAAUpB,WAAV,CAAuBN,cAAvB,CAAuC,CACrD,GAAItgB,GAAE,CAAG,IAAT,CACIwO,KAAK,CAAGxO,EAAE,CAAC4pB,cADf,CAEIoC,GAAG,CAAGhsB,EAAE,CAACyrB,YAFb,CAGA,GAAIjd,KAAK,GAAKwd,GAAd,CAAmB,CACf,GAAIpL,WAAW,EAAI+K,aAAa,CAAC,IAAD,CAAhC,CAAwC,CACpCnd,KAAK,CAAGA,KAAK,CAACwW,UAAN,CAAiBhlB,EAAE,CAAC6pB,WAApB,CAAR,CACA,GAAGrb,KAAK,CAACwE,QAAN,EAAkB,CAArB,CACI,MAAOxE,MAAP,CACP,CACD;AACA,MAAO8R,eAAc,EAAI9R,KAAK,CAACwE,QAAN,EAAkB,CAApC,CAAwCxE,KAAK,CAAC/N,UAA9C,CAA2D+N,KAAlE,CACH,CACD,MAAOyQ,SAAQ,CAAC+C,iBAAT,CAA2BxT,KAA3B,CAAkCwd,GAAlC,CAAP,CACH,CAjmBa,CAmmBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAvnBsB,CAynBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQmC,YAAY,CAAC,sBAAUF,SAAV,CAAqB,CAC9B,KAAKG,gBAAL,GACA,GAAI5f,MAAK,CAAG,KAAKob,cAAjB,CACIrH,MAAM,CAAG,KAAKsH,WADlB,CAEI2B,SAAS,CAAG,KAAKA,SAFrB,CAGIQ,GAAG,CAAG,KAAKP,YAHf,CAIA,GAAIjd,KAAK,CAACwE,QAAN,EAAkB,CAAtB,CAAyB,CACrB,GAAIuP,MAAM,EAAI,CAAd,CAAiB,CACb,KAAKuH,cAAL,CAAoBtb,KAApB,EACH,CAFD,IAEO,CACH,GAAI+T,MAAM,EAAI/T,KAAK,CAAC8T,SAAN,CAAgBtf,MAA9B,CAAsC,CAClC,KAAKuqB,aAAL,CAAmB/e,KAAnB,EACH,CAFD,IAEO,CACH,GAAI6f,SAAQ,CAAGpP,QAAQ,CAACpb,KAAT,CAAe2K,KAAf,CAAsB+T,MAAtB,CAAf,CACA;AACA,GAAI/T,KAAK,GAAKwd,GAAd,CAAmB,CACf,KAAKsB,MAAL,CAAYe,QAAZ,CAAsB,KAAK3C,SAAL,CAAiBnJ,MAAvC,EACH,CAFD,IAEO,IAAI/T,KAAK,CAAC/N,UAAN,GAAqBurB,GAAzB,CAA8B,CACjC,KAAKN,SAAL,EAAkB,CAAlB,CACH,CACD,KAAK5B,cAAL,CAAoBuE,QAApB,EACH,CACJ,CACD,GAAI7C,SAAJ,CAAe,CACX,MAAO,MAAKxB,QAAL,CAAc,IAAd,CAAP,CACH,CACJ,CACD,GAAI,CAACiE,SAAL,CAAgB,CACZ1L,MAAM,CAAG,KAAKmJ,SAAd,CACAM,GAAG,CAAG,KAAKP,YAAX,CACA,GAAIO,GAAG,CAAChZ,QAAJ,EAAgB,CAApB,CAAuB,CACnB,GAAIuP,MAAM,EAAI,CAAd,CAAiB,CACb,KAAKkL,YAAL,CAAkBzB,GAAlB,EACH,CAFD,IAEO,CACHzJ,MAAM,CAAGyJ,GAAG,CAAC1J,SAAJ,CAActf,MAAvB,EAAiCic,QAAQ,CAACpb,KAAT,CAAemoB,GAAf,CAAoBzJ,MAApB,CAAjC,CACA,KAAKiL,WAAL,CAAiBxB,GAAjB,EACH,CACJ,CACJ,CACD,MAAO,KAAP,CACH,CAxrBa,CA0rBd;AACR;AACA;AACA;AACA;AACA,WA/rBsB,CAisBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQoC,gBAAgB,CAAC,0BAAUE,eAAV,CAA2B,CACxC,QAASC,OAAT,CAAgB7c,CAAhB,CAAmB+C,CAAnB,CAAsB,CAClB,GAAI+Z,UAAS,CAAG9c,CAAC,CAAC+C,CAAC,CAAG,WAAL,CAAjB,CACI8N,MAAM,CAAG7Q,CAAC,CAAC+C,CAAC,CAAG,QAAL,CADd,CAEA,GAAI+Z,SAAS,CAACxb,QAAV,EAAsB,CAA1B,CAA6B,CACzB,GAAI,CAACuP,MAAL,CAAa,CACT7Q,CAAC,CAAC,MAAQ+C,CAAC,CAAChR,OAAF,CAAU,MAAV,CAAkB,SAAUC,CAAV,CAAa,CACrC,MAAOA,EAAC,CAACQ,WAAF,EAAP,CACH,CAFS,CAAR,CAEG,QAFJ,CAAD,CAEesqB,SAFf,EAGH,CAJD,IAIO,IAAIjM,MAAM,EAAIiM,SAAS,CAAClM,SAAV,CAAoBtf,MAAlC,CAA0C,CAC7C0O,CAAC,CAAC,MAAQ+C,CAAC,CAAChR,OAAF,CAAU,MAAV,CAAkB,SAAUC,CAAV,CAAa,CACrC,MAAOA,EAAC,CAACQ,WAAF,EAAP,CACH,CAFS,CAAR,CAEG,OAFJ,CAAD,CAEesqB,SAFf,EAGH,CACJ,CACJ,CAED,GAAIF,eAAe,EAAI,CAAC,KAAK9C,SAA7B,CAAwC,CACpC+C,MAAM,CAAC,IAAD,CAAO,OAAP,CAAN,CACAA,MAAM,CAAC,IAAD,CAAO,KAAP,CAAN,CACH,CACD,MAAO,KAAP,CACH,CA/tBa,CAiuBd;AACR;AACA;AACA;AACA;AACA;AACA,WACQE,UAAU,CAAC,oBAAUluB,IAAV,CAAgB,CACvB,GAAI0nB,MAAK,CAAG1nB,IAAZ,CAAkByC,MAAM,CAAG,CAA3B,CACA,GAAIzC,IAAI,CAACyS,QAAL,EAAiB,EAArB,CAAyB,CACrBiV,KAAK,CAAG1nB,IAAI,CAACY,UAAb,CACA6B,MAAM,CAAGzC,IAAI,CAACykB,UAAL,CAAgBhiB,MAAzB,CACH,CACD,KAAKmrB,YAAL,CAAkB,IAAlB,EACA,GAAI3f,MAAK,CAAG,KAAKob,cAAjB,CACIrH,MAAM,CAAG,KAAKsH,WADlB,CAEA,GAAI6E,SAAQ,CAAGlgB,KAAK,CAACwW,UAAN,CAAkBzC,MAAlB,CAAf,CACA,GAAImM,QAAJ,CAAc,CACVlgB,KAAK,CAAC3L,YAAN,CAAmBtC,IAAnB,CAAyBmuB,QAAzB,EACH,CAFD,IAEO,CACHlgB,KAAK,CAAC5L,WAAN,CAAkBrC,IAAlB,EACH,CACD,GAAI0nB,KAAK,CAACxnB,UAAN,GAAqB,KAAKgrB,YAA9B,CAA4C,CACxC,KAAKC,SAAL,CAAiB,KAAKA,SAAL,CAAiB1oB,MAAlC,CACH,CACD,MAAO,MAAK8mB,cAAL,CAAoB7B,KAApB,CAAP,CACH,CA3vBa,CA6vBd;AACR;AACA;AACA;AACA;AACA,WAlwBsB,CAowBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQ0G,SAAS,CAAC,mBAAUC,KAAV,CAAiBC,UAAjB,CAA6B,CACnC,MAAO,MAAK7E,QAAL,CAAc,CAAC4E,KAAf,EAAsB1X,MAAtB,CAA6B2X,UAA7B,CAAP,CACH,CA9wBa,CAgxBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQC,cAAc,CAAC,wBAAUC,SAAV,CAAqBC,IAArB,CAA2B,CACtC,GAAIC,QAAJ,CACIC,SAAS,CAAG,KAAKnwB,QAAL,CAAcG,aAAd,CAA4B,MAA5B,CADhB,CAEAgwB,SAAS,CAACjlB,KAAV,CAAgBiJ,OAAhB,CAA0B,+BAA1B,CACAgc,SAAS,CAACtsB,WAAV,CAAsB,KAAK7D,QAAL,CAAcyjB,cAAd,CAA6B,QAA7B,CAAtB,EACA0M,SAAS,CAAC1e,EAAV,CAAe,0BAA4Bwe,IAAI,CAAG,EAAH,CAAQ3D,IAAI,EAA5C,CAAf,CAEA,GAAI,CAAC,KAAKG,SAAV,CAAqB,CACjByD,OAAO,CAAGC,SAAS,CAACrK,SAAV,CAAoB,IAApB,CAAV,CACAoK,OAAO,CAACze,EAAR,CAAa,wBAA0Bwe,IAAI,CAAG,EAAH,CAAQ3D,IAAI,EAA1C,CAAb,CACH,CACD,KAAKoD,UAAL,CAAgBS,SAAhB,EACA,GAAID,OAAJ,CAAa,CACT,KAAKjF,QAAL,GAAgByE,UAAhB,CAA2BQ,OAA3B,EAAoCxB,YAApC,CAAiDwB,OAAjD,EACH,CACD,KAAK1B,aAAL,CAAmB2B,SAAnB,EACA,MAAO,CACH1gB,KAAK,CAACugB,SAAS,CAAGG,SAAS,CAAC1e,EAAb,CAAkB0e,SAD9B,CAEHlD,GAAG,CAACiD,OAAO,CAAGF,SAAS,CAAGE,OAAO,CAACze,EAAX,CAAgBye,OAA5B,CAAsC,IAF9C,CAGHze,EAAE,CAACue,SAHA,CAAP,CAKH,CA9yBa,CAgzBd;AACR;AACA;AACA;AACA;AACA;AACA,WACQI,cAAc,CAAC,wBAAUC,QAAV,CAAoB,CAC/B,GAAI5gB,MAAK,CAAG4gB,QAAQ,CAAC5e,EAAT,CAAc,KAAKzR,QAAL,CAAc0R,cAAd,CAA6B2e,QAAQ,CAAC5gB,KAAtC,CAAd,CAA6D4gB,QAAQ,CAAC5gB,KAAlF,CACIwd,GAAG,CAAGoD,QAAQ,CAACpD,GAAT,EAAgBoD,QAAQ,CAAC5e,EAAzB,CAA8B,KAAKzR,QAAL,CAAc0R,cAAd,CAA6B2e,QAAQ,CAACpD,GAAtC,CAA9B,CAA2EoD,QAAQ,CAACpD,GAD9F,CAEA,KAAKlC,cAAL,CAAoBtb,KAApB,EACAyQ,QAAQ,CAACoC,MAAT,CAAgB7S,KAAhB,EACA,GAAIwd,GAAJ,CAAS,CACL,KAAKyB,YAAL,CAAkBzB,GAAlB,EACA/M,QAAQ,CAACoC,MAAT,CAAgB2K,GAAhB,EACH,CAHD,IAGO,CACH,KAAKhC,QAAL,CAAc,IAAd,EACH,CACD,MAAO,KAAP,CACH,CAn0Ba,CAq0Bd;AACR;AACA;AACA;AACA;AACA,WA10BsB,CA40Bd;AACR;AACA;AACA;AACA;AACA;AACA,WACQqF,OAAO,CAAC,iBAAUC,OAAV,CAAmBC,MAAnB,CAA2B,CAC/B,GAAI1O,OAAM,CAAG5B,QAAQ,CAAC4B,MAAtB,CACI3I,GADJ,CACS3X,IADT,CACe+B,GAAG,CAAG,KAAKvD,QAAL,CAAcyjB,cAAd,CAA6B,EAA7B,CADrB,CAEA,GAAI8M,OAAJ,CAAa,CACT/uB,IAAI,CAAG,KAAKqpB,cAAZ,CACA,GAAIrpB,IAAI,CAACyS,QAAL,EAAiB,CAArB,CAAwB,CACpB,GAAIzS,IAAI,CAACykB,UAAL,CAAgB,KAAK6E,WAArB,CAAJ,CAAuC,CACnC3R,GAAG,CAAG3X,IAAI,CAAGA,IAAI,CAACykB,UAAL,CAAgB,KAAK6E,WAArB,CAAb,CACH,CAFD,IAEO,CACHtpB,IAAI,CAACqC,WAAL,CAAiBN,GAAjB,EACA4V,GAAG,CAAG3X,IAAI,CAAG+B,GAAb,CACH,CACJ,CAPD,IAOO,CACH4V,GAAG,CAAG3X,IAAN,CACH,CACD,MAAO,CAAP,CAAU,CACN,GAAI0e,QAAQ,CAACsF,UAAT,CAAoBhkB,IAApB,CAAJ,CAA+B,CAC3BA,IAAI,CAAG2X,GAAP,CACA,MAAO,CAACA,GAAG,CAAG3X,IAAI,CAACigB,eAAZ,GAAgC,CAACvB,QAAQ,CAACsF,UAAT,CAAoBrM,GAApB,CAAxC,CAAkE,CAC9D3X,IAAI,CAAG2X,GAAP,CACH,CACD,KAAK4R,cAAL,CAAoBvpB,IAApB,EACA,MACH,CACD2X,GAAG,CAAG3X,IAAN,CACAA,IAAI,CAAGA,IAAI,CAACE,UAAZ,CACH,CACDF,IAAI,CAAG,KAAKkrB,YAAZ,CACA,GAAIlrB,IAAI,CAACyS,QAAL,EAAiB,CAArB,CAAwB,CACpB,GAAIkF,GAAG,CAAG3X,IAAI,CAACykB,UAAL,CAAgB,KAAK0G,SAArB,CAAV,CAA2C,CACvCnrB,IAAI,CAACsC,YAAL,CAAkBP,GAAlB,CAAuB4V,GAAvB,EACH,CAFD,IAEO,CACH3X,IAAI,CAACqC,WAAL,CAAiBN,GAAjB,EACH,CACD4V,GAAG,CAAG3X,IAAI,CAAG+B,GAAb,CACH,CAPD,IAOO,CACH4V,GAAG,CAAG3X,IAAN,CACH,CACD,MAAO,CAAP,CAAU,CACN,GAAI0e,QAAQ,CAACsF,UAAT,CAAoBhkB,IAApB,CAAJ,CAA+B,CAC3BA,IAAI,CAAG2X,GAAP,CACA,MAAO,CAACA,GAAG,CAAG3X,IAAI,CAAC4B,WAAZ,GAA4B,CAAC8c,QAAQ,CAACsF,UAAT,CAAoBrM,GAApB,CAApC,CAA8D,CAC1D3X,IAAI,CAAG2X,GAAP,CACH,CACD,KAAKsV,WAAL,CAAiBjtB,IAAjB,EACA,MACH,CACD2X,GAAG,CAAG3X,IAAN,CACAA,IAAI,CAAGA,IAAI,CAACE,UAAZ,CACH,CACD,GAAI6B,GAAG,CAAC7B,UAAJ,GAAmB,KAAKgrB,YAA5B,CAA0C,CACtC,KAAKC,SAAL,GACH,CACDzM,QAAQ,CAACoC,MAAT,CAAgB/e,GAAhB,EACH,CAED;AACA,GAAI,CAAC,KAAKkpB,SAAV,CAAqB,CACjB,MAAO,KAAK3B,WAAL,EAAoB,CAA3B,CAA8B,CAC1B,GAAI0F,MAAM,EAAIA,MAAM,CAAC,KAAK3F,cAAN,CAApB,CAA2C,CACvC,MACH,CACD,GAAI/I,MAAM,CAAC,KAAK+I,cAAN,CAAV,CAAiC,CAC7B,MACH,CACD,KAAKE,cAAL,CAAoB,KAAKF,cAAzB,EACH,CACD,MAAO,KAAK8B,SAAL,GAAmB,KAAKD,YAAL,CAAkBzY,QAAlB,EAA8B,CAA9B,CAAkC,KAAKyY,YAAL,CAAkBzG,UAAlB,CAA6BhiB,MAA/D,CAAwE,KAAKyoB,YAAL,CAAkBnJ,SAAlB,CAA4Btf,MAAvH,CAAP,CAAuI,CACnI,GAAIusB,MAAM,EAAIA,MAAM,CAAC,KAAK9D,YAAN,CAApB,CAAyC,CACrC,MACH,CACD,GAAI5K,MAAM,CAAC,KAAK4K,YAAN,CAAV,CAA+B,CAC3B,MACH,CACD,KAAK+B,WAAL,CAAiB,KAAK/B,YAAtB,EACH,CACJ,CACD,MAAO,KAAP,CACH,CAj6Ba,CAk6Bd+D,iBAAiB,CAAC,2BAASvB,SAAT,CAAmB,CACjC,MAAM,CAAChP,QAAQ,CAACsF,UAAT,CAAoB,KAAKqF,cAAzB,CAAP,CAAgD,CAC5C,KAAKE,cAAL,CAAoB,KAAKF,cAAzB,EACH,CACD,GAAG,CAACqE,SAAJ,CAAc,CACV,MAAM,CAAChP,QAAQ,CAACsF,UAAT,CAAoB,KAAKkH,YAAzB,CAAP,CAA8C,CAC1C,KAAK+B,WAAL,CAAiB,KAAK/B,YAAtB,EACH,CACJ,CACD,MAAO,KAAP,CACH,CA56Ba,CA66Bd;AACR;AACA;AACA;AACA;AACA,WACQgE,kBAAkB,CAAC,6BAAY,CAC3B,GAAI,CAAC,KAAKjE,SAAV,CAAqB,CACjB,MAAO,CAACvM,QAAQ,CAAC4B,MAAT,CAAgB,KAAK+I,cAArB,CAAD,EACH,KAAKC,WAAL,EAAoB,KAAKD,cAAL,CAAoB,KAAKA,cAAL,CAAoB5W,QAApB,EAAgC,CAAhC,CAAoC,WAApC,CAAkD,YAAtE,EAAoFhQ,MADrG,EAEH,KAAK4mB,cAAL,CAAoB,KAAKA,cAAL,CAAoB5W,QAApB,EAAgC,CAAhC,CAAoC,WAApC,CAAkD,YAAtE,EAAoFhQ,MAFxF,CAGM,CAEF,KAAKuqB,aAAL,CAAmB,KAAK3D,cAAxB,EACH,CACD,MAAO,CAAC3K,QAAQ,CAAC4B,MAAT,CAAgB,KAAK4K,YAArB,CAAD,EAAuC,CAAC,KAAKC,SAA7C,EACH,KAAKD,YAAL,CAAkB,KAAKA,YAAL,CAAkBzY,QAAlB,EAA8B,CAA9B,CAAkC,WAAlC,CAAgD,YAAlE,EAAgFhQ,MADpF,CAEM,CACF,KAAKyqB,YAAL,CAAkB,KAAKhC,YAAvB,EACH,CACJ,CACD,MAAO,KAAP,CACH,CAn8Ba,CAq8Bd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WA78BsB,CA+8Bd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQiE,gBAAgB,CAAC,0BAAUlvB,OAAV,CAAmBS,KAAnB,CAA0BgO,IAA1B,CAAgC,CAC7C,GAAI,KAAKuc,SAAT,CAAmB,MAAO,KAAP,CACnB,KAAK2C,YAAL,GAAoBkB,OAApB,CAA4B,KAA5B,CACI,SAAU9uB,IAAV,CAAgB,CACZ,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBiM,QAAQ,CAACsF,UAAT,CAAoBhkB,IAApB,CAA7B,CACH,CAHL,EAGOkvB,kBAHP,GAIA,GAAIL,SAAQ,CAAG,KAAKN,cAAL,EAAf,CACI9C,GAAG,CAAGoD,QAAQ,CAACpD,GADnB,CAEIrL,QAAQ,CAAG,QAAXA,SAAW,CAAUpgB,IAAV,CAAgB,CACvB,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,CAAqBzS,IAAI,CAACC,OAAL,CAAaqK,WAAb,IAA8B,IAAnD,CAA0D,CAACoU,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAlE,CACH,CAJL,CAKIgsB,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB2N,QAAQ,CAAC5gB,KAAjC,CAAwC,KAAxC,CAA+CmS,QAA/C,CALd,CAMIpgB,IANJ,CAOI2X,GAPJ,CAQIsR,KAAK,CAAG,KAAKE,UAAL,EARZ,CASA,MAAO6C,OAAO,EAAKtN,QAAQ,CAACc,WAAT,CAAqBwM,OAArB,CAA8BP,GAA9B,EAAqC/M,QAAQ,CAACS,kBAAjE,CAAsF,CAClF,GAAI6M,OAAO,CAACvZ,QAAR,EAAoB,CAApB,EAAyBpS,GAAG,CAACJ,OAAD,CAAH,CAAa+rB,OAAO,CAAC/rB,OAArB,CAA7B,CAA4D,CACxDgpB,KAAK,CAACM,cAAN,CAAqByC,OAArB,EACAhsB,IAAI,CAAGgsB,OAAP,CACA,MAAOhsB,IAAI,GAAKA,IAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBpS,GAAG,CAACJ,OAAD,CAAH,CAAaD,IAAI,CAACC,OAAlB,CAA3B,CAAJ,EAA8DD,IAAI,GAAKyrB,GAA9E,CAAmF,CAC/E9T,GAAG,CAAG3X,IAAN,CACAA,IAAI,CAAG0e,QAAQ,CAACwC,cAAT,CAAwBlhB,IAAxB,CAA8BA,IAAI,CAACyS,QAAL,EAAiB,CAA/C,CAAkD,IAAlD,CAAwD,SAAUqL,MAAV,CAAkB,CAC7E,MAAOzd,IAAG,CAACJ,OAAD,CAAH,CAAa6d,MAAM,CAAC7d,OAApB,CAAP,CACH,CAFM,CAAP,CAGH,CACD,GAAIyrB,KAAI,CAAGzC,KAAK,CAACgE,WAAN,CAAkBtV,GAAlB,EAAuBmV,eAAvB,EAAX,CAAqDlG,GAArD,CACA,GAAIlY,IAAI,EAAIA,IAAI,CAACjM,MAAL,CAAc,CAA1B,CAA6B,CACzB,GAAI2sB,MAAJ,CAAWpe,GAAX,CACAA,GAAG,CAAGoe,KAAK,CAAG1gB,IAAI,CAAC,CAAD,CAAJ,CAAQ4V,SAAR,CAAkB,KAAlB,CAAd,CACA,IAAK,GAAI/gB,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGF,IAAI,CAACnL,CAAC,EAAF,CAA7B,EAAqC,CACjC6rB,KAAK,CAAC/sB,WAAN,CAAkBuM,EAAE,CAAC0V,SAAH,CAAa,KAAb,CAAlB,EACA8K,KAAK,CAAGA,KAAK,CAACxuB,UAAd,CACH,CACDgmB,GAAG,CAAGwI,KAAN,CACH,CARD,IAQO,CACHxI,GAAG,CAAGqC,KAAK,CAACzqB,QAAN,CAAeG,aAAf,CAA6BsB,OAA7B,CAAN,CACH,CACD,GAAIS,KAAJ,CAAW,CACPge,QAAQ,CAACyH,aAAT,CAAuBS,GAAvB,CAA4BlmB,KAA5B,EACH,CACDkmB,GAAG,CAACvkB,WAAJ,CAAgBqpB,IAAhB,EACAzC,KAAK,CAACiF,UAAN,CAAiBxf,IAAI,CAAGsC,GAAH,CAAS4V,GAA9B,EACA;AACA,GAAIyI,MAAJ,CACA,GAAIpvB,OAAO,EAAI,MAAX,EAAqBS,KAAK,CAACgJ,KAA3B,EAAoC,mBAAmBpI,IAAnB,CAAwBZ,KAAK,CAACgJ,KAA9B,CAApC,GAA6E2lB,KAAK,CAAG3Q,QAAQ,CAAC6B,mBAAT,CAA6BqG,GAA7B,CAAkC,GAAlC,CAAuC,IAAvC,CAArF,CAAJ,CAAwI,CACpIlI,QAAQ,CAACyH,aAAT,CAAuBkJ,KAAvB,CAA8B3uB,KAA9B,EACAge,QAAQ,CAACoC,MAAT,CAAgB8F,GAAhB,CAAqB,IAArB,EACAA,GAAG,CAAGyI,KAAN,CACH,CAJD,IAIO,CACH3Q,QAAQ,CAACsG,YAAT,CAAsB4B,GAAtB,EACAlI,QAAQ,CAACgD,iBAAT,CAA2BkF,GAA3B,EACH,CACD;AACAlI,QAAQ,CAAC8F,UAAT,CAAoBoC,GAApB,CAAyBlmB,KAAzB,EACAsrB,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB0F,GAAxB,CAA6B,KAA7B,CAAoCxG,QAApC,CAAV,CACA1B,QAAQ,CAACoG,aAAT,CAAuB8B,GAAvB,EACA,GAAI5mB,IAAI,GAAKyrB,GAAb,CAAkB,CACd,MACH,CACJ,CA3CD,IA2CO,CACHO,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAiC,IAAjC,CAAuC5L,QAAvC,CAAV,CACH,CACJ,CACD,MAAO,MAAKwO,cAAL,CAAoBC,QAApB,CAAP,CACH,CAniCa,CAqiCd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WA9iCsB,CAgjCd;AACR;AACA;AACA;AACA;AACA;AACA,WACQS,iBAAiB,CAAC,2BAAU9O,QAAV,CAAoB,CAClC,GAAI,KAAKyK,SAAT,CAAmB,MAAO,KAAP,CACnBzK,QAAQ,CAAGliB,KAAK,CAACqQ,OAAN,CAAc6R,QAAd,EAA0BA,QAA1B,CAAqC,CAACA,QAAD,CAAhD,CACA,KAAKiN,cAAL,GAAsByB,kBAAtB,GACA,GAAIjhB,MAAK,CAAG,KAAKob,cAAjB,CAAiCoC,GAAG,CAAG,KAAKP,YAA5C,CACA,MAAO,CAAP,CAAU,CACN,GAAIjd,KAAK,CAACwE,QAAN,EAAkB,CAAtB,CAAyB,CACrB,GAAInU,KAAK,CAACqG,OAAN,CAAc6b,QAAd,CAAwBvS,KAAK,CAAChO,OAAN,CAAcqK,WAAd,EAAxB,EAAuD,CAAC,CAA5D,CAA+D,CAC3D,MACH,CACD,GAAI2D,KAAK,CAAChO,OAAN,CAAcqK,WAAd,IAA+B,MAAnC,CAA2C,CACvC2D,KAAK,CAAG,IAAR,CACA,MACH,CACJ,CACDA,KAAK,CAAGA,KAAK,CAAC/N,UAAd,CACH,CACD,MAAO,CAAP,CAAU,CACN,GAAIurB,GAAG,CAAChZ,QAAJ,EAAgB,CAApB,CAAuB,CACnB,GAAInU,KAAK,CAACqG,OAAN,CAAc6b,QAAd,CAAwBiL,GAAG,CAACxrB,OAAJ,CAAYqK,WAAZ,EAAxB,EAAqD,CAAC,CAA1D,CAA6D,CACzD,MACH,CACD,GAAImhB,GAAG,CAACxrB,OAAJ,CAAYqK,WAAZ,IAA6B,MAAjC,CAAyC,CACrCmhB,GAAG,CAAG,IAAN,CACA,MACH,CACJ,CACDA,GAAG,CAAGA,GAAG,CAACvrB,UAAV,CACH,CACD,GAAI2uB,SAAQ,CAAG,KAAKN,cAAL,EAAf,CACI7C,IADJ,CAEIxC,QAFJ,CAGA,GAAIjb,KAAJ,CAAW,CACPib,QAAQ,CAAG,KAAKC,UAAL,GAAkB+D,YAAlB,CAA+B2B,QAAQ,CAAC5gB,KAAxC,EAA+Csb,cAA/C,CAA8Dtb,KAA9D,CAAX,CACAyd,IAAI,CAAGxC,QAAQ,CAAC4D,eAAT,EAAP,CACA5D,QAAQ,CAACgF,UAAT,CAAoBxC,IAApB,EACAhN,QAAQ,CAACgD,iBAAT,CAA2BzT,KAA3B,CAAkC,IAAlC,EACAA,KAAK,CAAC/N,UAAN,CAAiBoC,YAAjB,CAA8BusB,QAAQ,CAAC5gB,KAAvC,CAA8CA,KAA9C,EACH,CACD,GAAIwd,GAAJ,CAAS,CACLvC,QAAQ,CAAG,KAAKC,UAAL,GAAkB6D,aAAlB,CAAgC6B,QAAQ,CAACpD,GAAzC,EAA8CwB,WAA9C,CAA0DxB,GAA1D,CAAX,CACAC,IAAI,CAAGxC,QAAQ,CAAC4D,eAAT,EAAP,CACA5D,QAAQ,CAACgF,UAAT,CAAoBxC,IAApB,EACAhN,QAAQ,CAACgD,iBAAT,CAA2B+J,GAA3B,CAAgC,KAAhC,CAAuC,IAAvC,EACAA,GAAG,CAACvrB,UAAJ,CAAeoC,YAAf,CAA4BusB,QAAQ,CAACpD,GAArC,CAA0CA,GAAG,CAAC7pB,WAA9C,EACH,CACD,GAAIoqB,QAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB2N,QAAQ,CAAC5gB,KAAjC,CAAwC,KAAxC,CAA+C,SAAUjO,IAAV,CAAgB,CACzE,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAxB,CACH,CAFa,CAAd,CAEI9Q,IAFJ,CAGA,MAAOqqB,OAAO,EAAIA,OAAO,GAAK6C,QAAQ,CAACpD,GAAvC,CAA4C,CACxC9pB,IAAI,CAAG+c,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAiC,IAAjC,CAAuC,SAAUhsB,IAAV,CAAgB,CAC1D,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAxB,CACH,CAFM,CAAP,CAGA,GAAInU,KAAK,CAACqG,OAAN,CAAc6b,QAAd,CAAwBwL,OAAO,CAAC/rB,OAAR,CAAgBqK,WAAhB,EAAxB,EAAyD,CAAC,CAA9D,CAAiE,CAC7DoU,QAAQ,CAACoC,MAAT,CAAgBkL,OAAhB,CAAyB,IAAzB,EACH,CACDA,OAAO,CAAGrqB,IAAV,CACH,CACD,MAAO,MAAKitB,cAAL,CAAoBC,QAApB,CAAP,CACH,CAlnCa,CAonCd;AACR;AACA;AACA;AACA,WACQU,aAAa,CAAC,wBAAY,CACtB,GAAIvvB,KAAJ,CACA,GAAI,CAAC,KAAKirB,SAAV,CAAqB,CACjB,GAAIhC,MAAK,CAAG,KAAKE,UAAL,GAAkB+F,kBAAlB,GAAuCzB,cAAvC,EAAZ,CACA,GAAIrC,aAAa,CAACnC,KAAD,CAAjB,CAA0B,CACtB,GAAIjI,MAAK,CAAGiI,KAAK,CAACI,cAAN,CAAqB5E,UAArB,CAAgCwE,KAAK,CAACK,WAAtC,CAAZ,CACA,GAAItI,KAAK,EAAIA,KAAK,CAACvO,QAAN,EAAkB,CAA3B,GAAiCpS,GAAG,CAACI,MAAJ,CAAWugB,KAAK,CAAC/gB,OAAjB,GAA6BI,GAAG,CAACic,SAAJ,CAAc0E,KAAK,CAAC/gB,OAApB,CAA9D,CAAJ,CAAiG,CAC7FD,IAAI,CAAGghB,KAAP,CACH,CACJ,CACJ,CACD,MAAOhhB,KAAP,CACH,CAroCa,CAuoCd;AACR;AACA;AACA;AACA,WA3oCsB,CA4oCV;AACJ2W,MAAM,CAACxV,OAAO,CAACa,EAAR,CAAa,SAAUssB,UAAV,CAAsBkB,SAAtB,CAAiC,CACjD,GAAIC,YAAJ,CACA,GAAI,CAAC,KAAKxE,SAAV,CACI,KAAKwC,cAAL,GACJ,GAAIztB,KAAI,CAAG,KAAKuvB,aAAL,EAAX,CACA,GAAIvvB,IAAI,EAAI,CAACwvB,SAAb,CAAwB,CACpB,GAAI,CACAC,WAAW,CAAG,KAAKjxB,QAAL,CAAcsG,IAAd,CAAmB4qB,kBAAnB,EAAd,CACAD,WAAW,CAACE,UAAZ,CAAuB3vB,IAAvB,EACAyvB,WAAW,CAAC9Y,MAAZ,GACH,CAAC,MAAO/G,CAAP,CAAU,CAAE,CACd,MAAO,KAAP,CACH,CACD,GAAIif,SAAQ,CAAG,KAAKN,cAAL,EAAf,CACItgB,KAAK,CAAG4gB,QAAQ,CAAC5gB,KADrB,CAEIwd,GAFJ,CAGAgE,WAAW,CAAG,KAAKjxB,QAAL,CAAcsG,IAAd,CAAmB8qB,eAAnB,EAAd,CACAH,WAAW,CAACI,iBAAZ,CAA8B5hB,KAA9B,EACAwhB,WAAW,CAACK,SAAZ,CAAsB,WAAtB,CAAmC,CAAnC,EACA,GAAI,CAAC,KAAK7E,SAAV,CAAqB,CACjB,GAAI8E,eAAc,CAAG,KAAKvxB,QAAL,CAAcsG,IAAd,CAAmB8qB,eAAnB,EAArB,CACAnE,GAAG,CAAGoD,QAAQ,CAACpD,GAAf,CACAsE,cAAc,CAACF,iBAAf,CAAiCpE,GAAjC,EACAgE,WAAW,CAACpE,WAAZ,CAAwB,UAAxB,CAAoC0E,cAApC,EACH,CALD,IAKO,CACH,GAAI,CAACzB,UAAD,EAAe,KAAKjF,cAAL,CAAoB5W,QAApB,EAAgC,CAAnD,CAAsD,CAClD;AACA,GAAIud,QAAO,CAAG,KAAKxxB,QAAL,CAAcyjB,cAAd,CAA6B3C,QAA7B,CAAd,CACIvd,GAAG,CAAG,KAAKvD,QAAL,CAAcG,aAAd,CAA4B,MAA5B,CADV,CAEAoD,GAAG,CAACM,WAAJ,CAAgB,KAAK7D,QAAL,CAAcyjB,cAAd,CAA6B3C,QAA7B,CAAhB,EACArR,KAAK,CAAC/N,UAAN,CAAiBoC,YAAjB,CAA8BP,GAA9B,CAAmCkM,KAAnC,EACAA,KAAK,CAAC/N,UAAN,CAAiBoC,YAAjB,CAA8B0tB,OAA9B,CAAuC/hB,KAAvC,EACA;AACAue,cAAc,CAAC,KAAKhuB,QAAN,CAAgBwxB,OAAhB,CAAd,CACAjF,QAAQ,CAAGiF,OAAX,CACAhL,YAAY,CAACjjB,GAAD,CAAM,iBAAN,CAAZ,CACAijB,YAAY,CAAC/W,KAAD,CAAQ,aAAR,CAAZ,CACAwhB,WAAW,CAACK,SAAZ,CAAsB,WAAtB,CAAmC,CAAC,CAApC,EACAL,WAAW,CAAChG,QAAZ,CAAqB,IAArB,EACH,CACJ,CACD,KAAKmF,cAAL,CAAoBC,QAApB,EACA9sB,GAAG,EAAI2c,QAAQ,CAACoC,MAAT,CAAgB/e,GAAhB,CAAP,CACA;AACA,GAAI,CACA0tB,WAAW,CAAC9Y,MAAZ,GACH,CAAC,MAAO/G,CAAP,CAAU,CACX,CACD,MAAO,KAAP,CACH,CAjDM,CAiDH,SAAUqgB,iBAAV,CAA6B,CAC7B,QAASC,YAAT,CAAqBxF,GAArB,CAAyB,CAErB,QAASiD,MAAT,CAAe3tB,IAAf,CAAoBgiB,MAApB,CAA2BtK,GAA3B,CAA+B,CAC3B,GAAG1X,IAAI,CAACyS,QAAL,EAAiB,CAAjB,EAAsBzS,IAAI,CAAC+hB,SAAL,CAAetf,MAAf,CAAwBuf,MAAjD,CAAwD,CACpD0I,GAAG,CAAChT,GAAG,CAAG,QAAP,CAAH,CAAsB1X,IAAI,CAAC+hB,SAAL,CAAetf,MAArC,CACH,CACJ,CACDkrB,KAAK,CAACjD,GAAG,CAACrB,cAAL,CAAoBqB,GAAG,CAACpB,WAAxB,CAAoC,OAApC,CAAL,CACAqE,KAAK,CAACjD,GAAG,CAACQ,YAAL,CAAkBR,GAAG,CAACS,SAAtB,CAAgC,KAAhC,CAAL,CACH,CACD,GAAIlZ,IAAG,CAAGyM,QAAQ,CAAC2C,SAAT,CAAmB,KAAK7iB,QAAxB,CAAV,CACI2xB,GAAG,CAAGle,GAAG,CAACme,YAAJ,EADV,CAEIC,OAFJ,CAGA;AACA;AACAlvB,OAAO,CAACwJ,KAAR,CAAgB,KAAKnM,QAAL,CAAcsG,IAAd,CAAmBwrB,KAAnB,EAAhB,CAA6Cre,GAAG,CAACqe,KAAJ,EAA7C,CACA,GAAIH,GAAJ,CAAS,CACLA,GAAG,CAACI,eAAJ,GACA;AACA;AACA,GAAI,KAAKtF,SAAL,EAAkB,CAACgF,iBAAvB,CAA0C,CAC1D;AACA;AACA;AACA;AACA;AACA;AACoB;AACA;AACA;AACA;AACA;AACA,GAAIhiB,MAAK,CAAG,KAAKob,cAAjB,CAAgCrI,KAAK,CAAG/S,KAAxC,CACA,GAAGA,KAAK,CAACwE,QAAN,EAAkB,CAArB,CAAuB,CACnBuO,KAAK,CAAG/S,KAAK,CAACwW,UAAN,CAAiB,KAAK6E,WAAtB,CAAR,CAEH,CACD,GAAI,EAAErb,KAAK,CAACwE,QAAN,EAAkB,CAAlB,EAAuB,KAAK6W,WAA9B,IACCtI,KAAK,CACD,CAACA,KAAK,CAACf,eAAP,EAA0Be,KAAK,CAACf,eAAN,CAAsBxN,QAAtB,EAAkC,CAD3D,CAGD,CAACxE,KAAK,CAACkX,SAAP,EAAoBlX,KAAK,CAACkX,SAAN,CAAgB1S,QAAhB,EAA4B,CAJrD,CAAJ,CAMC,CACG4d,OAAO,CAAG,KAAK7xB,QAAL,CAAcyjB,cAAd,CAA6B3C,QAA7B,CAAV,CACA;AACA,KAAK4O,UAAL,CAAgBmC,OAAhB,EACA7D,cAAc,CAAC,KAAKhuB,QAAN,CAAgB6xB,OAAhB,CAAd,CACArL,YAAY,CAACqL,OAAD,CAAU,iBAAV,CAAZ,CACArL,YAAY,CAACqL,OAAD,CAAU,aAAV,CAAZ,CACAtF,QAAQ,CAAGsF,OAAX,CACA,KAAK7G,QAAL,CAAc6G,OAAd,CAAuBlvB,OAAO,CAACC,MAAR,CAAiB,CAAjB,CAAqB,CAA5C,EAA+CqoB,QAA/C,CAAwD,IAAxD,EACH,CACJ,CACD,GAAIgG,YAAW,CAAG,KAAKjxB,QAAL,CAAcgyB,WAAd,EAAlB,CACA,GAAG,KAAKvF,SAAL,EAAkB9pB,OAAO,CAACoJ,KAA1B,EAAmC,KAAK8e,cAAL,CAAoB5W,QAApB,EAAgC,CAAtE,CAAwE,CACpE,GAAIuO,MAAK,CAAG,KAAKqI,cAAL,CAAoB5E,UAApB,CAA+B,KAAK6E,WAApC,CAAZ,CACA,GAAG,CAACtI,KAAJ,CAAU,CACN;AACAA,KAAK,CAAG,KAAKqI,cAAL,CAAoBlE,SAA5B,CACA,GAAInE,KAAK,EAAItC,QAAQ,CAACkJ,IAAT,CAAc5G,KAAd,CAAb,CAAkC,CAC9B,KAAKuI,cAAL,CAAoBvI,KAApB,EAA2ByI,QAA3B,CAAoC,IAApC,EACH,CACJ,CAND,IAMK,CACD;AACA,MAAMzI,KAAK,EAAItC,QAAQ,CAACsF,UAAT,CAAoBhD,KAApB,CAAf,CAA0C,CACtC,GAAGA,KAAK,CAACvO,QAAN,EAAkB,CAAlB,EAAuBuO,KAAK,CAACyD,UAAN,CAAiB,CAAjB,CAA1B,CAA8C,CAC1CzD,KAAK,CAAGA,KAAK,CAACyD,UAAN,CAAiB,CAAjB,CAAR,CACH,CAFD,IAEK,CACD,MACH,CACJ,CACDzD,KAAK,EAAI,KAAKuI,cAAL,CAAoBvI,KAApB,EAA2ByI,QAA3B,CAAoC,IAApC,CAAT,CACH,CAEJ,CACD;AACAyG,WAAW,CAAC,IAAD,CAAX,CACAT,WAAW,CAACjG,QAAZ,CAAqB,KAAKH,cAA1B,CAA0C,KAAKC,WAA/C,EACAmG,WAAW,CAAC1C,MAAZ,CAAmB,KAAK7B,YAAxB,CAAsC,KAAKC,SAA3C,EACAgF,GAAG,CAACM,QAAJ,CAAahB,WAAb,EACH,CACD,MAAO,KAAP,CACH,CAlxCa,CAoxCd;AACR;AACA;AACA;AACA;AACA,WAzxCsB,CA2xCd;AACR;AACA;AACA;AACA;AACA;AACA,WACQ3H,YAAY,CAAC,sBAAU7V,GAAV,CAAe+P,MAAf,CAAuB,CAChC/P,GAAG,CAAGA,GAAG,CAAGpI,MAAH,CAAY6U,QAAQ,CAAC2C,SAAT,CAAmB,KAAK7iB,QAAxB,CAArB,CACA,GAAIiB,GAAE,CAAG,IAAT,CACI+Z,IAAI,CAAG/Z,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,MAA1B,CADX,CAEA;AACA6a,IAAI,CAACvY,SAAL,CAAiB,QAAjB,CACAxB,EAAE,CAAC0pB,UAAH,GAAgB+E,UAAhB,CAA2B1U,IAA3B,EACAkF,QAAQ,CAACoJ,YAAT,CAAsBtO,IAAtB,CAA4BvH,GAA5B,CAAiC+P,MAAjC,EACAtD,QAAQ,CAACoC,MAAT,CAAgBtH,IAAhB,EACA,MAAO/Z,GAAP,CACH,CA5yCa,CA8yCd;AACR;AACA;AACA;AACA;AACA,WACQixB,UAAU,CAAG,qBAAU,CACnB,GAAIziB,MAAK,CAAG,KAAKob,cAAjB,CACA,GAAG,KAAK4B,SAAL,EAAkBhd,KAAK,CAACwE,QAAN,EAAkB,CAApC,EACIxE,KAAK,CAAC8T,SAAN,CAAgB7e,OAAhB,CAAwB,GAAI2I,OAAJ,CAAW,IAAM6S,QAAQ,CAACY,QAA1B,CAAxB,CAA4D,EAA5D,EAAgE7c,MAAhE,CAAyE,CAAzE,EAA8EwL,KAAK,CAAC8T,SAAN,CAAgBtf,MADrG,CAEK,CACD,MAAO,KAAP,CACH,CACD,MAAO,MAAP,CACH,CA5zCa,CA8zCd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQkuB,aAAa,CAAG,uBAASjD,SAAT,CAAmBkD,SAAnB,CAA6B,CACzC,GAAIC,KAAI,CAAG,EAAX,CAAcpxB,EAAE,CAAG,IAAnB,CAEA,QAASqxB,WAAT,CAAoBC,OAApB,CAA4B,CACxB,GAAI/wB,KAAI,CAAG+wB,OAAO,CAAGtxB,EAAE,CAAC4pB,cAAN,CAAuB5pB,EAAE,CAACyrB,YAA5C,CACA,GAAItK,QAAO,CAAGlC,QAAQ,CAACgC,WAAT,CAAqB1gB,IAArB,CAA0B,IAA1B,CAA+B,SAASA,IAAT,CAAc,CAAC,MAAO,CAAC0e,QAAQ,CAAC4B,MAAT,CAAgBtgB,IAAhB,CAAR,CAA8B,CAA5E,CAAd,CACIgxB,KAAK,CAAG,EADZ,CAEA,IAAI,GAAIztB,EAAC,CAAG,CAAR,CAAUqL,EAAd,CAAiBA,EAAE,CAAGgS,OAAO,CAACrd,CAAC,EAAF,CAA7B,EAAoC,CAChCytB,KAAK,CAAC3rB,IAAN,CAAWqZ,QAAQ,CAACoB,YAAT,CAAsBlR,EAAtB,CAAyBgiB,SAAzB,CAAX,EACH,CACD,GAAIK,WAAU,CAAG,CAAjB,CAEA,GAAGL,SAAH,CAAa,CACT,GAAG5wB,IAAI,CAACyS,QAAL,EAAiB,CAApB,CAAsB,CAClB,GAAIxQ,QAAO,CAAGjC,IAAI,CAACigB,eAAnB,CACA,MAAMhe,OAAO,EAAIA,OAAO,CAACwQ,QAAR,EAAoB,CAArC,CAAuC,CACnCwe,UAAU,EAAIhvB,OAAO,CAAC8f,SAAR,CAAkB7e,OAAlB,CAA0B2nB,WAA1B,CAAsC,EAAtC,EAA0CpoB,MAAxD,CACAR,OAAO,CAAGA,OAAO,CAACge,eAAlB,CACH,CACDgR,UAAU,EAAMF,OAAO,CAAGtxB,EAAE,CAAC6pB,WAAN,CAAoB7pB,EAAE,CAAC0rB,SAA9C,CAAwD;AAC3D,CAPD,IAOK,CACDnrB,IAAI,CAAIA,IAAI,CAACykB,UAAL,CAAiBsM,OAAO,CAAGtxB,EAAE,CAAC6pB,WAAN,CAAoB7pB,EAAE,CAAC0rB,SAA/C,CAAR,CACA,GAAGnrB,IAAH,CAAQ,CACJixB,UAAU,CAAGvS,QAAQ,CAACoB,YAAT,CAAsB9f,IAAtB,CAA2B4wB,SAA3B,CAAb,CACH,CAFD,IAEK,CACD5wB,IAAI,CAAG+wB,OAAO,CAAGtxB,EAAE,CAAC4pB,cAAN,CAAuB5pB,EAAE,CAACyrB,YAAxC,CACA,GAAIxD,MAAK,CAAG1nB,IAAI,CAACY,UAAjB,CACA,MAAM8mB,KAAN,CAAY,CACR,GAAGhJ,QAAQ,CAACoK,UAAT,CAAoBpB,KAApB,CAAH,CAA8B,CAC1BA,KAAK,CAAGA,KAAK,CAAC9lB,WAAd,CACA,SACH,CACDqvB,UAAU,GACV,GAAGvJ,KAAK,CAACjV,QAAN,EAAkB,CAArB,CAAuB,CACnB,MAAOiV,KAAK,EAAIA,KAAK,CAACjV,QAAN,EAAkB,CAAlC,CAAoC,CAChCiV,KAAK,CAAGA,KAAK,CAAC9lB,WAAd,CACH,CACJ,CAJD,IAIK,CACD8lB,KAAK,CAAGA,KAAK,CAAC9lB,WAAd,CACH,CACJ,CACJ,CACJ,CAEJ,CAhCD,IAgCK,CACDqvB,UAAU,CAAGF,OAAO,CAAGrS,QAAQ,CAACoK,UAAT,CAAoB9oB,IAApB,EAA4B,CAA5B,CAAgCP,EAAE,CAAC6pB,WAAtC,CAAqD7pB,EAAE,CAAC0rB,SAA5E,CACH,CACD,GAAG8F,UAAU,CAAG,CAAhB,CAAkB,CACdA,UAAU,CAAG,CAAb,CACH,CACDD,KAAK,CAAC3rB,IAAN,CAAW4rB,UAAX,EACA,MAAOD,MAAP,CACH,CACDH,IAAI,CAACK,YAAL,CAAoBJ,UAAU,CAAC,IAAD,CAA9B,CACA,GAAG,CAACpD,SAAJ,CAAc,CACVmD,IAAI,CAACM,UAAL,CAAkB1xB,EAAE,CAACwrB,SAAH,CAAe,GAAGmG,MAAH,CAAUP,IAAI,CAACK,YAAf,CAAf,CAA8CJ,UAAU,EAA1E,CACH,CACD,MAAOD,KAAP,CACH,CAh5Ca,CAk5Cd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQQ,aAAa,CAAG,uBAASR,IAAT,CAAcnD,SAAd,CAAwB,CACpC,GAAIjuB,GAAE,CAAG,IAAT,CACA,QAAS6xB,QAAT,CAAiB7Z,OAAjB,CAAyBsZ,OAAzB,CAAiC,CAC7B,GAAI9uB,QAAO,CAAGxC,EAAE,CAACjB,QAAH,CAAYsG,IAA1B,CACI5E,UADJ,CACe8hB,MADf,CAEA,IAAI,GAAIze,EAAC,CAAE,CAAP,CAASqL,EAAT,CAAYxC,CAAC,CAACqL,OAAO,CAAChV,MAA1B,CAAiCc,CAAC,CAAC6I,CAAnC,CAAqC7I,CAAC,EAAtC,CAAyC,CACrCqL,EAAE,CAAG6I,OAAO,CAAClU,CAAD,CAAZ,CACArD,UAAU,CAAG+B,OAAb,CACAA,OAAO,CAAGA,OAAO,CAACwiB,UAAR,CAAmB7V,EAAnB,CAAV,CACA,GAAG,CAAC3M,OAAJ,CAAY,CACR+f,MAAM,CAAGpT,EAAT,CACA,MACH,CACJ,CACD,GAAGmiB,OAAH,CAAW,CACP,GAAG9uB,OAAH,CAAW,CACPxC,EAAE,CAAC8pB,cAAH,CAAkBtnB,OAAlB,EACH,CAFD,IAEK,CACDxC,EAAE,CAAC+pB,QAAH,CAAYtpB,UAAZ,CAAuB8hB,MAAvB,EACH,CACJ,CAND,IAMK,CACD,GAAG/f,OAAH,CAAW,CACPxC,EAAE,CAACytB,YAAH,CAAgBjrB,OAAhB,EACH,CAFD,IAEK,CACDxC,EAAE,CAACstB,MAAH,CAAU7sB,UAAV,CAAqB8hB,MAArB,EACH,CACJ,CACJ,CACDsP,OAAO,CAACT,IAAI,CAACK,YAAN,CAAmB,IAAnB,CAAP,CACA,CAACxD,SAAD,EAAcmD,IAAI,CAACM,UAAnB,EAAkCG,OAAO,CAACT,IAAI,CAACM,UAAN,CAAzC,CACA,MAAO1xB,GAAP,CACH,CA58Ca,CA88Cd;AACR;AACA;AACA;AACA;AACA,WACQ8xB,MAAM,CAAG,gBAAS7G,GAAT,CAAa,CAClB,IAAI,GAAIxoB,EAAR,GAAa,KAAb,CAAkB,CACd,GAAG,KAAKqK,cAAL,CAAoBrK,CAApB,CAAH,CAA0B,CACtB,GAAG,KAAKA,CAAL,IAAYwoB,GAAG,CAACxoB,CAAD,CAAlB,CACI,MAAO,MAAP,CACP,CACJ,CACD,MAAO,KAAP,CAEH,CA79Ca,CA+9Cd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAlgDsB,CAogDd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ/B,SAAS,CAAC,mBAASqxB,IAAT,CAAcpR,QAAd,CAAuB,CAC7B,GAAI,KAAK6K,SAAT,CACI,MAAO,KAAP,CACJ,GAAI4D,SAAQ,CAAG,KAAKN,cAAL,EAAf,CACI9C,GAAG,CAAGoD,QAAQ,CAACpD,GADnB,CAEIO,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB2N,QAAQ,CAAC5gB,KAAjC,CAAwC,KAAxC,CAA+CmS,QAA/C,CAFd,CAGA,MAAO4L,OAAO,EAAIA,OAAO,GAAKP,GAAvB,EAA+B/M,QAAQ,CAACc,WAAT,CAAqBwM,OAArB,CAA8BP,GAA9B,EAAqC/M,QAAQ,CAACS,kBAApF,CAAyG,CACrG,GAAIld,QAAO,CAAGyc,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAgC,KAAhC,CAAsC5L,QAAtC,CAAd,CACAoR,IAAI,CAACxF,OAAD,CAAJ,CACAA,OAAO,CAAG/pB,OAAV,CACH,CACD,MAAO,MAAK2sB,cAAL,CAAoBC,QAApB,CAAP,CACH,CA3jDa,CAAlB,CA6jDH,CA9xDD,IAgyDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GA3+LW,CA6+LX;AACA;AACA;AACA;AACA;AACA,GACA,CAAC,UAAY,CAET,QAAS4C,uBAAT,CAAiCxI,KAAjC,CAAwChb,KAAxC,CAAgD,CAC5C,GAAIyjB,SAAQ,CAAGhT,QAAQ,CAACoB,YAAxB,CACAmJ,KAAK,CAAGA,KAAK,CAAC0I,SAAN,EAAR,CACA1I,KAAK,CAACQ,QAAN,CAAgBxb,KAAhB,EACA,GAAI6P,OAAM,CAAGmL,KAAK,CAAC2I,aAAN,EAAb,CACA;AACA,GAAK,CAAC9T,MAAM,CAACmD,aAAP,EAAN,CAA+B,CAC3B,MAAQ,CAACgN,SAAS,CAACnQ,MAAX,CAAmBkE,MAAM,CAAC,CAA1B,CAAR,CACH,CACD,GAAI6P,SAAQ,CAAG/T,MAAM,CAACrc,QAAtB,CACIuf,KADJ,CAEI8Q,SAAS,CAAG7I,KAAK,CAAC0I,SAAN,EAFhB,CAGII,UAAU,CAAG,CAHjB,CAGoBC,QAAQ,CAAGH,QAAQ,CAACpvB,MAAT,CAAkB,CAHjD,CAGoDyL,KAAK,CAAG,CAAC,CAH7D,CAII+jB,QAJJ,CAKA,MAAQF,UAAU,EAAIC,QAAtB,CAAiC,CAC7B9jB,KAAK,CAAGnD,IAAI,CAACqJ,KAAL,CAAY,CAAC2d,UAAU,CAAGC,QAAd,EAA0B,CAAtC,CAAR,CACAhR,KAAK,CAAG6Q,QAAQ,CAAC3jB,KAAD,CAAhB,CACA4jB,SAAS,CAACjC,iBAAV,CAA6B7O,KAA7B,EACA,GAAIkR,SAAQ,CAAGJ,SAAS,CAACK,gBAAV,CAA4B,cAA5B,CAA4ClJ,KAA5C,CAAf,CACA,GAAKiJ,QAAQ,CAAG,CAAhB,CAAoB,CAChBF,QAAQ,CAAG9jB,KAAK,CAAG,CAAnB,CACH,CAFD,IAEO,IAAKgkB,QAAQ,CAAG,CAAhB,CAAoB,CACvBH,UAAU,CAAG7jB,KAAK,CAAG,CAArB,CACH,CAFM,IAEA,CACH;AACA,MAAQ,CAAC+f,SAAS,CAACnQ,MAAX,CAAmBkE,MAAM,CAAC0P,QAAQ,CAAE1Q,KAAF,CAAlC,CAAR,CACH,CACJ,CACD,GAAK9S,KAAK,EAAI,CAAC,CAAf,CAAmB,CACf4jB,SAAS,CAACjC,iBAAV,CAA6B/R,MAA7B,EACAgU,SAAS,CAACzG,WAAV,CAAuB,cAAvB,CAAuCpC,KAAvC,EACAgJ,QAAQ,CAAGH,SAAS,CAACx0B,IAAV,CAAe4F,OAAf,CAAwB,YAAxB,CAAsC,IAAtC,EAA6CT,MAAxD,CACAovB,QAAQ,CAAG/T,MAAM,CAAC2G,UAAlB,CACA,GAAK,CAACwN,QAAN,CAAiB,CACbjR,KAAK,CAAG6Q,QAAQ,CAACA,QAAQ,CAACpvB,MAAT,CAAkB,CAAnB,CAAhB,CACA,MAAQ,CAACwrB,SAAS,CAACjN,KAAX,CAAkBgB,MAAM,CAAChB,KAAK,CAACe,SAAN,CAAgBtf,MAAzC,CAAR,CACH,CAED,GAAIc,EAAC,CAAGsuB,QAAQ,CAACpvB,MAAjB,CACA,MAAQwvB,QAAQ,CAAG,CAAnB,CAAsB,CAClBA,QAAQ,EAAIJ,QAAQ,CAAE,EAAEtuB,CAAJ,CAAR,CAAgBwe,SAAhB,CAA0Btf,MAAtC,CACH,CACD,MAAO,CAACwrB,SAAS,CAAC4D,QAAQ,CAACtuB,CAAD,CAAnB,CAAwBye,MAAM,CAAC,CAACiQ,QAAhC,CAAP,CACH,CACDH,SAAS,CAACrI,QAAV,CAAoByI,QAAQ,CAAG,CAA/B,EACAJ,SAAS,CAACzG,WAAV,CAAuB6G,QAAQ,CAAG,CAAX,CAAe,cAAf,CAAgC,YAAvD,CAAqEjJ,KAArE,EACAgJ,QAAQ,CAAGH,SAAS,CAACx0B,IAAV,CAAe4F,OAAf,CAAwB,YAAxB,CAAsC,IAAtC,EAA6CT,MAAxD,CACA,GAAK,CAACwvB,QAAN,CAAiB,CACb,MAAQ5xB,IAAG,CAACI,MAAJ,CAAWugB,KAAK,CAAC/gB,OAAjB,GAA6BI,GAAG,CAACic,SAAJ,CAAc0E,KAAK,CAAC/gB,OAApB,CAA7B,CACR,CAACguB,SAAS,CAACnQ,MAAX,CAAmBkE,MAAM,CAAC0P,QAAQ,CAAE1Q,KAAF,CAAR,EAAqBkR,QAAQ,CAAG,CAAX,CAAe,CAAf,CAAmB,CAAxC,CAA1B,CADQ,CAER,CAACjE,SAAS,CAACjN,KAAX,CAAkBgB,MAAM,CAACkQ,QAAQ,CAAG,CAAX,CAAe,CAAf,CAAmBlR,KAAK,CAACyD,UAAN,CAAiBhiB,MAA7D,CAFA,CAGH,CACD,MAAQwvB,QAAQ,CAAG,CAAnB,CAAuB,CACnB,GAAI,CACA,GAAIta,IAAG,CAAGqJ,KAAV,CACAA,KAAK,CAAGA,KAAK,CAACkR,QAAQ,CAAG,CAAX,CAAe,iBAAf,CAAmC,aAApC,CAAb,CACAD,QAAQ,EAAIjR,KAAK,CAACe,SAAN,CAAgBtf,MAA5B,CACH,CAAC,MAAQmN,CAAR,CAAY,CACV,MAAO,CAACqe,SAAS,CAACnQ,MAAX,CAAmBkE,MAAM,CAAC0P,QAAQ,CAAE/Z,GAAF,CAAlC,CAAP,CACH,CACJ,CACD,MAAQ,CAACsW,SAAS,CAACjN,KAAX,CAAkBgB,MAAM,CAACkQ,QAAQ,CAAG,CAAX,CAAe,CAACD,QAAhB,CAA2BjR,KAAK,CAACe,SAAN,CAAgBtf,MAAhB,CAAyBwvB,QAA7E,CAAR,CACH,CAED;AACJ;AACA;AACA;AACA;AACA,OACI,QAASG,wBAAT,CAAkCC,OAAlC,CAA2CpJ,KAA3C,CAAmD,CAC/C,GAAKoJ,OAAO,CAACptB,IAAb,CAAoB,CAChBgkB,KAAK,CAACsE,UAAN,CAAkB8E,OAAO,CAACptB,IAAR,CAAc,CAAd,CAAlB,EACH,CAFD,IAEO,CACH,GAAIqtB,GAAE,CAAGb,sBAAsB,CAAEY,OAAF,CAAW,IAAX,CAA/B,CACApJ,KAAK,CAACO,QAAN,CAAgB8I,EAAE,CAACrE,SAAnB,CAA8BqE,EAAE,CAACtQ,MAAjC,EACA,GAAKqQ,OAAO,CAACF,gBAAR,CAA0B,YAA1B,CAAwCE,OAAxC,GAAqD,CAA1D,CAA8D,CAC1DC,EAAE,CAAGb,sBAAsB,CAAEY,OAAF,CAAW,KAAX,CAA3B,CACApJ,KAAK,CAAC8D,MAAN,CAAcuF,EAAE,CAACrE,SAAjB,CAA4BqE,EAAE,CAACtQ,MAA/B,EACH,CACJ,CACD,MAAOiH,MAAP,CACH,CAED;AACJ;AACA;AACA;AACA,OACI,QAASsJ,YAAT,CAAsBpC,GAAtB,CAA4B,CACxB,GAAIkC,QAAJ,CACA;AACA,GAAI,CACAA,OAAO,CAAGlC,GAAG,CAACqC,SAAJ,GAAgBhC,WAAhB,EAAV,CACH,CAAC,MAAQ5gB,CAAR,CAAY,CACV,MAAO,KAAP,CACH,CACD,GAAI6iB,GAAE,CAAGJ,OAAO,CAACptB,IAAR,CAAeotB,OAAO,CAACptB,IAAR,CAAc,CAAd,CAAf,CAAmCotB,OAAO,CAACT,aAAR,EAA5C,CACA,GAAK,CAAEa,EAAE,CAACnR,aAAH,EAAoBmR,EAAtB,IAA+BtC,GAAG,CAAC3xB,QAAxC,CAAmD,CAC/C,MAAO6zB,QAAP,CACH,CACD,MAAO,KAAP,CACH,CAED,GAAIK,UAAS,CAAGtyB,GAAG,CAACsyB,SAAJ,CAAgB,SAAW/iB,GAAX,CAAiB,CAC7C,GAAIlQ,GAAE,CAAG,IAAT,CAAesX,MAAf,CACAtX,EAAE,CAACjB,QAAH,CAAcmR,GAAd,CACA,GAAKxO,OAAO,CAACsK,QAAb,CAAwB,CACpBsL,MAAM,CAAG2H,QAAQ,CAAC2C,SAAT,CAAoB1R,GAApB,EAA0BgjB,YAAnC,CACAjU,QAAQ,CAAChJ,EAAT,CAAaqB,MAAb,CAAqB,kBAArB,CAAyC,UAAY,CACjDtX,EAAE,CAACmzB,WAAH,CAAiBnzB,EAAE,CAACozB,UAAH,EAAjB,CACH,CAFD,EAGAnU,QAAQ,CAAChJ,EAAT,CAAaqB,MAAb,CAAqB,UAArB,CAAiC,UAAY,CACzC,GAAI,CACA,GAAK,CAACwb,WAAW,CAAE9yB,EAAF,CAAZ,EAAsBA,EAAE,CAACmzB,WAA9B,CAA4C,CACxCnzB,EAAE,CAACmzB,WAAH,CAAejc,MAAf,GACH,CACJ,CAAC,MAAQmc,EAAR,CAAa,CACd,CACDrzB,EAAE,CAACmzB,WAAH,CAAiB,IAAjB,CACH,CARD,EASH,CACD7b,MAAM,CAAGpH,GAAG,CAAG,IAAf,CACH,CAnBD,CAqBA+iB,SAAS,CAAC31B,SAAV,CAAsB,CAElBg2B,WAAW,CAAG,qBAASrI,GAAT,CAAasI,QAAb,CAAsB,CAChC,GAAIhzB,KAAI,CAAGmB,OAAO,CAACsK,QAAR,EAAoBunB,QAApB,CAA+BtI,GAAG,CAACzlB,IAAJ,CAAWylB,GAAG,CAACzlB,IAAJ,EAAX,CAAwBylB,GAAG,CAACkH,aAAJ,EAAvD,CAA6ElH,GAAG,CAACrB,cAA5F,CAEA,MAAOrpB,KAAI,GAAK,KAAKxB,QAAL,CAAcsG,IAAvB,EAA+B4Z,QAAQ,CAACwB,KAAT,CAAelgB,IAAf,CAAoB,KAAKxB,QAAzB,CAAtC,CACH,CANiB,CAQlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQg0B,SAAS,CAAC,oBAAY,CAClB,GAAI7iB,IAAG,CAAG,KAAKnR,QAAf,CACA,GAAI,CACA,MAAO,CAACmR,GAAD,CAAO,IAAP,CAAcxO,OAAO,CAACsK,QAAR,CAAmBkE,GAAG,CAACsjB,SAAvB,CAAmCvU,QAAQ,CAAC2C,SAAT,CAAoB1R,GAApB,EAA0BygB,YAA1B,EAAxD,CACH,CAAC,MAAQxgB,CAAR,CAAY,CACV,MAAO,KAAP,CACH,CACJ,CAxBiB,CA0BlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQijB,UAAU,CAAC,qBAAY,CACnB,GAAIR,QAAO,CAAGE,WAAW,CAAE,IAAF,CAAzB,CACA,GAAK,CAACF,OAAN,CAAgB,CACZ,GAAK,KAAKO,WAAV,CAAwB,CACpB,MAAO,MAAKA,WAAZ,CACH,CACJ,CACD,MAAOP,QAAP,CACH,CA3CiB,CA6ClB;AACR;AACA;AACA,WACQnjB,KAAK,CAAC,gBAAY,CACd,KAAK2S,KAAL,GACA,KAAKqR,YAAL,CAAoB,KAAKC,QAAL,EAApB,CACA,KAAKC,mBAAL,CAA2B,KAAKprB,QAAL,EAA3B,CACA,KAAKqrB,uBAAL,CAA+B,KAAKC,mBAAL,EAA/B,CACH,CAtDiB,CAwDlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQA,mBAAmB,CAAC,8BAAY,CAC5B,GAAK,KAAKD,uBAAV,CAAoC,CAChC,MAAO,MAAKA,uBAAZ,CACH,CACD,GAAIplB,MAAK,CAAG,KAAKjG,QAAL,EAAZ,CACA,GAAKiG,KAAL,CAAa,CACT,MAAOyQ,SAAQ,CAACgC,WAAT,CAAsBzS,KAAtB,CAA6B,IAA7B,CAAmC,IAAnC,CAAyC,IAAzC,CAAP,CACH,CACD,MAAO,EAAP,CACH,CA1EiB,CA4ElB;AACR;AACA;AACA,WACQ4T,KAAK,CAAC,gBAAY,CACd,KAAKwR,uBAAL,CAA+B,KAAKH,YAAL,CAAoB,KAAKE,mBAAL,CAA2B,IAA9E,CACH,CAlFiB,CAoFlB;AACR;AACA;AACA,WACQG,OAAO,CAAC,kBAAY,CAChB,GAAI,CACA,GAAGpyB,OAAO,CAACsK,QAAX,CAAoB,CAEhB,GAAIgkB,YAAW,CAAG8C,WAAW,CAAC,IAAD,CAA7B,CACA,MAAO,CAAC,EAAE9C,WAAW,EAAI,KAAKsD,WAAL,CAAiBtD,WAAjB,CAAjB,CAAR,CACH,CAJD,IAIK,CACD,MAAO,CAAC,CAAC,KAAK+C,SAAL,GAAiBgB,UAA1B,CACH,CACJ,CAAC,MAAQ5jB,CAAR,CAAY,CACV,MAAO,MAAP,CACH,CAEJ,CArGiB,CAuGlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQujB,QAAQ,CAAC,mBAAY,CACjB,GAAI1zB,GAAE,CAAG,IAAT,CACA,QAASg0B,QAAT,CAAkBxK,KAAlB,CAA0B,CACtB,GAAIjI,MAAK,CAAGvhB,EAAE,CAACjB,QAAH,CAAYsG,IAAZ,CAAiBlE,UAA7B,CACIqqB,SAAS,CAAGhC,KAAK,CAACgC,SADtB,CAEA,MAAQjK,KAAK,EAAIA,KAAK,CAACpgB,UAAvB,CAAoC,CAChCqoB,KAAK,CAACO,QAAN,CAAgBxI,KAAhB,CAAuB,CAAvB,EACAA,KAAK,CAAGA,KAAK,CAACpgB,UAAd,CACH,CACD,GAAK,CAACqoB,KAAK,CAACI,cAAZ,CAA6B,CACzBJ,KAAK,CAACO,QAAN,CAAgB/pB,EAAE,CAACjB,QAAH,CAAYsG,IAA5B,CAAkC,CAAlC,EACH,CACD,GAAKmmB,SAAL,CAAiB,CACbhC,KAAK,CAACQ,QAAN,CAAgB,IAAhB,EACH,CACJ,CAED,GAAKhqB,EAAE,CAACyzB,YAAH,EAAmB,IAAxB,CAA+B,CAC3B,MAAO,MAAKA,YAAZ,CACH,CACD,GAAIjK,MAAK,CAAG,GAAInf,MAAK,CAAC5M,MAAN,CAAakD,GAAb,CAAiBmsB,KAArB,CAA4B9sB,EAAE,CAACjB,QAA/B,CAAZ,CAEA,GAAK2C,OAAO,CAACsK,QAAb,CAAwB,CACpB,GAAIgkB,YAAW,CAAGhwB,EAAE,CAACozB,UAAH,EAAlB,CACA,GAAKpD,WAAL,CAAmB,CACf;AACA,GAAG,CACC2C,uBAAuB,CAAE3C,WAAF,CAAexG,KAAf,CAAvB,CACH,OAAMrZ,CAAN,CAAQ,CACL6jB,OAAO,CAAExK,KAAF,CAAP,CACH,CAEJ,CARD,IAQO,CACHwK,OAAO,CAAExK,KAAF,CAAP,CACH,CACJ,CAbD,IAaO,CACH,GAAIkH,IAAG,CAAG1wB,EAAE,CAAC+yB,SAAH,EAAV,CACA,GAAKrC,GAAG,EAAIA,GAAG,CAACqD,UAAhB,CAA6B,CACzB,GAAIE,WAAU,CAAGvD,GAAG,CAACwD,UAAJ,CAAgB,CAAhB,CAAjB,CACA,GAAIC,UAAS,CAAGzD,GAAG,CAACwD,UAAJ,CAAgBxD,GAAG,CAACqD,UAAJ,CAAiB,CAAjC,CAAhB,CACAvK,KAAK,CAACO,QAAN,CAAgBkK,UAAU,CAACrK,cAA3B,CAA2CqK,UAAU,CAACpK,WAAtD,EAAoEyD,MAApE,CAA4E6G,SAAS,CAAC1I,YAAtF,CAAoG0I,SAAS,CAACzI,SAA9G,EACA,GAAKlC,KAAK,CAACgC,SAAN,EAAmBvM,QAAQ,CAAC4B,MAAT,CAAiB2I,KAAK,CAACI,cAAvB,CAAnB,EAA8D,CAACJ,KAAK,CAACK,WAA1E,CAAwF,CACpFmK,OAAO,CAAExK,KAAF,CAAP,CACH,CACJ,CAPD,IAOO,CACH;AACA,GAAK,KAAK4K,SAAL,EAAkBnV,QAAQ,CAACwB,KAAT,CAAgB,KAAK2T,SAAL,CAAexK,cAA/B,CAA+C,KAAK7qB,QAApD,CAAvB,CAAuF,CACnF,MAAO,MAAKq1B,SAAZ,CACH,CACDJ,OAAO,CAAExK,KAAF,CAAP,CACH,CACJ,CACD,MAAO,MAAK4K,SAAL,CAAiB5K,KAAxB,CACH,CArKiB,CAuKlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQjhB,QAAQ,CAAC,mBAAY,CACjB,GAAK,KAAKorB,mBAAV,CAAgC,CAC5B,MAAO,MAAKA,mBAAZ,CACH,CACD,GAAInK,MAAK,CAAG9nB,OAAO,CAACsK,QAAR,CAAmB,KAAKonB,UAAL,EAAnB,CAAuC,KAAKM,QAAL,EAAnD,CACIjK,QADJ,CAEIjb,KAFJ,CAEWlM,GAFX,CAEgB+b,MAFhB,CAGA,GAAK3c,OAAO,CAACsK,QAAb,CAAwB,CACpB,GAAK,CAACwd,KAAN,CAAc,CACV;AACA,MAAO,MAAKzqB,QAAL,CAAcsG,IAAd,CAAmBlE,UAA1B,CACH,CACD;AACA,GAAKqoB,KAAK,CAAChkB,IAAX,CAAiB,CACb,MAAOgkB,MAAK,CAAChkB,IAAN,CAAY,CAAZ,CAAP,CACH,CACDikB,QAAQ,CAAGD,KAAK,CAAC0I,SAAN,EAAX,CACA;AACAzI,QAAQ,CAAC5rB,IAAT,CAAcmF,MAAd,CAAuB,CAAvB,EAA4BymB,QAAQ,CAAC4G,SAAT,CAAoB,WAApB,CAAiC,CAAjC,CAA5B,CACA5G,QAAQ,CAACO,QAAT,CAAmB,CAAnB,EACAxb,KAAK,CAAGib,QAAQ,CAAC0I,aAAT,EAAR,CACA9T,MAAM,CAAG/b,GAAG,CAAGknB,KAAK,CAAC2I,aAAN,EAAf,CACA,MAAQ7vB,GAAG,CAAGA,GAAG,CAAC7B,UAAlB,CAA+B,CAC3B,GAAK6B,GAAG,EAAIkM,KAAZ,CAAoB,CAChBA,KAAK,CAAG6P,MAAR,CACA,MACH,CACJ,CACJ,CArBD,IAqBO,CACHmL,KAAK,CAACwE,cAAN,GACAxf,KAAK,CAAGgb,KAAK,CAACI,cAAd,CACA,GAAKpb,KAAK,CAACwE,QAAN,EAAkB,CAAlB,EAAuBxE,KAAK,CAACgT,aAAN,EAA5B,CAAmD,CAC/ChT,KAAK,CAAGA,KAAK,CAACwW,UAAN,CAAiB1Z,IAAI,CAAC+oB,GAAL,CAAU7lB,KAAK,CAACwW,UAAN,CAAiBhiB,MAAjB,CAA0B,CAApC,CAAuCwmB,KAAK,CAACK,WAA7C,CAAjB,CAAR,CACH,CACD,GAAKrb,KAAK,CAACwE,QAAN,EAAkB,CAAvB,CAA0B,CACtB,MAAOxE,MAAK,CAAC/N,UAAb,CACH,CACJ,CACD,MAAO+N,MAAP,CACH,CAvNiB,CAyNlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ8lB,OAAO,CAAC,kBAAY,CAChB,GAAIC,UAAJ,CAAevE,WAAf,CACA,GAAK,KAAK8D,OAAL,KAAmBS,SAAS,CAAG,KAAKxB,SAAL,EAA/B,CAAL,CAAwD,CACpD/C,WAAW,CAAGtuB,OAAO,CAACsK,QAAR,CAAmBuoB,SAAS,CAACxD,WAAV,EAAnB,CAA6CwD,SAAS,CAACL,UAAV,CAAsB,CAAtB,CAA3D,CACA,MAAOxyB,QAAO,CAACsK,QAAR,CAAmBgkB,WAAW,CAACnyB,IAA/B,CAAsCmyB,WAAW,CAAC/rB,QAAZ,EAA7C,CACH,CACD,MAAO,EAAP,CACH,CAzOiB,CA2OlB;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQuwB,UAAU,CAAG,qBAAU,CACnB,KAAKzB,SAAL,GAAiBrxB,OAAO,CAACsK,QAAR,CAAmB,OAAnB,CAA6B,iBAA9C,IACH,CArPiB,CAAtB,CAuPH,CAtXD,IAwXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAl3MW,CAo3MX;AACA;AACA;AACA;AACA,GAx3MW,CA03MX;AACA;AACA;AACA;AACA;AACA,GAEA,CAAC,UAAY,CACT,GAAIyoB,IAAG,CAAG,CAAV,CAAaC,qBAAb,CAEA;AACJ;AACA;AACA;AACA;AACA,OACI,QAASC,SAAT,CAAkB5Z,IAAlB,CAAwBtd,MAAxB,CAAgC,CAC5B,GAAI0Z,SAAJ,CACA,GAAI1Z,MAAM,CAAC0Z,QAAX,CAAqB,CACjB,GAAItY,KAAK,CAACoS,QAAN,CAAexT,MAAM,CAAC0Z,QAAtB,CAAJ,CAAqC,CACjC,IAAK,GAAIrT,EAAC,CAAG,CAAR,CAAWiS,EAAX,CAAe6e,GAAG,CAAG3V,QAAQ,CAAC3Z,oBAAT,CAA8ByV,IAA9B,CAAoC,UAApC,CAA1B,CAA2EhF,EAAE,CAAG6e,GAAG,CAAC9wB,CAAC,EAAF,CAAnF,EAA2F,CACvF,GAAIiS,EAAE,CAACvF,EAAH,EAAS,oBAAsB/S,MAAM,CAACS,OAAP,CAAeiZ,QAAlD,CAA4D,CACxDA,QAAQ,CAAGpB,EAAX,CACA,MACH,CACJ,CACJ,CAPD,IAOO,CACHoB,QAAQ,CAAG1Z,MAAM,CAAC0Z,QAAlB,CACH,CACJ,CACD,GAAI,CAACA,QAAL,CAAe,CACX4D,IAAI,CAACnY,WAAL,CAAiBuU,QAAQ,CAAG8H,QAAQ,CAAC/f,aAAT,CAAuBH,QAAvB,CAAiC,UAAjC,CAA6C,CACrE,OAAQtB,MAAM,CAACS,OAAP,CAAeiZ,QAD8C,CAErE,KAAM,oBAAsB1Z,MAAM,CAACS,OAAP,CAAeiZ,QAF0B,CAGrE,QAAS,cAH4D,CAA7C,CAA5B,EAKA;AACA1Z,MAAM,CAAC0Z,QAAP,CAAkBA,QAAlB,CACH,CACD,CAACA,QAAQ,CAACzR,YAAT,CAAsB,MAAtB,CAAD,EAAkCyR,QAAQ,CAAC9Q,YAAT,CAAsB,MAAtB,CAA8B5I,MAAM,CAACS,OAAP,CAAeiZ,QAA7C,CAAlC,CACAA,QAAQ,CAACxT,KAAT,CAAiBlG,MAAM,CAACo3B,WAAP,GACZp3B,MAAM,CAACS,OAAP,CAAe42B,cAAf,CAAgCr3B,MAAM,CAACs3B,UAAP,EAAhC,CAAsDt3B,MAAM,CAACoJ,UAAP,CAAkB,IAAlB,CAAwB,IAAxB,CAA8B,IAA9B,CAD1C,CAEb,EAFJ,CAGH,CACD,QAASmuB,YAAT,CAAqBh1B,EAArB,CAAwB,CACpB;AACA,IAAK,GAAIi1B,GAAT,GAAe13B,GAAE,CAACwC,OAAlB,CAA2B,CACvBxC,EAAE,CAACwC,OAAH,CAAWk1B,EAAX,EAAeroB,IAAf,CAAoB5M,EAApB,EACH,CAEJ,CACD,QAASk1B,aAAT,CAAsBpuB,IAAtB,CAA2B,CACvB,IAAI,GAAIquB,KAAR,GAAgBruB,KAAhB,CAAqB,CACjB,MAAOquB,KAAP,CACH,CACJ,CAED,QAASC,YAAT,CAAqBp1B,EAArB,CAAwB,CACpBA,EAAE,CAACq1B,WAAH,CAAiB,IAAjB,CAEAr1B,EAAE,CAACqW,SAAH,CAAa,WAAb,EACH,CAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OArEa,CAsET;AACJ;AACA;AACA;AACA;AACA;AACA,OA5Ea,CA6ET;AACJ;AACA;AACA;AACA;AACA;AACA,OAnFa,CAoFT;AACJ;AACA;AACA;AACA;AACA;AACA,OA1Fa,CA2FT;AACJ;AACA;AACA;AACA;AACA,OAhGa,CAiGT;AACJ;AACA;AACA;AACA;AACA,OAtGa,CAuGT;AACJ;AACA;AACA;AACA;AACA,OA5Ga,CA6GT;AACJ;AACA;AACA;AACA;AACA,OAlHa,CAmHT;AACJ;AACA;AACA;AACA;AACA;AACA,OAzHa,CA0HT;AACJ;AACA;AACA;AACA;AACA;AACA,OAhIa,CAiIT;AACJ;AACA;AACA;AACA;AACA;AACA,OAvIa,CAwIT;AACJ;AACA;AACA;AACA;AACA;AACA,OA9Ia,CA+IT;AACJ;AACA;AACA;AACA;AACA;AACA,OArJa,CAsJT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OA/Ja,CAgKT;AACJ;AACA;AACA;AACA;AACA;AACA,OAtKa,CAuKT;AACJ;AACA;AACA;AACA;AACA;AACA,OA7Ka,CA8KT;AACJ;AACA;AACA;AACA;AACA,OAnLa,CAsLT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAhMa,CAkMT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI,GAAI7R,OAAM,CAAGjH,EAAE,CAACiH,MAAH,CAAY,SAAUtG,OAAV,CAAmB,CACxC,GAAI8B,GAAE,CAAG,IAAT,CACAA,EAAE,CAACy0B,GAAH,CAASA,GAAG,EAAZ,CACA7e,SAAS,CAAChJ,IAAV,CAAe5M,EAAf,EACAA,EAAE,CAACsK,QAAH,CAAc,EAAd,CACAtK,EAAE,CAAC9B,OAAH,CAAaW,KAAK,CAACqO,MAAN,CAAarO,KAAK,CAAC+S,KAAN,CAAY1T,OAAO,EAAI,EAAvB,CAAb,CAAyCiM,cAAzC,CAAyD,IAAzD,CAAb,CACAnK,EAAE,CAACs1B,YAAH,CAAkB,EAAlB,CACAt1B,EAAE,CAACu1B,UAAH,CAAgB,EAAhB,CACAv1B,EAAE,CAACw1B,WAAH,CAAiB,EAAjB,CACA;AACAx1B,EAAE,CAACC,MAAH,CAAUuE,MAAM,CAACixB,cAAP,CAAsBz1B,EAAtB,CAAV,EAEA,gBACAA,EAAE,CAAC01B,gBAAH,GAEA,GAAG,CAAC72B,KAAK,CAACqC,aAAN,CAAoB3D,EAAE,CAACuJ,IAAvB,CAAJ,CAAiC,CAC7B;AACA9G,EAAE,CAAC9B,OAAH,CAAWi3B,IAAX,CAAkBD,YAAY,CAAC33B,EAAE,CAACuJ,IAAJ,CAA9B,CACAvJ,EAAE,CAACo4B,MAAH,CAAUC,IAAV,CAAe51B,EAAf,EACAo1B,WAAW,CAACp1B,EAAD,CAAX,CAEH,CAND,IAMK,CACDnB,KAAK,CAACkR,QAAN,CAAehR,QAAf,CAAyB,CACrB+K,GAAG,CAAE9J,EAAE,CAAC9B,OAAH,CAAW23B,QAAX,CAAsB71B,EAAE,CAAC9B,OAAH,CAAWi3B,IAAjC,CAAwC,GAAxC,CAA8Cn1B,EAAE,CAAC9B,OAAH,CAAWi3B,IAAzD,CAAgE,KADhD,CAErB7kB,GAAG,CAAE,QAFgB,CAGrB1S,IAAI,CAAE,iBAHe,CAIrBsQ,KAAK,CAAE,OAJc,CAAzB,CAKG,UAAY,CACX3Q,EAAE,CAACo4B,MAAH,CAAUC,IAAV,CAAe51B,EAAf,EACAo1B,WAAW,CAACp1B,EAAD,CAAX,CACH,CARD,EASH,CAEDzC,EAAE,CAACgN,QAAH,CAAY,iBAAmBvK,EAAE,CAACy0B,GAAlC,EAAyCz0B,EAAzC,CACH,CAlCD,CAmCAwE,MAAM,CAAClH,SAAP,CAAmB,CACdw4B,eAAe,CAAG,yBAAS13B,IAAT,CAAcpB,GAAd,CAAkB,CACjC,KAAKsN,QAAL,CAAclM,IAAd,EAAsBpB,GAAtB,CACF,CAHa,CAIf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ4B,KAAK,CAAE,eAAUoP,EAAV,CAAc,CACjB,GAAIhO,GAAE,CAAG,IAAT,CACA,GAAIgO,EAAJ,CAAQ,CACJhO,EAAE,CAACsS,OAAH,CAAatE,EAAE,CAACC,KAAH,CAASjO,EAAT,CAAb,CAA4BA,EAAE,CAACR,WAAH,CAAe,OAAf,CAAwBwO,EAAxB,CAA5B,CACH,CACJ,CAvBc,CAyBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WApCuB,CAsCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ/N,MAAM,CAAE,gBAAU4M,GAAV,CAAexM,GAAf,CAAoB,CACxB,GAAIrD,IAAG,CAAG,EAAV,CACA,GAAI6B,KAAK,CAACoS,QAAN,CAAepE,GAAf,CAAJ,CAAyB,CACrB7P,GAAG,CAAC6P,GAAD,CAAH,CAAWxM,GAAX,CACH,CAFD,IAEO,CACHrD,GAAG,CAAG6P,GAAN,CACH,CACDhO,KAAK,CAACqO,MAAN,CAAa,KAAKhP,OAAlB,CAA2BlB,GAA3B,CAAgC,IAAhC,EACH,CA3Dc,CA4DfuG,MAAM,CAAC,gBAASsJ,GAAT,CAAa,CAChB,MAAO,MAAK3O,OAAL,CAAa2O,GAAb,CAAP,CACH,CA9Dc,CA+Df;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQkpB,OAAO,CAAE,kBAAY,CAEjB,GAAI/1B,GAAE,CAAG,IAAT,CACAA,EAAE,CAACqW,SAAH,CAAa,SAAb,EACA,GAAImY,UAAS,CAAGxuB,EAAE,CAACwuB,SAAH,CAAa/tB,UAA7B,CACA,GAAI0W,SAAQ,CAAGnX,EAAE,CAACmX,QAAlB,CACA,GAAI,CAACA,QAAL,CAAe,CACXA,QAAQ,CAAGpY,QAAQ,CAACG,aAAT,CAAuB,UAAvB,CAAX,CACAsvB,SAAS,CAAC/tB,UAAV,CAAqBoC,YAArB,CAAkCsU,QAAlC,CAA4CqX,SAA5C,EACH,CAHD,IAGO,CACHrX,QAAQ,CAAClN,KAAT,CAAe+rB,OAAf,CAAyB,EAAzB,CACH,CAED7e,QAAQ,CAAClN,KAAT,CAAeue,KAAf,CAAuBxoB,EAAE,CAACsX,MAAH,CAAU2e,WAAV,CAAwB,IAA/C,CACA9e,QAAQ,CAAClN,KAAT,CAAeye,MAAf,CAAwB1oB,EAAE,CAACsX,MAAH,CAAUyP,YAAV,CAAyB,IAAjD,CACA5P,QAAQ,CAACxT,KAAT,CAAiB3D,EAAE,CAAC6G,UAAH,EAAjB,CACAsQ,QAAQ,CAAC3G,EAAT,CAAcxQ,EAAE,CAAC6M,GAAjB,CACA2hB,SAAS,CAAChtB,SAAV,CAAsB,EAAtB,CACAyd,QAAQ,CAACoC,MAAT,CAAgBmN,SAAhB,EACA,GAAI3hB,IAAG,CAAG7M,EAAE,CAAC6M,GAAb,CACA;AACA,IAAK,GAAIpK,EAAT,GAAczC,GAAd,CAAkB,CACd,GAAIA,EAAE,CAAC8M,cAAH,CAAkBrK,CAAlB,CAAJ,CAA0B,CACtB,MAAO,MAAKA,CAAL,CAAP,CACH,CACJ,CACDlF,EAAE,CAAC24B,SAAH,CAAarpB,GAAb,EACH,CAlGc,CAoGf;AACR;AACA;AACA;AACA;AACA;AACA,WA1GuB,CA4Gf;AACR;AACA;AACA;AACA;AACA;AACA,WACQvN,MAAM,CAAE,gBAAUkvB,SAAV,CAAqB,CACzB,GAAIxuB,GAAE,CAAG,IAAT,CACI9B,OAAO,CAAG8B,EAAE,CAAC9B,OADjB,CAEIi4B,aAAa,CAAC,QAAdA,cAAc,CAASxP,IAAT,CAAc,CACxB,MAAO3iB,SAAQ,CAACib,QAAQ,CAACuF,gBAAT,CAA0BgK,SAA1B,CAAoC7H,IAApC,CAAD,CAAf,CACH,CAJL,CAKA,GAAI9nB,KAAK,CAACoS,QAAN,CAAeud,SAAf,CAAJ,CAA+B,CAC3BA,SAAS,CAAGzvB,QAAQ,CAAC0R,cAAT,CAAwB+d,SAAxB,CAAZ,CACH,CACD,GAAIA,SAAJ,CAAe,CACX,GAAGtwB,OAAO,CAACk4B,iBAAX,CAA6B,CACzBl4B,OAAO,CAACm4B,aAAR,CAAwBn4B,OAAO,CAACk4B,iBAAhC,CACH,CAFD,IAEK,CACDl4B,OAAO,CAACm4B,aAAR,CAAwBn4B,OAAO,CAACk4B,iBAAR,CAA4B5H,SAAS,CAACyH,WAA9D,CACH,CACD,GAAG/3B,OAAO,CAACo4B,kBAAX,CAA8B,CAC1Bp4B,OAAO,CAACq4B,cAAR,CAAyBr4B,OAAO,CAACo4B,kBAAjC,CACH,CAFD,IAEK,CACDp4B,OAAO,CAACo4B,kBAAR,CAA6Bp4B,OAAO,CAACq4B,cAAR,CAAyB/H,SAAS,CAACzH,YAAhE,CACH,CAEDyH,SAAS,CAACvkB,KAAV,CAAgBue,KAAhB,CAAwB,KAAK3mB,IAAL,CAAU3D,OAAO,CAACk4B,iBAAlB,EAAwC,MAAxC,CAAiDl4B,OAAO,CAACk4B,iBAAR,CACrED,aAAa,CAAC,cAAD,CADwD,CACtCA,aAAa,CAAC,eAAD,CADyB,CACN,IADnE,CAEA3H,SAAS,CAACvkB,KAAV,CAAgBye,MAAhB,CAAyB,KAAK7mB,IAAL,CAAU3D,OAAO,CAACo4B,kBAAlB,EAAyC,MAAzC,CAAkDp4B,OAAO,CAACo4B,kBAAR,CACvEH,aAAa,CAAC,aAAD,CAD0D,CACzCA,aAAa,CAAC,gBAAD,CAD4B,CACR,IADnE,CAGA3H,SAAS,CAACvkB,KAAV,CAAgBusB,MAAhB,CAAyBt4B,OAAO,CAACs4B,MAAjC,CAEA,GAAIlzB,KAAI,CAAG,CAAEf,EAAE,EAAIb,OAAO,CAAC+I,OAAR,CAAkB,CAAxB,CAA6B,EAA7B,CAAkC,iBAApC,EACP,qEADO,CAEP,2BAFO,CAGP;AACA,iEAJO,CAKP;AACA;AACA,yDAPO,CAQP;AACA,0BATO,EAULvM,OAAO,CAACu4B,YAAR,CAAuB,qDAAuD53B,KAAK,CAACuQ,MAAN,CAAalR,OAAO,CAACu4B,YAArB,CAAvD,CAA4F,MAAnH,CAA4H,EAVvH,GAWNv4B,OAAO,CAACw4B,YAAR,CAAuB,UAAYx4B,OAAO,CAACw4B,YAApB,CAAmC,UAA1D,CAAuE,EAXjE,EAYP,sCAZO,CAaP,mCAbO,EAagCn0B,EAAE,CAAG,iBAAH,CAAuB,EAbzD,EAa+D,yBAb/D,CAcP,2EAdO,CAcuEvC,EAAE,CAACy0B,GAd1E,CAcgF,mCAdhF,CAeP,6HAfJ,CAgBAjG,SAAS,CAAC5rB,WAAV,CAAsBqc,QAAQ,CAAC/f,aAAT,CAAuBH,QAAvB,CAAiC,QAAjC,CAA2C,CAC7DyR,EAAE,CAAE,WAAaxQ,EAAE,CAACy0B,GADyC,CAE7DjM,KAAK,CAAE,MAFsD,CAG7DE,MAAM,CAAE,MAHqD,CAI7D3J,WAAW,CAAE,GAJgD,CAK7D;AACpB;AACoBjV,GAAG,CAAE,+CAAiD5L,OAAO,CAACy4B,YAAR,EAAwB53B,QAAQ,CAAC63B,MAAT,EAAmB3iB,QAAQ,CAACC,QAApD,CAAgE,oBAAsBnV,QAAQ,CAAC63B,MAA/B,CAAwC,IAAxG,CAA+G,EAAhK,EACD,kBADC,CACoBtzB,IADpB,CAC2B,0BAR6B,CAA3C,CAAtB,EAUAkrB,SAAS,CAACvkB,KAAV,CAAgB4sB,QAAhB,CAA2B,QAA3B,CACA;AACAtoB,UAAU,CAAC,UAAU,CACjB,GAAI,KAAK1M,IAAL,CAAU3D,OAAO,CAACk4B,iBAAlB,CAAJ,CAAyC,CACrCl4B,OAAO,CAACm4B,aAAR,CAAwBn4B,OAAO,CAACk4B,iBAAR,CAA4B5H,SAAS,CAACyH,WAA9D,CACA;AACxB;AACqB,CACD,GAAG,KAAKp0B,IAAL,CAAU3D,OAAO,CAACo4B,kBAAlB,CAAH,CAAyC,CACrCp4B,OAAO,CAACq4B,cAAR,CAAyBr4B,OAAO,CAACo4B,kBAAR,CAA6B9H,SAAS,CAACzH,YAAhE,CACAyH,SAAS,CAACvkB,KAAV,CAAgBye,MAAhB,CAAyBxqB,OAAO,CAACo4B,kBAAR,CAA6B,IAAtD,CACH,CACJ,CAVS,CAAV,CAWH,CACJ,CAvLc,CAyLf;AACR;AACA;AACA;AACA;AACA,WACQQ,MAAM,CAAE,gBAAU5mB,GAAV,CAAe,CAEnB,GAAIlQ,GAAE,CAAG,IAAT,CACI9B,OAAO,CAAG8B,EAAE,CAAC9B,OADjB,CAEA,GAAIqE,EAAJ,CAAQ,CACJ2N,GAAG,CAAC7K,IAAJ,CAAS0xB,QAAT,CAAoB,IAApB,CACA7mB,GAAG,CAAC7K,IAAJ,CAAS2xB,eAAT,CAA2B,IAA3B,CACA9mB,GAAG,CAAC7K,IAAJ,CAAS0xB,QAAT,CAAoB,KAApB,CACH,CAJD,IAIO,CACH7mB,GAAG,CAAC7K,IAAJ,CAAS2xB,eAAT,CAA2B,IAA3B,CACH,CACD9mB,GAAG,CAAC7K,IAAJ,CAAS4xB,UAAT,CAAsB,KAAtB,CACAj3B,EAAE,CAACjB,QAAH,CAAcmR,GAAd,CACAlQ,EAAE,CAACoK,MAAH,CAAY8F,GAAG,CAAC4R,WAAJ,EAAmB5R,GAAG,CAAC6R,YAAnC,CACA/hB,EAAE,CAACsX,MAAH,CAAYtX,EAAE,CAACoK,MAAH,CAAU8oB,YAAtB,CACAlzB,EAAE,CAACqF,IAAH,CAAU6K,GAAG,CAAC7K,IAAd,CACArF,EAAE,CAACwzB,SAAH,CAAe,GAAI7yB,IAAG,CAACsyB,SAAR,CAAkB/iB,GAAlB,CAAf,CACA;AACA,GAAIgnB,SAAJ,CACA,GAAIx1B,OAAO,CAACwJ,KAAR,GAAkBgsB,QAAQ,CAAG,KAAK1D,SAAL,CAAeT,SAAf,EAA7B,CAAJ,CAA8D,CAC1DmE,QAAQ,CAACpG,eAAT,GACH,CACD,KAAKqG,WAAL,GACA;AACA,IAAK,GAAIpc,KAAI,CAAG,KAAKzD,MAAL,CAAY7W,UAA5B,CAAwC,CAACwe,QAAQ,CAAC4B,MAAT,CAAgB9F,IAAhB,CAAzC,CAAgEA,IAAI,CAAGA,IAAI,CAACta,UAA5E,CAAwF,CACpF,GAAIsa,IAAI,CAACva,OAAL,EAAgB,MAApB,CAA4B,CACxBR,EAAE,CAAC+a,IAAH,CAAUA,IAAV,CACA,GAAG/a,EAAE,CAAC9B,OAAH,CAAWk5B,YAAd,CAA2B,CACvBnY,QAAQ,CAAChJ,EAAT,CAAYjW,EAAE,CAACoK,MAAf,CAAsB,MAAtB,CAA6B,UAAU,CACnCuqB,QAAQ,CAAC5Z,IAAD,CAAM/a,EAAN,CAAR,CACH,CAFD,EAGH,CAJD,IAIK,CACDif,QAAQ,CAAChJ,EAAT,CAAY8E,IAAZ,CAAkB,QAAlB,CAA4B,UAAY,CACpC4Z,QAAQ,CAAC,IAAD,CAAO30B,EAAP,CAAR,CACH,CAFD,EAGH,CACD,MACH,CACJ,CACD,GAAI9B,OAAO,CAACm5B,cAAZ,CAA4B,CACxB,GAAIn5B,OAAO,CAACo5B,uBAAZ,CAAqC,CACjC,GAAIC,eAAc,CAAGv3B,EAAE,CAACw3B,WAAxB,CACAx3B,EAAE,CAACw3B,WAAH,CAAiB,UAAY,CACzBx3B,EAAE,CAACqW,SAAH,CAAa,wBAAb,EACA,MAAOkhB,eAAc,CAACtpB,KAAf,CAAqBjO,EAArB,CAAyBwN,SAAzB,CAAP,CACH,CAHD,CAIA,KAAKiqB,kBAAL,CAAwBv5B,OAAO,CAACm5B,cAAhC,EACH,CAPD,IAQI,MAAKK,UAAL,CAAgBx5B,OAAO,CAACm5B,cAAxB,CAAwC,KAAxC,CAA+C,IAA/C,EACP,CAED;AAEA,GAAIpY,QAAQ,CAACiJ,WAAT,CAAqBloB,EAAE,CAACqF,IAAxB,CAAJ,CAAmC,CAC/BrF,EAAE,CAACqF,IAAH,CAAQ7D,SAAR,CAAoB,OAASE,OAAO,CAACa,EAAR,CAAa,EAAb,CAAkB,OAA3B,EAAsC,MAA1D,CACH,CACD;AACA,GAAIrE,OAAO,CAAC2yB,KAAZ,CAAmB,CACftiB,UAAU,CAAC,UAAY,CACnBvO,EAAE,CAAC6wB,KAAH,CAAS7wB,EAAE,CAAC9B,OAAH,CAAWy5B,UAApB,EACA;AACA,CAAC33B,EAAE,CAAC9B,OAAH,CAAWo5B,uBAAZ,EAAuCt3B,EAAE,CAAC43B,gBAAH,EAAvC,CACH,CAJS,CAIP,CAJO,CAAV,CAKH,CACD,GAAI,CAAC53B,EAAE,CAACwuB,SAAR,CAAmB,CACfxuB,EAAE,CAACwuB,SAAH,CAAe,KAAKlX,MAAL,CAAY7W,UAA3B,CACH,CACD,GAAIvC,OAAO,CAAC25B,UAAR,EAAsB73B,EAAE,CAACjC,EAA7B,CAAiC,CAC7BiC,EAAE,CAACjC,EAAH,CAAM+5B,aAAN,CAAoB,IAApB,EACH,CAED,GAAI,CACA93B,EAAE,CAACjB,QAAH,CAAYy4B,WAAZ,CAAwB,aAAxB,CAAuC,KAAvC,CAA8C,KAA9C,EACH,CAAC,MAAOrnB,CAAP,CAAU,CACX,CACD,GAAI,CACAnQ,EAAE,CAACjB,QAAH,CAAYy4B,WAAZ,CAAwB,0BAAxB,CAAoD,KAApD,CAA2D,KAA3D,EACH,CAAC,MAAOrnB,CAAP,CAAU,CACX,CACD,GAAI,CACAnQ,EAAE,CAACjB,QAAH,CAAYy4B,WAAZ,CAAwB,sBAAxB,CAAgD,KAAhD,CAAuD,KAAvD,EACH,CAAC,MAAOrnB,CAAP,CAAU,CACX,CAED;AACAnQ,EAAE,CAAC+3B,iBAAH,GACA/3B,EAAE,CAACsS,OAAH,CAAa,CAAb,CACAtS,EAAE,CAACqW,SAAH,CAAa,OAAb,EACAnY,OAAO,CAACqU,OAAR,EAAmBrU,OAAO,CAACqU,OAAR,CAAgB3F,IAAhB,CAAqB5M,EAArB,CAAnB,CACA,GAAI,CAAC0B,OAAO,CAACsK,QAAb,CAAuB,CACnBiT,QAAQ,CAAChJ,EAAT,CAAYjW,EAAE,CAACoK,MAAf,CAAuB,CAAC,MAAD,CAAS,OAAT,CAAvB,CAA0C,SAAU+F,CAAV,CAAa,CACnD;AACA,GAAIA,CAAC,CAACvS,IAAF,EAAU,MAAd,CAAsB,CAClBoC,EAAE,CAACo0B,SAAH,CAAep0B,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAf,CACA,GAAI,CACA1zB,EAAE,CAACg4B,eAAH,CAAqBh4B,EAAE,CAACwzB,SAAH,CAAaT,SAAb,GAAyBmB,UAAzB,CAAoC,CAApC,CAArB,CACAl0B,EAAE,CAACwzB,SAAH,CAAaT,SAAb,GAAyBjC,eAAzB,GACH,CAAC,MAAO3gB,CAAP,CAAU,CACRnQ,EAAE,CAACg4B,eAAH,CAAqB,IAArB,CACH,CAEJ,CATD,IASO,CACH,GAAI,CACAh4B,EAAE,CAACo0B,SAAH,EAAgBp0B,EAAE,CAACo0B,SAAH,CAAald,MAAb,EAAhB,CACH,CAAC,MAAO/G,CAAP,CAAU,CACX,CACJ,CACJ,CAjBD,EAkBH,CACD;AACA,GAAIzO,OAAO,CAACwJ,KAAR,EAAiBxJ,OAAO,CAAC+I,OAAR,EAAmB,KAAxC,CAA+C,CAC3C;AACAzK,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,CAA0B,KAA1B,CACAzoB,UAAU,CAAC,UAAY,CACnBvO,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,CAA0B,IAA1B,CACH,CAFS,CAEP,GAFO,CAAV,CAGAiB,WAAW,CAAC,UAAY,CACpBj4B,EAAE,CAACqF,IAAH,CAAQ4E,KAAR,CAAcye,MAAd,CAAuB1oB,EAAE,CAACsX,MAAH,CAAUyP,YAAV,CAAyB,EAAzB,CAA8B,IAArD,CACH,CAFU,CAER,GAFQ,CAAX,CAGH,CAED,CAAC7oB,OAAO,CAACg6B,MAAT,EAAmBl4B,EAAE,CAACm4B,OAAH,EAAnB,CACAj6B,OAAO,CAACsgB,QAAR,EAAoBxe,EAAE,CAACL,WAAH,EAApB,CACH,CA1Tc,CA4Tf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAtUuB,CAwUf;AACR;AACA;AACA;AACA;AACA,WACQiH,IAAI,CAAE,cAAUwxB,MAAV,CAAkB,CACpB,GAAIp4B,GAAE,CAAG,IAAT,CACI+a,IAAI,CAAGqd,MAAM,CAAGr5B,QAAQ,CAAC0R,cAAT,CAAwB2nB,MAAxB,CAAH,CACTnZ,QAAQ,CAACyB,UAAT,CAAoB1gB,EAAE,CAACsX,MAAH,CAAU7W,UAA9B,CAA0C,SAAUF,IAAV,CAAgB,CACtD,MAAOA,KAAI,CAACC,OAAL,EAAgB,MAAvB,CACH,CAFD,CAEG,IAFH,CAFR,CAKAua,IAAI,EAAI4Z,QAAQ,CAAC5Z,IAAD,CAAO/a,EAAP,CAAhB,CACH,CArVc,CAuVf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQq4B,SAAS,CAAE,mBAAU3P,MAAV,CAAiB4P,YAAjB,CAA+B,CACtC,GAAI5P,MAAM,GAAK1kB,QAAQ,CAAC,KAAKsT,MAAL,CAAY7W,UAAZ,CAAuBwJ,KAAvB,CAA6Bye,MAA9B,CAAvB,CAA8D,CAC1D,KAAKpR,MAAL,CAAY7W,UAAZ,CAAuBwJ,KAAvB,CAA6Bye,MAA7B,CAAsCA,MAAM,CAAG,IAA/C,CACH,CACD,CAAC4P,YAAD,GAAkB,KAAKp6B,OAAL,CAAaq4B,cAAb,CAA8B,KAAKr4B,OAAL,CAAao4B,kBAAb,CAAkC5N,MAAlF,EACA,KAAKrjB,IAAL,CAAU4E,KAAV,CAAgBye,MAAhB,CAAyBA,MAAM,CAAG,IAAlC,CACA,CAAC4P,YAAD,EAAiB,KAAKliB,OAAL,CAAa,WAAb,CAAjB,CACH,CAxWc,CA0Wf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAtXuB,CAuXf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQmiB,cAAc,CAAE,wBAAUC,GAAV,CAAe1Y,IAAf,CAAqB,CACjC,GAAI9iB,IAAG,CAAG,EAAV,CACA,GAAI8iB,IAAJ,CAAU,CACN9iB,GAAG,CAACw7B,GAAD,CAAH,CAAW1Y,IAAX,CACH,CAFD,IAEO,CACH9iB,GAAG,CAAGw7B,GAAN,CACH,CACD35B,KAAK,CAACqO,MAAN,CAAa,KAAKooB,YAAlB,CAAgCt4B,GAAhC,EACH,CAzYc,CA2Yf;AACR;AACA;AACA;AACA,WACQ+6B,iBAAiB,CAAE,4BAAY,CAC3B,GAAI/3B,GAAE,CAAG,IAAT,CAAes1B,YAAY,CAAG,KAAKA,YAAnC,CACAt1B,EAAE,CAACR,WAAH,CAAe,SAAf,CAA0B,SAAU5B,IAAV,CAAgBuS,CAAhB,CAAmB,CACzC,GAAIsoB,QAAO,CAAGtoB,CAAC,CAACsoB,OAAF,EAAatoB,CAAC,CAACuoB,KAA7B,CACA,IAAK,GAAI50B,EAAT,GAAcwxB,aAAd,CAA4B,CACxB,GAAIhzB,IAAG,CAAGgzB,YAAY,CAACxxB,CAAD,CAAZ,CAAgBD,KAAhB,CAAsB,GAAtB,CAAV,CACA,IAAK,GAAIsJ,EAAC,CAAG,CAAR,CAAW4I,EAAhB,CAAoBA,EAAE,CAAGzT,GAAG,CAAC6K,CAAC,EAAF,CAA5B,EAAoC,CAChC4I,EAAE,CAAGA,EAAE,CAAClS,KAAH,CAAS,GAAT,CAAL,CACA,GAAIgJ,IAAG,CAAGkJ,EAAE,CAAC,CAAD,CAAZ,CAAiBsF,KAAK,CAAGtF,EAAE,CAAC,CAAD,CAA3B,CACA,GAAI,4BAA4BlU,IAA5B,CAAiCgL,GAAG,CAAChC,WAAJ,EAAjC,GAAuD,UAAUhJ,IAAV,CAAegL,GAAf,CAA3D,CAAgF,CAC5E,GAAM,CAACT,MAAM,CAACusB,EAAP,EAAa,MAAb,CAAuBxoB,CAAC,CAACyoB,OAAF,EAAazoB,CAAC,CAAC0oB,OAAtC,CAAiD,CAAlD,IACEzsB,MAAM,CAAC0sB,EAAP,EAAa,EAAb,CAAkB3oB,CAAC,CAAC/D,MAAM,CAAC0sB,EAAP,CAAUlM,KAAV,CAAgB,CAAhB,EAAqB,KAAtB,CAAnB,CAAkD,CADpD,GAEC6L,OAAO,EAAIrsB,MAAM,CAAC2sB,EAFrB,EAIAN,OAAO,EAAIrsB,MAAM,CAACusB,EAJtB,CAKM,CACF,GAAI34B,EAAE,CAACN,iBAAH,CAAqBoE,CAArB,CAAuBuX,KAAvB,GAAiC,CAAC,CAAtC,CACIrb,EAAE,CAACw3B,WAAH,CAAe1zB,CAAf,CAAkBuX,KAAlB,EACJ4D,QAAQ,CAACuI,cAAT,CAAwBrX,CAAxB,EACH,CACJ,CACJ,CAEJ,CACJ,CAtBD,EAuBH,CAzac,CA2af;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WArbuB,CAubf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQtJ,UAAU,CAAE,oBAAU2xB,GAAV,CAAexqB,EAAf,CAAkBgrB,YAAlB,CAA+BC,WAA/B,CAA2CC,SAA3C,CAAsD,CAC9D,GAAIl5B,GAAE,CAAG,IAAT,CACA,GAAIw4B,GAAG,EAAI35B,KAAK,CAACksB,UAAN,CAAiByN,GAAjB,CAAX,CAAkC,CAC9BxqB,EAAE,CAAGwqB,GAAL,CACAA,GAAG,CAAG,EAAN,CACH,CACD,GAAIxqB,EAAE,CAAG,CAACA,EAAE,EAAN,CAAW,CAAC,KAAK6mB,WAAL,EAAlB,CAAsC,CAClC,MAAO,EAAP,CACH,CACD70B,EAAE,CAACqW,SAAH,CAAa,kBAAb,EACA,GAAIlW,KAAI,CAAG5C,EAAE,CAAC47B,UAAH,CAAcn5B,EAAE,CAACqF,IAAH,CAAQ7D,SAAtB,CAAgCy3B,WAAhC,CAAX,CACAj5B,EAAE,CAACo5B,gBAAH,CAAoBj5B,IAApB,EACAH,EAAE,CAACqW,SAAH,CAAa,iBAAb,CAAgCmiB,GAAhC,CAAoCr4B,IAApC,EACA,MAAQA,KAAI,CAACk5B,MAAL,CAAYH,SAAZ,CAAR,CACH,CAvdc,CAydf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQnE,UAAU,CAAE,qBAAY,CACpB,GAAI/0B,GAAE,CAAG,IAAT,CACIs5B,QAAQ,CAAG,EADf,CAEIh2B,IAAI,CAAG,EAFX,CAGAtD,EAAE,CAACqW,SAAH,CAAa,YAAb,CAA2BijB,QAA3B,EACA,GAAI53B,OAAO,CAACa,EAAR,EAAcb,OAAO,CAAC+I,OAAR,CAAkB,CAApC,CAAuC,CACnC,GAAI8uB,eAAc,CAAG,EAArB,CACA16B,KAAK,CAACkD,IAAN,CAAW/B,EAAE,CAACjB,QAAH,CAAYkU,WAAvB,CAAoC,SAAU0Z,EAAV,CAAc,CAC9C4M,cAAc,EAAM5M,EAAE,CAACxtB,IAAH,CAAU,gDAAkDwtB,EAAE,CAACxtB,IAArD,CAA4D,MAAtE,CAA+E,UAAYwtB,EAAE,CAACzZ,OAAf,CAAyB,UAA5H,CACH,CAFD,EAGArU,KAAK,CAACkD,IAAN,CAAW/B,EAAE,CAACjB,QAAH,CAAYuG,oBAAZ,CAAiC,QAAjC,CAAX,CAAuD,SAAUqnB,EAAV,CAAc,CACjE4M,cAAc,EAAI5M,EAAE,CAACnC,SAArB,CACH,CAFD,EAIH,CACD,MAAO,gBAAkBxqB,EAAE,CAAC9B,OAAH,CAAWs7B,OAAX,CAAqB,+DAAiEx5B,EAAE,CAAC9B,OAAH,CAAWs7B,OAA5E,CAAsF,KAA3G,CAAmH,EAArI,GACAD,cAAc,EAAIv5B,EAAE,CAACjB,QAAH,CAAYuG,oBAAZ,CAAiC,MAAjC,EAAyC,CAAzC,EAA4C9D,SAD9D,EAC2E83B,QAAQ,CAAC/oB,IAAT,CAAc,IAAd,CAD3E,CACiG,SADjG,CAED,QAFC,EAEWhO,EAAE,EAAIb,OAAO,CAAC+I,OAAR,CAAkB,CAAxB,CAA4B,cAA5B,CAA6C,EAFxD,EAE8D,GAF9D,CAEoEzK,EAAE,CAAC6G,UAAH,CAAc,IAAd,CAAoB,IAApB,CAA0B,IAA1B,CAFpE,CAEsG,gBAF7G,CAGH,CApfc,CAsff;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ4yB,WAAW,CAAE,sBAAY,CACrB,GAAIpqB,IAAG,CAAG,GAAIjD,OAAJ,CAAW6S,QAAQ,CAACY,QAApB,CAA8B,GAA9B,CAAV,CACIvc,IAAI,CAAG,KAAK+B,IAAL,CAAU7D,SAAV,CAAoBiC,OAApB,CAA4B,SAA5B,CAAuC,EAAvC,CADX,CACsD;AACtDH,IAAI,CAAGA,IAAI,CAACG,OAAL,CAAa,wCAAb,CAAuD,IAAvD,EACFA,OADE,CACM,WADN,CACmB,IADnB,EAEFA,OAFE,CAEM,WAFN,CAEmB,EAFnB,EAGFA,OAHE,CAGM,mBAHN,CAG2B,SAAUC,CAAV,CAAa2J,CAAb,CAAgBoH,CAAhB,CAAmB,CAC7C,MAAO7T,IAAG,CAAC+B,MAAJ,CAAW8R,CAAX,EAAgB,IAAhB,CAAuBpH,CAAC,CAAGA,CAAH,CAAO,EAAtC,CACH,CALE,CAAP,CAMA;AACA,MAAO/J,KAAI,CAACG,OAAL,CAAa4L,GAAb,CAAkB,EAAlB,EAAsB5L,OAAtB,CAA8B,SAA9B,CAAyC,GAAzC,EAA8CA,OAA9C,CAAsD,SAAtD,CAAiE,GAAjE,CAAP,CACH,CA3gBc,CA6gBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQi2B,aAAa,CAAE,wBAAY,CACvB,GAAIrqB,IAAG,CAAG,GAAIjD,OAAJ,CAAW6S,QAAQ,CAACY,QAApB,CAA8B,GAA9B,CAAV,CACA;AACA,MAAO,MAAKxa,IAAL,CAAU3D,OAAO,CAACa,EAAR,CAAa,WAAb,CAA2B,aAArC,EAAoDkB,OAApD,CAA4D4L,GAA5D,CAAiE,EAAjE,EAAqE5L,OAArE,CAA6E,SAA7E,CAAwF,GAAxF,CAAP,CACH,CA3hBc,CA6hBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAviBuB,CAyiBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQi0B,UAAU,CAAE,oBAAUp0B,IAAV,CAAgBq2B,UAAhB,CAA4BC,sBAA5B,CAAoD,CAC5D,GAAI55B,GAAE,CAAG,IAAT,CAEAA,EAAE,CAACqW,SAAH,CAAa,kBAAb,CAAiC/S,IAAjC,EACA,GAAInD,KAAI,CAAG5C,EAAE,CAAC47B,UAAH,CAAc71B,IAAd,CAAX,CACAtD,EAAE,CAAC65B,eAAH,CAAmB15B,IAAnB,EACAmD,IAAI,CAAGnD,IAAI,CAACk5B,MAAL,EAAP,CAEAr5B,EAAE,CAACqF,IAAH,CAAQ7D,SAAR,CAAoB,CAACm4B,UAAU,CAAG35B,EAAE,CAACqF,IAAH,CAAQ7D,SAAX,CAAuB,EAAlC,EAAwC8B,IAA5D,CAGA,QAASw2B,WAAT,CAAoBv5B,IAApB,CAAyB,CACrB,MAAQA,KAAI,CAACC,OAAL,EAAgB,KAAhB,EAAyBD,IAAI,CAACmF,YAAL,CAAkB,WAAlB,CAAjC,CACH,CACD;AACA,GAAI1F,EAAE,CAAC9B,OAAH,CAAW67B,QAAX,EAAuB,GAA3B,CAAgC,CAE5B,GAAIxY,MAAK,CAAG,KAAKlc,IAAL,CAAUlE,UAAtB,CAAkCqB,OAAlC,CACA,GAAI,CAAC+e,KAAD,EAAUA,KAAK,CAACvO,QAAN,EAAkB,CAAlB,GACTpS,GAAG,CAACC,MAAJ,CAAW0gB,KAAK,CAAC/gB,OAAjB,GAA6Bs5B,UAAU,CAACvY,KAAD,CAAvC,EACGtC,QAAQ,CAACwL,aAAT,CAAuBlJ,KAAvB,CAFM,GAIPA,KAAK,GAAK,KAAKlc,IAAL,CAAUqgB,SAJ3B,CAIsC,CAClC,KAAKrgB,IAAL,CAAU7D,SAAV,CAAsB,OAASE,OAAO,CAACa,EAAR,CAAa,QAAb,CAAwB,OAAjC,EAA4C,MAA5C,CAAqD,KAAK8C,IAAL,CAAU7D,SAArF,CAEH,CAPD,IAOO,CACH,GAAIiB,EAAC,CAAGzC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,GAA1B,CAAR,CACA,MAAOqiB,KAAP,CAAc,CACV,MAAOA,KAAK,GAAKA,KAAK,CAACvO,QAAN,EAAkB,CAAlB,EAAuBuO,KAAK,CAACvO,QAAN,EAAkB,CAAlB,EAAuBpS,GAAG,CAAC6B,CAAJ,CAAM8e,KAAK,CAAC/gB,OAAZ,CAAvB,EAA+C,CAACI,GAAG,CAACC,MAAJ,CAAW0gB,KAAK,CAAC/gB,OAAjB,CAA5E,CAAZ,CAAoH,CAChHgC,OAAO,CAAG+e,KAAK,CAACpf,WAAhB,CACAM,CAAC,CAACG,WAAF,CAAc2e,KAAd,EACAA,KAAK,CAAG/e,OAAR,CACH,CACD,GAAIC,CAAC,CAACtB,UAAN,CAAkB,CACd,GAAI,CAACogB,KAAL,CAAY,CACRvhB,EAAE,CAACqF,IAAH,CAAQzC,WAAR,CAAoBH,CAApB,EACA,MACH,CAHD,IAGO,CACH8e,KAAK,CAAC9gB,UAAN,CAAiBoC,YAAjB,CAA8BJ,CAA9B,CAAiC8e,KAAjC,EACA9e,CAAC,CAAGzC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,GAA1B,CAAJ,CACH,CACJ,CACDqiB,KAAK,CAAGA,KAAK,CAACpf,WAAd,CACH,CACJ,CACJ,CACDnC,EAAE,CAACqW,SAAH,CAAa,iBAAb,EACArW,EAAE,CAACqW,SAAH,CAAa,eAAb,EAEA,CAACujB,sBAAD,EAA2B55B,EAAE,CAAC43B,gBAAH,EAA3B,CACA;AACA53B,EAAE,CAACo0B,SAAH,CAAep0B,EAAE,CAACmzB,WAAH,CAAiBnzB,EAAE,CAACg4B,eAAH,CAAqB,IAArD,CACA;AACA,GAAId,SAAJ,CACA,GAAIx1B,OAAO,CAACwJ,KAAR,GAAkBgsB,QAAQ,CAAG,KAAK1D,SAAL,CAAeT,SAAf,EAA7B,CAAJ,CAA8D,CAC1DmE,QAAQ,CAACpG,eAAT,GACH,CACD,GAAG9wB,EAAE,CAAC9B,OAAH,CAAWk5B,YAAd,CAA2B,CACvBp3B,EAAE,CAAC+a,IAAH,EAAW4Z,QAAQ,CAAC30B,EAAE,CAAC+a,IAAJ,CAAS/a,EAAT,CAAnB,CACH,CACJ,CAlnBc,CAonBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WA3nBuB,CA6nBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ6wB,KAAK,CAAE,eAAUjC,KAAV,CAAiB,CACpB,GAAI,CACA,GAAI5uB,GAAE,CAAG,IAAT,CACIirB,GAAG,CAAGjrB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EADV,CAEA,GAAI9E,KAAJ,CAAW,CACP,GAAIruB,KAAI,CAAGP,EAAE,CAACqF,IAAH,CAAQqgB,SAAnB,CACA,GAAGnlB,IAAI,EAAIA,IAAI,CAACyS,QAAL,EAAiB,CAAzB,EAA8B,CAACpS,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,CAAlC,CAA2D,CACvD,GAAGye,QAAQ,CAACgL,YAAT,CAAsB1pB,IAAtB,CAAH,CAA+B,CAC3B0qB,GAAG,CAACyC,eAAJ,CAAoBntB,IAApB,EACH,CAFD,IAEK,CACD0qB,GAAG,CAAC0C,cAAJ,CAAmBptB,IAAnB,EACH,CACD0qB,GAAG,CAACjB,QAAJ,CAAa,IAAb,EACH,CACDiB,GAAG,CAAC0D,SAAJ,CAAc,IAAd,EACH,CAXD,IAWO,CACH,GAAG,CAAC1D,GAAG,CAACO,SAAL,EAAkBvM,QAAQ,CAAC4B,MAAT,CAAgBoK,GAAG,CAACrB,cAApB,CAAlB,EAAyDqB,GAAG,CAACpB,WAAJ,EAAmB,CAA/E,CAAiF,CAE7E,GAAItpB,KAAI,CAAGP,EAAE,CAACqF,IAAH,CAAQlE,UAAnB,CACA,GAAGZ,IAAI,EAAIA,IAAI,CAACyS,QAAL,EAAiB,CAAzB,EAA8B,CAACpS,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,CAAlC,CAA2D,CACvDyqB,GAAG,CAACyC,eAAJ,CAAoBntB,IAApB,EAA0BypB,QAA1B,CAAmC,IAAnC,EACH,CACJ,CAEDiB,GAAG,CAAC/T,MAAJ,CAAW,IAAX,EAEH,CACD,KAAKb,SAAL,CAAe,uBAAf,EACH,CAAC,MAAOlG,CAAP,CAAU,CACX,CAEJ,CArqBc,CAsqBf2jB,OAAO,CAAC,kBAAU,CACd,MAAO,MAAKN,SAAL,CAAeM,OAAf,EAAP,CACH,CAxqBc,CAyqBfkG,IAAI,CAAC,eAAU,CACX,GAAItJ,IAAG,CAAG,KAAK8C,SAAL,CAAeT,SAAf,EAAV,CACA,GAAGrC,GAAG,CAACxU,KAAJ,EAAaxa,OAAO,CAACa,EAAxB,CAA2B,CACvB,GAAI03B,UAAS,CAAGl7B,QAAQ,CAACsG,IAAT,CAAc8qB,eAAd,EAAhB,CACA8J,SAAS,CAAC7J,iBAAV,CAA4BrxB,QAAQ,CAACsG,IAArC,EACA40B,SAAS,CAACjQ,QAAV,CAAmB,IAAnB,EACAiQ,SAAS,CAAC/iB,MAAV,GACAwZ,GAAG,CAACxU,KAAJ,GACH,CAND,IAMK,CACDwU,GAAG,CAACI,eAAJ,GACH,CAED;AACH,CAtrBc,CAurBf;AACR;AACA;AACA;AACA,WACQqG,WAAW,CAAE,sBAAY,CACrB,GAAIn3B,GAAE,CAAG,IAAT,CACIkQ,GAAG,CAAGlQ,EAAE,CAACjB,QADb,CAEIyT,GAAG,CAAGxS,EAAE,CAACoK,MAFb,CAGApK,EAAE,CAACk6B,cAAH,CAAoBr7B,KAAK,CAACkP,IAAN,CAAW/N,EAAE,CAACk6B,cAAd,CAA8Bl6B,EAA9B,CAApB,CACAif,QAAQ,CAAChJ,EAAT,CAAY/F,GAAZ,CAAiB,CAAC,OAAD,CAAU,aAAV,CAAyB,WAAzB,CAAsC,SAAtC,CAAiD,OAAjD,CAA0D,UAA1D,CAAsE,SAAtE,CAAiF,WAAjF,CAA8F,UAA9F,CAA0G,aAA1G,CAAjB,CAA2IlQ,EAAE,CAACk6B,cAA9I,EACAjb,QAAQ,CAAChJ,EAAT,CAAYzD,GAAZ,CAAiB,CAAC,OAAD,CAAU,MAAV,CAAjB,CAAoCxS,EAAE,CAACk6B,cAAvC,EACAjb,QAAQ,CAAChJ,EAAT,CAAYjW,EAAE,CAACqF,IAAf,CAAoB,MAApB,CAA2B,SAAS8K,CAAT,CAAW,CAClC;AACA,GAAGzO,OAAO,CAACwJ,KAAR,EAAiBiF,CAAC,CAACgqB,eAAtB,CAAuC,CAAEhqB,CAAC,CAACgqB,eAAF,GAAsB,CAC/Dn6B,EAAE,CAACqW,SAAH,CAAa,eAAb,EACH,CAJD,EAKA4I,QAAQ,CAAChJ,EAAT,CAAY/F,GAAZ,CAAiB,CAAC,SAAD,CAAY,SAAZ,CAAjB,CAAyC,SAAUkT,GAAV,CAAe,CACpD;AACA,GAAIA,GAAG,CAACxlB,IAAJ,EAAY,SAAZ,GAA0BwlB,GAAG,CAACwV,OAAJ,EAAexV,GAAG,CAACyV,OAAnB,EAA8BzV,GAAG,CAACgX,QAAlC,EAA8ChX,GAAG,CAACiX,MAA5E,CAAJ,CAAyF,CACrF,OACH,CACD,GAAIjX,GAAG,CAACnM,MAAJ,EAAc,CAAlB,CAAoB,OACpBjX,EAAE,CAAC43B,gBAAH,CAAoB,GAApB,CAAyBxU,GAAzB,EACH,CAPD,EAQH,CAhtBc,CAitBf;AACR;AACA;AACA;AACA;AACA;AACA,WACQ8W,cAAc,CAAE,wBAAU9W,GAAV,CAAe,CAC3B,GAAG,KAAK/M,SAAL,CAAe,SAAW+M,GAAG,CAACxlB,IAAJ,CAAS6F,OAAT,CAAiB,KAAjB,CAAwB,EAAxB,EAA4BoH,WAA5B,EAA1B,IAAyE,KAA5E,CAAkF,CAC9E,MAAO,MAAP,CACH,CACD,GAAG,KAAKwL,SAAL,CAAe+M,GAAG,CAACxlB,IAAJ,CAAS6F,OAAT,CAAiB,KAAjB,CAAwB,EAAxB,CAAf,CAA4C2f,GAA5C,IAAqD,KAAxD,CAA8D,CAC1D,MAAO,MAAP,CACH,CACD,MAAO,MAAK/M,SAAL,CAAe,QAAU+M,GAAG,CAACxlB,IAAJ,CAAS6F,OAAT,CAAiB,KAAjB,CAAwB,EAAxB,EAA4BoH,WAA5B,EAAzB,CAAP,CACH,CAhuBc,CAiuBf;AACR;AACA;AACA;AACA,WACQ+sB,gBAAgB,CAAE,0BAAUzpB,KAAV,CAAiBiV,GAAjB,CAAsB,CACpC,GAAIpjB,GAAE,CAAG,IAAT,CACA;AACZ;AACA;AACA;AAGY,GAAIs6B,eAAc,CAAG,KAArB,CACA,GAAIC,OAAJ,CAAYC,MAAZ,CACA,GAAI94B,OAAO,CAACa,EAAR,EAAcb,OAAO,CAAC+I,OAAR,CAAkB,CAAhC,EAAqC2Y,GAArC,EAA4CA,GAAG,CAACxlB,IAAJ,EAAY,SAA5D,CAAuE,CACnE,GAAI4rB,MAAK,CAAG,KAAKgK,SAAL,CAAeE,QAAf,EAAZ,CACA,GAAI,CAAClK,KAAK,CAACgC,SAAX,CAAsB,CAClB8O,cAAc,CAAG,IAAjB,CACAC,MAAM,CAAGnX,GAAG,CAACqX,OAAb,CACAD,MAAM,CAAGpX,GAAG,CAACsX,OAAb,CACH,CACJ,CACDpsB,YAAY,CAAComB,qBAAD,CAAZ,CACAA,qBAAqB,CAAGnmB,UAAU,CAAC,UAAY,CAC3C,GAAI,CAACvO,EAAE,CAACwzB,SAAJ,EAAiB,CAACxzB,EAAE,CAACwzB,SAAH,CAAaT,SAAb,EAAtB,CAAgD,CAC5C,OACH,CACD;AACA;AACA,GAAIH,QAAJ,CACA,GAAI0H,cAAc,EAAIt6B,EAAE,CAACwzB,SAAH,CAAaT,SAAb,GAAyBn1B,IAAzB,EAAiC,MAAvD,CAA+D,CAC3Dg1B,OAAO,CAAG5yB,EAAE,CAACjB,QAAH,CAAYsG,IAAZ,CAAiB8qB,eAAjB,EAAV,CACA,GAAI,CACAyC,OAAO,CAAC+H,WAAR,CAAoBJ,MAApB,CAA4BC,MAA5B,EACH,CAAC,MAAOnH,EAAP,CAAW,CACTT,OAAO,CAAG,IAAV,CACH,CACJ,CACD,GAAIgI,cAAJ,CACA,GAAIhI,OAAJ,CAAa,CACTgI,aAAa,CAAG56B,EAAE,CAACwzB,SAAH,CAAaJ,UAA7B,CACApzB,EAAE,CAACwzB,SAAH,CAAaJ,UAAb,CAA0B,UAAY,CAClC,MAAOR,QAAP,CACH,CAFD,CAGH,CACD5yB,EAAE,CAACwzB,SAAH,CAAa/jB,KAAb,GACA,GAAImrB,aAAJ,CAAmB,CACf56B,EAAE,CAACwzB,SAAH,CAAaJ,UAAb,CAA0BwH,aAA1B,CACH,CACD,GAAI56B,EAAE,CAACwzB,SAAH,CAAaC,YAAb,EAA6BzzB,EAAE,CAACwzB,SAAH,CAAaG,mBAA9C,CAAmE,CAC/D3zB,EAAE,CAACqW,SAAH,CAAa,uBAAb,EACA;AACArW,EAAE,CAACqW,SAAH,CAAa,iBAAb,CAAgC,CAAC,CAAC+M,GAAlC,EACApjB,EAAE,CAACqW,SAAH,CAAa,sBAAb,EACArW,EAAE,CAACwzB,SAAH,CAAapR,KAAb,GACH,CACJ,CAjCiC,CAiC/BjU,KAAK,EAAI,EAjCsB,CAAlC,CAkCH,CA3xBc,CA6xBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQ0sB,UAAU,CAAE,oBAAUC,MAAV,CAAkBC,IAAlB,CAAwB,CAChC,GAAIC,QAAO,CAAGD,IAAI,CAAC,CAAD,CAAJ,CAAQlwB,WAAR,EAAd,CACI2tB,GADJ,CACSyC,KADT,CAEAzC,GAAG,CAAG,KAAKluB,QAAL,CAAc0wB,OAAd,GAA0Bz9B,EAAE,CAAC+M,QAAH,CAAY0wB,OAAZ,CAAhC,CACAC,KAAK,CAAGzC,GAAG,EAAIA,GAAG,CAACsC,MAAD,CAAlB,CACA;AACA,GAAI,CAAC,CAACtC,GAAD,EAAQ,CAACyC,KAAV,GAAoBH,MAAM,EAAI,mBAAlC,CAAuD,CACnD,MAAO,EAAP,CACH,CAFD,IAEO,IAAIG,KAAJ,CAAW,CACd,MAAOA,MAAK,CAAChtB,KAAN,CAAY,IAAZ,CAAkB8sB,IAAlB,CAAP,CACH,CACJ,CAhzBc,CAkzBf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQvD,WAAW,CAAE,qBAAUwD,OAAV,CAAmB,CAC5BA,OAAO,CAAGA,OAAO,CAACnwB,WAAR,EAAV,CACA,GAAI7K,GAAE,CAAG,IAAT,CACI6U,MADJ,CAEI2jB,GAAG,CAAGx4B,EAAE,CAACsK,QAAH,CAAY0wB,OAAZ,GAAwBz9B,EAAE,CAAC+M,QAAH,CAAY0wB,OAAZ,CAFlC,CAGA,GAAI,CAACxC,GAAD,EAAQ,CAACA,GAAG,CAAChB,WAAjB,CAA8B,CAC1B,MAAO,KAAP,CACH,CACD,GAAI,CAACgB,GAAG,CAAC0C,WAAL,EAAoB,CAACl7B,EAAE,CAACm7B,qBAA5B,CAAmD,CAC/Cn7B,EAAE,CAACm7B,qBAAH,CAA2B,IAA3B,CACA,GAAIn7B,EAAE,CAACN,iBAAH,CAAqBuO,KAArB,CAA2BjO,EAA3B,CAA8BwN,SAA9B,GAA4C,CAAC,CAAjD,CAAoD,CAChDxN,EAAE,CAACqW,SAAH,CAAa,WAAb,EACArW,EAAE,CAACqW,SAAH,CAAapI,KAAb,CAAmBjO,EAAnB,CAAuB,CAAC,mBAAD,CAAsBg7B,OAAtB,EAA+BrJ,MAA/B,CAAsCnkB,SAAtC,CAAvB,EACAqH,MAAM,CAAG,KAAKgmB,UAAL,CAAgB,aAAhB,CAA+BrtB,SAA/B,CAAT,CACA;AACpB;AACoBxN,EAAE,CAACqW,SAAH,CAAapI,KAAb,CAAmBjO,EAAnB,CAAuB,CAAC,kBAAD,CAAqBg7B,OAArB,EAA8BrJ,MAA9B,CAAqCnkB,SAArC,CAAvB,EACAxN,EAAE,CAACqW,SAAH,CAAa,WAAb,EACH,CACDrW,EAAE,CAACm7B,qBAAH,CAA2B,KAA3B,CACH,CAZD,IAYO,CACHtmB,MAAM,CAAG,KAAKgmB,UAAL,CAAgB,aAAhB,CAA+BrtB,SAA/B,CAAT,CACC,CAACxN,EAAE,CAACm7B,qBAAJ,EAA6B,CAAC3C,GAAG,CAAC4C,mBAAlC,EAAyD,CAACp7B,EAAE,CAACq7B,oBAA9D,EAAuFr7B,EAAE,CAACqW,SAAH,CAAa,eAAb,CAAvF,CACH,CACA,CAACrW,EAAE,CAACm7B,qBAAJ,EAA6B,CAAC3C,GAAG,CAAC4C,mBAAlC,EAAyD,CAACp7B,EAAE,CAACq7B,oBAA9D,EAAuFr7B,EAAE,CAAC43B,gBAAH,EAAvF,CACA,MAAO/iB,OAAP,CACH,CAv1Bc,CAy1Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQnV,iBAAiB,CAAE,2BAAUs7B,OAAV,CAAmB,CAClC,MAAO,MAAKH,UAAL,CAAgB,mBAAhB,CAAqCrtB,SAArC,CAAP,CACH,CAv2Bc,CAy2Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQzI,iBAAiB,CAAE,2BAAUi2B,OAAV,CAAmB,CAClC,MAAO,MAAKH,UAAL,CAAgB,mBAAhB,CAAqCrtB,SAArC,CAAP,CACH,CAr3Bc,CAu3Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAj4BuB,CAm4Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQqnB,WAAW,CAAE,qBAAUyG,IAAV,CAAgB,CACzB,GAAIA,IAAJ,CAAU,CACN,IAAK,GAAIx3B,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGmsB,IAAI,CAACx3B,CAAC,EAAF,CAA7B,EAAqC,CACjC,GAAI,KAAK/E,QAAL,CAAcuG,oBAAd,CAAmC6J,EAAnC,EAAuCnM,MAAvC,CAAgD,CAApD,CAAuD,CACnD,MAAO,KAAP,CACH,CACJ,CACJ,CACD,GAAI,CAACic,QAAQ,CAACgL,YAAT,CAAsB,KAAK5kB,IAA3B,CAAL,CAAuC,CACnC,MAAO,KAAP,CACH,CACD;AACAi2B,IAAI,CAAG,CAAC,KAAD,CAAP,CACA,IAAKx3B,CAAC,CAAG,CAAT,CAAYqL,EAAE,CAAGmsB,IAAI,CAACx3B,CAAC,EAAF,CAArB,EAA6B,CACzB,GAAIikB,MAAK,CAAG9I,QAAQ,CAAC3Z,oBAAT,CAA8B,KAAKvG,QAAnC,CAA6CoQ,EAA7C,CAAZ,CACA,IAAK,GAAIlN,EAAC,CAAG,CAAR,CAAWs5B,EAAhB,CAAoBA,EAAE,CAAGxT,KAAK,CAAC9lB,CAAC,EAAF,CAA9B,EAAsC,CAClC,GAAIgd,QAAQ,CAACwL,aAAT,CAAuB8Q,EAAvB,CAAJ,CAAgC,CAC5B,MAAO,KAAP,CACH,CACJ,CACJ,CACD,MAAO,MAAP,CACH,CAn6Bc,CAq6Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQC,KAAK,CAAE,gBAAY,CACf,KAAKnlB,SAAL,CAAe,OAAf,EACH,CAh7Bc,CAk7Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQolB,UAAU,CAAE,qBAAY,CACpB,GAAIz7B,GAAE,CAAG,IAAT,CAAewpB,KAAf,CACA,GAAIxpB,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,EAA2B,OAA/B,CAAwC,CACpCh3B,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,CAA0B,IAA1B,CACAxN,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAR,CACA;AACA,GAAI,CACAlK,KAAK,CAAC2F,cAAN,CAAqBnvB,EAAE,CAAC07B,MAAxB,EACA,MAAO17B,GAAE,CAAC07B,MAAV,CACH,CAAC,MAAOvrB,CAAP,CAAU,CACRqZ,KAAK,CAACkE,eAAN,CAAsB1tB,EAAE,CAACqF,IAAzB,EAA+B2kB,QAA/B,CAAwC,IAAxC,EACH,CACDR,KAAK,CAACtS,MAAN,CAAa,IAAb,EACA,GAAIlX,EAAE,CAAC27B,mBAAP,CAA4B,CACxB37B,EAAE,CAACN,iBAAH,CAAuBM,EAAE,CAAC27B,mBAA1B,CACA,MAAO37B,GAAE,CAAC27B,mBAAV,CACH,CACD,GAAI37B,EAAE,CAAC47B,mBAAP,CAA4B,CACxB57B,EAAE,CAAC+E,iBAAH,CAAuB/E,EAAE,CAAC47B,mBAA1B,CACA,MAAO57B,GAAE,CAAC47B,mBAAV,CACH,CACD57B,EAAE,CAACqW,SAAH,CAAa,iBAAb,EACH,CACJ,CAj9Bc,CAk9BfwlB,MAAM,CAAE,iBAAY,CAChB,MAAO,MAAKJ,UAAL,EAAP,CACH,CAp9Bc,CAs9Bf;AACR;AACA,WAx9BuB,CA09Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAl+BuB,CAo+Bf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ97B,WAAW,CAAE,qBAAUm8B,MAAV,CAAkB,CAC3B,GAAI97B,GAAE,CAAG,IAAT,CACA87B,MAAM,CAAGA,MAAM,CAAGj9B,KAAK,CAACqQ,OAAN,CAAc4sB,MAAd,EAAwBA,MAAxB,CAAiC,CAACA,MAAD,CAApC,CAA+C,EAA9D,CACA,GAAI97B,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,EAA2B,MAA/B,CAAuC,CACnC,GAAI,CAACh3B,EAAE,CAAC07B,MAAR,CAAgB,CACZ17B,EAAE,CAAC07B,MAAH,CAAY17B,EAAE,CAACwzB,SAAH,CAAaE,QAAb,GAAwB5E,cAAxB,CAAuC,IAAvC,CAAZ,CACH,CACD9uB,EAAE,CAACqF,IAAH,CAAQ2xB,eAAR,CAA0B,KAA1B,CACAh3B,EAAE,CAAC27B,mBAAH,CAAyB37B,EAAE,CAACN,iBAA5B,CACAM,EAAE,CAAC47B,mBAAH,CAAyB57B,EAAE,CAAC+E,iBAA5B,CACA/E,EAAE,CAACN,iBAAH,CAAuB,SAAU9B,IAAV,CAAgB,CACnC,GAAIiB,KAAK,CAACqG,OAAN,CAAc42B,MAAd,CAAsBl+B,IAAtB,GAA+B,CAAC,CAApC,CAAuC,CACnC,MAAOoC,GAAE,CAAC27B,mBAAH,CAAuB1tB,KAAvB,CAA6BjO,EAA7B,CAAiCwN,SAAjC,CAAP,CACH,CACD,MAAO,CAAC,CAAR,CACH,CALD,CAMAxN,EAAE,CAAC+E,iBAAH,CAAuB,SAAUnH,IAAV,CAAgB,CACnC,GAAIiB,KAAK,CAACqG,OAAN,CAAc42B,MAAd,CAAsBl+B,IAAtB,GAA+B,CAAC,CAApC,CAAuC,CACnC,MAAOoC,GAAE,CAAC47B,mBAAH,CAAuB3tB,KAAvB,CAA6BjO,EAA7B,CAAiCwN,SAAjC,CAAP,CACH,CACD,MAAO,KAAP,CACH,CALD,CAMAxN,EAAE,CAACqW,SAAH,CAAa,iBAAb,EACH,CACJ,CArgCc,CAsgCf0lB,OAAO,CAAE,iBAAUD,MAAV,CAAkB,CACvB,MAAO,MAAKn8B,WAAL,CAAiBm8B,MAAjB,CAAP,CACH,CAxgCc,CA0gCf;AACR;AACA;AACA;AACA;AACA,WACQrE,kBAAkB,CAAE,UAAY,CAC5B,QAASrV,MAAT,EAAiB,CACb,GAAIpiB,GAAE,CAAG,IAAT,CACA,GAAIA,EAAE,CAACjB,QAAH,CAAY0R,cAAZ,CAA2B,aAA3B,CAAJ,CAA+C,CAC3CzQ,EAAE,CAACqF,IAAH,CAAQ7D,SAAR,CAAoB,OAASe,EAAE,CAAG,EAAH,CAAQ,OAAnB,EAA8B,MAAlD,CACAvC,EAAE,CAACmW,cAAH,CAAkB,8BAAlB,CAAkDiM,KAAlD,EACA7T,UAAU,CAAC,UAAY,CACnBvO,EAAE,CAAC6wB,KAAH,GACA7wB,EAAE,CAAC43B,gBAAH,GACH,CAHS,CAGP,CAHO,CAAV,CAIH,CACJ,CAED,MAAO,UAAUoE,IAAV,CAAgB,CACnB,GAAIh8B,GAAE,CAAG,IAAT,CACAA,EAAE,CAACqF,IAAH,CAAQ7D,SAAR,CAAoB,uBAAyBw6B,IAAzB,CAAgC,MAApD,CAEAh8B,EAAE,CAACR,WAAH,CAAe,8BAAf,CAA+C4iB,KAA/C,EACH,CALD,CAMH,CAnBmB,EAhhCL,CAqiCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQ6Z,OAAO,CAAE,kBAAY,CACjB,GAAIj8B,GAAE,CAAG,IAAT,CAAewpB,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAvB,CACA,GAAI1zB,EAAE,CAACwuB,SAAH,CAAavkB,KAAb,CAAmB+rB,OAAnB,EAA8B,MAAlC,CAA0C,CACtC;AACA,GAAI,CACAxM,KAAK,CAAC2F,cAAN,CAAqBnvB,EAAE,CAAC07B,MAAxB,EACA,MAAO17B,GAAE,CAAC07B,MAAV,CACH,CAAC,MAAOvrB,CAAP,CAAU,CACRqZ,KAAK,CAACkE,eAAN,CAAsB1tB,EAAE,CAACqF,IAAzB,EAA+B2kB,QAA/B,CAAwC,IAAxC,EACH,CACD;AACAzb,UAAU,CAAC,UAAY,CACnBib,KAAK,CAACtS,MAAN,CAAa,IAAb,EACH,CAFS,CAEP,GAFO,CAAV,CAGAlX,EAAE,CAACwuB,SAAH,CAAavkB,KAAb,CAAmB+rB,OAAnB,CAA6B,EAA7B,CACH,CAEJ,CA9jCc,CA+jCfkG,IAAI,CAAE,eAAY,CACd,MAAO,MAAKD,OAAL,EAAP,CACH,CAjkCc,CAkkCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WACQ9D,OAAO,CAAE,kBAAY,CACjB,GAAIn4B,GAAE,CAAG,IAAT,CACA,GAAI,CAACA,EAAE,CAAC07B,MAAR,CAAgB,CACZ17B,EAAE,CAAC07B,MAAH,CAAY17B,EAAE,CAACwzB,SAAH,CAAaE,QAAb,GAAwB5E,cAAxB,CAAuC,IAAvC,CAAZ,CACH,CACD9uB,EAAE,CAACwuB,SAAH,CAAavkB,KAAb,CAAmB+rB,OAAnB,CAA6B,MAA7B,CACH,CAhlCc,CAilCfmG,IAAI,CAAE,eAAY,CACd,MAAO,MAAKhE,OAAL,EAAP,CACH,CAnlCc,CAqlCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQiE,OAAO,CAAE,iBAAUC,IAAV,CAAgB,CACrB;AACA,GAAG,CAAC,KAAKn+B,OAAT,CAAiB,CACb,MAAO,EAAP,CACH,CACD,GAAIi3B,KAAI,CAAG53B,EAAE,CAACuJ,IAAH,CAAQ,KAAK5I,OAAL,CAAai3B,IAArB,CAAX,CACA,GAAI,CAACA,IAAL,CAAW,CACP,KAAMnkB,MAAK,CAAC,0BAAD,CAAX,CACH,CACDqrB,IAAI,CAAG,CAACA,IAAI,EAAI,EAAT,EAAax4B,KAAb,CAAmB,GAAnB,CAAP,CACA,IAAK,GAAIC,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGktB,IAAI,CAACv4B,CAAC,EAAF,CAA7B,EAAqC,CACjCqxB,IAAI,CAAGA,IAAI,CAAChmB,EAAD,CAAX,CACA,GAAI,CAACgmB,IAAL,CAAU,MACb,CACD,MAAOA,KAAP,CACH,CA9mCc,CAgnCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAznCuB,CA0nCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQmH,gBAAgB,CAAE,0BAAUC,UAAV,CAAsBxb,QAAtB,CAAgC,CAC9C,GAAI5b,MAAK,CAAG,KAAK0B,UAAL,CAAgB,KAAhB,CAAsB,KAAtB,CAA4B,IAA5B,EAAkC7D,MAA9C,CACA,GAAIu5B,UAAJ,CAAgB,CACZxb,QAAQ,CAAG,CAACA,QAAQ,EAAI,EAAb,EAAiB4Q,MAAjB,CAAwB,CAAE,IAAF,CAAQ,KAAR,CAAe,QAAf,CAAxB,CAAX,CACAxsB,KAAK,CAAG,KAAKu0B,aAAL,GAAqBj2B,OAArB,CAA6B,YAA7B,CAA2C,EAA3C,EAA+CT,MAAvD,CACA,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG4R,QAAQ,CAACjd,CAAC,EAAF,CAAjC,EAAyC,CACrCqB,KAAK,EAAI,KAAKpG,QAAL,CAAcuG,oBAAd,CAAmC6J,EAAnC,EAAuCnM,MAAhD,CACH,CACJ,CACD,MAAOmC,MAAP,CACH,CA/oCc,CAipCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQjF,YAAY,CAAE,sBAAUs8B,IAAV,CAAgB,CAC1B,KAAKjH,UAAL,CAAgB3vB,IAAhB,CAAqB42B,IAArB,EACH,CAhqCc,CAkqCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ3C,eAAe,CAAE,yBAAU15B,IAAV,CAAgB,CAC7B,IAAK,GAAI2D,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKomB,UAAL,CAAgBzxB,CAAC,EAAjB,CAAzB,EAAgD,CAC5CqL,EAAE,CAACvC,IAAH,CAAQ,IAAR,CAAczM,IAAd,EACH,CACJ,CAjrCc,CAmrCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQkD,aAAa,CAAE,uBAAUm5B,IAAV,CAAgB,CAC3B,KAAKhH,WAAL,CAAiB5vB,IAAjB,CAAsB42B,IAAtB,EACH,CAlsCc,CAosCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQpD,gBAAgB,CAAE,0BAAUj5B,IAAV,CAAgB,CAC9B,IAAK,GAAI2D,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKqmB,WAAL,CAAiB1xB,CAAC,EAAlB,CAAzB,EAAiD,CAC7CqL,EAAE,CAACvC,IAAH,CAAQ,IAAR,CAAczM,IAAd,EACH,CACJ,CAntCc,CAqtCf;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQyE,YAAY,CAAE,sBAASmnB,MAAT,CAAgB,CAC1B,GAAI0Q,WAAU,CAAG,KAAKl5B,MAAL,CAAYwoB,MAAZ,GAAuBA,MAAxC,CACI2Q,QAAQ,CAAG,KAAKn5B,MAAL,CAAY,UAAZ,CADf,CAEIo5B,SAAS,CAAG,KAAKp5B,MAAL,CAAY,WAAZ,CAFhB,CAIA,GAAG,CAACo5B,SAAD,EAAcD,QAAjB,CAA2B,CACvBC,SAAS,CAAGD,QAAQ,CAACj5B,OAAT,CAAiB,sBAAjB,CAAyC,gBAAzC,CAAZ,CACH,CAED,GAAGk5B,SAAH,CAAc,CACVA,SAAS,CAAGA,SAAS,EAAIA,SAAS,CAACz3B,OAAV,CAAkB,GAAlB,GAA0B,CAAC,CAA3B,CAA+B,GAA/B,CAAmC,GAAvC,CAAT,CAAuD,SAAvD,EAAoEu3B,UAAU,EAAI,EAAlF,CAAZ,CACA,MAAO59B,MAAK,CAACoG,SAAN,CAAgB03B,SAAhB,CAAP,CACH,CAHD,IAGO,CACH,MAAO,EAAP,CACH,CACJ,CAjvCc,CAAnB,CAmvCA99B,KAAK,CAAC6O,QAAN,CAAelJ,MAAf,CAAuBoR,SAAvB,EACH,CAr+CD,IAw+CA;AACA;AACArY,EAAE,CAACiH,MAAH,CAAUixB,cAAV,CAA2B,SAASh4B,MAAT,CAAgB,CAEvC,GAAIm/B,KAAI,CAAGn/B,MAAM,CAACS,OAAP,CAAeC,gBAA1B,CACA,MAAO,CACH+5B,MAAM,CAAE,IADL,CAEHb,cAAc,CAAE,EAFb,CAGHX,YAAY,CAAC,EAHV,CAIHY,uBAAuB,CAAE,KAJtB,CAKHb,YAAY,CAAEmG,IAAI,CAAG,mBALlB,CAMHzlB,QAAQ,CAAE,aANP,CAOH0Z,KAAK,CAAE,KAPJ,CAQH8G,UAAU,CAAE,IART,CASH72B,kBAAkB,CAAE,IATjB,CAUH+2B,UAAU,CAAE,KAVT,CAWHrZ,QAAQ,CAAE,KAXP,CAYHgY,MAAM,CAAE,GAZL,CAaHqG,UAAU,CAAE,IAbT,CAcH9C,QAAQ,CAAE,GAdP,CAeHpD,YAAY,CAAE,KAfX,CAgBHxB,IAAI,CAAE,OAhBH,CAiBHU,QAAQ,CAAE+G,IAAI,CAAG,OAjBd,CAkBHE,KAAK,CAAE,SAlBJ,CAmBHC,SAAS,CAAEH,IAAI,CAAG,SAnBf,CAoBH9H,cAAc,CAAE,KApBb,CAqBHkI,YAAY,CAAE,KArBX,CAsBHC,mBAAmB,CAAE,KAtBlB,CAuBH7F,YAAY,CAAG,IAvBZ,CAwBH8F,cAAc,CAAE,gBAxBb,CAAP,CA0BH,CA7BD,CA+BA;AACA,CAAC,UAAU,CAEP3/B,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBo4B,gBAApB,CAAuC,UAAU,CAC7C,GAAI11B,GAAE,CAAG,IAAT,CACAuO,UAAU,CAAC,UAAU,CACjB,GAAG,CACCvO,EAAE,CAAC9B,OAAH,CAAWw+B,QAAX,EAAuB18B,EAAE,CAACC,MAAH,CAAU,WAAV,CAAuBD,EAAE,CAAC9B,OAAH,CAAWw+B,QAAX,CAAoBj5B,OAApB,CAA4B,sBAA5B,CAAoD,gBAApD,CAAvB,CAAvB,CAEA,GAAI05B,UAAS,CAAGn9B,EAAE,CAAC4E,YAAH,CAAgB,QAAhB,CAAhB,CACIw4B,OAAO,CAAGv+B,KAAK,CAACkV,gBAAN,CAAuBopB,SAAvB,CADd,CAGA,cACAn9B,EAAE,CAACq9B,mBAAH,CAAyB,KAAzB,CAEAF,SAAS,EAAI5/B,EAAE,CAACmJ,IAAH,CAAQC,OAAR,CAAgBw2B,SAAhB,CAA0B,CACnC,SAAU,KADyB,CAEnC,WAAYC,OAAO,CAAG,OAAH,CAAW,EAFK,CAGnC,YAAY,mBAAS1rB,CAAT,CAAW,CACnB,GAAI,CACA,GAAI4rB,OAAM,CAAGF,OAAO,CAAG1rB,CAAH,CAAK6rB,IAAI,CAAC,IAAI7rB,CAAC,CAACvL,YAAN,CAAmB,GAApB,CAA7B,CACAtH,KAAK,CAACqO,MAAN,CAAalN,EAAE,CAAC9B,OAAhB,CAAyBo/B,MAAzB,EACAt9B,EAAE,CAACqW,SAAH,CAAa,oBAAb,EACArW,EAAE,CAACq9B,mBAAH,CAAyB,IAAzB,CACH,CAAC,MAAOltB,CAAP,CAAU,CACRqtB,YAAY,CAACx9B,EAAE,CAACo8B,OAAH,CAAW,uBAAX,CAAD,CAAZ,CACH,CACJ,CAZkC,CAanC,UAAU,kBAAU,CAChBoB,YAAY,CAACx9B,EAAE,CAACo8B,OAAH,CAAW,qBAAX,CAAD,CAAZ,CACH,CAfkC,CAA1B,CAAb,CAiBH,CAAC,MAAMjsB,CAAN,CAAQ,CACNqtB,YAAY,CAACx9B,EAAE,CAACo8B,OAAH,CAAW,iBAAX,CAAD,CAAZ,CACH,CACJ,CA9BS,CAAV,CAgCA,QAASoB,aAAT,CAAsBC,GAAtB,CAA2B,CACvBj3B,OAAO,EAAIA,OAAO,CAACC,KAAR,CAAcg3B,GAAd,CAAX,CACA;AACA;AACA;AACA;AACH,CACJ,CAzCD,CA2CAlgC,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBogC,oBAApB,CAA2C,UAAU,CACjD,GAAI19B,GAAE,CAAG,IAAT,CACA,MAAOA,GAAE,CAACq9B,mBAAH,EAA0B,KAAjC,CACH,CAHD,CAKA9/B,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBqgC,gBAApB,CAAuC,SAAS1a,OAAT,CAAiB,CACpD,GAAI,CAACA,OAAD,EAAY,CAACpkB,KAAK,CAACksB,UAAN,CAAiB9H,OAAjB,CAAjB,CAA4C,OAC5C,GAAIjjB,GAAE,CAAG,IAAT,CACA,GAAI49B,aAAY,CAAG,QAAfA,aAAe,EAAU,CACzB3a,OAAO,CAAChV,KAAR,CAAcjO,EAAd,CAAkBwN,SAAlB,EACAxN,EAAE,CAACmW,cAAH,CAAkB,oBAAlB,CAAwCynB,YAAxC,EACH,CAHD,CAKA,GAAI59B,EAAE,CAAC09B,oBAAH,EAAJ,CAA+B,CAC3Bza,OAAO,CAACrW,IAAR,CAAa5M,EAAb,CAAiB,oBAAjB,EACH,CAFD,IAEO,CACHA,EAAE,CAACR,WAAH,CAAe,oBAAf,CAAqCo+B,YAArC,EACH,CACJ,CAbD,CAeH,CAjED,IAoEA;AACA;AACA;AACA;AACA;AACA,GAp9PW,CAs9PX;AACA;AACA;AACA,GACArgC,EAAE,CAACmJ,IAAH,CAAU,UAAW,CAEjB;AACA,GAAIm3B,MAAK,CAAG,kBAAZ,CACA,GAAI,CACA,GAAIC,cAAJ,CAAkB,gBAAlB,EACAD,KAAK,CAAG,mCAAR,CACH,CAAC,MAAO1tB,CAAP,CAAU,CACR,GAAI,CACA,GAAI2tB,cAAJ,CAAkB,mBAAlB,EACAD,KAAK,CAAG,sCAAR,CACH,CAAC,MAAO1tB,CAAP,CAAU,CACX,CACJ,CACD,GAAI4tB,iBAAgB,CAAG,GAAI9wB,SAAJ,CAAa,cAAgB4wB,KAA7B,CAAvB,CAGA;AACJ;AACA;AACA,OACI,QAASvpB,SAAT,CAAkBrO,IAAlB,CAAwB,CACpB,GAAI4N,OAAM,CAAG,EAAb,CACA,IAAK,GAAI/P,EAAT,GAAcmC,KAAd,CAAoB,CAChB;AACA,GAAGnC,CAAC,EAAE,QAAH,EAAeA,CAAC,EAAE,SAAlB,EAA+BA,CAAC,EAAE,OAAlC,EAA6CA,CAAC,EAAE,UAAhD,EAA8DA,CAAC,EAAE,UAApE,CAAgF,SAChF;AACA,GAAGmC,IAAI,CAACnC,CAAD,CAAJ,EAAW6L,SAAX,EAAwB1J,IAAI,CAACnC,CAAD,CAAJ,EAAW,IAAtC,CAA4C,SAC5C;AACA,GAAI,EAAE,QAAQmC,IAAI,CAACnC,CAAD,CAAZ,EAAiB+G,WAAjB,IAAkC,UAAlC,EAAgD,QAAQ5E,IAAI,CAACnC,CAAD,CAAZ,EAAiB+G,WAAjB,IAAkC,QAApF,CAAJ,CAAmG,CAC/FgJ,MAAM,CAACjO,IAAP,CAAakO,kBAAkB,CAAChQ,CAAD,CAAlB,CAAwB,GAAxB,CAA4BgQ,kBAAkB,CAAC7N,IAAI,CAACnC,CAAD,CAAL,CAA3D,EACH,CAFD,IAEO,IAAIjF,KAAK,CAACqQ,OAAN,CAAcjJ,IAAI,CAACnC,CAAD,CAAlB,CAAJ,CAA4B,CACnC;AACI,IAAI,GAAI8P,EAAC,CAAG,CAAZ,CAAeA,CAAC,CAAG3N,IAAI,CAACnC,CAAD,CAAJ,CAAQd,MAA3B,CAAmC4Q,CAAC,EAApC,CAAwC,CACpCC,MAAM,CAACjO,IAAP,CAAakO,kBAAkB,CAAChQ,CAAD,CAAlB,CAAwB,KAAxB,CAA8BgQ,kBAAkB,CAAC7N,IAAI,CAACnC,CAAD,CAAJ,CAAQ8P,CAAR,CAAD,CAA7D,EACH,CACJ,CACJ,CACD,MAAOC,OAAM,CAACtD,IAAP,CAAY,GAAZ,CAAP,CACH,CAED,QAASytB,OAAT,CAAgBh5B,GAAhB,CAAqBi5B,WAArB,CAAkC,CAC9B,GAAIj4B,IAAG,CAAG+3B,gBAAgB,EAA1B,CACA;AACIG,SAAS,CAAG,KAFhB,CAGA;AACIC,kBAAkB,CAAG,CACjBC,MAAM,CAAC,MADU,CAEjBC,OAAO,CAAC,IAFS,CAGjBC,KAAK,CAAC,IAHW,CAIjBC,IAAI,CAAC,EAJY,CAIT;AACRx4B,SAAS,CAAC,oBAAW,CACpB,CANgB,CAOjBO,OAAO,CAAC,kBAAW,CAClB,CARgB,CAJzB,CAeA,GAAI,QAAOtB,GAAP,IAAe,QAAnB,CAA6B,CACzBi5B,WAAW,CAAGj5B,GAAd,CACAA,GAAG,CAAGi5B,WAAW,CAACj5B,GAAlB,CACH,CACD,GAAI,CAACgB,GAAD,EAAQ,CAAChB,GAAb,CAAkB,OAClB,GAAIw5B,SAAQ,CAAGP,WAAW,CAAGp/B,KAAK,CAACqO,MAAN,CAAaixB,kBAAb,CAAgCF,WAAhC,CAAH,CAAkDE,kBAA5E,CAEA,GAAIM,UAAS,CAAGnqB,QAAQ,CAACkqB,QAAD,CAAxB,CAAqC;AACrC;AACA,GAAI,CAAC3/B,KAAK,CAACqC,aAAN,CAAoBs9B,QAAQ,CAACD,IAA7B,CAAL,CAAwC,CACpCE,SAAS,EAAI,CAACA,SAAS,CAAE,GAAF,CAAM,EAAhB,EAAsBnqB,QAAQ,CAACkqB,QAAQ,CAACD,IAAV,CAA3C,CACH,CACD;AACA,GAAIlwB,QAAO,CAAGE,UAAU,CAAC,UAAW,CAChC,GAAIvI,GAAG,CAAC6K,UAAJ,EAAkB,CAAtB,CAAyB,CACrBqtB,SAAS,CAAG,IAAZ,CACAl4B,GAAG,CAAC04B,KAAJ,GACApwB,YAAY,CAACD,OAAD,CAAZ,CACH,CACJ,CANuB,CAMrBmwB,QAAQ,CAACH,OANY,CAAxB,CAQA,GAAID,OAAM,CAAGI,QAAQ,CAACJ,MAAT,CAAgBl6B,WAAhB,EAAb,CACA,GAAI6K,IAAG,CAAG/J,GAAG,EAAIA,GAAG,CAACE,OAAJ,CAAY,GAAZ,GAAkB,CAAC,CAAnB,CAAqB,GAArB,CAAyB,GAA7B,CAAH,EAAwCk5B,MAAM,EAAE,MAAR,CAAe,EAAf,CAAkBK,SAAS,CAAE,WAAX,CAAyB,EAAC,GAAIE,KAAJ,EAApF,CAAV,CACA34B,GAAG,CAACzG,IAAJ,CAAS6+B,MAAT,CAAiBrvB,GAAjB,CAAsByvB,QAAQ,CAACF,KAA/B,EACAt4B,GAAG,CAAC4K,kBAAJ,CAAyB,UAAW,CAChC,GAAI5K,GAAG,CAAC6K,UAAJ,EAAkB,CAAtB,CAAyB,CACrB,GAAI,CAACqtB,SAAD,EAAcl4B,GAAG,CAAC44B,MAAJ,EAAc,GAAhC,CAAqC,CACjCJ,QAAQ,CAACz4B,SAAT,CAAmBC,GAAnB,EACH,CAFD,IAEO,CACHw4B,QAAQ,CAACl4B,OAAT,CAAiBN,GAAjB,EACH,CACJ,CACJ,CARD,CASA,GAAIo4B,MAAM,EAAI,MAAd,CAAsB,CAClBp4B,GAAG,CAAC64B,gBAAJ,CAAqB,cAArB,CAAqC,mCAArC,EACA74B,GAAG,CAAC84B,IAAJ,CAASL,SAAT,EACH,CAHD,IAGO,CACHz4B,GAAG,CAAC84B,IAAJ,CAAS,IAAT,EACH,CACJ,CAED,QAASC,QAAT,CAAiB/5B,GAAjB,CAAsBg6B,IAAtB,CAA4B,CAExB,GAAIC,eAAc,CAAGD,IAAI,CAACj5B,SAAL,EAAkB,UAAU,CAAE,CAAnD,CACIm5B,GAAG,CAAGngC,QAAQ,CAACG,aAAT,CAAuB,QAAvB,CADV,CAEIhB,OAAO,CAAG8gC,IAAI,EAAI,EAFtB,CAGIxF,OAAO,CAAGt7B,OAAO,CAAC,SAAD,CAHrB,CAIIihC,aAAa,CAAGjhC,OAAO,CAAC,OAAD,CAAP,EAAoB,UAJxC,CAKIkhC,cALJ,CAMIC,OAAO,CAAGnhC,OAAO,CAAC,SAAD,CAAP,EAAsB,CANpC,CAOIohC,KAPJ,CAQIjwB,GAAG,CAAG,GAAIjD,OAAJ,CAAW,UAAY+yB,aAAZ,CAA4B,UAAvC,CARV,CASII,OATJ,CAWA,GAAI1gC,KAAK,CAACksB,UAAN,CAAiBkU,cAAjB,CAAJ,CAAsC,CAClCG,cAAc,CAAG,eAAiB9zB,IAAI,CAACqJ,KAAL,CAAWrJ,IAAI,CAACk0B,MAAL,GAAgB,UAA3B,EAAuCv7B,QAAvC,CAAgD,EAAhD,CAAlC,CACAmG,MAAM,CAACg1B,cAAD,CAAN,CAAyBK,WAAW,CAAC,CAAD,CAApC,CACH,CAHD,IAGO,IAAG5gC,KAAK,CAACoS,QAAN,CAAeguB,cAAf,CAAH,CAAkC,CACrCG,cAAc,CAAGH,cAAjB,CACH,CAFM,IAEA,CACH,GAAIM,OAAO,CAAGlwB,GAAG,CAACqwB,IAAJ,CAAS16B,GAAT,CAAd,CAA6B,CACzBo6B,cAAc,CAAGG,OAAO,CAAC,CAAD,CAAxB,CACH,CACJ,CAEDv6B,GAAG,CAAGA,GAAG,CAACvB,OAAJ,CAAY4L,GAAZ,CAAiB,QAAU8vB,aAAV,CAA0B,GAA1B,CAAgCC,cAAjD,CAAN,CAEA,GAAIp6B,GAAG,CAAC26B,MAAJ,CAAWtwB,GAAX,EAAkB,CAAtB,CAAyB,CACrBrK,GAAG,EAAI,CAACA,GAAG,CAACE,OAAJ,CAAY,GAAZ,EAAmB,CAAnB,CAAuB,GAAvB,CAA6B,GAA9B,EAAqCi6B,aAArC,CAAqD,GAArD,CAA2DC,cAAlE,CACH,CAED,GAAIQ,SAAQ,CAAGtrB,QAAQ,CAAC0qB,IAAD,CAAvB,CAAgC;AAChC;AACA,GAAI,CAACngC,KAAK,CAACqC,aAAN,CAAoB89B,IAAI,CAACT,IAAzB,CAAL,CAAoC,CAChCqB,QAAQ,EAAI,CAACA,QAAQ,CAAE,GAAF,CAAM,EAAf,EAAqBtrB,QAAQ,CAAC0qB,IAAI,CAACT,IAAN,CAAzC,CACH,CACD,GAAIqB,QAAJ,CAAc,CACV56B,GAAG,CAAGA,GAAG,CAACvB,OAAJ,CAAY,IAAZ,CAAkB,IAAMm8B,QAAN,CAAiB,GAAnC,CAAN,CACH,CAEDV,GAAG,CAAC54B,OAAJ,CAAcm5B,WAAW,CAAC,CAAD,CAAzB,CACA,GAAIJ,OAAJ,CAAa,CACTC,KAAK,CAAG/wB,UAAU,CAACkxB,WAAW,CAAC,CAAD,CAAZ,CAAiBJ,OAAjB,CAAlB,CACH,CACDQ,eAAe,CAACX,GAAD,CAAMl6B,GAAN,CAAWw0B,OAAX,CAAf,CAEA,QAASqG,gBAAT,CAAyBX,GAAzB,CAA8Bl6B,GAA9B,CAAmCw0B,OAAnC,CAA4C,CACxC0F,GAAG,CAAC74B,YAAJ,CAAiB,MAAjB,CAAyB,iBAAzB,EACA64B,GAAG,CAAC74B,YAAJ,CAAiB,OAAjB,CAA0B,OAA1B,EACAmzB,OAAO,EAAI0F,GAAG,CAAC74B,YAAJ,CAAiB,SAAjB,CAA4BmzB,OAA5B,CAAX,CACA0F,GAAG,CAAC74B,YAAJ,CAAiB,KAAjB,CAAwBrB,GAAxB,EACAjG,QAAQ,CAACuG,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,EAAyC1C,WAAzC,CAAqDs8B,GAArD,EACH,CAED,QAASO,YAAT,CAAqBK,SAArB,CAA+B,CAC3B,MAAO,WAAU,CACb,GAAI,CACA,GAAGA,SAAH,CAAa,CACT5hC,OAAO,CAACoI,OAAR,EAAmBpI,OAAO,CAACoI,OAAR,EAAnB,CACH,CAFD,IAEK,CACD,GAAG,CACCgI,YAAY,CAACgxB,KAAD,CAAZ,CACAL,cAAc,CAAChxB,KAAf,CAAqB7D,MAArB,CAA6BoD,SAA7B,EACH,CAAC,MAAO2C,CAAP,CAAS,CAAE,CAChB,CACJ,CAAC,MAAO4vB,SAAP,CAAkB,CAChB7hC,OAAO,CAACoI,OAAR,EAAmBpI,OAAO,CAACoI,OAAR,CAAgBsG,IAAhB,CAAqBxC,MAArB,CAA6B21B,SAA7B,CAAnB,CACH,CAXD,OAWU,CACN7hC,OAAO,CAAC8hC,UAAR,EAAsB9hC,OAAO,CAAC8hC,UAAR,CAAmB/xB,KAAnB,CAAyB7D,MAAzB,CAAiCoD,SAAjC,CAAtB,CACA0xB,GAAG,CAACz+B,UAAJ,EAAkBy+B,GAAG,CAACz+B,UAAJ,CAAeW,WAAf,CAA2B89B,GAA3B,CAAlB,CACA90B,MAAM,CAACg1B,cAAD,CAAN,CAAyB,IAAzB,CACA,GAAI,CACA,MAAOh1B,OAAM,CAACg1B,cAAD,CAAb,CACH,OAAMjvB,CAAN,CAAQ,CAAE,CACd,CACJ,CApBD,CAqBH,CACJ,CAED,MAAO,CACH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAtCW,CAwCH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACExJ,OAAO,CAAC,iBAAS3B,GAAT,CAAcg6B,IAAd,CAAoB,CAClB,GAAIA,IAAI,EAAIA,IAAI,CAACiB,QAAL,EAAiB,OAA7B,CAAsC,CAClClB,OAAO,CAAC/5B,GAAD,CAAMg6B,IAAN,CAAP,CACH,CAFD,IAEO,CACHhB,MAAM,CAACh5B,GAAD,CAAMg6B,IAAN,CAAN,CACH,CACV,CAhEQ,CAiEHkB,QAAQ,CAAC,kBAASl7B,GAAT,CAAcu5B,IAAd,CAAoBvwB,EAApB,CAAwB,CAC7B,GAAIgxB,KAAI,CAAG,CACP,OAAQT,IADD,CAEP,aAAcvwB,EAFP,CAAX,CAIA+wB,OAAO,CAAC/5B,GAAD,CAAMg6B,IAAN,CAAP,CACT,CAvEQ,CAAP,CA2EH,CA3PS,EAAV,CA8PA;AACA;AACA;AACA;AACA,GA5tQW,CA8tQX;AACA;AACA;AACA,GAjuQW,CAouQX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACA,GAAImB,WAAU,CAAG5iC,EAAE,CAAC4iC,UAAH,CAAgB,UAAY,CAEzC;AACA,QAASC,eAAT,CAAyBrxB,GAAzB,CAA+B,CAC3B,MAAO,oEAAmElN,IAAnE,CAAyEkN,GAAzE,CAAP,CACH,CACD;AACA,QAASsxB,UAAT,CAAoB1xB,CAApB,CAAwB,CACpBA,CAAC,CAAGA,CAAC,CAAClL,OAAF,CAAW,YAAX,CAAyB,SAAW8L,CAAX,CAAe,CACxC,MAAO1Q,MAAK,CAACkT,aAAN,CAAoBxC,CAApB,CAAP,CACH,CAFG,CAAJ,CAGA,MAAOZ,EAAP,CACH,CAED,QAAS2xB,gBAAT,CAA0BvxB,GAA1B,CAAgC,CAC5B,MAAOA,IAAG,CAACtL,OAAJ,CAAY,YAAZ,CAAyB,GAAzB,EACEA,OADF,CACW,mBADX,CACgC,EADhC,CAEC;AAFD,CAGEA,OAHF,CAGU,uCAHV,CAGkD,SAASsL,GAAT,CAAa,CAC1D;AACA,GAAGrN,OAAO,CAACoJ,KAAX,CAAiB,CACb,MAAO,EAAP,CACH,CACD,GAAG,CACC;AACA,GAAG,UAAUjJ,IAAV,CAAekN,GAAf,CAAH,CAAuB,CACnB,MAAO,EAAP,CACH,CACD,GAAIyZ,MAAK,CAAGzZ,GAAG,CAACpJ,KAAJ,CAAU,uBAAV,EAAmC,CAAnC,CAAZ,CACI+iB,MAAM,CAAG3Z,GAAG,CAACpJ,KAAJ,CAAU,wBAAV,EAAoC,CAApC,CADb,CAEImE,GAAG,CAAIiF,GAAG,CAACpJ,KAAJ,CAAU,mBAAV,EAA+B,CAA/B,CAFX,CAGA,MAAO,eAAgB06B,SAAS,CAAC7X,KAAD,CAAzB,CAAkC,YAAlC,CAA+C6X,SAAS,CAAC3X,MAAD,CAAxD,CAAkE,SAAlE,CAA8E5e,GAA9E,CAAoF,MAA3F,CACH,CAAC,MAAMqG,CAAN,CAAQ,CACN,MAAO,EAAP,CACH,CACJ,CApBF,CAqBC;AArBD,CAsBE1M,OAtBF,CAsBU,gBAtBV,CAsB2B,EAtB3B,CAuBC;AAvBD,CAwBEA,OAxBF,CAwBW,wBAxBX,CAwBqC,EAxBrC,EAyBEA,OAzBF,CAyBW,yGAzBX,CAyBsH,EAzBtH,EA0BEA,OA1BF,CA0BW,gDA1BX,CA0B6D,4BA1B7D,CA2BC;AA3BD,CA4BEA,OA5BF,CA4BW,iDA5BX,CA4B8D,SAASsL,GAAT,CAAa3Q,IAAb,CAAkBmiC,KAAlB,CAAwBlgC,GAAxB,CAA4B,CACrF;AACA,MAAOjC,KAAI,EAAI,OAAR,EAAmBiC,GAAG,EAAI,kBAA1B,CAA+C0O,GAA/C,CAAqD,EAA5D,CACH,CA/BF,CAgCC;AAhCD,CAiCEtL,OAjCF,CAiCW,iCAjCX,CAiC8C,SAASC,CAAT,CAAW2J,CAAX,CAAaoH,CAAb,CAAe,CACxD,MAAOA,EAAC,CAAChR,OAAF,CAAU,aAAV,CAAwB,GAAxB,CAAP,CACH,CAnCF,CAoCC;AApCD,CAqCEA,OArCF,CAqCW,0CArCX,CAqCuD,SAAUsL,GAAV,CAAeuB,GAAf,CAAoBhO,GAApB,CAAyB2H,KAAzB,CAAiC,CACnF,GAAIhI,EAAC,CAAG,EAAR,CACImL,CAAC,CAAGnD,KAAK,CAACxG,OAAN,CAAe,WAAf,CAA4B,EAA5B,EACCA,OADD,CACS,QADT,CACkB,IADlB,EAECA,OAFD,CAEU,UAFV,CAEsB,GAFtB,EAGCA,OAHD,CAGS,gBAHT,CAG0B,SAASsL,GAAT,CAAa,CACnC,MAAOlQ,MAAK,CAACkT,aAAN,CAAoBhD,GAApB,CAAP,CACH,CALD,EAMClL,KAND,CAMQ,OANR,CADR,CASA,IAAM,GAAIC,EAAC,CAAG,CAAR,CAAU6K,CAAhB,CAAmBA,CAAC,CAAGvB,CAAC,CAACtJ,CAAD,CAAxB,CAA4BA,CAAC,EAA7B,CAAkC,CAE9B,GAAI1F,KAAJ,CAAUuF,KAAV,CACI68B,KAAK,CAAG7xB,CAAC,CAAC9K,KAAF,CAAS,GAAT,CADZ,CAGA,GAAK28B,KAAK,CAACx9B,MAAN,EAAgB,CAArB,CAAyB,CACrB5E,IAAI,CAAGoiC,KAAK,CAAC,CAAD,CAAL,CAAS31B,WAAT,EAAP,CACAlH,KAAK,CAAG68B,KAAK,CAAC,CAAD,CAAL,CAAS31B,WAAT,EAAR,CACA,GAAG,mBAAmBhJ,IAAnB,CAAwBzD,IAAxB,GAAiCuF,KAAK,CAACF,OAAN,CAAc,eAAd,CAA8B,EAA9B,EAAkCT,MAAlC,EAA4C,CAA7E,EAEC,eAAenB,IAAf,CAAoBzD,IAApB,GAA6B,SAASyD,IAAT,CAAc8B,KAAd,CAFjC,CAGC,CACG,SACH,CAED,OAASvF,IAAT,EACI,IAAK,iBAAL,CACA,IAAK,qBAAL,CACA,IAAK,uBAAL,CACA,IAAK,wBAAL,CACA,IAAK,sBAAL,CACA,IAAK,gBAAL,CACA,IAAK,oBAAL,CACA,IAAK,sBAAL,CACA,IAAK,uBAAL,CACA,IAAK,qBAAL,CACA;AACD;AACC,IAAK,YAAL,CACA,IAAK,WAAL,CACA,IAAK,wBAAL,CACI;AACA,GAAG,CAAC,SAASyD,IAAT,CAAcyO,GAAd,CAAJ,CACIrO,CAAC,CAAC6B,CAAD,CAAD,CAAO1F,IAAI,CAACqF,OAAL,CAAc,cAAd,CAA8B,EAA9B,EAAqC,GAArC,CAA2C48B,SAAS,CAAE18B,KAAF,CAA3D,CACJ,SACJ,IAAK,aAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,cAAgBH,KAAvB,CACA,SAEJ,IAAK,YAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,kBAAoBH,KAA3B,CACA,SAEJ,IAAK,YAAL,CACA,IAAK,gBAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,SAAWH,KAAlB,CACA,SAEJ,IAAK,gBAAL,CACA,IAAK,eAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,cAAgBH,KAAvB,CACA,SAEJ,IAAK,oBAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,cAAgBu8B,SAAS,CAAE18B,KAAF,CAAhC,CACA,SAEJ,IAAK,mBAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,aAAeu8B,SAAS,CAAE18B,KAAF,CAA/B,CACA,SAEJ,IAAK,yBAAL,CACI1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,2CAA6Cu8B,SAAS,CAAE18B,KAAF,CAA7D,CACA,SAEJ,IAAK,mBAAL,CACI,GAAMA,KAAK,EAAI,QAAV,EAAwBA,KAAK,EAAI,QAAtC,CAAkD,CAC9C1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,8BAAP,CACH,CACD,SACJ,IAAK,iBAAL,CACI,GAAKH,KAAK,EAAI,KAAd,CAAsB,CAClB1B,CAAC,CAAC6B,CAAD,CAAD,CAAO,cAAP,CACH,CACD,SACpC;AACA;AACgC,IAAK,QAAL,CACI,GAAK,CAAC,QAAQjC,IAAR,CAAc8B,KAAd,CAAN,CAA8B,CAC1B,SACH,CAjET,CAqEA,GAAK,yKAAyK9B,IAAzK,CAA+KzD,IAA/K,GAED,8BAA8ByD,IAA9B,CAAmCzD,IAAnC,GAA4C,WAAWyD,IAAX,CAAgB8B,KAAhB,CAFhD,CAGE,CACE,SACH,CAED1B,CAAC,CAAC6B,CAAD,CAAD,CAAO1F,IAAI,CAAG,GAAP,CAAaoiC,KAAK,CAAC,CAAD,CAAzB,CACH,CACJ,CACD,MAAOlwB,IAAG,EAAIrO,CAAC,CAACe,MAAF,CAAW,WAAaf,CAAC,CAACsO,IAAF,CAAQ,GAAR,EAAa9M,OAAb,CAAqB,QAArB,CAA8B,GAA9B,CAAb,CAAkD,GAA7D,CAAmE,EAAvE,CAAV,CACH,CA9IF,CAAP,CAiJH,CAED,MAAO,UAAWH,IAAX,CAAkB,CACrB,MAAQ88B,eAAc,CAAE98B,IAAF,CAAd,CAAyBg9B,eAAe,CAAEh9B,IAAF,CAAxC,CAAmDA,IAA3D,CACH,CAFD,CAGH,CArKgC,EAAjC,CAuKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GA95QW,CAg6QX;AACA;AACA;AACA;AACA,GAEA,CAAC,UAAY,CAET;AACJ;AACA;AACA;AACA;AACA,OAPa,CAST;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI,GAAIZ,MAAK,CAAGnF,EAAE,CAACmF,KAAH,CAAW,SAAU1F,GAAV,CAAe,CAClC,KAAKY,IAAL,CAAYZ,GAAG,CAACY,IAAhB,CACA,KAAK2gC,IAAL,CAAYvhC,GAAG,CAACuhC,IAAhB,CACA,KAAK/9B,OAAL,CAAexD,GAAG,CAACwD,OAAnB,CACA,KAAKC,UAAL,CAAkBzD,GAAG,CAACyD,UAAtB,CACA,KAAKQ,KAAL,CAAajE,GAAG,CAACiE,KAAJ,EAAa,EAA1B,CACA,KAAKe,QAAL,CAAgBhF,GAAG,CAACgF,QAApB,CACH,CAPD,CASA,GAAIy+B,cAAa,CAAG,CAChB,OAAO,CADS,CAEhB,MAAM,CAFU,CAGhB,OAAO,CAHS,CAIhB,QAAQ,CAJQ,CAKhB,aAAa,CALG,CAApB,CAQA,GAAIC,gBAAe,CAAG,CAClBz2B,KAAK,CAAC,CADY,CAElB8O,MAAM,CAAC,CAFW,CAAtB,CAKA,GAAI4nB,WAAU,CAAG,MAAjB,CACIC,SAAS,CAAG,IADhB,CAGA,QAASC,WAAT,CAAoB1b,GAApB,CAAyBoH,OAAzB,CAAkCuU,KAAlC,CAAyC,CACrC3b,GAAG,CAACvf,IAAJ,CAASg7B,SAAT,EACA,MAAOrU,QAAO,EAAIuU,KAAK,CAAG,CAAH,CAAO,CAAC,CAAjB,CAAd,CACH,CAED,QAASC,aAAT,CAAsB5b,GAAtB,CAA2BoH,OAA3B,CAAoC,CAChC;AACA,IAAK,GAAIzoB,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGyoB,OAApB,CAA6BzoB,CAAC,EAA9B,CAAkC,CAC9BqhB,GAAG,CAACvf,IAAJ,CAAS+6B,UAAT,EACH,CACJ,CAED;AACA;AACAj+B,KAAK,CAACxD,aAAN,CAAsB,SAAUoE,IAAV,CAAgB,CAClC,GAAI,OAAOzB,IAAP,CAAYyB,IAAZ,CAAJ,CAAuB,CACnB,MAAO/F,GAAE,CAAC47B,UAAH,CAAc71B,IAAd,EAAoBtB,QAApB,CAA6B,CAA7B,CAAP,CACH,CAFD,IAEO,CACH,MAAO,IAAIU,MAAJ,CAAU,CACb9E,IAAI,CAAC,SADQ,CAEboE,QAAQ,CAAC,EAFI,CAGbxB,OAAO,CAAC8C,IAHK,CAAV,CAAP,CAKH,CACJ,CAVD,CAWAZ,KAAK,CAACQ,UAAN,CAAmB,SAAUq7B,IAAV,CAAeyC,OAAf,CAAwB,CACvC,MAAO,IAAIzjC,GAAE,CAACmF,KAAP,CAAa,CAChB9E,IAAI,CAAC,MADW,CAEhB,OAAOojC,OAAO,CAAGzC,IAAH,CAAU1/B,KAAK,CAACuQ,MAAN,CAAamvB,IAAI,EAAI,EAArB,CAFR,CAAb,CAAP,CAIH,CALD,CAMA,QAAS0C,WAAT,CAAoB1gC,IAApB,CAA0B4kB,GAA1B,CAA+B+T,SAA/B,CAA0C3M,OAA1C,CAAmD,CAC/C,OAAQhsB,IAAI,CAAC3C,IAAb,EACI,IAAK,MAAL,CACI,IAAK,GAAIkG,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG5O,IAAI,CAACyB,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1C;AACA,GAAIo1B,SAAS,EAAI/pB,EAAE,CAACvR,IAAH,EAAW,SAAxB,EAAqC,CAACgD,GAAG,CAAC+b,YAAJ,CAAiBxN,EAAE,CAAC3O,OAApB,CAAtC,EAAsEsD,CAAC,CAAG,CAA9E,CAAiF,CAC7E+8B,UAAU,CAAC1b,GAAD,CAAMoH,OAAN,CAAe,IAAf,CAAV,CACAwU,YAAY,CAAC5b,GAAD,CAAMoH,OAAN,CAAZ,CACH,CACD0U,UAAU,CAAC9xB,EAAD,CAAKgW,GAAL,CAAU+T,SAAV,CAAqB3M,OAArB,CAAV,CACH,CACD,MACJ,IAAK,MAAL,CACI2U,MAAM,CAAC3gC,IAAD,CAAO4kB,GAAP,CAAN,CACA,MACJ,IAAK,SAAL,CACIgc,SAAS,CAAC5gC,IAAD,CAAO4kB,GAAP,CAAY+T,SAAZ,CAAuB3M,OAAvB,CAAT,CACA,MACJ,IAAK,SAAL,CACI6U,SAAS,CAAC7gC,IAAD,CAAO4kB,GAAP,CAAY+T,SAAZ,CAAT,CAlBR,CAoBA,MAAO/T,IAAP,CACH,CAED,QAAS+b,OAAT,CAAgB3gC,IAAhB,CAAsB4kB,GAAtB,CAA2B,CACvB,GAAG5kB,IAAI,CAACE,UAAL,CAAgBD,OAAhB,EAA2B,KAA9B,CAAoC,CAChC;AACA2kB,GAAG,CAACvf,IAAJ,CAASrF,IAAI,CAACg+B,IAAd,EACH,CAHD,IAGK,CACDpZ,GAAG,CAACvf,IAAJ,CAAS86B,eAAe,CAACngC,IAAI,CAACE,UAAL,CAAgBD,OAAjB,CAAf,CAA2C3B,KAAK,CAACyE,IAAN,CAAW/C,IAAI,CAACg+B,IAAhB,CAA3C,CAAmEh+B,IAAI,CAACg+B,IAAL,CAAU96B,OAAV,CAAkB,SAAlB,CAA4B,SAA5B,CAA5E,EACH,CAEJ,CAED,QAAS09B,UAAT,CAAmB5gC,IAAnB,CAAyB4kB,GAAzB,CAA8B+T,SAA9B,CAAyC3M,OAAzC,CAAkD,CAC9C,GAAI8U,SAAQ,CAAG,EAAf,CACA,GAAI9gC,IAAI,CAACU,KAAT,CAAgB,CACZogC,QAAQ,CAAG,EAAX,CACA,GAAIpgC,MAAK,CAAGV,IAAI,CAACU,KAAjB,CACA,IAAK,GAAIyC,EAAT,GAAczC,MAAd,CAAqB,CACjB;AACA;AACA;AACA;AACAogC,QAAQ,CAACz7B,IAAT,CAAclC,CAAC,EAAIzC,KAAK,CAACyC,CAAD,CAAL,GAAaiM,SAAb,CAAyB,MAAQ8wB,aAAa,CAAC/8B,CAAD,CAAb,CAAmB7E,KAAK,CAACyE,IAAN,CAAWrC,KAAK,CAACyC,CAAD,CAAhB,EAAqBD,OAArB,CAA6B,MAA7B,CAAqC,SAAUC,CAAV,CAAa,CACtH,MAAO,QAAP,CACF,CAFsE,CAAnB,CAE/C7E,KAAK,CAACuQ,MAAN,CAAanO,KAAK,CAACyC,CAAD,CAAlB,CAFuC,EAEb,GAFZ,CAEkB,EAFtB,CAAf,EAGH,CACD29B,QAAQ,CAAGA,QAAQ,CAAC9wB,IAAT,CAAc,GAAd,CAAX,CACH,CACD4U,GAAG,CAACvf,IAAJ,CAAS,IAAMrF,IAAI,CAACC,OAAX,EACJ6gC,QAAQ,CAAG,IAAMA,QAAT,CAAqB,EADzB,GAEJzgC,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,EAA2B,IAA3B,CAAkC,EAF9B,EAEqC,GAF9C,EAIA;AACA,GAAI04B,SAAS,EAAM,CAACt4B,GAAG,CAAC+b,YAAJ,CAAiBpc,IAAI,CAACC,OAAtB,CAAhB,EAAkDD,IAAI,CAACC,OAAL,EAAgB,KAAtE,CAA6E,CACzE,GAAGD,IAAI,CAACyB,QAAL,EAAiBzB,IAAI,CAACyB,QAAL,CAAcgB,MAAlC,CAAyC,CACrCupB,OAAO,CAAGsU,UAAU,CAAC1b,GAAD,CAAMoH,OAAN,CAAe,IAAf,CAApB,CACAwU,YAAY,CAAC5b,GAAD,CAAMoH,OAAN,CAAZ,CACH,CAEJ,CACD,GAAIhsB,IAAI,CAACyB,QAAL,EAAiBzB,IAAI,CAACyB,QAAL,CAAcgB,MAAnC,CAA2C,CACvC,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG5O,IAAI,CAACyB,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1C,GAAIo1B,SAAS,EAAI/pB,EAAE,CAACvR,IAAH,EAAW,SAAxB,EAAsC,CAACgD,GAAG,CAAC+b,YAAJ,CAAiBxN,EAAE,CAAC3O,OAApB,CAAvC,EAAuEsD,CAAC,CAAG,CAA/E,CAAkF,CAC9E+8B,UAAU,CAAC1b,GAAD,CAAMoH,OAAN,CAAV,CACAwU,YAAY,CAAC5b,GAAD,CAAMoH,OAAN,CAAZ,CACH,CACD0U,UAAU,CAAC9xB,EAAD,CAAKgW,GAAL,CAAU+T,SAAV,CAAqB3M,OAArB,CAAV,CACH,CACJ,CACD,GAAI,CAAC3rB,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,CAAL,CAA+B,CAC3B,GAAI04B,SAAS,EAAI,CAACt4B,GAAG,CAAC+b,YAAJ,CAAiBpc,IAAI,CAACC,OAAtB,CAAd,EAAiDD,IAAI,CAACC,OAAL,EAAgB,KAArE,CAA4E,CAExE,GAAGD,IAAI,CAACyB,QAAL,EAAiBzB,IAAI,CAACyB,QAAL,CAAcgB,MAAlC,CAAyC,CACrCupB,OAAO,CAAGsU,UAAU,CAAC1b,GAAD,CAAMoH,OAAN,CAApB,CACAwU,YAAY,CAAC5b,GAAD,CAAMoH,OAAN,CAAZ,CACH,CACJ,CACDpH,GAAG,CAACvf,IAAJ,CAAS,MAAQrF,IAAI,CAACC,OAAb,CAAuB,GAAhC,EACH,CAEJ,CAED,QAAS4gC,UAAT,CAAmB7gC,IAAnB,CAAyB4kB,GAAzB,CAA8B,CAC1BA,GAAG,CAACvf,IAAJ,CAAS,OAASrF,IAAI,CAACg+B,IAAd,CAAqB,KAA9B,EACH,CAED,QAAS+C,aAAT,CAAqBnhC,IAArB,CAA2BqQ,EAA3B,CAA+B,CAC3B,GAAIjQ,KAAJ,CACA,GAAIJ,IAAI,CAACvC,IAAL,EAAa,SAAb,EAA0BuC,IAAI,CAACsB,OAAL,CAAa,IAAb,GAAsB+O,EAApD,CAAwD,CACpD,MAAOrQ,KAAP,CACH,CACD,GAAIA,IAAI,CAAC6B,QAAL,EAAiB7B,IAAI,CAAC6B,QAAL,CAAcgB,MAAnC,CAA2C,CACvC,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGhP,IAAI,CAAC6B,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1C,GAAIvD,IAAI,CAAG+gC,YAAW,CAACnyB,EAAD,CAAKqB,EAAL,CAAtB,CAAgC,CAC5B,MAAOjQ,KAAP,CACH,CACJ,CACJ,CACJ,CAED,QAASwC,mBAAT,CAA2BxC,IAA3B,CAAiCC,OAAjC,CAA0C2kB,GAA1C,CAA+C,CAC3C,GAAI5kB,IAAI,CAAC3C,IAAL,EAAa,SAAb,EAA0B2C,IAAI,CAACC,OAAL,EAAgBA,OAA9C,CAAuD,CACnD2kB,GAAG,CAACvf,IAAJ,CAASrF,IAAT,EACH,CACD,GAAIA,IAAI,CAACyB,QAAL,EAAiBzB,IAAI,CAACyB,QAAL,CAAcgB,MAAnC,CAA2C,CACvC,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG5O,IAAI,CAACyB,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1Cf,kBAAiB,CAACoM,EAAD,CAAK3O,OAAL,CAAc2kB,GAAd,CAAjB,CACH,CACJ,CACJ,CACD,QAASoc,cAAT,CAAuBphC,IAAvB,CAA4B6N,EAA5B,CAA+B,CAC3B,GAAG7N,IAAI,CAAC6B,QAAL,EAAiB7B,IAAI,CAAC6B,QAAL,CAAcgB,MAAlC,CAAyC,CACrC,IAAI,GAAIc,EAAC,CAAE,CAAP,CAASqL,EAAb,CAAgBA,EAAE,CAAChP,IAAI,CAAC6B,QAAL,CAAc8B,CAAd,CAAnB,EAAqC,CACjCy9B,aAAa,CAACpyB,EAAD,CAAInB,EAAJ,CAAb,CACA;AACA,GAAGmB,EAAE,CAAC1O,UAAN,CAAkB,CACd,GAAG0O,EAAE,CAACnN,QAAH,EAAemN,EAAE,CAACnN,QAAH,CAAYgB,MAA9B,CAAqC,CACjCgL,EAAE,CAACmB,EAAD,CAAF,CACH,CACD,GAAGA,EAAE,CAAC1O,UAAN,CAAkBqD,CAAC,GACtB,CACJ,CACJ,CAXD,IAWK,CACDkK,EAAE,CAAC7N,IAAD,CAAF,CACH,CAEJ,CACDuC,KAAK,CAACpF,SAAN,CAAkB,CAEd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAVsB,CAYd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ+7B,MAAM,CAAC,gBAAUH,SAAV,CAAqB,CACxB,GAAI/T,IAAG,CAAG,EAAV,CACA8b,UAAU,CAAC,IAAD,CAAO9b,GAAP,CAAY+T,SAAZ,CAAuB,CAAvB,CAAV,CACA,MAAO/T,IAAG,CAAC5U,IAAJ,CAAS,EAAT,CAAP,CACH,CA1Ba,CA4Bd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WArCsB,CAuCd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ/O,SAAS,CAAC,mBAAUggC,OAAV,CAAmB,CACzB,GAAI,KAAK5jC,IAAL,EAAa,SAAb,EAA0BgD,GAAG,CAACI,MAAJ,CAAW,KAAKR,OAAhB,CAA9B,CAAwD,CACpD,MAAO,KAAP,CACH,CACD,GAAI3B,KAAK,CAACoS,QAAN,CAAeuwB,OAAf,CAAJ,CAA6B,CACzB,GAAG,KAAKx/B,QAAR,CAAiB,CACb,IAAK,GAAI8B,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1CqL,EAAE,CAAC1O,UAAH,CAAgB,IAAhB,CACH,CACJ,CACD,KAAKuB,QAAL,CAAgB,EAAhB,CACA,GAAIy/B,QAAO,CAAGlkC,EAAE,CAAC47B,UAAH,CAAcqI,OAAd,CAAd,CACA,IAAK,GAAI19B,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGsyB,OAAO,CAACz/B,QAAR,CAAiB8B,CAAC,EAAlB,CAAzB,EAAiD,CAC7C,KAAK9B,QAAL,CAAc4D,IAAd,CAAmBuJ,EAAnB,EACAA,EAAE,CAAC1O,UAAH,CAAgB,IAAhB,CACH,CACD,MAAO,KAAP,CACH,CAbD,IAaO,CACH,GAAIghC,QAAO,CAAG,GAAIlkC,GAAE,CAACmF,KAAP,CAAa,CACvB9E,IAAI,CAAC,MADkB,CAEvBoE,QAAQ,CAAC,KAAKA,QAFS,CAAb,CAAd,CAIA,MAAOy/B,QAAO,CAACpI,MAAR,EAAP,CACH,CACJ,CA1Ea,CA4Ed;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WArFsB,CAuFd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQj2B,SAAS,CAAC,mBAAUs+B,OAAV,CAAkBV,OAAlB,CAA2B,CACjC,GAAI,KAAKpjC,IAAL,EAAa,SAAb,EAA0BgD,GAAG,CAACI,MAAJ,CAAW,KAAKR,OAAhB,CAA9B,CAAwD,CACpD,MAAO,KAAP,CACH,CACD,GAAIkhC,OAAJ,CAAa,CACT,GAAG,KAAK1/B,QAAR,CAAiB,CACb,IAAK,GAAI8B,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1CqL,EAAE,CAAC1O,UAAH,CAAgB,IAAhB,CACH,CACJ,CACD,KAAKuB,QAAL,CAAgB,EAAhB,CACA,KAAKY,WAAL,CAAiBF,KAAK,CAACQ,UAAN,CAAiBw+B,OAAjB,CAAyBV,OAAzB,CAAjB,EACA,MAAO,KAAP,CACH,CATD,IASO,CACH,MAAO,MAAK3H,MAAL,GAAc51B,OAAd,CAAsB,UAAtB,CAAkC,EAAlC,CAAP,CACH,CACJ,CAlHa,CAoHd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQk+B,OAAO,CAAC,kBAAY,CAChB,GAAI,KAAK/jC,IAAL,EAAa,SAAjB,CACI,MAAO,EAAP,CACJ,MAAO,MAAK2gC,IAAZ,CACH,CAjIa,CAmId;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQp9B,UAAU,CAAC,qBAAY,CAC/B;AACA;AACA;AACY,MAAO,MAAKa,QAAL,CAAgB,KAAKA,QAAL,CAAc,CAAd,CAAhB,CAAmC,IAA1C,CACH,CAjJa,CAmJd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ0jB,SAAS,CAAC,oBAAY,CAC9B;AACA;AACA;AACY,MAAO,MAAK1jB,QAAL,CAAgB,KAAKA,QAAL,CAAc,KAAKA,QAAL,CAAcgB,MAAd,CAAuB,CAArC,CAAhB,CAA0D,IAAjE,CACH,CAjKa,CAmKd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQwd,eAAe,CAAG,0BAAU,CACxB,GAAInC,OAAM,CAAG,KAAK5d,UAAlB,CACA,IAAK,GAAIqD,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGkP,MAAM,CAACrc,QAAP,CAAgB8B,CAAhB,CAAzB,CAA6CA,CAAC,EAA9C,CAAkD,CAC9C,GAAIqL,EAAE,GAAK,IAAX,CAAiB,CACd,MAAOrL,EAAC,EAAI,CAAL,CAAS,IAAT,CAAgBua,MAAM,CAACrc,QAAP,CAAgB8B,CAAC,CAAC,CAAlB,CAAvB,CACF,CACJ,CAEJ,CApLa,CAsLd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ3B,WAAW,CAAG,sBAAU,CACpB,GAAIkc,OAAM,CAAG,KAAK5d,UAAlB,CACA,IAAK,GAAIqD,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGkP,MAAM,CAACrc,QAAP,CAAgB8B,CAAC,EAAjB,CAAzB,EAAgD,CAC5C,GAAIqL,EAAE,GAAK,IAAX,CAAiB,CACb,MAAOkP,OAAM,CAACrc,QAAP,CAAgB8B,CAAhB,CAAP,CACH,CACJ,CACJ,CAtMa,CAwMd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ89B,YAAY,CAAC,sBAAU9vB,MAAV,CAAkBD,MAAlB,CAA0B,CACnC,GAAI,KAAK7P,QAAT,CAAmB,CACf,GAAG8P,MAAM,CAACrR,UAAV,CAAqB,CACjBqR,MAAM,CAACrR,UAAP,CAAkBW,WAAlB,CAA8B0Q,MAA9B,EACH,CACD,IAAK,GAAIhO,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAd,CAAzB,CAA2CA,CAAC,EAA5C,CAAgD,CAC5C,GAAIqL,EAAE,GAAK0C,MAAX,CAAmB,CACf,KAAK7P,QAAL,CAAc6M,MAAd,CAAqB/K,CAArB,CAAwB,CAAxB,CAA2BgO,MAA3B,EACAD,MAAM,CAACpR,UAAP,CAAoB,IAApB,CACAqR,MAAM,CAACrR,UAAP,CAAoB,IAApB,CACA,MAAOqR,OAAP,CACH,CACJ,CACJ,CACJ,CAjOa,CAmOd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQlP,WAAW,CAAC,qBAAUrC,IAAV,CAAgB,CACxB,GAAI,KAAK3C,IAAL,EAAa,MAAb,EAAwB,KAAKA,IAAL,EAAa,SAAb,EAA0B,CAACgD,GAAG,CAACI,MAAJ,CAAW,KAAKR,OAAhB,CAAvD,CAAkF,CAC9E,GAAI,CAAC,KAAKwB,QAAV,CAAoB,CAChB,KAAKA,QAAL,CAAgB,EAAhB,CACH,CACD,GAAGzB,IAAI,CAACE,UAAR,CAAmB,CACfF,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CACD,IAAK,GAAIuD,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAd,CAAzB,CAA2CA,CAAC,EAA5C,CAAgD,CAC5C,GAAIqL,EAAE,GAAK5O,IAAX,CAAiB,CACb,KAAKyB,QAAL,CAAc6M,MAAd,CAAqB/K,CAArB,CAAwB,CAAxB,EACA,MACH,CACJ,CACD,KAAK9B,QAAL,CAAc4D,IAAd,CAAmBrF,IAAnB,EACAA,IAAI,CAACE,UAAL,CAAkB,IAAlB,CACA,MAAOF,KAAP,CACH,CAGJ,CAjQa,CAmQd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQsC,YAAY,CAAC,sBAAUiP,MAAV,CAAkBD,MAAlB,CAA0B,CACnC,GAAI,KAAK7P,QAAT,CAAmB,CACf,GAAG8P,MAAM,CAACrR,UAAV,CAAqB,CACjBqR,MAAM,CAACrR,UAAP,CAAkBW,WAAlB,CAA8B0Q,MAA9B,EACH,CACD,IAAK,GAAIhO,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAd,CAAzB,CAA2CA,CAAC,EAA5C,CAAgD,CAC5C,GAAIqL,EAAE,GAAK0C,MAAX,CAAmB,CACf,KAAK7P,QAAL,CAAc6M,MAAd,CAAqB/K,CAArB,CAAwB,CAAxB,CAA2BgO,MAA3B,EACAA,MAAM,CAACrR,UAAP,CAAoB,IAApB,CACA,MAAOqR,OAAP,CACH,CACJ,CAEJ,CACJ,CA5Ra,CA8Rd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ1P,WAAW,CAAC,qBAAU0P,MAAV,CAAkBD,MAAlB,CAA0B,CAClC,GAAI,KAAK7P,QAAT,CAAmB,CACf,GAAG8P,MAAM,CAACrR,UAAV,CAAqB,CACjBqR,MAAM,CAACrR,UAAP,CAAkBW,WAAlB,CAA8B0Q,MAA9B,EACH,CACD,IAAK,GAAIhO,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAd,CAAzB,CAA2CA,CAAC,EAA5C,CAAgD,CAC5C,GAAIqL,EAAE,GAAK0C,MAAX,CAAmB,CACf,KAAK7P,QAAL,CAAc6M,MAAd,CAAqB/K,CAAC,CAAG,CAAzB,CAA4B,CAA5B,CAA+BgO,MAA/B,EACAA,MAAM,CAACrR,UAAP,CAAoB,IAApB,CACA,MAAOqR,OAAP,CACH,CAEJ,CACJ,CACJ,CAvTa,CAyTd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ1Q,WAAW,CAAC,qBAAUb,IAAV,CAAe+gB,YAAf,CAA6B,CACrC,GAAI,KAAKtf,QAAT,CAAmB,CACf,IAAK,GAAI8B,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAd,CAAzB,CAA2CA,CAAC,EAA5C,CAAgD,CAC5C,GAAIqL,EAAE,GAAK5O,IAAX,CAAiB,CACb,KAAKyB,QAAL,CAAc6M,MAAd,CAAqB/K,CAArB,CAAwB,CAAxB,EACAqL,EAAE,CAAC1O,UAAH,CAAgB,IAAhB,CACA,GAAG6gB,YAAY,EAAInS,EAAE,CAACnN,QAAnB,EAA+BmN,EAAE,CAACnN,QAAH,CAAYgB,MAA9C,CAAqD,CACjD,IAAI,GAAI4Q,EAAC,CAAE,CAAP,CAASiuB,EAAb,CAAgBA,EAAE,CAAC1yB,EAAE,CAACnN,QAAH,CAAY4R,CAAZ,CAAnB,CAAkCA,CAAC,EAAnC,CAAsC,CAClC,KAAK5R,QAAL,CAAc6M,MAAd,CAAqB/K,CAAC,CAAC8P,CAAvB,CAAyB,CAAzB,CAA2BiuB,EAA3B,EACAA,EAAE,CAACphC,UAAH,CAAgB,IAAhB,CAEH,CACJ,CACD,MAAO0O,GAAP,CACH,CACJ,CACJ,CACJ,CArVa,CAuVd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ1N,OAAO,CAAC,iBAAUqgC,QAAV,CAAoB,CACxB,MAAO,MAAK7gC,KAAL,EAAc,KAAKA,KAAL,CAAW6gC,QAAQ,CAACj3B,WAAT,EAAX,CAArB,CACH,CAnWa,CAqWd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQxJ,OAAO,CAAC,iBAAUygC,QAAV,CAAoBC,OAApB,CAA6B,CACjC,GAAI,CAACD,QAAL,CAAe,CACX,MAAO,MAAK7gC,KAAZ,CACA,OACH,CACD,GAAG,CAAC,KAAKA,KAAT,CAAe,CACX,KAAKA,KAAL,CAAa,EAAb,CACH,CACD,GAAIpC,KAAK,CAACmjC,QAAN,CAAeF,QAAf,CAAJ,CAA8B,CAC1B,IAAK,GAAIp+B,EAAT,GAAco+B,SAAd,CAAwB,CACpB,GAAI,CAACA,QAAQ,CAACp+B,CAAD,CAAb,CAAkB,CACd,MAAO,MAAKzC,KAAL,CAAWyC,CAAX,CAAP,CACH,CAFD,IAEO,CACH,KAAKzC,KAAL,CAAWyC,CAAC,CAACmH,WAAF,EAAX,EAA8Bi3B,QAAQ,CAACp+B,CAAD,CAAtC,CACH,CACJ,CACJ,CARD,IAQO,CACH,GAAI,CAACq+B,OAAL,CAAc,CACV,MAAO,MAAK9gC,KAAL,CAAW6gC,QAAX,CAAP,CACH,CAFD,IAEO,CACH,KAAK7gC,KAAL,CAAW6gC,QAAQ,CAACj3B,WAAT,EAAX,EAAqCk3B,OAArC,CACH,CAEJ,CACJ,CAxYa,CA0Yd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ9P,QAAQ,CAAC,mBAAU,CACf,GAAI5T,OAAM,CAAG,KAAK5d,UAAlB,CACA,IAAI,GAAIqD,EAAC,CAAE,CAAP,CAASqL,EAAb,CAAgBA,EAAE,CAACkP,MAAM,CAACrc,QAAP,CAAgB8B,CAAhB,CAAnB,CAAsCA,CAAC,EAAvC,CAA0C,CACtC,GAAGqL,EAAE,GAAK,IAAV,CAAe,CACX,MAAOrL,EAAP,CACH,CACJ,CACD,MAAO,CAAC,CAAR,CACH,CA3Za,CA6Zd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQw9B,WAAW,CAAC,qBAAU9wB,EAAV,CAAc,CACtB,GAAIjQ,KAAJ,CACA,GAAI,KAAKyB,QAAL,EAAiB,KAAKA,QAAL,CAAcgB,MAAnC,CAA2C,CACvC,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAG,KAAKnN,QAAL,CAAc8B,CAAC,EAAf,CAAzB,EAA8C,CAC1C,GAAIvD,IAAI,CAAG+gC,YAAW,CAACnyB,EAAD,CAAKqB,EAAL,CAAtB,CAAgC,CAC5B,MAAOjQ,KAAP,CACH,CACJ,CACJ,CACJ,CAhba,CAkbd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQwC,iBAAiB,CAAC,2BAAUge,QAAV,CAAoB,CAClCA,QAAQ,CAAGliB,KAAK,CAACiQ,IAAN,CAAWiS,QAAX,EAAqBtd,OAArB,CAA6B,UAA7B,CAAyC,GAAzC,EAA8CI,KAA9C,CAAoD,GAApD,CAAX,CACA,GAAIshB,IAAG,CAAG,EAAV,CAAcnlB,EAAE,CAAG,IAAnB,CACAnB,KAAK,CAACkD,IAAN,CAAWgf,QAAX,CAAqB,SAAUvgB,OAAV,CAAmB,CACpC,GAAIR,EAAE,CAACgC,QAAH,EAAehC,EAAE,CAACgC,QAAH,CAAYgB,MAA/B,CAAuC,CACnC,IAAK,GAAIc,EAAC,CAAG,CAAR,CAAWqL,EAAhB,CAAoBA,EAAE,CAAGnP,EAAE,CAACgC,QAAH,CAAY8B,CAAC,EAAb,CAAzB,EAA4C,CACxCf,kBAAiB,CAACoM,EAAD,CAAK3O,OAAL,CAAc2kB,GAAd,CAAjB,CACH,CACJ,CACJ,CAND,EAOA,MAAOA,IAAP,CACH,CAvca,CAycd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQvjB,QAAQ,CAAC,kBAAUxD,IAAV,CAAgB,CACrB,GAAIoF,SAAQ,CAAG,KAAK/B,OAAL,CAAa,OAAb,CAAf,CACA,GAAI,CAAC+B,QAAL,CAAe,CACX,MAAO,EAAP,CACH,CACD,GAAI6L,IAAG,CAAG,GAAIjD,OAAJ,CAAW,YAAchO,IAAd,CAAqB,UAAhC,CAA2C,GAA3C,CAAV,CACA,GAAIuH,MAAK,CAAGnC,QAAQ,CAACmC,KAAT,CAAe0J,GAAf,CAAZ,CACA,GAAI1J,KAAK,EAAIA,KAAK,CAAC,CAAD,CAAlB,CAAuB,CACnB,MAAOA,MAAK,CAAC,CAAD,CAAZ,CACH,CACD,MAAO,EAAP,CACH,CA9da,CAged;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ7D,QAAQ,CAAC,kBAAU1D,IAAV,CAAgBiC,GAAhB,CAAqB,CAC1B,QAASq/B,KAAT,CAActhC,IAAd,CAAoBiC,GAApB,CAAyB,CACrB,GAAIgP,IAAG,CAAG,GAAIjD,OAAJ,CAAW,YAAchO,IAAd,CAAqB,YAAhC,CAA8C,IAA9C,CAAV,CACAoF,QAAQ,CAAGA,QAAQ,CAACC,OAAT,CAAiB4L,GAAjB,CAAsB,IAAtB,CAAX,CACA,GAAIhP,GAAJ,CAAS,CACLmD,QAAQ,CAAGpF,IAAI,CAAG,GAAP,CAAaS,KAAK,CAACuQ,MAAN,CAAa/O,GAAb,CAAb,CAAiC,GAAjC,CAAuCmD,QAAlD,CACH,CAEJ,CAED,GAAIA,SAAQ,CAAG,KAAK/B,OAAL,CAAa,OAAb,CAAf,CACA,GAAI,CAAC+B,QAAL,CAAe,CACXA,QAAQ,CAAG,EAAX,CACH,CACD,GAAI3E,KAAK,CAACmjC,QAAN,CAAe5jC,IAAf,CAAJ,CAA0B,CACtB,IAAK,GAAIsF,EAAT,GAActF,KAAd,CAAoB,CAChBshC,IAAI,CAACh8B,CAAD,CAAItF,IAAI,CAACsF,CAAD,CAAR,CAAJ,CACH,CACJ,CAJD,IAIO,CACHg8B,IAAI,CAACthC,IAAD,CAAOiC,GAAP,CAAJ,CACH,CACD,KAAKgB,OAAL,CAAa,OAAb,CAAsBxC,KAAK,CAACiQ,IAAN,CAAWtL,QAAX,CAAtB,EACH,CAhgBa,CAkgBd;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WACQ9C,SAAS,CAAC,mBAASsN,EAAT,CAAY,CAClB,GAAG,KAAKhM,QAAL,EAAiB,KAAKA,QAAL,CAAcgB,MAAlC,CAAyC,CACrCu+B,aAAa,CAAC,IAAD,CAAMvzB,EAAN,CAAb,CACH,CACD,MAAO,KAAP,CACH,CAlhBa,CAAlB,CAohBH,CAnuBD,IAsuBA;AACA;AACA;AACA;AACA;AACA;AACA,GAlpSW,CAopSX;AACA;AACA;AACA;AACA,GAxpSW,CA0pSX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,GAAImrB,WAAU,CAAG57B,EAAE,CAAC47B,UAAH,CAAgB,SAAUqI,OAAV,CAAkBvI,WAAlB,CAA+B,CAC5D;AACA;AACA,GAAIgJ,OAAM,CAAG,0GAAb,CACIC,OAAO,CAAG,+EADd,CAGA;AACA,GAAIC,eAAc,CAAG,CACjB90B,CAAC,CAAC,CADe,CACb+L,IAAI,CAAC,CADQ,CACNtV,CAAC,CAAC,CADI,CACFmO,CAAC,CAAC,CADA,CACEuH,MAAM,CAAC,CADT,CACWpM,CAAC,CAAC,CADb,CACeqM,EAAE,CAAC,CADlB,CACoBC,MAAM,CAAC,CAD3B,CAC6BC,CAAC,CAAC,CAD/B,CACiCC,IAAI,CAAC,CADtC,CACwCC,EAAE,CAAC,CAD3C,CAC6CE,IAAI,CAAC,CADlD,CAEjBE,GAAG,CAAC,CAFa,CAEXC,GAAG,CAAC,CAFO,CAELG,GAAG,CAAC,CAFC,CAECI,IAAI,CAAC,CAFN,CAEQC,GAAG,CAAC,CAFZ,CAEcC,KAAK,CAAC,CAFpB,CAEsBrD,MAAM,CAAC,CAF7B,CAE+B5T,CAAC,CAAC,CAFjC,CAEmC2V,EAAE,CAAC,CAFtC,CAEwCnB,GAAG,CAAC,CAF5C,CAArB,CAIAspB,OAAO,CAAGA,OAAO,CAAC/9B,OAAR,CAAgB,GAAI2I,OAAJ,CAAW6S,QAAQ,CAACY,QAApB,CAA8B,GAA9B,CAAhB,CAAoD,EAApD,CAAV,CACA,GAAG,CAACoZ,WAAJ,CAAgB,CACZuI,OAAO,CAAGA,OAAO,CAAC/9B,OAAR,CAAgB,GAAI2I,OAAJ,CAAW,cAAc6sB,WAAW,CAAC,EAAD,CAAI,GAA7B,EAAkC,sCAAlC,EAA0EA,WAAW,CAAC,EAAD,CAAI,GAAzF,EAA8F,IAAzG,CAA8G,GAA9G,CAAhB,CAAoI,SAASv1B,CAAT,CAAW2J,CAAX,CAAa,CACvJ;AACA,GAAGA,CAAC,EAAI80B,cAAc,CAAC90B,CAAC,CAACxC,WAAF,EAAD,CAAtB,CAAwC,CACpC,MAAOnH,EAAC,CAACD,OAAF,CAAU,wBAAV,CAAmC,EAAnC,CAAP,CACH,CACD,MAAOC,EAAC,CAACD,OAAF,CAAU,GAAI2I,OAAJ,CAAW,YAAY6sB,WAAW,CAAC,EAAD,CAAI,GAA3B,EAAgC,IAA3C,CAAV,CAA2D,EAA3D,EAA+Dx1B,OAA/D,CAAuE,GAAI2I,OAAJ,CAAW,WAAW6sB,WAAW,CAAC,EAAD,CAAI,GAA1B,EAA+B,KAA1C,CAAvE,CAAwH,EAAxH,CAAP,CACH,CANS,CAAV,CAOH,CAED,GAAIwH,cAAa,CAAG,CAChB,OAAO,CADS,CAEhB,MAAM,CAFU,CAApB,CAKA,GAAI/9B,MAAK,CAAGnF,EAAE,CAACmF,KAAf,CACI0/B,cAAc,CAAG,CACb,KAAK,IADQ,CAEb,KAAK,CAAC,OAAD,CAAS,OAAT,CAAiB,OAAjB,CAFQ,CAGb,QAAQ,OAHK,CAIb,KAAK,IAJQ,CAKb,QAAQ,OALK,CAMb,QAAQ,OANK,CAOb,UAAU,OAPG,CAQb,KAAK,CAAC,IAAD,CAAO,IAAP,CARQ,CASb,KAAK,IATQ,CAUb,KAAK,IAVQ,CAWb,SAAS,QAXI,CADrB,CAcIC,SAAS,CAAG,CACR,KAAK,IADG,CAER,KAAK,IAFG,CAdhB,CAmBA,QAASxkC,KAAT,CAAcwgB,MAAd,CAAsBkgB,IAAtB,CAA4B,CAExB,GAAG8D,SAAS,CAAChkB,MAAM,CAAC7d,OAAR,CAAZ,CAA6B,CACzB,GAAIgC,QAAO,CAAGE,KAAK,CAACxD,aAAN,CAAoBmjC,SAAS,CAAChkB,MAAM,CAAC7d,OAAR,CAA7B,CAAd,CACA6d,MAAM,CAACzb,WAAP,CAAmBJ,OAAnB,EACAA,OAAO,CAACI,WAAR,CAAoBF,KAAK,CAACQ,UAAN,CAAiBq7B,IAAjB,CAApB,EACAlgB,MAAM,CAAG7b,OAAT,CACH,CALD,IAKK,CAED6b,MAAM,CAACzb,WAAP,CAAmBF,KAAK,CAACQ,UAAN,CAAiBq7B,IAAjB,CAAnB,EACH,CACJ,CAED,QAAS7tB,QAAT,CAAiB2N,MAAjB,CAAyB7d,OAAzB,CAAkC8hC,QAAlC,CAA4C,CACxC,GAAIC,cAAJ,CACA,GAAIA,aAAa,CAAGH,cAAc,CAAC5hC,OAAD,CAAlC,CAA6C,CACzC,GAAIgiC,UAAS,CAAGnkB,MAAhB,CAAuBokB,SAAvB,CACA,MAAMD,SAAS,CAAC5kC,IAAV,EAAkB,MAAxB,CAA+B,CAC3B,GAAGiB,KAAK,CAACqQ,OAAN,CAAcqzB,aAAd,EAA+B1jC,KAAK,CAACqG,OAAN,CAAcq9B,aAAd,CAA6BC,SAAS,CAAChiC,OAAvC,GAAmD,CAAC,CAAnF,CAAuF+hC,aAAa,EAAIC,SAAS,CAAChiC,OAArH,CAA6H,CACzH6d,MAAM,CAAGmkB,SAAT,CACAC,SAAS,CAAG,IAAZ,CACA,MACH,CACDD,SAAS,CAAGA,SAAS,CAAC/hC,UAAtB,CACH,CACD,GAAG,CAACgiC,SAAJ,CAAc,CACVpkB,MAAM,CAAG3N,OAAO,CAAC2N,MAAD,CAASxf,KAAK,CAACqQ,OAAN,CAAcqzB,aAAd,EAA+BA,aAAa,CAAC,CAAD,CAA5C,CAAkDA,aAA3D,CAAhB,CACH,CACJ,CACD;AACR;AACA;AACQ,GAAIpb,IAAG,CAAG,GAAIzkB,MAAJ,CAAU,CAChBjC,UAAU,CAAC4d,MADK,CAEhBzgB,IAAI,CAAC,SAFW,CAGhB4C,OAAO,CAACA,OAAO,CAACqK,WAAR,EAHQ,CAIhB;AACA7I,QAAQ,CAACpB,GAAG,CAACI,MAAJ,CAAWR,OAAX,EAAsB,IAAtB,CAA6B,EALtB,CAAV,CAAV,CAOA;AACA,GAAI8hC,QAAJ,CAAc,CACV,GAAIrhC,MAAK,CAAG,EAAZ,CAAgB0E,KAAhB,CACA,MAAOA,KAAK,CAAGu8B,OAAO,CAACxC,IAAR,CAAa4C,QAAb,CAAf,CAAuC,CACnCrhC,KAAK,CAAC0E,KAAK,CAAC,CAAD,CAAL,CAASkF,WAAT,EAAD,CAAL,CAAgC41B,aAAa,CAAC96B,KAAK,CAAC,CAAD,CAAL,CAASkF,WAAT,EAAD,CAAb,CAAyClF,KAAK,CAAC,CAAD,CAAL,EAAYA,KAAK,CAAC,CAAD,CAAjB,EAAwBA,KAAK,CAAC,CAAD,CAAtE,CAA6E9G,KAAK,CAACuQ,MAAN,CAAazJ,KAAK,CAAC,CAAD,CAAL,EAAYA,KAAK,CAAC,CAAD,CAAjB,EAAwBA,KAAK,CAAC,CAAD,CAA1C,CAA7G,CACH,CACDwhB,GAAG,CAAClmB,KAAJ,CAAYA,KAAZ,CACH,CACD;AACR;AACA;AACA;AACA;AACA;AACQod,MAAM,CAACrc,QAAP,CAAgB4D,IAAhB,CAAqBuhB,GAArB,EACA;AACA,MAAQvmB,IAAG,CAACI,MAAJ,CAAWR,OAAX,EAAsB6d,MAAtB,CAA+B8I,GAAvC,CACH,CAED,QAASub,QAAT,CAAiBrkB,MAAjB,CAAyBkgB,IAAzB,CAA+B,CAC3BlgB,MAAM,CAACrc,QAAP,CAAgB4D,IAAhB,CAAqB,GAAIlD,MAAJ,CAAU,CAC3B9E,IAAI,CAAC,SADsB,CAE3B2gC,IAAI,CAACA,IAFsB,CAG3B99B,UAAU,CAAC4d,MAHgB,CAAV,CAArB,EAKH,CAED,GAAI1Y,MAAJ,CAAWg9B,YAAY,CAAG,CAA1B,CAA6BC,SAAS,CAAG,CAAzC,CACA;AACA,GAAIziC,KAAI,CAAG,GAAIuC,MAAJ,CAAU,CACjB9E,IAAI,CAAC,MADY,CAEjBoE,QAAQ,CAAC,EAFQ,CAAV,CAAX,CAIA,GAAI6gC,cAAa,CAAG1iC,IAApB,CAEA,MAAOwF,KAAK,CAAGs8B,MAAM,CAACvC,IAAP,CAAY8B,OAAZ,CAAf,CAAqC,CACjCmB,YAAY,CAAGh9B,KAAK,CAAC8I,KAArB,CACA,GAAG,CACC,GAAIk0B,YAAY,CAAGC,SAAnB,CAA8B,CAC1B;AACA/kC,IAAI,CAACglC,aAAD,CAAgBrB,OAAO,CAAC5U,KAAR,CAAcgW,SAAd,CAAyBD,YAAzB,CAAhB,CAAJ,CACH,CACD,GAAIh9B,KAAK,CAAC,CAAD,CAAT,CAAc,CAEV,GAAG/E,GAAG,CAACC,MAAJ,CAAWgiC,aAAa,CAACriC,OAAzB,CAAH,CAAqC,CACjC3C,IAAI,CAACglC,aAAD,CAAgBl9B,KAAK,CAAC,CAAD,CAArB,CAAJ,CACH,CAFD,IAEK,CACD;AACAk9B,aAAa,CAAGnyB,OAAO,CAACmyB,aAAD,CAAgBl9B,KAAK,CAAC,CAAD,CAAL,CAASkF,WAAT,EAAhB,CAAwClF,KAAK,CAAC,CAAD,CAA7C,CAAvB,CACH,CAGJ,CAVD,IAUO,IAAIA,KAAK,CAAC,CAAD,CAAT,CAAc,CACjB,GAAGk9B,aAAa,CAACjlC,IAAd,EAAsB,MAAzB,CAAgC,CAC5B,GAAGgD,GAAG,CAACC,MAAJ,CAAWgiC,aAAa,CAACriC,OAAzB,GAAqC,CAACI,GAAG,CAACC,MAAJ,CAAW8E,KAAK,CAAC,CAAD,CAAhB,CAAzC,CAA8D,CAC1D9H,IAAI,CAACglC,aAAD,CAAgBl9B,KAAK,CAAC,CAAD,CAArB,CAAJ,CACH,CAFD,IAEK,CACD,GAAI68B,UAAS,CAAGK,aAAhB,CACA,MAAMA,aAAa,CAACjlC,IAAd,EAAsB,SAAtB,EAAmCilC,aAAa,CAACriC,OAAd,EAAyBmF,KAAK,CAAC,CAAD,CAAL,CAASkF,WAAT,EAAlE,CAAyF,CACrFg4B,aAAa,CAAGA,aAAa,CAACpiC,UAA9B,CACA,GAAGoiC,aAAa,CAACjlC,IAAd,EAAsB,MAAzB,CAAgC,CAC5BilC,aAAa,CAAGL,SAAhB,CACA,KAAM,OAAN,CACH,CACJ,CACD;AACAK,aAAa,CAAGA,aAAa,CAACpiC,UAA9B,CACH,CAEJ,CAEJ,CAnBM,IAmBA,IAAIkF,KAAK,CAAC,CAAD,CAAT,CAAc,CACjB;AACA+8B,OAAO,CAACG,aAAD,CAAgBl9B,KAAK,CAAC,CAAD,CAArB,CAAP,CACH,CACJ,OAAMwK,CAAN,CAAQ,CAAE,CAEXyyB,SAAS,CAAGX,MAAM,CAACa,SAAnB,CAEH,CACD;AACA;AACA,GAAIF,SAAS,CAAGpB,OAAO,CAACx+B,MAAxB,CAAgC,CAC5BnF,IAAI,CAACglC,aAAD,CAAgBrB,OAAO,CAAC5U,KAAR,CAAcgW,SAAd,CAAhB,CAAJ,CACH,CACD,MAAOziC,KAAP,CACH,CA3KD,CA8KA;AACA;AACA;AACA;AACA,GAx1SW,CA01SX;AACA;AACA;AACA,GA71SW,CAg2SX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACA,GAAI4iC,WAAU,CAAGxlC,EAAE,CAACwlC,UAAH,CAAgB,UAAY,CACzC,QAASA,WAAT,CAAoBxiC,IAApB,CAAyByiC,KAAzB,CAA+B,CAC3B,OAAQziC,IAAI,CAAC3C,IAAb,EACI,IAAK,MAAL,CACI,MACJ,IAAK,SAAL,CACI,GAAIyC,IAAJ,CACA,GAAGA,GAAG,CAAG2iC,KAAK,CAACziC,IAAI,CAACC,OAAN,CAAd,CAA6B,CAC1B,GAAGH,GAAG,GAAK,GAAX,CAAe,CACXE,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CAFD,IAEM,IAAG1B,KAAK,CAACksB,UAAN,CAAiB1qB,GAAjB,CAAH,CAAyB,CAC3B,GAAII,WAAU,CAAGF,IAAI,CAACE,UAAtB,CACIgO,KAAK,CAAGlO,IAAI,CAAC0xB,QAAL,EADZ,CAEA5xB,GAAG,CAACE,IAAD,CAAH,CACA,GAAGA,IAAI,CAACE,UAAR,CAAmB,CACf,GAAGF,IAAI,CAACyB,QAAR,CAAiB,CACb,IAAI,GAAI8B,EAAC,CAAG,CAAR,CAAUqL,EAAd,CAAiBA,EAAE,CAAC5O,IAAI,CAACyB,QAAL,CAAc8B,CAAd,CAApB,EAAsC,CAClCi/B,UAAU,CAAC5zB,EAAD,CAAI6zB,KAAJ,CAAV,CACA,GAAG7zB,EAAE,CAAC1O,UAAN,CAAiB,CACbqD,CAAC,GACJ,CACJ,CACJ,CACJ,CATD,IASK,CACD,IAAI,GAAIA,EAAC,CAAG2K,KAAR,CAAcU,EAAlB,CAAqBA,EAAE,CAAC1O,UAAU,CAACuB,QAAX,CAAoB8B,CAApB,CAAxB,EAAgD,CAC5Ci/B,UAAU,CAAC5zB,EAAD,CAAI6zB,KAAJ,CAAV,CACA,GAAG7zB,EAAE,CAAC1O,UAAN,CAAiB,CACbqD,CAAC,GACJ,CACJ,CACJ,CAGJ,CAvBK,IAuBD,CACD,GAAI7C,MAAK,CAAGZ,GAAG,CAAC,GAAD,CAAf,CACA,GAAGY,KAAK,EAAIV,IAAI,CAACU,KAAjB,CAAuB,CACnB,GAAIgiC,SAAQ,CAAG,EAAf,CAAkBC,MAAlB,CACA,IAAI,GAAIx/B,EAAR,GAAazC,MAAb,CAAmB,CACfiiC,MAAM,CAAG3iC,IAAI,CAACkB,OAAL,CAAaiC,CAAb,CAAT,CACA;AACA,GAAGA,CAAC,EAAI,OAAL,EAAgB7E,KAAK,CAACqQ,OAAN,CAAcjO,KAAK,CAACyC,CAAD,CAAnB,CAAnB,CAA2C,CACvC,GAAIy/B,YAAW,CAAG,EAAlB,CACAtkC,KAAK,CAACkD,IAAN,CAAWd,KAAK,CAACyC,CAAD,CAAhB,CAAoB,SAASiL,CAAT,CAAW,CAC3B,GAAIrM,IAAJ,CACA,GAAGA,GAAG,CAAG/B,IAAI,CAACqB,QAAL,CAAc+M,CAAd,CAAT,CAA0B,CACtBw0B,WAAW,CAACv9B,IAAZ,CAAiB+I,CAAC,CAAG,GAAJ,CAAUrM,GAA3B,EACH,CACJ,CALD,EAMA4gC,MAAM,CAAGC,WAAW,CAAC5yB,IAAZ,CAAiB,GAAjB,CAAT,CACH,CACD,GAAG2yB,MAAH,CAAU,CACND,QAAQ,CAACv/B,CAAD,CAAR,CAAcw/B,MAAd,CACH,CAEJ,CACD3iC,IAAI,CAACU,KAAL,CAAagiC,QAAb,CACH,CACD,GAAG1iC,IAAI,CAACyB,QAAR,CAAiB,CACb,IAAI,GAAI8B,EAAC,CAAG,CAAR,CAAUqL,EAAd,CAAiBA,EAAE,CAAC5O,IAAI,CAACyB,QAAL,CAAc8B,CAAd,CAApB,EAAsC,CAClCi/B,UAAU,CAAC5zB,EAAD,CAAI6zB,KAAJ,CAAV,CACA,GAAG7zB,EAAE,CAAC1O,UAAN,CAAiB,CACbqD,CAAC,GACJ,CACJ,CACJ,CACJ,CACH,CA3DD,IA2DK,CACD;AACA,GAAGlD,GAAG,CAACC,MAAJ,CAAWN,IAAI,CAACC,OAAhB,CAAH,CAA4B,CACxBD,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CAFD,IAEK,CACD,GAAIE,WAAU,CAAGF,IAAI,CAACE,UAAtB,CACIgO,KAAK,CAAGlO,IAAI,CAAC0xB,QAAL,EADZ,CAEA1xB,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,CAAiC,IAAjC,EACA,IAAI,GAAIuD,EAAC,CAAG2K,KAAR,CAAcU,EAAlB,CAAqBA,EAAE,CAAC1O,UAAU,CAACuB,QAAX,CAAoB8B,CAApB,CAAxB,EAAgD,CAC5Ci/B,UAAU,CAAC5zB,EAAD,CAAI6zB,KAAJ,CAAV,CACA,GAAG7zB,EAAE,CAAC1O,UAAN,CAAiB,CACbqD,CAAC,GACJ,CACJ,CACJ,CACJ,CACD,MACJ,IAAK,SAAL,CACIvD,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EAlFR,CAqFH,CACD,MAAO,UAASJ,IAAT,CAAc6iC,KAAd,CAAoB,CACvB,GAAGnkC,KAAK,CAACqC,aAAN,CAAoB8hC,KAApB,CAAH,CAA8B,CAC1B,MAAO7iC,KAAP,CACH,CACD,GAAIE,IAAJ,CACA,GAAGA,GAAG,CAAG2iC,KAAK,CAAC,GAAD,CAAd,CAAoB,CAChBnkC,KAAK,CAACkD,IAAN,CAAW1B,GAAG,CAACwD,KAAJ,CAAU,GAAV,CAAX,CAA0B,SAASyJ,CAAT,CAAW,CACjC01B,KAAK,CAAC11B,CAAD,CAAL,CAAW,GAAX,CACH,CAFD,EAGH,CACD,IAAI,GAAIxJ,EAAC,CAAE,CAAP,CAASqL,EAAb,CAAgBA,EAAE,CAAChP,IAAI,CAAC6B,QAAL,CAAc8B,CAAd,CAAnB,EAAqC,CACjCi/B,UAAU,CAAC5zB,EAAD,CAAI6zB,KAAJ,CAAV,CACA,GAAG7zB,EAAE,CAAC1O,UAAN,CAAiB,CACdqD,CAAC,GACH,CACJ,CACD,MAAO3D,KAAP,CACH,CAjBD,CAkBH,CA1GgC,EAAjC,CA4GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACA5C,EAAE,CAACo4B,MAAH,CAAY,UAAU,CAClB,GAAIyN,SAAQ,CAAG,EAAf,CACA,MAAO,CACHC,QAAQ,CAAG,kBAASC,UAAT,CAAoBt1B,EAApB,CAAuBu1B,aAAvB,CAAqCC,aAArC,CAAmD,CAC1D,GAAGD,aAAa,EAAI1kC,KAAK,CAACksB,UAAN,CAAiBwY,aAAjB,CAApB,CAAoD,CAChDC,aAAa,CAAGD,aAAhB,CACAA,aAAa,CAAG,IAAhB,CACH,CACDH,QAAQ,CAACE,UAAD,CAAR,CAAuB,CACnBG,UAAU,CAAGF,aAAa,EAAID,UADX,CAEnBI,MAAM,CAAG11B,EAFU,CAGnB;AACAw1B,aAAa,CAAGA,aAJG,CAAvB,CAMH,CAZE,CAaH5N,IAAI,CAAG,cAASn4B,MAAT,CAAgB,CACnBoB,KAAK,CAACkD,IAAN,CAAWqhC,QAAX,CAAoB,SAASzN,MAAT,CAAgB,CAChC,GAAIgO,QAAO,CAAGhO,MAAM,CAAC+N,MAAP,CAAc92B,IAAd,CAAmBnP,MAAnB,CAAd,CACA,GAAGA,MAAM,CAACS,OAAP,CAAey3B,MAAM,CAAC8N,UAAtB,IAAsC,KAAzC,CAA+C,CAC3C,GAAGE,OAAH,CAAW,CACP;AACA9kC,KAAK,CAACkD,IAAN,CAAW4hC,OAAX,CAAmB,SAASh1B,CAAT,CAAWrB,CAAX,CAAa,CAC5B,OAAOA,CAAC,CAACzC,WAAF,EAAP,EACI,IAAK,aAAL,CACIpN,MAAM,CAAC86B,cAAP,CAAsB5pB,CAAtB,EACA,MACJ,IAAK,YAAL,CACI9P,KAAK,CAACkD,IAAN,CAAW4M,CAAX,CAAa,SAASX,EAAT,CAAY41B,SAAZ,CAAsB,CAC/BnmC,MAAM,CAAC+B,WAAP,CAAmBokC,SAAnB,CAA6B51B,EAA7B,EACH,CAFD,EAGA,MACJ,IAAK,iBAAL,CACInP,KAAK,CAACkD,IAAN,CAAWlD,KAAK,CAACqQ,OAAN,CAAcP,CAAd,EAAmBA,CAAnB,CAAqB,CAACA,CAAD,CAAhC,CAAoC,SAAS2U,KAAT,CAAe,CAC/C,GAAIzN,MAAK,CAAGhX,KAAK,CAACiQ,IAAN,CAAWwU,KAAK,CAAC1lB,IAAjB,EAAuBiG,KAAvB,CAA6B,KAA7B,CAAZ,CACAhF,KAAK,CAACkD,IAAN,CAAW8T,KAAX,CAAiB,SAAS+tB,SAAT,CAAmB,CAChCnmC,MAAM,CAAC+B,WAAP,CAAmBokC,SAAnB,CAA8BtgB,KAAK,CAACL,OAApC,EACH,CAFD,EAGH,CALD,EAMA,MACJ,IAAK,UAAL,CACIpkB,KAAK,CAACkD,IAAN,CAAW4M,CAAX,CAAa,SAAS+0B,MAAT,CAAgBG,QAAhB,CAAyB,CAClCpmC,MAAM,CAAC6M,QAAP,CAAgBu5B,QAAhB,EAA4BH,MAA5B,CACH,CAFD,EAGA,MACJ,IAAK,YAAL,CACIjmC,MAAM,CAAC4F,aAAP,CAAqBsL,CAArB,EACA,MACJ,IAAK,WAAL,CACIlR,MAAM,CAACyC,YAAP,CAAoByO,CAApB,EACA,MACJ,IAAK,gBAAL,CACIlR,MAAM,CAACwC,MAAP,CAAc0O,CAAd,EA7BR,CA+BH,CAhCD,EAiCH,CAEJ,CAtCD,IAsCM,IAAGgnB,MAAM,CAAC6N,aAAV,CAAwB,CAC1B7N,MAAM,CAAC6N,aAAP,CAAqB52B,IAArB,CAA0BnP,MAA1B,EACH,CAEJ,CA5CD,EA6CA;AACAoB,KAAK,CAACkD,IAAN,CAAWxE,EAAE,CAACwC,OAAd,CAAsB,SAAS41B,MAAT,CAAgB,CAClCA,MAAM,CAAC/oB,IAAP,CAAYnP,MAAZ,EACH,CAFD,EAGH,CA/DE,CAgEHqmC,GAAG,CAAG,aAASR,UAAT,CAAoB7lC,MAApB,CAA2B,CAC7B,GAAIk4B,OAAM,CAAGyN,QAAQ,CAACE,UAAD,CAArB,CACA,GAAG3N,MAAH,CAAU,CACNA,MAAM,CAACoO,KAAP,CAAan3B,IAAb,CAAkBnP,MAAlB,EACH,CACJ,CArEE,CAAP,CAuEH,CAzEW,EAAZ,CA2EA;AACA,GAAIumC,OAAM,CAAGzmC,EAAE,CAACymC,MAAH,CAAa,CACtB,YAAc,CADQ,CAEtB,MAAQ,CAFc,CAGtB,QAAU,EAHY,CAKtB,QAAQ,EALc,CAMtB,UAAU,EANY,CAOtB,MAAM,EAPgB,CAQtB,WAAW,EARW,CAUtB,MAAM,EAVgB,CAYtB,WAAW,EAZW,CActB,SAAS,EAda,CAetB,WAAW,EAfW,CAgBtB,MAAM,EAhBgB,CAiBtB,OAAO,EAjBe,CAmBtB,OAAO,EAnBe,CAoBtB,KAAK,EApBiB,CAqBtB,QAAQ,EArBc,CAsBtB,OAAO,EAtBe,CAwBtB,SAAS,EAxBa,CA0BtB,MAAM,EA1BgB,CA4BtB,UAAU,GA5BY,CA8BtB,MAAM,EA9BgB,CAgCtB,IAAI,GAhCkB,CAiCtB,IAAI,GAjCkB,CAmCtB,IAAI,EAnCkB,CAoCtB,IAAI,EApCkB,CAqCtB;AACA,IAAI,EAtCkB,CAuCtB,IAAI,EAvCkB,CAwCtB;AACA,IAAM,EAzCgB,CA0CtB,IAAM,EA1CgB,CA4CtB,IAAM,EA5CgB,CA8CtB,IAAM,EA9CgB,CAA1B,CAiDA;AACA;AACA,GAAIC,aAAY,CAAG1mC,EAAE,CAAC0mC,YAAH,CAAmB,UAAY,CAE9C,GAAIC,QAAO,CAAG95B,MAAM,CAAC+5B,YAAP,EAAuBC,WAAW,EAAlC,EAAwC,IAAtD,CACIC,UAAU,CAAG,cADjB,CAGA,MAAO,CAEHC,aAAa,CAAE,uBAAUz3B,GAAV,CAAe0xB,IAAf,CAAqB,CAEhC,GAAI2F,OAAO,EAAI3F,IAAf,CAAqB,CACjB2F,OAAO,CAACK,OAAR,CAAgB13B,GAAhB,CAAqB0xB,IAArB,EACA,MAAO,KAAP,CACH,CAED,MAAO,MAAP,CAEH,CAXE,CAaHiG,YAAY,CAAE,sBAAU33B,GAAV,CAAe,CAEzB,GAAIq3B,OAAJ,CAAa,CACT,MAAOA,QAAO,CAACj0B,OAAR,CAAgBpD,GAAhB,CAAP,CACH,CAED,MAAO,KAAP,CAEH,CArBE,CAuBH+B,UAAU,CAAE,oBAAU/B,GAAV,CAAe,CAEvBq3B,OAAO,EAAIA,OAAO,CAACt1B,UAAR,CAAmB/B,GAAnB,CAAX,CAEH,CA3BE,CAAP,CA+BA,QAASu3B,YAAT,EAAuB,CAEnB,GAAI5V,UAAS,CAAGzvB,QAAQ,CAACG,aAAT,CAAuB,KAAvB,CAAhB,CACAsvB,SAAS,CAACvkB,KAAV,CAAgB+rB,OAAhB,CAA0B,MAA1B,CAEA,GAAI,CAACxH,SAAS,CAACiW,WAAf,CAA4B,CACxB,MAAO,KAAP,CACH,CAEDjW,SAAS,CAACiW,WAAV,CAAsB,mBAAtB,EAEA,MAAO,CAEHx0B,OAAO,CAAE,iBAAUpD,GAAV,CAAe,CAEpB,GAAIgI,OAAM,CAAG,IAAb,CAEA,GAAI,CACA9V,QAAQ,CAACsG,IAAT,CAAczC,WAAd,CAA0B4rB,SAA1B,EACAA,SAAS,CAACoH,IAAV,CAAeyO,UAAf,EACAxvB,MAAM,CAAG2Z,SAAS,CAAC9oB,YAAV,CAAuBmH,GAAvB,CAAT,CACA9N,QAAQ,CAACsG,IAAT,CAAcjE,WAAd,CAA0BotB,SAA1B,EACH,CAAC,MAAOre,CAAP,CAAU,CACX,CAED,MAAO0E,OAAP,CAEH,CAhBE,CAkBH0vB,OAAO,CAAE,iBAAU13B,GAAV,CAAelJ,KAAf,CAAsB,CAE3B5E,QAAQ,CAACsG,IAAT,CAAczC,WAAd,CAA0B4rB,SAA1B,EACAA,SAAS,CAACnoB,YAAV,CAAuBwG,GAAvB,CAA4BlJ,KAA5B,EACA6qB,SAAS,CAACkW,IAAV,CAAeL,UAAf,EACAtlC,QAAQ,CAACsG,IAAT,CAAcjE,WAAd,CAA0BotB,SAA1B,EAEH,CAzBE,CA2BH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA5f,UAAU,CAAE,oBAAU/B,GAAV,CAAe,CAEvB9N,QAAQ,CAACsG,IAAT,CAAczC,WAAd,CAA0B4rB,SAA1B,EACAA,SAAS,CAAC/H,eAAV,CAA0B5Z,GAA1B,EACA2hB,SAAS,CAACkW,IAAV,CAAeL,UAAf,EACAtlC,QAAQ,CAACsG,IAAT,CAAcjE,WAAd,CAA0BotB,SAA1B,EAEH,CA9CE,CAAP,CAkDH,CAEJ,CAnGoC,EAArC,CAqGA,CAAC,UAAY,CAET,GAAImW,QAAO,CAAG,oBAAd,CAEApnC,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBsnC,cAApB,CAAqC,SAAS/3B,GAAT,CAAalJ,KAAb,CAAmB,CACpD,GAAI3G,IAAG,CAAG,EAAV,CACA,GAAI6B,KAAK,CAACoS,QAAN,CAAepE,GAAf,CAAJ,CAAyB,CACrB7P,GAAG,CAAE6P,GAAF,CAAH,CAAalJ,KAAb,CACH,CAFD,IAEO,CACH3G,GAAG,CAAG6P,GAAN,CACH,CACD,GAAI0xB,KAAI,CAAG0F,YAAY,CAACO,YAAb,CAA0BG,OAA1B,CAAX,CACA,GAAIpG,IAAI,GAAKA,IAAI,CAAG1/B,KAAK,CAACqH,QAAN,CAAeq4B,IAAf,CAAZ,CAAR,CAA2C,CACvC1/B,KAAK,CAACqO,MAAN,CAAaqxB,IAAb,CAAmBvhC,GAAnB,EACH,CAFD,IAEO,CACHuhC,IAAI,CAAGvhC,GAAP,CACH,CACDuhC,IAAI,EAAI0F,YAAY,CAACK,aAAb,CAA2BK,OAA3B,CAAoC9lC,KAAK,CAACyV,QAAN,CAAeiqB,IAAf,CAApC,CAAR,CACH,CAdD,CAgBAhhC,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBunC,cAApB,CAAqC,SAASh4B,GAAT,CAAa,CAC9C,GAAI0xB,KAAI,CAAG0F,YAAY,CAACO,YAAb,CAA0BG,OAA1B,CAAX,CACA,GAAIpG,IAAI,GAAKA,IAAI,CAAG1/B,KAAK,CAACqH,QAAN,CAAeq4B,IAAf,CAAZ,CAAR,CAA2C,CACvC,MAAO1xB,IAAG,CAAG0xB,IAAI,CAAC1xB,GAAD,CAAP,CAAe0xB,IAAzB,CACH,CACD,MAAO,KAAP,CACH,CAND,CAQAhhC,EAAE,CAACiH,MAAH,CAAUlH,SAAV,CAAoBwnC,iBAApB,CAAwC,SAAUj4B,GAAV,CAAe,CACnD,GAAI0xB,KAAI,CAAG0F,YAAY,CAACO,YAAb,CAA0BG,OAA1B,CAAX,CACA,GAAIpG,IAAI,GAAKA,IAAI,CAAG1/B,KAAK,CAACqH,QAAN,CAAeq4B,IAAf,CAAZ,CAAR,CAA2C,CACvCA,IAAI,CAAC1xB,GAAD,CAAJ,CAAY8C,SAAZ,CACA,MAAO4uB,KAAI,CAAC1xB,GAAD,CAAX,CACH,CACD0xB,IAAI,EAAI0F,YAAY,CAACK,aAAb,CAA2BK,OAA3B,CAAoC9lC,KAAK,CAACyV,QAAN,CAAeiqB,IAAf,CAApC,CAAR,CACH,CAPD,CASH,CArCD,IAwCA;AACA;AACA;AAEAhhC,EAAE,CAACwC,OAAH,CAAW,eAAX,EAA8B,UAAY,CACtC,GAAIC,GAAE,CAAG,IAAT,CACAA,EAAE,CAACC,MAAH,CAAU,CACN,mBAAmB,IADb,CAEN,uBAAuB,IAFjB,CAAV,EAIA;AACA;AACAD,EAAE,CAACE,YAAH,CAAgB,SAAUC,IAAV,CAAgB,CAC5B,GAAIC,iBAAgB,CAAG,KAAKlC,OAAL,CAAakC,gBAApC,CACA,GAAIC,IAAJ,CACA,QAASC,SAAT,CAAkBC,IAAlB,CAAuB,CACnB,MAAMA,IAAI,EAAIA,IAAI,CAAC3C,IAAL,EAAa,SAA3B,CAAqC,CACjC,GAAG2C,IAAI,CAACC,OAAL,EAAgB,IAAnB,CAAwB,CACpB,MAAO,KAAP,CACH,CACDD,IAAI,CAAGA,IAAI,CAACE,UAAZ,CACH,CACD,MAAO,MAAP,CACH,CACD;AACAN,IAAI,CAACO,SAAL,CAAe,SAAUH,IAAV,CAAgB,CAC3B,GAAIA,IAAI,CAAC3C,IAAL,EAAa,SAAjB,CAA4B,CACxB,GAAI,CAACgD,GAAG,CAACC,MAAJ,CAAWN,IAAI,CAACC,OAAhB,CAAD,EAA6BR,EAAE,CAAC9B,OAAH,CAAW4C,kBAAxC,EAA8DF,GAAG,CAACG,OAAJ,CAAYR,IAAI,CAACC,OAAjB,CAA9D,EAA2F,CAACI,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,CAA5F,GAAyH,CAACD,IAAI,CAACU,KAAN,EAAepC,KAAK,CAACqC,aAAN,CAAoBX,IAAI,CAACU,KAAzB,CAAxI,CAAJ,CAA8K,CAC1K,GAAI,CAACV,IAAI,CAACY,UAAL,EAAL,CAAwBZ,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EAAxB,IACK,IAAIA,IAAI,CAACC,OAAL,EAAgB,MAAhB,GAA2B,CAACD,IAAI,CAACU,KAAN,EAAepC,KAAK,CAACqC,aAAN,CAAoBX,IAAI,CAACU,KAAzB,CAA1C,CAAJ,CAAgF,CACjFV,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,CAAkC,IAAlC,EACH,CACD,OACH,CACD,OAAQA,IAAI,CAACC,OAAb,EACI,IAAK,OAAL,CACA,IAAK,QAAL,CACID,IAAI,CAACc,OAAL,CAAa,CACTC,SAAS,CAAEf,IAAI,CAACC,OADP,CAETe,UAAU,CAAGhB,IAAI,CAACiB,SAAL,IAAoB,EAFxB,CAGT,mBAAmB,MAHV,CAAb,EAKAjB,IAAI,CAACC,OAAL,CAAe,KAAf,CACAD,IAAI,CAACiB,SAAL,CAAe,EAAf,EACA,MACJ,IAAK,GAAL,CACI,GAAInB,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,MAAb,CAAV,CAAgC,CAC5BlB,IAAI,CAACc,OAAL,CAAa,OAAb,CAAsBhB,GAAtB,EACH,CACD,MACJ,IAAK,KAAL,CACI;AACA,GAAIA,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,KAAb,CAAV,CAA+B,CAC3B,GAAI,SAASI,IAAT,CAAcxB,GAAd,CAAJ,CAAwB,CACpBE,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACA,MACH,CACJ,CACDA,IAAI,CAACc,OAAL,CAAa,MAAb,CAAqBd,IAAI,CAACkB,OAAL,CAAa,KAAb,CAArB,EACA,MACJ,IAAK,MAAL,CACI,GAAIC,OAAO,CAACC,MAAR,GAAmBtB,GAAG,CAAGE,IAAI,CAACqB,QAAL,CAAc,aAAd,CAAzB,CAAJ,CAA4D,CACxD,GAAI,gBAAgBC,IAAhB,CAAqBxB,GAArB,CAAJ,CAA+B,CAC3BE,IAAI,CAACuB,QAAL,CAAc,aAAd,CAA6B,EAA7B,EACA,GAAI9B,EAAE,CAAC9B,OAAH,CAAW4C,kBAAX,EAAiCjC,KAAK,CAACqC,aAAN,CAAoBX,IAAI,CAACU,KAAzB,CAArC,CAAsE,CAClEV,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,CAAkC,IAAlC,EACH,CACJ,CACJ,CACDF,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,IAAb,CAAN,CACA,GAAGpB,GAAG,EAAI,qBAAqBwB,IAArB,CAA0BxB,GAA1B,CAAV,CAAyC,CACrCE,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CACD,MACJ,IAAK,GAAL,CACI,GAAIF,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,OAAb,CAAV,CAAiC,CAC7BlB,IAAI,CAACc,OAAL,CAAa,OAAb,EACAd,IAAI,CAACuB,QAAL,CAAc,YAAd,CAA4BzB,GAA5B,EACH,CACD;AACxB;AACA;AACA;AACA;AACA;AACA;AACwB;AACAxB,KAAK,CAACkD,IAAN,CAAWxB,IAAI,CAACyB,QAAhB,CAAyB,SAASC,CAAT,CAAW,CAChC,GAAGA,CAAC,CAACrE,IAAF,EAAU,SAAV,EAAuBqE,CAAC,CAACzB,OAAF,EAAa,GAAvC,CAA2C,CACvC,GAAI0B,KAAI,CAAGD,CAAC,CAACE,WAAF,EAAX,CACA5B,IAAI,CAACE,UAAL,CAAgB2B,WAAhB,CAA4BH,CAA5B,CAA8B1B,IAA9B,EACA,GAAI8B,KAAI,CAAGJ,CAAX,CACA,MAAMC,IAAN,CAAW,CACP,GAAII,IAAG,CAAGJ,IAAI,CAACC,WAAL,EAAV,CACA5B,IAAI,CAACE,UAAL,CAAgB2B,WAAhB,CAA4BF,IAA5B,CAAiCG,IAAjC,EACAA,IAAI,CAAGH,IAAP,CACAA,IAAI,CAAGI,GAAP,CACH,CACD,MAAO,MAAP,CACH,CACJ,CAbD,EAcA,GAAI,CAAC/B,IAAI,CAACY,UAAL,EAAL,CAAwB,CACpBZ,IAAI,CAACiB,SAAL,CAAeE,OAAO,CAACa,EAAR,CAAa,QAAb,CAAwB,OAAvC,EACH,CACD,MACJ,IAAK,KAAL,CACI,GAAGhC,IAAI,CAACkB,OAAL,CAAa,WAAb,CAAH,CAA6B,CACzB,MACH,CACD;AACApB,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,OAAb,CAAN,CACA,GAAGpB,GAAG,EAAI,kBAAkBwB,IAAlB,CAAuBxB,GAAvB,CAAV,CAAsC,CAClC,MACH,CACD,GAAG,CAACD,gBAAJ,CAAqB,CACjB,MACH,CACD,GAAIoC,QAAJ,CAAaC,CAAC,CAAGlF,EAAE,CAACmF,KAAH,CAASxD,aAAT,CAAuB,GAAvB,CAAjB,CACA,MAAOsD,OAAO,CAAGjC,IAAI,CAACY,UAAL,EAAjB,CAAoC,CAChC,GAAIqB,OAAO,CAAC5E,IAAR,EAAgB,MAAhB,EAA0B,CAACL,EAAE,CAACoD,GAAH,CAAOC,GAAP,CAAW+B,MAAX,CAAkBH,OAAO,CAAChC,OAA1B,CAA/B,CAAmE,CAC/DiC,CAAC,CAACG,WAAF,CAAcJ,OAAd,EACH,CAFD,IAEO,CACH,GAAIC,CAAC,CAACtB,UAAF,EAAJ,CAAoB,CAChBZ,IAAI,CAACE,UAAL,CAAgBoC,YAAhB,CAA6BJ,CAA7B,CAAgClC,IAAhC,EACAkC,CAAC,CAAGlF,EAAE,CAACmF,KAAH,CAASxD,aAAT,CAAuB,GAAvB,CAAJ,CACH,CAHD,IAGO,CACHqB,IAAI,CAACE,UAAL,CAAgBoC,YAAhB,CAA6BL,OAA7B,CAAsCjC,IAAtC,EACH,CACJ,CACJ,CACD,GAAIkC,CAAC,CAACtB,UAAF,EAAJ,CAAoB,CAChBZ,IAAI,CAACE,UAAL,CAAgBoC,YAAhB,CAA6BJ,CAA7B,CAAgClC,IAAhC,EACH,CACDA,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACA,MACJ,IAAK,IAAL,CACIA,IAAI,CAACC,OAAL,CAAe,IAAf,CACA,MACJ,IAAK,IAAL,CACA,IAAK,IAAL,CACID,IAAI,CAACC,OAAL,CAAe,IAAf,CACA,MACJ,IAAK,IAAL,CACI,GAAIhC,UAAS,CAAG+B,IAAI,CAACkB,OAAL,CAAa,OAAb,CAAhB,CACA,GAAI,CAACjD,SAAD,EAAc,CAAC,SAASqD,IAAT,CAAcrD,SAAd,CAAnB,CAA6C,CACzC+B,IAAI,CAACc,OAAL,GACH,CACD,GAAIyB,SAAQ,CAAGvC,IAAI,CAACwC,iBAAL,CAAuB,OAAvB,CAAf,CACAxF,EAAE,CAACsB,KAAH,CAASkD,IAAT,CAAce,QAAd,CAAwB,SAAUb,CAAV,CAAa,CACjC1B,IAAI,CAACE,UAAL,CAAgB2B,WAAhB,CAA4BH,CAA5B,CAA+B1B,IAA/B,EACH,CAFD,EAGA,MACJ,IAAK,IAAL,CACA,IAAK,IAAL,CACA,IAAK,SAAL,CACI,GAAG,CAACA,IAAI,CAACyB,QAAN,EAAkB,CAACzB,IAAI,CAACyB,QAAL,CAAcgB,MAApC,CAA2C,CACvCzC,IAAI,CAACqC,WAAL,CAAiBlB,OAAO,CAACuB,SAAR,CAAoB1F,EAAE,CAACmF,KAAH,CAASQ,UAAT,CAAoB,GAApB,CAApB,CAA+C3F,EAAE,CAACmF,KAAH,CAASxD,aAAT,CAAuB,IAAvB,CAAhE,EACH,CACD,MACJ,IAAK,OAAL,CACI,GAAGc,EAAE,CAAC9B,OAAH,CAAWiF,oBAAX,EAAmC7C,QAAQ,CAACC,IAAD,CAA9C,CAAqD,CACjDA,IAAI,CAACE,UAAL,CAAgBoC,YAAhB,CAA6BtF,EAAE,CAACmF,KAAH,CAASQ,UAAT,CAAoB3C,IAAI,CAAC6C,SAAL,EAApB,CAA7B,CAAmE7C,IAAnE,EACAA,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CAjIT,CAoIH,CACb;AACA;AACA;AACS,CAjJD,EAmJH,CAhKD,EAkKA;AACAP,EAAE,CAACqD,aAAH,CAAiB,SAAUlD,IAAV,CAAgB,CAE7B,GAAIE,IAAJ,CACAF,IAAI,CAACO,SAAL,CAAe,SAAUH,IAAV,CAAgB,CAC3B,GAAIA,IAAI,CAAC3C,IAAL,EAAa,SAAjB,CAA4B,CAExB,GAAIoC,EAAE,CAAC9B,OAAH,CAAW4C,kBAAX,EAAiCF,GAAG,CAACG,OAAJ,CAAYR,IAAI,CAACC,OAAjB,CAAjC,EAA8D,CAACI,GAAG,CAACI,MAAJ,CAAWT,IAAI,CAACC,OAAhB,CAA/D,GAA4F,CAACD,IAAI,CAACU,KAAN,EAAepC,KAAK,CAACqC,aAAN,CAAoBX,IAAI,CAACU,KAAzB,CAA3G,CAAJ,CAAiJ,CAE7I,GAAI,CAACV,IAAI,CAACY,UAAL,EAAL,CAAwBZ,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EAAxB,IACK,IAAIA,IAAI,CAACC,OAAL,EAAgB,MAAhB,GAA2B,CAACD,IAAI,CAACU,KAAN,EAAepC,KAAK,CAACqC,aAAN,CAAoBX,IAAI,CAACU,KAAzB,CAA1C,CAAJ,CAAgF,CACjFV,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,CAAkC,IAAlC,EACH,CACD,OACH,CACD,OAAQA,IAAI,CAACC,OAAb,EACI,IAAK,KAAL,CACI,GAAIH,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,WAAb,CAAV,CAAqC,CACjClB,IAAI,CAACC,OAAL,CAAeH,GAAf,CACAE,IAAI,CAACqC,WAAL,CAAiBrF,EAAE,CAACmF,KAAH,CAASQ,UAAT,CAAoB3C,IAAI,CAACkB,OAAL,CAAa,YAAb,CAApB,CAAjB,EACAlB,IAAI,CAACc,OAAL,CAAa,CAACC,SAAS,CAAE,EAAZ,CAAgBC,UAAU,CAAE,EAA5B,CAA+B,mBAAmB,EAAlD,CAAb,EACH,CACD,MACJ,IAAK,GAAL,CACI,GAAIlB,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,OAAb,CAAV,CAAiC,CAC7BlB,IAAI,CAACc,OAAL,CAAa,CACT,OAAQxC,KAAK,CAACyE,IAAN,CAAWjD,GAAX,CADC,CAET,QAAS,EAFA,CAAb,EAIH,CACD,MACA,MACJ,IAAK,MAAL,CACIA,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,IAAb,CAAN,CACA,GAAGpB,GAAG,EAAI,qBAAqBwB,IAArB,CAA0BxB,GAA1B,CAAV,CAAyC,CACrCE,IAAI,CAACE,UAAL,CAAgBW,WAAhB,CAA4Bb,IAA5B,EACH,CACD,MACJ,IAAK,KAAL,CACI,GAAIF,GAAG,CAAGE,IAAI,CAACkB,OAAL,CAAa,MAAb,CAAV,CAAgC,CAC5BlB,IAAI,CAACc,OAAL,CAAa,CACT,MAAOd,IAAI,CAACkB,OAAL,CAAa,MAAb,CADE,CAET,OAAQ,EAFC,CAAb,EAIH,CA7BT,CAiCH,CAEJ,CA9CD,EAiDH,CApDD,EAqDH,CAhOD,CAmOA;AACA;AACA;AACA;AACA;AACA,GAx9TW,CA09TX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEAlE,EAAE,CAAC+M,QAAH,CAAY,YAAZ,EAA4B,CACxBktB,WAAW,CAAE,qBAAUnb,OAAV,CAAkB/Y,IAAlB,CAAuByhC,aAAvB,CAAqC,CAC9C,GAAI/kC,GAAE,CAAG,IAAT,CACIwpB,KADJ,CAEI7R,GAFJ,CAGA,GAAG,CAACrU,IAAJ,CAAS,CACL,OACH,CACD,GAAGtD,EAAE,CAACqW,SAAH,CAAa,kBAAb,CAAgC/S,IAAhC,IAA0C,IAA7C,CAAkD,CAC9C,OACH,CACDkmB,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAR,CACA/b,GAAG,CAAG6R,KAAK,CAACzqB,QAAN,CAAeG,aAAf,CAA8B,KAA9B,CAAN,CACAyY,GAAG,CAAC1N,KAAJ,CAAU+rB,OAAV,CAAoB,QAApB,CAEA,GAAI,CAAC+O,aAAL,CAAoB,CAChB,GAAI5kC,KAAI,CAAG5C,EAAE,CAAC47B,UAAH,CAAc71B,IAAd,CAAX,CACA;AACA,GAAGtD,EAAE,CAAC9B,OAAH,CAAW8mC,WAAd,CAA0B,CACtBznC,EAAE,CAACwlC,UAAH,CAAc5iC,IAAd,CAAmBH,EAAE,CAAC9B,OAAH,CAAW8mC,WAA9B,EACH,CACD;AACAhlC,EAAE,CAAC65B,eAAH,CAAmB15B,IAAnB,EACAmD,IAAI,CAAGnD,IAAI,CAACk5B,MAAL,EAAP,CACH,CACD1hB,GAAG,CAACnW,SAAJ,CAAgB3C,KAAK,CAACiQ,IAAN,CAAYxL,IAAZ,CAAhB,CAEA,GAAK,CAACkmB,KAAK,CAACgC,SAAZ,CAAwB,CACpB,GAAIhpB,QAAO,CAAGgnB,KAAK,CAACI,cAApB,CACA,GAAG3K,QAAQ,CAACoK,UAAT,CAAoB7mB,OAApB,CAAH,CAAgC,CAC5BgnB,KAAK,CAACM,cAAN,CAAqBtnB,OAArB,EACH,CACDA,OAAO,CAAGgnB,KAAK,CAACiC,YAAhB,CACA,GAAGxM,QAAQ,CAACoK,UAAT,CAAoB7mB,OAApB,CAAH,CAAgC,CAC5BgnB,KAAK,CAACgE,WAAN,CAAkBhrB,OAAlB,EACH,CACDgnB,KAAK,CAAC4E,gBAAN,GACA;AACA;AACA,GAAG5E,KAAK,CAACiC,YAAN,EAAsBjC,KAAK,CAACiC,YAAN,CAAmBzY,QAAnB,EAA+B,CAAxD,CAA0D,CACtDxQ,OAAO,CAAGgnB,KAAK,CAACiC,YAAN,CAAmBzG,UAAnB,CAA8BwE,KAAK,CAACkC,SAApC,CAAV,CACA,GAAGlpB,OAAO,EAAIyc,QAAQ,CAACkJ,IAAT,CAAc3lB,OAAd,CAAd,CAAqC,CACjCgnB,KAAK,CAACgE,WAAN,CAAkBhrB,OAAlB,EACH,CACJ,CACD,GAAGgnB,KAAK,CAACK,WAAN,EAAqB,CAAxB,CAA0B,CACtBrnB,OAAO,CAAGgnB,KAAK,CAACI,cAAhB,CACA,GAAG3K,QAAQ,CAACiM,cAAT,CAAwB1oB,OAAxB,CAAgC,YAAhC,CAAH,CAAkD,CAC9CA,OAAO,CAAGgnB,KAAK,CAACiC,YAAhB,CACA,GAAGjC,KAAK,CAACkC,SAAN,GAAoBlpB,OAAO,CAACwQ,QAAR,EAAoB,CAApB,CAAwBxQ,OAAO,CAAC8f,SAAR,CAAkBtf,MAA1C,CAAmDR,OAAO,CAACwiB,UAAR,CAAmBhiB,MAA1F,GAAqGic,QAAQ,CAACiM,cAAT,CAAwB1oB,OAAxB,CAAgC,WAAhC,CAAxG,CAAqJ,CACjJxC,EAAE,CAACqF,IAAH,CAAQ7D,SAAR,CAAoB,OAAOE,OAAO,CAACa,EAAR,CAAa,EAAb,CAAkB,OAAzB,EAAkC,MAAtD,CACAinB,KAAK,CAACO,QAAN,CAAe/pB,EAAE,CAACqF,IAAH,CAAQlE,UAAvB,CAAkC,CAAlC,EAAqC6oB,QAArC,CAA8C,IAA9C,EAEH,CACJ,CACJ,CACD,CAACR,KAAK,CAACgC,SAAP,EAAoBhC,KAAK,CAAC2D,cAAN,EAApB,CACA,GAAG3D,KAAK,CAACI,cAAN,CAAqB5W,QAArB,EAAiC,CAApC,CAAsC,CAClC,GAAIuO,MAAK,CAAGiI,KAAK,CAACI,cAAN,CAAqB5E,UAArB,CAAgCwE,KAAK,CAACK,WAAtC,CAAZ,CAA+D3R,GAA/D,CACA,GAAGqJ,KAAK,EAAItC,QAAQ,CAACsF,UAAT,CAAoBhD,KAApB,CAAT,GAAwCrJ,GAAG,CAAGqJ,KAAK,CAACf,eAApD,GAAwEvB,QAAQ,CAACsF,UAAT,CAAoBrM,GAApB,CAA3E,CAAoG,CAChGsR,KAAK,CAAC8D,MAAN,CAAapV,GAAb,CAAiBA,GAAG,CAAC8M,UAAJ,CAAehiB,MAAhC,EAAwCgnB,QAAxC,GACA,MAAMzI,KAAK,CAACpgB,UAAZ,CAAuB,CACnB+W,GAAG,CAACtV,WAAJ,CAAgB2e,KAAK,CAACpgB,UAAtB,EACH,CACD8d,QAAQ,CAACoC,MAAT,CAAgBE,KAAhB,EACH,CACJ,CAEJ,CAGD,GAAIA,MAAJ,CAAUlD,MAAV,CAAiBnG,GAAjB,CAAqB5V,GAArB,CAAyB2iC,QAAQ,CAAG,CAApC,CAAuCvW,QAAvC,CACA;AACA,GAAGlF,KAAK,CAACyH,UAAN,EAAH,CAAsB,CAClB1P,KAAK,CAAGiI,KAAK,CAACI,cAAd,CACA,GAAG3K,QAAQ,CAACoK,UAAT,CAAoB9H,KAApB,CAAH,CAA8B,CAC1BiI,KAAK,CAACM,cAAN,CAAqBvI,KAArB,EAA4ByI,QAA5B,CAAqC,IAArC,EACA/K,QAAQ,CAACoC,MAAT,CAAgBE,KAAhB,EACH,CAHD,IAGM,IAAGtC,QAAQ,CAACoK,UAAT,CAAoB9H,KAApB,CAA0B,IAA1B,CAAH,CAAmC,CACrCA,KAAK,CAACe,SAAN,CAAkBf,KAAK,CAACe,SAAN,CAAgB7e,OAAhB,CAAwB2nB,WAAxB,CAAoC,EAApC,CAAlB,CACA5B,KAAK,CAACK,WAAN,GACAL,KAAK,CAACgC,SAAN,EAAmBhC,KAAK,CAACQ,QAAN,CAAe,IAAf,CAAnB,CACH,CACJ,CACD;AACA,GAAIxO,GAAE,CAAGyD,QAAQ,CAAC6B,mBAAT,CAA6B0I,KAAK,CAACI,cAAnC,CAAkD,IAAlD,CAAuD,IAAvD,CAAT,CACA,GAAGpO,EAAH,CAAM,CACF,GAAItZ,KAAJ,CAASG,IAAT,CACA,MAAMkf,KAAK,CAAG5J,GAAG,CAACxW,UAAlB,CAA6B,CACzB;AACA,MAAMogB,KAAK,GAAKA,KAAK,CAACvO,QAAN,EAAkB,CAAlB,EAAuB,CAACiM,QAAQ,CAACsF,UAAT,CAAoBhD,KAApB,CAAxB,EAAsDA,KAAK,CAAC/gB,OAAN,EAAe,IAA1E,CAAX,CAA4F,CACxF0B,IAAI,CAAGqf,KAAK,CAACpf,WAAb,CACAqnB,KAAK,CAACiF,UAAN,CAAkBlN,KAAlB,EAAyByI,QAAzB,GACA3nB,IAAI,CAAGkf,KAAP,CACAA,KAAK,CAAGrf,IAAR,CAEH,CACD,GAAGqf,KAAH,CAAS,CACL,GAAG,aAAa1f,IAAb,CAAkB0f,KAAK,CAAC/gB,OAAxB,CAAH,CAAoC,CAChC,MAAM+gB,KAAK,CAACpgB,UAAZ,CAAuB,CACnBkB,IAAI,CAAGkf,KAAK,CAACpgB,UAAb,CACA8d,QAAQ,CAAC7c,WAAT,CAAqBoZ,EAArB,CAAwB+F,KAAK,CAACpgB,UAA9B,EACAqa,EAAE,CAAGA,EAAE,CAACrZ,WAAR,CACH,CACD8c,QAAQ,CAACoC,MAAT,CAAgBE,KAAhB,EACH,CAPD,IAOK,CACD,GAAI2jB,MAAJ,CACAhjC,IAAI,CAAGqf,KAAK,CAACpf,WAAb,CACA+iC,KAAK,CAAGllC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,IAA1B,CAAR,CACA+f,QAAQ,CAAC7c,WAAT,CAAqBoZ,EAArB,CAAwB0pB,KAAxB,EACAA,KAAK,CAACtiC,WAAN,CAAkB2e,KAAlB,EACAlf,IAAI,CAAGkf,KAAP,CACAA,KAAK,CAAGrf,IAAR,CACAsZ,EAAE,CAAG0pB,KAAL,CACH,CACJ,CACJ,CACD1pB,EAAE,CAAGyD,QAAQ,CAAC6B,mBAAT,CAA6B0I,KAAK,CAACI,cAAnC,CAAkD,IAAlD,CAAuD,IAAvD,CAAL,CACA,GAAG3K,QAAQ,CAACgL,YAAT,CAAsBzO,EAAtB,CAAH,CAA6B,CACzByD,QAAQ,CAACoC,MAAT,CAAgB7F,EAAhB,EACH,CACD,GAAGnZ,IAAH,CAAQ,CAEJmnB,KAAK,CAAC+D,aAAN,CAAoBlrB,IAApB,EAA0B2nB,QAA1B,CAAmC,IAAnC,EAAyC9S,MAAzC,CAAgD,IAAhD,EACH,CACJ,CAvCD,IAuCK,CACD,MAAQqK,KAAK,CAAG5J,GAAG,CAACxW,UAApB,CAAiC,CAC7B,GAAG8jC,QAAH,CAAY,CACR,GAAIxiC,EAAC,CAAGzC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,GAA1B,CAAR,CACA,MAAMqiB,KAAK,GAAKA,KAAK,CAACvO,QAAN,EAAkB,CAAlB,EAAuB,CAACpS,GAAG,CAAC+B,MAAJ,CAAW4e,KAAK,CAAC/gB,OAAjB,CAA7B,CAAX,CAAmE,CAC/DkuB,QAAQ,CAAGnN,KAAK,CAACpf,WAAjB,CACAM,CAAC,CAACG,WAAF,CAAc2e,KAAd,EACAA,KAAK,CAAGmN,QAAR,CACH,CACD,GAAGjsB,CAAC,CAACtB,UAAL,CAAgB,CAEZogB,KAAK,CAAG9e,CAAR,CACH,CACJ,CACD+mB,KAAK,CAACiF,UAAN,CAAkBlN,KAAlB,EACAmN,QAAQ,CAAGnN,KAAK,CAACpf,WAAjB,CACA,GAAK,CAAC8iC,QAAD,EAAa1jB,KAAK,CAACvO,QAAN,EAAkBiM,QAAQ,CAACC,YAAxC,EAAwDD,QAAQ,CAACsF,UAAT,CAAqBhD,KAArB,CAA7D,CAA2F,CAEvFlD,MAAM,CAAGY,QAAQ,CAACyB,UAAT,CAAqBa,KAArB,CAA2B,SAAWhhB,IAAX,CAAiB,CAAE,MAAO0e,SAAQ,CAACsF,UAAT,CAAqBhkB,IAArB,CAAP,CAAqC,CAAnF,CAAT,CACA,GAAK8d,MAAM,EAAIA,MAAM,CAAC7d,OAAP,CAAeqK,WAAf,IAAgC,MAA1C,EAAoD,EAAEjK,GAAG,CAACyd,MAAM,CAAC7d,OAAR,CAAH,CAAoB+gB,KAAK,CAAC0C,QAA1B,GAAuC1C,KAAK,CAAC9gB,UAAN,GAAqB4d,MAA9D,CAAzD,CAA+H,CAC3H,GAAG,CAACzd,GAAG,CAACyd,MAAM,CAAC7d,OAAR,CAAH,CAAoB+gB,KAAK,CAAC0C,QAA1B,CAAJ,CAAwC,CACpC/L,GAAG,CAAGmG,MAAN,CACH,CAFD,IAEK,CACD/b,GAAG,CAAGif,KAAK,CAAC9gB,UAAZ,CACA,MAAO6B,GAAG,GAAK+b,MAAf,CAAsB,CAClBnG,GAAG,CAAG5V,GAAN,CACAA,GAAG,CAAGA,GAAG,CAAC7B,UAAV,CAEH,CACJ,CAGDwe,QAAQ,CAACwF,WAAT,CAAsBlD,KAAtB,CAA6BrJ,GAAG,EAAI5V,GAApC,EACA;AACA,GAAI4V,IAAG,CAAGqJ,KAAK,CAACf,eAAhB,CACAvB,QAAQ,CAAC6F,iBAAT,CAA2B5M,GAA3B,EACA,GAAG,CAACA,GAAG,CAAC8M,UAAJ,CAAehiB,MAAnB,CAA0B,CACtBic,QAAQ,CAACoC,MAAT,CAAgBnJ,GAAhB,EACH,CACD;AAEA,GAAG,CAACxW,OAAO,CAACa,EAAT,GACEL,IAAI,CAAGqf,KAAK,CAACpf,WADf,GAEC8c,QAAQ,CAACsF,UAAT,CAAoBriB,IAApB,CAFD,EAGCA,IAAI,CAACwjB,SAHN,EAIC,CAACzG,QAAQ,CAACkJ,IAAT,CAAcjmB,IAAI,CAACwjB,SAAnB,CAJL,CAImC,CAC/BxjB,IAAI,CAACU,WAAL,CAAiB5C,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,IAA1B,CAAjB,EACH,CACD+lC,QAAQ,CAAG,CAAX,CACH,CACJ,CACD,GAAI/iC,KAAI,CAAGqf,KAAK,CAACpf,WAAjB,CACA,GAAG,CAACwV,GAAG,CAACxW,UAAL,EAAmBe,IAAnB,EAA2B+c,QAAQ,CAACsF,UAAT,CAAoBriB,IAApB,CAA9B,CAAwD,CAEpDsnB,KAAK,CAACO,QAAN,CAAe7nB,IAAf,CAAoB,CAApB,EAAuB8nB,QAAvB,CAAgC,IAAhC,EACA,MACH,CACDR,KAAK,CAACgE,WAAN,CAAmBjM,KAAnB,EAA2ByI,QAA3B,GAEH,CAEDzI,KAAK,CAAGiI,KAAK,CAACI,cAAd,CAEA,GAAG8E,QAAQ,EAAIzP,QAAQ,CAACkJ,IAAT,CAAcuG,QAAd,CAAf,CAAuC,CACnCzP,QAAQ,CAACoC,MAAT,CAAgBqN,QAAhB,EACH,CACD;AACA,GAAGzP,QAAQ,CAACsF,UAAT,CAAoBhD,KAApB,GAA8BtC,QAAQ,CAACiJ,WAAT,CAAqB3G,KAArB,CAAjC,CAA6D,CACzD,GAAGmN,QAAQ,CAAGnN,KAAK,CAACpf,WAApB,CAAgC,CAC5B8c,QAAQ,CAACoC,MAAT,CAAgBE,KAAhB,EACA,GAAGmN,QAAQ,CAAC1b,QAAT,EAAqB,CAArB,EAA0BpS,GAAG,CAAC+B,MAAJ,CAAW+rB,QAAQ,CAACluB,OAApB,CAA7B,CAA0D,CAEtDgpB,KAAK,CAACO,QAAN,CAAe2E,QAAf,CAAwB,CAAxB,EAA2B1E,QAA3B,CAAoC,IAApC,EAA0CgE,cAA1C,GACH,CACJ,CAND,IAMK,CAED,GAAG,CACCzM,KAAK,CAAC/f,SAAN,CAAkBE,OAAO,CAACa,EAAR,CAAa0c,QAAQ,CAACY,QAAtB,CAAiC,OAAnD,CACH,OAAM1P,CAAN,CAAQ,CACLqZ,KAAK,CAACM,cAAN,CAAqBvI,KAArB,EACAtC,QAAQ,CAACoC,MAAT,CAAgBE,KAAhB,EACH,CAEJ,CAEJ,CACD;AACA,GAAG,CACCiI,KAAK,CAACtS,MAAN,CAAa,IAAb,EACH,OAAM/G,CAAN,CAAQ,CAAE,CAEd,CAID5B,UAAU,CAAC,UAAU,CACjBib,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAR,CACAlK,KAAK,CAACnB,YAAN,CAAmBroB,EAAE,CAACmlC,iBAAtB,CAAwCnlC,EAAE,CAACmlC,iBAAH,CAAuBlmB,QAAQ,CAAC2D,KAAT,CAAe5iB,EAAE,CAACsX,MAAlB,EAA0BuL,CAAjD,CAAmD,CAA3F,EACA7iB,EAAE,CAACqW,SAAH,CAAa,iBAAb,CAAgC/S,IAAhC,EACH,CAJS,CAIR,GAJQ,CAAV,CAKH,CAjOuB,CAA5B,CAqOA;AACA;AACA;AACA;AACA;AACA,GA1tUW,CA4tUX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA/F,EAAE,CAACwC,OAAH,CAAW,aAAX,EAA4B,UAAU,CAElC,KAAKE,MAAL,CAAY,CAAC,cAAe,CACxBmlC,cAAc,CAAE,IADQ,CACQ;AAChCC,WAAW,CAAE,IAFW,CAEQ;AAChCC,eAAe,CAAE,KAHO,CAGQ;AAChCC,SAAS,CAAC,MAJc,CAIQ;AAChCC,cAAc,CAAE,QALQ,CAKQ;AAChCC,WAAW,CAAE,KANW,CAMQ;AAChCC,aAAa,CAAE,KAPS,CAOQ;AAChCC,eAAe,CAAE,KARO,CAQQ;AAChCC,eAAe,CAAE,KATO,CASQ;AAChC;AACAC,cAAc,CAAEhnC,KAAK,CAACqO,MAAN,CAAa,CAACyK,GAAG,CAAC,CAAL,CAAb,CAAqB/W,GAAG,CAACuc,YAAzB,CAXQ,CAYxB2oB,MAAM,CAAE,KAZgB,CAYQ;AAChCC,WAAW,CAAG,KAbU,CAaQ;AAChCC,MAAM,CAAE,KAdgB,CAexBC,KAAK,CAAE,KAfiB,CAAhB,CAAZ,EAkBA,GAAIjmC,GAAE,CAAG,IAAT,CACI8F,GAAG,CAAG9F,EAAE,CAAC9B,OAAH,CAAWgoC,WADrB,CAEIC,WAAW,CAAG,CACV,gBAAgB,CADN,CAEV,YAAY,CAFF,CAGV,cAAc,CAHJ,CAFlB,CAOIC,SAAS,CAAG,CACR,KAAK,CADG,CAPhB,CAUI9K,IAAI,CAAG,CACH3jB,GAAG,CAAC,CADD,CAEHlV,CAAC,CAAC,CAFC,CAGH;AACAmV,UAAU,CAAC,CAJR,CAIUG,MAAM,CAAC,CAJjB,CAImBU,EAAE,CAAC,CAJtB,CAIwBE,EAAE,CAAC,CAJ3B,CAI6BD,EAAE,CAAC,CAJhC,CAIkCL,EAAE,CAAC,CAJrC,CAIuCF,EAAE,CAAC,CAJ1C,CAI4CI,EAAE,CAAC,CAJ/C,CAKHwB,IAAI,CAAC,CALF,CAVX,CAiBIssB,aAjBJ,CAkBA;AACA,GAAG,CAACvgC,GAAJ,CAAQ,CACJ,OACH,CAEDwgC,aAAa,GAEb,QAASC,OAAT,CAAgBhmC,IAAhB,CAAqBimC,QAArB,CAA8B,CAC1B,GAAG,CAACjmC,IAAD,EAASA,IAAI,CAACyS,QAAL,EAAiB,CAA7B,CACI,MAAO,EAAP,CACJ,GAAGiM,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAH,CACI,MAAO,EAAP,CACJ,GAAGA,IAAI,EAAIA,IAAI,CAACE,UAAb,EAA2B66B,IAAI,CAAC/6B,IAAI,CAACC,OAAL,CAAaqK,WAAb,EAAD,CAAlC,CAA+D,CAC3D,GAAGw7B,aAAa,EAAIA,aAAa,CAACpZ,QAAd,CAAuB1sB,IAAvB,CAAjB,EAECA,IAAI,CAACmF,YAAL,CAAkB,WAAlB,CAFJ,CAGC,CACG,MAAO,EAAP,CACH,CAED,MAAO8gC,SAAQ,CAAG,CAACvnB,QAAQ,CAACgL,YAAT,CAAsB1pB,IAAtB,CAAJ,CAAkC0e,QAAQ,CAACgL,YAAT,CAAsB1pB,IAAtB,CAA2B,GAAI6L,OAAJ,CAAW,OAAO6S,QAAQ,CAACY,QAAhB,CAClF,GADuE,CACnE,GADmE,CAA3B,CAAjD,CAEH,CACJ,CAED,QAAS4mB,uBAAT,CAAgClmC,IAAhC,CAAqC,CACjC,GAAG,CAACA,IAAI,CAAC0J,KAAL,CAAWiJ,OAAf,CAAuB,CACnB+L,QAAQ,CAACoH,gBAAT,CAA0B9lB,IAA1B,CAA+B,CAAC,OAAD,CAA/B,EACA,GAAGA,IAAI,CAACC,OAAL,CAAaqK,WAAb,IAA8B,MAA9B,EAAwCoU,QAAQ,CAACsL,eAAT,CAAyBhqB,IAAzB,CAA3C,CAA0E,CACtE0e,QAAQ,CAACoC,MAAT,CAAgB9gB,IAAhB,CAAqB,IAArB,EACH,CACJ,CACJ,CACD,QAASmmC,SAAT,CAAkB9oC,IAAlB,CAAuB0F,IAAvB,CAA4B,CAExB,GAAItD,GAAE,CAAG,IAAT,CAAcg8B,IAAd,CACA,GAAG14B,IAAH,CAAQ,CACJ,GAAG,CAACwC,GAAG,CAAC2/B,WAAR,CAAoB,CAChB,OACH,CACDzJ,IAAI,CAAGh8B,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,KAA1B,CAAP,CACA88B,IAAI,CAACx6B,SAAL,CAAiB8B,IAAI,CAACA,IAAtB,CACH,CAND,IAMK,CACD04B,IAAI,CAAGh8B,EAAE,CAACjB,QAAH,CAAYsG,IAAnB,CACH,CACD,GAAI0iB,MAAK,CAAG9I,QAAQ,CAAC3Z,oBAAT,CAA8B02B,IAA9B,CAAmC,GAAnC,CAAZ,CAEA;AACA,IAAI,GAAIl4B,EAAC,CAAC,CAAN,CAAQqL,EAAZ,CAAeA,EAAE,CAAC4Y,KAAK,CAACjkB,CAAC,EAAF,CAAvB,EAA8B,CAE1B,GAAG9D,EAAE,CAACqW,SAAH,CAAa,uBAAb,CAAqClH,EAArC,IAA6C,IAAhD,CAAqD,CACjD,SACH,CACA;AACD,GAAGrJ,GAAG,CAAC4/B,aAAJ,EAAqBv2B,EAAE,CAAClF,KAAH,CAAS6c,QAAjC,CAA0C,CACtC7H,QAAQ,CAACyI,WAAT,CAAqBvY,EAArB,CAAwB,WAAxB,EAEAs3B,sBAAsB,CAACt3B,EAAD,CAAtB,CAEH,CACD;AACA,GAAGrJ,GAAG,CAAC6/B,eAAJ,EAAuBx2B,EAAE,CAAClF,KAAH,CAAS08B,UAAnC,CAA8C,CAC1C1nB,QAAQ,CAACyI,WAAT,CAAqBvY,EAArB,CAAwB,aAAxB,EACAs3B,sBAAsB,CAACt3B,EAAD,CAAtB,CACH,CAED,GAAGo3B,MAAM,CAACp3B,EAAD,CAAT,CAAc,CACV;AACA,GAAGrJ,GAAG,CAACs/B,cAAP,CAAuB,CACnB,GAAIljC,KAAI,CAAGiN,EAAE,CAAChN,WAAd,CAA0BK,OAA1B,CAAkC2lB,IAAI,CAAGlJ,QAAQ,CAACkJ,IAAT,CAAchZ,EAAd,CAAzC,CACA,MAAMo3B,MAAM,CAACrkC,IAAD,CAAZ,CAAmB,CACfM,OAAO,CAAGN,IAAV,CACAA,IAAI,CAAGM,OAAO,CAACL,WAAf,CACA,GAAGgmB,IAAI,GAAK,CAACjmB,IAAD,EAASA,IAAI,EAAI,CAAC+c,QAAQ,CAACkJ,IAAT,CAAcjmB,IAAd,CAAvB,CAAP,CAAmD,CAC/C,MACH,CACD+c,QAAQ,CAACoC,MAAT,CAAgB7e,OAAhB,EACH,CAEJ,CACA;AACD,GAAGsD,GAAG,CAACw/B,eAAJ,EAAuBrmB,QAAQ,CAACwB,KAAT,CAAetR,EAAf,CAAkB6sB,IAAlB,CAAvB,EAAkD,CAACoK,SAAS,CAACj3B,EAAE,CAAC1O,UAAH,CAAcD,OAAd,CAAsBqK,WAAtB,EAAD,CAA/D,CAAsG,CAClG,GAAGoU,QAAQ,CAACkJ,IAAT,CAAchZ,EAAd,CAAH,CAAqB,CACjBjN,IAAI,CAAGiN,EAAE,CAAChN,WAAV,CACA,GAAGD,IAAI,EAAI,CAAC+c,QAAQ,CAACkJ,IAAT,CAAcjmB,IAAd,CAAZ,CAAgC,CAC5B,SACH,CACJ,CACD+c,QAAQ,CAACoC,MAAT,CAAgBlS,EAAhB,EACA,SAEH,CAEJ,CACD,GAAGo3B,MAAM,CAACp3B,EAAD,CAAI,IAAJ,CAAN,EAAmBA,EAAE,CAAC3O,OAAH,EAAc,MAApC,CAA2C,CACvC,GAAGsF,GAAG,CAACggC,MAAP,CAAc,CACV32B,EAAE,CAAClF,KAAH,CAAS28B,UAAT,CAAsB9gC,GAAG,CAACigC,WAA1B,CACH,CACD,GAAGjgC,GAAG,CAACy/B,SAAP,CAAiB,CACbp2B,EAAE,CAAClF,KAAH,CAASs7B,SAAT,CAAqBz/B,GAAG,CAACy/B,SAAzB,CACH,CACD;AACA;AAEH,CAED;AACA,GAAGz/B,GAAG,CAACu/B,WAAJ,EAAmBl2B,EAAE,CAAC3Q,SAAtB,EAAmC,CAAC2nC,WAAW,CAACh3B,EAAE,CAAC3Q,SAAH,CAAaqM,WAAb,EAAD,CAAlD,CAA+E,CAE3E,GAAGw7B,aAAa,EAAIA,aAAa,CAACpZ,QAAd,CAAuB9d,EAAvB,CAApB,CAA+C,CAC1C,SACJ,CACD8P,QAAQ,CAACoH,gBAAT,CAA0BlX,EAA1B,CAA6B,CAAC,OAAD,CAA7B,EACH,CAED;AACA,GAAGrJ,GAAG,CAAC0/B,cAAJ,EAAsBr2B,EAAE,CAAC3O,OAAH,CAAWqK,WAAX,IAA4B,KAAlD,EAA2D,CAACsE,EAAE,CAACzJ,YAAH,CAAgB,SAAhB,CAA/D,CAA0F,CACtF,GAAGpC,IAAH,CAAQ,CACJ,GAAI4W,IAAG,CAAG/K,EAAV,CACA,OAAQrJ,GAAG,CAAC0/B,cAAZ,EACI,IAAK,MAAL,CACA,IAAK,OAAL,CACA,IAAK,MAAL,CACI,GAAIqB,GAAE,CAAG3sB,GAAG,CAACzZ,UAAb,CAAwB+B,OAAxB,CAAgC0V,GAAhC,CAAoChW,IAApC,CACA,MAAMtB,GAAG,CAACG,OAAJ,CAAY8lC,EAAE,CAACrmC,OAAf,GAA2BqmC,EAAE,CAACrmC,OAAH,EAAc,GAA/C,CAAmD,CAC/CqmC,EAAE,CAAGA,EAAE,CAACpmC,UAAR,CACH,CACD+B,OAAO,CAAGqkC,EAAV,CACA,GAAGrkC,OAAO,CAAChC,OAAR,EAAmB,GAAnB,EAA0Bye,QAAQ,CAACrd,QAAT,CAAkBY,OAAlB,CAA0B,YAA1B,GAA2C,QAAxE,CAAiF,CAC7E,GAAG,CAACyc,QAAQ,CAAC4B,MAAT,CAAgBre,OAAhB,CAAD,EAA6Byc,QAAQ,CAAC+I,aAAT,CAAuBxlB,OAAvB,CAA+B,SAASjC,IAAT,CAAc,CAAC,MAAO,CAAC0e,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAD,EAAwB,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAhC,CAA4D,CAA1G,GAA+G,CAA/I,CAAiJ,CAC7I2X,GAAG,CAAG1V,OAAO,CAACge,eAAd,CACAte,IAAI,CAAGM,OAAO,CAACL,WAAf,CACA,GAAG+V,GAAG,EAAIhW,IAAP,EAAegW,GAAG,CAAClF,QAAJ,EAAgB,CAA/B,EAAqC9Q,IAAI,CAAC8Q,QAAL,EAAiB,CAAtD,EAA2DkF,GAAG,CAAC1X,OAAJ,EAAe0B,IAAI,CAAC1B,OAA/E,EAA0Fye,QAAQ,CAACsF,UAAT,CAAoBrM,GAApB,CAA7F,CAAsH,CAClHA,GAAG,CAACtV,WAAJ,CAAgBJ,OAAO,CAACrB,UAAxB,EACA,MAAMe,IAAI,CAACf,UAAX,CAAsB,CAClB+W,GAAG,CAACtV,WAAJ,CAAgBV,IAAI,CAACf,UAArB,EACH,CACD8d,QAAQ,CAACoC,MAAT,CAAgB7e,OAAhB,EACAyc,QAAQ,CAACoC,MAAT,CAAgBnf,IAAhB,EACH,CAPD,IAOK,CACD+c,QAAQ,CAACnd,QAAT,CAAkBU,OAAlB,CAA0B,YAA1B,CAAuC,EAAvC,EACH,CAGJ,CAGJ,CACDyc,QAAQ,CAACnd,QAAT,CAAkBoY,GAAlB,CAAsB,OAAtB,CAA+BpU,GAAG,CAAC0/B,cAAnC,EACA,MACJ,IAAK,QAAL,CACI,GAAGxlC,EAAE,CAAC+E,iBAAH,CAAqB,YAArB,GAAsC,QAAzC,CAAkD,CAC9C8hC,EAAE,CAAG3sB,GAAG,CAACzZ,UAAT,CACAwe,QAAQ,CAACnd,QAAT,CAAkBoY,GAAlB,CAAsB,OAAtB,CAA8B,MAA9B,EACA1X,OAAO,CAAG0X,GAAV,CACA,MAAM2sB,EAAE,EAAI5nB,QAAQ,CAAC+I,aAAT,CAAuB6e,EAAvB,CAA0B,SAAStmC,IAAT,CAAc,CAAC,MAAO,CAAC0e,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAD,EAAwB,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAhC,CAA4D,CAArG,GAA0G,CAAhH,GACEK,GAAG,CAACG,OAAJ,CAAY8lC,EAAE,CAACrmC,OAAf,GAA2BqmC,EAAE,CAACrmC,OAAH,EAAc,GAD3C,CAAN,CACsD,CAClDgC,OAAO,CAAGqkC,EAAV,CACAA,EAAE,CAAGA,EAAE,CAACpmC,UAAR,CACH,CACD,GAAIqmC,MAAK,CAAG9mC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,GAA1B,CAAZ,CACA+f,QAAQ,CAACyH,aAAT,CAAuBogB,KAAvB,CAA6B,CAEzB78B,KAAK,CAAC,mBAFmB,CAA7B,EAIAzH,OAAO,CAAC/B,UAAR,CAAmBoC,YAAnB,CAAgCikC,KAAhC,CAAsCtkC,OAAtC,EACAskC,KAAK,CAAClkC,WAAN,CAAkBJ,OAAlB,EACAyc,QAAQ,CAACnd,QAAT,CAAkBU,OAAlB,CAA0B,OAA1B,CAAkC,EAAlC,EAEH,CAlDT,CAsDH,CAxDD,IAwDO,CACH,GAAIgnB,MAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EAAZ,CACAlK,KAAK,CAACsE,UAAN,CAAiB3e,EAAjB,EAAqB+H,MAArB,GACAlX,EAAE,CAACw3B,WAAH,CAAe,YAAf,CAA6B1xB,GAAG,CAAC0/B,cAAjC,EACH,CAEJ,CAED;AACA,GAAG1/B,GAAG,CAAC8/B,eAAP,CAAuB,CACnB,GAAG9/B,GAAG,CAAC+/B,cAAJ,CAAmB12B,EAAE,CAAC3O,OAAH,CAAWqK,WAAX,EAAnB,GAAgDoU,QAAQ,CAACsL,eAAT,CAAyBpb,EAAzB,CAAhD,EAAgF8P,QAAQ,CAACgL,YAAT,CAAsB9a,EAAtB,CAAnF,CAA6G,CACzG8P,QAAQ,CAACoC,MAAT,CAAgBlS,EAAhB,EACH,CACJ,CACJ,CACD,GAAGrJ,GAAG,CAACmgC,KAAP,CAAa,CACT,GAAI9lC,KAAI,CAAG5C,EAAE,CAAC47B,UAAH,CAAc6C,IAAI,CAACx6B,SAAnB,CAAX,CACArB,IAAI,CAACO,SAAL,CAAe,SAASH,IAAT,CAAc,CACzB,GAAGA,IAAI,CAAC3C,IAAL,EAAa,MAAhB,CAAuB,CACnB2C,IAAI,CAACg+B,IAAL,CAAYwI,KAAK,CAACxmC,IAAI,CAACg+B,IAAN,CAAjB,CACH,CACJ,CAJD,EAKAvC,IAAI,CAACx6B,SAAL,CAAiBrB,IAAI,CAACk5B,MAAL,EAAjB,CACH,CACD,GAAGvzB,GAAG,CAACkgC,MAAP,CAAc,CACV,GAAI7lC,KAAI,CAAG5C,EAAE,CAAC47B,UAAH,CAAc6C,IAAI,CAACx6B,SAAnB,CAAX,CACArB,IAAI,CAACO,SAAL,CAAe,SAASH,IAAT,CAAc,CACzB,GAAGA,IAAI,CAAC3C,IAAL,EAAa,MAAhB,CAAuB,CACnB2C,IAAI,CAACg+B,IAAL,CAAYyI,MAAM,CAACzmC,IAAI,CAACg+B,IAAN,CAAlB,CACH,CACJ,CAJD,EAKAvC,IAAI,CAACx6B,SAAL,CAAiBrB,IAAI,CAACk5B,MAAL,EAAjB,CACH,CACD,GAAG/1B,IAAH,CAAQ,CACJA,IAAI,CAACA,IAAL,CAAY04B,IAAI,CAACx6B,SAAjB,CACH,CACJ,CACD,GAAGsE,GAAG,CAAC2/B,WAAP,CAAmB,CACfzlC,EAAE,CAACR,WAAH,CAAe,aAAf,CAA6BknC,QAA7B,EACH,CAED,QAASM,OAAT,CAAgBj4B,GAAhB,CAAqB,CACjB,GAAI8F,OAAM,CAAG,EAAb,CACA,IAAK,GAAI/Q,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGiL,GAAG,CAAC/L,MAAxB,CAAgCc,CAAC,EAAjC,CAAqC,CACjC,GAAIsV,KAAI,CAAGrK,GAAG,CAAC2F,UAAJ,CAAe5Q,CAAf,CAAX,CAA8B;AAC9B,GAAIsV,IAAI,EAAI,KAAR,EAAiBA,IAAI,EAAI,KAA7B,CAAmC;AACnC,CACIvE,MAAM,EAAIW,MAAM,CAACyxB,YAAP,CAAoBl4B,GAAG,CAAC2F,UAAJ,CAAe5Q,CAAf,EAAoB,KAAxC,CAAV,CAA0D;AAC7D,CAHD,IAGO,IAAIsV,IAAI,EAAI,KAAZ,CAAkB;AACzB,CACIvE,MAAM,EAAIW,MAAM,CAACyxB,YAAP,CAAoBl4B,GAAG,CAAC2F,UAAJ,CAAe5Q,CAAf,EAAoB,KAApB,CAA4B,EAAhD,CAAV,CACH,CAHM,IAGA,CACH+Q,MAAM,EAAI9F,GAAG,CAACe,MAAJ,CAAWhM,CAAX,CAAV,CACH,CACJ,CACD,MAAO+Q,OAAP,CACH,CACD,QAASkyB,MAAT,CAAeG,SAAf,CAA0B,CACtBA,SAAS,CAAGroC,KAAK,CAACyE,IAAN,CAAW4jC,SAAX,CAAZ,CACA,GAAI5kC,IAAG,CAAG,EAAV,CACA,GAAI6kC,KAAI,CAAG,EAAX,CAAc,gCACd,IAAK,GAAIrjC,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGojC,SAAS,CAAClkC,MAA9B,CAAsCc,CAAC,EAAvC,CAA2C,CACvC,GAAIojC,SAAS,CAACxyB,UAAV,CAAqB5Q,CAArB,GAA2B,EAA/B,CAAmC,CAC/BxB,GAAG,CAAGA,GAAG,CAAGkT,MAAM,CAACyxB,YAAP,CAAoB,KAApB,CAAZ,CACH,CAFD,IAGK,IAAIC,SAAS,CAACxyB,UAAV,CAAqB5Q,CAArB,EAA0B,GAA9B,CAAmC,CACpCxB,GAAG,CAAGA,GAAG,CAAGkT,MAAM,CAACyxB,YAAP,CAAoBC,SAAS,CAACxyB,UAAV,CAAqB5Q,CAArB,EAA0B,KAA9C,CAAZ,CACH,CAFI,IAGA,CACDxB,GAAG,EAAI4kC,SAAS,CAACp3B,MAAV,CAAiBhM,CAAjB,CAAP,CACH,CACJ,CACD,MAAOxB,IAAP,CACH,CAED,QAASgkC,cAAT,EAAyB,CACrB,GAAIc,UAAS,CAAGpnC,EAAE,CAAC6kC,cAAH,CAAkB,aAAlB,CAAhB,CACAhmC,KAAK,CAACqO,MAAN,CAAalN,EAAE,CAAC9B,OAAH,CAAWgoC,WAAxB,CAAqCkB,SAArC,EACH,CAEDpnC,EAAE,CAACsK,QAAH,CAAY,aAAZ,EAA6B,CACzBktB,WAAW,CAAC,sBAAY,CACpBx3B,EAAE,CAACmW,cAAH,CAAkB,aAAlB,CAAgCuwB,QAAhC,EACA,GAAG5gC,GAAG,CAAC2/B,WAAP,CAAmB,CACfzlC,EAAE,CAACR,WAAH,CAAe,aAAf,CAA6BknC,QAA7B,EACH,CACDA,QAAQ,CAAC95B,IAAT,CAAc5M,EAAd,EACH,CAPwB,CAA7B,CAWH,CA9SD,CAkTA;AACA;AACA;AACA;AACA;AACA,GA9hVW,CAgiVX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEAzC,EAAE,CAACo4B,MAAH,CAAU0N,QAAV,CAAmB,YAAnB,CAAgC,UAAU,CACtC,MAAO,CACHgE,WAAW,CAAC,CACR,aAAa,SAAU;AADf,CADT,CAIH/8B,QAAQ,CAAC,CACL,aAAa,CACTktB,WAAW,CAAC,sBAAY,CACpB,GAAIx3B,GAAE,CAAC,IAAP,CACI+a,IAAI,CAAGkE,QAAQ,CAAC6B,mBAAT,CAA6B9gB,EAAE,CAACsX,MAAhC,CAAuC,MAAvC,CAA+C,KAA/C,CADX,CAEA,GAAIyD,IAAJ,CAAS,CACL,GAAG/a,EAAE,CAACqW,SAAH,CAAa,cAAb,IAA+B,KAAlC,CAAwC,CACpC,OACH,CACDrW,EAAE,CAAC4G,IAAH,GACAmU,IAAI,CAACusB,MAAL,GACH,CACJ,CAXQ,CADR,CAJN,CAAP,CAoBH,CArBD,EAuBA;AACA;AACA;AACA;AACA;AACA,GACA/pC,EAAE,CAACo4B,MAAH,CAAU0N,QAAV,CAAmB,YAAnB,CAAiC,UAAY,CACzC,GAAIrjC,GAAE,CAAG,IAAT,CACIunC,SAAS,CAAG,mBADhB,CAEIC,YAFJ,CAGIn4B,GAAG,CAAG,GAAIjD,OAAJ,CAAW,sBAAX,CAAmC,GAAnC,CAHV,CAKA,QAASq7B,YAAT,CAAqB14B,GAArB,CAA0B,CACtB,GAAI/R,IAAG,CAAG,EAAV,CAAc6qB,MAAM,CAAG9Y,GAAG,CAAClL,KAAJ,CAAU,GAAV,CAAvB,CACAhF,KAAK,CAACkD,IAAN,CAAW8lB,MAAX,CAAmB,SAAUlZ,CAAV,CAAa,CAC5B,GAAIF,MAAK,CAAGE,CAAC,CAACzJ,OAAF,CAAU,GAAV,CAAZ,CACI2H,GAAG,CAAGhO,KAAK,CAACiQ,IAAN,CAAWH,CAAC,CAAC+4B,MAAF,CAAS,CAAT,CAAYj5B,KAAZ,CAAX,EAA+B5D,WAA/B,EADV,CAEAgC,GAAG,GAAK7P,GAAG,CAAC6P,GAAD,CAAH,CAAWhO,KAAK,CAACiQ,IAAN,CAAWH,CAAC,CAAC+4B,MAAF,CAASj5B,KAAK,CAAG,CAAjB,GAAuB,EAAlC,CAAhB,CAAH,CACH,CAJD,EAKA,MAAOzR,IAAP,CACH,CAED,QAAS2qC,cAAT,CAAuB3qC,GAAvB,CAA4B,CACxB,GAAIA,GAAJ,CAAS,CACL,GAAI6qB,OAAM,CAAG,EAAb,CACA,IAAK,GAAIzpB,KAAT,GAAiBpB,IAAjB,CAAsB,CAClB,GAAIA,GAAG,CAAC8P,cAAJ,CAAmB1O,IAAnB,CAAJ,CAA8B,CAC1BypB,MAAM,CAACjiB,IAAP,CAAYxH,IAAI,CAAG,GAAP,CAAapB,GAAG,CAACoB,IAAD,CAAhB,CAAyB,IAArC,EACH,CACJ,CACDS,KAAK,CAACC,OAAN,CAAcyoC,SAAd,CAAyB1f,MAAM,CAAC7kB,MAAP,CAAiB,QAAU6kB,MAAM,CAACtX,IAAP,CAAY,EAAZ,CAAV,CAA4B,GAA7C,CAAoD,EAA7E,CAAiFvQ,EAAE,CAACjB,QAApF,EACH,CARD,IAQO,CACHF,KAAK,CAACC,OAAN,CAAcyoC,SAAd,CAAyB,EAAzB,CAA6BvnC,EAAE,CAACjB,QAAhC,EACH,CACJ,CACD;AAEA,GAAI6oC,MAAK,CAAG5nC,EAAE,CAAC60B,WAAf,CACA70B,EAAE,CAAC60B,WAAH,CAAiB,UAAU,CACvB,GAAG70B,EAAE,CAAC+E,iBAAH,CAAqB,YAArB,CAAH,CAAsC,CAClC,MAAO,KAAP,CACH,CACD,MAAO6iC,MAAK,CAAC35B,KAAN,CAAYjO,EAAZ,CAAewN,SAAf,CAAP,CACH,CALD,CAMA,MAAO,CACHq6B,UAAU,CAAE,CACR,aAAc,oBAAUjqC,IAAV,CAAgB07B,QAAhB,CAA0B,CACpC,GAAIj0B,KAAI,CAAG,KAAKA,IAAhB,CACIyiC,EAAE,CAAG7oB,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,kBAAhC,CADT,CAEIL,GAAG,CAAG,EAFV,CAGA,GAAI8iC,EAAE,CAAC5iC,OAAH,CAAWlF,EAAE,CAAC9B,OAAH,CAAW6pC,SAAtB,EAAmC,CAAvC,CAA0C,CACtC/iC,GAAG,CAAG8iC,EAAE,CAACE,SAAH,CAAaF,EAAE,CAAC5iC,OAAH,CAAWlF,EAAE,CAAC9B,OAAH,CAAW6pC,SAAtB,CAAb,CAA+CD,EAAE,CAAC9kC,MAAH,CAAY,CAA3D,EAA8DS,OAA9D,CAAsE,WAAtE,CAAmF,EAAnF,CAAN,CACH,CAFD,IAEO,CACHuB,GAAG,CAAG8iC,EAAE,EAAI,MAAN,CAAeA,EAAE,CAACrkC,OAAH,CAAW,gBAAX,CAA6B,EAA7B,CAAf,CAAkD,EAAxD,CACH,CACD,GAAIH,KAAI,CAAG,8BAAX,CACA,GAAI2kC,MAAK,CAAG,CACR,mBAAoBhpB,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,kBAAhC,GAAuD,SADnE,CAER,mBAAoBL,GAAG,CAAG,OAASA,GAAT,CAAe,GAAlB,CAAwB,EAFvC,CAGR,oBAAqBia,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,mBAAhC,GAAwD,EAHrE,CAIR,sBAAuB3D,OAAO,CAACa,EAAR,CAAc0c,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,uBAAhC,EAA2D,GAA3D,CAAiE4Z,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,uBAAhC,CAA/E,CAA2I4Z,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,qBAAhC,CAJ1J,CAKR,SAAU4Z,QAAQ,CAACuF,gBAAT,CAA0Bnf,IAA1B,CAAgC,QAAhC,CALF,CAAZ,CAOA,IAAK,GAAIjH,KAAT,GAAiB6pC,MAAjB,CAAwB,CACpB,GAAIA,KAAK,CAACn7B,cAAN,CAAqB1O,IAArB,CAAJ,CAAgC,CAC5BkF,IAAI,EAAIlF,IAAI,CAAG,GAAP,CAAa6pC,KAAK,CAAC7pC,IAAD,CAAlB,CAA2B,IAAnC,CACH,CACJ,CACDkF,IAAI,EAAI,YAAR,CACAg2B,QAAQ,CAAC1zB,IAAT,CAActC,IAAd,EACH,CAzBO,CA0BR,kBAAmB,0BAAY,CAC3B,GAAGkkC,YAAY,EAAI,KAAnB,CAA0BG,aAAa,GAC1C,CA5BO,CADT,CA+BHO,SAAS,CAAE,mBAAU/nC,IAAV,CAAgB,CACvBqnC,YAAY,CAAG,KAAf,CACA3oC,KAAK,CAACkD,IAAN,CAAW5B,IAAI,CAAC4C,iBAAL,CAAuB,GAAvB,CAAX,CAAwC,SAAUN,CAAV,CAAa,CACjD,GAAIolB,OAAM,CAAGplB,CAAC,CAAChB,OAAF,CAAU,iBAAV,CAAb,CACA,GAAIomB,MAAJ,CAAY,CACR2f,YAAY,CAAG,IAAf,CACAG,aAAa,CAACF,WAAW,CAAC5f,MAAD,CAAZ,CAAb,CACAplB,CAAC,CAAChC,UAAF,CAAaW,WAAb,CAAyBqB,CAAzB,EACH,CACJ,CAPD,EAQH,CAzCE,CA0CH0lC,UAAU,CAAE,oBAAUhoC,IAAV,CAAgB,CACxB,GAAIH,GAAE,CAAG,IAAT,CACI6nB,MAAM,CAAG,CAAChpB,KAAK,CAACC,OAAN,CAAcyoC,SAAd,CAAyBvnC,EAAE,CAACjB,QAA5B,GAAyC,EAA1C,EAA8C0E,OAA9C,CAAsD,UAAtD,CAAkE,EAAlE,EAAsEkC,KAAtE,CAA4E0J,GAA5E,CADb,CAEA,GAAIwY,MAAJ,CAAY,CACR1nB,IAAI,CAACyC,WAAL,CAAiBrF,EAAE,CAACmF,KAAH,CAASxD,aAAT,CAAuB,6CAA+CL,KAAK,CAACiQ,IAAN,CAAW+Y,MAAM,CAAC,CAAD,CAAN,CAAUpkB,OAAV,CAAkB,IAAlB,CAAwB,EAAxB,EAA4BA,OAA5B,CAAoC,QAApC,CAA8C,GAA9C,CAAX,CAA/C,CAAgH,aAAvI,CAAjB,EACH,CACJ,CAhDE,CAiDH6G,QAAQ,CAAE,CACN,aAAc,CACVktB,WAAW,CAAE,qBAAUgB,GAAV,CAAex7B,GAAf,CAAoB,CAC7B2qC,aAAa,CAAC3qC,GAAD,CAAb,CACH,CAHS,CAIV+H,iBAAiB,CAAE,4BAAY,CAC3B,GAAI/E,GAAE,CAAG,IAAT,CACI6nB,MAAM,CAAG,CAAChpB,KAAK,CAACC,OAAN,CAAcyoC,SAAd,CAAyBvnC,EAAE,CAACjB,QAA5B,GAAyC,EAA1C,EAA8C0E,OAA9C,CAAsD,UAAtD,CAAkE,EAAlE,EAAsEkC,KAAtE,CAA4E0J,GAA5E,CADb,CAEA,MAAOwY,OAAM,CAAG4f,WAAW,CAAC5f,MAAM,CAAC,CAAD,CAAP,CAAd,CAA4B,IAAzC,CACH,CARS,CASVqT,WAAW,CAAE,IATH,CADR,CAjDP,CAAP,CA+DH,CArGD,EAuGA;AACA;AACA;AACA;AACA;AACA,GAprVW,CAsrVX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAlsVW,CAosVX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA39B,EAAE,CAAC+M,QAAH,CAAY,YAAZ,EAA4B,CACxBktB,WAAW,CAAC,qBAAUgB,GAAV,CAAe4P,KAAf,CAAsB,CAC9B,GAAIpoC,GAAE,CAAG,IAAT,CACIwpB,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EADZ,CAEA,GAAI,CAAClK,KAAK,CAACgC,SAAX,CAAsB,CAClB,GAAItR,IAAG,CAAGsP,KAAK,CAACsG,aAAN,EAAV,CACA,GAAI5V,GAAG,EAAIA,GAAG,CAAC1Z,OAAJ,EAAe,KAA1B,CAAiC,CAC7B,OAAQ4nC,KAAR,EACI,IAAK,MAAL,CACA,IAAK,OAAL,CACA,IAAK,MAAL,CACI,GAAIvB,GAAE,CAAG3sB,GAAG,CAACzZ,UAAb,CAAyB+B,OAAzB,CAAkC0V,GAAlC,CAAuChW,IAAvC,CACA,MAAOtB,GAAG,CAACG,OAAJ,CAAY8lC,EAAE,CAACrmC,OAAf,GAA2BqmC,EAAE,CAACrmC,OAAH,EAAc,GAAhD,CAAqD,CACjDqmC,EAAE,CAAGA,EAAE,CAACpmC,UAAR,CACH,CACD+B,OAAO,CAAGqkC,EAAV,CACA,GAAIrkC,OAAO,CAAChC,OAAR,EAAmB,GAAnB,EAA0Bye,QAAQ,CAACrd,QAAT,CAAkBY,OAAlB,CAA2B,YAA3B,GAA4C,QAA1E,CAAoF,CAChF,GAAI,CAACyc,QAAQ,CAAC4B,MAAT,CAAgBre,OAAhB,CAAD,EAA6Byc,QAAQ,CAAC+I,aAAT,CAAuBxlB,OAAvB,CAAgC,SAAUjC,IAAV,CAAgB,CAC7E,MAAO,CAAC0e,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAD,EAAwB,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAhC,CACH,CAFgC,GAE3B,CAFN,CAES,CACL2X,GAAG,CAAG1V,OAAO,CAACge,eAAd,CACAte,IAAI,CAAGM,OAAO,CAACL,WAAf,CACA,GAAI+V,GAAG,EAAIhW,IAAP,EAAegW,GAAG,CAAClF,QAAJ,EAAgB,CAA/B,EAAoC9Q,IAAI,CAAC8Q,QAAL,EAAiB,CAArD,EAA0DkF,GAAG,CAAC1X,OAAJ,EAAe0B,IAAI,CAAC1B,OAA9E,EAAyFye,QAAQ,CAACsF,UAAT,CAAoBrM,GAApB,CAA7F,CAAuH,CACnHA,GAAG,CAACtV,WAAJ,CAAgBJ,OAAO,CAACrB,UAAxB,EACA,MAAOe,IAAI,CAACf,UAAZ,CAAwB,CACpB+W,GAAG,CAACtV,WAAJ,CAAgBV,IAAI,CAACf,UAArB,EACH,CACD8d,QAAQ,CAACoC,MAAT,CAAgB7e,OAAhB,EACAyc,QAAQ,CAACoC,MAAT,CAAgBnf,IAAhB,EACH,CAPD,IAOO,CACH+c,QAAQ,CAACnd,QAAT,CAAkBU,OAAlB,CAA2B,YAA3B,CAAyC,EAAzC,EACH,CAGJ,CAEDgnB,KAAK,CAACsE,UAAN,CAAiB5T,GAAjB,EAAsBhD,MAAtB,GACH,CACD+H,QAAQ,CAACnd,QAAT,CAAkBoY,GAAlB,CAAuB,OAAvB,CAAgCkuB,KAAK,EAAI,MAAT,CAAkB,EAAlB,CAAuBA,KAAvD,EACA,GAAGA,KAAK,EAAI,MAAZ,CAAmB,CACfnpB,QAAQ,CAACoH,gBAAT,CAA0BnM,GAA1B,CAA8B,OAA9B,EACH,CAED,MACJ,IAAK,QAAL,CACI,GAAIla,EAAE,CAAC+E,iBAAH,CAAqB,YAArB,GAAsC,QAA1C,CAAoD,CAChD8hC,EAAE,CAAG3sB,GAAG,CAACzZ,UAAT,CACAwe,QAAQ,CAACnd,QAAT,CAAkBoY,GAAlB,CAAuB,OAAvB,CAAgC,EAAhC,EACA+E,QAAQ,CAACoH,gBAAT,CAA0BnM,GAA1B,CAA8B,OAA9B,EACA1X,OAAO,CAAG0X,GAAV,CACA,MAAO2sB,EAAE,EAAI5nB,QAAQ,CAAC+I,aAAT,CAAuB6e,EAAvB,CAA2B,SAAUtmC,IAAV,CAAgB,CACpD,MAAO,CAAC0e,QAAQ,CAACkJ,IAAT,CAAc5nB,IAAd,CAAD,EAAwB,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAAhC,CACH,CAFY,GAEP,CAFC,GAGCK,GAAG,CAACG,OAAJ,CAAY8lC,EAAE,CAACrmC,OAAf,GAA2BqmC,EAAE,CAACrmC,OAAH,EAAc,GAH1C,CAAP,CAGuD,CACnDgC,OAAO,CAAGqkC,EAAV,CACAA,EAAE,CAAGA,EAAE,CAACpmC,UAAR,CACH,CACD+oB,KAAK,CAACM,cAAN,CAAqBtnB,OAArB,EAA8BmsB,SAA9B,CAAwC,KAAxC,EACAkY,EAAE,CAAG7mC,EAAE,CAACjB,QAAH,CAAYG,aAAZ,CAA0B,KAA1B,CAAL,CACA2nC,EAAE,CAACjkC,WAAH,CAAeJ,OAAf,EACAyc,QAAQ,CAACnd,QAAT,CAAkBU,OAAlB,CAA2B,OAA3B,CAAoC,EAApC,EAEAxC,EAAE,CAACw3B,WAAH,CAAe,YAAf,CAA6B,qDAAuDqP,EAAE,CAACrlC,SAA1D,CAAsE,MAAnG,EAEAgB,OAAO,CAAGxC,EAAE,CAACjB,QAAH,CAAY0R,cAAZ,CAA2B,iBAA3B,CAAV,CACAjO,OAAO,CAACikB,eAAR,CAAwB,IAAxB,EACAjkB,OAAO,CAAGA,OAAO,CAACrB,UAAlB,CACAqoB,KAAK,CAACsE,UAAN,CAAiBtrB,OAAjB,EAA0B0U,MAA1B,GACA;AACAhV,IAAI,CAAGM,OAAO,CAAC/B,UAAR,CAAmB0B,WAA1B,CACA,GAAID,IAAI,EAAI+c,QAAQ,CAACiJ,WAAT,CAAqBhmB,IAArB,CAAZ,CAAwC,CACpC+c,QAAQ,CAACoC,MAAT,CAAgBnf,IAAhB,EACH,CAEJ,CAED,MArER,CAwEH,CACJ,CACJ,CAjFuB,CAkFxB6C,iBAAiB,CAAC,4BAAY,CAC1B,GAAIykB,MAAK,CAAG,KAAKgK,SAAL,CAAeE,QAAf,EAAZ,CACIxE,SADJ,CACemZ,UADf,CAEA,GAAI7e,KAAK,CAACgC,SAAV,CAAqB,CACjB,MAAO,MAAP,CACH,CACD0D,SAAS,CAAG1F,KAAK,CAACsG,aAAN,EAAZ,CACA,GAAIZ,SAAS,EAAIA,SAAS,CAAClc,QAAV,EAAsB,CAAnC,EAAwCkc,SAAS,CAAC1uB,OAAV,EAAqB,KAAjE,CAAwE,CACpE6nC,UAAU,CAAGppB,QAAQ,CAACuF,gBAAT,CAA0B0K,SAA1B,CAAqC,OAArC,GAAiDA,SAAS,CAACxpB,YAAV,CAAuB,OAAvB,CAA9D,CAEA,GAAI2iC,UAAU,EAAI,MAAlB,CAA0B,CACtBA,UAAU,CAAGppB,QAAQ,CAACuF,gBAAT,CAA0B0K,SAAS,CAACzuB,UAApC,CAAgD,YAAhD,GAAiE,QAAjE,CAA4E,QAA5E,CAAuF4nC,UAApG,CACH,CACD,MAAO,CACH52B,IAAI,CAAC,CADF,CAEHE,KAAK,CAAC,CAFH,CAGHoG,MAAM,CAAC,CAHJ,EAILswB,UAJK,EAISA,UAJT,CAIsB,MAJ7B,CAKH,CACD,MAAO,MAAP,CAGH,CAxGuB,CAyGxB3oC,iBAAiB,CAAC,4BAAY,CAC1B,GAAI8pB,MAAK,CAAG,KAAKgK,SAAL,CAAeE,QAAf,EAAZ,CACIxE,SADJ,CAGA,GAAI1F,KAAK,CAACgC,SAAV,CAAsB,MAAO,CAAC,CAAR,CAEtB0D,SAAS,CAAG1F,KAAK,CAACsG,aAAN,EAAZ,CACA,GAAIZ,SAAS,EAAIA,SAAS,CAAClc,QAAV,EAAsB,CAAnC,EAAwCkc,SAAS,CAAC1uB,OAAV,EAAqB,KAAjE,CAAwE,CACpE,MAAO,EAAP,CACH,CACD,MAAO,CAAC,CAAR,CACH,CApHuB,CAA5B,CAwHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEAjD,EAAE,CAAC+M,QAAH,CAAY,aAAZ,EAA6B,CACzBktB,WAAW,CAAC,qBAAUgB,GAAV,CAAe1yB,GAAf,CAAoB,CAE5BA,GAAG,CAAGjH,KAAK,CAACqQ,OAAN,CAAcpJ,GAAd,EAAqBA,GAArB,CAA2B,CAACA,GAAD,CAAjC,CACA,GAAI,CAACA,GAAG,CAAC9C,MAAT,CAAiB,CACb,OACH,CACD,GAAIhD,GAAE,CAAG,IAAT,CACIwpB,KAAK,CAAGxpB,EAAE,CAACwzB,SAAH,CAAaE,QAAb,EADZ,CAEIxZ,GAAG,CAAGsP,KAAK,CAACsG,aAAN,EAFV,CAIA,GAAG9vB,EAAE,CAACqW,SAAH,CAAa,mBAAb,CAAkCvQ,GAAlC,IAA2C,IAA9C,CAAmD,CAC/C,OACH,CAED,QAASwiC,WAAT,CAAoBC,KAApB,CAA2B,CAEvB1pC,KAAK,CAACkD,IAAN,CAAW,oCAAoC8B,KAApC,CAA0C,GAA1C,CAAX,CAA2D,SAAU2B,IAAV,CAAgB,CAEvE,GAAI+iC,KAAK,CAAC/iC,IAAD,CAAT,CAAiB,CACb+iC,KAAK,CAAC/iC,IAAD,CAAL,CAAcxB,QAAQ,CAACukC,KAAK,CAAC/iC,IAAD,CAAN,CAAc,EAAd,CAAR,EAA6B,CAA3C,CACH,CACJ,CALD,EAOA3G,KAAK,CAACkD,IAAN,CAAW,WAAW8B,KAAX,CAAiB,GAAjB,CAAX,CAAkC,SAAU2B,IAAV,CAAgB,CAE9C,GAAI+iC,KAAK,CAAC/iC,IAAD,CAAT,CAAiB,CACb+iC,KAAK,CAAC/iC,IAAD,CAAL,CAAc3G,KAAK,CAACyQ,YAAN,CAAmBi5B,KAAK,CAAC/iC,IAAD,CAAxB,CAAd,CACH,CACJ,CALD,EAMA3G,KAAK,CAACkD,IAAN,CAAW,YAAY8B,KAAZ,CAAkB,GAAlB,CAAX,CAAmC,SAAU2B,IAAV,CAAgB,CAE/C,GAAI+iC,KAAK,CAAC/iC,IAAD,CAAT,CAAiB,CACb+iC,KAAK,CAAC/iC,IAAD,CAAL,CAAc3G,KAAK,CAACuQ,MAAN,CAAam5B,KAAK,CAAC/iC,IAAD,CAAlB,CAAd,CACH,CACJ,CALD,EAMH,CAED,GAAI0U,GAAG,EAAI,OAAOrY,IAAP,CAAYqY,GAAG,CAAC1Z,OAAhB,CAAP,GAAoC0Z,GAAG,CAAC1b,SAAJ,EAAiB,kBAAjB,EAAuC0b,GAAG,CAAC1b,SAAJ,CAAc0G,OAAd,CAAsB,mBAAtB,GAA4C,CAAC,CAAxH,GAA8H,CAACgV,GAAG,CAACxU,YAAJ,CAAiB,UAAjB,CAAnI,CAAiK,CAC7J,GAAIuiB,MAAK,CAAGniB,GAAG,CAAC0iC,KAAJ,EAAZ,CACA,GAAIH,WAAU,CAAGpgB,KAAK,CAAC,YAAD,CAAtB,CACA,MAAOA,MAAK,CAAC,YAAD,CAAZ,CACZ;AACA;AACA;AACYhJ,QAAQ,CAACyH,aAAT,CAAuBxM,GAAvB,CAA4B+N,KAA5B,EACAjoB,EAAE,CAACw3B,WAAH,CAAe,YAAf,CAA6B6Q,UAA7B,EACA,GAAIviC,GAAG,CAAC9C,MAAJ,CAAa,CAAjB,CAAoB,CAChBwmB,KAAK,CAAC+D,aAAN,CAAoBrT,GAApB,EAAyByU,SAAzB,CAAmC,KAAnC,CAA0C,IAA1C,EACA3uB,EAAE,CAACw3B,WAAH,CAAe,aAAf,CAA8B1xB,GAA9B,EACH,CAEJ,CAdD,IAcO,CACH,GAAIxC,KAAI,CAAG,EAAX,CAAeyL,GAAG,CAAG,EAArB,CAAyBI,EAAzB,CACAA,EAAE,CAAGrJ,GAAG,CAAC,CAAD,CAAR,CACA,GAAIA,GAAG,CAAC9C,MAAJ,EAAc,CAAlB,CAAqB,CACjBslC,UAAU,CAACn5B,EAAD,CAAV,CAEAJ,GAAG,CAAG,aAAeI,EAAE,CAACrF,GAAlB,CAAwB,IAAxB,EAAgCqF,EAAE,CAACs5B,IAAH,CAAU,UAAYt5B,EAAE,CAACs5B,IAAf,CAAsB,IAAhC,CAAuC,EAAvE,GACDt5B,EAAE,CAACqZ,KAAH,CAAW,UAAYrZ,EAAE,CAACqZ,KAAf,CAAuB,IAAlC,CAAyC,EADxC,GAEDrZ,EAAE,CAACuZ,MAAH,CAAY,YAAcvZ,EAAE,CAACuZ,MAAjB,CAA0B,IAAtC,CAA6C,EAF5C,GAGDvZ,EAAE,CAAC,YAAD,CAAF,EAAoB,MAApB,EAA8BA,EAAE,CAAC,YAAD,CAAF,EAAoB,OAAlD,CAA4D,iBAAmBA,EAAE,CAAC,YAAD,CAArB,CAAsC,IAAlG,CAAyG,EAHxG,GAIDA,EAAE,CAAC9Q,KAAH,EAAY8Q,EAAE,CAAC9Q,KAAH,EAAY,EAAxB,CAA6B,WAAa8Q,EAAE,CAAC9Q,KAAhB,CAAwB,GAArD,CAA2D,EAJ1D,GAKD8Q,EAAE,CAACmC,MAAH,EAAanC,EAAE,CAACmC,MAAH,EAAa,GAA1B,CAAgC,YAAcnC,EAAE,CAACmC,MAAjB,CAA0B,GAA1D,CAAgE,EAL/D,GAMDnC,EAAE,CAACpF,GAAH,EAAUoF,EAAE,CAACpF,GAAH,EAAU,EAApB,CAAyB,SAAWoF,EAAE,CAACpF,GAAd,CAAoB,GAA7C,CAAmD,EANlD,GAODoF,EAAE,CAACu5B,MAAH,EAAav5B,EAAE,CAACu5B,MAAH,EAAa,GAA1B,CAAgC,cAAgBv5B,EAAE,CAACu5B,MAAnB,CAA4B,GAA5D,CAAkE,EAPjE,GAQDv5B,EAAE,CAACw5B,MAAH,EAAax5B,EAAE,CAACw5B,MAAH,EAAa,GAA1B,CAAgC,cAAgBx5B,EAAE,CAACw5B,MAAnB,CAA4B,GAA5D,CAAkE,EARjE,EAQuE,IAR7E,CASA,GAAIx5B,EAAE,CAAC,YAAD,CAAF,EAAoB,QAAxB,CAAkC,CAC9BJ,GAAG,CAAG,iCAAmCA,GAAnC,CAAyC,MAA/C,CACH,CACDzL,IAAI,CAACsC,IAAL,CAAUmJ,GAAV,EAEH,CAjBD,IAiBO,CACH,IAAK,GAAIjL,EAAC,CAAG,CAAb,CAAgBqL,EAAE,CAAGrJ,GAAG,CAAChC,CAAC,EAAF,CAAxB,EAAgC,CAC5BwkC,UAAU,CAACn5B,EAAD,CAAV,CACAJ,GAAG,CAAG,OAASI,EAAE,CAAC,YAAD,CAAF,EAAoB,QAApB,CAA+B,6BAA/B,CAA+D,EAAxE,EAA8E,aAA9E,CAA8FA,EAAE,CAACrF,GAAjG,CAAuG,IAAvG,EACDqF,EAAE,CAACqZ,KAAH,CAAW,UAAYrZ,EAAE,CAACqZ,KAAf,CAAuB,IAAlC,CAAyC,EADxC,GAC+CrZ,EAAE,CAACs5B,IAAH,CAAU,UAAYt5B,EAAE,CAACs5B,IAAf,CAAsB,IAAhC,CAAuC,EADtF,GAEDt5B,EAAE,CAACuZ,MAAH,CAAY,YAAcvZ,EAAE,CAACuZ,MAAjB,CAA0B,IAAtC,CAA6C,EAF5C,EAGF,UAHE,EAGYvZ,EAAE,CAAC,YAAD,CAAF,EAAoBA,EAAE,CAAC,YAAD,CAAF,EAAoB,QAAxC,CAAmD,SAAWA,EAAE,CAAC,YAAD,CAAb,CAA8B,GAAjF,CAAuF,EAHnG,GAIDA,EAAE,CAACmC,MAAH,EAAa,EAJZ,EAIkB,IAJlB,EAKDnC,EAAE,CAAC9Q,KAAH,CAAW,WAAa8Q,EAAE,CAAC9Q,KAAhB,CAAwB,GAAnC,CAAyC,EALxC,EAK8C,SALpD,CAMAiF,IAAI,CAACsC,IAAL,CAAUmJ,GAAV,EACH,CACJ,CAED/O,EAAE,CAACw3B,WAAH,CAAe,YAAf,CAA6Bl0B,IAAI,CAACiN,IAAL,CAAU,EAAV,CAA7B,EACH,CAEDvQ,EAAE,CAACqW,SAAH,CAAa,kBAAb,CAAiCvQ,GAAjC,EACH,CAzFwB,CAA7B,CA6FA;AACA;AACA;AACA;AACA;AACA,GAx8VW,CA08VX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAp9VW,CAq9VX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEAvI,EAAE,CAACwC,OAAH,CAAW,SAAX,EAAsB,UAAU,CAC5B,GAAIC,GAAE,CAAC,IAAP,CACIic,KAAK,CAAGgD,QAAQ,CAACsF,UADrB,CAEIqkB,YAAY,CAAG,CACXn3B,IAAI,CAAC,CADM,CAEXE,KAAK,CAAC,CAFK,CAGXoG,MAAM,CAAC,CAHI,CAIX8wB,OAAO,CAAC,CAJG,CAFnB,CAQIC,SAAS,CAAG,QAAZA,UAAY,CAAUtf,KAAV,CAAiBvf,KAAjB,CAAwB,CAChC,GAAImlB,SAAQ,CAAG5F,KAAK,CAACsF,cAAN,EAAf,CACInO,QAAQ,CAAG,QAAXA,SAAW,CAAUpgB,IAAV,CAAgB,CACvB,MAAOA,KAAI,CAACyS,QAAL,EAAiB,CAAjB,CAAqBzS,IAAI,CAACC,OAAL,CAAaqK,WAAb,IAA8B,IAA9B,EAAsC,CAACoU,QAAQ,CAAC0C,cAAT,CAAwBphB,IAAxB,CAA5D,CAA4F,CAAC0e,QAAQ,CAAC0D,YAAT,CAAsBpiB,IAAtB,CAApG,CACH,CAHL,CAKAipB,KAAK,CAAC6F,OAAN,CAAc,IAAd,EACA,GAAI0Z,UAAS,CAAGvf,KAAK,CAACsF,cAAN,EAAhB,CACIvC,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwBsnB,SAAS,CAACv6B,KAAlC,CAAyC,KAAzC,CAAgDmS,QAAhD,CADd,CAEI8I,QAAQ,CAAGD,KAAK,CAACE,UAAN,EAFf,CAGIlnB,OAHJ,CAIA,MAAO+pB,OAAO,EAAI,EAAEtN,QAAQ,CAACc,WAAT,CAAqBwM,OAArB,CAA8Bwc,SAAS,CAAC/c,GAAxC,EAA+C/M,QAAQ,CAACQ,kBAA1D,CAAlB,CAAiG,CAC7F,GAAI8M,OAAO,CAACvZ,QAAR,EAAoB,CAApB,EAAyB,CAACiJ,KAAK,CAACsQ,OAAD,CAAnC,CAA8C,CAC1C9C,QAAQ,CAACK,cAAT,CAAwByC,OAAxB,EACA,MAAOA,OAAO,EAAIA,OAAO,GAAKwc,SAAS,CAAC/c,GAAjC,EAAwC,CAAC/P,KAAK,CAACsQ,OAAD,CAArD,CAAgE,CAC5D/pB,OAAO,CAAG+pB,OAAV,CACAA,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAiC,KAAjC,CAAwC,IAAxC,CAA8C,SAAUhsB,IAAV,CAAgB,CACpE,MAAO,CAAC0b,KAAK,CAAC1b,IAAD,CAAb,CACH,CAFS,CAAV,CAGH,CACDkpB,QAAQ,CAAC+D,WAAT,CAAqBhrB,OAArB,EACA,GAAIwmC,OAAM,CAAGvf,QAAQ,CAACzH,iBAAT,EAAb,CACA,GAAI,CAAC/C,QAAQ,CAAC4B,MAAT,CAAgBmoB,MAAhB,CAAD,EAA4B/sB,KAAK,CAAC+sB,MAAD,CAArC,CAA+C,CAC3C/pB,QAAQ,CAAC2I,SAAT,CAAmBohB,MAAnB,CAA2BnqC,KAAK,CAACoS,QAAN,CAAehH,KAAf,EAAwB,CAAC,aAAaA,KAAd,CAAxB,CAA+CA,KAA1E,EACAsiB,OAAO,CAAGyc,MAAV,CACH,CAHD,IAGO,CACH,GAAIvmC,EAAC,CAAG+mB,KAAK,CAACzqB,QAAN,CAAeG,aAAf,CAA6B,GAA7B,CAAR,CACA+f,QAAQ,CAAC2I,SAAT,CAAmBnlB,CAAnB,CAAsB5D,KAAK,CAACoS,QAAN,CAAehH,KAAf,EAAwB,CAAC,aAAaA,KAAd,CAAxB,CAA+CA,KAArE,EACA,GAAIgiB,KAAI,CAAGxC,QAAQ,CAAC4D,eAAT,EAAX,CACA5qB,CAAC,CAACG,WAAF,CAAcqpB,IAAd,EACAxC,QAAQ,CAACgF,UAAT,CAAoBhsB,CAApB,EACA8pB,OAAO,CAAG9pB,CAAV,CACH,CACD8pB,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAiC,KAAjC,CAAwC5L,QAAxC,CAAV,CACH,CAtBD,IAsBO,CACH4L,OAAO,CAAGtN,QAAQ,CAACwC,cAAT,CAAwB8K,OAAxB,CAAiC,IAAjC,CAAuC5L,QAAvC,CAAV,CACH,CACJ,CACD,MAAO6I,MAAK,CAAC2F,cAAN,CAAqB4Z,SAArB,EAAgC5Z,cAAhC,CAA+CC,QAA/C,CAAP,CACH,CA/CL,CAiDA7xB,EAAE,CAAC+M,QAAH,CAAY,SAAZ,EAAyB,CACrBktB,WAAW,CAAC,qBAAUwD,OAAV,CAAmBoN,KAAnB,CAA0B,CAClC,GAAI5e,MAAK,CAAG,KAAKgK,SAAL,CAAeE,QAAf,EAAZ,CACItG,GADJ,CAGA;AACA,GAAI5D,KAAK,CAACgC,SAAV,CAAqB,CACjB4B,GAAG,CAAG,KAAKruB,QAAL,CAAcyjB,cAAd,CAA6B,GAA7B,CAAN,CACAgH,KAAK,CAACiF,UAAN,CAAiBrB,GAAjB,EACH,CACD0b,SAAS,CAACtf,KAAD,CAAQ4e,KAAR,CAAT,CACA,GAAIhb,GAAJ,CAAS,CACL5D,KAAK,CAACM,cAAN,CAAqBsD,GAArB,EAA0BpD,QAA1B,CAAmC,IAAnC,EACA/K,QAAQ,CAACoC,MAAT,CAAgB+L,GAAhB,EACH,CAED5D,KAAK,CAACtS,MAAN,GAGA,MAAO,KAAP,CACH,CApBoB,CAqBrBnS,iBAAiB,CAAC,4BAAY,CAC1B,GAAImqB,UAAS,CAAG,KAAKsE,SAAL,CAAejrB,QAAf,EAAhB,CACI5E,KAAK,CAAGsb,QAAQ,CAACuF,gBAAT,CAA0B0K,SAA1B,CAAqC,YAArC,CADZ,CAEA,MAAO0Z,aAAY,CAACjlC,KAAD,CAAZ,CAAsBA,KAAtB,CAA8B,MAArC,CACH,CAzBoB,CA0BrBjE,iBAAiB,CAAC,4BAAY,CAC1B,GAAI8O,MAAK,CAAG,KAAKglB,SAAL,CAAejrB,QAAf,EAAZ,CACI0gC,IAAI,CAAGz6B,KAAK,EAAIyQ,QAAQ,CAAC6B,mBAAT,CAA6BtS,KAA7B,CAAoC,CAAC,IAAD,CAAO,IAAP,CAAY,SAAZ,CAApC,CAA4D,IAA5D,CADpB,CAGA,MAAOy6B,KAAI,CAAE,CAAC,CAAH,CAAK,CAAhB,CACH,CA/BoB,CAAzB,CAkCH,CApFD,CAuFA;AACA;AACA;AACA;AACA;AACA,GA7jWW,CA+jWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAzkWW,CA0kWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAplWW,CAslWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAhmWW,CAimWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GA3mWW,CA6mWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAvnWW,CAwnWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAloWW,CAooWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GA9oWW,CA+oWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAzpWW,CA2pWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GApqWW,CAsqWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GA/qWW,CAirWX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA1rC,EAAE,CAACwC,OAAH,CAAW,MAAX,EAAqB,UAAY,CAC7B,GAAIC,GAAE,CAAG,IAAT,CACIkpC,KAAK,CAAG,CACJ,YAAa,OADT,CAEJ,YAAa,kBAFT,CAGJ,WAAY,WAHR,CAIJ,aAAc,aAJV,CAKJ,YAAa,iBALT,CAMJ,gBAAiB,iBANb,CAOJ,aAAc,QAPV,CADZ,CAUIC,OAAO,CAAG,CAAC,YAAa,CAAd,CAAiB,gBAAiB,CAAlC,CAAqC,aAAc,CAAnD,CAVd,CAWIC,YAAY,CAAG,CACX,YAAa,OADF,CAEX,YAAa,kBAFF,CAGX,WAAY,WAHD,CAIX,aAAc,aAJH,CAXnB,CAkBAppC,EAAE,CAACC,MAAH,CAAU,CACN,aAAc,CACV,CAAE7B,IAAI,CAAE,QAAR,CAAkBiC,GAAG,CAAE,WAAvB,CADU,CAEV,CAAEjC,IAAI,CAAE,OAAR,CAAiBiC,GAAG,CAAE,sBAAtB,CAFU,CAGV,CAAEjC,IAAI,CAAE,OAAR,CAAiBiC,GAAG,CAAE,sBAAtB,C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;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AA/NsB;AAgOpBphB,sBAAkB,EAAE,KAhOA,CAkOtB;AAlOsB;AAmOpByf,aAAS,EAAE,KAnOS,CAmOM;AAC5B;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAvQsB;AAwQrB39B,oBAAgB,EAAC,KAxQI,CAyQtB;AACA;AACA;AACA;AAEA;AA9QsB;AA+QrBwf,0BAAsB,EAAE,KA/QH,CA+QS;AAE/B;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AA3UsB;AA4UpB4H,kBAAc,EAAE,IA5UI,CA6UtB;AA7UsB;AA8UpBE,kBAAc,EAAE,IA9UI,CA+UtB;AA/UsB;AAgVpBC,mBAAe,EAAE,IAhVG,CAiVtB;AAjVsB;AAkVpByb,a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","file":"js/9.js","sourcesContent":["function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\r\n<template>\r\n <div class=\"ue ue-card\" ref=\"ueCard\">\r\n <script :id=\"randomId\" type=\"text/plain\" ></script>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n /* eslint-disable */\r\n import '../../../public/ueditor/ueditor.config.js'\r\n import '../../../public/ueditor/ueditor.all.card.js'\r\n import '../../../public/ueditor/lang/zh-cn/zh-cn.js'\r\n\r\n import '../../../public/ueditor/kityformula-plugin/addKityFormulaDialog.js'\r\n import '../../../public/ueditor/kityformula-plugin/getKfContent.js'\r\n import '../../../public/ueditor/kityformula-plugin/defaultFilterFix.js'\r\n //编辑公式\r\n import {editKityFormula} from '../../../public/ueditor/kityformula-plugin/editKityFormulaDialog.js'\r\n\r\n //插入横线\r\n import '../../../public/ueditor/horizontal-line/addHorizontalLineDialog.js'\r\n\r\n\r\n // toMathType公式\r\n // import '../../../public/ueditor/toMathType/addtoMathTypeFormulaDialog.js'\r\n // import {editToMathType} from \"../../../public/ueditor/toMathType/edittoMathTypeFormulaDialog.js\";\r\n import {mapGetters, mapMutations} from \"vuex\";\r\n import {SET_TOPIC_BLUR} from \"@/store/constant\";\r\n export default {\r\n name: \"Ue\",\r\n props:{\r\n isSave:Boolean,\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n height:Number,\r\n showTitle:Boolean\r\n },\r\n data(){\r\n return{\r\n ue:null,\r\n randomId: 'editor_' + (Math.random() * 100000000000000000),\r\n scriptTagStatus:2,\r\n UEditorConfig:{\r\n toolbars: [[\r\n 'formatmatch','undo', 'redo','fontsize', 'bold','italic', 'underline','subscript','superscript',\r\n 'removeformat', 'lineheight', 'justifyleft','justifycenter', 'justifyright', 'justifyjustify',\r\n 'simpleupload', 'horizontal', 'spechars',\r\n 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow',\r\n 'insertcol', 'deletecol', 'mergecells','kityformula','chineselattice','horizontalline'\r\n ]],\r\n enableAutoSave:false,\r\n enableContextMenu: false,\r\n imagePopup:false,\r\n initialFrameHeight: 20,\r\n UEDITOR_HOME_URL: 'ueditor/',\r\n },\r\n imgDrag:{\r\n isDrag:false,\r\n diffX:0,\r\n diffY:0,\r\n offsetWidth:0,\r\n offsetHeight:0,\r\n },\r\n text:''\r\n }\r\n },\r\n computed:{\r\n ...mapGetters('answerSheet',['topicBlur'])\r\n },\r\n watch: {\r\n isSave: function (val) {\r\n if(val){\r\n this.$emit('input', this.getUEContent());\r\n }\r\n },\r\n value:function (val){\r\n if(val !== this.text){\r\n this.setText(val)\r\n }\r\n },\r\n height:function (val){\r\n this.ue.setHeight(val);\r\n },\r\n showTitle(val){\r\n val ? this.showUeTitle() : this.hideUeTitle();\r\n }\r\n },\r\n mounted() {\r\n this.initEditor();\r\n },\r\n beforeDestroy() {\r\n // 组件销毁的时候,要销毁 UEditor 实例\r\n if (this.ue !== null && this.ue.textarea && this.ue.destroy) {\r\n this.ue.destroy();\r\n }\r\n },\r\n methods:{\r\n ...mapMutations('answerSheet',{setTopicBlur:SET_TOPIC_BLUR}),\r\n initEditor(){\r\n let _this = this;\r\n // this.ue = UE.getEditor('editor');\r\n // scriptTagStatus 为 2 的时候,说明两个必需引入的 js 文件都已经被引入,且加载完成\r\n if (this.scriptTagStatus === 2 && this.ue === null) {\r\n // Vue 异步执行 DOM 更新,这样一来代码执行到这里的时候可能 template 里面的 script 标签还没真正创建\r\n // 所以,我们只能在 nextTick 里面初始化 UEditor\r\n this.$nextTick(() => {\r\n this.ue = window.UE.getEditor(this.randomId, this.UEditorConfig);\r\n // this.ue.ready(function(){\r\n\r\n // this.ue.execCommand('fontfamily','微软雅黑'); //字体\r\n\r\n // this.ue.execCommand('lineheight', 2); //行间距\r\n\r\n // this.ue.execCommand('fontsize', '14px'); //字号\r\n\r\n // });\r\n // console.log(666);\r\n // 绑定事件,当 UEditor 初始化完成后,将编辑器实例通过自定义的 ready 事件交出去\r\n this.ue.addListener('ready', () => {\r\n\r\n if(this.value!=''){\r\n this.setText(this.value);\r\n }\r\n this.ue.setHeight(this.height);\r\n this.pasteEvent(this.ue);\r\n\r\n this.addImgDragMousedown();\r\n this.addImgDragMousemove();\r\n this.addImgDragMouseup();\r\n this.$nextTick(() => {\r\n this.$emit('ready', this.ue);\r\n })\r\n\r\n this.ue.body.addEventListener('click', function (event) {\r\n let target = event.target || event.srcElement;\r\n let k = target.getAttribute('data-latex');\r\n\r\n if (target.className.indexOf('mathType') !== -1 ) {\r\n let text = target.src.substring(target.src.indexOf(\"?\")+1);\r\n editKityFormula(_this.ue,'chineselattice',text)\r\n }\r\n if(k==null){\r\n return false\r\n }\r\n if(k.length>0){\r\n editKityFormula(_this.ue,'chineselattice',k);\r\n }\r\n })\r\n\r\n if(!this.topicBlur){\r\n document.body.addEventListener('click',(e)=>{\r\n if(!e.target.className.includes('edui-default')){\r\n this.hideUeTitle();\r\n }\r\n })\r\n this.setTopicBlur(true)\r\n }\r\n\r\n this.ue.addListener('contentChange',function(){\r\n _this.text = _this.getUEContent()\r\n _this.$emit('input', _this.getUEContent());\r\n // _this.$emit('ueBlur', true);\r\n });\r\n this.ue.addListener('blur',function(){\r\n _this.text = _this.getUEContent()\r\n _this.$emit('input', _this.getUEContent());\r\n _this.$emit('ueBlur', true);\r\n });\r\n\r\n this.ue.addListener('focus',()=>{\r\n this.hideUeTitle();\r\n this.showUeTitle()\r\n });\r\n\r\n });\r\n\r\n\r\n });\r\n }\r\n },\r\n getUEContent() { // 获取内容方法\r\n return this.ue.getContent()\r\n },\r\n setText(con) {\r\n // this.ue = UE.getEditor(this.randomId, this.UEditorConfig);\r\n this.ue.setContent(con);\r\n },\r\n pasteEvent (editorInstance) {\r\n\r\n let _this = this;\r\n let tagNameArr = ['nobr'];//特殊标签集合\r\n let arr = ['zhixinhuixue.com', 'zhixinhuixue.cn', 'zhixinhuixue.net','xueping.com','xueping365.com'];\r\n editorInstance.addListener('beforepaste', function(e, html, o) {\r\n if (html.html == \"\") {\r\n html.html = \"\";\r\n return;\r\n }\r\n for(var i=0;i<tagNameArr.length;i++){\r\n var tagNameReg = new RegExp(\"<\"+tagNameArr[i]+\"[^>]+>\",\"gi\");\r\n if(html.html.indexOf(tagNameArr[i]) != -1){\r\n html.html = html.html.replace(tagNameReg,\"\");\r\n }\r\n }\r\n\r\n\r\n if (html.html.indexOf(\"img\") != -1) {\r\n let src = [];\r\n let isEmpty = true;\r\n\r\n let t = JSON.stringify(html.html);\r\n if(html.html.search('xueping365')>-1){\r\n let h = t.replace(/xueping365.com/g, \"zhixinhuixue.net\");\r\n html.html= decodeURIComponent(JSON.parse(h));\r\n }\r\n\r\n\r\n html.html.replace(/<img\\ssrc=[\\'\"](.+?)[\\'\"]\\>/gi, function (match, capture) {\r\n src.push(capture);\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n if (capture.indexOf(arr[i]) != -1) {\r\n isEmpty = false;\r\n }\r\n\r\n }\r\n });\r\n // 粘贴图片\r\n let isPasteImg = html.html.search('loadingclass');\r\n if(isPasteImg>-1){\r\n isEmpty = false;\r\n }\r\n\r\n\r\n if (isEmpty) {\r\n html.html = '';\r\n _this.$message({\r\n type: 'info',\r\n message: '禁止复制包含外部地址图片(或插入空小图标)的内容 如需上传图片请通过编辑器(或插入空)上传'\r\n });\r\n }\r\n\r\n }\r\n })\r\n\r\n },\r\n // pasteEvent(ue){\r\n // ue.addListener('beforepaste',function (e,html,o) {\r\n // let t = JSON.stringify(html.html);\r\n // let h = t.replace(/xueping365.com/g, \"zhixinhuixue.net\");\r\n // html.html= JSON.parse(h);\r\n // })\r\n //\r\n // },\r\n addImgDragMousedown() {\r\n let _this = this;\r\n this.ue.body.addEventListener('mousedown', function (event) {\r\n let target = event.target || event.srcElement;\r\n\r\n if(target.tagName ==='IMG' && target.className.indexOf('mathType') === -1){\r\n event.stopPropagation();\r\n event.preventDefault();\r\n _this.imgDrag.offsetWidth = target.offsetWidth;\r\n _this.imgDrag.offsetHeight = target.offsetHeight;\r\n _this.imgDrag.diffX = event.clientX - target.offsetLeft;\r\n _this.imgDrag.diffY = event.clientY - target.offsetTop;\r\n _this.imgDrag.isDrag = true;\r\n } else {\r\n _this.ue.focus(true)\r\n }\r\n })\r\n },\r\n addImgDragMousemove() {\r\n let _this = this;\r\n this.ue.body.addEventListener('mousemove', function (event) {\r\n let target = event.target || event.srcElement;\r\n if(target.tagName ==='IMG' && _this.imgDrag.isDrag){\r\n event.stopPropagation();\r\n event.preventDefault();\r\n let moveX = event.clientX - _this.imgDrag.diffX;\r\n let moveY = event.clientY - _this.imgDrag.diffY;\r\n if(moveX < 0){\r\n moveX = 0\r\n }else if(moveX > _this.ue.window.innerWidth - _this.imgDrag.offsetWidth){\r\n moveX = _this.ue.window.innerWidth - _this.imgDrag.offsetWidth\r\n }\r\n if(moveY < 0){\r\n moveY = 0\r\n }else if(moveY > _this.ue.window.innerHeight - _this.imgDrag.offsetHeight){\r\n moveY = _this.ue.window.innerHeight - _this.imgDrag.offsetHeight\r\n }\r\n target.style.position = 'absolute';\r\n target.style.left = moveX + 'px';\r\n target.style.top = moveY + 'px';\r\n }\r\n })\r\n },\r\n addImgDragMouseup() {\r\n let _this = this;\r\n this.ue.body.addEventListener('mouseup', function (event) {\r\n // event.stopPropagation();\r\n // event.preventDefault();\r\n // let target = event.target || event.srcElement;\r\n _this.imgDrag.isDrag = false\r\n // _this.ue.blur()\r\n // _this.ue.focus(true);\r\n })\r\n },\r\n showUeTitle(){\r\n this.$refs.ueCard.getElementsByClassName('edui-editor-toolbarbox')[0].style.display = 'block';\r\n },\r\n hideUeTitle(){\r\n // this.text = this.getUEContent();\r\n // this.$emit('input', this.getUEContent());\r\n // this.$emit('ueBlur', true);\r\n let el = document.querySelectorAll('.edui-editor-toolbarbox');\r\n el.forEach(val=>val.style.display='none');\r\n\r\n }\r\n }\r\n\r\n }\r\n</script>\r\n\r\n<style>\r\n.ue-card .edui-editor-toolbarbox{\r\n display: none;\r\n position: absolute !important;\r\n top: -56px;\r\n}\r\n.ue-card .edui-default .edui-editor{\r\n border: none;\r\n}\r\n#edui_fixedlayer{\r\n z-index: 1101!important;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"answer_sheet\" :style=\"`height:${answerSheetHeight}px`\">\r\n <div class=\"card_edit-wrap\" ref=\"box\">\r\n <!-- bigTopicPageArr放所有试题内容等数据,翻页时,重组bigTopicPageArr数据 -->\r\n <paper v-for=\"(val,index) in bigTopicPageArr\" :class=\"`pageindex-${index}`\" v-on:showEditBigTopic=\"showEditBigTopic\" v-on:ueBlur=\"ueBlur\" :content=\"val\" :key=\"index\" :totalPageNum=\"bigTopicPageArr.length\" :pageIndex=\"index\" />\r\n\r\n </div>\r\n <div class=\"card_setting-wrap\">\r\n <setting @showAddBigTopic = \"showAddBigTopic\" @restAnswerSheet=\"restAnswerSheet\"/>\r\n <div class=\"set-disable\" v-if=\"!cardSetting.allowEdit\"></div>\r\n </div>\r\n <button class=\"btn btn-go-back\" @click=\"goBack\">返回</button>\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"dialogVisibleIsAddTopic\"\r\n width=\"915px\"\r\n :before-close=\"handleCloseAddTopic\"\r\n @open=\"showBigTopicDialog\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <AddTopic ref=\"AddTopic\" :is-edit=\"isEdit\" :edit-model-id=\"editNo\" @cancel = \"dialogVisibleIsAddTopic = false\" />\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console */\r\nimport setPage from '@/mixins/answersheet/setPage'\r\n\r\nimport Setting from './setting/Index.vue'\r\nimport Paper from './paper/Index.vue'\r\nimport {mapGetters, mapMutations} from 'vuex'\r\nimport {SectionToChinese} from \"@/lib/util.js\"\r\nimport {getPaperWithTopicsDetails,getCardStatusByGrade} from '@/api/answer-sheet'\r\nimport AddTopic from \"@/views/answer-sheet/topic/AddTopic\";\r\nimport {\r\n SET_PAPER_LIST_DATA,\r\n SET_PAGETOPIC_ARR,\r\n SET_ANSWER_CARD_TYPE,\r\n SET_PAPER_SOURCE,\r\n SET_INITPAGE_FLAG,\r\n SET_CARD_SETTING,\r\n SET_BIG_TOPIC_ARR,\r\n SET_TEST_FORM_DATA,\r\n SET_SUBJECT,\r\n SET_IS_PREVIEW_BACK,\r\n SET_IS_ANSWER_CARD_TYPE_CHANGE\r\n} from \"@/store/constant\";\r\n\r\nexport default {\r\n name: \"AnswerSheet\",\r\n components: {\r\n Setting,\r\n Paper,\r\n AddTopic,\r\n },\r\n mixins:[setPage],\r\n data() {\r\n return {\r\n cardType:0,//答题卡类型 0第三方,1知心慧学\r\n dialogVisibleIsAddTopic:false,//第三方添加、编辑试题弹层\r\n grade:1,\r\n TopicsData:{\r\n card_status:0,//准考证号类型,0系统考号、1学校考号\r\n printClassStatus:0//是否已经有打印的班级\r\n },\r\n isEdit:false,//是否编辑所触发弹层\r\n editNo:'',//题号\r\n paperData:[],//试题数据\r\n cardSettings:{\r\n paperSize:5,//1:A3 2:A4 3:16K 4:8K(260*370) 5:8K(270*390)\r\n direction:1,//1横版 2竖版\r\n column:2,//1一栏 2两栏 3三栏\r\n hasBindingLine:0,//装订线 0无 1有\r\n hasPaperMsg:true,//信息栏\r\n examinationNumberType:[1,2], //1填涂考号 2条形码\r\n useQrCode:false,//使用二维码\r\n title:\"\",//考试名称\r\n examInfoConfig:[\r\n {\r\n id:0,\r\n name:'时间',\r\n isShow:true,\r\n text:'100',\r\n units:'分钟'\r\n },\r\n {\r\n id:1,\r\n name:'满分',\r\n isShow:true,\r\n text:'',\r\n units:'分'\r\n },\r\n {\r\n id:2,\r\n name:'命卷人',\r\n isShow:true,\r\n text:'',\r\n units:''\r\n },\r\n {\r\n id:3,\r\n name:'审核人',\r\n isShow:true,\r\n text:'',\r\n units:''\r\n },\r\n\r\n ],//信息栏配置\r\n cardStatus:0,//准考证号类型,0系统考号、1学校考号\r\n cardLength:9,//考号长度\r\n examStatus:0,//考试状态 0未上传、1已上传\r\n grade:1,\r\n examGroupId:0,//考试id\r\n },\r\n editType:0,//答题卡编辑状态,0新建答题卡,1编辑已保存答题卡\r\n scoreLimitMapArr:[15,16,29,49],\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',[\r\n 'cardSetting',\r\n 'bigTopicArr',\r\n 'paperListData',\r\n 'topicTypes',\r\n 'bigTopicPageArr',\r\n 'initPageFlag',\r\n 'paperSource',\r\n 'isPreviewBack',\r\n 'testFormData']),\r\n answerSheetHeight(){\r\n return window.innerHeight;\r\n }\r\n },\r\n mounted() {\r\n this.getDefaultData();\r\n },\r\n methods: {\r\n ...mapMutations('answerSheet', {setCardSetting:SET_CARD_SETTING,\r\n setBigTopicArr: SET_BIG_TOPIC_ARR,\r\n setPaperListData:SET_PAPER_LIST_DATA,\r\n setBigTopicPageArr:SET_PAGETOPIC_ARR,\r\n setAnswerCardType:SET_ANSWER_CARD_TYPE,\r\n setPaperSource:SET_PAPER_SOURCE,\r\n setInitPageFlag:SET_INITPAGE_FLAG,\r\n setTestFormData:SET_TEST_FORM_DATA,\r\n setSubject:SET_SUBJECT,\r\n setIsPreviewBack:SET_IS_PREVIEW_BACK,\r\n setIsAnswerCardTypeChange:SET_IS_ANSWER_CARD_TYPE_CHANGE,\r\n }),\r\n getDefaultData(){\r\n //如果是从预览页面返回的\r\n if(this.isPreviewBack){\r\n this.setIsPreviewBack(false);\r\n return false\r\n }\r\n this.cardSettings = this.cardSetting;\r\n this.cardSettings.examGroupId = this.$route.query.exam_group_id;\r\n this.cardType = Number(this.$route.query.card_type);\r\n this.editType = this.$route.query.editType;//只有第三方有\r\n if(this.cardType===undefined){\r\n this.$message.error('无法获取答题卡类型!')\r\n return false\r\n }\r\n if(this.cardSettings.examGroupId===undefined){\r\n this.$message.error('无法获取考试id!')\r\n return false\r\n }\r\n this.setPaperSource(this.cardType)\r\n //知心慧学数学\r\n if(this.cardType===1){\r\n let uploadForm = new FormData();\r\n uploadForm.append('examGroupId', this.cardSettings.examGroupId)\r\n getPaperWithTopicsDetails(uploadForm).then(res => {\r\n // paperTplType 1题库合一 2题卡分离\r\n // this.setAnswerCardType(res.paperTplType == 1 ? 1 : 0)\r\n\r\n this.TopicsData = JSON.parse(JSON.stringify(res));\r\n let position = '';\r\n if(res.position){\r\n position = JSON.parse(res.position);\r\n }\r\n //是否是编辑答题卡\r\n let isEdit = false;\r\n if(position.bigTopicArr){\r\n isEdit = true\r\n let paperTplType = position.answerCardType == 1 ? 1 : 2;\r\n if(res.paperTplType!=paperTplType){\r\n // isEdit = true\r\n this.setIsAnswerCardTypeChange(true);\r\n }\r\n }\r\n if(isEdit){\r\n //编辑已保存的知心慧学答题卡\r\n let paperTplType = position.answerCardType == 1 ? 1 : 2;\r\n this.setAnswerCardType(paperTplType);\r\n this.setEditZXHX(res,position);\r\n\r\n }else {\r\n //新建知心慧学答题卡\r\n this.setAnswerCardType(res.paperTplType == 1 ? 1 : 0)\r\n this.setNewZXHX(res)\r\n\r\n }\r\n\r\n\r\n }).catch((err) => {\r\n console.log(err)\r\n });\r\n } else\r\n {\r\n //第三方答题卡获取默认数据\r\n let upDataThreeCard = localStorage.getItem('upDataThreeCard');\r\n\r\n if(upDataThreeCard!=undefined){\r\n if(upDataThreeCard ==null) return false\r\n // let resData = JSON.parse(res.data.replace(/"/g,'\"'));\r\n let resData = JSON.parse(upDataThreeCard);\r\n\r\n\r\n // this.testFormData = resData.testFormData;\r\n this.setTestFormData(resData.testFormData);//缓存第三方考试信息,保存答题卡时,一起保存。\r\n\r\n this.editType = resData.testFormData.editType;\r\n if(this.editType === undefined){\r\n this.editType = 0\r\n }\r\n this.grade = resData.testFormData.grade;\r\n this.setSubject(Number(resData.testFormData.subjectId));\r\n\r\n if(this.editType===1){\r\n //编辑第三方答题卡\r\n this.setEditThree(resData);\r\n\r\n }else {\r\n //新建第三方答题卡\r\n this.setNewThree(resData)\r\n }\r\n }\r\n\r\n\r\n // let examGroupIdForm = new FormData();\r\n // examGroupIdForm.append('examGroupId', this.cardSettings.examGroupId)\r\n // //编辑第三方答题卡时从接口获取上次保存的数据\r\n // getTemporaryByExamGroupId(examGroupIdForm).then(res =>{\r\n // // console.log(getCardStatusByGrade,res)\r\n // if(res.status==1){\r\n // if(res.data ==false) return false\r\n // // let resData = JSON.parse(res.data.replace(/"/g,'\"'));\r\n // let resData = JSON.parse(res.data);\r\n //\r\n //\r\n // // this.testFormData = resData.testFormData;\r\n // this.setTestFormData(resData.testFormData);//缓存第三方考试信息,保存答题卡时,一起保存。\r\n //\r\n // this.editType = resData.testFormData.editType;\r\n // if(this.editType === undefined){\r\n // this.editType = 0\r\n // }\r\n // this.grade = resData.testFormData.grade;\r\n // this.setSubject(Number(resData.testFormData.subjectId));\r\n //\r\n // if(this.editType===1){\r\n // //编辑第三方答题卡\r\n // this.setEditThree(resData);\r\n //\r\n // }else {\r\n // //新建第三方答题卡\r\n // this.setNewThree(res,resData)\r\n // }\r\n //\r\n // }\r\n //\r\n // })\r\n\r\n\r\n\r\n }\r\n //\r\n\r\n },\r\n classificationTree (data) {\r\n //试题分类\r\n let newData = [];\r\n let bigTopicArrLength = 0;\r\n data.forEach(item => {\r\n\r\n let indexFound = newData.findIndex(newItem => newItem.questionTypeId === item.questionTypeId);\r\n if (indexFound > -1) {\r\n newData[indexFound].questions.push(item)\r\n } else {\r\n let modelId = 'modelId'+ ++bigTopicArrLength\r\n let bigTopic = {\r\n modelId:modelId,\r\n bigTitle: SectionToChinese(bigTopicArrLength) + '、' + this.getTopicTypeText(item.questionTypeId),\r\n subtitle:'',\r\n questionTypeId: item.questionTypeId,\r\n topicConfigureData: {},\r\n questions: [item]\r\n }\r\n newData.push(bigTopic)\r\n }\r\n });\r\n newData.forEach(val=>{\r\n val.subtitle = this.setSubTitle(val)\r\n })\r\n return newData\r\n },\r\n setSubTitle(val){\r\n let topicSubTitleText = '';\r\n if(this.paperSource == 1 && !val.isQuestionText){\r\n // let question = val.questions[0]?val.questions[0]:val.QuestionTextList[0]\r\n let question = val.questions[0];\r\n\r\n let tempScoreArr = val.questions.map(item=>item.fullScore)\r\n\r\n let sameScoreFlag = [...new Set(tempScoreArr)].length > 1 ? false : true;\r\n\r\n let str = '';\r\n if(!sameScoreFlag){\r\n val.questions.forEach(item=>{\r\n str += `第${item.questionNum}题${item.fullScore}分,`\r\n })\r\n }\r\n\r\n if(val.questionTypeId == 1){\r\n topicSubTitleText = `(本大题共${question.total}小题,${sameScoreFlag ? '每小题'+question.fullScore+'分,' : str}共${question.questionTypeFullScore}分。在每小题给出的${question.optionCount}个选项中,只有一项是符合题目要求的。把答案填涂在答题卡上。)`\r\n }else if([2,11].includes(val.questionTypeId)){\r\n topicSubTitleText = `(本大题共${question.total}小题,${sameScoreFlag ? '每小题'+question.fullScore+'分,' : str}共${question.questionTypeFullScore}分。在每小题给出的${question.optionCount}个选项中,有两项及以上是符合题目要求的。把答案填涂在答题卡上。)`\r\n }else if([5].includes(val.questionTypeId)){\r\n topicSubTitleText = `(本大题共${question.total}小题,${sameScoreFlag ? '每小题'+question.fullScore+'分,' : str}共${question.questionTypeFullScore}分。把答案填写在答题卡相应的题号后的横线上。)`\r\n }else if([7].includes(val.questionTypeId) || [27].includes(val.questionTypeId)){\r\n topicSubTitleText = `(本大题共${question.total}小题,${sameScoreFlag ? '每小题'+question.fullScore+'分,' : str}共${question.questionTypeFullScore}分。解答写出相应的文字说明、证明过程或演算步骤。)`\r\n }else if([17].includes(val.questionTypeId)){\r\n topicSubTitleText = `(本题包括${question.total}小题,请选定其中${question.required}小题,并在相应的答题区域内作答,请用2B铅笔涂黑(示例:■)。若多做,则按作答的前一小题评分。解答应写出文字说明、证明过程或演算步骤。)`\r\n }\r\n }\r\n\r\n return topicSubTitleText\r\n },\r\n setNewZXHX(res){\r\n let _this = this;\r\n this.cardSettings.title = res.object.paperName;\r\n this.cardSetting.examInfoConfig.forEach(item =>{\r\n switch (item.id){\r\n case 0:\r\n item.text =res.object.wpTimes\r\n break\r\n case 1:\r\n item.text =res.object.fullScore\r\n break\r\n case 2:\r\n item.text =res.object.wpAuthor\r\n break\r\n case 3:\r\n item.text =res.object.wpReviewer\r\n break\r\n }\r\n })\r\n this.cardSettings.cardLength = res.object.school_card_length;\r\n this.cardSettings.cardStatus = res.object.school_card_status;\r\n this.setCardSetting(this.cardSettings)\r\n\r\n this.paperData = this.classificationTree(res.object.questions);\r\n\r\n let bigTopicArrZXHX = {};\r\n let TopicArrZXHX = JSON.parse(JSON.stringify(this.paperData));\r\n TopicArrZXHX.forEach(mod =>{\r\n mod.topicConfigureData.topicTypeArr = [{\r\n startNo:mod.questions[0].questionNum,\r\n endNo:mod.questions[mod.questions.length-1].questionNum,\r\n }]\r\n bigTopicArrZXHX[mod.modelId]=mod\r\n })\r\n this.setBigTopicArr(bigTopicArrZXHX);\r\n\r\n if(res.paperTplType == 1){\r\n let tempArr = JSON.parse(JSON.stringify(this.paperData.filter((val)=>{\r\n return ![7,17,27].includes(val.questionTypeId)\r\n })))\r\n\r\n //知心慧学题卡合一,添加试题数据,设置isQuestionText并选项排序\r\n tempArr.forEach(val=>{\r\n val.isQuestionText=true\r\n if([1,2,11].includes(val.questionTypeId)){\r\n val.questions.forEach(valQue=>{\r\n valQue.queOptions.forEach((valOpt,idxOpt)=>valOpt.index=idxOpt)\r\n })\r\n }\r\n\r\n })\r\n this.paperData.splice(tempArr.length,0,...tempArr)\r\n }\r\n\r\n\r\n this.paperData.forEach(mod=>{\r\n if([7,27].includes(mod.questionTypeId)){\r\n mod.questions.forEach(topic=>{\r\n topic.TopicAreaHeight=200;\r\n topic.contentHtml= res.paperTplType == 1 ? topic.questionNum+'、'+ topic.queBody+topic.matchPicture : topic.questionNum+'、'+ topic.matchPicture;\r\n topic.cutId=1;//区分被切割试题,区分分页,1第一段内容\r\n topic.alias = topic.questionNum;\r\n topic.ChooseArea=1;//选做题区分答题区域是第几块\r\n topic.scoreLimit = this.getAnswerMinScoreLimit(topic.fullScore)\r\n topic.point = 0\r\n })\r\n } else if(mod.questionTypeId===17){\r\n mod.topicConfigureData.topicTypeArr = [{\r\n chooseOption:mod.questions[0].total,\r\n chooseSelectOption:mod.questions[0].required,\r\n }]\r\n //题卡合一的题文\r\n if(res.paperTplType == 1){\r\n mod.QuestionTextList= JSON.parse(JSON.stringify(mod.questions));\r\n mod.QuestionTextList.forEach(topic=>{\r\n topic.alias = topic.questionNum;\r\n })\r\n }\r\n\r\n let chooseTopicList = JSON.parse(JSON.stringify(mod.questions));\r\n let showPaperChooseTopic = chooseTopicList[0];\r\n showPaperChooseTopic.alias = showPaperChooseTopic.questionNum;\r\n showPaperChooseTopic.cutId = 1;\r\n showPaperChooseTopic.TopicAreaHeight=200;\r\n showPaperChooseTopic.scoreLimit = this.getAnswerMinScoreLimit(showPaperChooseTopic.fullScore)\r\n showPaperChooseTopic.point = 0\r\n\r\n showPaperChooseTopic.contentHtml = chooseTopicList[0].questionNum + '~' + chooseTopicList[chooseTopicList.length-1].questionNum+'、';\r\n if(showPaperChooseTopic.required>1){\r\n mod.questions = [];\r\n for(let l = 0;l<showPaperChooseTopic.required;l++){\r\n let newShowPaperChooseTopic = JSON.parse(JSON.stringify(showPaperChooseTopic));\r\n //ChooseArea为选做题第几个答题区域\r\n newShowPaperChooseTopic.ChooseArea = l+1;\r\n mod.questions.push(newShowPaperChooseTopic)\r\n }\r\n } else {\r\n showPaperChooseTopic.ChooseArea = 1;\r\n mod.questions=[showPaperChooseTopic]\r\n }\r\n\r\n }else {\r\n mod.questions.forEach(topic=>{\r\n topic.alias = topic.questionNum;\r\n if([1,2,11].includes(topic.questionTypeId)){\r\n topic.queOptions.forEach((val,index)=>{\r\n val.index = index\r\n })\r\n }\r\n })\r\n }\r\n\r\n })\r\n\r\n this.setPaperListData(this.paperData);\r\n this.setBigTopicPageArr([JSON.parse(JSON.stringify(this.paperData))]);\r\n this.$nextTick(()=>{\r\n _this.setInitPageFlag(!this.initPageFlag);//触发分页\r\n })\r\n },\r\n setEditZXHX(res,position){\r\n this.cardSettings = position.cardSetting;\r\n this.setCardSetting(this.cardSettings)\r\n this.setBigTopicArr(position.bigTopicArr)\r\n this.setPaperListData(position.paperListData);\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(position.bigTopicPageArr)));\r\n\r\n let testFormData = {\r\n pdf_url:res.online_card_pdf\r\n }\r\n this.setTestFormData(testFormData);//缓存考试信息\r\n },\r\n setNewThree(resData){\r\n\r\n this.cardSettings.title = resData.testFormData.examName;\r\n //新建第三方答题卡\r\n let uploadForm = new FormData();\r\n uploadForm.append('grade', this.grade)\r\n //根据年级获取第三方答题卡的准考证类型与考后长度\r\n getCardStatusByGrade(uploadForm).then(res =>{\r\n this.cardSettings.cardLength = res.data.card_length;\r\n this.cardSettings.cardStatus = res.data.card_status;\r\n this.setCardSetting(this.cardSettings)\r\n })\r\n },\r\n setEditThree(resData){\r\n this.cardSettings = resData.savePrintInfo.position.cardSetting;\r\n // this.cardSettings.title = resData.testFormData.examName;\r\n this.cardSettings.examGroupId = resData.testFormData.examGroupId;\r\n this.setCardSetting(this.cardSettings)\r\n this.setBigTopicArr(resData.savePrintInfo.position.bigTopicArr)\r\n this.setPaperListData(resData.savePrintInfo.position.paperListData);\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(resData.savePrintInfo.position.bigTopicPageArr)));\r\n },\r\n getTopicTypeText(type) {\r\n // 获取试题类型名称\r\n let text = ''\r\n if(type == 1) return '选择题';\r\n this.topicTypes.forEach(item => {\r\n if (type == item.value) {\r\n text = item.label\r\n }\r\n })\r\n return text\r\n },\r\n handleCloseAddTopic() {\r\n this.dialogVisibleIsAddTopic = false\r\n },\r\n showAddBigTopic(){\r\n this.isEdit = false;\r\n this.editNo = '';\r\n this.dialogVisibleIsAddTopic = true;\r\n },\r\n showEditBigTopic(type){\r\n this.isEdit = true;\r\n this.editNo = type;\r\n this.dialogVisibleIsAddTopic = true;\r\n },\r\n showBigTopicDialog(){\r\n if(this.$refs.AddTopic){\r\n this.$nextTick(()=>{\r\n this.$refs.AddTopic.getDefaultData();\r\n })\r\n }\r\n\r\n },\r\n ueBlur(){\r\n //编辑器修改内容自动保存\r\n this.setBigTopicPageArr(this.bigTopicPageArr)\r\n },\r\n getAnswerMinScoreLimit: function (score) {\r\n let minLimit = 15\r\n for (let i = 0, item; (item = this.scoreLimitMapArr[i++]); ) {\r\n if (item >= score) {\r\n minLimit = item\r\n break\r\n }\r\n }\r\n return minLimit\r\n },\r\n goBack(){\r\n if(this.testFormData.referrerUrl){\r\n window.location.href = this.testFormData.referrerUrl+\"/isCardReturn=true\"\r\n }else{\r\n window.history.back();\r\n }\r\n },\r\n restAnswerSheet(){\r\n //重置知心慧学答题卡\r\n this.setNewZXHX(this.TopicsData);\r\n }\r\n }\r\n}\r\n</script>\r\n<style scoped lang=\"less\">\r\n .answer_sheet{\r\n display: flex;\r\n justify-content: center;\r\n padding-right: 330px;\r\n background: #e1e1e1;\r\n .card_edit-wrap{\r\n flex: 1;\r\n padding: 20px;\r\n overflow: auto;\r\n background: #e1e1e1;\r\n }\r\n .card_setting-wrap{\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 330px;\r\n padding-bottom: 60px;\r\n background: #fff;\r\n box-sizing: border-box;\r\n overflow: auto;\r\n // z-index: 9999;\r\n }\r\n .btn-go-back{\r\n position: fixed;\r\n top: 20px;\r\n left: 20px;\r\n width: 80px;\r\n height: 40px;\r\n margin: 0 10px;\r\n text-align: center;\r\n line-height: 40px;\r\n background: #97b1c7;\r\n border-radius: 4px;\r\n color: #fff;\r\n font-size: 16px;\r\n cursor: pointer;\r\n border: 1px solid transparent;\r\n z-index: 2000;\r\n }\r\n }\r\n\r\n\r\n</style>\r\n<style lang=\"less\">\r\n.set-disable{\r\n background: rgba(0,0,0,.4);\r\n position:absolute;\r\n top: 0;\r\n right: 0;\r\n height: 100%;\r\n width:100%;\r\n z-index: 1;\r\n}\r\n.paper-item{\r\n .set-disable{\r\n z-index: 1999;\r\n background:rgba(0,0,0,.0)\r\n }\r\n}\r\n</style>\r\n","<template>\r\n<div class=\"subjectSelect\">\r\n <el-tooltip class=\"item\" effect=\"dark\" :content=\"this.tipsText\" placement=\"top\">\r\n <i class=\"el-icon-warning-outline\"></i>\r\n </el-tooltip>\r\n <el-select class=\"select-subject\" v-model=\"isSubject\" size=\"mini\" placeholder=\"请选择\" @change=\"subjectChange\">\r\n <el-option\r\n v-for=\"item in options\"\r\n :key=\"item.id\"\r\n :label=\"item.label\"\r\n :value=\"item.id\">\r\n </el-option>\r\n </el-select>\r\n</div> \r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console, no-debugger*/\r\nimport {mapGetters} from \"vuex\";\r\n\r\nexport default {\r\nname: \"subjectSelect\",\r\ncomponents:{},\r\nfilters:{},\r\nprops:{\r\n subjectId:Number,\r\n},\r\ndata(){\r\n return {\r\n isSubject:12,\r\n options:[\r\n {\r\n label:'物理',\r\n id:12\r\n },\r\n {\r\n label:'化学',\r\n id:13\r\n },\r\n {\r\n label:'生物',\r\n id:14\r\n }\r\n ],\r\n wenzong:[\r\n {\r\n label:'政治',\r\n id:15\r\n },\r\n {\r\n label:'历史',\r\n id:16\r\n },\r\n {\r\n label:'地理',\r\n id:17\r\n }\r\n ],\r\n lizong:[\r\n {\r\n label:'物理',\r\n id:12\r\n },\r\n {\r\n label:'化学',\r\n id:13\r\n },\r\n {\r\n label:'生物',\r\n id:14\r\n }\r\n ],\r\n tipsText:\"请选择当前题目所属的学科,用以生成各科考试成绩\",\r\n }\r\n},\r\ncomputed:{\r\n ...mapGetters('answerSheet', [ 'subject']),\r\n},\r\nwatch:{\r\n subjectId(newVal,oldval){\r\n if(oldval!=newVal){\r\n this.isSubject = this.subjectId\r\n }\r\n }\r\n},\r\ncreated(){\r\n if(this.subject === 19){\r\n this.options = this.wenzong\r\n }else if(this.subject === 18){\r\n this.options = this.lizong\r\n }\r\n this.isSubject = this.subjectId\r\n},\r\nmounted(){\r\n\r\n},\r\nmethods:{\r\n subjectChange(){\r\n this.$emit('subjectChange',this.isSubject)\r\n }\r\n}\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.subjectSelect{\r\n display: inline-block;\r\n width: 110px;\r\n .select-subject{\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n width: 80px;\r\n }\r\n}\r\n</style>","<template>\r\n <div class=\"paper-item paper-item-js\" :style=\"{width:`${calcPaperSize.width}mm`,height:`${calcPaperSize.height}mm`}\">\r\n <paper-line v-if=\"cardSetting.hasBindingLine && pageIndex ==0\" :PaperLineFlag=\"cardSetting.hasBindingLine\"/>\r\n <paper-content :PaperLineFlag=\"cardSetting.hasBindingLine\" :content=\"content\" :paperColumn=\"cardSetting.column\" :pageIndex=\"pageIndex\" v-on=\"$listeners\" v-bind=\"$attrs\"/>\r\n <div class=\"page-num-cur\">第{{pageIndex+1}}页 共{{totalPageNum}}页</div>\r\n <div class=\"page-direction\">第{{ Math.ceil((pageIndex+1)/(cardSetting.column*2)) }}张纸{{Math.ceil((pageIndex+1)/cardSetting.column)%2 == 1 ? '正面' : '反面'}} {{Math.ceil((pageIndex)%cardSetting.column + 1)}}</div>\r\n <span data-option=\"bl\" :class=\"['main-dot',{'unique-code':pageIndex == 0,'unique-code-50':cardSetting.hasBindingLine && pageIndex == 0}]\"></span>\r\n <div class=\"set-disable\" v-if=\"!cardSetting.allowEdit\"></div>\r\n\r\n <div class=\"add-topic-tips\" v-if=\"content.length == 0 && totalPageNum == 1\">\r\n 请添加试题\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console */\r\nimport PaperLine from './PaperLine.vue'\r\nimport PaperContent from './PaperContent.vue'\r\nimport pageSize from '../../../mixins/answersheet/pageSize'\r\n\r\n\r\nexport default {\r\n name: \"PaperIndex\",\r\n components: {\r\n PaperLine,\r\n PaperContent\r\n },\r\n mixins:[pageSize],\r\n props:{\r\n pageIndex:{\r\n type:Number,\r\n default:null\r\n },\r\n totalPageNum:{\r\n type:Number,\r\n default:null\r\n },\r\n content:{\r\n type:Array,\r\n default:function(){\r\n return []\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.paper-item{\r\n position: relative;\r\n margin-bottom:30px;\r\n //padding: 40px 20px;\r\n font-family:'Times New Roman','Microsoft YaHei';\r\n position: relative;\r\n background-color: #fff;\r\n margin:0 auto;\r\n .page-direction,.page-num-cur{\r\n position: absolute;\r\n bottom: 20px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n line-height: 30px;\r\n font-size: 12px;\r\n color: #999;\r\n }\r\n .page-direction{\r\n padding:0 5px;\r\n bottom: 5px;\r\n line-height: 20px;\r\n background: #666;\r\n color: #fff;\r\n }\r\n\r\n}\r\n.paper-item-js{\r\n .main-dot {\r\n position: absolute;\r\n top: 20px;\r\n left: 30px;\r\n width: 10.583333333333334mm;\r\n height: 5.291666666666667mm;\r\n // background:rgba(0,0,0,.0);\r\n }\r\n .unique-code-50{\r\n left:50px;\r\n }\r\n}\r\n.add-topic-tips{\r\n text-align: center;\r\n color: #999;\r\n}\r\n</style>\r\n","<template>\r\n <div :class=\"['paper-content',{'line-left':PaperLineFlag && pageIndex == 0,'line-right':PaperLineFlag&& pageIndex == paperColumn*2-1}]\">\r\n <paper-info v-if=\"pageIndex == 0\"/>\r\n <paper-topic :pageIndex=\"pageIndex\" v-bind=\"$attrs\" v-on=\"$listeners\"/>\r\n </div>\r\n</template>\r\n<script>\r\nimport PaperInfo from './paper-info/Index.vue'\r\nimport PaperTopic from './paper-topic/Index.vue'\r\n export default {\r\n name:'PaperContent',\r\n components:{\r\n PaperInfo,\r\n PaperTopic\r\n },\r\n props:{\r\n PaperLineFlag:{\r\n type:Number,\r\n default:0\r\n },\r\n pageIndex:{\r\n type:Number,\r\n default:null\r\n },\r\n paperColumn:{\r\n type:Number,\r\n default:null\r\n }\r\n },\r\n data(){\r\n return {\r\n\r\n }\r\n }\r\n }\r\n</script>\r\n<style scoped lang=\"less\">\r\n.paper-content{\r\n padding: 50px 30px;\r\n //padding:10px;\r\n //border: 1px solid #dddddd;\r\n &.line-left{\r\n padding-left:50px;\r\n padding-right: 30px;\r\n }\r\n &.line-right{\r\n padding-left:30px;\r\n padding-right: 50px;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div :class=\"['paper-line',{'line-left':PaperLineFlag===1,'line-right':PaperLineFlag===2}]\">\r\n <div class=\"examinee-info\" v-if=\"PaperLineFlag===1\">\r\n <div class=\"item\" v-if=\"!cardSetting.examinationNumberType.includes(1) && cardSetting.examinationNumberType.includes(2)\">\r\n <span class=\"red bineLineClassName\"></span>\r\n <em>\r\n <i>:</i>\r\n <i>号</i>\r\n <i>考</i>\r\n </em>\r\n </div>\r\n <div class=\"item\">\r\n <span class=\"red bindLineExamineeName\">\r\n <template v-if=\"cardSetting.useQrCode\"><b v-for=\"val in '系统自动生成姓名信息'\" :key=\"val\">{{val}}</b></template>\r\n </span>\r\n <em>\r\n <i>:</i>\r\n <i>名</i>\r\n <i>姓</i>\r\n </em>\r\n </div>\r\n <div class=\"item\">\r\n <span class=\"red bineLineClassName\">\r\n <template v-if=\"cardSetting.useQrCode\"><b v-for=\"val in '系统自动生成班级信息'\" :key=\"val\">{{val}}</b></template>\r\n </span>\r\n <em>\r\n <i>:</i>\r\n <i>级</i>\r\n <i>班</i>\r\n </em>\r\n </div>\r\n </div>\r\n <div class=\"line\">\r\n <span>线</span>\r\n <span>订</span>\r\n <span>装</span>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters} from 'vuex'\r\nexport default{\r\n name:'PaperLine',\r\n props:{\r\n PaperLineFlag:{\r\n type:Number,\r\n default:0\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.paper-line{\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n width: 38px;\r\n border-right: 2px dashed #bbb;\r\n display: none;\r\n img{\r\n position: absolute;\r\n width: 2px;\r\n height: 100%;\r\n right: 0;\r\n top: 50%;\r\n margin-top: -560px;\r\n }\r\n .line {\r\n position: absolute;\r\n right: -8px;\r\n width: 16px;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-around;\r\n }\r\n &.line-left,&.line-right{\r\n display: block;\r\n // width: 20px;\r\n border: 0;\r\n }\r\n &.line-right{\r\n left: auto;\r\n right: 0;\r\n border-left: 2px dashed #bbb;\r\n .line {\r\n left: -8px;\r\n }\r\n }\r\n &.line-left{\r\n left: 0;\r\n border-right: 2px dashed #bbb;\r\n .line {\r\n right: -8px;\r\n }\r\n }\r\n .line span {\r\n display: block;\r\n font-size: 12px;\r\n color: #999;\r\n transform: rotate(-90deg);\r\n -webkit-transform: rotate(-90deg);\r\n /* Firefox */\r\n -moz-transform: rotate(-90deg);\r\n }\r\n .examinee-info {\r\n position: absolute;\r\n display: flex;\r\n justify-content: space-around;\r\n flex-direction: column;\r\n height: 100%;\r\n width: 40px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n left: 0;\r\n .item {\r\n height: 270px;\r\n font-style: normal;\r\n em {\r\n display: block;\r\n width: 14px;\r\n margin-left: 10px;\r\n font-size: 14px;\r\n font-style: normal;\r\n i {\r\n display: block;\r\n font-size: 14px;\r\n font-style: normal;\r\n transform: rotate(-90deg);\r\n -webkit-transform: rotate(-90deg);\r\n -ms-transform: rotate(-90deg);\r\n -o-transform: rotate(-90deg);\r\n -moz-transform: rotate(-90deg);\r\n }\r\n }\r\n span {\r\n display: flex;\r\n flex-direction: column-reverse;\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n width: 20px;\r\n height: 200px;\r\n margin-left: 10px;\r\n border-right: 2px solid #333;\r\n b {\r\n font-weight:normal;\r\n transform: rotate(-90deg);\r\n -webkit-transform: rotate(-90deg);\r\n display: block;\r\n font-size: 16px;\r\n }\r\n .red {\r\n font-weight: normal;\r\n }\r\n\r\n }\r\n }\r\n }\r\n}\r\n\r\n</style>\r\n","<template>\r\n <div class=\"paper-grade clearfix\">\r\n <div class=\"item\">\r\n <em>班级:</em>\r\n <span class=\"red className\">{{cardSetting.useQrCode?'系统自动生成班级信息':''}}</span>\r\n </div>\r\n <div class=\"item\">\r\n <em>姓名:</em>\r\n <span class=\"red examineeName\">{{cardSetting.useQrCode?'系统自动生成姓名信息':''}}</span>\r\n </div>\r\n <div class=\"item\" v-if=\"!cardSetting.examinationNumberType.includes(1) && cardSetting.examinationNumberType.includes(2)\">\r\n <em>考号:</em>\r\n <span class=\"red examineeName\"></span>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters} from 'vuex'\r\nexport default{\r\n name:'GradeAndName',\r\n computed: {\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.paper-grade {\r\n display: flex;\r\n flex: 1;\r\n height: 22px;\r\n margin-bottom: 10px;\r\n .item {\r\n display: flex;\r\n display: -webkit-flex;\r\n flex: 1;\r\n -webkit-flex:1;\r\n padding: 0 5px;\r\n font-style: normal;\r\n em {\r\n height: 22px;\r\n line-height: 22px;\r\n color: #333;\r\n font-style: normal;\r\n font-size: 16px;\r\n }\r\n span {\r\n flex: 1;\r\n -webkit-flex:1;\r\n height: 20px;\r\n border-bottom: 2px solid #bbbbbb;\r\n display: flex;\r\n display: -webkit-flex;\r\n justify-content: center;\r\n }\r\n .red {\r\n font-weight: normal;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"paper-info-index\">\r\n <PaperTitle/>\r\n <GradeAndName v-if=\"cardSetting.hasBindingLine==0\"/>\r\n <PaperInfo v-if=\"cardSetting.hasPaperMsg\"/>\r\n <PaperAttention/>\r\n <PaperCard/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport PaperTitle from './PaperTitle.vue'\r\nimport GradeAndName from './GradeAndName.vue'\r\nimport PaperInfo from './PaperInfo.vue'\r\nimport PaperAttention from './PaperAttention.vue'\r\nimport PaperCard from './PaperCard.vue'\r\nimport {mapGetters} from 'vuex'\r\nexport default {\r\n name: \"PaperInfoIndex\",\r\n components: {\r\n PaperTitle,\r\n GradeAndName,\r\n PaperInfo,\r\n PaperAttention,\r\n PaperCard\r\n },\r\n computed:{\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n },\r\n}\r\n</script>\r\n","<template>\r\n <div class=\"paper-attention\">\r\n <!-- notice-info,tips-info(A3,8k:min-height:120px A4,18k:min-height:140px) -->\r\n <div :class=\"['notice-info',`page-width-${calcPaperSize.width>165?'default':'small'}`]\">\r\n <i class=\"simple-border right\"></i>\r\n <i class=\"simple-border\"></i>\r\n <div class=\"tips-info\">\r\n <h3 class=\"notice-title\">\r\n <i>注</i>\r\n <i>意</i>\r\n <i>事</i>\r\n <i>项</i>\r\n </h3>\r\n <div class=\"notice-detail\">\r\n <p v-if=\"isShowAttention(0)\" >1、考生务必正确书写班级、姓名,请填涂系统准考证号。</p>\r\n <p v-if=\"isShowAttention(1)\" >1、考生务必正确书写班级、姓名,请填涂学校准考证号。</p>\r\n <p v-for=\"(val,index) in attentionList\" :key=\"index\" >{{cardSetting.useQrCode ? index+1 : index+2}}、{{val}}</p>\r\n </div>\r\n </div>\r\n <div class=\"warming-info\">\r\n <div class=\"notice-ewm\">\r\n <i class=\"cover red\" v-if=\"cardSetting.useQrCode\">系统生成<br>考生二维码</i>\r\n <img class=\"dtk-ewm\" v-if=\"!cardSetting.useQrCode\" id=\"dtk-ewm\" src=\"../../../../assets/images/code.png\">\r\n </div>\r\n <div class=\"noticeLose\">\r\n <h4>缺考标记 <i class=\"absent-mark\"></i></h4>\r\n <p>考生禁止填涂缺考标记!</p>\r\n <p>只能由监考老师负责填涂。</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport pageSize from '../../../../mixins/answersheet/pageSize'\r\nexport default{\r\n name:'PaperAttention',\r\n data(){\r\n return {\r\n attentionOne:[\r\n '考生务必正确书写班级、姓名,请填涂系统准考证号。',\r\n '考生务必正确书写班级、姓名,请填涂学校准考证号。',\r\n ],\r\n attentionList:[\r\n '考生务必用2B铅笔填涂。',\r\n '考生务必在答题卡指定位置作答,并保持卷面整洁。',\r\n '如需要条形码,则考生务必要在指定位置正确贴好条形码。',\r\n '教师务必使用红笔阅卷。',\r\n ]\r\n }\r\n },\r\n methods:{\r\n isShowAttention(index){\r\n if(index===0){\r\n return !this.cardSetting.useQrCode&&this.cardSetting.cardStatus==0\r\n } else if(index===1){\r\n return !this.cardSetting.useQrCode&&this.cardSetting.cardStatus==1\r\n } else {\r\n return true\r\n }\r\n }\r\n },\r\n mixins:[pageSize]\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.paper-attention{\r\n padding-bottom: 20px;\r\n}\r\n.notice-info {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n border: 2px solid #bbbbbb;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n flex-wrap: wrap;\r\n\r\n min-height: 120px;\r\n}\r\n\r\n.notice-info .tips-info {\r\n width: 250px;\r\n height: 100%;\r\n min-height: 120px;\r\n}\r\n.notice-info .simple-border.right {\r\n left: 330px;\r\n}\r\n.notice-info .notice-ewm {\r\n position: relative;\r\n}\r\n.notice-info .notice-ewm .cover {\r\n position: absolute;\r\n width: 80px;\r\n height: 80px;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: #fff;\r\n font-style: normal;\r\n text-align: center;\r\n border: 1px dashed #bbb;\r\n z-index: 10;\r\n}\r\n.notice-info .notice-ewm .dtk-ewm {\r\n width: 70px;\r\n height: 70px;\r\n}\r\n.notice-info .tips-info {\r\n display: flex;\r\n position: relative;\r\n width: 380px;\r\n}\r\n.notice-info .warming-info {\r\n display: flex;\r\n flex: 1;\r\n}\r\n\r\n.notice-info .simple-border {\r\n position: absolute;\r\n height: 100%;\r\n width: 2px;\r\n background: #bbb;\r\n left: 30px;\r\n top: 0;\r\n}\r\n.notice-info .simple-border.right {\r\n left: 470px;\r\n}\r\n.notice-info .notice-title {\r\n width: 30px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-around;\r\n font-size: 14px;\r\n align-items: center;\r\n font-weight: bold;\r\n}\r\n.notice-info .notice-title i {\r\n font-style: normal;\r\n}\r\n.notice-info .notice-detail {\r\n flex: 1;\r\n padding: 5px;\r\n padding-right: 0;\r\n line-height: 16px;\r\n color: #333;\r\n border-right: 2px solid #bbb;\r\n}\r\n.notice-info .notice-detail p {\r\n line-height: 16px;\r\n}\r\n.notice-info .notice-ewm {\r\n width: 90px;\r\n min-height: 80px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n.notice-info .notice-ewm .dtk-ewm {\r\n // position: absolute;\r\n // top: 50%;\r\n // left: 50%;\r\n // transform: translate(-50%, -50%);\r\n // -webkit-transform: translate(-50%, -50%);\r\n width: 80px;\r\n height: 80px;\r\n}\r\n.notice-info .notice-ewm .dtk-ewm canvas {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.notice-info .noticeLose {\r\n flex: 1;\r\n padding: 5px;\r\n box-sizing: border-box;\r\n line-height: 12px;\r\n}\r\n.notice-info .noticeLose p {\r\n line-height: 16px;\r\n}\r\n.notice-info .noticeLose h4 {\r\n display: flex;\r\n align-items: center;\r\n font-weight: normal;\r\n}\r\n.notice-info .noticeLose h4 i {\r\n width: 24px;\r\n height: 14px;\r\n margin-left: 10px;\r\n border: 2px solid #bbb;\r\n}\r\n.page-width-small{\r\n .tips-info{\r\n width:250px;\r\n }\r\n .simple-border.right{\r\n left:340px;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"paper-card\">\r\n <!-- examinationNumberType 1填涂考号 2条形码 -->\r\n <div class=\"exam-id card-flex\" v-if=\"cardSetting.examinationNumberType.includes(1)\">\r\n <div class=\"card-id clearfix\" >\r\n <div class=\"fl\" :key=\"`id_${count}`\" v-for=\"count in Number(cardSetting.cardLength)\">\r\n <span class=\"square\"></span>\r\n <ul>\r\n <li :key=\"num\" v-for=\"num in 10\" :class=\"{'unique-li': num==1 && count==1 }\"><span :class=\"['iconfont',`iconnum_${num-1}`]\"></span></li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"card-code clearfix\" v-if=\"cardSetting.examinationNumberType.includes(2) && ([1,2].includes(this.cardSetting.paperSize) || (cardSetting.cardLength<13 && [3,4,5].includes(cardSetting.paperSize)))\">\r\n <div class=\"code-img fr\">\r\n <div class=\"code-words\">\r\n <i>条</i>\r\n <i>形</i>\r\n <i>码</i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exam-code card-flex\" v-if=\"!cardSetting.examinationNumberType.includes(1) && cardSetting.examinationNumberType.includes(2)\">\r\n <div class=\"card-code clearfix\">\r\n <div class=\"code-img fl\">\r\n <div class=\"code-words cross-code\">\r\n <i>条</i>\r\n <i>形</i>\r\n <i>码</i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters} from 'vuex'\r\nimport pageSize from '../../../../mixins/answersheet/pageSize'\r\nexport default{\r\n name:'PaperCard',\r\n // props:{\r\n // PaperLineFlag:{\r\n // type:Number,\r\n // default:0\r\n // }\r\n // },\r\n computed: {\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n },\r\n mixins:[pageSize]\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.paper-card{\r\n padding-bottom: 10px;\r\n}\r\n.card-flex{\r\n display: flex;\r\n align-items: center;\r\n .card-title{\r\n margin-right: 5px;\r\n line-height: 22px;\r\n }\r\n .card-id{\r\n border:1px solid #bbb;\r\n color:#555555;\r\n .square{\r\n display: block;\r\n width:22px;\r\n height: 20px;\r\n border-right:1px solid #bbb;\r\n }\r\n .iconfont{\r\n width: 13px;\r\n height: 10px;\r\n line-height: 10px;\r\n font-size: 11px;\r\n color: #666;\r\n }\r\n ul{\r\n border-top:1px solid #bbb;\r\n }\r\n &>div:last-child{\r\n .square{\r\n border-right: 0;\r\n }\r\n li{\r\n border-right: 0;\r\n }\r\n }\r\n li{\r\n width:22px;\r\n height: 20px;\r\n line-height: 20px;\r\n text-align: center;\r\n\r\n border-right:1px solid #bbb;\r\n img{\r\n width:15px;\r\n height: 12px;\r\n }\r\n }\r\n &.only-code{\r\n border:0;\r\n &>div{\r\n border:1px solid #bbb;\r\n }\r\n .square{\r\n border-right:1px solid #bbb!important;\r\n &:last-child{\r\n border:0!important;\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n .card-code{\r\n flex:1;\r\n text-align: right;\r\n .code-img{\r\n padding:10px;\r\n border:1px dashed #bbb;\r\n border-radius: 3px;\r\n .code-words{\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n justify-content: space-around;\r\n width:100px;\r\n height: 200px;\r\n border:2px solid #bbb;\r\n border-radius: 3px;\r\n &.cross-code{\r\n width:200px;\r\n height: 100px!important;\r\n flex-direction: row;\r\n }\r\n i{\r\n font-style: normal;\r\n color: #bbb;\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"paper-info clearfix\">\r\n <!-- 满分不能输入 -->\r\n <span v-for=\"info in infoList\" :key=\"info.id\">{{info.name}}:<input\r\n class=\"input-paper-info\" :class=\"{'number':info.id<2}\" :readonly=\"info.id===1\" maxlength=\"9\" v-model=\"info.text\" @change=\"setInfoList\">{{ info.units }}</span>\r\n <div class=\"btn-paper-info iconfont iconedit\" @click=\"editInfo\"></div>\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"paperInfoDialog\"\r\n :close-on-click-modal=\"false\"\r\n :close-on-press-escape=\"false\"\r\n :show-close=\"false\"\r\n width=\"400px\"\r\n center>\r\n <el-checkbox size=\"small\" :label=\"item.id\" v-for=\"(item,key) in cardSettingTemp.examInfoConfig\" v-model=\"item.isShow\" :key=\"key\">{{item.name}}</el-checkbox>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"confirm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters, mapMutations} from \"vuex\";\r\nimport {SET_CARD_SETTING} from \"@/store/constant\";\r\n\r\nexport default{\r\n name:'PaperInfo',\r\n data(){\r\n return {\r\n paperInfoDialog:false,\r\n checkedTempInfo:[0,1,2,3],\r\n checkedInfo:[0,1,2,3],//时间0,满分1,命卷人2,审核人3\r\n cardSettingTemp:{examInfoConfig:[]},\r\n }\r\n },\r\n computed:{\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n infoList(){\r\n let list = []\r\n this.cardSetting.examInfoConfig.forEach(item =>{\r\n if(item.isShow){\r\n list.push(item)\r\n }\r\n })\r\n return list\r\n }\r\n },\r\n methods:{\r\n ...mapMutations('answerSheet',{setCardSetting:SET_CARD_SETTING}),\r\n editInfo(){\r\n this.paperInfoDialog = true;\r\n this.cardSettingTemp= JSON.parse(JSON.stringify(this.cardSetting))\r\n },\r\n setInfoList(){\r\n this.setCardSetting(this.cardSetting)\r\n },\r\n confirm(){\r\n this.paperInfoDialog = false;\r\n // 信息栏显示项为0时,右侧设置模块信息栏设置为无\r\n let infoShowArr = this.cardSettingTemp.examInfoConfig.filter(v=>v.isShow == true)\r\n this.cardSettingTemp.hasPaperMsg = infoShowArr.length == 0 ? false : true;\r\n\r\n this.setCardSetting(this.cardSettingTemp)\r\n },\r\n cancel(){\r\n this.paperInfoDialog = false;\r\n this.checkedTempInfo = [...this.checkedInfo]\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.paper-info {\r\n position: relative;\r\n display: flex;\r\n height: 50px;\r\n justify-content: space-around;\r\n align-items: center;\r\n span {\r\n font-size: 14px;\r\n color: #333;\r\n line-height: 50px;\r\n /* text-align: center; */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n flex: 1;\r\n &:nth-child(1){\r\n min-width: 110px;\r\n // padding-left: 15px;\r\n }\r\n &:nth-child(2){\r\n min-width: 110px;\r\n }\r\n }\r\n .input-paper-info{\r\n width: 56px;\r\n background: #fff;\r\n &.number{\r\n width: 25px;\r\n }\r\n }\r\n &:hover .btn-paper-info{\r\n display: block;\r\n }\r\n}\r\n\r\n</style>\r\n","<template>\r\n <div class=\"paper-title\">\r\n <textarea name=\"name\" v-model=\"cardSetting.title\" @change=\"setTitle\"></textarea>\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters, mapMutations} from \"vuex\";\r\nimport {SET_CARD_SETTING} from \"@/store/constant\";\r\n\r\nexport default{\r\n name:'PaperTitle',\r\n computed: {\r\n ...mapGetters('answerSheet',['cardSetting']),\r\n },\r\n methods:{\r\n ...mapMutations('answerSheet',{setCardSetting:SET_CARD_SETTING}),\r\n setTitle(){\r\n this.setCardSetting(this.cardSetting)\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.paper-title{\r\n height: 55px;\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n text-align: center;\r\n textarea{\r\n display: block;\r\n width: 100%;\r\n height: 55px;\r\n text-align: center;\r\n resize: none;\r\n outline: none;\r\n font-size: 18px;\r\n box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n border: 1px solid #bbbbbb;\r\n color: #000;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"article-chinese\" :style=\"{'padding':`${rectPadding/2}px`}\">\r\n <svg class=\"article-svg\" :style=\"{'height':`${(totalRowsArr.length/2)*(squareSize.h+10)-squareSize.h-10}px`}\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\r\n <rect class=\"article-rect\" width=\"100%\" height=\"100%\" ref=\"rect\"/>\r\n <!-- 最小字 -->\r\n <text :x=\"val.x\" :y=\"val.y\" fill=\"#000\" v-for=\"(val,index) in textArr\" :key=\"`text_${index}`\">{{val.count}}</text>\r\n <!-- 最大字 -->\r\n <!-- 截断线 -->\r\n <line :x1=\"val.x1\" :y1=\"val.y1\" :x2=\"val.x2\" :y2=\"val.y2\" style=\"stroke:rgb(0,0,0);stroke-width:0.8\" v-for=\"(val,index) in totalRowsArr\" :key=\"`total_${index}`\" v-show=\"index!=totalRowsArr.length-1\"/>\r\n <!-- 小格子 -->\r\n <line :x1=\"val.x1\" :y1=\"val.y1\" :x2=\"val.x2\" :y2=\"val.y2\" style=\"stroke:rgb(0,0,0);stroke-width:0.8\" v-for=\"(val,index) in lineArr\" :key=\"index\"/>\r\n </svg>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport pageSize from '../../../../mixins/answersheet/pageSize'\r\nimport {mapGetters} from 'vuex'\r\nexport default {\r\n name:'ArticleCh',\r\n mixins:[pageSize],\r\n props:{\r\n wordsCountCh:{\r\n type:Object,\r\n default:function(){\r\n return {\r\n start:1,//起始格子最小为 1\r\n end:1 //结束格子最小为1\r\n }\r\n }\r\n },\r\n pageIndex:Number\r\n },\r\n computed:{\r\n ...mapGetters('answerSheet',['squareSize']),\r\n },\r\n // watch:{\r\n // wordsCountCh:{\r\n // //深度监听数组更新,重排选项\r\n // handler(){\r\n // if(this.isMounted){\r\n // this.startX()\r\n // }\r\n // },\r\n // deep:true\r\n // }\r\n // },\r\n data(){\r\n return {\r\n svgWidth:0,\r\n lineArr:[],//竖小格子线分割线pos\r\n totalRowsArr:[],//横分割线pos\r\n textArr:[],//字数文本Pos\r\n rectPadding:0,//svg边框\r\n isMounted:false,\r\n }\r\n },\r\n methods:{\r\n startX(){\r\n //一行可放格子数 = (纸张宽度-padding)/格子宽度\r\n let count = parseInt(this.svgWidth/this.squareSize.w);\r\n if(count<1){\r\n return false\r\n }\r\n // 不满一格,设置成svg外边框:纸张宽度 - (一行格子数 * 一行总数)\r\n this.rectPadding = this.svgWidth - this.squareSize.w*count\r\n // 总共行数\r\n let rowCount = Math.ceil((this.wordsCountCh.end-this.wordsCountCh.start+1)/count)\r\n\r\n this.totalRowsArr = []\r\n // totalRowsArr 添加每行之间的分割横线\r\n for(let i=0;i<rowCount+1;i++){\r\n this.totalRowsArr.push({\r\n x1:0,\r\n y1:i * (this.squareSize.h+10)-10,\r\n x2:this.svgWidth,\r\n y2:i * (this.squareSize.h+10)-10\r\n })\r\n this.totalRowsArr.push({\r\n x1:0,\r\n y1:i * (this.squareSize.h+10),\r\n x2:this.svgWidth,\r\n y2:i * (this.squareSize.h+10)\r\n })\r\n }\r\n\r\n // 总格子数\r\n for(let i=0;i<count*rowCount;i++){\r\n this.lineArr.push({\r\n x1:parseInt((i)%count) * this.squareSize.w,\r\n y1:(i)===0 ? parseInt((i)/count) * this.squareSize.h : parseInt((i)/count) * (this.squareSize.h+10),\r\n x2:parseInt((i)%count) * this.squareSize.w,\r\n y2:(i)===0 ? parseInt((i)/count) * this.squareSize.h+this.squareSize.h : parseInt((i)/count) * (this.squareSize.h+10)+this.squareSize.h\r\n })\r\n\r\n // 每100个字,标明位置\r\n if((i+this.wordsCountCh.start)%100 == 0){\r\n let x,y;\r\n\r\n x = i%count * this.squareSize.w\r\n y = (Math.ceil((i)/count)) * (this.squareSize.h+10);\r\n\r\n this.textArr.push({\r\n x,\r\n y,\r\n count:i+this.wordsCountCh.start\r\n })\r\n }\r\n }\r\n }\r\n },\r\n mounted(){\r\n // 计算svg总高度\r\n\r\n let HtmlObj = document.querySelectorAll('.card_edit-wrap')[0];\r\n let articleObj = Array.from(HtmlObj.querySelectorAll('.article-chinese'));\r\n\r\n if(this.cardSetting.hasBindingLine){\r\n if(this.pageIndex == this.bigTopicPageArr.length-1){\r\n this.svgWidth = articleObj[articleObj.length-1].offsetWidth\r\n }else if(this.pageIndex == 0){\r\n this.svgWidth = articleObj[0].offsetWidth\r\n }else{\r\n this.svgWidth = articleObj[0].offsetWidth\r\n }\r\n }else{\r\n this.svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n }\r\n\r\n this.isMounted = true;\r\n this.startX();\r\n }\r\n\r\n}\r\n</script>\r\n\r\n<style lang=\"less\" scoped >\r\n.article-chinese{\r\n border:1px solid #000;\r\n}\r\n.article-svg{\r\n width: 100%;\r\n // height: 500px;\r\n}\r\n.article-rect{\r\n fill:#fff;\r\n stroke-width:1;\r\n stroke:#000;\r\n box-sizing: border-box;\r\n}\r\ntext{\r\n font-size: 12px;\r\n // transform: scale(0.8);\r\n}\r\n</style>\r\n","<template>\r\n<div class=\"choose-topic\">\r\n <div class=\"title\" v-for=\"item in topic\" :key=\"item.alias\">\r\n <span class=\"topic-no\">{{item.alias}}、</span>\r\n <div class=\"title-content clearfix\" v-html=\"item.queBody\"></div>\r\n </div>\r\n</div> \r\n</template>\r\n\r\n<script>\r\nexport default {\r\nname: \"ChooseTopic\",\r\ncomponents:{},\r\nfilters:{},\r\nprops:{\r\n topic:Array\r\n},\r\ndata(){\r\n return {\r\n\r\n }\r\n},\r\ncomputed:{},\r\nwatch:{},\r\ncreated(){\r\n\r\n},\r\nmounted(){\r\n\r\n},\r\nmethods:{\r\n \r\n}\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.choose-topic{\r\n .title{\r\n position: relative;\r\n line-height: 30px;\r\n .topic-no{\r\n position: absolute;\r\n }\r\n .title-content{\r\n text-indent: 2em;\r\n }\r\n }\r\n}\r\n\r\n</style>","<template>\r\n <div class=\"\">\r\n <div :class=\"[`content-${index}`,'paper-topic-content']\" v-for=\"(val,index) in content\" :key=\"`topic_${index}`\">\r\n <TopicTitle :titleInfo=\"setTopicTitle(val)\" :txt=\"val\" v-if=\"!val.isLast\"/>\r\n <template v-if=\"!val.isQuestionText\">\r\n <TopicChoice :topicInfo=\"val.questions\" :modelId=\"val.modelId\" :setConfig=\"val.topicConfigureData\" v-if=\"[1,2,11].includes(val.questionTypeId)\" v-bind=\"$attrs\" v-on=\"$listeners\" :class=\"`topic-${val.questionTypeId}`\"/>\r\n <TopicFill :topicInfo=\"val.questions\" :modelId=\"val.modelId\" v-bind=\"$attrs\" v-on=\"$listeners\" :setConfig=\"val.topicConfigureData\" v-if=\"val.questionTypeId == 5\"/>\r\n </template>\r\n <template v-if=\"[7,17,27].includes(val.questionTypeId)\">\r\n <ChooseTopic v-if=\"val.questionTypeId===17&&val.QuestionTextList\" :topic=\"val.QuestionTextList\"></ChooseTopic>\r\n <TopicExplain :class=\"{'choose-topic':val.questionTypeId===17}\" v-for=\"topic in val.questions\" :key=\"''+topic.alias+topic.ChooseArea+topic.cutId+Math.random()\" :topicInfo=\"topic\" :setConfig=\"val\" v-bind=\"$attrs\" v-on=\"$listeners\" />\r\n </template>\r\n\r\n <template v-if=\"answerCardType === 1 && val.isQuestionText == 1\">\r\n <!-- 题卡合一:选择题 题文 -->\r\n <Topic v-for=\"(valT,indexT) in val.questions\" :topicContent=\"valT\" :key=\"indexT\"/>\r\n </template>\r\n\r\n <template v-if=\"[77].includes(val.questionTypeId) && subject == 9\">\r\n <!-- 英语作文 -->\r\n <TopicExplain class=\"article-topic\" v-for=\"topic in val.questions\" :key=\"''+topic.alias+topic.cutId+Math.random()\" :topicInfo=\"topic\" :setConfig=\"val\" v-bind=\"$attrs\" v-on=\"$listeners\" />\r\n </template>\r\n\r\n <template v-if=\"[77].includes(val.questionTypeId) && subject == 8\">\r\n <!-- 语文作文 -->\r\n <TopicExplain class=\"article-topic\" v-for=\"topic in val.questions\" :key=\"''+topic.alias+topic.cutId+Math.random()\" :topicInfo=\"topic\" :setConfig=\"val\" v-bind=\"$attrs\" v-on=\"$listeners\" />\r\n </template>\r\n </div>\r\n\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console */\r\nimport TopicTitle from './TopicTitle.vue'\r\nimport TopicChoice from './TopicChoice.vue'\r\nimport TopicFill from './TopicFill.vue'\r\nimport TopicExplain from './TopicExplain.vue'\r\nimport Topic from './Topic.vue'\r\nimport ChooseTopic from './ChooseTopic.vue'\r\n\r\n\r\n\r\nimport {mapGetters} from 'vuex'\r\nexport default {\r\n name: \"PaperTopic\",\r\n components: {\r\n TopicTitle,\r\n TopicChoice,\r\n TopicFill,\r\n TopicExplain,\r\n Topic,\r\n ChooseTopic\r\n },\r\n\r\n props: {\r\n content:{\r\n type:Array,\r\n default:function(){\r\n return []\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['answerCardType','subject','paperSource','bigTopicArr']),\r\n },\r\n methods:{\r\n setTopicTitle(val){\r\n let topicTitleText = val.bigTitle\r\n let topicSubTitleText = '';\r\n\r\n if(this.paperSource == 1 && !val.isQuestionText){\r\n topicSubTitleText = val.subtitle;\r\n }\r\n\r\n return {\r\n topicTitleText,\r\n topicSubTitleText\r\n }\r\n },\r\n },\r\n}\r\n</script>\r\n","<template>\r\n <div class=\"topic topic-box-border\" :style=\"{'line-height':(topicContent.rowLineHeight||30)+'px','font-size':(topicContent.fontSizeCount||14)+'px'}\">\r\n <div class=\"btn-paper-info iconfont iconedit\" @click=\"topicSetDialog=true\"></div>\r\n <div class=\"title\" :style=\"{'line-height':(topicContent.rowLineHeight||30)+'px'}\" v-if=\"!topicContent.isOnlyShowOption\">\r\n <span class=\"topic-no\">{{topicContent.alias}}、</span>\r\n <div class=\"title-content\" v-html=\"topicContent.queBody\"></div>\r\n </div>\r\n <ol class=\"options\" v-if=\"[1,2,11].includes(topicContent.questionTypeId) && topicContent.queOptions.length>0\">\r\n <li :class=\"['option-item',`option-${index}`,`list-style-${topicContent.listType}`]\" v-for=\"(val,index) in topicContent.queOptions\" :key=\"index\">\r\n <span class=\"options-words\">{{words[val.index]}}.</span>\r\n <span v-html=\"val.content\"></span>\r\n </li>\r\n </ol>\r\n\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"topicSetDialog\"\r\n :close-on-click-modal=\"false\"\r\n :close-on-press-escape=\"false\"\r\n :show-close=\"false\"\r\n width=\"30%\"\r\n center>\r\n <el-form ref=\"form\" :model=\"form\" label-width=\"100px\">\r\n <el-form-item label=\"选项每行列数\" v-show=\"topicContent.queOptions\" v-if=\"[1,2,11].includes(topicContent.questionTypeId)\">\r\n <el-select v-model=\"form.columnCount\" placeholder=\"请选择选项每行列数\">\r\n <el-option :value=\"val.id\" :label=\"val.label\" :key=\"val.id\" v-for=\"val in form.columnCountArr\" ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"行间距\">\r\n <el-select v-model=\"form.rowLineHeight\" placeholder=\"请选择行间距\">\r\n <el-option :value=\"val\" :label=\"`${val}px`\" :key=\"val\" v-for=\"val in form.rowHieightArr\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"字体大小\">\r\n <el-select v-model=\"form.fontSizeCount\" placeholder=\"请选择字体大小\">\r\n <el-option :value=\"val\" :label=\"`${val}px`\" :key=\"val\" v-for=\"val in form.fontSizeArr\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"confirm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n<script>\r\nimport {mapGetters,mapMutations} from 'vuex'\r\nimport {SET_PAGETOPIC_ARR,SET_INITPAGE_FLAG} from \"@/store/constant\";\r\nimport resetPage from '@/lib/resetPage'\r\n export default{\r\n name:'Topic',\r\n data(){\r\n return {\r\n topicSetDialog:false,\r\n fillSetting:{\r\n columnCount:1,\r\n rowLineHeight:30,\r\n fontSizeCount:12,\r\n },\r\n form:{\r\n columnCount:0,//下标\r\n rowLineHeight:30,//行高\r\n fontSizeCount:12,//字号大小\r\n columnCountArr:[\r\n {id:0,label:1,num:0},\r\n {id:2,label:2,num:2},\r\n {id:1,label:4,num:1},\r\n ],\r\n // 0纵向 1横向 2一排两个\r\n rowHieightArr:[25,30,35,40,45,50],\r\n fontSizeArr:[12,14,16,18],\r\n },\r\n words:['A','B','C','D','E','F','G','H','I','J','K','L','M']\r\n }\r\n },\r\n props:{\r\n topicContent:{\r\n type:Object,\r\n default:function(){\r\n return {}\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['paperSource','bigTopicPageArr','initPageFlag']),\r\n },\r\n mounted(){\r\n this.initTopic();\r\n },\r\n methods:{\r\n ...mapMutations('answerSheet', {setBigTopicPageArr:SET_PAGETOPIC_ARR,setInitPageFlag:SET_INITPAGE_FLAG}),\r\n initTopic(){\r\n this.form.columnCount = this.topicContent.listType\r\n this.form.rowLineHeight = this.topicContent.rowLineHeight||30\r\n this.form.fontSizeCount = this.topicContent.fontSizeCount||14\r\n },\r\n confirm(){\r\n this.topicSetDialog = false;\r\n let tempArr = resetPage(this.bigTopicPageArr);\r\n \r\n tempArr.forEach((item) => {\r\n if(item.questionTypeId == this.topicContent.questionTypeId && item.isQuestionText ){\r\n item.questions.forEach((val,index)=>{\r\n if(val.questionNum == this.topicContent.questionNum){\r\n let count = this.form.columnCountArr.findIndex(v=>v.id == this.form.columnCount)\r\n item.questions[index].listType = this.form.columnCountArr[count].num;\r\n item.questions[index].rowLineHeight = this.form.rowLineHeight;\r\n item.questions[index].fontSizeCount = this.form.fontSizeCount;\r\n }\r\n })\r\n }\r\n });\r\n\r\n this.setBigTopicPageArr([tempArr])\r\n this.setInitPageFlag(!this.initPageFlag);\r\n },\r\n cancel(){\r\n this.topicSetDialog = false;\r\n },\r\n }\r\n }\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.topic{\r\n border:0;\r\n // line-height: 24px;\r\n}\r\n.title{\r\n position: relative;\r\n line-height: 22px;\r\n .topic-no{\r\n position: absolute;\r\n }\r\n .title-content{\r\n text-indent: 1.5em;\r\n }\r\n\r\n}\r\n.options{\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: left;\r\n flex-wrap: wrap;\r\n padding-left: 20px;\r\n // list-style: upper-alpha;\r\n li{\r\n padding-right:30px;\r\n width:50%;\r\n display: flex;\r\n align-items: center;\r\n .options-words{\r\n margin-right: 2px;\r\n }\r\n &.list-style-0{\r\n width:100%;\r\n }\r\n &.list-style-1{\r\n width:25%;\r\n }\r\n &.list-style-2{\r\n width:50%;\r\n }\r\n }\r\n}\r\n</style>\r\n <!-- :style=\"{'width':(1/fillSetting.columnCount*100)+'%'}\" -->\r\n","<template>\r\n <div class=\"topic-choice clearfix\" :class=\"[`flex-direction-${form.direction}`,{'topic-box-border':optionsArr.length>0}]\">\r\n <div class=\"btn-paper-info iconfont iconedit\" @click=\"openSet\"></div>\r\n <div class=\"del-btn iconfont icondelete\" v-if=\"paperSource == 0\" @click=\"delTopic\"></div>\r\n <!-- ul 包裹每组数据 -->\r\n <ul class=\"single-option clearfix\" v-for=\"(valUl,indexUl) in optionsArr\" :key=\"indexUl\">\r\n <li class=\"clearfix option-li\" :data-pageIndex=\"pageIndex\" :data-modelId=\"modelId\" :data-type=\"valOptions.questionTypeId\" v-for=\"(valOptions,indexOptions) in valUl\" :key=\"indexOptions\">\r\n <em>{{valOptions.alias}}</em>\r\n <!-- span 包裹选项个数 -->\r\n <span :class=\"['iconfont',`iconwords_${index}`]\" v-for=\"(val,index) in parseInt(valOptions.optionCount)\" :key=\"index\"></span>\r\n </li>\r\n </ul>\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"topicSetDialog\"\r\n :close-on-click-modal=\"false\"\r\n :close-on-press-escape=\"false\"\r\n :show-close=\"false\"\r\n width=\"30%\"\r\n center>\r\n <el-form ref=\"form\" :model=\"form\" label-width=\"100px\">\r\n <el-form-item label=\"选择排列方向\">\r\n <el-radio-group v-model=\"form.tempDirection\">\r\n <el-radio :label=\"item.id\" v-for=\"(item,key) in form.infoList\" :key=\"key\">{{item.name}}</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"confirm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport resetPage from '@/lib/resetPage'\r\nimport deleteTopic from '@/mixins/answersheet/deleteTopic'\r\nexport default {\r\n name: \"TopicChoice\",\r\n mixins:[deleteTopic],\r\n props:{\r\n topicInfo:{\r\n type:Array,\r\n default:function(){\r\n return []\r\n }\r\n },\r\n setConfig:{\r\n type:Object,\r\n default:function(){\r\n return {}\r\n }\r\n },\r\n modelId:{\r\n type:String\r\n },\r\n pageIndex:{\r\n type:Number,\r\n default:null\r\n },\r\n },\r\n\r\n watch:{\r\n topicInfo:{\r\n //深度监听数组更新,重排选项\r\n handler(newVal){\r\n if(this.isMounted){\r\n this.form.direction = this.setConfig.direction||0;\r\n this.form.tempDirection = this.setConfig.direction||0;\r\n this.sortOptions(newVal)\r\n }\r\n },\r\n deep:true\r\n }\r\n },\r\n data() {\r\n return {\r\n optionsArr:[],\r\n topicSetDialog:false,\r\n form:{\r\n direction:0,//0横向 1纵向\r\n tempDirection:0,\r\n infoList: [\r\n {id:0,name:'横向'},\r\n {id:1,name:'纵向'}\r\n ]\r\n },\r\n isMounted:false,\r\n\r\n }\r\n },\r\n created(){\r\n this.form.direction = this.setConfig.direction||0;\r\n this.form.tempDirection = this.setConfig.direction||0;\r\n },\r\n mounted() {\r\n // 处理数据,5组数据放入一个ul中\r\n\r\n this.sortOptions(this.topicInfo)\r\n this.isMounted = true;\r\n\r\n },\r\n methods: {\r\n sortOptions(arr){\r\n // 选项排序\r\n this.optionsArr = [];\r\n arr.forEach((val,index)=>{\r\n if(!this.optionsArr[parseInt(index/5)]){\r\n this.optionsArr[parseInt(index/5)] = []\r\n }\r\n this.optionsArr[parseInt(index/5)].push(val)\r\n })\r\n // this.$set(this.optionsArr,this.optionsArr)\r\n },\r\n openSet(){\r\n if(this.paperSource === 0){\r\n this.$emit('showEditBigTopic',this.modelId)\r\n return;\r\n }\r\n this.topicSetDialog = true;\r\n },\r\n confirm(){\r\n this.topicSetDialog = false;\r\n this.form.direction = this.form.tempDirection\r\n\r\n if(this.paperSource == 1){\r\n // 0第三方 1知心慧学\r\n let tempArr = []\r\n tempArr = resetPage(this.bigTopicPageArr)\r\n tempArr = tempArr.map(val=>{\r\n if(val.modelId == this.modelId){\r\n val.topicConfigureData.direction = this.form.direction\r\n }\r\n return val;\r\n })\r\n this.setBigTopicPageArr([tempArr])\r\n this.setInitPageFlag(!this.initPageFlag);\r\n }\r\n },\r\n cancel(){\r\n this.topicSetDialog = false;\r\n this.form.tempDirection = this.form.direction\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.flex-direction-1{\r\n .single-option{\r\n flex-direction: row;\r\n -webkit-flex-direction: row;\r\n li{\r\n flex-direction: column;\r\n -webkit-flex-direction: column;\r\n }\r\n }\r\n}\r\n.flex-direction-0{\r\n .single-option{\r\n flex-direction: column;\r\n -webkit-flex-direction: column;\r\n li{\r\n flex-direction: row;\r\n -webkit-flex-direction: row;\r\n }\r\n }\r\n}\r\n.single-option {\r\n position: relative;\r\n padding: 10px;\r\n display: flex;\r\n display: -webkit-flex;\r\n font-size: 12px;\r\n // flex-direction: column;\r\n flex-wrap: wrap;\r\n -webkit-flex-wrap: wrap;\r\n align-content: flex-start;\r\n align-content: -webkit-flex-start;\r\n color:#555555;\r\n .iconfont{\r\n font-size: 12px;\r\n color: #666;\r\n }\r\n /* min-height: 100px; */\r\n}\r\n/* .single-option.more-option{\r\n width: 210px;\r\n} */\r\n.single-option li {\r\n display: flex;\r\n -webkit-display: flex;\r\n align-items: center;\r\n // flex-direction: column;\r\n}\r\n.single-option li em,\r\n.single-option li span {\r\n display: flex;\r\n -webkit-display: flex;\r\n width: 15px;\r\n height: 12px;\r\n text-align: center;\r\n // line-height: 12px;\r\n margin: 3px 4px;\r\n font-style: normal;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.single-option li em {\r\n width: 20px;\r\n margin: 3px 0;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"topic-item topic-explain\" :data-pageIndex=\"pageIndex\" :data-type=\"setConfig.questionTypeId\" :data-modelId=\"setConfig.modelId\">\r\n <div class=\"module\" v-if=\"!isArticleChOver\" ref=\"topicModule\">\r\n <div class=\"scoring-box\" v-if=\"topicInfo.cutId===1\">\r\n <span v-for=\"(score,scoreIndex) in topicScore\" :key=\"`score_${scoreIndex}`\">{{ score }}</span><span v-if=\"isShowNoScoring\" class=\"no-scoring\" :style=\"{width: `${noScoringW}px`}\">禁打分区</span>\r\n </div>\r\n <div class=\"btn-edit-big-topic-box\">\r\n <span class=\"btn-drag\" @mousedown=\"moveTopicAreaHeight\"></span>\r\n <span class=\"btn-setting btn-paper-info iconfont iconedit\" v-if=\"topicInfo.cutId===1\" @click=\"showEditBigTopic\"></span>\r\n <span class=\"btn-del del-btn iconfont icondelete\" v-if=\"topicInfo.cutId===1&&paperSource===0\" @click=\"delTopic\"></span>\r\n <span class=\"btn-del-topic-over\" v-if=\"topicInfo.cutId!==1\" @click.stop=\"delTopicOver\"><i class=\"el-icon-close\"></i></span>\r\n </div>\r\n <div class=\"optional-box\" v-if=\"topicInfo.questionTypeId===17&&topicInfo.cutId===1\">\r\n <span v-for=\"(opt,idx) in ChooseOptData\" :key=\"`opt_${opt}`\" :class=\"['iconfont','optional-span',`iconwords_${idx}`]\"></span>\r\n </div>\r\n <div class=\"topic-answer-area\" :style=\"{height:`${TopicAreaHeight}px`}\">\r\n <div class=\"topic-content\" @mouseleave.capture=\"mouseEvent(0)\" @mouseenter.capture=\"mouseEvent(1)\">\r\n <UeCard v-model=\"topicInfo.contentHtml\" :height=\"TopicAreaHeight\" @ready =\"ueReady\" @ueBlur=\"ueBlur\" ref=\"ueCard\"></UeCard>\r\n <div class=\"no-drug-shadow\" :data-index=\"setConfig.questionTypeId\" v-show=\"showUeTitle==false\"></div>\r\n </div>\r\n </div>\r\n\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"dialogVisibleIsAddTopic\"\r\n width=\"915px\"\r\n :before-close=\"handleCloseAddTopic\"\r\n :destroy-on-close=\"false\">\r\n <AddTopic ref=\"AddTopic\" :is-edit=\"true\" :edit-model-id=\"modelId\" @cancel = \"dialogVisibleIsAddTopic = false\" />\r\n </el-dialog>\r\n\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"topicSetDialog\"\r\n :close-on-click-modal=\"false\"\r\n :close-on-press-escape=\"false\"\r\n :show-close=\"false\"\r\n width=\"30%\"\r\n center>\r\n <el-form ref=\"form\" :model=\"form\" label-width=\"100px\">\r\n <el-form-item label=\"分值上限\">\r\n <el-select v-model=\"form.scoreBoxCount\" placeholder=\"请选择分数\">\r\n <el-option :value=\"val.id\" :label=\"val.label\" :key=\"`index_${index}`\" v-for=\"(val,index) in form.scoreBoxArr\" ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"\">\r\n <el-checkbox v-model=\"form.halfScore\">加入0.5分</el-checkbox>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"confirm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n </div>\r\n <ArticleCh v-if=\"setConfig.questionTypeId===77&&topicInfo.subject===9&&topicInfo.isShowArticleCn\" :wordsCountCh=\"setWordsCountCh\" :pageIndex=\"pageIndex\"></ArticleCh>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console,no-debugger */\r\n\r\nimport UeCard from '@/components/editor/UeCard'\r\nimport AddTopic from \"@/views/answer-sheet/topic/AddTopic\";\r\nimport {mapGetters, mapMutations} from \"vuex\";\r\nimport {SET_BIG_TOPIC_ARR,\r\n SET_INITPAGE_FLAG,\r\n SET_PAGETOPIC_ARR,\r\n SET_PAPER_LIST_DATA,\r\n SET_CHANGE_SOMEPAGE_INDEX,\r\n SET_IS_EXPLAIN_MOVE,\r\n SET_CHANGE_UE_READY_HEIGHT_ARR} from \"@/store/constant\";\r\nimport ArticleCh from \"./ArticleCh\";\r\nimport resetPage from \"@/lib/resetPage\";\r\nexport default {\r\n name: \"TopicExplain\",\r\n props:{\r\n topicInfo:{\r\n type: Object,\r\n default:function(){\r\n return []\r\n }\r\n },\r\n setConfig:{\r\n type:Object,\r\n default:function(){\r\n return {}\r\n }\r\n },\r\n pageIndex:{\r\n type:Number,\r\n default:null\r\n },\r\n },\r\n components: {\r\n UeCard,\r\n AddTopic,\r\n ArticleCh\r\n },\r\n data() {\r\n return {\r\n showUeTitle:false,\r\n dialogVisibleIsAddTopic:false,\r\n TopicAreaHeight:200,\r\n modelId:'',\r\n isMove:false,\r\n bit : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\r\n scoreLimitMap : {\r\n '16': [0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],\r\n '15': [0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\r\n '29': {\r\n tenPlace: [1, 2],\r\n },\r\n '49': {\r\n tenPlace: [1, 2, 3, 4],\r\n },\r\n '69': {\r\n tenPlace: [1, 2, 3, 4, 5, 6],\r\n }\r\n },\r\n scoreLimitMapArr:[15,16,29,49],\r\n noScoringW:48,\r\n ChooseOptData:[],\r\n\r\n topicSetDialog:false,\r\n form:{\r\n scoreBoxCount:15,//下标\r\n halfScore:false,\r\n scoreBoxArr:[\r\n {id:15,label:'上限15分'},\r\n {id:16,label:'上限16分'},\r\n {id:29,label:'上限29分'},\r\n {id:49,label:'上限49分'}\r\n ]\r\n }\r\n }\r\n },\r\n computed:{\r\n ...mapGetters('answerSheet',['bigTopicArr',\r\n 'bigTopicPageArr',\r\n 'paperListData',\r\n 'initPageFlag',\r\n 'paperSource',\r\n 'cardSetting',\r\n 'chageSomePageIndex',\r\n 'isExplainMove',\r\n 'changeUeReadyHeightArr']),\r\n // topicType(){\r\n // return this.topicInfo.markType===4?77:7\r\n // }\r\n\r\n\r\n topicScore(){\r\n let scoreLimit = 0;\r\n let fullScore = Number(this.topicInfo.fullScore);\r\n let hasHalfScore = false;\r\n if(this.paperSource===1){\r\n //知心慧学数学\r\n // scoreLimit = this.getAnswerMinScoreLimit(fullScore);\r\n scoreLimit = this.topicInfo.scoreLimit;\r\n hasHalfScore = this.topicInfo.point ==1 ? true:false;\r\n }else {\r\n //第三方\r\n scoreLimit = this.setConfig.topicConfigureData.scoreLimit;\r\n hasHalfScore = this.setConfig.topicConfigureData.hasHalfScore;\r\n\r\n }\r\n // if(fullScore<17){\r\n // scoreLimit = 16\r\n // }\r\n let topicScore = [];\r\n if(scoreLimit<17){\r\n //分数小于20\r\n if(fullScore>15){\r\n topicScore = this.scoreLimitMap[scoreLimit];\r\n }else {\r\n for (let index = 0; index < fullScore+1; index++) {\r\n topicScore.push(index)\r\n }\r\n }\r\n }else {\r\n topicScore.push('十位')\r\n topicScore = topicScore.concat(this.scoreLimitMap[scoreLimit].tenPlace)\r\n topicScore.push('个位')\r\n topicScore = topicScore.concat(this.bit)\r\n }\r\n if(hasHalfScore){\r\n topicScore.push('0.5')\r\n }\r\n\r\n return topicScore\r\n },\r\n isShowNoScoring(){\r\n let scoreLimit = 0;\r\n let fullScore = this.topicInfo.fullScore;\r\n if(this.paperSource===1){\r\n //知心慧学数学\r\n // scoreLimit = this.getAnswerMinScoreLimit(fullScore);\r\n scoreLimit = this.topicInfo.scoreLimit;\r\n }else {\r\n //第三方\r\n scoreLimit = this.setConfig.topicConfigureData.scoreLimit;\r\n }\r\n\r\n if(scoreLimit < 17 && fullScore < scoreLimit){\r\n return true;\r\n }else {\r\n return false;\r\n }\r\n },\r\n\r\n // topicAreaHeight(){\r\n // return this.topicInfo.TopicAreaHeight || 200\r\n // }\r\n isArticleChOver(){\r\n return this.topicInfo.TopicAreaHeight<1&&this.setConfig.questionTypeId===77&&this.topicInfo.subject===9\r\n },\r\n setWordsCountCh(){\r\n return {\r\n start:this.topicInfo.startPositionNumber || 1,\r\n end:this.topicInfo.endPositionNumber\r\n }\r\n },\r\n\r\n },\r\n watch:{\r\n topicInfo: {\r\n handler() {\r\n this.getDefaultData()\r\n },\r\n deep: true\r\n },\r\n // bigTopicPageArr: {\r\n // handler() {\r\n // this.setTopicAreaHeight()\r\n // },\r\n // deep: true\r\n // },\r\n },\r\n created() {\r\n this.form.scoreBoxCount = this.topicInfo.scoreLimit;\r\n this.form.halfScore = this.topicInfo.point==1?true:false;\r\n this.getDefaultData()\r\n },\r\n mounted() {\r\n this.setNoScoringW()\r\n },\r\n methods: {\r\n ...mapMutations('answerSheet', {setBigTopicArr: SET_BIG_TOPIC_ARR,\r\n setPaperListData:SET_PAPER_LIST_DATA,\r\n setBigTopicPageArr:SET_PAGETOPIC_ARR,\r\n setInitPageFlag:SET_INITPAGE_FLAG,\r\n setChangeSomePageIndex:SET_CHANGE_SOMEPAGE_INDEX,\r\n setExplainMove:SET_IS_EXPLAIN_MOVE,\r\n setChangeUeReadyHeight:SET_CHANGE_UE_READY_HEIGHT_ARR}),\r\n confirm(){\r\n this.topicSetDialog = false;\r\n\r\n if(this.paperSource == 1){\r\n // 0第三方 1知心慧学\r\n // this.topicInfo.scoreLimit = this.form.scoreBoxArr[this.form.scoreBoxCount].id\r\n this.topicInfo.scoreLimit = this.form.scoreBoxCount\r\n this.topicInfo.point = this.form.halfScore ? 1 : 0\r\n // this.setBigTopicPageArr(this.bigTopicPageArr)\r\n }\r\n\r\n },\r\n mouseEvent(type){\r\n if(this.isExplainMove) return\r\n if(type === 0){\r\n this.showUeTitle=false;\r\n }else{\r\n this.showUeTitle=true;\r\n }\r\n },\r\n cancel(){\r\n this.topicSetDialog = false;\r\n },\r\n getDefaultData(){\r\n this.TopicAreaHeight = this.topicInfo.TopicAreaHeight;\r\n if(this.setConfig.questionTypeId==17){\r\n this.getChooseOptData();\r\n }\r\n\r\n },\r\n getChooseOptData(){\r\n this.ChooseOptData=[];\r\n let optL = this.setConfig.topicConfigureData.topicTypeArr[0].chooseOption;\r\n for(let i = 0;i<optL;i++){\r\n let opt = String.fromCharCode(65 + i);\r\n this.ChooseOptData.push(opt)\r\n }\r\n\r\n },\r\n setNoScoringW(){\r\n if(this.$refs.topicModule===undefined){\r\n return false\r\n }\r\n let topicModuleW = this.$refs.topicModule.offsetWidth;\r\n this.noScoringW = (16 - this.topicInfo.fullScore) * (topicModuleW/18);\r\n if(this.noScoringW<48){\r\n this.noScoringW = 48;\r\n }\r\n },\r\n setTopicAreaHeight(){\r\n let _this = this;\r\n // if(this.setConfig.questionTypeId === 77 && this.setConfig.topicConfigureData.subject===8){\r\n this.TopicAreaHeight = this.$refs.ueCard.ue.body.scrollHeight;\r\n if(this.topicInfo.TopicAreaHeight != this.TopicAreaHeight){\r\n //16为padding\r\n this.topicInfo.TopicAreaHeight = this.TopicAreaHeight+16;\r\n\r\n //试题图片加载高度,重组部分试题\r\n // this.$nextTick(()=>{\r\n setTimeout(()=>{\r\n _this.setSomePageReset();//触发分页\r\n },500)\r\n\r\n // })\r\n }\r\n // }\r\n },\r\n setSomePageReset(flag=false){\r\n // 当前拖动页及后续页面数据重组\r\n let baseArr = JSON.parse(JSON.stringify(this.bigTopicPageArr)).splice(0,this.pageIndex)\r\n let resetArr = resetPage(JSON.parse(JSON.stringify(this.bigTopicPageArr)).splice(this.pageIndex),false,true);\r\n\r\n baseArr.push(resetArr)\r\n\r\n\r\n //删除最后一页最后一题时,删掉空白纸张\r\n if(this.pageIndex == baseArr.length-1 && baseArr[this.pageIndex].length == 1){\r\n if(!baseArr[this.pageIndex][0].questions || baseArr[this.pageIndex][0].questions.length == 0){\r\n baseArr.pop();\r\n this.setBigTopicPageArr(baseArr);\r\n return;\r\n }\r\n }\r\n\r\n this.setBigTopicPageArr(baseArr);\r\n this.$nextTick(()=>{\r\n this.setChangeSomePageIndex({\r\n index:this.pageIndex,\r\n isToCurPage:flag,//是否回到指定试题\r\n flag:!this.chageSomePageIndex.flag\r\n })//触发分页\r\n })\r\n\r\n // this.setChangeSomePageIndex({\r\n // index:this.pageIndex,\r\n // flag:!this.chageSomePageIndex.flag\r\n // })\r\n },\r\n moveTopicAreaHeight(e){\r\n let _this = this;\r\n let imgArrHeight = [];\r\n let pAllHeight = 0;\r\n this.$refs.ueCard.ue.body.querySelectorAll(\"img\").forEach(el => {\r\n if(el.className.indexOf('mathType') === -1){\r\n imgArrHeight.push(el.offsetTop + el.offsetHeight);\r\n }\r\n });\r\n this.$refs.ueCard.ue.body.querySelectorAll(\"p\").forEach(el => {\r\n pAllHeight = el.offsetHeight + pAllHeight;\r\n });\r\n let imgMaxHeight = Math.max.apply(Math,imgArrHeight);\r\n //答题区域最小高度\r\n let minTopicAreaHeight = imgMaxHeight > pAllHeight ? imgMaxHeight : pAllHeight;\r\n if(minTopicAreaHeight<20){\r\n minTopicAreaHeight = 20\r\n }\r\n //答题区初始高度\r\n let TopicAreaHeight = _this.TopicAreaHeight\r\n // 鼠标初始位置\r\n let startPageY = e.pageY;\r\n //移动距离\r\n let distance = 0 ;\r\n //是否执行移动\r\n this.isMove = true;\r\n this.setExplainMove(this.isMove)\r\n document.addEventListener('mousemove', function (e) {\r\n if(_this.isMove){\r\n distance = e.pageY - startPageY;\r\n let newHeight = TopicAreaHeight + distance;\r\n _this.TopicAreaHeight = newHeight > minTopicAreaHeight ? newHeight : minTopicAreaHeight;\r\n }\r\n\r\n },true)\r\n\r\n // this.$refs.ueCard.ue.addListener('mousemove', function(){\r\n // console.log(this)\r\n // // onselectstart=\"return false\"\r\n // });\r\n\r\n document.addEventListener('mouseup', this.stopMoveTopicAreaHeight,false)\r\n // this.$refs.ueCard.ue.addListener('mouseup', this.stopMoveTopicAreaHeight);\r\n // this.$refs.ueCard.ue.body.addEventListener('mouseup', this.stopMoveTopicAreaHeight)\r\n\r\n },\r\n stopMoveTopicAreaHeight(){\r\n this.isMove = false;\r\n this.setExplainMove(this.isMove)\r\n this.topicInfo.TopicAreaHeight = this.TopicAreaHeight;\r\n\r\n this.setSomePageReset(true);\r\n // this.setInitPageFlag(!this.initPageFlag);\r\n document.removeEventListener('mouseup', this.stopMoveTopicAreaHeight,false);\r\n // this.$refs.ueCard.ue.removeListener('mouseup', this.stopMoveTopicAreaHeight);\r\n // this.$refs.ueCard.ue.body.removeEventListener('mouseup', this.stopMoveTopicAreaHeight)\r\n\r\n },\r\n handleCloseAddTopic() {\r\n this.dialogVisibleIsAddTopic = false\r\n },\r\n showEditBigTopic(){\r\n if(this.paperSource === 0){\r\n this.modelId = this.setConfig.modelId\r\n this.dialogVisibleIsAddTopic = true;\r\n return;\r\n }\r\n this.topicSetDialog = true;\r\n },\r\n editTopicData(){\r\n let topicInPaperAll=[];\r\n let TopicAreaHeight = 0;\r\n let contentHtml = '';\r\n this.bigTopicPageArr.forEach(paper =>{\r\n paper.forEach(mod =>{\r\n if(this.setConfig.modelId===mod.modelId){\r\n mod.questions.forEach(topic=> {\r\n if(topic.alias === this.topicInfo.alias){\r\n topicInPaperAll.push(topic)\r\n }\r\n })\r\n }\r\n })\r\n })\r\n topicInPaperAll.forEach(item =>{\r\n TopicAreaHeight = TopicAreaHeight+item.TopicAreaHeight;\r\n contentHtml = contentHtml + item.contentHtml\r\n })\r\n let bigTopicArr = JSON.parse(JSON.stringify(this.bigTopicArr));\r\n bigTopicArr[this.setConfig.modelId].questions.forEach(topic =>{\r\n if(topic.alias===this.topicInfo.alias){\r\n topic.TopicAreaHeight = TopicAreaHeight;\r\n topic.contentHtml = contentHtml;\r\n }\r\n })\r\n // this.setBigTopicArr(bigTopicArr);\r\n let PaperListData = [];\r\n PaperListData = PaperListData.concat(...Object.values(this.bigTopicArr));\r\n // this.setPaperListData(PaperListData);\r\n this.setBigTopicPageArr([[...JSON.parse(JSON.stringify(PaperListData))]])\r\n this.setInitPageFlag(!this.initPageFlag);\r\n\r\n },\r\n delTopicOver(){\r\n let delIndex = this.setConfig.questions.findIndex(val=>val.alias == this.topicInfo.alias);\r\n\r\n if(this.topicInfo.contentHtml!='') {\r\n if(delIndex>0){\r\n this.setConfig.questions[delIndex-1].contentHtml = this.setConfig.questions[delIndex-1].contentHtml+this.topicInfo.contentHtml;\r\n }else {\r\n let upIndex = this.bigTopicPageArr[this.pageIndex-1].length-1;\r\n this.bigTopicPageArr[this.pageIndex-1][upIndex].contentHtml = this.bigTopicPageArr[this.pageIndex-1][upIndex].contentHtml+this.topicInfo.contentHtml;\r\n }\r\n }\r\n\r\n this.setConfig.questions.splice(delIndex,1);\r\n\r\n this.setSomePageReset()\r\n\r\n // let tempArr = resetPage(this.bigTopicPageArr);\r\n // this.setBigTopicPageArr([tempArr]);\r\n // this.setInitPageFlag(!this.initPageFlag);\r\n },\r\n //编辑器初始化完成\r\n ueReady(){\r\n // this.setTopicAreaHeight()\r\n // let _this = this;\r\n // if(this.setConfig.questionTypeId === 77 && this.setConfig.topicConfigureData.subject===8){\r\n this.TopicAreaHeight = this.$refs.ueCard.ue.body.scrollHeight;\r\n if(this.topicInfo.TopicAreaHeight != this.TopicAreaHeight){\r\n //16为padding\r\n this.topicInfo.TopicAreaHeight = this.TopicAreaHeight+16;\r\n\r\n this.changeUeReadyHeightArr.push(this.pageIndex);\r\n\r\n this.setChangeUeReadyHeight(this.changeUeReadyHeightArr);\r\n\r\n }\r\n },\r\n getAnswerMinScoreLimit: function (score) {\r\n let minLimit = 16\r\n for (let i = 0, item; (item = this.scoreLimitMapArr[i++]); ) {\r\n if (item >= score) {\r\n minLimit = item\r\n break\r\n }\r\n }\r\n return minLimit\r\n },\r\n ueBlur(){\r\n\r\n this.setTopicAreaHeight();\r\n this.$emit('ueBlur', true);\r\n\r\n },\r\n delTopic(){\r\n let _this = this;\r\n // 删除题目\r\n this.$confirm('确定要删除当前题目吗?', '提示', {\r\n cancelButtonText: '取消',\r\n confirmButtonText: '确定',\r\n callback: action => {\r\n if(action != 'confirm' ) return\r\n\r\n\r\n let tempArr = resetPage(this.bigTopicPageArr);\r\n\r\n //统计总分\r\n let fullScore = 0\r\n tempArr.forEach((bigTopic,delBigIndex) =>{\r\n if(bigTopic.modelId == _this.setConfig.modelId){\r\n let delIndex = bigTopic.questions.findIndex(val=>val.alias == _this.topicInfo.alias);\r\n bigTopic.questions.splice(delIndex,1);\r\n if(bigTopic.questions.length===0){\r\n tempArr.splice(delBigIndex,1);\r\n }\r\n }\r\n\r\n bigTopic.questions.forEach(topic =>{\r\n fullScore = fullScore+topic.fullScore\r\n })\r\n\r\n })\r\n this.cardSetting.examInfoConfig.forEach(item =>{\r\n if(item.id===1){\r\n item.text =fullScore\r\n }\r\n })\r\n //在配置数据内删除\r\n\r\n let bigTopicArr = JSON.parse(JSON.stringify(this.bigTopicArr));\r\n\r\n\r\n let bigDelIndex = bigTopicArr[this.setConfig.modelId].questions.findIndex(val=>val.alias == _this.topicInfo.alias);\r\n bigTopicArr[this.setConfig.modelId].questions.splice(bigDelIndex,1);\r\n\r\n //弹窗内试题配置删除\r\n bigTopicArr[this.setConfig.modelId].topicList.forEach((minTopic,mIndex) =>{\r\n let isMiniL = String(_this.topicInfo.alias).indexOf(\".\");\r\n if(isMiniL>-1){\r\n minTopic.smTopic.forEach((mini,index)=>{\r\n if(mini.alias == _this.topicInfo.alias) {\r\n minTopic.smTopic.splice(index, 1);\r\n if(minTopic.smTopic.length == 0){\r\n bigTopicArr[this.setConfig.modelId].topicList.splice(mIndex, 1);\r\n }\r\n }\r\n })\r\n\r\n }else {\r\n if(minTopic.alias == _this.topicInfo.alias) {\r\n bigTopicArr[this.setConfig.modelId].topicList.splice(mIndex, 1);\r\n }\r\n }\r\n })\r\n\r\n\r\n if(bigTopicArr[this.setConfig.modelId].questions.length==0){\r\n // bigTopicArr\r\n delete bigTopicArr[this.setConfig.modelId]\r\n }else if(bigTopicArr[this.setConfig.modelId].questionTypeId==17){\r\n delete bigTopicArr[this.setConfig.modelId]\r\n }else {\r\n //编辑试题弹窗内题号配置\r\n\r\n let titleNumber = _this.topicInfo.alias;\r\n let titleNumberNo = parseInt(_this.topicInfo.alias);\r\n let topicTypeArr = bigTopicArr[this.setConfig.modelId].topicConfigureData.topicTypeArr;\r\n\r\n let minNoArr = [];\r\n bigTopicArr[this.setConfig.modelId].questions.forEach(t =>{\r\n minNoArr.push(parseInt(t.alias))\r\n })\r\n //过滤重复题号\r\n // let hasMinNoArr = this.arrayUnique(minNoArr);\r\n // hasMinNoArr.forEach(no =>{\r\n // topicTypeArr.forEach((n,ni)=>{\r\n // if(no<n.endNo)\r\n // })\r\n // })\r\n\r\n let isDelNo = minNoArr.indexOf(titleNumberNo);\r\n\r\n if(isDelNo==-1){\r\n topicTypeArr.forEach((n,ni)=>{\r\n\r\n if (titleNumberNo == n.startNo || titleNumberNo == n.endNo) {\r\n if (n.startNo == n.endNo) {\r\n if(topicTypeArr.length>1){\r\n topicTypeArr.splice(ni, 1);\r\n }else {\r\n topicTypeArr[ni].startNo = '';\r\n topicTypeArr[ni].endNo = '';\r\n }\r\n\r\n } else {\r\n if (titleNumberNo == n.startNo) {\r\n n.startNo = Number(n.startNo) + 1\r\n } else {\r\n n.endNo = Number(n.endNo) - 1\r\n }\r\n }\r\n\r\n } else if (titleNumberNo > n.startNo && titleNumberNo < n.endNo) {\r\n let newConfig = JSON.parse(JSON.stringify(n));\r\n if(minNoArr.length==1){\r\n n.endNo = minNoArr[0];\r\n n.startNo = minNoArr[0];\r\n }else if(parseInt(titleNumber)==1){\r\n // n.endNo = minNoArr[0];\r\n n.startNo = minNoArr[0];\r\n }else {\r\n n.endNo = parseInt(Number(titleNumber)) - 1;\r\n newConfig.startNo = parseInt(Number(titleNumber)) + 1;\r\n topicTypeArr.splice(ni + 1, 0, newConfig);\r\n }\r\n\r\n }else {\r\n // if(minNoArr.indexOf(parseInt(titleNumber))==-1&&parseInt(titleNumber) == n.startNo && parseInt(titleNumber) == n.endNo ){\r\n // topicTypeArr.splice(ni, 1);\r\n // }else if(parseInt(titleNumber) == n.endNo){\r\n // n.endNo = minNoArr[minNoArr.length-1];\r\n // }\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n this.setBigTopicArr(bigTopicArr);\r\n this.setBigTopicPageArr([tempArr]);\r\n\r\n // this.setSomePageReset()\r\n // this.setChangeSomePageIndex({\r\n // index:this.pageIndex,\r\n // isToCurPage:true,//是否回到指定试题\r\n // flag:!this.chageSomePageIndex.flag\r\n // })\r\n\r\n this.setInitPageFlag(!this.initPageFlag);\r\n\r\n\r\n\r\n this.$message({\r\n type: 'info',\r\n message: `删除成功`\r\n });\r\n }\r\n });\r\n },\r\n //数组内重复数字过滤\r\n arrayUnique(arr) {\r\n let hash = {},\r\n result = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!hash[arr[i]]) {\r\n hash[arr[i]] = true;\r\n result.push(arr[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.topic-item{\r\n padding-top: 10px;\r\n}\r\n.module{\r\n position: relative;\r\n //margin: 10px 0;\r\n font-size: 12px;\r\n border: 2px solid #bbbbbb;\r\n border-radius: 4px;\r\n background: #fff;\r\n &:hover{\r\n .btn-paper-info, .del-btn{\r\n display: block;\r\n }\r\n }\r\n\r\n .scoring-box{\r\n //position: absolute;\r\n //top: 0;\r\n //left: 0;\r\n width: 100%;\r\n display: flex;\r\n border-bottom: 1px solid #bbb;\r\n font-size: 10px;\r\n span{\r\n flex: 1;\r\n position: relative;\r\n height: 30px;\r\n text-align: center;\r\n line-height: 30px;\r\n border-right: 1px solid #bbb;\r\n &:last-child{\r\n border-right:1px solid transparent;\r\n }\r\n\r\n }\r\n .no-scoring{\r\n flex: initial;\r\n min-width: 40px;\r\n color: #dddddd;\r\n }\r\n }\r\n .optional-box{\r\n position: absolute;\r\n right: 10px;\r\n top: 41px;\r\n height: 15px;\r\n z-index: 1100;\r\n background-color: #fff;\r\n span{\r\n // width: 40px;\r\n // height: 15px;\r\n // line-height: 15px;\r\n font-size: 14px;\r\n margin: 0 10px;\r\n text-align: center;\r\n box-sizing: border-box\r\n }\r\n\r\n }\r\n .btn-edit-big-topic-box{\r\n .btn-drag{\r\n position: absolute;\r\n bottom: 1px;\r\n right: 1px;\r\n width: 20px;\r\n height: 20px;\r\n background: #fff url('../../../../assets/img-answer-sheet/img-drag.png') no-repeat center;\r\n cursor: pointer;\r\n z-index: 1100;\r\n }\r\n .btn-setting{\r\n\r\n }\r\n .btn-del-topic-over{\r\n position: absolute;\r\n top: 1px;\r\n right: -20px;\r\n width: 20px;\r\n height: 20px;\r\n line-height: 20px;\r\n text-align: center;\r\n background: #f2f2f2;\r\n cursor: pointer;\r\n z-index: 1100;\r\n border: 1px solid #ddd;\r\n }\r\n }\r\n\r\n}\r\n.topic-content{\r\n position: relative;\r\n .no-drug-shadow{\r\n position: absolute;\r\n top:0;\r\n left:0;\r\n width:100%;\r\n height: 100%;\r\n background: rgba(0,0,0,.0);\r\n z-index: 1004;\r\n }\r\n}\r\n\r\n</style>\r\n","<template>\r\n <div class=\"topic-fill\" :class=\"[{'topic-box-border':topicInfo.length>0}]\">\r\n <div class=\"btn-paper-info iconfont iconedit\" @click=\"openSet\"></div>\r\n <div class=\"del-btn iconfont icondelete\" v-if=\"paperSource == 0\" @click=\"delTopic\"></div>\r\n <div class=\"subjectCol clearfix \" :class=\"['',`col-${setConfig.columns || 1}`]\">\r\n <div class=\"fill-item clearfix\" :data-pageIndex=\"pageIndex\" :data-type=\"val.questionTypeId\" :data-modelId=\"modelId\" :style=\"{'height':(setConfig.rowLineHeight || 40)+'px'}\" :key=\"index\" v-for=\"(val,index) in topicInfo\">\r\n <span>{{val.alias}}、</span>\r\n <em :style=\"{'height':(setConfig.rowLineHeight || 40)+'px'}\"></em>\r\n <strong>\r\n <i v-for=\"valScore in form.scoreArr\" :key=\"valScore\">{{valScore}}</i>\r\n </strong>\r\n </div>\r\n </div>\r\n\r\n <el-dialog\r\n title=\"设置\"\r\n :visible.sync=\"topicSetDialog\"\r\n :close-on-click-modal=\"false\"\r\n :close-on-press-escape=\"false\"\r\n :show-close=\"false\"\r\n width=\"30%\"\r\n center>\r\n <el-form ref=\"form\" :model=\"form\" label-width=\"100px\">\r\n <el-form-item label=\"每行列数\">\r\n <el-select v-model=\"form.columnCount\" placeholder=\"请选择列数\">\r\n <el-option :value=\"val\" :label=\"val\" :key=\"val\" v-for=\"val in form.columnCountArr\" ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"行间距\">\r\n <el-select v-model=\"form.rowLineHeight\" placeholder=\"请选择间距\">\r\n <el-option :value=\"val\" :label=\"`${val}px`\" :key=\"val\" v-for=\"val in form.rowHieightArr\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"手写打分\">\r\n <el-select v-model=\"form.scoreBoxCount\" placeholder=\"请选择分数\">\r\n <el-option :value=\"index\" :label=\"val.label\" :key=\"index\" v-for=\"(val,index) in form.scoreBoxArr\" :disabled=\"val.id==1 || val.id==scoreA || val.id==scoreB || val.id==scorec ?false:true\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"confirm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console */\r\nimport resetPage from '@/lib/resetPage'\r\nimport deleteTopic from '@/mixins/answersheet/deleteTopic'\r\nexport default {\r\n name: \"TopicFill\",\r\n mixins:[deleteTopic],\r\n props:{\r\n topicInfo:{\r\n type:Array,\r\n default:function(){\r\n return []\r\n }\r\n },\r\n setConfig:{\r\n type:Object,\r\n default:function(){\r\n return {}\r\n }\r\n },\r\n modelId:{\r\n type:String\r\n },\r\n pageIndex:{\r\n type:Number,\r\n default:null\r\n },\r\n },\r\n watch:{\r\n setConfig:{\r\n //深度监听数组更新,重排选项\r\n handler(){\r\n if(this.isMounted){\r\n this.initFill();\r\n }\r\n },\r\n deep:true\r\n }\r\n },\r\n data() {\r\n return {\r\n topicSetDialog:false,\r\n form:{\r\n columnCount:1,//一行个数\r\n rowLineHeight:40,//行高\r\n scoreBoxCount:0,//下标\r\n columnCountArr:[1,2,3],\r\n rowHieightArr:[30,35,40,45,50],\r\n scoreBoxArr:[\r\n {id:1,label:'空白方框'},\r\n {id:2,label:'2/3/5'},\r\n {id:3,label:'2/3/4/6'},\r\n {id:4,label:'2/4'}\r\n ],\r\n scoreArr:[2,3,5]\r\n },\r\n isMounted:false,\r\n scoreA:1,// 2/3/5\r\n scoreB:1,// 2/3/4/6\r\n scorec:1,// 2/4\r\n scoreFull:[]\r\n }\r\n },\r\n mounted() {\r\n this.initFill();\r\n this.questionScore();\r\n this.isMounted = true;\r\n },\r\n methods: {\r\n //验证填空题分数\r\n questionScore(){\r\n for(let w=0;w<this.topicInfo.length;w++){\r\n this.scoreFull.push(this.topicInfo[w].fullScore);\r\n }\r\n for(let i=0;i<this.form.scoreBoxArr.length;i++){\r\n if(i>0){\r\n for(let t=0;t<this.topicInfo.length;t++){\r\n if(this.form.scoreBoxArr[i].label.includes(this.topicInfo[t].fullScore) && Math.max(...this.form.scoreBoxArr[i].label.split('/')) <=Math.max(...this.scoreFull) ){\r\n if(i==1){\r\n this.scoreA=2;\r\n }else if(i==2){\r\n this.scoreB=3;\r\n }\r\n else if(i==3){\r\n this.scorec=4;\r\n }\r\n }else{\r\n if(i==1){\r\n this.scoreA=1;\r\n }else if(i==2){\r\n this.scoreB=1;\r\n }\r\n else if(i==3){\r\n this.scorec=1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n initFill(){\r\n // this.setConfig.columns 几列\r\n // this.setConfig.rowLineHeight 行高\r\n\r\n this.form.scoreBoxArr.forEach((item, i) => {\r\n if(item.id == this.setConfig.scoreStyle){\r\n this.form.scoreBoxCount = i\r\n }\r\n });\r\n\r\n this.form.columnCount = this.setConfig.columns || 1\r\n this.form.scoreArr = this.form.scoreBoxCount == 0 ? [''] : this.form.scoreBoxArr[this.form.scoreBoxCount].label.split('/');\r\n },\r\n openSet(){\r\n if(this.paperSource === 0){\r\n this.$emit('showEditBigTopic',this.modelId)\r\n return;\r\n }\r\n this.topicSetDialog = true;\r\n },\r\n confirm(){\r\n this.topicSetDialog = false;\r\n\r\n if(this.paperSource == 1){\r\n // 0第三方 1知心慧学\r\n let tempArr = []\r\n tempArr = resetPage(this.bigTopicPageArr)\r\n tempArr = tempArr.map(val=>{\r\n if(val.modelId == this.modelId){\r\n val.topicConfigureData.columns = this.form.columnCount\r\n val.topicConfigureData.rowLineHeight = this.form.rowLineHeight\r\n val.topicConfigureData.scoreStyle = this.form.scoreBoxArr[this.form.scoreBoxCount].id\r\n }\r\n return val;\r\n })\r\n this.setBigTopicPageArr([tempArr])\r\n this.setInitPageFlag(!this.initPageFlag);\r\n }\r\n\r\n },\r\n cancel(){\r\n this.topicSetDialog = false;\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.topic-fill{\r\n padding:10px;\r\n}\r\n.subjectCol {\r\n width: 100%;\r\n line-height: 40px;\r\n}\r\n\r\n\r\n.subjectCol.col-1 .fill-item {\r\n width: 100%;\r\n}\r\n.subjectCol.col-2 .fill-item {\r\n width: calc(50% - 10px);\r\n}\r\n.subjectCol.col-3 .fill-item {\r\n width: calc(33% - 10px);\r\n}\r\n.subjectCol .fill-item {\r\n float: left;\r\n align-items: flex-end;\r\n padding-right: 3px;\r\n padding-top: 10px;\r\n width: 100%;\r\n display: flex;\r\n}\r\n\r\n.subjectCol .fill-item span {\r\n display: flex;\r\n width: 25px;\r\n align-items: flex-end;\r\n text-align: center;\r\n line-height: 25px;\r\n}\r\n.subjectCol .fill-item em {\r\n position: relative;\r\n height: 40px;\r\n flex: 1;\r\n border-bottom: 1px solid #bbbbbb;\r\n}\r\n.subjectCol .fill-item strong {\r\n display: flex;\r\n align-items: flex-end;\r\n}\r\n.subjectCol .fill-item strong i {\r\n margin-left: -1px;\r\n width: 25px;\r\n height: 25px;\r\n font-style: normal;\r\n text-align: center;\r\n line-height: 25px;\r\n border: 1px solid #bbb;\r\n font-weight: normal;\r\n color: #999;\r\n}\r\n</style>\r\n","<template>\r\n <h3 style=\"height: auto;\" class=\"topic-title big-topic-title\">{{titleInfo.topicTitleText}}<span>{{titleInfo.topicSubTitleText}}</span></h3>\r\n</template>\r\n<script>\r\n export default{\r\n name:'TopicTitle',\r\n data(){\r\n return{\r\n\r\n }\r\n },\r\n props:{\r\n titleInfo:{\r\n type:Object,\r\n default:function(){\r\n return {}\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n<style lang=\"less\">\r\n .big-topic-title {\r\n font-family: 'MicroSoft YaHei';\r\n padding:5px 0;\r\n font-size: 14px;\r\n //color: #333;\r\n color: #555555;\r\n line-height: 20px;\r\n font-weight: bold;\r\n text-align: justify;\r\n border:2px solid transparent;\r\n border-radius: 3px;\r\n &:focus{\r\n border-color:#333;\r\n }\r\n span {\r\n font-size: 12px;\r\n font-weight: normal;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"card_setting\">\r\n <div class=\"card_setting-topic\" v-show=\"!isSetAnswer\">\r\n <h3 class=\"card_setting-title\">选择答题卡布局</h3>\r\n <div class=\"card_setting-box\">\r\n <div class=\"card_setting-item\">\r\n <div class=\"name\">纸张</div>\r\n <div class=\"content\">\r\n <el-radio-group v-model=\"cardSetting.paperSize\" @change=\"changePageSize\">\r\n <el-radio :label=\"1\">A3</el-radio>\r\n <el-radio :label=\"2\">A4</el-radio>\r\n <el-radio :label=\"3\">16K(185*260)</el-radio>\r\n <el-radio :label=\"4\">8K(260*370)</el-radio>\r\n <el-radio :label=\"5\">8K(270*390)</el-radio>\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"card_setting-item\">\r\n <div class=\"name\">方向</div>\r\n <div class=\"content\">\r\n <el-radio-group v-model=\"cardSetting.direction\" @change=\"changePageDirection\">\r\n <el-radio :label=\"1\" :disabled=\"isDisabledDirection(1)\">横版</el-radio>\r\n <el-radio :label=\"2\" :disabled=\"isDisabledDirection(2)\">竖版</el-radio>\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"card_setting-item border_b\">\r\n <div class=\"name\">分栏</div>\r\n <div class=\"content\">\r\n <div class=\"layoutList\">\r\n <div class=\"layoutItem\" :class=\"cardColumnClass(1)\" @click=\"cardColumnClass(1)!='disabled'?setCardColumn(1):''\">\r\n <span><i></i></span>\r\n <em>一栏</em>\r\n <b class=\"icon_current\"></b>\r\n </div>\r\n <div class=\"layoutItem\" :class=\"cardColumnClass(2)\" @click=\"cardColumnClass(2)!='disabled'?setCardColumn(2):''\">\r\n <span><i></i><i></i></span>\r\n <em>两栏</em>\r\n <b class=\"icon_current\"></b>\r\n </div>\r\n <div class=\"layoutItem\" :class=\"cardColumnClass(3)\" @click=\"cardColumnClass(3)!='disabled'?setCardColumn(3):''\">\r\n <span><i></i><i></i><i></i></span>\r\n <em>三栏</em>\r\n <b class=\"icon_current\"></b>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card_setting-item border_b\">\r\n <div class=\"name\">装订线</div>\r\n <div class=\"content\">\r\n <el-radio-group v-model=\"cardSetting.hasBindingLine\" @change=\"saveCardSetting\">\r\n <el-radio :label=\"1\" :disabled=\"(cardSetting.cardLength>12 && [3,4,5].includes(cardSetting.paperSize)) || (cardSetting.paperSize==4 && cardSetting.column == 3)\">有</el-radio>\r\n <!-- <el-radio :label=\"1\" :disabled=\"cardSetting.column==3 && cardSetting.paperSize==4?true:false\">有</el-radio> -->\r\n <el-radio :label=\"0\">无</el-radio>\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"card_setting-item border_b\">\r\n <div class=\"name\">信息栏</div>\r\n <div class=\"content\">\r\n <el-radio-group v-model=\"cardSetting.hasPaperMsg\" @change=\"setPaperInfoMsg\">\r\n <el-radio :label=\"true\">有</el-radio>\r\n <el-radio :label=\"false\">无</el-radio>\r\n </el-radio-group>\r\n <div class=\"centerBox\">\r\n <span class=\"iconfont icontishi1\" @mouseenter=\"enterLinesTips()\" @mouseleave=\"leaveLinesTips()\">\r\n <b v-if=\"tipsBox1\">选择“有”,还可以在左侧答题卡编辑页进行内容修改配置!</b>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card_setting-item border_b\">\r\n <div class=\"name\">考号</div>\r\n <div class=\"content\">\r\n <el-checkbox-group v-model=\"cardSetting.examinationNumberType\" :disabled=\"cardSetting.useQrCode\" @change=\"changePageExaminationNumberType\">\r\n <el-checkbox :label=\"1\" :disabled=\"setDisabled(1)\">填涂考号</el-checkbox>\r\n <el-checkbox :label=\"2\" :disabled=\"setDisabled(2)\">条形码</el-checkbox>\r\n </el-checkbox-group>\r\n <el-switch\r\n v-if=\"paperSource===1\"\r\n style=\"display: block;margin-top: 10px\"\r\n v-model=\"cardSetting.useQrCode\"\r\n active-color=\"#409EFF\"\r\n inactive-color=\"#bbb\"\r\n active-text=\"使用二维码\"\r\n @change=\"changePageUseQrCode\"\r\n >\r\n </el-switch>\r\n <div class=\"centerBox ewmCenterBox\" v-if=\"paperSource===1\">\r\n <span class=\"iconfont icontishi1 ewmFont\" @mouseenter=\"enterEwmTips()\" @mouseleave=\"leaveEwmTips()\">\r\n <b v-if=\"tipsBox2\">使用二维码,将给每个考生都生成一份定制答题卡,请慎重!</b>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"overBox\">\r\n <div class=\"subject-list\">\r\n <div class=\"card_setting-item\" v-for=\"(bigTopic,index) in bigTopicArr\" :key=\"index\">\r\n <template v-if=\"isShowBigTopicNo(bigTopic)\">\r\n <div class=\"name\">{{ getTopicTypeText(bigTopic.questionTypeId) }}</div>\r\n <div class=\"content\">\r\n <div class=\"s-num\" v-for=\"(num,index) in bigTopic.topicConfigureData.topicTypeArr\" :key=\"index\">{{num.startNo}}~{{num.endNo}}</div>\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n <div class=\"edit-topic-btn-box\" v-if=\"paperSource===0\">\r\n <button class=\"btn btn-add-topic\" @click=\"showAddBigTopic\">+ 添加试题</button>\r\n <span class=\"btn-set-answer\" @click=\"showSelectSetAnswer\">设置客观题答案</span>\r\n </div>\r\n </div>\r\n <div class=\"btn-card-box\">\r\n <button class=\"btn btn-card-preview\" @click=\"goPreview\">预览</button>\r\n <button class=\"btn btn-card-save\" :class=\"{ disabled: isAllowEdit }\" :disabled=\"isAllowEdit\" @click=\"savePage\">{{!cardSetting.allowEdit ? '编辑' : '保存'}}</button>\r\n <button class=\"btn btn-card-down\" v-bind:class=\"{disabled :isDisabledBtnDown}\" @click=\"downPdfAll\" :disabled=\"isDisabledBtnDown\">{{cardSetting.useQrCode ? '生成' : '下载'}}</button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card_setting-answer\" v-show=\"isSetAnswer\">\r\n <SetAnswer @cancel=\"isSetAnswer = false\"/>\r\n </div>\r\n\r\n <div class=\"to-pdf-html-box\" v-show=\"isShowToPdfHtml\">\r\n <toPdfHtml ref=\"toPdfHtml\"></toPdfHtml>\r\n </div>\r\n <el-dialog\r\n title=\"提示\"\r\n :visible.sync=\"centerDialogVisible\"\r\n width=\"30%\"\r\n center>\r\n <p style=\"text-align:center;font-size:16px;color:#000000;\">{{tipsContent}}</p>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"cardSetting.title==''?centerDialogVisible=false:showSelectSetAnswer()\">去设置</el-button>\r\n <el-button @click=\"centerDialogVisible = false\">关闭</el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n<!-- <el-dialog-->\r\n<!-- title=\"设置\"-->\r\n<!-- :visible.sync=\"isShowToPdfHtml\"-->\r\n<!-- width=\"100%\"-->\r\n\r\n<!-- >-->\r\n\r\n<!--<!– <toPdfHtml ref=\"toPdfHtml\" />–>-->\r\n<!-- </el-dialog>-->\r\n\r\n\r\n </div>\r\n</template>\r\n<script>\r\n/* eslint-disable no-console, no-debugger */\r\n// import html2canvas from 'html2canvas';\r\n// import Canvas2Image from '@/lib/canvas2image.js';\r\n// import {dataURLtoFile} from '@/lib/util'\r\n\r\nimport SetAnswer from './SetAnswer.vue'\r\nimport resetPage from '@/lib/resetPage'\r\nimport {mapGetters, mapMutations} from 'vuex'\r\nimport {\r\n SET_ANSWER_CARD_TYPE,\r\n SET_BIG_TOPIC_ARR,\r\n SET_CARD_SETTING,\r\n SET_INITPAGE_FLAG,\r\n SET_PAGETOPIC_ARR,\r\n SET_TEST_FORM_DATA\r\n} from \"@/store/constant\";\r\nimport {getOnlinePdf,saveCardOnline,sendCreateOnlineAllStudents} from '@/api/answer-sheet'\r\nimport toPdfHtml from \"@/views/answer-sheet/toPdfHtml/Index\";\r\nimport setPagePos from '@/mixins/answersheet/setPagePos'\r\n\r\nexport default {\r\n name: \"Setting\",\r\n components: {\r\n SetAnswer,\r\n toPdfHtml\r\n },\r\n mixins:[setPagePos],\r\n data() {\r\n return {\r\n isSetAnswer:false,\r\n bigTopicList:[],\r\n curDateTime:null,\r\n isShowToPdfHtml:false,\r\n pdfHtml:'',\r\n pdf_url:'',\r\n tipsBox1:false,//信息栏提示\r\n tipsBox2:false,//二维码提示\r\n saveLoading:false,\r\n centerDialogVisible: false,\r\n tipsContent:'',\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['paperSource',\r\n 'sizeConfig',\r\n 'bigTopicArr',\r\n 'topicTypes',\r\n 'cardSetting',\r\n 'initPageFlag',\r\n 'bigTopicArr',\r\n 'bigTopicPageArr',\r\n 'paperListData',\r\n 'testFormData',\r\n 'sizeConfig',\r\n 'answerCardType',\r\n 'isAnswerCardTypeChange'\r\n ]),\r\n calcPaperSize(){\r\n // store/answer.sheet.js对应字段注释\r\n let pageStatus = this.cardSetting.paperSize,\r\n pageDirection = this.cardSetting.direction,\r\n pageWidth = this.sizeConfig[pageStatus].width,\r\n pageHeight = this.sizeConfig[pageStatus].height;\r\n\r\n let width = pageDirection === 1 ? pageHeight : pageWidth;\r\n let height = pageDirection === 1 ? pageWidth : pageHeight;\r\n return {\r\n width,\r\n height\r\n }\r\n },\r\n isAllowEdit(){\r\n // 扫描上传的答题卡禁止编辑\r\n if(this.paperSource == 0){\r\n if(this.testFormData.type == 2) return true\r\n }\r\n return false\r\n },\r\n isDisabledBtnDown(){\r\n let isDisabled = true;\r\n if(this.cardSetting.useQrCode){\r\n isDisabled = this.cardSetting.allowEdit?true:false\r\n }else {\r\n if(this.cardSetting.allowEdit){\r\n isDisabled = true\r\n }else {\r\n isDisabled = !this.pdf_url?true:false\r\n }\r\n }\r\n\r\n return isDisabled\r\n },\r\n\r\n },\r\n watch: {\r\n testFormData: {\r\n handler() {\r\n this.pdf_url = this.testFormData.pdf_url;\r\n },\r\n deep: true\r\n },\r\n },\r\n mounted() {\r\n this.getDefaultData()\r\n },\r\n methods: {\r\n ...mapMutations('answerSheet',{setCardSetting:SET_CARD_SETTING,\r\n setBigTopicArr: SET_BIG_TOPIC_ARR,\r\n setBigTopicPageArr:SET_PAGETOPIC_ARR,\r\n setInitPageFlag:SET_INITPAGE_FLAG,\r\n setTestFormData:SET_TEST_FORM_DATA,\r\n setAnswerCardType:SET_ANSWER_CARD_TYPE,}),\r\n getDefaultData(){\r\n this.bigTopicList = this.bigTopicArr;\r\n this.pdf_url = this.testFormData.pdf_url;\r\n },\r\n setPosInfo(){\r\n //定位点数据组装\r\n\r\n this.pages = [{pageNo:'',questions:[],location:[],imge:{}},{pageNo:'',questions:[],location:[],imge:{}}]\r\n\r\n let dotX=document.querySelector('.unique-code');\r\n\r\n // bigTopicArr\r\n for(let modelId in this.bigTopicArr){\r\n // 不同modelId试题,分开调用,防止选做题位置错误\r\n if([1,2,11,5,7,17,27,77].includes(this.bigTopicArr[modelId].questionTypeId)){\r\n this.getAllTopicPos(modelId,this.bigTopicArr[modelId].questionTypeId);\r\n }\r\n }\r\n this.pageSide(dotX);\r\n this.pointWay(dotX);\r\n if(!this.cardSetting.useQrCode){\r\n this.identCard(dotX);\r\n }\r\n\r\n\r\n\r\n let params = {}\r\n // params.columns = this.cardSetting.columns;\r\n params.examGroupId = this.cardSetting.examGroupId;\r\n params.title = this.cardSetting.title;\r\n params.useQrCode = this.cardSetting.useQrCode?1:0\r\n params.pdfHtml = this.pdfHtml;\r\n params.pdf_url = \"\";\r\n\r\n params.position = {};\r\n params.position.paper = this.sizeConfig[this.cardSetting.paperSize].name;\r\n\r\n // 横版宽高调换一下\r\n params.position.width = this.cardSetting.direction == 1 ? this.sizeConfig[this.cardSetting.paperSize].height : this.sizeConfig[this.cardSetting.paperSize].width;\r\n params.position.height = this.cardSetting.direction == 1 ? this.sizeConfig[this.cardSetting.paperSize].width : this.sizeConfig[this.cardSetting.paperSize].height;\r\n\r\n //区分版本\r\n params.online_card_version = '2.0.0';\r\n params.position.online_card_version = '2.0.0';\r\n\r\n params.position.columns = this.cardSetting.column;\r\n params.position.totalPage = this.cardSetting.column * 2;\r\n params.position.useQrCode = this.cardSetting.useQrCode?1:0\r\n params.position.school_card_status = this.cardSetting.cardStatus;\r\n params.position.cardSetting = this.cardSetting;\r\n params.position.bigTopicArr = this.bigTopicArr;\r\n params.position.bigTopicPageArr = this.bigTopicPageArr;\r\n params.position.paperListData = this.paperListData;\r\n params.position.pages = this.pages;\r\n params.position.answerCardType = this.answerCardType;\r\n\r\n params.question_info = {};\r\n let tempArr = []\r\n for(let key in this.bigTopicArr){\r\n tempArr.push(...this.bigTopicArr[key].questions)\r\n }\r\n params.question_info.content = JSON.parse(JSON.stringify(tempArr))\r\n params.sheet_answer = {}\r\n params.sheet_halfscore = {}\r\n params.sheet_score = {}\r\n tempArr.forEach(val=>{\r\n if(val.answer && [1,2,11].includes(val.questionTypeId)){\r\n params.sheet_answer[val.questionNum] = val.answer\r\n }\r\n if( params.sheet_halfscore[val.questionNum]){\r\n params.sheet_halfscore[val.questionNum] = val.halfScore\r\n }\r\n params.sheet_score[val.questionNum] = String(val.fullScore)\r\n\r\n })\r\n\r\n params.timu = {\r\n \"KeGuanTi\":params.question_info.content.filter(val => val.questionTypeId == 1||val.questionTypeId == 2||val.questionTypeId == 11).length,\r\n \"TianKongTi\":params.question_info.content.filter(val => val.questionTypeId == 5).length,\r\n \"XuanZuoTi\":params.question_info.content.filter(val => val.questionTypeId == 17).length,\r\n \"ZhuGuanTi\":params.question_info.content.filter(val => val.questionTypeId == 7).length,\r\n }\r\n return params\r\n },\r\n savePage(){\r\n let _this = this;\r\n\r\n if(!this.cardSetting.allowEdit){\r\n\r\n if(this.answerCardType===1||this.isAnswerCardTypeChange){\r\n if(this.answerCardType===2){\r\n this.setAnswerCardType(1);\r\n\r\n this.$confirm('当前考试已被设为“题卡合一”模式,是否确定更改?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n // restoreAnswerInfo\r\n this.$message({\r\n type: 'success',\r\n message: '考试已被设置为【题卡合一】,请注意答题卡以被重置!'\r\n });\r\n this.$emit(\"restAnswerSheet\", true);\r\n\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消'\r\n });\r\n });\r\n\r\n\r\n }else {\r\n this.$confirm(this.isAnswerCardTypeChange?'当前考试已被设为“题卡分离”模式,是否确定更改?':'当前考试为“题卡合一”模式,是否还原为系统默认排版样式?”', '提示', {\r\n confirmButtonText: this.isAnswerCardTypeChange?'确定':'确认还原',\r\n cancelButtonText: this.isAnswerCardTypeChange?'取消':'不还原',\r\n type: 'warning'\r\n }).then(() => {\r\n // restoreAnswerInfo\r\n if(this.answerCardType===1){\r\n this.setAnswerCardType(2);\r\n this.$message({\r\n type: 'success',\r\n message: '考试已被设置为【题卡分离】,请注意答题卡以被重置!'\r\n });\r\n }else {\r\n this.setAnswerCardType(1);\r\n }\r\n this.$emit(\"restAnswerSheet\", true);\r\n // this.$message({\r\n // type: 'success',\r\n // message: '删除成功!'\r\n // });\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消'\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n this.cardSetting.allowEdit = !this.cardSetting.allowEdit;\r\n this.setCardSetting(this.cardSetting)\r\n return\r\n }\r\n //第三方重置题号\r\n if(this.paperSource == 0){\r\n let newQuestionNum = 1;\r\n let tempArr = [];\r\n let groupid = 0;//选做题组,区分多道选做题大题\r\n // let ChooseL = 0;//有几道选做题大题\r\n let upModId = '';\r\n for(let key in this.bigTopicArr){\r\n tempArr.push(this.bigTopicArr[key])\r\n }\r\n\r\n tempArr.forEach(bigTopic=>{\r\n\r\n bigTopic.questions.forEach(topic=>{\r\n topic.questionNum = newQuestionNum;\r\n newQuestionNum++;\r\n if(bigTopic.questionTypeId==17){\r\n // ChooseL = ChooseL+1;\r\n if(upModId!=bigTopic.modelId){\r\n upModId = bigTopic.modelId;\r\n groupid++\r\n }\r\n topic.groupid = JSON.parse(JSON.stringify(groupid));\r\n }\r\n this.bigTopicPageArr.forEach(page=>{\r\n page.forEach(big=>{\r\n for(let i=0;i<big.questions.length;i++){\r\n if(big.questions[i].alias == topic.alias){\r\n big.questions[i].questionNum = topic.questionNum;\r\n break;\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n })\r\n })\r\n this.setBigTopicArr(this.bigTopicArr);\r\n this.setBigTopicPageArr(this.bigTopicPageArr);\r\n }\r\n\r\n\r\n\r\n\r\n let pageL = this.bigTopicPageArr.length;\r\n if(pageL>this.cardSetting.column*2){\r\n this.$message.error('超出'+this.cardSetting.column*2+'页,请重新编辑后再保存!')\r\n return false\r\n }\r\n\r\n if(this.cardSetting.title=='') {\r\n this.centerDialogVisible=true;\r\n this.tipsContent=\"考试名称不能为空!\";\r\n //this.$message.error('考试名称不能为空!')\r\n return false\r\n }\r\n\r\n let isAnswerErr = false;\r\n for(let key in this.bigTopicArr){\r\n if([1, 2, 11].includes(this.bigTopicArr[key].questionTypeId)){\r\n this.bigTopicArr[key].questions.forEach(topic =>{\r\n if(topic.answer==''){\r\n isAnswerErr = true\r\n }\r\n })\r\n }\r\n }\r\n if(isAnswerErr){\r\n this.centerDialogVisible=true;\r\n this.tipsContent=\"请设置答案!\";\r\n //this.$message.error('请设置答案!');\r\n return false\r\n }\r\n\r\n this.cardSetting.allowEdit = false;\r\n this.setCardSetting(this.cardSetting)\r\n\r\n //生成pdf\r\n // this.saveLoading&&this.saveLoading.close();\r\n this.saveLoading = this.$loading.service({\r\n lock: true,\r\n text: '保存中...',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n });\r\n\r\n this.isShowToPdfHtml=true;\r\n this.$refs.toPdfHtml.getDefaultData();\r\n setTimeout(()=>{\r\n this.$nextTick(()=>{\r\n // 定位点位置\r\n let params = this.setPosInfo();\r\n // 禁止作答区域高度设置,解决BlankPage组件中设置高度三栏无效\r\n Array.from(document.querySelectorAll('.blank-page')).forEach(v=>{\r\n v.style.height = document.querySelectorAll('.paper-item')[0].offsetHeight - 100 +'px'\r\n })\r\n\r\n let upData = {\r\n width: '210mm',\r\n height: '297mm',\r\n name: 'pdf',\r\n examGroupId: this.cardSetting.examGroupId,\r\n pdfHtml: this.pdfHtml\r\n }\r\n upData.width = this.calcPaperSize.width+'mm'\r\n upData.height = this.calcPaperSize.height+'mm'\r\n upData.name = this.cardSetting.title\r\n upData.pdfHtml = this.getPdfHtml();\r\n\r\n\r\n let uploadForm = new FormData();\r\n Object.keys(upData).forEach((key) => {\r\n uploadForm.append(key, upData[key]);\r\n });\r\n getOnlinePdf(uploadForm).then(res =>{\r\n // this.saveLoading.close();\r\n // let resData = JSON.parse(res);\r\n if(res.success==0){\r\n this.$message.error('生成pdf失败,请稍后再试!')\r\n this.cardSetting.allowEdit = true;\r\n this.setCardSetting(this.cardSetting);\r\n _this.saveLoading.close();\r\n return false\r\n }else {\r\n\r\n this.pdf_url = res.data;\r\n params.pdf_url= res.data;\r\n params.pdfHtml = this.pdfHtml;\r\n _this.testFormData.pdf_url = res.data;\r\n _this.setTestFormData(_this.testFormData);\r\n\r\n\r\n if(this.paperSource == 0){\r\n //第三方临时保存\r\n this.testFormData.editType = 1;\r\n this.testFormData.pdf_url= res.data;\r\n // let upData = {\r\n // examGroupId:params.examGroupId,\r\n // text:JSON.stringify({\r\n // testFormData:this.testFormData,\r\n // savePrintInfo:params\r\n // })\r\n // };\r\n let upData = {\r\n testFormData:this.testFormData,\r\n savePrintInfo:params\r\n };\r\n localStorage.setItem('upDataThreeCard',JSON.stringify(upData));\r\n _this.saveLoading.close();\r\n this.$message.success('保存成功!')\r\n // let uploadForm = new FormData();\r\n // Object.keys(upData).forEach((key) => {\r\n // uploadForm.append(key, upData[key]);\r\n // });\r\n // saveOnlineCardTempData(uploadForm).then(res=>{\r\n // console.log(res)\r\n // _this.saveLoading.close();\r\n // if(res.status == 1){\r\n // // _this.loading.close();\r\n // this.$message.success('保存成功!')\r\n // }else {\r\n // _this.cardSetting.allowEdit = true;\r\n // _this.setCardSetting(this.cardSetting);\r\n // _this.$message.error('保存失败,请稍后再试!')\r\n // }\r\n // })\r\n }else {\r\n //知心慧学保存\r\n // let pages = this.$refs.toPdfHtml.$el.getElementsByClassName('side');\r\n\r\n // let pages = this.$refs.toPdfHtml.$el.querySelectorAll('.side');\r\n\r\n let upData = params;\r\n let uploadForm = new FormData();\r\n // let html2canvasPromise = [];\r\n // //html2canvas 返回的是一个promise\r\n // [].slice.call(pages).forEach(function (pageItem) {\r\n // html2canvasPromise.push(html2canvas(pageItem))\r\n // })\r\n // let html2canvasPromise = [];\r\n // //html2canvas 返回的是一个promise\r\n // pages.forEach(pageItem => {\r\n // html2canvasPromise.push(html2canvas(pageItem,{imageTimeout:5000}))\r\n // })\r\n // Promise.all(html2canvasPromise).then(function (res) {\r\n // let imgFiles = []\r\n // res.forEach(function (canvas, index) {\r\n // let img = Canvas2Image.convertToJPEG(canvas);\r\n // let dataUrl = img.src;\r\n // imgFiles.push(dataURLtoFile(dataUrl, 'pic' + index + '.jpeg'))\r\n // })\r\n //处理模版html\r\n let pdfHtmlStream = new Blob([_this.pdfHtml], {\r\n type: 'text/plain;charset=utf-8'\r\n })\r\n _this.isShowToPdfHtml=false\r\n\r\n Object.keys(upData).forEach((key) => {\r\n if (typeof upData[key] === 'object') {\r\n uploadForm.append(key, JSON.stringify(upData[key]));\r\n } else {\r\n uploadForm.append(key, upData[key]);\r\n }\r\n\r\n });\r\n uploadForm.append('pdfTemplate', pdfHtmlStream, 'pdfTepmlate.txt')\r\n //试卷原图\r\n // imgFiles.forEach(function (img, index) {\r\n // uploadForm.append('imgFiles' + index, img)\r\n // })\r\n saveCardOnline(uploadForm).then(res=>{\r\n _this.saveLoading.close();\r\n console.log(res)\r\n // _this.loading.close();\r\n _this.$message.success('保存成功!')\r\n\r\n }).catch((err) => {\r\n console.log(err)\r\n _this.saveLoading.close();\r\n _this.cardSetting.allowEdit = true;\r\n _this.setCardSetting(this.cardSetting);\r\n _this.$message.error('保存失败,请稍后再试!')\r\n\r\n })\r\n // }).catch(() => {\r\n // this.saveLoading.close();\r\n // _this.cardSetting.allowEdit = true;\r\n // _this.setCardSetting(this.cardSetting);\r\n // _this.$message.error('保存失败,请稍后再试!')\r\n // })\r\n }\r\n\r\n }\r\n\r\n }).catch(() => {\r\n this.saveLoading.close();\r\n _this.cardSetting.allowEdit = true;\r\n _this.setCardSetting(this.cardSetting);\r\n _this.$message.error('保存失败,请稍后再试!')\r\n })\r\n }\r\n )\r\n\r\n // params.sheet_answer = {}\r\n // params.sheet_score = {}\r\n // params.pdfHtml = \"\"\r\n // saveOnlineCardTempData().then(res=>{\r\n //\r\n // })\r\n // }\r\n },200);\r\n\r\n },\r\n changePageSize(){\r\n let isOk = this.isDisabledDirection(this.cardSetting.direction)\r\n if(isOk){\r\n this.cardSetting.direction = this.cardSetting.direction === 1 ? 2:1;\r\n this.changePageDirection();\r\n }\r\n if(this.isDisabledCardColumn(this.cardSetting.column)){\r\n this.changePageDirection();\r\n }\r\n\r\n\r\n this.saveCardSetting();\r\n },\r\n isDisabledDirection(type){\r\n // type:1横版 2竖版\r\n let directionName = type === 1 ? 'horizontal':'vertical';\r\n return !this.sizeConfig[this.cardSetting.paperSize].direction[directionName].length>0\r\n },\r\n changePageDirection(){\r\n if(this.isDisabledCardColumn(this.cardSetting.column)){\r\n let directionName = this.cardSetting.direction === 1 ? 'horizontal':'vertical';\r\n this.cardSetting.column = this.sizeConfig[this.cardSetting.paperSize].direction[directionName][0];\r\n }\r\n this.saveCardSetting();\r\n },\r\n setCardColumn(type){\r\n if(!this.isDisabledCardColumn(type)){\r\n this.cardSetting.column = type\r\n }\r\n this.saveCardSetting();\r\n },\r\n cardColumnClass(type){\r\n if(type===this.cardSetting.column){\r\n return 'current'\r\n } else if(this.isDisabledCardColumn(type)){\r\n return 'disabled'\r\n }else {\r\n return ''\r\n }\r\n },\r\n isDisabledCardColumn(type){\r\n let directionName = this.cardSetting.direction === 1 ? 'horizontal':'vertical';\r\n let typeIndex = this.sizeConfig[this.cardSetting.paperSize].direction[directionName].indexOf(type);\r\n return typeIndex <= -1;\r\n },\r\n changePageExaminationNumberType(){\r\n // console.log(arr)\r\n // if(arr.length<1){\r\n // this.cardSetting.examinationNumberType = [1]\r\n // this.$message({\r\n // message: '不使用二维码的情况下,填涂考号和条形码至少选择一个',\r\n // type: 'warning'\r\n // });\r\n // }\r\n this.saveCardSetting();\r\n },\r\n changePageUseQrCode(type){\r\n this.cardSetting.useQrCode=false;\r\n if(type){\r\n this.$confirm('使用二维码,将给每个考试都生成一份定制答题卡,是否确定使用?', '提示', {\r\n confirmButtonText: '仍要使用',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n this.cardSetting.useQrCode=true;\r\n this.cardSetting.examinationNumberType=[]\r\n this.saveCardSetting();\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消'\r\n });\r\n this.cardSetting.useQrCode=false;\r\n });\r\n\r\n } else {\r\n this.cardSetting.examinationNumberType = [1,2];\r\n this.saveCardSetting();\r\n }\r\n },\r\n showAddBigTopic(){\r\n this.$emit(\"showAddBigTopic\", true);\r\n },\r\n setPaperInfoMsg(){\r\n // hasPaperMsg\r\n this.cardSetting.examInfoConfig.forEach(v=>v.isShow = true);\r\n this.setCardSetting(this.cardSetting)\r\n this.saveCardSetting();\r\n },\r\n saveCardSetting() {\r\n if(this.cardSetting.column==3 &&this.cardSetting.paperSize==4){\r\n this.cardSetting.hasBindingLine=0;\r\n }\r\n\r\n this.setCodeRules();\r\n\r\n this.setCardSetting(this.cardSetting)\r\n\r\n // 防止两秒之内重复渲染页面,解决A4两栏切8k三栏bug\r\n if(new Date().getTime() - this.curDateTime < 2000) return;\r\n this.curDateTime = new Date().getTime();\r\n this.setBigTopicPageArr([resetPage(this.bigTopicPageArr)])\r\n this.setInitPageFlag(!this.initPageFlag);\r\n },\r\n showSelectSetAnswer(){\r\n this.centerDialogVisible=false;\r\n this.isSetAnswer = true\r\n },\r\n getTopicTypeText(type) {\r\n let text = ''\r\n this.topicTypes.forEach(item => {\r\n if (type == item.value) {\r\n text = item.label\r\n }\r\n })\r\n return text\r\n },\r\n goPreview(){\r\n this.$router.push({ path: '/AnswerSheetPreview', query: { exam_group_id:this.cardSetting.examGroupId }})\r\n },\r\n getPdfHtml(){\r\n let pdfHtm = '';\r\n pdfHtm = pdfHtm+'<!DOCTYPE html>';\r\n pdfHtm = pdfHtm+'<html lang=\"en\">';\r\n pdfHtm = pdfHtm+'<head>';\r\n pdfHtm = pdfHtm+'<meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">';\r\n pdfHtm = pdfHtm+'<title>Document</title>';\r\n pdfHtm = pdfHtm+'<link rel=\"stylesheet\" href=\"'+process.env.projectConfig.phpPath+'/answer-sheet/toPdfHtml.css\">';\r\n pdfHtm = pdfHtm+'<link rel=\"stylesheet\" href=\"'+process.env.projectConfig.phpPath+'/answer-sheet/fonts/iconfont.css\">';\r\n pdfHtm = pdfHtm+'</head>';\r\n pdfHtm = pdfHtm+'<body>';\r\n pdfHtm = pdfHtm+this.$refs.toPdfHtml.$el.outerHTML;\r\n pdfHtm = pdfHtm+'</body></html>';\r\n this.pdfHtml = pdfHtm;\r\n return pdfHtm\r\n },\r\n downPdf(type){\r\n let upData = {\r\n width: '210mm',\r\n height: '297mm',\r\n name: 'pdf',\r\n examGroupId: this.cardSetting.examGroupId,\r\n pdfHtml: this.pdfHtml\r\n }\r\n\r\n let uploadForm = new FormData();\r\n Object.keys(upData).forEach((key) => {\r\n uploadForm.append(key, upData[key]);\r\n });\r\n this.isShowToPdfHtml=false\r\n getOnlinePdf(uploadForm).then(res =>{\r\n // let resData = JSON.parse(res);\r\n if(res.success==0){\r\n this.$message.error('生成pdf失败,请稍后再试!')\r\n return false\r\n }else {\r\n this.pdf_url = res.data;\r\n //type 1 保存答题卡,2下载答题卡\r\n if(type===1){\r\n return Promise.resolve(res)\r\n }else {\r\n location.href = process.env.projectConfig.apiBaseUrl+'/third/download?url='+res.data+'&title=pdf-'+this.cardSetting.title+'.pdf'\r\n }\r\n\r\n //调试用\r\n\r\n // window.open(res.data)\r\n }\r\n\r\n })\r\n },\r\n downPdfAll(){\r\n let _this = this;\r\n let pageL = this.bigTopicPageArr.length;\r\n if(pageL>this.cardSetting.column*2){\r\n this.$message.error('超出'+this.cardSetting.column*2+'页,请重新编辑后再保存!')\r\n return false\r\n }\r\n if(this.cardSetting.useQrCode){\r\n this.$confirm('该操作会把该场考试下面的所有班级学生考试模板进行批量生成。请勿重复生成!', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n let uploadForm = new FormData();\r\n uploadForm.append('exam_group_id', _this.cardSetting.examGroupId)\r\n sendCreateOnlineAllStudents(uploadForm).then(res=>{\r\n if(res.status===1){\r\n _this.$message({\r\n type: 'success',\r\n message: '后台批量生成中!'\r\n });\r\n }\r\n\r\n })\r\n\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消'\r\n });\r\n });\r\n\r\n\r\n }else {\r\n location.href = process.env.projectConfig.apiBaseUrl+'/third/download?url='+this.pdf_url+'&title=pdf-'+this.cardSetting.title+'.pdf'\r\n }\r\n },\r\n enterLinesTips(){\r\n this.tipsBox1=true;\r\n },\r\n leaveLinesTips(){\r\n this.tipsBox1=false;\r\n },\r\n enterEwmTips(){\r\n this.tipsBox2=true;\r\n },\r\n leaveEwmTips(){\r\n this.tipsBox2=false;\r\n },\r\n isShowBigTopicNo(bigTopic){\r\n let config = bigTopic.topicConfigureData.topicTypeArr[0];\r\n if(config.startNo!=''&&config.endNo!=''){\r\n return true\r\n }else {\r\n return false\r\n }\r\n },\r\n setDisabled(val){\r\n return (\r\n (this.cardSetting.examinationNumberType.includes(val) && this.cardSetting.examinationNumberType.length == 1) ||\r\n (this.cardSetting.cardLength>12 && [3,4,5].includes(this.cardSetting.paperSize))\r\n )\r\n },\r\n setCodeRules(){\r\n // 不使用二维码时,并且不满足showCodeRules时,只选中填涂考号,并且禁用装订线\r\n let showCodeRules = this.cardSetting.cardLength<15 && ([1,2].includes(this.cardSetting.paperSize) || !(this.cardSetting.cardLength>12 && [3,4,5].includes(this.cardSetting.paperSize)));\r\n\r\n if(!showCodeRules && !this.cardSetting.useQrCode){\r\n this.cardSetting.examinationNumberType=[1]\r\n this.cardSetting.hasBindingLine = 0;\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.card_setting{\r\n position: relative;\r\n .card_setting-title{\r\n height: 40px;\r\n line-height: 40px;\r\n text-align: center;\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #233d4d;\r\n background: #eef0f0;\r\n }\r\n .overBox{\r\n height: 420px;\r\n padding-bottom: 30px;\r\n overflow: auto;\r\n }\r\n .card_setting-item{\r\n display: flex;\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n .name{\r\n width: 80px;\r\n padding: 0 10px;\r\n font-size: 18px;\r\n text-align: justify;\r\n text-align-last: justify;\r\n }\r\n .content{\r\n flex: 1;\r\n align-items: center;\r\n font-size: 16px;\r\n flex-wrap: wrap;\r\n .centerBox{\r\n display: inline-block;\r\n vertical-align: -1px;\r\n // margin-bottom: 15px;\r\n .icontishi1{\r\n position: relative;\r\n vertical-align: top;\r\n font-size: 16px;\r\n cursor: pointer;\r\n color: #bbb;\r\n display: inline-block;\r\n b{\r\n display: inline-block;\r\n width:140px;\r\n position: absolute;\r\n left:-62px;\r\n top:-107px;\r\n background:rgba(0,0,0,.6);\r\n padding:10px;\r\n border-radius: 10px;\r\n color:#fff;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n z-index:1;\r\n\r\n }\r\n }\r\n }\r\n .ewmCenterBox{\r\n display: inline-block;\r\n margin-top: 10px;\r\n height: 20px;\r\n margin-bottom: 0;\r\n vertical-align: middle;\r\n line-height: 20px;\r\n .ewmFont{\r\n vertical-align: middle;\r\n margin-left: 10px;;\r\n margin-bottom: 0!important;\r\n }\r\n }\r\n .el-switch{\r\n display: inline-block!important;\r\n }\r\n .el-switch__label{\r\n display: inline-block;\r\n height: 20px;\r\n line-height: 20px;\r\n }\r\n .el-switch__label:before{\r\n content: \"1111\";\r\n }\r\n }\r\n }\r\n .subject-list{\r\n .s-num{\r\n margin-left: 5px;\r\n display: inline-block;\r\n }\r\n }\r\n .layoutList {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n .layoutItem {\r\n position: relative;\r\n display: flex;\r\n margin-right: 10px;\r\n flex-direction: column;\r\n align-items: center;\r\n cursor: pointer;\r\n &.current{\r\n span {\r\n border-color: #4e8ee9;\r\n }\r\n em {\r\n color: #4e8ee9;\r\n }\r\n .icon_current {\r\n display: block;\r\n }\r\n i {\r\n background: #4e8ee9;\r\n }\r\n }\r\n &.disabled {\r\n cursor: not-allowed;\r\n opacity: 0.3;\r\n background-color: #fff !important;\r\n }\r\n span {\r\n width: 66px;\r\n height: 66px;\r\n padding: 0 5px;\r\n box-sizing: border-box;\r\n border: 2px solid #bbb;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-around;\r\n }\r\n i {\r\n flex: 1;\r\n height: 55px;\r\n margin: 0 2px;\r\n background: #bbb;\r\n }\r\n em {\r\n font-style: normal;\r\n font-size: 12px;\r\n line-height: 40px;\r\n }\r\n .icon_current {\r\n display: none;\r\n position: absolute;\r\n width: 30px;\r\n height: 30px;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -95%);\r\n border-radius: 50%;\r\n border: 2px solid yellow;\r\n &:after,&:before{\r\n content: \"\";\r\n position: absolute;\r\n width: 14px;\r\n height: 7px;\r\n border-bottom: 2px solid yellow;\r\n border-left: 2px solid yellow;\r\n top: 50%;\r\n left: 50%;\r\n -webkit-transform: translate(-50%, -50%) rotate(-45deg);\r\n transform: translate(-50%, -50%) rotate(-45deg);\r\n }\r\n }\r\n }\r\n }\r\n .border_b{\r\n border-bottom: 1px solid #bbb;\r\n }\r\n .edit-topic-btn-box{\r\n .btn-add-topic{\r\n display: block;\r\n margin: 20px auto;\r\n width: 100px;\r\n height: 40px;\r\n line-height: 40px;\r\n border-radius: 4px;\r\n text-align: center;\r\n font-size: 16px;\r\n color: #fff;\r\n background: #97b1c7;\r\n }\r\n .btn-set-answer{\r\n display: block;\r\n font-size: 16px;\r\n text-align: center;\r\n color: #6A8296;\r\n cursor: pointer;\r\n }\r\n }\r\n .btn-card-box{\r\n position: fixed;\r\n display: flex;\r\n width: 330px;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 3;\r\n padding-bottom:20px;\r\n padding-top:20px;\r\n background:#fff;\r\n text-align:center;\r\n padding-left: 10px;\r\n .btn{\r\n margin: 0 10px;\r\n width: 80px;\r\n height: 40px;\r\n line-height: 40px;\r\n border-radius: 4px;\r\n text-align: center;\r\n font-size: 16px;\r\n color: #fff;\r\n background: #97b1c7;\r\n }\r\n .btn-card-save{\r\n background: #85b3e7;\r\n }\r\n .btn-card-down{\r\n background: #5bcf9a;\r\n }\r\n }\r\n .disabled{\r\n background:#999 !important;\r\n cursor:not-allowed;\r\n }\r\n\r\n}\r\n.to-pdf-html-box{\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n z-index: -99999;\r\n}\r\n</style>\r\n<style>\r\n.card_setting-item .el-radio{\r\n margin-right: 10px;\r\n /* margin-bottom: 10px; */\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"set-select-answer\">\r\n <h3 class=\"card_setting-title\">设置客观题答案</h3>\r\n <div class=\"set-select-list\">\r\n <div class=\"answer-item\" v-for=\"topic in topicList\" :key=\"topic.alias\">\r\n <span class=\"number\">{{topic.alias}}</span>\r\n <span class=\"topic-type-name\">{{topic.questionTypeText}}</span>\r\n <p class=\"option-box\">\r\n <i class=\"answer-option\" v-for=\"opt in topic.optionList\" :class=\"{'active':opt.isAnswer}\" @click=\"setAnswer(opt,topic)\" :key=\"opt.value\">{{opt.value}}</i>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"btn-card-box\">\r\n <button class=\"btn btn-card-save\" @click=\"saveSelectAnswer\">保存</button>\r\n <button class=\"btn btn-card-go_back\" @click=\"cancel\">返回</button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console */\r\n\r\nimport {mapGetters, mapMutations} from \"vuex\";\r\nimport {SET_BIG_TOPIC_ARR} from \"@/store/constant\";\r\n\r\nexport default {\r\n name: \"SetAnswer\",\r\n components: {\r\n },\r\n filters: {},\r\n props: {},\r\n data() {\r\n return {\r\n topicData:[\r\n {\r\n alias:'1',\r\n answer:'',\r\n questionTypeId: 1,\r\n questionTypeText:'单选题',\r\n optionsCount:4,\r\n },\r\n {\r\n alias:'2',\r\n answer:'',\r\n questionTypeId: 2,\r\n questionTypeText:'多选题',\r\n optionsCount:7,\r\n }\r\n ],\r\n topicList:[]\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['bigTopicArr','topicTypes']),\r\n },\r\n watch: {\r\n bigTopicArr: {\r\n handler() {\r\n this.getDefaultData()\r\n },\r\n deep: true\r\n },\r\n },\r\n mounted() {\r\n this.getDefaultData()\r\n },\r\n methods: {\r\n ...mapMutations('answerSheet', {setBigTopicArr: SET_BIG_TOPIC_ARR}),\r\n\r\n getDefaultData(){\r\n this.topicData = [];\r\n this.topicList = [];\r\n Object.values(this.bigTopicArr).forEach(bigTopic =>{\r\n if([1, 2, 11].includes(bigTopic.questionTypeId)){\r\n for(let i=0;i<bigTopic.questions.length;i++){\r\n if(bigTopic.questionTypeId==1){\r\n bigTopic.questions[i].questionTypeText=\"单选题\";\r\n }else if(bigTopic.questionTypeId==2){\r\n bigTopic.questions[i].questionTypeText=\"多选题\";\r\n }else if(bigTopic.questionTypeId==11){\r\n bigTopic.questions[i].questionTypeText=\"不定项\";\r\n }\r\n }\r\n this.topicData.push(...bigTopic.questions)\r\n }\r\n })\r\n //初始化选择题选项\r\n this.topicData.forEach(topic =>{\r\n let newTopic = JSON.parse(JSON.stringify(topic));\r\n newTopic.optionList = this.getOptionList(topic);\r\n this.topicList.push(newTopic);\r\n })\r\n },\r\n saveSelectAnswer() {\r\n //保存设置的选择题答案\r\n this.topicList.forEach((topic,index) => {\r\n let answer = ''\r\n topic.optionList.forEach(opt =>{\r\n if(opt.isAnswer){\r\n answer = answer+(answer==''?opt.value:','+opt.value)\r\n }\r\n })\r\n this.topicData[index].answer = answer;\r\n })\r\n this.setBigTopicArr(this.bigTopicArr);\r\n this.cancel()\r\n },\r\n cancel() {\r\n this.$emit(\"cancel\", false);\r\n },\r\n getOptionList(topic){\r\n let optArr = [];\r\n for (let i=0; i<topic.optionCount; i++){\r\n optArr.push({\r\n value : String.fromCharCode(65+i),\r\n isAnswer:topic.answer.includes(String.fromCharCode(65+i))\r\n })\r\n }\r\n return optArr\r\n },\r\n setAnswer(opt,topic){\r\n if(topic.questionTypeId===1){\r\n topic.optionList.forEach(item =>{\r\n if(item.value === opt.value){\r\n item.isAnswer = true\r\n }else {\r\n item.isAnswer = false\r\n }\r\n })\r\n }else {\r\n opt.isAnswer = !opt.isAnswer\r\n }\r\n }\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.card_setting-title {\r\n height: 40px;\r\n line-height: 40px;\r\n text-align: center;\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #233d4d;\r\n background: #eef0f0;\r\n}\r\n\r\n.btn-card-box {\r\n position: fixed;\r\n width: 330px;\r\n right: 0;\r\n bottom: 20px;\r\n text-align: center;\r\n\r\n .btn {\r\n margin: 0 10px;\r\n width: 80px;\r\n height: 40px;\r\n line-height: 40px;\r\n border-radius: 4px;\r\n text-align: center;\r\n font-size: 16px;\r\n color: #fff;\r\n background: #97b1c7;\r\n }\r\n\r\n .btn-card-save {\r\n background: #85b3e7;\r\n }\r\n}\r\n.set-select-list{\r\n padding-bottom: 80px;\r\n .answer-item{\r\n display: flex;\r\n align-items: baseline;\r\n padding: 10px;\r\n font-size: 14px;\r\n border-bottom: 1px dashed #ddd;\r\n .number{\r\n width: 25px;\r\n }\r\n .topic-type-name{\r\n width: 95px;\r\n }\r\n .option-box{\r\n flex: 1;\r\n display: flex;\r\n flex-wrap: wrap;\r\n .answer-option{\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 30px;\r\n height: 30px;\r\n margin-right: 10px;\r\n margin-bottom: 10px;\r\n background: #FFFFFF;\r\n border: 1px solid #6A8296;\r\n font-style: normal;\r\n border-radius: 2px;\r\n color: #6A8296;\r\n cursor: pointer;\r\n }\r\n .active{\r\n background: #6A8296;\r\n color: #fff;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"add-topic\">\r\n <div class=\"edit-topic-content\">\r\n <div class=\"top\">\r\n <div class=\"topic-title\">\r\n <span class=\"topic-edit-item\">\r\n <label>大题号</label>\r\n <el-select v-model=\"topicConfigureData.BigNo\" size=\"mini\" class=\"select-big_topic-number\" placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in bigQuestionNos\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n <label>题型标题</label>\r\n <el-input v-model=\"topicConfigureData.name\" size=\"mini\" maxlength=\"10\" class=\"input-big_topic-name\"\r\n placeholder=\"请输入题型标题名称\" @keyup.native=\"trimLR\"></el-input>\r\n </span>\r\n <span class=\"color-red\">{{ errMsg }}</span>\r\n </div>\r\n <div class=\"topic-type\" v-for=\"(topicConfig,index) in topicConfigureData.topicTypeArr\" :key=\"index\">\r\n <span class=\"topic-edit-item\">\r\n <label>题类</label>\r\n <el-select v-model=\"topicConfigureData.topicType\" size=\"mini\" class=\"select-topic-topicType\" @change=\"addTopicList(topicConfigureData)\"\r\n placeholder=\"请选择题类\">\r\n <el-option\r\n v-for=\"item in topicTypeOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </span>\r\n <span class=\"topic-edit-item\" v-show=\"topicConfigureData.topicType==17\">\r\n <el-select v-model=\"topicConfig.chooseOption\" @change=\"addTopicList(topicConfigureData)\" size=\"mini\" class=\"select-choose_topic\" placeholder=\"\">\r\n <el-option\r\n v-for=\"item in chooseOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n 选\r\n <el-select v-model=\"topicConfig.chooseSelectOption\" @change=\"addTopicList(topicConfigureData)\" size=\"mini\" class=\"select-choose_topic\"\r\n placeholder=\"\">\r\n <el-option\r\n v-for=\"item in chooseSelectOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n 从<el-input v-model=\"topicConfig.startNo\" @change=\"checkNumber(topicConfig,'startNo');addTopicList(topicConfigureData)\" @input=\"checkNumber(topicConfig,'startNo')\" size=\"mini\" class=\"input-min_topic-number\"\r\n placeholder=\"题号\"></el-input>\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n 到<el-input v-model=\"topicConfig.endNo\" @change=\"checkNumber(topicConfig,'endNo');addTopicList(topicConfigureData)\" @input=\"checkNumber(topicConfig,'endNo')\" size=\"mini\" class=\"input-min_topic-number\"\r\n placeholder=\"题号\"></el-input>题\r\n </span>\r\n <span class=\"topic-edit-item\" v-show=\"isSelectType\">\r\n 每题<el-input v-model=\"topicConfig.optionsNumber\" @change=\"checkOptNumber(topicConfig,'optionsNumber');addTopicList(topicConfigureData)\" size=\"mini\" class=\"input-min_topic-number\"\r\n placeholder=\"\"></el-input>个选项\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n 每题<el-input v-model=\"topicConfig.score\" @change=\"checkScore(topicConfig);addTopicList(topicConfigureData)\" size=\"mini\" class=\"input-min_topic-number\"\r\n placeholder=\"\"></el-input>分\r\n </span>\r\n <span class=\"topic-edit-item\" v-show=\"isMoreSelectType\">\r\n 半对<el-input v-model=\"topicConfig.halfScore\" @change=\"checkHalfScore(topicConfig);addTopicList(topicConfigureData)\" size=\"mini\" class=\"input-min_topic-number\"\r\n placeholder=\"\"></el-input>分\r\n </span>\r\n <SubjectSelect v-if=\"isZongHe&&topicConfigureData.topicType===17\" :subject-id=\"topicConfigureData.subject\" @subjectChange=\"ChooseChangeSubject\"></SubjectSelect>\r\n <span class=\"topic-edit-item\" v-show=\"topicConfigureData.topicType!=17\">\r\n <i class=\"el-icon-circle-plus-outline btn-add-topic-type\" v-show=\"topicList.length>0\" @click=\"addTopicType\"></i>\r\n <i class=\"el-icon-circle-plus-outline btn-add-topic-type disabled\" v-show=\"topicList.length==0\" ></i>\r\n\r\n </span>\r\n <span class=\"topic-edit-item\" v-show=\"topicConfigureData.topicTypeArr.length>1\">\r\n <i class=\"el-icon-remove-outline btn-del-topic-type\" @click=\"delTopicType(index)\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"topic-list\" v-if=\"topicList.length>0\" key=\"topicList\">\r\n <div class=\"topic-list-item\" v-for=\"(item,index) in topicList\" :key=\"item.alias\">\r\n <MinTopicEditItem :min-topic-data=\"item\" :idx=\"index\"></MinTopicEditItem>\r\n </div>\r\n </div>\r\n <div class=\"topic-list\" v-else key=\"topicList\">\r\n <p class=\"msg\">请添加题目</p>\r\n </div>\r\n <div class=\"topic-card-setting\" v-if=\"isSelectType\">\r\n <span class=\"topic-edit-item\">\r\n <label>选项排列方向</label>\r\n <el-radio-group v-model=\"topicConfigureData.direction\">\r\n <el-radio :label=\"0\">横向</el-radio>\r\n <el-radio :label=\"1\">纵向</el-radio>\r\n </el-radio-group>\r\n </span>\r\n </div>\r\n <div class=\"topic-card-setting\" v-if=\"isFillInBlank\">\r\n <span class=\"topic-edit-item\">\r\n <label>答题卡布局</label>\r\n 每行\r\n <el-select v-model=\"topicConfigureData.columns\" size=\"mini\" class=\"select-big_topic-number\"\r\n placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in columns\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select> 列\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n <label>行高</label>\r\n <el-select v-model=\"topicConfigureData.rowLineHeight\" size=\"mini\" class=\"select-big_topic-number\"\r\n placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in lineHeights\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n <label>手写打分</label>\r\n <el-select v-model=\"topicConfigureData.scoreStyle\" size=\"mini\" class=\"select-big_topic-number\"\r\n placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in scoreOpt\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n :disabled=\"item.disabled\">\r\n </el-option>\r\n </el-select>\r\n <span>仅对线下阅卷打分</span>\r\n </span>\r\n </div>\r\n <div class=\"topic-card-setting\" v-if=\"isAnswer\">\r\n <span class=\"topic-edit-item\">\r\n <label>手写打分</label>\r\n <el-select v-model=\"topicConfigureData.scoreLimit\" size=\"mini\" class=\"select-big_topic-number\"\r\n placeholder=\"请选择\">\r\n <el-option\r\n v-for=\"item in scoreMaxOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n :disabled=\"item.disabled\">\r\n </el-option>\r\n </el-select>\r\n </span>\r\n <span class=\"topic-edit-item\">\r\n <el-checkbox v-model=\"topicConfigureData.hasHalfScore\">加入0.5分</el-checkbox>\r\n <span>(仅对线下阅卷打分)</span>\r\n </span>\r\n <span class=\"topic-edit-item\" v-if=\"isCompositionZH\">\r\n <label>作文字数</label>\r\n <el-input v-model=\"topicConfigureData.compositionNumber\" size=\"mini\" class=\"input-min_topic-number\"></el-input>\r\n </span>\r\n <span class=\"topic-edit-item\" v-if=\"isCompositionEN\">\r\n <label>英语作文横线行数</label>\r\n <el-input v-model=\"topicConfigureData.compositionRows\" size=\"mini\" class=\"input-min_topic-number\"></el-input>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"btn-box\">\r\n <button class=\"btn btn-topic-edit-save\" @click=\"save\">保存</button>\r\n <button class=\"btn btn-topic-edit-cancel\" @click=\"cancel\">取消</button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-console, no-debugger*/\r\nimport {mapGetters, mapMutations} from 'vuex'\r\nimport {\r\n SET_BIG_TOPIC_ARR,\r\n SET_PAPER_LIST_DATA,\r\n SET_PAGETOPIC_ARR,\r\n SET_INITPAGE_FLAG,\r\n SET_CARD_SETTING, SET_CHANGE_SOMEPAGE_INDEX\r\n} from \"@/store/constant\";\r\n\r\nimport {SectionToChinese, isRepeat} from \"@/lib/util.js\"\r\n\r\nimport MinTopicEditItem from \"./MinTopicEditItem\";\r\nimport SubjectSelect from \"../common/SubjectSelect\";\r\nimport resetPage from \"@/lib/resetPage\";\r\n\r\nexport default {\r\n name: \"AddTopic\",\r\n components: {\r\n MinTopicEditItem,\r\n SubjectSelect\r\n },\r\n filters: {},\r\n props: {\r\n subjectId: Number,\r\n isEdit: Boolean,\r\n editModelId: String,\r\n },\r\n data() {\r\n return {\r\n bigQuestionNos: [],\r\n topicTypeOptions:[],\r\n topicConfigureData: {\r\n BigNo: '一',\r\n name: '',\r\n topicType: '',\r\n subject:12,\r\n direction: 0,\r\n columns: 1,\r\n rowLineHeight: 40,\r\n scoreStyle: 1,\r\n scoreLimit: 15,\r\n hasHalfScore: false,\r\n compositionNumber:800,\r\n compositionRows:10,\r\n topicTypeArr: [\r\n {\r\n startNo: '',\r\n endNo: '',\r\n optionsNumber: '',\r\n chooseOption: 2,\r\n chooseSelectOption: 1,\r\n score: '',\r\n halfScore: ''\r\n }\r\n ],\r\n },\r\n newTopicConfigureData: {\r\n BigNo: '一',\r\n name: '',\r\n topicType: '',\r\n subject:12,\r\n direction: 0,\r\n columns: 1,\r\n rowLineHeight: 40,\r\n scoreStyle: 1,\r\n scoreLimit: 15,\r\n hasHalfScore: false,\r\n compositionNumber:800,\r\n compositionRows:10,\r\n topicTypeArr: [\r\n {\r\n startNo: '',\r\n endNo: '',\r\n optionsNumber: '4',\r\n chooseOption: 2,\r\n chooseSelectOption: 1,\r\n score: '',\r\n halfScore: ''\r\n }\r\n ],\r\n },\r\n topicList: [],\r\n defaultTopicConfig: {\r\n startNo: '',\r\n endNo: '',\r\n optionsNumber: '',\r\n chooseOption: 2,\r\n chooseSelectOption: 1,\r\n score: '',\r\n halfScore: '',\r\n },\r\n chooseOptions: [\r\n {\r\n label: \"二\",\r\n value: 2\r\n },\r\n {\r\n label: \"三\",\r\n value: 3\r\n },\r\n {\r\n label: \"四\",\r\n value: 4\r\n }\r\n ],\r\n chooseSelectOptions: [\r\n {\r\n label: \"一\",\r\n value: 1\r\n },\r\n // {\r\n // label: \"二\",\r\n // value: 2\r\n // }\r\n ],\r\n defaultTopicItem: {\r\n isQuestion: false,\r\n topicQues: '',\r\n score: '',\r\n },\r\n columns: [\r\n {\r\n label: '1',\r\n value: 1\r\n },\r\n {\r\n label: '2',\r\n value: 2\r\n },\r\n {\r\n label: '3',\r\n value: 3\r\n }\r\n ],\r\n lineHeights: [\r\n {\r\n label: '30px',\r\n value: 30\r\n },\r\n {\r\n label: '35px',\r\n value: 35\r\n },\r\n {\r\n label: '40px',\r\n value: 40\r\n },\r\n {\r\n label: '45px',\r\n value: 45\r\n },\r\n {\r\n label: '50px',\r\n value: 50\r\n }\r\n ],\r\n scoreOpt: [\r\n {\r\n label: '空白方框',\r\n value: 1,\r\n disabled: false\r\n },\r\n {\r\n label: '2/3/5',\r\n value: 2,\r\n disabled: false\r\n },\r\n {\r\n label: '2/3/4/6',\r\n value: 3,\r\n disabled: false\r\n },\r\n {\r\n label: '2/4',\r\n value: 4,\r\n disabled: false\r\n }\r\n ],\r\n scoreMaxOptions: [\r\n {label: '上限15', value: 15, disabled: false},\r\n {label: '上限16', value: 16, disabled: false},\r\n {label: '上限29', value: 29, disabled: false},\r\n {label: '上限49', value: 49, disabled: false},\r\n {label: '上限69', value: 69, disabled: false},\r\n ],\r\n topicNoArr: [],\r\n errMsg: '',\r\n isRunWatch:true,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet', ['topicTypes', 'subject', 'bigTopicArr','initPageFlag','cardSetting','bigTopicPageArr','chageSomePageIndex']),\r\n isSelectType() {\r\n return [1, 2, 11].includes(this.topicConfigureData.topicType)\r\n },\r\n //多选,不定项选择和多选题\r\n isMoreSelectType() {\r\n return [2, 11].includes(this.topicConfigureData.topicType)\r\n },\r\n isFillInBlank() {\r\n return this.topicConfigureData.topicType === 5\r\n },\r\n isAnswer() {\r\n return [7, 17, 77].includes(this.topicConfigureData.topicType)\r\n },\r\n isChooseAnswer() {\r\n return this.topicConfigureData.topicType === 17;\r\n },\r\n //作文 77为前端定义,传给后台应为7\r\n isComposition() {\r\n return this.topicConfigureData.topicType === 77\r\n },\r\n //语文作文\r\n isCompositionZH() {\r\n return this.topicConfigureData.topicType === 77 && this.subject === 9\r\n },\r\n //英语作文\r\n isCompositionEN() {\r\n return this.topicConfigureData.topicType === 77 && this.subject === 8\r\n },\r\n //带小问小题的题型\r\n hasSmQuestionTopic() {\r\n return [5, 7, 17].includes(this.topicConfigureData.topicType)\r\n },\r\n //综合科目,文综理综\r\n isZongHe() {\r\n return [18, 19].includes(this.subject)\r\n },\r\n },\r\n watch: {\r\n // topicConfigureData: {\r\n // handler(newVal) {\r\n // if(this.isRunWatch){\r\n // this.addTopicList(newVal);\r\n // }else {\r\n // this.$nextTick(()=>{\r\n // if(!this.isRunWatch){\r\n // this.isRunWatch=true;\r\n // }\r\n // })\r\n // }\r\n // },\r\n // deep: true\r\n // },\r\n topicList: {\r\n handler(newVal) {\r\n // if(newVal.length>0&&this.isRunWatch){\r\n // this.questionsChangeEdit(newVal)\r\n // }else {\r\n // this.$nextTick(()=>{\r\n // if(!this.isRunWatch){\r\n // this.isRunWatch=true;\r\n // }\r\n // })\r\n // }\r\n this.questionsChangeEdit(newVal);\r\n\r\n },\r\n deep: true\r\n },\r\n },\r\n mounted() {\r\n this.getDefaultData()\r\n },\r\n methods: {\r\n ...mapMutations('answerSheet', {setBigTopicArr: SET_BIG_TOPIC_ARR,\r\n setPaperListData:SET_PAPER_LIST_DATA,\r\n setBigTopicPageArr:SET_PAGETOPIC_ARR,\r\n setInitPageFlag:SET_INITPAGE_FLAG,\r\n setCardSetting:SET_CARD_SETTING,\r\n setChangeSomePageIndex:SET_CHANGE_SOMEPAGE_INDEX,}),\r\n trimLR(){\r\n this.topicConfigureData.name = this.topicConfigureData.name.replace(/\\s/g,'')\r\n },\r\n getDefaultData() {\r\n this.errMsg ='';\r\n if(this.isEdit){\r\n this.isRunWatch = false;\r\n this.topicConfigureData = this.bigTopicArr[this.editModelId].topicConfigureData;\r\n this.topicList = this.bigTopicArr[this.editModelId].topicList;\r\n // return false\r\n }else {\r\n this.topicConfigureData = JSON.parse(JSON.stringify(this.newTopicConfigureData));\r\n this.topicList = []\r\n }\r\n this.calcBigNo();\r\n if (!this.isEdit) {\r\n this.topicConfigureData.BigNo = this.bigQuestionNos[0].value\r\n if(this.isZongHe){\r\n if (this.subject===18){\r\n this.topicConfigureData.subject = 12\r\n }else {\r\n this.topicConfigureData.subject = 15\r\n }\r\n }else {\r\n this.topicConfigureData.subject = this.subject\r\n }\r\n }\r\n //获取除当前大题外所有已使用题号\r\n let bigTopics = Object.values(this.bigTopicArr);\r\n this.topicNoArr = [];\r\n bigTopics.forEach(module => {\r\n if (module.topicConfigureData.BigNo != this.topicConfigureData.BigNo) {\r\n module.topicList.forEach(topic => {\r\n this.topicNoArr.push(topic.topicNo)\r\n })\r\n }\r\n })\r\n //根据科目过滤题型\r\n this.topicTypeOptions = []\r\n this.topicTypes.forEach(opt => {\r\n if(this.subject===3){\r\n if(opt.value !== 11 && opt.value !== 77){\r\n if(opt.value !== 27){\r\n this.topicTypeOptions.push(opt)\r\n }\r\n }\r\n } else if(this.subject===8 || this.subject===9){\r\n if(opt.value !== 2 && opt.value !== 27){\r\n this.topicTypeOptions.push(opt)\r\n }\r\n } else {\r\n if(opt.value !== 2 && opt.value !== 77){\r\n if(opt.value !== 27){\r\n this.topicTypeOptions.push(opt)\r\n }\r\n }\r\n }\r\n\r\n })\r\n\r\n },\r\n //计算大题号,默认一~九十九\r\n calcBigNo() {\r\n let cacheQuesNos = []\r\n for (let i = 1; i < 100; i++) {\r\n let chineseTitle = SectionToChinese(i)\r\n cacheQuesNos.push({\r\n label: chineseTitle,\r\n value: chineseTitle\r\n })\r\n }\r\n let SelectBigNoArr = []\r\n for (let bigNo in this.bigTopicArr) {\r\n SelectBigNoArr.push(this.bigTopicArr[bigNo].topicConfigureData.BigNo)\r\n }\r\n SelectBigNoArr.forEach(bigNo => {\r\n cacheQuesNos.forEach((item, index) => {\r\n if (item.label == bigNo) {\r\n cacheQuesNos.splice(index, 1);\r\n }\r\n })\r\n })\r\n\r\n this.bigQuestionNos = cacheQuesNos\r\n },\r\n addTopicType() {\r\n let tempData = JSON.parse(JSON.stringify(this.defaultTopicConfig));\r\n tempData.optionsNumber = tempData.optionsNumber || '4'\r\n this.topicConfigureData.topicTypeArr.push(tempData)\r\n },\r\n delTopicType(index) {\r\n if (this.topicConfigureData.topicTypeArr.length > 1) {\r\n this.topicConfigureData.topicTypeArr.splice(index, 1)\r\n } else {\r\n let defaultTopicConfig = JSON.parse(JSON.stringify(this.defaultTopicConfig))\r\n this.topicConfigureData.topicTypeArr[0] = defaultTopicConfig;\r\n // this.questions = [];\r\n }\r\n this.addTopicList(this.topicConfigureData);\r\n },\r\n setQuestionNum(num){\r\n //题号唯一\r\n let arr = String(num).split('.');\r\n let firstNum = null,centerNum = null,lastNum = null,result = null;\r\n if(arr.length == 1){\r\n // 不带小数点不作处理\r\n result = arr[0];\r\n }else{\r\n if(arr[0].length == 1 || arr[0].length == 3){\r\n // 各位或者百位数,并且带小数的,加原数字,并且加999防止与三位数题重复\r\n firstNum = arr[0].length == 1 ? 999+arr[0] : arr[0];\r\n }else if(arr[0].length == 2){\r\n // 十位数字并且带小数,第二位如果是0,给原数字前加原数字。非零加第一位数\r\n if(arr[0].includes('0')){\r\n firstNum = arr[0];\r\n }else{\r\n firstNum = arr[0].substring(0,1);\r\n }\r\n }\r\n centerNum = arr[0];\r\n lastNum = arr[1];\r\n result = firstNum + centerNum + lastNum\r\n }\r\n return parseInt(result);\r\n },\r\n addTopicList(data) {\r\n // let data = this.topicConfigureData;\r\n //试题配置校验\r\n if (!this.addTopicListDataVerification(data)) {\r\n this.topicList = [];\r\n return false\r\n }\r\n\r\n let _this = this;\r\n this.topicList = [];\r\n let selectSupItem = {}\r\n if (this.isSelectType) {\r\n selectSupItem = {\r\n optionsCount: data.optionsNumber\r\n }\r\n if (this.isMoreSelectType) {\r\n selectSupItem.halfScore = data.halfScore\r\n }\r\n }\r\n\r\n data.topicTypeArr.forEach(topicType => {\r\n if (Number(topicType.startNo) < 1) {\r\n return false\r\n }\r\n\r\n if (this.isSelectType) {\r\n selectSupItem = {\r\n optionsCount: topicType.optionsNumber\r\n }\r\n if (this.isMoreSelectType) {\r\n selectSupItem.halfScore = topicType.halfScore\r\n }\r\n }\r\n\r\n let topicLength = data.topicType == 17 ? topicType.chooseOption : Number(topicType.endNo) - Number(topicType.startNo) + 1;\r\n\r\n for (let i = 0; i < topicLength; i++) {\r\n let topic = {\r\n alias: Number(topicType.startNo) + i,\r\n answer: \"\",\r\n fullScore: topicType.score,\r\n markQuestionType: 5,\r\n markType: \"0\",\r\n questionNo: Number(topicType.startNo) + i,\r\n topicNo: Number(topicType.startNo) + i,\r\n questionTypeId: data.topicType,\r\n questionTypeText: '',\r\n score: topicType.score,\r\n subject: _this.subject,\r\n smTopic: [],\r\n smQuestion: [],\r\n hasSmQuestion: false,\r\n topicQues:'',\r\n ...selectSupItem\r\n }\r\n if (_this.isZongHe) {\r\n if(data.topicType !== 17){\r\n if (_this.subject == 18) {\r\n topic.subject = 12\r\n } else {\r\n topic.subject = 15\r\n }\r\n }else {\r\n topic.subject = data.subject\r\n }\r\n\r\n }\r\n topic.questionTypeText = _this.getTopicTypeText(data.topicType)\r\n _this.topicList.push(topic);\r\n }\r\n })\r\n\r\n },\r\n addTopicListDataVerification(data) {\r\n let _this = this;\r\n let err = [];\r\n data.topicTypeArr.forEach(obj => {\r\n if (obj.endNo=='') {\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n let startNo = Number(obj.startNo);\r\n let endNo = Number(obj.endNo);\r\n if (startNo < 1) {\r\n obj.startNo = '';\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n let isStartNo = this.topicNoArr.includes(startNo);\r\n if (isStartNo) {\r\n // obj.startNo = '';\r\n _this.errMsg = '题号格式错误'\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n if (endNo < startNo) {\r\n _this.errMsg = '题号格式错误';\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n let isEndNo = this.topicNoArr.includes(endNo);\r\n if (isEndNo) {\r\n obj.endNo = '';\r\n _this.errMsg = '题号格式错误';\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n let topicLength = Number(obj.endNo) - Number(obj.startNo) + 1;\r\n if(data.topicType===17 && topicLength !== obj.chooseOption){\r\n obj.endNo = '';\r\n _this.errMsg = '题号格式错误';\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n\r\n let moduleTopicNo = [];\r\n for (let i = startNo; i < startNo + topicLength; i++) {\r\n moduleTopicNo.push(i)\r\n }\r\n for (let j = 0; j < moduleTopicNo.length; j++) {\r\n _this.topicNoArr.forEach(topicNo => {\r\n if (topicNo == moduleTopicNo[j]) {\r\n obj.startNo = '';\r\n obj.endNo = '';\r\n _this.errMsg = '题号格式错误';\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n })\r\n }\r\n })\r\n // 当前弹窗内题号是否重复\r\n if (data.topicTypeArr.length > 1) {\r\n let theTopicNoAll = []\r\n data.topicTypeArr.forEach(topicConfig => {\r\n let s = Number(topicConfig.startNo);\r\n let e = Number(topicConfig.endNo);\r\n let l = e - s + 1;\r\n for (let i = s; i < s + l; i++) {\r\n theTopicNoAll.push(i)\r\n }\r\n })\r\n if (isRepeat(theTopicNoAll)) {\r\n _this.errMsg = '题号格式错误'\r\n err.push('题号格式错误')\r\n return false\r\n }\r\n\r\n }\r\n if (err.length === 0) {\r\n _this.errMsg = ''\r\n return true\r\n } else {\r\n return false\r\n }\r\n },\r\n getTopicTypeText(type) {\r\n let text = ''\r\n this.topicTypes.forEach(item => {\r\n if (type == item.value) {\r\n text = item.label\r\n }\r\n })\r\n return text\r\n },\r\n cancel() {\r\n this.$emit(\"cancel\", false);\r\n },\r\n saveBigTopicVerification(){\r\n let _this= this;\r\n if(this.topicConfigureData.name=='') {\r\n this.$message.error('大题名称不能为空!')\r\n return false\r\n }\r\n // this.topicList.forEach(topic=>{\r\n //\r\n // })\r\n\r\n if(this.topicConfigureData.topicType==''){\r\n _this.errMsg = '题型没有选择'\r\n return false\r\n }\r\n\r\n if(this.topicList.length==0){\r\n _this.errMsg = '试题数量不能为空'\r\n return false\r\n }\r\n let isScore = false\r\n this.topicList.forEach(t =>{\r\n if(t.fullScore==''||t.fullScore==0){\r\n isScore = true\r\n }\r\n })\r\n if(isScore){\r\n _this.errMsg = '分数设置不正确'\r\n return false\r\n }\r\n\r\n let errType=false\r\n this.topicList.forEach(topic =>{\r\n let smTopicScore = 0;\r\n if([1, 2, 11].includes(topic.questionTypeId)){\r\n\r\n if(Number(topic.optionsCount)<2){\r\n _this.errMsg = '选项设置错误'\r\n errType = true\r\n return false\r\n }\r\n }\r\n if(topic.smQuestion.length>0){\r\n let smQuestionScoreAll = 0\r\n topic.smQuestion.forEach(smQuestion =>{\r\n if(Number(smQuestion.score)<1){\r\n _this.errMsg = '小问分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n smQuestionScoreAll = Number(smQuestionScoreAll)+Number(smQuestion.score)\r\n })\r\n if(Number(topic.fullScore)!==Number(smQuestionScoreAll)){\r\n _this.errMsg = '小问分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n }\r\n if(topic.smTopic.length>0){\r\n topic.smTopic.forEach(smTopic =>{\r\n if(Number(smTopic.fullScore)<1){\r\n _this.errMsg = '小问分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n smTopicScore = smTopicScore + Number(smTopic.fullScore);\r\n if(smTopic.smQuestion.length>0){\r\n let smQuestionScore = 0\r\n smTopic.smQuestion.forEach(smQuestion =>{\r\n if(Number(smQuestion.fullScore)<1){\r\n _this.errMsg = '小问分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n smQuestionScore = smQuestionScore+ Number(smQuestion.score)\r\n })\r\n if(Number(smTopic.fullScore)!==Number(smQuestionScore)){\r\n _this.errMsg = '小问分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n }\r\n })\r\n\r\n if(Number(topic.fullScore)!==Number(smTopicScore)){\r\n _this.errMsg = '小题分数设置错误'\r\n errType = true\r\n return false\r\n }\r\n\r\n }\r\n })\r\n\r\n if(errType){\r\n return false\r\n }\r\n _this.errMsg ='';\r\n return true;\r\n },\r\n save() {\r\n\r\n //大题保存校验\r\n if (!this.saveBigTopicVerification()) {\r\n return false\r\n }\r\n\r\n\r\n let modelId = 0;\r\n if(this.isEdit){\r\n modelId = this.editModelId;\r\n } else {\r\n modelId = 'modelId';\r\n if(Object.keys(this.bigTopicArr).length==0){\r\n let bigTopicArrLength = Object.keys(this.bigTopicArr).length;\r\n modelId = 'modelId'+ ++bigTopicArrLength\r\n }else{\r\n let id=Object.keys(this.bigTopicArr).sort().pop();\r\n modelId='modelId'+(Number(id.replace(/[^0-9]/ig,\"\"))+1);\r\n }\r\n\r\n }\r\n let saveData = this.bigTopicArr;\r\n saveData[modelId] = {\r\n modelId:modelId,\r\n bigTitle: this.topicConfigureData.BigNo + '、' + this.topicConfigureData.name,\r\n subtitle:'',\r\n questionTypeId: this.topicConfigureData.topicType,\r\n topicConfigureData: this.topicConfigureData,\r\n topicList: this.topicList,\r\n questions: []\r\n }\r\n //如果是带小问的题型数据格式化\r\n saveData[modelId].questions = this.formatTopicList();\r\n let theBigTopic = JSON.parse(JSON.stringify(saveData[modelId]))\r\n this.setBigTopicArr(JSON.parse(JSON.stringify(saveData)));\r\n let PaperListData = [];\r\n PaperListData = PaperListData.concat(...Object.values(saveData));\r\n\r\n //选做题,根据配置显示答题区域数量,二选一,四选二\r\n PaperListData.forEach(mod =>{\r\n if(mod.modelId==modelId && mod.questionTypeId===17){\r\n let chooseTopicList = JSON.parse(JSON.stringify(mod.questions));\r\n let showPaperChooseTopic = chooseTopicList[0];\r\n showPaperChooseTopic.contentHtml = chooseTopicList[0].alias + '~' + chooseTopicList[chooseTopicList.length-1].alias+'、';\r\n if(mod.topicConfigureData.topicTypeArr[0].chooseSelectOption>1){\r\n mod.questions = [];\r\n for(let l = 0;l<mod.topicConfigureData.topicTypeArr[0].chooseSelectOption;l++){\r\n let newShowPaperChooseTopic = JSON.parse(JSON.stringify(showPaperChooseTopic));\r\n //ChooseArea为选做题第几个答题区域\r\n newShowPaperChooseTopic.ChooseArea = l+1;\r\n mod.questions.push(newShowPaperChooseTopic)\r\n }\r\n // mod.questions=[showPaperChooseTopic,showPaperChooseTopic]\r\n } else {\r\n showPaperChooseTopic.ChooseArea = 1;\r\n mod.questions=[showPaperChooseTopic]\r\n }\r\n theBigTopic = mod\r\n }\r\n })\r\n\r\n this.setPaperListData(PaperListData);\r\n //统计总分\r\n let fullScore = 0\r\n PaperListData.forEach(bigTopic =>{\r\n bigTopic.questions.forEach(topic =>{\r\n fullScore = fullScore+topic.fullScore\r\n })\r\n })\r\n this.cardSetting.examInfoConfig.forEach(item =>{\r\n if(item.id===1){\r\n item.text =fullScore\r\n }\r\n })\r\n\r\n\r\n //保存选题时,整合翻页数据\r\n // this.setBigTopicPageArr([[...JSON.parse(JSON.stringify(PaperListData))]])\r\n // this.setInitPageFlag(!this.initPageFlag);\r\n if(this.isEdit){\r\n let pIndex = 0;\r\n this.bigTopicPageArr.forEach((page,pageIndex)=>{\r\n page.forEach((bigTopic,bIndex)=>{\r\n if(bigTopic.modelId==modelId){\r\n\r\n if(bigTopic.isLast){\r\n page.splice(bIndex, 1);\r\n }else {\r\n // bigTopic = theBigTopic;\r\n page.fill(theBigTopic, bIndex, bIndex+1);\r\n pIndex = pageIndex;\r\n }\r\n }\r\n })\r\n })\r\n\r\n this.setSomePageReset(pIndex,false,this.bigTopicPageArr)\r\n }else {\r\n let l = this.bigTopicPageArr.length;\r\n this.bigTopicPageArr[l-1].push(theBigTopic);\r\n this.setBigTopicPageArr(this.bigTopicPageArr);\r\n this.$nextTick(()=>{\r\n this.setChangeSomePageIndex({\r\n index:l-1,\r\n isToCurPage:false,//是否回到指定试题\r\n flag:!this.chageSomePageIndex.flag\r\n })//触发分页\r\n })\r\n\r\n }\r\n this.cancel()\r\n },\r\n formatTopicList() {\r\n let questions = [];\r\n\r\n this.topicList.forEach((topic,index) => {\r\n if (this.hasSmQuestionTopic) {\r\n //小题展示的时候即为大题\r\n if (topic.smTopic.length > 0) {\r\n topic.smTopic.forEach(miniTopic => {\r\n let questionItem = {\r\n questionNum: this.setQuestionNum(miniTopic.alias),\r\n questionTypeId: miniTopic.questionTypeId === 77 ? 7 : miniTopic.questionTypeId,\r\n markType: miniTopic.questionTypeId === 77 ? 4 : 0,\r\n fullScore: miniTopic.fullScore,\r\n optionCount: miniTopic.optionsCount,\r\n answer: \"\",\r\n subject: topic.subject,\r\n alias: miniTopic.alias,\r\n scores: \"\",\r\n TopicAreaHeight:200,\r\n contentHtml:miniTopic.alias+'、',\r\n cutId:1,\r\n isShowArticleCn:true,\r\n startPositionNumber:1,\r\n endPositionNumber:this.topicConfigureData.compositionNumber,\r\n };\r\n if (miniTopic.smQuestion.length) {\r\n questionItem.scores = miniTopic.smQuestion.map(item => item.score).join(',')\r\n }\r\n questions.push(questionItem)\r\n })\r\n } else {\r\n let questionItem = {\r\n questionNum: this.setQuestionNum(topic.alias),\r\n questionTypeId: topic.questionTypeId === 77 ? 7 : topic.questionTypeId,\r\n markType: topic.questionTypeId === 77 ? 4 : 0,\r\n fullScore: topic.fullScore,\r\n optionCount: topic.optionsCount,\r\n answer: \"\",\r\n subject: topic.subject,\r\n alias: topic.alias,\r\n scores: \"\",\r\n TopicAreaHeight:200,\r\n contentHtml:topic.alias+'、',\r\n cutId:1,\r\n isShowArticleCn:true,\r\n startPositionNumber:1,\r\n endPositionNumber:this.topicConfigureData.compositionNumber,\r\n };\r\n if(topic.questionTypeId===17){\r\n questionItem.isChooseTopicFirst = index===0 ? true :false;\r\n }\r\n // 如果含有小问 拼接scores\r\n questionItem.scores = topic.smQuestion.map(item => item.score).join(',');\r\n questions.push(questionItem)\r\n\r\n }\r\n } else {\r\n //不含小题和小问的题型\r\n let questionItem = {\r\n questionNum: this.setQuestionNum(topic.alias),\r\n questionTypeId: topic.questionTypeId === 77 ? 7 : topic.questionTypeId,\r\n markType: topic.questionTypeId === 77 ? 4 : 0,\r\n fullScore: topic.fullScore,\r\n optionCount: topic.optionsCount,\r\n answer: \"\",\r\n subject: topic.subject,\r\n alias: topic.alias,\r\n scores: \"\",\r\n TopicAreaHeight:200,\r\n contentHtml:topic.alias+'、',\r\n cutId:1,\r\n isShowArticleCn:true,\r\n startPositionNumber:1,\r\n endPositionNumber:this.topicConfigureData.compositionNumber,\r\n };\r\n if(this.topicConfigureData.topicType === 77 && this.subject===9){\r\n questionItem.TopicAreaHeight=30;\r\n }\r\n if(this.topicConfigureData.topicType === 77 && this.subject===8){\r\n let ArticleEnHtml = ''\r\n // if(this.topicConfigureData.compositionRows)\r\n for(let i=0;i<this.topicConfigureData.compositionRows;i++){\r\n let rowHtml = i===0?'<p class=\"horizontal-line\">'+topic.alias+'、</p>':'<p class=\"horizontal-line\"></p>';\r\n ArticleEnHtml = ArticleEnHtml+rowHtml;\r\n }\r\n ArticleEnHtml += '<p></p>';\r\n questionItem.contentHtml = ArticleEnHtml;\r\n\r\n }\r\n if(this.topicConfigureData.topicType === 2 ||this.topicConfigureData.topicType === 11){\r\n questionItem.halfScore = topic.halfScore\r\n }\r\n questions.push(questionItem)\r\n }\r\n\r\n\r\n })\r\n return questions\r\n },\r\n setSomePageReset(pageIndex,flag,bigTopicPageArr){\r\n // 当前拖动页及后续页面数据重组\r\n let baseArr = JSON.parse(JSON.stringify(bigTopicPageArr)).splice(0,pageIndex)\r\n let resetArr = resetPage(JSON.parse(JSON.stringify(bigTopicPageArr)).splice(pageIndex),false,true);\r\n\r\n baseArr.push(resetArr)\r\n\r\n\r\n //删除最后一页最后一题时,删掉空白纸张\r\n if(pageIndex == baseArr.length-1 && baseArr[pageIndex].length == 1){\r\n if(!baseArr[pageIndex][0].questions || baseArr[pageIndex][0].questions.length == 0){\r\n baseArr.pop();\r\n this.setBigTopicPageArr(baseArr);\r\n return;\r\n }\r\n }\r\n\r\n this.setBigTopicPageArr(baseArr);\r\n this.$nextTick(()=>{\r\n this.setChangeSomePageIndex({\r\n index:pageIndex,\r\n isToCurPage:true,//是否回到指定试题\r\n flag:!this.chageSomePageIndex.flag\r\n })//触发分页\r\n })\r\n\r\n // this.setChangeSomePageIndex({\r\n // index:this.pageIndex,\r\n // flag:!this.chageSomePageIndex.flag\r\n // })\r\n },\r\n questionsChangeEdit(data) {\r\n // 试题题分数控制手写打分框\r\n //获取所有小题分数\r\n let topicArrScore = [];\r\n data.forEach(topic => {\r\n topicArrScore.push(topic.fullScore);\r\n\r\n if (this.isMoreSelectType){\r\n //半对分判断\r\n if(topic.halfScore>Number(topic.fullScore)-0.5){\r\n if(Number(topic.fullScore)>0){\r\n topic.halfScore = (topic.fullScore)-0.5\r\n }else {\r\n topic.halfScore = ''\r\n topic.fullScore = ''\r\n }\r\n\r\n }\r\n }\r\n })\r\n\r\n if (this.topicConfigureData.topicType === 5) {\r\n //填空题打分框禁用\r\n this.scoreOpt.forEach(opt => {\r\n let isOk = true;\r\n //空白打分框保留\r\n if(opt.value>1){\r\n for (let i = 0; i < topicArrScore.length; i++) {\r\n if (opt.label.indexOf(topicArrScore[i]) == -1) {\r\n isOk = false\r\n }\r\n if (opt.label == '') {\r\n isOk = true\r\n }\r\n }\r\n\r\n }\r\n\r\n if (isOk) {\r\n opt.disabled = false\r\n } else {\r\n opt.disabled = true\r\n }\r\n })\r\n //不是刚进编辑时\r\n if(this.isRunWatch){\r\n //默认选项\r\n for (let i =0;i<this.scoreOpt.length;i++){\r\n if (!this.scoreOpt[i].disabled) {\r\n this.topicConfigureData.scoreStyle = this.scoreOpt[i].value;\r\n break;\r\n }\r\n }\r\n if (this.topicConfigureData.scoreStyle != '') {\r\n this.scoreOpt.forEach(opt => {\r\n if (opt.value === this.topicConfigureData.scoreStyle) {\r\n if (opt.disabled) {\r\n this.topicConfigureData.scoreStyle = ''\r\n }\r\n }\r\n })\r\n }\r\n }\r\n } else if (this.isAnswer) {\r\n //解答题手写打分上限\r\n let maxValue = Math.max.apply(Math, topicArrScore);\r\n this.scoreMaxOptions.forEach(opt => {\r\n if (opt.value < maxValue) {\r\n opt.disabled = true\r\n } else {\r\n opt.disabled = false\r\n }\r\n if (this.topicConfigureData.topicType == '77') {\r\n if (opt.value === 16 || opt.value === 49) {\r\n opt.disabled = true\r\n }\r\n } else {\r\n if (opt.value === 69) {\r\n opt.disabled = true\r\n }\r\n }\r\n })\r\n //默认上限\r\n let opts = [];\r\n this.scoreMaxOptions.forEach(opt => {\r\n if (opt.value > maxValue || opt.value == maxValue) {\r\n opts.push(opt)\r\n }\r\n })\r\n //不是刚进编辑时\r\n if(this.isRunWatch) {\r\n this.topicConfigureData.scoreLimit = opts[0].value\r\n }\r\n\r\n if(!this.isRunWatch){\r\n this.isRunWatch = true\r\n }\r\n\r\n }\r\n\r\n\r\n },\r\n //数量校验\r\n checkNumber(data,type){\r\n let reg=/^([1-9]\\d*|[0]{1,1})$/;\r\n if(reg.test(data[type])){\r\n this.$nextTick(() => {\r\n let newVal = Math.min(data[type], 200);\r\n data[type]=newVal;\r\n });\r\n }else{\r\n data[type]=\"\";\r\n }\r\n },\r\n //选项校验\r\n checkOptNumber(data,type){\r\n let val = data[type].replace(/[^0-9 .]/g,'');\r\n val = Math.round(val)\r\n if(val>7){\r\n val = 7\r\n }else if(val<2){\r\n val = 2\r\n }\r\n data[type] = val;\r\n },\r\n //0.5分判断\r\n checkScore(data){\r\n let val = data.score.replace(/[^0-9 .]/g,'');\r\n data.score = Math.round(val/0.5)*0.5||'';\r\n },\r\n //半对分判断\r\n checkHalfScore(data){\r\n let val = data.halfScore.replace(/[^0-9 .]/g,'');\r\n val = Math.round(val/0.5)*0.5;\r\n if(val>data.score-0.5){\r\n data.halfScore = data.score-0.5\r\n }else {\r\n data.halfScore = val\r\n }\r\n\r\n },\r\n //综合科目选做题科目修改\r\n ChooseChangeSubject(val){\r\n this.topicConfigureData.subject = val;\r\n this.addTopicList(this.topicConfigureData);\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.add-topic {\r\n .topic-edit-item {\r\n margin-right: 10px;\r\n .disabled{\r\n color: #eee;\r\n cursor: not-allowed !important;\r\n }\r\n\r\n label {\r\n margin-right: 5px;\r\n }\r\n\r\n .select-big_topic-number {\r\n width: 120px;\r\n }\r\n\r\n .input-big_topic-name {\r\n width: 200px;\r\n }\r\n\r\n .input-min_topic-number {\r\n margin: 0 5px;\r\n width: 60px;\r\n }\r\n }\r\n\r\n .topic-type {\r\n margin-top: 10px;\r\n\r\n .select-topic-topicType {\r\n width: 120px;\r\n margin-left: 14px;\r\n }\r\n\r\n .select-choose_topic {\r\n width: 60px;\r\n }\r\n\r\n .btn-add-topic-type, .btn-del-topic-type {\r\n font-size: 28px;\r\n vertical-align: middle;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .topic-list {\r\n margin-top: 20px;\r\n margin-bottom: 20px;\r\n min-height: 200px;\r\n max-height: 340px;\r\n overflow: auto;\r\n border: 1px solid #ddd;\r\n\r\n .topic-list-item {\r\n padding: 10px 20px;\r\n border-bottom: 1px dashed #ccc;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n }\r\n }\r\n\r\n .topic-card-setting {\r\n padding-bottom: 20px;\r\n }\r\n\r\n .btn-box {\r\n padding-top: 30px;\r\n border-top: 1px solid #ddd;\r\n text-align: center;\r\n\r\n .btn {\r\n margin: 0 10px;\r\n width: 80px;\r\n height: 40px;\r\n line-height: 40px;\r\n border-radius: 4px;\r\n text-align: center;\r\n font-size: 16px;\r\n color: #fff;\r\n background: #97b1c7;\r\n }\r\n\r\n .btn-topic-edit-save {\r\n background: #85b3e7;\r\n }\r\n }\r\n}\r\n\r\n.color-red {\r\n color: red;\r\n}\r\n.msg{\r\n line-height: 200px;\r\n text-align: center;\r\n color: #ccc;\r\n font-size: 16px;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"min-topic-box\">\r\n <div class=\"min-topic\">\r\n <div class=\"left\">\r\n <span class=\"number\">{{minTopicData.alias}}</span>\r\n <span class=\"btn-add-min-topic\" v-if=\"!isSelectType && minTopicData.questionTypeId!==77&&minTopicData.questionTypeId!==17\" @click=\"addMiniTopic\" >\r\n <i>+</i>添加小题\r\n </span>\r\n </div>\r\n <div class=\"con\">{{minTopicData.questionTypeText}}</div>\r\n <div class=\"right\" v-if=\"isSelectType\">\r\n <SubjectSelect v-if=\"this.isZongHe&&minTopicData.questionTypeId!==17\" :subject-id=\"minTopicData.subject\" @subjectChange=\"ChangeSubject\"></SubjectSelect>\r\n <span>\r\n 选项数\r\n <el-input v-model=\"minTopicData.optionsCount\" @change=\"checkOptNumber(minTopicData,'optionsCount')\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </span>\r\n <span>\r\n 分数\r\n <el-input v-model=\"minTopicData.fullScore\" @change=\"checkScore(minTopicData,'fullScore')\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </span>\r\n <span v-if=\"isMoreSelectType\">\r\n 半分\r\n <el-input v-model=\"minTopicData.halfScore\" @change=\"checkHalfScore(minTopicData,'halfScore',minTopicData.fullScore)\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </span>\r\n\r\n\r\n </div>\r\n <div class=\"right\" v-if=\"hasSmQuestionTopic\">\r\n <SubjectSelect v-if=\"this.isZongHe&&minTopicData.questionTypeId!==17\" :subject-id=\"minTopicData.subject\" @subjectChange=\"ChangeSubject\"></SubjectSelect>\r\n <div class=\"min-question-box\" v-if=\"minTopicData.questionTypeId!==17&&minTopicData.smTopic.length==0\">\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"小问不需要单独设置模板区域但是每小问需批阅判分\" placement=\"top\" >\r\n <i class=\"el-icon-warning-outline\"></i>\r\n </el-tooltip>\r\n <el-switch\r\n size=\"mini\"\r\n class=\"switch-is_question\"\r\n v-model=\"minTopicData.hasSmQuestion\"\r\n active-color=\"#409EFF\"\r\n inactive-color=\"#bbb\"\r\n active-text=\"含小问\"\r\n @change=\"changeTopicQues(minTopicData,minTopicData.hasSmQuestion)\">\r\n </el-switch>\r\n <el-input v-model=\"minTopicData.topicQues\" :disabled=\"!minTopicData.hasSmQuestion\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\" @change=\"addQuestion(minTopicData)\" ></el-input>\r\n </div>\r\n 分数\r\n <el-input v-model=\"minTopicData.fullScore\" @change=\"checkScore(minTopicData,'fullScore')\" :disabled=\"minTopicData.questionTypeId==17\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </div>\r\n <div class=\"right\" v-if=\"minTopicData.questionTypeId==77\">\r\n 分数\r\n <el-input v-model=\"minTopicData.fullScore\" @change=\"checkScore(minTopicData,'fullScore')\" :disabled=\"true\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </div>\r\n </div>\r\n <div class=\"min-question\">\r\n <div class=\"min-question-item\" v-for=\"minQuestion in minTopicData.smQuestion\" :key=\"minQuestion.alias\">\r\n <div class=\"left\">\r\n <span class=\"number\">{{minQuestion.alias}}</span>\r\n </div>\r\n <div class=\"right\">\r\n 分数\r\n <el-input v-model=\"minQuestion.score\" size=\"mini\" class=\"input-min_topic-number\" @change=\"checkScore(minQuestion,'score');allAsk(minTopicData)\" placeholder=\"\"></el-input>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mini-topic\">\r\n <div class=\"mini-topic-item\" v-for=\"miniTopic in minTopicData.smTopic\" :key=\"miniTopic.topicEditorIndex\">\r\n <div class=\"mini-topic-title\">\r\n <div class=\"left\">\r\n <i class=\"el-icon-remove-outline btn-del-mini-topic\" @click=\"delMiniTopic(miniTopic)\"></i>\r\n <span class=\"number\">{{miniTopic.alias}}</span>\r\n </div>\r\n <div class=\"con\">{{topicTypeName(miniTopic.questionTypeId)}}</div>\r\n <div class=\"right\">\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"小问不需要单独设置模板区域但是每小问需批阅判分\" placement=\"top\">\r\n <i class=\"el-icon-warning-outline\"></i>\r\n </el-tooltip>\r\n <el-switch\r\n size=\"mini\"\r\n class=\"switch-is_question\"\r\n v-model=\"miniTopic.hasSmQuestion\"\r\n active-color=\"#409EFF\"\r\n inactive-color=\"#bbb\"\r\n active-text=\"含小问\"\r\n @change=\"changeTopicQues(miniTopic,miniTopic.hasSmQuestion)\"\r\n >\r\n </el-switch>\r\n <el-input v-model=\"miniTopic.topicQues\" :disabled=\"!miniTopic.hasSmQuestion\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\" @change=\"addQuestion(miniTopic)\"></el-input>\r\n 分数\r\n <el-input v-model=\"miniTopic.fullScore\" @change=\"checkScore(miniTopic,'fullScore')\" @blur=\"allScore()\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </div>\r\n </div>\r\n <div class=\"mini-question\">\r\n <div class=\"mini-question-item\" v-for=\"miniQuestion in miniTopic.smQuestion\" :key=\"miniQuestion.alias\">\r\n <div class=\"left\">\r\n <span class=\"number\">{{miniQuestion.alias}}</span>\r\n </div>\r\n <div class=\"right\">\r\n 分数\r\n <el-input v-model=\"miniQuestion.score\" @change=\"checkScore(miniQuestion,'score')\" @blur=\"allAsk(miniTopic)\" size=\"mini\" class=\"input-min_topic-number\" placeholder=\"\"></el-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</template>\r\n\r\n<script>\r\nimport {mapGetters} from \"vuex\";\r\n\r\nimport SubjectSelect from \"../common/SubjectSelect\";\r\n\r\nexport default {\r\nname: \"MinTopicEditItem\",\r\ncomponents:{\r\n SubjectSelect\r\n},\r\nfilters:{\r\n\r\n},\r\nprops:{\r\n minTopicData:Object,\r\n idx:Number\r\n},\r\ndata(){\r\n return {\r\n // minTopicData:{\r\n // isQuestion:false,\r\n // topicQues:'',\r\n // score:'',\r\n // }\r\n }\r\n},\r\ncomputed:{\r\n ...mapGetters('answerSheet',['topicTypeObj','subject']),\r\n isSelectType() {\r\n return [1, 2, 11].includes(this.minTopicData.questionTypeId)\r\n },\r\n //多选,不定项选择和多选题\r\n isMoreSelectType() {\r\n return [2, 11].includes(this.minTopicData.questionTypeId)\r\n },\r\n //带小问小题的题型\r\n hasSmQuestionTopic(){\r\n return [7,17,5].includes(this.minTopicData.questionTypeId)\r\n },\r\n//综合科目,文综理综\r\n isZongHe() {\r\n return [18, 19].includes(this.subject)\r\n },\r\n},\r\nwatch:{},\r\ncreated(){\r\n if(this.minTopicData.smTopic&&this.minTopicData.smTopic.length>0){\r\n this.allScore();\r\n }\r\n},\r\nmounted(){\r\n\r\n},\r\nmethods:{\r\n //添加小题\r\n addMiniTopic(){\r\n if(this.minTopicData.smQuestion.length){\r\n this.$message({\r\n message: '不能同时拥有小题和小问',\r\n type: 'warning'\r\n });\r\n }\r\n this.minTopicData.smQuestion=[];\r\n let miniTopic = {\r\n alias: this.minTopicData.topicNo+'.'+(this.minTopicData.smTopic.length+1),\r\n hasSmQuestion: false,\r\n score: \"\",\r\n fullScore:'',\r\n smQuestion: [],\r\n topicQues:'',\r\n topicEditorIndex: this.minTopicData.topicNo+'_'+(this.minTopicData.smTopic.length+1),\r\n questionTypeId: this.minTopicData.questionTypeId\r\n }\r\n this.minTopicData.fullScore='';\r\n this.minTopicData.smTopic.push(miniTopic)\r\n },\r\n //添加小问\r\n addQuestion(obj){\r\n let val = obj.topicQues.replace(/[^0-9 .]/g,'');\r\n obj.topicQues = Math.round(val);\r\n obj.smQuestion = [];\r\n for (let i=0;i<obj.topicQues;i++){\r\n let question = {\r\n alias: obj.alias+'('+(obj.smQuestion.length+1)+')',\r\n score: \"\",\r\n }\r\n obj.smQuestion.push(question)\r\n }\r\n\r\n },\r\n topicTypeName(type) {\r\n return this.topicTypeObj[type];\r\n },\r\n //数量校验\r\n checkNumber(data,type){\r\n let val = data[type].replace(/[^0-9 .]/g,'');\r\n data[type] = Math.round(val);\r\n },\r\n //小题分数累加\r\n allScore(){\r\n let fullScore = 0;\r\n this.minTopicData.smTopic.forEach(minTopic=>{\r\n fullScore = fullScore+ Number(minTopic.fullScore)\r\n })\r\n this.minTopicData.fullScore=fullScore;\r\n },\r\n //小问分数累加\r\n allAsk(data){\r\n let fullScore = 0\r\n data.smQuestion.forEach(minTopic=>{\r\n fullScore = fullScore+ Number(minTopic.score)\r\n })\r\n data.fullScore=fullScore;\r\n if(this.minTopicData.smTopic.length>0){\r\n this.allScore();\r\n }\r\n\r\n },\r\n //选项校验\r\n checkOptNumber(data,type){\r\n let val = data[type].replace(/[^0-9 .]/g,'');\r\n val = Math.round(val)\r\n if(val>7){\r\n val = 7\r\n }else if(val<2){\r\n val = 2\r\n }\r\n data[type] = val;\r\n },\r\n //0.5分判断\r\n checkScore(data,type){\r\n let val = data[type].replace(/[^0-9 .]/g,'');\r\n data[type] = Math.round(val/0.5)*0.5||'';\r\n },\r\n //半对分判断\r\n checkHalfScore(data,type,score){\r\n let val = data[type].replace(/[^0-9 .]/g,'');\r\n val = Math.round(val/0.5)*0.5;\r\n if(val>score-0.5){\r\n data[type] = score-0.5\r\n }else {\r\n data[type] = val\r\n }\r\n },\r\n ChangeSubject(val){\r\n this.minTopicData.subject = val\r\n },\r\n changeTopicQues(data,type){\r\n if(type===false){\r\n data.topicQues='';\r\n data.smQuestion = [];\r\n }else {\r\n if(data.topicQues==''||data.topicQues==undefined){\r\n data.topicQues='2';\r\n this.addQuestion(data);\r\n }\r\n }\r\n },\r\n delMiniTopic(miniTopic){\r\n let delIndex = this.minTopicData.smTopic.findIndex(val=>val.alias == miniTopic.alias);\r\n this.minTopicData.smTopic.splice(delIndex,1);\r\n }\r\n\r\n}\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n@import (reference) \"../../../assets/styles/variable.less\";\r\n.min-topic-box{\r\n .input-min_topic-number{\r\n width: 60px;\r\n }\r\n}\r\n.min-topic{\r\n overflow: hidden;\r\n line-height: 28px;\r\n //display: flex;\r\n //align-items: center;\r\n //justify-content: space-between;\r\n //flex-wrap: wrap;\r\n .left{\r\n float: left;\r\n width: 120px;\r\n .number{\r\n display: inline-block;\r\n width: 30px;\r\n }\r\n .btn-add-min-topic{\r\n cursor: pointer;\r\n color: @Highlight;\r\n i{\r\n font-style: normal;\r\n }\r\n }\r\n }\r\n .con{\r\n float: left;\r\n margin-left: 100px;\r\n color:#ccc;\r\n\r\n }\r\n .right{\r\n float: right;\r\n .switch-is_question{\r\n margin-left: 5px;\r\n width: 100px;\r\n }\r\n\r\n }\r\n}\r\n.min-question-box{\r\n display: inline-block;\r\n}\r\n.min-question{\r\n padding-left: 30px;\r\n .min-question-item{\r\n padding: 20px 0;\r\n .left{\r\n float: left;\r\n }\r\n .right{\r\n float: right;\r\n }\r\n }\r\n\r\n}\r\n.mini-topic{\r\n .mini-topic-title{\r\n overflow: hidden;\r\n }\r\n .mini-question-item{\r\n padding: 10px 0;\r\n overflow: hidden;\r\n }\r\n}\r\n.mini-topic-item{\r\n padding: 10px 0;\r\n line-height: 28px;\r\n overflow: hidden;\r\n .left{\r\n float: left;\r\n width: 120px;\r\n .btn-del-mini-topic{\r\n margin-right: 5px;\r\n cursor: pointer;\r\n }\r\n .number{\r\n\r\n }\r\n .btn-add-min-topic{\r\n color: @Highlight;\r\n i{\r\n font-style: normal;\r\n }\r\n }\r\n }\r\n .con{\r\n float: left;\r\n margin-left: 100px;\r\n color:#ccc;\r\n }\r\n .right{\r\n float: right;\r\n .switch-is_question{\r\n margin-left: 5px;\r\n width: 100px;\r\n }\r\n\r\n }\r\n}\r\n</style>\r\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { ref: \"ueCard\", staticClass: \"ue ue-card\" }, [\n _c(\"script\", { attrs: { id: _vm.randomId, type: \"text/plain\" } })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"answer_sheet\",\n style: \"height:\" + _vm.answerSheetHeight + \"px\"\n },\n [\n _c(\n \"div\",\n { ref: \"box\", staticClass: \"card_edit-wrap\" },\n _vm._l(_vm.bigTopicPageArr, function(val, index) {\n return _c(\"paper\", {\n key: index,\n class: \"pageindex-\" + index,\n attrs: {\n content: val,\n totalPageNum: _vm.bigTopicPageArr.length,\n pageIndex: index\n },\n on: { showEditBigTopic: _vm.showEditBigTopic, ueBlur: _vm.ueBlur }\n })\n }),\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"card_setting-wrap\" },\n [\n _c(\"setting\", {\n on: {\n showAddBigTopic: _vm.showAddBigTopic,\n restAnswerSheet: _vm.restAnswerSheet\n }\n }),\n !_vm.cardSetting.allowEdit\n ? _c(\"div\", { staticClass: \"set-disable\" })\n : _vm._e()\n ],\n 1\n ),\n _c(\n \"button\",\n { staticClass: \"btn btn-go-back\", on: { click: _vm.goBack } },\n [_vm._v(\"返回\")]\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.dialogVisibleIsAddTopic,\n width: \"915px\",\n \"before-close\": _vm.handleCloseAddTopic,\n \"close-on-click-modal\": false\n },\n on: {\n \"update:visible\": function($event) {\n _vm.dialogVisibleIsAddTopic = $event\n },\n open: _vm.showBigTopicDialog\n }\n },\n [\n _c(\"AddTopic\", {\n ref: \"AddTopic\",\n attrs: { \"is-edit\": _vm.isEdit, \"edit-model-id\": _vm.editNo },\n on: {\n cancel: function($event) {\n _vm.dialogVisibleIsAddTopic = false\n }\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"subjectSelect\" },\n [\n _c(\n \"el-tooltip\",\n {\n staticClass: \"item\",\n attrs: { effect: \"dark\", content: this.tipsText, placement: \"top\" }\n },\n [_c(\"i\", { staticClass: \"el-icon-warning-outline\" })]\n ),\n _c(\n \"el-select\",\n {\n staticClass: \"select-subject\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n on: { change: _vm.subjectChange },\n model: {\n value: _vm.isSubject,\n callback: function($$v) {\n _vm.isSubject = $$v\n },\n expression: \"isSubject\"\n }\n },\n _vm._l(_vm.options, function(item) {\n return _c(\"el-option\", {\n key: item.id,\n attrs: { label: item.label, value: item.id }\n })\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"paper-item paper-item-js\",\n style: {\n width: _vm.calcPaperSize.width + \"mm\",\n height: _vm.calcPaperSize.height + \"mm\"\n }\n },\n [\n _vm.cardSetting.hasBindingLine && _vm.pageIndex == 0\n ? _c(\"paper-line\", {\n attrs: { PaperLineFlag: _vm.cardSetting.hasBindingLine }\n })\n : _vm._e(),\n _c(\n \"paper-content\",\n _vm._g(\n _vm._b(\n {\n attrs: {\n PaperLineFlag: _vm.cardSetting.hasBindingLine,\n content: _vm.content,\n paperColumn: _vm.cardSetting.column,\n pageIndex: _vm.pageIndex\n }\n },\n \"paper-content\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n ),\n _c(\"div\", { staticClass: \"page-num-cur\" }, [\n _vm._v(\n \"第\" +\n _vm._s(_vm.pageIndex + 1) +\n \"页 共\" +\n _vm._s(_vm.totalPageNum) +\n \"页\"\n )\n ]),\n _c(\"div\", { staticClass: \"page-direction\" }, [\n _vm._v(\n \"第\" +\n _vm._s(\n Math.ceil((_vm.pageIndex + 1) / (_vm.cardSetting.column * 2))\n ) +\n \"张纸\" +\n _vm._s(\n Math.ceil((_vm.pageIndex + 1) / _vm.cardSetting.column) % 2 == 1\n ? \"正面\"\n : \"反面\"\n ) +\n \" \" +\n _vm._s(Math.ceil((_vm.pageIndex % _vm.cardSetting.column) + 1))\n )\n ]),\n _c(\"span\", {\n class: [\n \"main-dot\",\n {\n \"unique-code\": _vm.pageIndex == 0,\n \"unique-code-50\":\n _vm.cardSetting.hasBindingLine && _vm.pageIndex == 0\n }\n ],\n attrs: { \"data-option\": \"bl\" }\n }),\n !_vm.cardSetting.allowEdit\n ? _c(\"div\", { staticClass: \"set-disable\" })\n : _vm._e(),\n _vm.content.length == 0 && _vm.totalPageNum == 1\n ? _c(\"div\", { staticClass: \"add-topic-tips\" }, [_vm._v(\" 请添加试题 \")])\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"paper-content\",\n {\n \"line-left\": _vm.PaperLineFlag && _vm.pageIndex == 0,\n \"line-right\":\n _vm.PaperLineFlag && _vm.pageIndex == _vm.paperColumn * 2 - 1\n }\n ]\n },\n [\n _vm.pageIndex == 0 ? _c(\"paper-info\") : _vm._e(),\n _c(\n \"paper-topic\",\n _vm._g(\n _vm._b(\n { attrs: { pageIndex: _vm.pageIndex } },\n \"paper-topic\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"paper-line\",\n {\n \"line-left\": _vm.PaperLineFlag === 1,\n \"line-right\": _vm.PaperLineFlag === 2\n }\n ]\n },\n [\n _vm.PaperLineFlag === 1\n ? _c(\"div\", { staticClass: \"examinee-info\" }, [\n !_vm.cardSetting.examinationNumberType.includes(1) &&\n _vm.cardSetting.examinationNumberType.includes(2)\n ? _c(\"div\", { staticClass: \"item\" }, [\n _c(\"span\", { staticClass: \"red bineLineClassName\" }),\n _vm._m(0)\n ])\n : _vm._e(),\n _c(\"div\", { staticClass: \"item\" }, [\n _c(\n \"span\",\n { staticClass: \"red bindLineExamineeName\" },\n [\n _vm.cardSetting.useQrCode\n ? _vm._l(\"系统自动生成姓名信息\", function(val) {\n return _c(\"b\", { key: val }, [_vm._v(_vm._s(val))])\n })\n : _vm._e()\n ],\n 2\n ),\n _vm._m(1)\n ]),\n _c(\"div\", { staticClass: \"item\" }, [\n _c(\n \"span\",\n { staticClass: \"red bineLineClassName\" },\n [\n _vm.cardSetting.useQrCode\n ? _vm._l(\"系统自动生成班级信息\", function(val) {\n return _c(\"b\", { key: val }, [_vm._v(_vm._s(val))])\n })\n : _vm._e()\n ],\n 2\n ),\n _vm._m(2)\n ])\n ])\n : _vm._e(),\n _vm._m(3)\n ]\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"em\", [\n _c(\"i\", [_vm._v(\":\")]),\n _c(\"i\", [_vm._v(\"号\")]),\n _c(\"i\", [_vm._v(\"考\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"em\", [\n _c(\"i\", [_vm._v(\":\")]),\n _c(\"i\", [_vm._v(\"名\")]),\n _c(\"i\", [_vm._v(\"姓\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"em\", [\n _c(\"i\", [_vm._v(\":\")]),\n _c(\"i\", [_vm._v(\"级\")]),\n _c(\"i\", [_vm._v(\"班\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"line\" }, [\n _c(\"span\", [_vm._v(\"线\")]),\n _c(\"span\", [_vm._v(\"订\")]),\n _c(\"span\", [_vm._v(\"装\")])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"paper-grade clearfix\" }, [\n _c(\"div\", { staticClass: \"item\" }, [\n _c(\"em\", [_vm._v(\"班级:\")]),\n _c(\"span\", { staticClass: \"red className\" }, [\n _vm._v(_vm._s(_vm.cardSetting.useQrCode ? \"系统自动生成班级信息\" : \"\"))\n ])\n ]),\n _c(\"div\", { staticClass: \"item\" }, [\n _c(\"em\", [_vm._v(\"姓名:\")]),\n _c(\"span\", { staticClass: \"red examineeName\" }, [\n _vm._v(_vm._s(_vm.cardSetting.useQrCode ? \"系统自动生成姓名信息\" : \"\"))\n ])\n ]),\n !_vm.cardSetting.examinationNumberType.includes(1) &&\n _vm.cardSetting.examinationNumberType.includes(2)\n ? _c(\"div\", { staticClass: \"item\" }, [\n _c(\"em\", [_vm._v(\"考号:\")]),\n _c(\"span\", { staticClass: \"red examineeName\" })\n ])\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"paper-info-index\" },\n [\n _c(\"PaperTitle\"),\n _vm.cardSetting.hasBindingLine == 0 ? _c(\"GradeAndName\") : _vm._e(),\n _vm.cardSetting.hasPaperMsg ? _c(\"PaperInfo\") : _vm._e(),\n _c(\"PaperAttention\"),\n _c(\"PaperCard\")\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"paper-attention\" }, [\n _c(\n \"div\",\n {\n class: [\n \"notice-info\",\n \"page-width-\" + (_vm.calcPaperSize.width > 165 ? \"default\" : \"small\")\n ]\n },\n [\n _c(\"i\", { staticClass: \"simple-border right\" }),\n _c(\"i\", { staticClass: \"simple-border\" }),\n _c(\"div\", { staticClass: \"tips-info\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"notice-detail\" },\n [\n _vm.isShowAttention(0)\n ? _c(\"p\", [\n _vm._v(\n \"1、考生务必正确书写班级、姓名,请填涂系统准考证号。\"\n )\n ])\n : _vm._e(),\n _vm.isShowAttention(1)\n ? _c(\"p\", [\n _vm._v(\n \"1、考生务必正确书写班级、姓名,请填涂学校准考证号。\"\n )\n ])\n : _vm._e(),\n _vm._l(_vm.attentionList, function(val, index) {\n return _c(\"p\", { key: index }, [\n _vm._v(\n _vm._s(_vm.cardSetting.useQrCode ? index + 1 : index + 2) +\n \"、\" +\n _vm._s(val)\n )\n ])\n })\n ],\n 2\n )\n ]),\n _c(\"div\", { staticClass: \"warming-info\" }, [\n _c(\"div\", { staticClass: \"notice-ewm\" }, [\n _vm.cardSetting.useQrCode\n ? _c(\"i\", { staticClass: \"cover red\" }, [\n _vm._v(\"系统生成\"),\n _c(\"br\"),\n _vm._v(\"考生二维码\")\n ])\n : _vm._e(),\n !_vm.cardSetting.useQrCode\n ? _c(\"img\", {\n staticClass: \"dtk-ewm\",\n attrs: {\n id: \"dtk-ewm\",\n src: require(\"../../../../assets/images/code.png\")\n }\n })\n : _vm._e()\n ]),\n _vm._m(1)\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"h3\", { staticClass: \"notice-title\" }, [\n _c(\"i\", [_vm._v(\"注\")]),\n _c(\"i\", [_vm._v(\"意\")]),\n _c(\"i\", [_vm._v(\"事\")]),\n _c(\"i\", [_vm._v(\"项\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"noticeLose\" }, [\n _c(\"h4\", [_vm._v(\"缺考标记 \"), _c(\"i\", { staticClass: \"absent-mark\" })]),\n _c(\"p\", [_vm._v(\"考生禁止填涂缺考标记!\")]),\n _c(\"p\", [_vm._v(\"只能由监考老师负责填涂。\")])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"paper-card\" }, [\n _vm.cardSetting.examinationNumberType.includes(1)\n ? _c(\"div\", { staticClass: \"exam-id card-flex\" }, [\n _c(\n \"div\",\n { staticClass: \"card-id clearfix\" },\n _vm._l(Number(_vm.cardSetting.cardLength), function(count) {\n return _c(\"div\", { key: \"id_\" + count, staticClass: \"fl\" }, [\n _c(\"span\", { staticClass: \"square\" }),\n _c(\n \"ul\",\n _vm._l(10, function(num) {\n return _c(\n \"li\",\n {\n key: num,\n class: { \"unique-li\": num == 1 && count == 1 }\n },\n [\n _c(\"span\", {\n class: [\"iconfont\", \"iconnum_\" + (num - 1)]\n })\n ]\n )\n }),\n 0\n )\n ])\n }),\n 0\n ),\n _vm.cardSetting.examinationNumberType.includes(2) &&\n ([1, 2].includes(this.cardSetting.paperSize) ||\n (_vm.cardSetting.cardLength < 13 &&\n [3, 4, 5].includes(_vm.cardSetting.paperSize)))\n ? _c(\"div\", { staticClass: \"card-code clearfix\" }, [_vm._m(0)])\n : _vm._e()\n ])\n : _vm._e(),\n !_vm.cardSetting.examinationNumberType.includes(1) &&\n _vm.cardSetting.examinationNumberType.includes(2)\n ? _c(\"div\", { staticClass: \"exam-code card-flex\" }, [_vm._m(1)])\n : _vm._e()\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"code-img fr\" }, [\n _c(\"div\", { staticClass: \"code-words\" }, [\n _c(\"i\", [_vm._v(\"条\")]),\n _c(\"i\", [_vm._v(\"形\")]),\n _c(\"i\", [_vm._v(\"码\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"card-code clearfix\" }, [\n _c(\"div\", { staticClass: \"code-img fl\" }, [\n _c(\"div\", { staticClass: \"code-words cross-code\" }, [\n _c(\"i\", [_vm._v(\"条\")]),\n _c(\"i\", [_vm._v(\"形\")]),\n _c(\"i\", [_vm._v(\"码\")])\n ])\n ])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"paper-info clearfix\" },\n [\n _vm._l(_vm.infoList, function(info) {\n return _c(\"span\", { key: info.id }, [\n _vm._v(_vm._s(info.name) + \":\"),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: info.text,\n expression: \"info.text\"\n }\n ],\n staticClass: \"input-paper-info\",\n class: { number: info.id < 2 },\n attrs: { readonly: info.id === 1, maxlength: \"9\" },\n domProps: { value: info.text },\n on: {\n change: _vm.setInfoList,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(info, \"text\", $event.target.value)\n }\n }\n }),\n _vm._v(_vm._s(info.units))\n ])\n }),\n _c(\"div\", {\n staticClass: \"btn-paper-info iconfont iconedit\",\n on: { click: _vm.editInfo }\n }),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.paperInfoDialog,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"show-close\": false,\n width: \"400px\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.paperInfoDialog = $event\n }\n }\n },\n [\n _vm._l(_vm.cardSettingTemp.examInfoConfig, function(item, key) {\n return _c(\n \"el-checkbox\",\n {\n key: key,\n attrs: { size: \"small\", label: item.id },\n model: {\n value: item.isShow,\n callback: function($$v) {\n _vm.$set(item, \"isShow\", $$v)\n },\n expression: \"item.isShow\"\n }\n },\n [_vm._v(_vm._s(item.name))]\n )\n }),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.confirm } },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancel } }, [_vm._v(\"取 消\")])\n ],\n 1\n )\n ],\n 2\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"paper-title\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.cardSetting.title,\n expression: \"cardSetting.title\"\n }\n ],\n attrs: { name: \"name\" },\n domProps: { value: _vm.cardSetting.title },\n on: {\n change: _vm.setTitle,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.cardSetting, \"title\", $event.target.value)\n }\n }\n })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"article-chinese\",\n style: { padding: _vm.rectPadding / 2 + \"px\" }\n },\n [\n _c(\n \"svg\",\n {\n staticClass: \"article-svg\",\n style: {\n height:\n (_vm.totalRowsArr.length / 2) * (_vm.squareSize.h + 10) -\n _vm.squareSize.h -\n 10 +\n \"px\"\n },\n attrs: { xmlns: \"http://www.w3.org/2000/svg\", version: \"1.1\" }\n },\n [\n _c(\"rect\", {\n ref: \"rect\",\n staticClass: \"article-rect\",\n attrs: { width: \"100%\", height: \"100%\" }\n }),\n _vm._l(_vm.textArr, function(val, index) {\n return _c(\n \"text\",\n {\n key: \"text_\" + index,\n attrs: { x: val.x, y: val.y, fill: \"#000\" }\n },\n [_vm._v(_vm._s(val.count))]\n )\n }),\n _vm._l(_vm.totalRowsArr, function(val, index) {\n return _c(\"line\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: index != _vm.totalRowsArr.length - 1,\n expression: \"index!=totalRowsArr.length-1\"\n }\n ],\n key: \"total_\" + index,\n staticStyle: { stroke: \"rgb(0,0,0)\", \"stroke-width\": \"0.8\" },\n attrs: { x1: val.x1, y1: val.y1, x2: val.x2, y2: val.y2 }\n })\n }),\n _vm._l(_vm.lineArr, function(val, index) {\n return _c(\"line\", {\n key: index,\n staticStyle: { stroke: \"rgb(0,0,0)\", \"stroke-width\": \"0.8\" },\n attrs: { x1: val.x1, y1: val.y1, x2: val.x2, y2: val.y2 }\n })\n })\n ],\n 2\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"choose-topic\" },\n _vm._l(_vm.topic, function(item) {\n return _c(\"div\", { key: item.alias, staticClass: \"title\" }, [\n _c(\"span\", { staticClass: \"topic-no\" }, [\n _vm._v(_vm._s(item.alias) + \"、\")\n ]),\n _c(\"div\", {\n staticClass: \"title-content clearfix\",\n domProps: { innerHTML: _vm._s(item.queBody) }\n })\n ])\n }),\n 0\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {},\n _vm._l(_vm.content, function(val, index) {\n return _c(\n \"div\",\n {\n key: \"topic_\" + index,\n class: [\"content-\" + index, \"paper-topic-content\"]\n },\n [\n !val.isLast\n ? _c(\"TopicTitle\", {\n attrs: { titleInfo: _vm.setTopicTitle(val), txt: val }\n })\n : _vm._e(),\n !val.isQuestionText\n ? [\n [1, 2, 11].includes(val.questionTypeId)\n ? _c(\n \"TopicChoice\",\n _vm._g(\n _vm._b(\n {\n class: \"topic-\" + val.questionTypeId,\n attrs: {\n topicInfo: val.questions,\n modelId: val.modelId,\n setConfig: val.topicConfigureData\n }\n },\n \"TopicChoice\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n : _vm._e(),\n val.questionTypeId == 5\n ? _c(\n \"TopicFill\",\n _vm._g(\n _vm._b(\n {\n attrs: {\n topicInfo: val.questions,\n modelId: val.modelId,\n setConfig: val.topicConfigureData\n }\n },\n \"TopicFill\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n : _vm._e()\n ]\n : _vm._e(),\n [7, 17, 27].includes(val.questionTypeId)\n ? [\n val.questionTypeId === 17 && val.QuestionTextList\n ? _c(\"ChooseTopic\", {\n attrs: { topic: val.QuestionTextList }\n })\n : _vm._e(),\n _vm._l(val.questions, function(topic) {\n return _c(\n \"TopicExplain\",\n _vm._g(\n _vm._b(\n {\n key:\n \"\" +\n topic.alias +\n topic.ChooseArea +\n topic.cutId +\n Math.random(),\n class: { \"choose-topic\": val.questionTypeId === 17 },\n attrs: { topicInfo: topic, setConfig: val }\n },\n \"TopicExplain\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n })\n ]\n : _vm._e(),\n _vm.answerCardType === 1 && val.isQuestionText == 1\n ? _vm._l(val.questions, function(valT, indexT) {\n return _c(\"Topic\", {\n key: indexT,\n attrs: { topicContent: valT }\n })\n })\n : _vm._e(),\n [77].includes(val.questionTypeId) && _vm.subject == 9\n ? _vm._l(val.questions, function(topic) {\n return _c(\n \"TopicExplain\",\n _vm._g(\n _vm._b(\n {\n key: \"\" + topic.alias + topic.cutId + Math.random(),\n staticClass: \"article-topic\",\n attrs: { topicInfo: topic, setConfig: val }\n },\n \"TopicExplain\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n })\n : _vm._e(),\n [77].includes(val.questionTypeId) && _vm.subject == 8\n ? _vm._l(val.questions, function(topic) {\n return _c(\n \"TopicExplain\",\n _vm._g(\n _vm._b(\n {\n key: \"\" + topic.alias + topic.cutId + Math.random(),\n staticClass: \"article-topic\",\n attrs: { topicInfo: topic, setConfig: val }\n },\n \"TopicExplain\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n )\n })\n : _vm._e()\n ],\n 2\n )\n }),\n 0\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"topic topic-box-border\",\n style: {\n \"line-height\": (_vm.topicContent.rowLineHeight || 30) + \"px\",\n \"font-size\": (_vm.topicContent.fontSizeCount || 14) + \"px\"\n }\n },\n [\n _c(\"div\", {\n staticClass: \"btn-paper-info iconfont iconedit\",\n on: {\n click: function($event) {\n _vm.topicSetDialog = true\n }\n }\n }),\n !_vm.topicContent.isOnlyShowOption\n ? _c(\n \"div\",\n {\n staticClass: \"title\",\n style: {\n \"line-height\": (_vm.topicContent.rowLineHeight || 30) + \"px\"\n }\n },\n [\n _c(\"span\", { staticClass: \"topic-no\" }, [\n _vm._v(_vm._s(_vm.topicContent.alias) + \"、\")\n ]),\n _c(\"div\", {\n staticClass: \"title-content\",\n domProps: { innerHTML: _vm._s(_vm.topicContent.queBody) }\n })\n ]\n )\n : _vm._e(),\n [1, 2, 11].includes(_vm.topicContent.questionTypeId) &&\n _vm.topicContent.queOptions.length > 0\n ? _c(\n \"ol\",\n { staticClass: \"options\" },\n _vm._l(_vm.topicContent.queOptions, function(val, index) {\n return _c(\n \"li\",\n {\n key: index,\n class: [\n \"option-item\",\n \"option-\" + index,\n \"list-style-\" + _vm.topicContent.listType\n ]\n },\n [\n _c(\"span\", { staticClass: \"options-words\" }, [\n _vm._v(_vm._s(_vm.words[val.index]) + \".\")\n ]),\n _c(\"span\", { domProps: { innerHTML: _vm._s(val.content) } })\n ]\n )\n }),\n 0\n )\n : _vm._e(),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.topicSetDialog,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"show-close\": false,\n width: \"30%\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.topicSetDialog = $event\n }\n }\n },\n [\n _c(\n \"el-form\",\n { ref: \"form\", attrs: { model: _vm.form, \"label-width\": \"100px\" } },\n [\n [1, 2, 11].includes(_vm.topicContent.questionTypeId)\n ? _c(\n \"el-form-item\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicContent.queOptions,\n expression: \"topicContent.queOptions\"\n }\n ],\n attrs: { label: \"选项每行列数\" }\n },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择选项每行列数\" },\n model: {\n value: _vm.form.columnCount,\n callback: function($$v) {\n _vm.$set(_vm.form, \"columnCount\", $$v)\n },\n expression: \"form.columnCount\"\n }\n },\n _vm._l(_vm.form.columnCountArr, function(val) {\n return _c(\"el-option\", {\n key: val.id,\n attrs: { value: val.id, label: val.label }\n })\n }),\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { attrs: { label: \"行间距\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择行间距\" },\n model: {\n value: _vm.form.rowLineHeight,\n callback: function($$v) {\n _vm.$set(_vm.form, \"rowLineHeight\", $$v)\n },\n expression: \"form.rowLineHeight\"\n }\n },\n _vm._l(_vm.form.rowHieightArr, function(val) {\n return _c(\"el-option\", {\n key: val,\n attrs: { value: val, label: val + \"px\" }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"字体大小\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择字体大小\" },\n model: {\n value: _vm.form.fontSizeCount,\n callback: function($$v) {\n _vm.$set(_vm.form, \"fontSizeCount\", $$v)\n },\n expression: \"form.fontSizeCount\"\n }\n },\n _vm._l(_vm.form.fontSizeArr, function(val) {\n return _c(\"el-option\", {\n key: val,\n attrs: { value: val, label: val + \"px\" }\n })\n }),\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.confirm } },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancel } }, [_vm._v(\"取 消\")])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"topic-choice clearfix\",\n class: [\n \"flex-direction-\" + _vm.form.direction,\n { \"topic-box-border\": _vm.optionsArr.length > 0 }\n ]\n },\n [\n _c(\"div\", {\n staticClass: \"btn-paper-info iconfont iconedit\",\n on: { click: _vm.openSet }\n }),\n _vm.paperSource == 0\n ? _c(\"div\", {\n staticClass: \"del-btn iconfont icondelete\",\n on: { click: _vm.delTopic }\n })\n : _vm._e(),\n _vm._l(_vm.optionsArr, function(valUl, indexUl) {\n return _c(\n \"ul\",\n { key: indexUl, staticClass: \"single-option clearfix\" },\n _vm._l(valUl, function(valOptions, indexOptions) {\n return _c(\n \"li\",\n {\n key: indexOptions,\n staticClass: \"clearfix option-li\",\n attrs: {\n \"data-pageIndex\": _vm.pageIndex,\n \"data-modelId\": _vm.modelId,\n \"data-type\": valOptions.questionTypeId\n }\n },\n [\n _c(\"em\", [_vm._v(_vm._s(valOptions.alias))]),\n _vm._l(parseInt(valOptions.optionCount), function(val, index) {\n return _c(\"span\", {\n key: index,\n class: [\"iconfont\", \"iconwords_\" + index]\n })\n })\n ],\n 2\n )\n }),\n 0\n )\n }),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.topicSetDialog,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"show-close\": false,\n width: \"30%\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.topicSetDialog = $event\n }\n }\n },\n [\n _c(\n \"el-form\",\n { ref: \"form\", attrs: { model: _vm.form, \"label-width\": \"100px\" } },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"选择排列方向\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.form.tempDirection,\n callback: function($$v) {\n _vm.$set(_vm.form, \"tempDirection\", $$v)\n },\n expression: \"form.tempDirection\"\n }\n },\n _vm._l(_vm.form.infoList, function(item, key) {\n return _c(\n \"el-radio\",\n { key: key, attrs: { label: item.id } },\n [_vm._v(_vm._s(item.name))]\n )\n }),\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.confirm } },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancel } }, [_vm._v(\"取 消\")])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"topic-item topic-explain\",\n attrs: {\n \"data-pageIndex\": _vm.pageIndex,\n \"data-type\": _vm.setConfig.questionTypeId,\n \"data-modelId\": _vm.setConfig.modelId\n }\n },\n [\n !_vm.isArticleChOver\n ? _c(\n \"div\",\n { ref: \"topicModule\", staticClass: \"module\" },\n [\n _vm.topicInfo.cutId === 1\n ? _c(\n \"div\",\n { staticClass: \"scoring-box\" },\n [\n _vm._l(_vm.topicScore, function(score, scoreIndex) {\n return _c(\"span\", { key: \"score_\" + scoreIndex }, [\n _vm._v(_vm._s(score))\n ])\n }),\n _vm.isShowNoScoring\n ? _c(\n \"span\",\n {\n staticClass: \"no-scoring\",\n style: { width: _vm.noScoringW + \"px\" }\n },\n [_vm._v(\"禁打分区\")]\n )\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"btn-edit-big-topic-box\" }, [\n _c(\"span\", {\n staticClass: \"btn-drag\",\n on: { mousedown: _vm.moveTopicAreaHeight }\n }),\n _vm.topicInfo.cutId === 1\n ? _c(\"span\", {\n staticClass:\n \"btn-setting btn-paper-info iconfont iconedit\",\n on: { click: _vm.showEditBigTopic }\n })\n : _vm._e(),\n _vm.topicInfo.cutId === 1 && _vm.paperSource === 0\n ? _c(\"span\", {\n staticClass: \"btn-del del-btn iconfont icondelete\",\n on: { click: _vm.delTopic }\n })\n : _vm._e(),\n _vm.topicInfo.cutId !== 1\n ? _c(\n \"span\",\n {\n staticClass: \"btn-del-topic-over\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.delTopicOver($event)\n }\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-close\" })]\n )\n : _vm._e()\n ]),\n _vm.topicInfo.questionTypeId === 17 && _vm.topicInfo.cutId === 1\n ? _c(\n \"div\",\n { staticClass: \"optional-box\" },\n _vm._l(_vm.ChooseOptData, function(opt, idx) {\n return _c(\"span\", {\n key: \"opt_\" + opt,\n class: [\"iconfont\", \"optional-span\", \"iconwords_\" + idx]\n })\n }),\n 0\n )\n : _vm._e(),\n _c(\n \"div\",\n {\n staticClass: \"topic-answer-area\",\n style: { height: _vm.TopicAreaHeight + \"px\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"topic-content\",\n on: {\n \"!mouseleave\": function($event) {\n return _vm.mouseEvent(0)\n },\n \"!mouseenter\": function($event) {\n return _vm.mouseEvent(1)\n }\n }\n },\n [\n _c(\"UeCard\", {\n ref: \"ueCard\",\n attrs: { height: _vm.TopicAreaHeight },\n on: { ready: _vm.ueReady, ueBlur: _vm.ueBlur },\n model: {\n value: _vm.topicInfo.contentHtml,\n callback: function($$v) {\n _vm.$set(_vm.topicInfo, \"contentHtml\", $$v)\n },\n expression: \"topicInfo.contentHtml\"\n }\n }),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showUeTitle == false,\n expression: \"showUeTitle==false\"\n }\n ],\n staticClass: \"no-drug-shadow\",\n attrs: { \"data-index\": _vm.setConfig.questionTypeId }\n })\n ],\n 1\n )\n ]\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.dialogVisibleIsAddTopic,\n width: \"915px\",\n \"before-close\": _vm.handleCloseAddTopic,\n \"destroy-on-close\": false\n },\n on: {\n \"update:visible\": function($event) {\n _vm.dialogVisibleIsAddTopic = $event\n }\n }\n },\n [\n _c(\"AddTopic\", {\n ref: \"AddTopic\",\n attrs: { \"is-edit\": true, \"edit-model-id\": _vm.modelId },\n on: {\n cancel: function($event) {\n _vm.dialogVisibleIsAddTopic = false\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.topicSetDialog,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"show-close\": false,\n width: \"30%\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.topicSetDialog = $event\n }\n }\n },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.form, \"label-width\": \"100px\" }\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"分值上限\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择分数\" },\n model: {\n value: _vm.form.scoreBoxCount,\n callback: function($$v) {\n _vm.$set(_vm.form, \"scoreBoxCount\", $$v)\n },\n expression: \"form.scoreBoxCount\"\n }\n },\n _vm._l(_vm.form.scoreBoxArr, function(val, index) {\n return _c(\"el-option\", {\n key: \"index_\" + index,\n attrs: { value: val.id, label: val.label }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"\" } },\n [\n _c(\n \"el-checkbox\",\n {\n model: {\n value: _vm.form.halfScore,\n callback: function($$v) {\n _vm.$set(_vm.form, \"halfScore\", $$v)\n },\n expression: \"form.halfScore\"\n }\n },\n [_vm._v(\"加入0.5分\")]\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.confirm }\n },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancel } }, [\n _vm._v(\"取 消\")\n ])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm.setConfig.questionTypeId === 77 &&\n _vm.topicInfo.subject === 9 &&\n _vm.topicInfo.isShowArticleCn\n ? _c(\"ArticleCh\", {\n attrs: {\n wordsCountCh: _vm.setWordsCountCh,\n pageIndex: _vm.pageIndex\n }\n })\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"topic-fill\",\n class: [{ \"topic-box-border\": _vm.topicInfo.length > 0 }]\n },\n [\n _c(\"div\", {\n staticClass: \"btn-paper-info iconfont iconedit\",\n on: { click: _vm.openSet }\n }),\n _vm.paperSource == 0\n ? _c(\"div\", {\n staticClass: \"del-btn iconfont icondelete\",\n on: { click: _vm.delTopic }\n })\n : _vm._e(),\n _c(\n \"div\",\n {\n staticClass: \"subjectCol clearfix \",\n class: [\"\", \"col-\" + (_vm.setConfig.columns || 1)]\n },\n _vm._l(_vm.topicInfo, function(val, index) {\n return _c(\n \"div\",\n {\n key: index,\n staticClass: \"fill-item clearfix\",\n style: { height: (_vm.setConfig.rowLineHeight || 40) + \"px\" },\n attrs: {\n \"data-pageIndex\": _vm.pageIndex,\n \"data-type\": val.questionTypeId,\n \"data-modelId\": _vm.modelId\n }\n },\n [\n _c(\"span\", [_vm._v(_vm._s(val.alias) + \"、\")]),\n _c(\"em\", {\n style: { height: (_vm.setConfig.rowLineHeight || 40) + \"px\" }\n }),\n _c(\n \"strong\",\n _vm._l(_vm.form.scoreArr, function(valScore) {\n return _c(\"i\", { key: valScore }, [_vm._v(_vm._s(valScore))])\n }),\n 0\n )\n ]\n )\n }),\n 0\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"设置\",\n visible: _vm.topicSetDialog,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"show-close\": false,\n width: \"30%\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.topicSetDialog = $event\n }\n }\n },\n [\n _c(\n \"el-form\",\n { ref: \"form\", attrs: { model: _vm.form, \"label-width\": \"100px\" } },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"每行列数\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择列数\" },\n model: {\n value: _vm.form.columnCount,\n callback: function($$v) {\n _vm.$set(_vm.form, \"columnCount\", $$v)\n },\n expression: \"form.columnCount\"\n }\n },\n _vm._l(_vm.form.columnCountArr, function(val) {\n return _c(\"el-option\", {\n key: val,\n attrs: { value: val, label: val }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"行间距\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择间距\" },\n model: {\n value: _vm.form.rowLineHeight,\n callback: function($$v) {\n _vm.$set(_vm.form, \"rowLineHeight\", $$v)\n },\n expression: \"form.rowLineHeight\"\n }\n },\n _vm._l(_vm.form.rowHieightArr, function(val) {\n return _c(\"el-option\", {\n key: val,\n attrs: { value: val, label: val + \"px\" }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"手写打分\" } },\n [\n _c(\n \"el-select\",\n {\n attrs: { placeholder: \"请选择分数\" },\n model: {\n value: _vm.form.scoreBoxCount,\n callback: function($$v) {\n _vm.$set(_vm.form, \"scoreBoxCount\", $$v)\n },\n expression: \"form.scoreBoxCount\"\n }\n },\n _vm._l(_vm.form.scoreBoxArr, function(val, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n value: index,\n label: val.label,\n disabled:\n val.id == 1 ||\n val.id == _vm.scoreA ||\n val.id == _vm.scoreB ||\n val.id == _vm.scorec\n ? false\n : true\n }\n })\n }),\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.confirm } },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancel } }, [_vm._v(\"取 消\")])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"h3\",\n {\n staticClass: \"topic-title big-topic-title\",\n staticStyle: { height: \"auto\" }\n },\n [\n _vm._v(_vm._s(_vm.titleInfo.topicTitleText)),\n _c(\"span\", [_vm._v(_vm._s(_vm.titleInfo.topicSubTitleText))])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"card_setting\" },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.isSetAnswer,\n expression: \"!isSetAnswer\"\n }\n ],\n staticClass: \"card_setting-topic\"\n },\n [\n _c(\"h3\", { staticClass: \"card_setting-title\" }, [\n _vm._v(\"选择答题卡布局\")\n ]),\n _c(\"div\", { staticClass: \"card_setting-box\" }, [\n _c(\"div\", { staticClass: \"card_setting-item\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"纸张\")]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n [\n _c(\n \"el-radio-group\",\n {\n on: { change: _vm.changePageSize },\n model: {\n value: _vm.cardSetting.paperSize,\n callback: function($$v) {\n _vm.$set(_vm.cardSetting, \"paperSize\", $$v)\n },\n expression: \"cardSetting.paperSize\"\n }\n },\n [\n _c(\"el-radio\", { attrs: { label: 1 } }, [_vm._v(\"A3\")]),\n _c(\"el-radio\", { attrs: { label: 2 } }, [_vm._v(\"A4\")]),\n _c(\"el-radio\", { attrs: { label: 3 } }, [\n _vm._v(\"16K(185*260)\")\n ]),\n _c(\"el-radio\", { attrs: { label: 4 } }, [\n _vm._v(\"8K(260*370)\")\n ]),\n _c(\"el-radio\", { attrs: { label: 5 } }, [\n _vm._v(\"8K(270*390)\")\n ])\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"card_setting-item\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"方向\")]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n [\n _c(\n \"el-radio-group\",\n {\n on: { change: _vm.changePageDirection },\n model: {\n value: _vm.cardSetting.direction,\n callback: function($$v) {\n _vm.$set(_vm.cardSetting, \"direction\", $$v)\n },\n expression: \"cardSetting.direction\"\n }\n },\n [\n _c(\n \"el-radio\",\n {\n attrs: {\n label: 1,\n disabled: _vm.isDisabledDirection(1)\n }\n },\n [_vm._v(\"横版\")]\n ),\n _c(\n \"el-radio\",\n {\n attrs: {\n label: 2,\n disabled: _vm.isDisabledDirection(2)\n }\n },\n [_vm._v(\"竖版\")]\n )\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"card_setting-item border_b\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"分栏\")]),\n _c(\"div\", { staticClass: \"content\" }, [\n _c(\"div\", { staticClass: \"layoutList\" }, [\n _c(\n \"div\",\n {\n staticClass: \"layoutItem\",\n class: _vm.cardColumnClass(1),\n on: {\n click: function($event) {\n _vm.cardColumnClass(1) != \"disabled\"\n ? _vm.setCardColumn(1)\n : \"\"\n }\n }\n },\n [\n _vm._m(0),\n _c(\"em\", [_vm._v(\"一栏\")]),\n _c(\"b\", { staticClass: \"icon_current\" })\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"layoutItem\",\n class: _vm.cardColumnClass(2),\n on: {\n click: function($event) {\n _vm.cardColumnClass(2) != \"disabled\"\n ? _vm.setCardColumn(2)\n : \"\"\n }\n }\n },\n [\n _vm._m(1),\n _c(\"em\", [_vm._v(\"两栏\")]),\n _c(\"b\", { staticClass: \"icon_current\" })\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"layoutItem\",\n class: _vm.cardColumnClass(3),\n on: {\n click: function($event) {\n _vm.cardColumnClass(3) != \"disabled\"\n ? _vm.setCardColumn(3)\n : \"\"\n }\n }\n },\n [\n _vm._m(2),\n _c(\"em\", [_vm._v(\"三栏\")]),\n _c(\"b\", { staticClass: \"icon_current\" })\n ]\n )\n ])\n ])\n ]),\n _c(\"div\", { staticClass: \"card_setting-item border_b\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"装订线\")]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n [\n _c(\n \"el-radio-group\",\n {\n on: { change: _vm.saveCardSetting },\n model: {\n value: _vm.cardSetting.hasBindingLine,\n callback: function($$v) {\n _vm.$set(_vm.cardSetting, \"hasBindingLine\", $$v)\n },\n expression: \"cardSetting.hasBindingLine\"\n }\n },\n [\n _c(\n \"el-radio\",\n {\n attrs: {\n label: 1,\n disabled:\n (_vm.cardSetting.cardLength > 12 &&\n [3, 4, 5].includes(\n _vm.cardSetting.paperSize\n )) ||\n (_vm.cardSetting.paperSize == 4 &&\n _vm.cardSetting.column == 3)\n }\n },\n [_vm._v(\"有\")]\n ),\n _c(\"el-radio\", { attrs: { label: 0 } }, [_vm._v(\"无\")])\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"card_setting-item border_b\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"信息栏\")]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n [\n _c(\n \"el-radio-group\",\n {\n on: { change: _vm.setPaperInfoMsg },\n model: {\n value: _vm.cardSetting.hasPaperMsg,\n callback: function($$v) {\n _vm.$set(_vm.cardSetting, \"hasPaperMsg\", $$v)\n },\n expression: \"cardSetting.hasPaperMsg\"\n }\n },\n [\n _c(\"el-radio\", { attrs: { label: true } }, [\n _vm._v(\"有\")\n ]),\n _c(\"el-radio\", { attrs: { label: false } }, [\n _vm._v(\"无\")\n ])\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"centerBox\" }, [\n _c(\n \"span\",\n {\n staticClass: \"iconfont icontishi1\",\n on: {\n mouseenter: function($event) {\n return _vm.enterLinesTips()\n },\n mouseleave: function($event) {\n return _vm.leaveLinesTips()\n }\n }\n },\n [\n _vm.tipsBox1\n ? _c(\"b\", [\n _vm._v(\n \"选择“有”,还可以在左侧答题卡编辑页进行内容修改配置!\"\n )\n ])\n : _vm._e()\n ]\n )\n ])\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"card_setting-item border_b\" }, [\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(\"考号\")]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n [\n _c(\n \"el-checkbox-group\",\n {\n attrs: { disabled: _vm.cardSetting.useQrCode },\n on: { change: _vm.changePageExaminationNumberType },\n model: {\n value: _vm.cardSetting.examinationNumberType,\n callback: function($$v) {\n _vm.$set(\n _vm.cardSetting,\n \"examinationNumberType\",\n $$v\n )\n },\n expression: \"cardSetting.examinationNumberType\"\n }\n },\n [\n _c(\n \"el-checkbox\",\n { attrs: { label: 1, disabled: _vm.setDisabled(1) } },\n [_vm._v(\"填涂考号\")]\n ),\n _c(\n \"el-checkbox\",\n { attrs: { label: 2, disabled: _vm.setDisabled(2) } },\n [_vm._v(\"条形码\")]\n )\n ],\n 1\n ),\n _vm.paperSource === 1\n ? _c(\"el-switch\", {\n staticStyle: { display: \"block\", \"margin-top\": \"10px\" },\n attrs: {\n \"active-color\": \"#409EFF\",\n \"inactive-color\": \"#bbb\",\n \"active-text\": \"使用二维码\"\n },\n on: { change: _vm.changePageUseQrCode },\n model: {\n value: _vm.cardSetting.useQrCode,\n callback: function($$v) {\n _vm.$set(_vm.cardSetting, \"useQrCode\", $$v)\n },\n expression: \"cardSetting.useQrCode\"\n }\n })\n : _vm._e(),\n _vm.paperSource === 1\n ? _c(\"div\", { staticClass: \"centerBox ewmCenterBox\" }, [\n _c(\n \"span\",\n {\n staticClass: \"iconfont icontishi1 ewmFont\",\n on: {\n mouseenter: function($event) {\n return _vm.enterEwmTips()\n },\n mouseleave: function($event) {\n return _vm.leaveEwmTips()\n }\n }\n },\n [\n _vm.tipsBox2\n ? _c(\"b\", [\n _vm._v(\n \"使用二维码,将给每个考生都生成一份定制答题卡,请慎重!\"\n )\n ])\n : _vm._e()\n ]\n )\n ])\n : _vm._e()\n ],\n 1\n )\n ])\n ]),\n _c(\"div\", { staticClass: \"overBox\" }, [\n _c(\n \"div\",\n { staticClass: \"subject-list\" },\n _vm._l(_vm.bigTopicArr, function(bigTopic, index) {\n return _c(\n \"div\",\n { key: index, staticClass: \"card_setting-item\" },\n [\n _vm.isShowBigTopicNo(bigTopic)\n ? [\n _c(\"div\", { staticClass: \"name\" }, [\n _vm._v(\n _vm._s(\n _vm.getTopicTypeText(bigTopic.questionTypeId)\n )\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"content\" },\n _vm._l(\n bigTopic.topicConfigureData.topicTypeArr,\n function(num, index) {\n return _c(\n \"div\",\n { key: index, staticClass: \"s-num\" },\n [\n _vm._v(\n _vm._s(num.startNo) +\n \"~\" +\n _vm._s(num.endNo)\n )\n ]\n )\n }\n ),\n 0\n )\n ]\n : _vm._e()\n ],\n 2\n )\n }),\n 0\n ),\n _vm.paperSource === 0\n ? _c(\"div\", { staticClass: \"edit-topic-btn-box\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn btn-add-topic\",\n on: { click: _vm.showAddBigTopic }\n },\n [_vm._v(\"+ 添加试题\")]\n ),\n _c(\n \"span\",\n {\n staticClass: \"btn-set-answer\",\n on: { click: _vm.showSelectSetAnswer }\n },\n [_vm._v(\"设置客观题答案\")]\n )\n ])\n : _vm._e()\n ]),\n _c(\"div\", { staticClass: \"btn-card-box\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn btn-card-preview\",\n on: { click: _vm.goPreview }\n },\n [_vm._v(\"预览\")]\n ),\n _c(\n \"button\",\n {\n staticClass: \"btn btn-card-save\",\n class: { disabled: _vm.isAllowEdit },\n attrs: { disabled: _vm.isAllowEdit },\n on: { click: _vm.savePage }\n },\n [_vm._v(_vm._s(!_vm.cardSetting.allowEdit ? \"编辑\" : \"保存\"))]\n ),\n _c(\n \"button\",\n {\n staticClass: \"btn btn-card-down\",\n class: { disabled: _vm.isDisabledBtnDown },\n attrs: { disabled: _vm.isDisabledBtnDown },\n on: { click: _vm.downPdfAll }\n },\n [_vm._v(_vm._s(_vm.cardSetting.useQrCode ? \"生成\" : \"下载\"))]\n )\n ])\n ]\n ),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isSetAnswer,\n expression: \"isSetAnswer\"\n }\n ],\n staticClass: \"card_setting-answer\"\n },\n [\n _c(\"SetAnswer\", {\n on: {\n cancel: function($event) {\n _vm.isSetAnswer = false\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isShowToPdfHtml,\n expression: \"isShowToPdfHtml\"\n }\n ],\n staticClass: \"to-pdf-html-box\"\n },\n [_c(\"toPdfHtml\", { ref: \"toPdfHtml\" })],\n 1\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"提示\",\n visible: _vm.centerDialogVisible,\n width: \"30%\",\n center: \"\"\n },\n on: {\n \"update:visible\": function($event) {\n _vm.centerDialogVisible = $event\n }\n }\n },\n [\n _c(\n \"p\",\n {\n staticStyle: {\n \"text-align\": \"center\",\n \"font-size\": \"16px\",\n color: \"#000000\"\n }\n },\n [_vm._v(_vm._s(_vm.tipsContent))]\n ),\n _c(\n \"span\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\"\n },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: {\n click: function($event) {\n _vm.cardSetting.title == \"\"\n ? (_vm.centerDialogVisible = false)\n : _vm.showSelectSetAnswer()\n }\n }\n },\n [_vm._v(\"去设置\")]\n ),\n _c(\n \"el-button\",\n {\n on: {\n click: function($event) {\n _vm.centerDialogVisible = false\n }\n }\n },\n [_vm._v(\"关闭\")]\n )\n ],\n 1\n )\n ]\n )\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", [_c(\"i\")])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", [_c(\"i\"), _c(\"i\")])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", [_c(\"i\"), _c(\"i\"), _c(\"i\")])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"set-select-answer\" }, [\n _c(\"h3\", { staticClass: \"card_setting-title\" }, [_vm._v(\"设置客观题答案\")]),\n _c(\n \"div\",\n { staticClass: \"set-select-list\" },\n _vm._l(_vm.topicList, function(topic) {\n return _c(\"div\", { key: topic.alias, staticClass: \"answer-item\" }, [\n _c(\"span\", { staticClass: \"number\" }, [_vm._v(_vm._s(topic.alias))]),\n _c(\"span\", { staticClass: \"topic-type-name\" }, [\n _vm._v(_vm._s(topic.questionTypeText))\n ]),\n _c(\n \"p\",\n { staticClass: \"option-box\" },\n _vm._l(topic.optionList, function(opt) {\n return _c(\n \"i\",\n {\n key: opt.value,\n staticClass: \"answer-option\",\n class: { active: opt.isAnswer },\n on: {\n click: function($event) {\n return _vm.setAnswer(opt, topic)\n }\n }\n },\n [_vm._v(_vm._s(opt.value))]\n )\n }),\n 0\n )\n ])\n }),\n 0\n ),\n _c(\"div\", { staticClass: \"btn-card-box\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn btn-card-save\",\n on: { click: _vm.saveSelectAnswer }\n },\n [_vm._v(\"保存\")]\n ),\n _c(\n \"button\",\n { staticClass: \"btn btn-card-go_back\", on: { click: _vm.cancel } },\n [_vm._v(\"返回\")]\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"add-topic\" }, [\n _c(\"div\", { staticClass: \"edit-topic-content\" }, [\n _c(\n \"div\",\n { staticClass: \"top\" },\n [\n _c(\"div\", { staticClass: \"topic-title\" }, [\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"大题号\")]),\n _c(\n \"el-select\",\n {\n staticClass: \"select-big_topic-number\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n model: {\n value: _vm.topicConfigureData.BigNo,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"BigNo\", $$v)\n },\n expression: \"topicConfigureData.BigNo\"\n }\n },\n _vm._l(_vm.bigQuestionNos, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"题型标题\")]),\n _c(\"el-input\", {\n staticClass: \"input-big_topic-name\",\n attrs: {\n size: \"mini\",\n maxlength: \"10\",\n placeholder: \"请输入题型标题名称\"\n },\n nativeOn: {\n keyup: function($event) {\n return _vm.trimLR($event)\n }\n },\n model: {\n value: _vm.topicConfigureData.name,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"name\", $$v)\n },\n expression: \"topicConfigureData.name\"\n }\n })\n ],\n 1\n ),\n _c(\"span\", { staticClass: \"color-red\" }, [\n _vm._v(_vm._s(_vm.errMsg))\n ])\n ]),\n _vm._l(_vm.topicConfigureData.topicTypeArr, function(\n topicConfig,\n index\n ) {\n return _c(\n \"div\",\n { key: index, staticClass: \"topic-type\" },\n [\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"题类\")]),\n _c(\n \"el-select\",\n {\n staticClass: \"select-topic-topicType\",\n attrs: { size: \"mini\", placeholder: \"请选择题类\" },\n on: {\n change: function($event) {\n return _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: _vm.topicConfigureData.topicType,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"topicType\", $$v)\n },\n expression: \"topicConfigureData.topicType\"\n }\n },\n _vm._l(_vm.topicTypeOptions, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicConfigureData.topicType == 17,\n expression: \"topicConfigureData.topicType==17\"\n }\n ],\n staticClass: \"topic-edit-item\"\n },\n [\n _c(\n \"el-select\",\n {\n staticClass: \"select-choose_topic\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: topicConfig.chooseOption,\n callback: function($$v) {\n _vm.$set(topicConfig, \"chooseOption\", $$v)\n },\n expression: \"topicConfig.chooseOption\"\n }\n },\n _vm._l(_vm.chooseOptions, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n ),\n _vm._v(\" 选 \"),\n _c(\n \"el-select\",\n {\n staticClass: \"select-choose_topic\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: topicConfig.chooseSelectOption,\n callback: function($$v) {\n _vm.$set(topicConfig, \"chooseSelectOption\", $$v)\n },\n expression: \"topicConfig.chooseSelectOption\"\n }\n },\n _vm._l(_vm.chooseSelectOptions, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _vm._v(\" 从\"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"题号\" },\n on: {\n change: function($event) {\n _vm.checkNumber(topicConfig, \"startNo\")\n _vm.addTopicList(_vm.topicConfigureData)\n },\n input: function($event) {\n return _vm.checkNumber(topicConfig, \"startNo\")\n }\n },\n model: {\n value: topicConfig.startNo,\n callback: function($$v) {\n _vm.$set(topicConfig, \"startNo\", $$v)\n },\n expression: \"topicConfig.startNo\"\n }\n })\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _vm._v(\" 到\"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"题号\" },\n on: {\n change: function($event) {\n _vm.checkNumber(topicConfig, \"endNo\")\n _vm.addTopicList(_vm.topicConfigureData)\n },\n input: function($event) {\n return _vm.checkNumber(topicConfig, \"endNo\")\n }\n },\n model: {\n value: topicConfig.endNo,\n callback: function($$v) {\n _vm.$set(topicConfig, \"endNo\", $$v)\n },\n expression: \"topicConfig.endNo\"\n }\n }),\n _vm._v(\"题 \")\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isSelectType,\n expression: \"isSelectType\"\n }\n ],\n staticClass: \"topic-edit-item\"\n },\n [\n _vm._v(\" 每题\"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n _vm.checkOptNumber(topicConfig, \"optionsNumber\")\n _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: topicConfig.optionsNumber,\n callback: function($$v) {\n _vm.$set(topicConfig, \"optionsNumber\", $$v)\n },\n expression: \"topicConfig.optionsNumber\"\n }\n }),\n _vm._v(\"个选项 \")\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _vm._v(\" 每题\"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n _vm.checkScore(topicConfig)\n _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: topicConfig.score,\n callback: function($$v) {\n _vm.$set(topicConfig, \"score\", $$v)\n },\n expression: \"topicConfig.score\"\n }\n }),\n _vm._v(\"分 \")\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isMoreSelectType,\n expression: \"isMoreSelectType\"\n }\n ],\n staticClass: \"topic-edit-item\"\n },\n [\n _vm._v(\" 半对\"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n _vm.checkHalfScore(topicConfig)\n _vm.addTopicList(_vm.topicConfigureData)\n }\n },\n model: {\n value: topicConfig.halfScore,\n callback: function($$v) {\n _vm.$set(topicConfig, \"halfScore\", $$v)\n },\n expression: \"topicConfig.halfScore\"\n }\n }),\n _vm._v(\"分 \")\n ],\n 1\n ),\n _vm.isZongHe && _vm.topicConfigureData.topicType === 17\n ? _c(\"SubjectSelect\", {\n attrs: { \"subject-id\": _vm.topicConfigureData.subject },\n on: { subjectChange: _vm.ChooseChangeSubject }\n })\n : _vm._e(),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicConfigureData.topicType != 17,\n expression: \"topicConfigureData.topicType!=17\"\n }\n ],\n staticClass: \"topic-edit-item\"\n },\n [\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicList.length > 0,\n expression: \"topicList.length>0\"\n }\n ],\n staticClass:\n \"el-icon-circle-plus-outline btn-add-topic-type\",\n on: { click: _vm.addTopicType }\n }),\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicList.length == 0,\n expression: \"topicList.length==0\"\n }\n ],\n staticClass:\n \"el-icon-circle-plus-outline btn-add-topic-type disabled\"\n })\n ]\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.topicConfigureData.topicTypeArr.length > 1,\n expression: \"topicConfigureData.topicTypeArr.length>1\"\n }\n ],\n staticClass: \"topic-edit-item\"\n },\n [\n _c(\"i\", {\n staticClass: \"el-icon-remove-outline btn-del-topic-type\",\n on: {\n click: function($event) {\n return _vm.delTopicType(index)\n }\n }\n })\n ]\n )\n ],\n 1\n )\n })\n ],\n 2\n ),\n _vm.topicList.length > 0\n ? _c(\n \"div\",\n { key: \"topicList\", staticClass: \"topic-list\" },\n _vm._l(_vm.topicList, function(item, index) {\n return _c(\n \"div\",\n { key: item.alias, staticClass: \"topic-list-item\" },\n [\n _c(\"MinTopicEditItem\", {\n attrs: { \"min-topic-data\": item, idx: index }\n })\n ],\n 1\n )\n }),\n 0\n )\n : _c(\"div\", { key: \"topicList\", staticClass: \"topic-list\" }, [\n _c(\"p\", { staticClass: \"msg\" }, [_vm._v(\"请添加题目\")])\n ]),\n _vm.isSelectType\n ? _c(\"div\", { staticClass: \"topic-card-setting\" }, [\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"选项排列方向\")]),\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.topicConfigureData.direction,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"direction\", $$v)\n },\n expression: \"topicConfigureData.direction\"\n }\n },\n [\n _c(\"el-radio\", { attrs: { label: 0 } }, [_vm._v(\"横向\")]),\n _c(\"el-radio\", { attrs: { label: 1 } }, [_vm._v(\"纵向\")])\n ],\n 1\n )\n ],\n 1\n )\n ])\n : _vm._e(),\n _vm.isFillInBlank\n ? _c(\"div\", { staticClass: \"topic-card-setting\" }, [\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"答题卡布局\")]),\n _vm._v(\" 每行 \"),\n _c(\n \"el-select\",\n {\n staticClass: \"select-big_topic-number\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n model: {\n value: _vm.topicConfigureData.columns,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"columns\", $$v)\n },\n expression: \"topicConfigureData.columns\"\n }\n },\n _vm._l(_vm.columns, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n ),\n _vm._v(\" 列 \")\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"行高\")]),\n _c(\n \"el-select\",\n {\n staticClass: \"select-big_topic-number\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n model: {\n value: _vm.topicConfigureData.rowLineHeight,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"rowLineHeight\", $$v)\n },\n expression: \"topicConfigureData.rowLineHeight\"\n }\n },\n _vm._l(_vm.lineHeights, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: { label: item.label, value: item.value }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"手写打分\")]),\n _c(\n \"el-select\",\n {\n staticClass: \"select-big_topic-number\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n model: {\n value: _vm.topicConfigureData.scoreStyle,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"scoreStyle\", $$v)\n },\n expression: \"topicConfigureData.scoreStyle\"\n }\n },\n _vm._l(_vm.scoreOpt, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: {\n label: item.label,\n value: item.value,\n disabled: item.disabled\n }\n })\n }),\n 1\n ),\n _c(\"span\", [_vm._v(\"仅对线下阅卷打分\")])\n ],\n 1\n )\n ])\n : _vm._e(),\n _vm.isAnswer\n ? _c(\"div\", { staticClass: \"topic-card-setting\" }, [\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"手写打分\")]),\n _c(\n \"el-select\",\n {\n staticClass: \"select-big_topic-number\",\n attrs: { size: \"mini\", placeholder: \"请选择\" },\n model: {\n value: _vm.topicConfigureData.scoreLimit,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"scoreLimit\", $$v)\n },\n expression: \"topicConfigureData.scoreLimit\"\n }\n },\n _vm._l(_vm.scoreMaxOptions, function(item) {\n return _c(\"el-option\", {\n key: item.value,\n attrs: {\n label: item.label,\n value: item.value,\n disabled: item.disabled\n }\n })\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\n \"el-checkbox\",\n {\n model: {\n value: _vm.topicConfigureData.hasHalfScore,\n callback: function($$v) {\n _vm.$set(_vm.topicConfigureData, \"hasHalfScore\", $$v)\n },\n expression: \"topicConfigureData.hasHalfScore\"\n }\n },\n [_vm._v(\"加入0.5分\")]\n ),\n _c(\"span\", [_vm._v(\"(仅对线下阅卷打分)\")])\n ],\n 1\n ),\n _vm.isCompositionZH\n ? _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"作文字数\")]),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\" },\n model: {\n value: _vm.topicConfigureData.compositionNumber,\n callback: function($$v) {\n _vm.$set(\n _vm.topicConfigureData,\n \"compositionNumber\",\n $$v\n )\n },\n expression: \"topicConfigureData.compositionNumber\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.isCompositionEN\n ? _c(\n \"span\",\n { staticClass: \"topic-edit-item\" },\n [\n _c(\"label\", [_vm._v(\"英语作文横线行数\")]),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\" },\n model: {\n value: _vm.topicConfigureData.compositionRows,\n callback: function($$v) {\n _vm.$set(\n _vm.topicConfigureData,\n \"compositionRows\",\n $$v\n )\n },\n expression: \"topicConfigureData.compositionRows\"\n }\n })\n ],\n 1\n )\n : _vm._e()\n ])\n : _vm._e()\n ]),\n _c(\"div\", { staticClass: \"btn-box\" }, [\n _c(\n \"button\",\n { staticClass: \"btn btn-topic-edit-save\", on: { click: _vm.save } },\n [_vm._v(\"保存\")]\n ),\n _c(\n \"button\",\n { staticClass: \"btn btn-topic-edit-cancel\", on: { click: _vm.cancel } },\n [_vm._v(\"取消\")]\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"min-topic-box\" }, [\n _c(\"div\", { staticClass: \"min-topic\" }, [\n _c(\"div\", { staticClass: \"left\" }, [\n _c(\"span\", { staticClass: \"number\" }, [\n _vm._v(_vm._s(_vm.minTopicData.alias))\n ]),\n !_vm.isSelectType &&\n _vm.minTopicData.questionTypeId !== 77 &&\n _vm.minTopicData.questionTypeId !== 17\n ? _c(\n \"span\",\n {\n staticClass: \"btn-add-min-topic\",\n on: { click: _vm.addMiniTopic }\n },\n [_c(\"i\", [_vm._v(\"+\")]), _vm._v(\"添加小题 \")]\n )\n : _vm._e()\n ]),\n _c(\"div\", { staticClass: \"con\" }, [\n _vm._v(_vm._s(_vm.minTopicData.questionTypeText))\n ]),\n _vm.isSelectType\n ? _c(\n \"div\",\n { staticClass: \"right\" },\n [\n this.isZongHe && _vm.minTopicData.questionTypeId !== 17\n ? _c(\"SubjectSelect\", {\n attrs: { \"subject-id\": _vm.minTopicData.subject },\n on: { subjectChange: _vm.ChangeSubject }\n })\n : _vm._e(),\n _c(\n \"span\",\n [\n _vm._v(\" 选项数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkOptNumber(\n _vm.minTopicData,\n \"optionsCount\"\n )\n }\n },\n model: {\n value: _vm.minTopicData.optionsCount,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"optionsCount\", $$v)\n },\n expression: \"minTopicData.optionsCount\"\n }\n })\n ],\n 1\n ),\n _c(\n \"span\",\n [\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkScore(_vm.minTopicData, \"fullScore\")\n }\n },\n model: {\n value: _vm.minTopicData.fullScore,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"fullScore\", $$v)\n },\n expression: \"minTopicData.fullScore\"\n }\n })\n ],\n 1\n ),\n _vm.isMoreSelectType\n ? _c(\n \"span\",\n [\n _vm._v(\" 半分 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkHalfScore(\n _vm.minTopicData,\n \"halfScore\",\n _vm.minTopicData.fullScore\n )\n }\n },\n model: {\n value: _vm.minTopicData.halfScore,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"halfScore\", $$v)\n },\n expression: \"minTopicData.halfScore\"\n }\n })\n ],\n 1\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm.hasSmQuestionTopic\n ? _c(\n \"div\",\n { staticClass: \"right\" },\n [\n this.isZongHe && _vm.minTopicData.questionTypeId !== 17\n ? _c(\"SubjectSelect\", {\n attrs: { \"subject-id\": _vm.minTopicData.subject },\n on: { subjectChange: _vm.ChangeSubject }\n })\n : _vm._e(),\n _vm.minTopicData.questionTypeId !== 17 &&\n _vm.minTopicData.smTopic.length == 0\n ? _c(\n \"div\",\n { staticClass: \"min-question-box\" },\n [\n _c(\n \"el-tooltip\",\n {\n staticClass: \"item\",\n attrs: {\n effect: \"dark\",\n content:\n \"小问不需要单独设置模板区域但是每小问需批阅判分\",\n placement: \"top\"\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-warning-outline\" })]\n ),\n _c(\"el-switch\", {\n staticClass: \"switch-is_question\",\n attrs: {\n size: \"mini\",\n \"active-color\": \"#409EFF\",\n \"inactive-color\": \"#bbb\",\n \"active-text\": \"含小问\"\n },\n on: {\n change: function($event) {\n return _vm.changeTopicQues(\n _vm.minTopicData,\n _vm.minTopicData.hasSmQuestion\n )\n }\n },\n model: {\n value: _vm.minTopicData.hasSmQuestion,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"hasSmQuestion\", $$v)\n },\n expression: \"minTopicData.hasSmQuestion\"\n }\n }),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: {\n disabled: !_vm.minTopicData.hasSmQuestion,\n size: \"mini\",\n placeholder: \"\"\n },\n on: {\n change: function($event) {\n return _vm.addQuestion(_vm.minTopicData)\n }\n },\n model: {\n value: _vm.minTopicData.topicQues,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"topicQues\", $$v)\n },\n expression: \"minTopicData.topicQues\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: {\n disabled: _vm.minTopicData.questionTypeId == 17,\n size: \"mini\",\n placeholder: \"\"\n },\n on: {\n change: function($event) {\n return _vm.checkScore(_vm.minTopicData, \"fullScore\")\n }\n },\n model: {\n value: _vm.minTopicData.fullScore,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"fullScore\", $$v)\n },\n expression: \"minTopicData.fullScore\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.minTopicData.questionTypeId == 77\n ? _c(\n \"div\",\n { staticClass: \"right\" },\n [\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { disabled: true, size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkScore(_vm.minTopicData, \"fullScore\")\n }\n },\n model: {\n value: _vm.minTopicData.fullScore,\n callback: function($$v) {\n _vm.$set(_vm.minTopicData, \"fullScore\", $$v)\n },\n expression: \"minTopicData.fullScore\"\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]),\n _c(\n \"div\",\n { staticClass: \"min-question\" },\n _vm._l(_vm.minTopicData.smQuestion, function(minQuestion) {\n return _c(\n \"div\",\n { key: minQuestion.alias, staticClass: \"min-question-item\" },\n [\n _c(\"div\", { staticClass: \"left\" }, [\n _c(\"span\", { staticClass: \"number\" }, [\n _vm._v(_vm._s(minQuestion.alias))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"right\" },\n [\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n _vm.checkScore(minQuestion, \"score\")\n _vm.allAsk(_vm.minTopicData)\n }\n },\n model: {\n value: minQuestion.score,\n callback: function($$v) {\n _vm.$set(minQuestion, \"score\", $$v)\n },\n expression: \"minQuestion.score\"\n }\n })\n ],\n 1\n )\n ]\n )\n }),\n 0\n ),\n _c(\n \"div\",\n { staticClass: \"mini-topic\" },\n _vm._l(_vm.minTopicData.smTopic, function(miniTopic) {\n return _c(\n \"div\",\n { key: miniTopic.topicEditorIndex, staticClass: \"mini-topic-item\" },\n [\n _c(\"div\", { staticClass: \"mini-topic-title\" }, [\n _c(\"div\", { staticClass: \"left\" }, [\n _c(\"i\", {\n staticClass: \"el-icon-remove-outline btn-del-mini-topic\",\n on: {\n click: function($event) {\n return _vm.delMiniTopic(miniTopic)\n }\n }\n }),\n _c(\"span\", { staticClass: \"number\" }, [\n _vm._v(_vm._s(miniTopic.alias))\n ])\n ]),\n _c(\"div\", { staticClass: \"con\" }, [\n _vm._v(_vm._s(_vm.topicTypeName(miniTopic.questionTypeId)))\n ]),\n _c(\n \"div\",\n { staticClass: \"right\" },\n [\n _c(\n \"el-tooltip\",\n {\n staticClass: \"item\",\n attrs: {\n effect: \"dark\",\n content:\n \"小问不需要单独设置模板区域但是每小问需批阅判分\",\n placement: \"top\"\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-warning-outline\" })]\n ),\n _c(\"el-switch\", {\n staticClass: \"switch-is_question\",\n attrs: {\n size: \"mini\",\n \"active-color\": \"#409EFF\",\n \"inactive-color\": \"#bbb\",\n \"active-text\": \"含小问\"\n },\n on: {\n change: function($event) {\n return _vm.changeTopicQues(\n miniTopic,\n miniTopic.hasSmQuestion\n )\n }\n },\n model: {\n value: miniTopic.hasSmQuestion,\n callback: function($$v) {\n _vm.$set(miniTopic, \"hasSmQuestion\", $$v)\n },\n expression: \"miniTopic.hasSmQuestion\"\n }\n }),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: {\n disabled: !miniTopic.hasSmQuestion,\n size: \"mini\",\n placeholder: \"\"\n },\n on: {\n change: function($event) {\n return _vm.addQuestion(miniTopic)\n }\n },\n model: {\n value: miniTopic.topicQues,\n callback: function($$v) {\n _vm.$set(miniTopic, \"topicQues\", $$v)\n },\n expression: \"miniTopic.topicQues\"\n }\n }),\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkScore(miniTopic, \"fullScore\")\n },\n blur: function($event) {\n return _vm.allScore()\n }\n },\n model: {\n value: miniTopic.fullScore,\n callback: function($$v) {\n _vm.$set(miniTopic, \"fullScore\", $$v)\n },\n expression: \"miniTopic.fullScore\"\n }\n })\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"mini-question\" },\n _vm._l(miniTopic.smQuestion, function(miniQuestion) {\n return _c(\n \"div\",\n {\n key: miniQuestion.alias,\n staticClass: \"mini-question-item\"\n },\n [\n _c(\"div\", { staticClass: \"left\" }, [\n _c(\"span\", { staticClass: \"number\" }, [\n _vm._v(_vm._s(miniQuestion.alias))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"right\" },\n [\n _vm._v(\" 分数 \"),\n _c(\"el-input\", {\n staticClass: \"input-min_topic-number\",\n attrs: { size: \"mini\", placeholder: \"\" },\n on: {\n change: function($event) {\n return _vm.checkScore(miniQuestion, \"score\")\n },\n blur: function($event) {\n return _vm.allAsk(miniTopic)\n }\n },\n model: {\n value: miniQuestion.score,\n callback: function($$v) {\n _vm.$set(miniQuestion, \"score\", $$v)\n },\n expression: \"miniQuestion.score\"\n }\n })\n ],\n 1\n )\n ]\n )\n }),\n 0\n )\n ]\n )\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n fontsize: function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.ue-card .edui-editor-toolbarbox{\\r\\n display: none;\\r\\n position: absolute !important;\\r\\n top: -56px;\\n}\\n.ue-card .edui-default .edui-editor{\\r\\n border: none;\\n}\\n#edui_fixedlayer{\\r\\n z-index: 1101!important;\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.card_setting-item .el-radio{\\r\\n margin-right: 10px;\\r\\n /* margin-bottom: 10px; */\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".answer_sheet[data-v-db49e2e6] {\\n display: flex;\\n justify-content: center;\\n padding-right: 330px;\\n background: #e1e1e1;\\n}\\n.answer_sheet .card_edit-wrap[data-v-db49e2e6] {\\n flex: 1;\\n padding: 20px;\\n overflow: auto;\\n background: #e1e1e1;\\n}\\n.answer_sheet .card_setting-wrap[data-v-db49e2e6] {\\n position: absolute;\\n right: 0;\\n top: 0;\\n height: 100%;\\n width: 330px;\\n padding-bottom: 60px;\\n background: #fff;\\n box-sizing: border-box;\\n overflow: auto;\\n}\\n.answer_sheet .btn-go-back[data-v-db49e2e6] {\\n position: fixed;\\n top: 20px;\\n left: 20px;\\n width: 80px;\\n height: 40px;\\n margin: 0 10px;\\n text-align: center;\\n line-height: 40px;\\n background: #97b1c7;\\n border-radius: 4px;\\n color: #fff;\\n font-size: 16px;\\n cursor: pointer;\\n border: 1px solid transparent;\\n z-index: 2000;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".set-disable {\\n background: rgba(0, 0, 0, 0.4);\\n position: absolute;\\n top: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 1;\\n}\\n.paper-item .set-disable {\\n z-index: 1999;\\n background: rgba(0, 0, 0, 0);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".subjectSelect[data-v-170a3c0e] {\\n display: inline-block;\\n width: 110px;\\n}\\n.subjectSelect .select-subject[data-v-170a3c0e] {\\n margin-left: 5px;\\n margin-right: 5px;\\n width: 80px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-item[data-v-5057e78a] {\\n margin-bottom: 30px;\\n font-family: 'Times New Roman', 'Microsoft YaHei';\\n position: relative;\\n background-color: #fff;\\n margin: 0 auto;\\n}\\n.paper-item .page-direction[data-v-5057e78a],\\n.paper-item .page-num-cur[data-v-5057e78a] {\\n position: absolute;\\n bottom: 20px;\\n left: 50%;\\n transform: translateX(-50%);\\n line-height: 30px;\\n font-size: 12px;\\n color: #999;\\n}\\n.paper-item .page-direction[data-v-5057e78a] {\\n padding: 0 5px;\\n bottom: 5px;\\n line-height: 20px;\\n background: #666;\\n color: #fff;\\n}\\n.paper-item-js .main-dot[data-v-5057e78a] {\\n position: absolute;\\n top: 20px;\\n left: 30px;\\n width: 10.58333333mm;\\n height: 5.29166667mm;\\n}\\n.paper-item-js .unique-code-50[data-v-5057e78a] {\\n left: 50px;\\n}\\n.add-topic-tips[data-v-5057e78a] {\\n text-align: center;\\n color: #999;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-content[data-v-53d3a045] {\\n padding: 50px 30px;\\n}\\n.paper-content.line-left[data-v-53d3a045] {\\n padding-left: 50px;\\n padding-right: 30px;\\n}\\n.paper-content.line-right[data-v-53d3a045] {\\n padding-left: 30px;\\n padding-right: 50px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-line[data-v-1f29a758] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 38px;\\n border-right: 2px dashed #bbb;\\n display: none;\\n}\\n.paper-line img[data-v-1f29a758] {\\n position: absolute;\\n width: 2px;\\n height: 100%;\\n right: 0;\\n top: 50%;\\n margin-top: -560px;\\n}\\n.paper-line .line[data-v-1f29a758] {\\n position: absolute;\\n right: -8px;\\n width: 16px;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-around;\\n}\\n.paper-line.line-left[data-v-1f29a758],\\n.paper-line.line-right[data-v-1f29a758] {\\n display: block;\\n border: 0;\\n}\\n.paper-line.line-right[data-v-1f29a758] {\\n left: auto;\\n right: 0;\\n border-left: 2px dashed #bbb;\\n}\\n.paper-line.line-right .line[data-v-1f29a758] {\\n left: -8px;\\n}\\n.paper-line.line-left[data-v-1f29a758] {\\n left: 0;\\n border-right: 2px dashed #bbb;\\n}\\n.paper-line.line-left .line[data-v-1f29a758] {\\n right: -8px;\\n}\\n.paper-line .line span[data-v-1f29a758] {\\n display: block;\\n font-size: 12px;\\n color: #999;\\n transform: rotate(-90deg);\\n -webkit-transform: rotate(-90deg);\\n /* Firefox */\\n -moz-transform: rotate(-90deg);\\n}\\n.paper-line .examinee-info[data-v-1f29a758] {\\n position: absolute;\\n display: flex;\\n justify-content: space-around;\\n flex-direction: column;\\n height: 100%;\\n width: 40px;\\n top: 50%;\\n transform: translateY(-50%);\\n left: 0;\\n}\\n.paper-line .examinee-info .item[data-v-1f29a758] {\\n height: 270px;\\n font-style: normal;\\n}\\n.paper-line .examinee-info .item em[data-v-1f29a758] {\\n display: block;\\n width: 14px;\\n margin-left: 10px;\\n font-size: 14px;\\n font-style: normal;\\n}\\n.paper-line .examinee-info .item em i[data-v-1f29a758] {\\n display: block;\\n font-size: 14px;\\n font-style: normal;\\n transform: rotate(-90deg);\\n -webkit-transform: rotate(-90deg);\\n -ms-transform: rotate(-90deg);\\n -o-transform: rotate(-90deg);\\n -moz-transform: rotate(-90deg);\\n}\\n.paper-line .examinee-info .item span[data-v-1f29a758] {\\n display: flex;\\n flex-direction: column-reverse;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n width: 20px;\\n height: 200px;\\n margin-left: 10px;\\n border-right: 2px solid #333;\\n}\\n.paper-line .examinee-info .item span b[data-v-1f29a758] {\\n font-weight: normal;\\n transform: rotate(-90deg);\\n -webkit-transform: rotate(-90deg);\\n display: block;\\n font-size: 16px;\\n}\\n.paper-line .examinee-info .item span .red[data-v-1f29a758] {\\n font-weight: normal;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-grade[data-v-13c50963] {\\n display: flex;\\n flex: 1;\\n height: 22px;\\n margin-bottom: 10px;\\n}\\n.paper-grade .item[data-v-13c50963] {\\n display: flex;\\n display: -webkit-flex;\\n flex: 1;\\n -webkit-flex: 1;\\n padding: 0 5px;\\n font-style: normal;\\n}\\n.paper-grade .item em[data-v-13c50963] {\\n height: 22px;\\n line-height: 22px;\\n color: #333;\\n font-style: normal;\\n font-size: 16px;\\n}\\n.paper-grade .item span[data-v-13c50963] {\\n flex: 1;\\n -webkit-flex: 1;\\n height: 20px;\\n border-bottom: 2px solid #bbbbbb;\\n display: flex;\\n display: -webkit-flex;\\n justify-content: center;\\n}\\n.paper-grade .item .red[data-v-13c50963] {\\n font-weight: normal;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-attention[data-v-446134ac] {\\n padding-bottom: 20px;\\n}\\n.notice-info[data-v-446134ac] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n border: 2px solid #bbbbbb;\\n border-radius: 4px;\\n font-size: 12px;\\n flex-wrap: wrap;\\n min-height: 120px;\\n}\\n.notice-info .tips-info[data-v-446134ac] {\\n width: 250px;\\n height: 100%;\\n min-height: 120px;\\n}\\n.notice-info .simple-border.right[data-v-446134ac] {\\n left: 330px;\\n}\\n.notice-info .notice-ewm[data-v-446134ac] {\\n position: relative;\\n}\\n.notice-info .notice-ewm .cover[data-v-446134ac] {\\n position: absolute;\\n width: 80px;\\n height: 80px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: #fff;\\n font-style: normal;\\n text-align: center;\\n border: 1px dashed #bbb;\\n z-index: 10;\\n}\\n.notice-info .notice-ewm .dtk-ewm[data-v-446134ac] {\\n width: 70px;\\n height: 70px;\\n}\\n.notice-info .tips-info[data-v-446134ac] {\\n display: flex;\\n position: relative;\\n width: 380px;\\n}\\n.notice-info .warming-info[data-v-446134ac] {\\n display: flex;\\n flex: 1;\\n}\\n.notice-info .simple-border[data-v-446134ac] {\\n position: absolute;\\n height: 100%;\\n width: 2px;\\n background: #bbb;\\n left: 30px;\\n top: 0;\\n}\\n.notice-info .simple-border.right[data-v-446134ac] {\\n left: 470px;\\n}\\n.notice-info .notice-title[data-v-446134ac] {\\n width: 30px;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-around;\\n font-size: 14px;\\n align-items: center;\\n font-weight: bold;\\n}\\n.notice-info .notice-title i[data-v-446134ac] {\\n font-style: normal;\\n}\\n.notice-info .notice-detail[data-v-446134ac] {\\n flex: 1;\\n padding: 5px;\\n padding-right: 0;\\n line-height: 16px;\\n color: #333;\\n border-right: 2px solid #bbb;\\n}\\n.notice-info .notice-detail p[data-v-446134ac] {\\n line-height: 16px;\\n}\\n.notice-info .notice-ewm[data-v-446134ac] {\\n width: 90px;\\n min-height: 80px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.notice-info .notice-ewm .dtk-ewm[data-v-446134ac] {\\n width: 80px;\\n height: 80px;\\n}\\n.notice-info .notice-ewm .dtk-ewm canvas[data-v-446134ac] {\\n width: 100%;\\n height: 100%;\\n}\\n.notice-info .noticeLose[data-v-446134ac] {\\n flex: 1;\\n padding: 5px;\\n box-sizing: border-box;\\n line-height: 12px;\\n}\\n.notice-info .noticeLose p[data-v-446134ac] {\\n line-height: 16px;\\n}\\n.notice-info .noticeLose h4[data-v-446134ac] {\\n display: flex;\\n align-items: center;\\n font-weight: normal;\\n}\\n.notice-info .noticeLose h4 i[data-v-446134ac] {\\n width: 24px;\\n height: 14px;\\n margin-left: 10px;\\n border: 2px solid #bbb;\\n}\\n.page-width-small .tips-info[data-v-446134ac] {\\n width: 250px;\\n}\\n.page-width-small .simple-border.right[data-v-446134ac] {\\n left: 340px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-card[data-v-22940c34] {\\n padding-bottom: 10px;\\n}\\n.card-flex[data-v-22940c34] {\\n display: flex;\\n align-items: center;\\n}\\n.card-flex .card-title[data-v-22940c34] {\\n margin-right: 5px;\\n line-height: 22px;\\n}\\n.card-flex .card-id[data-v-22940c34] {\\n border: 1px solid #bbb;\\n color: #555555;\\n}\\n.card-flex .card-id .square[data-v-22940c34] {\\n display: block;\\n width: 22px;\\n height: 20px;\\n border-right: 1px solid #bbb;\\n}\\n.card-flex .card-id .iconfont[data-v-22940c34] {\\n width: 13px;\\n height: 10px;\\n line-height: 10px;\\n font-size: 11px;\\n color: #666;\\n}\\n.card-flex .card-id ul[data-v-22940c34] {\\n border-top: 1px solid #bbb;\\n}\\n.card-flex .card-id > div:last-child .square[data-v-22940c34] {\\n border-right: 0;\\n}\\n.card-flex .card-id > div:last-child li[data-v-22940c34] {\\n border-right: 0;\\n}\\n.card-flex .card-id li[data-v-22940c34] {\\n width: 22px;\\n height: 20px;\\n line-height: 20px;\\n text-align: center;\\n border-right: 1px solid #bbb;\\n}\\n.card-flex .card-id li img[data-v-22940c34] {\\n width: 15px;\\n height: 12px;\\n}\\n.card-flex .card-id.only-code[data-v-22940c34] {\\n border: 0;\\n}\\n.card-flex .card-id.only-code > div[data-v-22940c34] {\\n border: 1px solid #bbb;\\n}\\n.card-flex .card-id.only-code .square[data-v-22940c34] {\\n border-right: 1px solid #bbb !important;\\n}\\n.card-flex .card-id.only-code .square[data-v-22940c34]:last-child {\\n border: 0!important;\\n}\\n.card-flex .card-code[data-v-22940c34] {\\n flex: 1;\\n text-align: right;\\n}\\n.card-flex .card-code .code-img[data-v-22940c34] {\\n padding: 10px;\\n border: 1px dashed #bbb;\\n border-radius: 3px;\\n}\\n.card-flex .card-code .code-img .code-words[data-v-22940c34] {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n text-align: center;\\n justify-content: space-around;\\n width: 100px;\\n height: 200px;\\n border: 2px solid #bbb;\\n border-radius: 3px;\\n}\\n.card-flex .card-code .code-img .code-words.cross-code[data-v-22940c34] {\\n width: 200px;\\n height: 100px!important;\\n flex-direction: row;\\n}\\n.card-flex .card-code .code-img .code-words i[data-v-22940c34] {\\n font-style: normal;\\n color: #bbb;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-info[data-v-2dacf6d2] {\\n position: relative;\\n display: flex;\\n height: 50px;\\n justify-content: space-around;\\n align-items: center;\\n}\\n.paper-info span[data-v-2dacf6d2] {\\n font-size: 14px;\\n color: #333;\\n line-height: 50px;\\n /* text-align: center; */\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n flex: 1;\\n}\\n.paper-info span[data-v-2dacf6d2]:nth-child(1) {\\n min-width: 110px;\\n}\\n.paper-info span[data-v-2dacf6d2]:nth-child(2) {\\n min-width: 110px;\\n}\\n.paper-info .input-paper-info[data-v-2dacf6d2] {\\n width: 56px;\\n background: #fff;\\n}\\n.paper-info .input-paper-info.number[data-v-2dacf6d2] {\\n width: 25px;\\n}\\n.paper-info:hover .btn-paper-info[data-v-2dacf6d2] {\\n display: block;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-title[data-v-7c485838] {\\n height: 55px;\\n font-size: 18px;\\n margin-bottom: 10px;\\n text-align: center;\\n}\\n.paper-title textarea[data-v-7c485838] {\\n display: block;\\n width: 100%;\\n height: 55px;\\n text-align: center;\\n resize: none;\\n outline: none;\\n font-size: 18px;\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n border: 1px solid #bbbbbb;\\n color: #000;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".article-chinese[data-v-47221792] {\\n border: 1px solid #000;\\n}\\n.article-svg[data-v-47221792] {\\n width: 100%;\\n}\\n.article-rect[data-v-47221792] {\\n fill: #fff;\\n stroke-width: 1;\\n stroke: #000;\\n box-sizing: border-box;\\n}\\ntext[data-v-47221792] {\\n font-size: 12px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".choose-topic .title[data-v-1ac7aaaf] {\\n position: relative;\\n line-height: 30px;\\n}\\n.choose-topic .title .topic-no[data-v-1ac7aaaf] {\\n position: absolute;\\n}\\n.choose-topic .title .title-content[data-v-1ac7aaaf] {\\n text-indent: 2em;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".topic[data-v-82365b74] {\\n border: 0;\\n}\\n.title[data-v-82365b74] {\\n position: relative;\\n line-height: 22px;\\n}\\n.title .topic-no[data-v-82365b74] {\\n position: absolute;\\n}\\n.title .title-content[data-v-82365b74] {\\n text-indent: 1.5em;\\n}\\n.options[data-v-82365b74] {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n justify-content: left;\\n flex-wrap: wrap;\\n padding-left: 20px;\\n}\\n.options li[data-v-82365b74] {\\n padding-right: 30px;\\n width: 50%;\\n display: flex;\\n align-items: center;\\n}\\n.options li .options-words[data-v-82365b74] {\\n margin-right: 2px;\\n}\\n.options li.list-style-0[data-v-82365b74] {\\n width: 100%;\\n}\\n.options li.list-style-1[data-v-82365b74] {\\n width: 25%;\\n}\\n.options li.list-style-2[data-v-82365b74] {\\n width: 50%;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".flex-direction-1 .single-option[data-v-58a35907] {\\n flex-direction: row;\\n}\\n.flex-direction-1 .single-option li[data-v-58a35907] {\\n flex-direction: column;\\n}\\n.flex-direction-0 .single-option[data-v-58a35907] {\\n flex-direction: column;\\n}\\n.flex-direction-0 .single-option li[data-v-58a35907] {\\n flex-direction: row;\\n}\\n.single-option[data-v-58a35907] {\\n position: relative;\\n padding: 10px;\\n display: flex;\\n display: -webkit-flex;\\n font-size: 12px;\\n flex-wrap: wrap;\\n -webkit-flex-wrap: wrap;\\n align-content: flex-start;\\n align-content: -webkit-flex-start;\\n color: #555555;\\n /* min-height: 100px; */\\n}\\n.single-option .iconfont[data-v-58a35907] {\\n font-size: 12px;\\n color: #666;\\n}\\n/* .single-option.more-option{\\n width: 210px;\\n} */\\n.single-option li[data-v-58a35907] {\\n display: flex;\\n -webkit-display: flex;\\n align-items: center;\\n}\\n.single-option li em[data-v-58a35907],\\n.single-option li span[data-v-58a35907] {\\n display: flex;\\n -webkit-display: flex;\\n width: 15px;\\n height: 12px;\\n text-align: center;\\n margin: 3px 4px;\\n font-style: normal;\\n align-items: center;\\n justify-content: center;\\n}\\n.single-option li em[data-v-58a35907] {\\n width: 20px;\\n margin: 3px 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../../../assets/img-answer-sheet/img-drag.png\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\nexports.push([module.id, \".topic-item[data-v-d30766fe] {\\n padding-top: 10px;\\n}\\n.module[data-v-d30766fe] {\\n position: relative;\\n font-size: 12px;\\n border: 2px solid #bbbbbb;\\n border-radius: 4px;\\n background: #fff;\\n}\\n.module:hover .btn-paper-info[data-v-d30766fe],\\n.module:hover .del-btn[data-v-d30766fe] {\\n display: block;\\n}\\n.module .scoring-box[data-v-d30766fe] {\\n width: 100%;\\n display: flex;\\n border-bottom: 1px solid #bbb;\\n font-size: 10px;\\n}\\n.module .scoring-box span[data-v-d30766fe] {\\n flex: 1;\\n position: relative;\\n height: 30px;\\n text-align: center;\\n line-height: 30px;\\n border-right: 1px solid #bbb;\\n}\\n.module .scoring-box span[data-v-d30766fe]:last-child {\\n border-right: 1px solid transparent;\\n}\\n.module .scoring-box .no-scoring[data-v-d30766fe] {\\n flex: initial;\\n min-width: 40px;\\n color: #dddddd;\\n}\\n.module .optional-box[data-v-d30766fe] {\\n position: absolute;\\n right: 10px;\\n top: 41px;\\n height: 15px;\\n z-index: 1100;\\n background-color: #fff;\\n}\\n.module .optional-box span[data-v-d30766fe] {\\n font-size: 14px;\\n margin: 0 10px;\\n text-align: center;\\n box-sizing: border-box;\\n}\\n.module .btn-edit-big-topic-box .btn-drag[data-v-d30766fe] {\\n position: absolute;\\n bottom: 1px;\\n right: 1px;\\n width: 20px;\\n height: 20px;\\n background: #fff url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat center;\\n cursor: pointer;\\n z-index: 1100;\\n}\\n.module .btn-edit-big-topic-box .btn-del-topic-over[data-v-d30766fe] {\\n position: absolute;\\n top: 1px;\\n right: -20px;\\n width: 20px;\\n height: 20px;\\n line-height: 20px;\\n text-align: center;\\n background: #f2f2f2;\\n cursor: pointer;\\n z-index: 1100;\\n border: 1px solid #ddd;\\n}\\n.topic-content[data-v-d30766fe] {\\n position: relative;\\n}\\n.topic-content .no-drug-shadow[data-v-d30766fe] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: rgba(0, 0, 0, 0);\\n z-index: 1004;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".topic-fill[data-v-3e8f2b69] {\\n padding: 10px;\\n}\\n.subjectCol[data-v-3e8f2b69] {\\n width: 100%;\\n line-height: 40px;\\n}\\n.subjectCol.col-1 .fill-item[data-v-3e8f2b69] {\\n width: 100%;\\n}\\n.subjectCol.col-2 .fill-item[data-v-3e8f2b69] {\\n width: calc(50% - 10px);\\n}\\n.subjectCol.col-3 .fill-item[data-v-3e8f2b69] {\\n width: calc(33% - 10px);\\n}\\n.subjectCol .fill-item[data-v-3e8f2b69] {\\n float: left;\\n align-items: flex-end;\\n padding-right: 3px;\\n padding-top: 10px;\\n width: 100%;\\n display: flex;\\n}\\n.subjectCol .fill-item span[data-v-3e8f2b69] {\\n display: flex;\\n width: 25px;\\n align-items: flex-end;\\n text-align: center;\\n line-height: 25px;\\n}\\n.subjectCol .fill-item em[data-v-3e8f2b69] {\\n position: relative;\\n height: 40px;\\n flex: 1;\\n border-bottom: 1px solid #bbbbbb;\\n}\\n.subjectCol .fill-item strong[data-v-3e8f2b69] {\\n display: flex;\\n align-items: flex-end;\\n}\\n.subjectCol .fill-item strong i[data-v-3e8f2b69] {\\n margin-left: -1px;\\n width: 25px;\\n height: 25px;\\n font-style: normal;\\n text-align: center;\\n line-height: 25px;\\n border: 1px solid #bbb;\\n font-weight: normal;\\n color: #999;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".big-topic-title {\\n font-family: 'MicroSoft YaHei';\\n padding: 5px 0;\\n font-size: 14px;\\n color: #555555;\\n line-height: 20px;\\n font-weight: bold;\\n text-align: justify;\\n border: 2px solid transparent;\\n border-radius: 3px;\\n}\\n.big-topic-title:focus {\\n border-color: #333;\\n}\\n.big-topic-title span {\\n font-size: 12px;\\n font-weight: normal;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".card_setting[data-v-67dd6ae4] {\\n position: relative;\\n}\\n.card_setting .card_setting-title[data-v-67dd6ae4] {\\n height: 40px;\\n line-height: 40px;\\n text-align: center;\\n font-size: 16px;\\n font-weight: 600;\\n color: #233d4d;\\n background: #eef0f0;\\n}\\n.card_setting .overBox[data-v-67dd6ae4] {\\n height: 420px;\\n padding-bottom: 30px;\\n overflow: auto;\\n}\\n.card_setting .card_setting-item[data-v-67dd6ae4] {\\n display: flex;\\n padding-top: 15px;\\n padding-bottom: 15px;\\n}\\n.card_setting .card_setting-item .name[data-v-67dd6ae4] {\\n width: 80px;\\n padding: 0 10px;\\n font-size: 18px;\\n text-align: justify;\\n -moz-text-align-last: justify;\\n text-align-last: justify;\\n}\\n.card_setting .card_setting-item .content[data-v-67dd6ae4] {\\n flex: 1;\\n align-items: center;\\n font-size: 16px;\\n flex-wrap: wrap;\\n}\\n.card_setting .card_setting-item .content .centerBox[data-v-67dd6ae4] {\\n display: inline-block;\\n vertical-align: -1px;\\n}\\n.card_setting .card_setting-item .content .centerBox .icontishi1[data-v-67dd6ae4] {\\n position: relative;\\n vertical-align: top;\\n font-size: 16px;\\n cursor: pointer;\\n color: #bbb;\\n display: inline-block;\\n}\\n.card_setting .card_setting-item .content .centerBox .icontishi1 b[data-v-67dd6ae4] {\\n display: inline-block;\\n width: 140px;\\n position: absolute;\\n left: -62px;\\n top: -107px;\\n background: rgba(0, 0, 0, 0.6);\\n padding: 10px;\\n border-radius: 10px;\\n color: #fff;\\n font-weight: normal;\\n font-size: 14px;\\n line-height: 20px;\\n z-index: 1;\\n}\\n.card_setting .card_setting-item .content .ewmCenterBox[data-v-67dd6ae4] {\\n display: inline-block;\\n margin-top: 10px;\\n height: 20px;\\n margin-bottom: 0;\\n vertical-align: middle;\\n line-height: 20px;\\n}\\n.card_setting .card_setting-item .content .ewmCenterBox .ewmFont[data-v-67dd6ae4] {\\n vertical-align: middle;\\n margin-left: 10px;\\n margin-bottom: 0!important;\\n}\\n.card_setting .card_setting-item .content .el-switch[data-v-67dd6ae4] {\\n display: inline-block !important;\\n}\\n.card_setting .card_setting-item .content .el-switch__label[data-v-67dd6ae4] {\\n display: inline-block;\\n height: 20px;\\n line-height: 20px;\\n}\\n.card_setting .card_setting-item .content .el-switch__label[data-v-67dd6ae4]:before {\\n content: \\\"1111\\\";\\n}\\n.card_setting .subject-list .s-num[data-v-67dd6ae4] {\\n margin-left: 5px;\\n display: inline-block;\\n}\\n.card_setting .layoutList[data-v-67dd6ae4] {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n}\\n.card_setting .layoutList .layoutItem[data-v-67dd6ae4] {\\n position: relative;\\n display: flex;\\n margin-right: 10px;\\n flex-direction: column;\\n align-items: center;\\n cursor: pointer;\\n}\\n.card_setting .layoutList .layoutItem.current span[data-v-67dd6ae4] {\\n border-color: #4e8ee9;\\n}\\n.card_setting .layoutList .layoutItem.current em[data-v-67dd6ae4] {\\n color: #4e8ee9;\\n}\\n.card_setting .layoutList .layoutItem.current .icon_current[data-v-67dd6ae4] {\\n display: block;\\n}\\n.card_setting .layoutList .layoutItem.current i[data-v-67dd6ae4] {\\n background: #4e8ee9;\\n}\\n.card_setting .layoutList .layoutItem.disabled[data-v-67dd6ae4] {\\n cursor: not-allowed;\\n opacity: 0.3;\\n background-color: #fff !important;\\n}\\n.card_setting .layoutList .layoutItem span[data-v-67dd6ae4] {\\n width: 66px;\\n height: 66px;\\n padding: 0 5px;\\n box-sizing: border-box;\\n border: 2px solid #bbb;\\n display: flex;\\n align-items: center;\\n justify-content: space-around;\\n}\\n.card_setting .layoutList .layoutItem i[data-v-67dd6ae4] {\\n flex: 1;\\n height: 55px;\\n margin: 0 2px;\\n background: #bbb;\\n}\\n.card_setting .layoutList .layoutItem em[data-v-67dd6ae4] {\\n font-style: normal;\\n font-size: 12px;\\n line-height: 40px;\\n}\\n.card_setting .layoutList .layoutItem .icon_current[data-v-67dd6ae4] {\\n display: none;\\n position: absolute;\\n width: 30px;\\n height: 30px;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -95%);\\n border-radius: 50%;\\n border: 2px solid yellow;\\n}\\n.card_setting .layoutList .layoutItem .icon_current[data-v-67dd6ae4]:after,\\n.card_setting .layoutList .layoutItem .icon_current[data-v-67dd6ae4]:before {\\n content: \\\"\\\";\\n position: absolute;\\n width: 14px;\\n height: 7px;\\n border-bottom: 2px solid yellow;\\n border-left: 2px solid yellow;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%) rotate(-45deg);\\n}\\n.card_setting .border_b[data-v-67dd6ae4] {\\n border-bottom: 1px solid #bbb;\\n}\\n.card_setting .edit-topic-btn-box .btn-add-topic[data-v-67dd6ae4] {\\n display: block;\\n margin: 20px auto;\\n width: 100px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 4px;\\n text-align: center;\\n font-size: 16px;\\n color: #fff;\\n background: #97b1c7;\\n}\\n.card_setting .edit-topic-btn-box .btn-set-answer[data-v-67dd6ae4] {\\n display: block;\\n font-size: 16px;\\n text-align: center;\\n color: #6A8296;\\n cursor: pointer;\\n}\\n.card_setting .btn-card-box[data-v-67dd6ae4] {\\n position: fixed;\\n display: flex;\\n width: 330px;\\n right: 0;\\n bottom: 0;\\n z-index: 3;\\n padding-bottom: 20px;\\n padding-top: 20px;\\n background: #fff;\\n text-align: center;\\n padding-left: 10px;\\n}\\n.card_setting .btn-card-box .btn[data-v-67dd6ae4] {\\n margin: 0 10px;\\n width: 80px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 4px;\\n text-align: center;\\n font-size: 16px;\\n color: #fff;\\n background: #97b1c7;\\n}\\n.card_setting .btn-card-box .btn-card-save[data-v-67dd6ae4] {\\n background: #85b3e7;\\n}\\n.card_setting .btn-card-box .btn-card-down[data-v-67dd6ae4] {\\n background: #5bcf9a;\\n}\\n.card_setting .disabled[data-v-67dd6ae4] {\\n background: #999 !important;\\n cursor: not-allowed;\\n}\\n.to-pdf-html-box[data-v-67dd6ae4] {\\n position: fixed;\\n left: 0;\\n top: 0;\\n z-index: -99999;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".card_setting-title[data-v-75214108] {\\n height: 40px;\\n line-height: 40px;\\n text-align: center;\\n font-size: 16px;\\n font-weight: 600;\\n color: #233d4d;\\n background: #eef0f0;\\n}\\n.btn-card-box[data-v-75214108] {\\n position: fixed;\\n width: 330px;\\n right: 0;\\n bottom: 20px;\\n text-align: center;\\n}\\n.btn-card-box .btn[data-v-75214108] {\\n margin: 0 10px;\\n width: 80px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 4px;\\n text-align: center;\\n font-size: 16px;\\n color: #fff;\\n background: #97b1c7;\\n}\\n.btn-card-box .btn-card-save[data-v-75214108] {\\n background: #85b3e7;\\n}\\n.set-select-list[data-v-75214108] {\\n padding-bottom: 80px;\\n}\\n.set-select-list .answer-item[data-v-75214108] {\\n display: flex;\\n align-items: baseline;\\n padding: 10px;\\n font-size: 14px;\\n border-bottom: 1px dashed #ddd;\\n}\\n.set-select-list .answer-item .number[data-v-75214108] {\\n width: 25px;\\n}\\n.set-select-list .answer-item .topic-type-name[data-v-75214108] {\\n width: 95px;\\n}\\n.set-select-list .answer-item .option-box[data-v-75214108] {\\n flex: 1;\\n display: flex;\\n flex-wrap: wrap;\\n}\\n.set-select-list .answer-item .option-box .answer-option[data-v-75214108] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 30px;\\n height: 30px;\\n margin-right: 10px;\\n margin-bottom: 10px;\\n background: #FFFFFF;\\n border: 1px solid #6A8296;\\n font-style: normal;\\n border-radius: 2px;\\n color: #6A8296;\\n cursor: pointer;\\n}\\n.set-select-list .answer-item .option-box .active[data-v-75214108] {\\n background: #6A8296;\\n color: #fff;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".add-topic .topic-edit-item[data-v-4aaf48c3] {\\n margin-right: 10px;\\n}\\n.add-topic .topic-edit-item .disabled[data-v-4aaf48c3] {\\n color: #eee;\\n cursor: not-allowed !important;\\n}\\n.add-topic .topic-edit-item label[data-v-4aaf48c3] {\\n margin-right: 5px;\\n}\\n.add-topic .topic-edit-item .select-big_topic-number[data-v-4aaf48c3] {\\n width: 120px;\\n}\\n.add-topic .topic-edit-item .input-big_topic-name[data-v-4aaf48c3] {\\n width: 200px;\\n}\\n.add-topic .topic-edit-item .input-min_topic-number[data-v-4aaf48c3] {\\n margin: 0 5px;\\n width: 60px;\\n}\\n.add-topic .topic-type[data-v-4aaf48c3] {\\n margin-top: 10px;\\n}\\n.add-topic .topic-type .select-topic-topicType[data-v-4aaf48c3] {\\n width: 120px;\\n margin-left: 14px;\\n}\\n.add-topic .topic-type .select-choose_topic[data-v-4aaf48c3] {\\n width: 60px;\\n}\\n.add-topic .topic-type .btn-add-topic-type[data-v-4aaf48c3],\\n.add-topic .topic-type .btn-del-topic-type[data-v-4aaf48c3] {\\n font-size: 28px;\\n vertical-align: middle;\\n cursor: pointer;\\n}\\n.add-topic .topic-list[data-v-4aaf48c3] {\\n margin-top: 20px;\\n margin-bottom: 20px;\\n min-height: 200px;\\n max-height: 340px;\\n overflow: auto;\\n border: 1px solid #ddd;\\n}\\n.add-topic .topic-list .topic-list-item[data-v-4aaf48c3] {\\n padding: 10px 20px;\\n border-bottom: 1px dashed #ccc;\\n}\\n.add-topic .topic-list .topic-list-item[data-v-4aaf48c3]:last-child {\\n border-bottom: none;\\n}\\n.add-topic .topic-card-setting[data-v-4aaf48c3] {\\n padding-bottom: 20px;\\n}\\n.add-topic .btn-box[data-v-4aaf48c3] {\\n padding-top: 30px;\\n border-top: 1px solid #ddd;\\n text-align: center;\\n}\\n.add-topic .btn-box .btn[data-v-4aaf48c3] {\\n margin: 0 10px;\\n width: 80px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 4px;\\n text-align: center;\\n font-size: 16px;\\n color: #fff;\\n background: #97b1c7;\\n}\\n.add-topic .btn-box .btn-topic-edit-save[data-v-4aaf48c3] {\\n background: #85b3e7;\\n}\\n.color-red[data-v-4aaf48c3] {\\n color: red;\\n}\\n.msg[data-v-4aaf48c3] {\\n line-height: 200px;\\n text-align: center;\\n color: #ccc;\\n font-size: 16px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".min-topic-box .input-min_topic-number[data-v-afe023e2] {\\n width: 60px;\\n}\\n.min-topic[data-v-afe023e2] {\\n overflow: hidden;\\n line-height: 28px;\\n}\\n.min-topic .left[data-v-afe023e2] {\\n float: left;\\n width: 120px;\\n}\\n.min-topic .left .number[data-v-afe023e2] {\\n display: inline-block;\\n width: 30px;\\n}\\n.min-topic .left .btn-add-min-topic[data-v-afe023e2] {\\n cursor: pointer;\\n color: #409EFF;\\n}\\n.min-topic .left .btn-add-min-topic i[data-v-afe023e2] {\\n font-style: normal;\\n}\\n.min-topic .con[data-v-afe023e2] {\\n float: left;\\n margin-left: 100px;\\n color: #ccc;\\n}\\n.min-topic .right[data-v-afe023e2] {\\n float: right;\\n}\\n.min-topic .right .switch-is_question[data-v-afe023e2] {\\n margin-left: 5px;\\n width: 100px;\\n}\\n.min-question-box[data-v-afe023e2] {\\n display: inline-block;\\n}\\n.min-question[data-v-afe023e2] {\\n padding-left: 30px;\\n}\\n.min-question .min-question-item[data-v-afe023e2] {\\n padding: 20px 0;\\n}\\n.min-question .min-question-item .left[data-v-afe023e2] {\\n float: left;\\n}\\n.min-question .min-question-item .right[data-v-afe023e2] {\\n float: right;\\n}\\n.mini-topic .mini-topic-title[data-v-afe023e2] {\\n overflow: hidden;\\n}\\n.mini-topic .mini-question-item[data-v-afe023e2] {\\n padding: 10px 0;\\n overflow: hidden;\\n}\\n.mini-topic-item[data-v-afe023e2] {\\n padding: 10px 0;\\n line-height: 28px;\\n overflow: hidden;\\n}\\n.mini-topic-item .left[data-v-afe023e2] {\\n float: left;\\n width: 120px;\\n}\\n.mini-topic-item .left .btn-del-mini-topic[data-v-afe023e2] {\\n margin-right: 5px;\\n cursor: pointer;\\n}\\n.mini-topic-item .left .btn-add-min-topic[data-v-afe023e2] {\\n color: #409EFF;\\n}\\n.mini-topic-item .left .btn-add-min-topic i[data-v-afe023e2] {\\n font-style: normal;\\n}\\n.mini-topic-item .con[data-v-afe023e2] {\\n float: left;\\n margin-left: 100px;\\n color: #ccc;\\n}\\n.mini-topic-item .right[data-v-afe023e2] {\\n float: right;\\n}\\n.mini-topic-item .right .switch-is_question[data-v-afe023e2] {\\n margin-left: 5px;\\n width: 100px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.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!./UeCard.vue?vue&type=style&index=0&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2924328e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.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!./UeCard.vue?vue&type=style&index=0&lang=css&\", function() {\n var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.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!./UeCard.vue?vue&type=style&index=0&lang=css&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.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=1&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"38d0619a\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.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=1&lang=css&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.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=1&lang=css&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=db49e2e6&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"139e5860\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=db49e2e6&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=db49e2e6&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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=1&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2aad200f\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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=1&lang=less&\", function() {\n var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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=1&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1d24d5ca\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=5057e78a&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3f69fa5a\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=5057e78a&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=5057e78a&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"9954dcb6\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"232e9692\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"75c164a8\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5e0f046c\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"53fdb81d\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"64baa8b6\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1d31d6f4\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"989b6186\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"48078cb8\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"02df147c\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"39da6b9b\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6d9b00de\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"66ad1bce\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=style&index=0&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"13a115a6\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=style&index=0&lang=less&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=style&index=0&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=67dd6ae4&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5b18fb21\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=67dd6ae4&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=67dd6ae4&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"375bdc68\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"743af44a\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4f0ade0a\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/* eslint-disable */\r\nUE.registerUI('horizontalline', function(editor, uiname){\r\n // var uiname = 'toMathType';\r\n // console.log(editor,text);\r\n let toMathType = {\r\n type:0,\r\n text:''\r\n }\r\n // 创建dialog\r\n var HorizontalLineDialog = new UE.ui.Dialog({\r\n\r\n\r\n // 指定弹出层路径\r\n iframeUrl: editor.options.UEDITOR_HOME_URL + 'horizontal-line/HorizontalLineDialog.html',\r\n\r\n // 编辑器实例\r\n editor: editor,\r\n // dialog 名称\r\n name: uiname,\r\n // dialog 标题\r\n title: '插入答题横线',\r\n\r\n // dialog 外围 css\r\n cssRules: 'width:430px; height: 188px;',\r\n\r\n //如果给出了buttons就代表dialog有确定和取消\r\n buttons:[\r\n {\r\n className:'edui-okbutton',\r\n label:'确定',\r\n onclick:function () {\r\n HorizontalLineDialog.close(true);\r\n }\r\n },\r\n {\r\n className:'edui-cancelbutton',\r\n label:'取消',\r\n onclick:function () {\r\n HorizontalLineDialog.close(false);\r\n }\r\n }\r\n ]});\r\n\r\n editor.ready(function(){\r\n UE.utils.cssRule('kfformula', 'img.kfformula{vertical-align: middle;}', editor.document);\r\n });\r\n\r\n // var iconUrl = editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kf-icon.png';\r\n var iconUrl =editor.options.UEDITOR_HOME_URL + 'horizontal-line/horizontal-line-icon.png';\r\n var tmpLink = document.createElement('a');\r\n tmpLink.href = iconUrl;\r\n tmpLink.href = tmpLink.href;\r\n iconUrl = tmpLink.href;\r\n\r\n var HorizontalLineBtn = new UE.ui.Button({\r\n name:'插入' + uiname,\r\n title:'插入答题横线-' + uiname,\r\n //需要添加的额外样式,指定icon图标\r\n cssRules :'background: url(\"' + iconUrl + '\") !important',\r\n onclick:function () {\r\n //渲染dialog\r\n HorizontalLineDialog.render();\r\n HorizontalLineDialog.open();\r\n }\r\n });\r\n\r\n //当点到编辑内容上时,按钮要做的状态反射\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState(uiname);\r\n if (state == -1) {\r\n HorizontalLineBtn.setDisabled(true);\r\n HorizontalLineBtn.setChecked(false);\r\n } else {\r\n HorizontalLineBtn.setDisabled(false);\r\n HorizontalLineBtn.setChecked(state);\r\n }\r\n });\r\n\r\n return HorizontalLineBtn;\r\n\r\n});\r\n\r\n","/* eslint-disable */\r\nUE.registerUI('kityformula', function(editor, uiname){\r\n // console.log(editor);\r\n // 创建dialog\r\n var kfDialog = new UE.ui.Dialog({\r\n\r\n // 指定弹出层路径\r\n iframeUrl: editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kityFormulaDialog.html',\r\n // iframeUrl: '../../public/ueditor/kityformula-plugin/kityFormulaDialog.html',\r\n\r\n // 编辑器实例\r\n editor: editor,\r\n // dialog 名称\r\n name: uiname,\r\n // dialog 标题\r\n title: '插入公式 - zhixinhuixue',\r\n\r\n // dialog 外围 css\r\n cssRules: 'width:783px; height: 386px;',\r\n\r\n //如果给出了buttons就代表dialog有确定和取消\r\n buttons:[\r\n {\r\n className:'edui-okbutton',\r\n label:'确定',\r\n onclick:function () {\r\n kfDialog.close(true);\r\n // editor.getKfContent(function(content){\r\n // console.log(content)\r\n // });//将公式图片base64替换成链接\r\n\r\n // setTimeout(function (){\r\n // editor.getKfContent(function(content){\r\n // console.log(content)\r\n // });//将公式图片base64替换成链接\r\n // },100)\r\n }\r\n },\r\n {\r\n className:'edui-cancelbutton',\r\n label:'取消',\r\n onclick:function () {\r\n kfDialog.close(false);\r\n }\r\n }\r\n ]});\r\n\r\n editor.ready(function(){\r\n UE.utils.cssRule('kfformula', 'img.kfformula{vertical-align: middle;}', editor.document);\r\n });\r\n\r\n var iconUrl = editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kf-icon.png';\r\n// var iconUrl = '/ueditor/kityformula-plugin/kf-icon.png';\r\n var tmpLink = document.createElement('a');\r\n tmpLink.href = iconUrl;\r\n tmpLink.href = tmpLink.href;\r\n iconUrl = tmpLink.href;\r\n\r\n var kfBtn = new UE.ui.Button({\r\n name:'插入' + uiname,\r\n title:'插入公式',\r\n //需要添加的额外样式,指定icon图标\r\n cssRules :'background: url(\"' + iconUrl + '\") !important',\r\n onclick:function () {\r\n //渲染dialog\r\n kfDialog.render();\r\n kfDialog.open();\r\n }\r\n });\r\n\r\n //当点到编辑内容上时,按钮要做的状态反射\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState(uiname);\r\n if (state == -1) {\r\n kfBtn.setDisabled(true);\r\n kfBtn.setChecked(false);\r\n } else {\r\n kfBtn.setDisabled(false);\r\n kfBtn.setChecked(state);\r\n }\r\n });\r\n\r\n return kfBtn;\r\n\r\n});\r\n","///import core\r\n///plugin 编辑器默认的过滤转换机制\r\n/* eslint-disable */\r\nUE.plugins['defaultfilter'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'allowDivTransToP':true,\r\n 'disabledTableInTable':true,\r\n 'rgb2Hex':true\r\n });\r\n //默认的过滤处理\r\n //进入编辑器的内容处理\r\n me.addInputRule(function (root) {\r\n var allowDivTransToP = this.options.allowDivTransToP;\r\n var val;\r\n function tdParent(node){\r\n while(node && node.type == 'element'){\r\n if(node.tagName == 'td'){\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n //进行默认的处理\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n if (!UE.dom.dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && UE.dom.dtd.$inline[node.tagName] && !UE.dom.dtd.$empty[node.tagName] && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) {\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'style':\r\n case 'script':\r\n node.setAttr({\r\n cdata_tag: node.tagName,\r\n cdata_data: (node.innerHTML() || ''),\r\n '_ue_custom_node_':'true'\r\n });\r\n node.tagName = 'div';\r\n node.innerHTML('');\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('href')) {\r\n node.setAttr('_href', val)\r\n }\r\n break;\r\n case 'img':\r\n //todo base64暂时去掉,后边做远程图片上传后,干掉这个\r\n// if (val = node.getAttr('src')) {\r\n// if (/^data:/.test(val)) {\r\n// node.parentNode.removeChild(node);\r\n// break;\r\n// }\r\n// }\r\n node.setAttr('_src', node.getAttr('src'));\r\n break;\r\n case 'span':\r\n if (UE.browser.webkit && (val = node.getStyle('white-space'))) {\r\n if (/nowrap|normal/.test(val)) {\r\n node.setStyle('white-space', '');\r\n if (me.options.autoClearEmptyNode && UE.utils.isEmptyObject(node.attrs)) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n }\r\n }\r\n val = node.getAttr('id');\r\n if(val && /^_baidu_bookmark_/i.test(val)){\r\n node.parentNode.removeChild(node)\r\n }\r\n break;\r\n case 'p':\r\n if (val = node.getAttr('align')) {\r\n node.setAttr('align');\r\n node.setStyle('text-align', val)\r\n }\r\n //trace:3431\r\n// var cssStyle = node.getAttr('style');\r\n// if (cssStyle) {\r\n// cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, '');\r\n// node.setAttr('style', cssStyle)\r\n//\r\n// }\r\n //p标签不允许嵌套\r\n UE.utils.each(node.children,function(n){\r\n if(n.type == 'element' && n.tagName == 'p'){\r\n var next = n.nextSibling();\r\n node.parentNode.insertAfter(n,node);\r\n var last = n;\r\n while(next){\r\n var tmp = next.nextSibling();\r\n node.parentNode.insertAfter(next,last);\r\n last = next;\r\n next = tmp;\r\n }\r\n return false;\r\n }\r\n });\r\n if (!node.firstChild()) {\r\n node.innerHTML(UE.browser.ie ? ' ' : '<br/>')\r\n }\r\n break;\r\n case 'div':\r\n if(node.getAttr('cdata_tag')){\r\n break;\r\n }\r\n //针对代码这里不处理插入代码的div\r\n val = node.getAttr('class');\r\n if(val && /^line number\\d+/.test(val)){\r\n break;\r\n }\r\n if(!allowDivTransToP){\r\n break;\r\n }\r\n var tmpNode, p = UE.uNode.createElement('p');\r\n while (tmpNode = node.firstChild()) {\r\n if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {\r\n p.appendChild(tmpNode);\r\n } else {\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n p = UE.uNode.createElement('p');\r\n } else {\r\n node.parentNode.insertBefore(tmpNode, node);\r\n }\r\n }\r\n }\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n }\r\n node.parentNode.removeChild(node);\r\n break;\r\n case 'dl':\r\n node.tagName = 'ul';\r\n break;\r\n case 'dt':\r\n case 'dd':\r\n node.tagName = 'li';\r\n break;\r\n case 'li':\r\n var className = node.getAttr('class');\r\n if (!className || !/list\\-/.test(className)) {\r\n node.setAttr()\r\n }\r\n var tmpNodes = node.getNodesByTagName('ol ul');\r\n UE.utils.each(tmpNodes, function (n) {\r\n node.parentNode.insertAfter(n, node);\r\n });\r\n break;\r\n case 'td':\r\n case 'th':\r\n case 'caption':\r\n if(!node.children || !node.children.length){\r\n node.appendChild(UE.browser.ie11below ? UE.uNode.createText(' ') : UE.uNode.createElement('br'))\r\n }\r\n break;\r\n case 'table':\r\n if(me.options.disabledTableInTable && tdParent(node)){\r\n node.parentNode.insertBefore(UE.uNode.createText(node.innerText()),node);\r\n node.parentNode.removeChild(node)\r\n }\r\n }\r\n\r\n }\r\n// if(node.type == 'comment'){\r\n// node.parentNode.removeChild(node);\r\n// }\r\n })\r\n\r\n });\r\n\r\n //从编辑器出去的内容处理\r\n me.addOutputRule(function (root) {\r\n\r\n var val;\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n\r\n if (me.options.autoClearEmptyNode && UE.dom.dtd.$inline[node.tagName] && !UE.dom.dtd.$empty[node.tagName] && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) {\r\n\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'div':\r\n if (val = node.getAttr('cdata_tag')) {\r\n node.tagName = val;\r\n node.appendChild(UE.uNode.createText(node.getAttr('cdata_data')));\r\n node.setAttr({cdata_tag: '', cdata_data: '','_ue_custom_node_':''});\r\n }\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('_href')) {\r\n node.setAttr({\r\n 'href': UE.utils.html(val),\r\n '_href': ''\r\n })\r\n }\r\n break;\r\n break;\r\n case 'span':\r\n val = node.getAttr('id');\r\n if(val && /^_baidu_bookmark_/i.test(val)){\r\n node.parentNode.removeChild(node)\r\n }\r\n //将color的rgb格式转换为#16进制格式\r\n if(me.getOpt('rgb2Hex')){\r\n var cssStyle = node.getAttr('style');\r\n if(cssStyle){\r\n node.setAttr('style',cssStyle.replace(/rgba?\\(([\\d,\\s]+)\\)/g,function(a,value){\r\n var array = value.split(\",\");\r\n if (array.length > 3)\r\n return \"\";\r\n value = \"#\";\r\n for (var i = 0, color; color = array[i++];) {\r\n color = parseInt(color.replace(/[^\\d]/gi, ''), 10).toString(16);\r\n value += color.length == 1 ? \"0\" + color : color;\r\n }\r\n return value.toUpperCase();\r\n\r\n }))\r\n }\r\n }\r\n break;\r\n case 'img':\r\n if (val = node.getAttr('_src')) {\r\n node.setAttr({\r\n 'src': node.getAttr('_src'),\r\n '_src': ''\r\n })\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n })\r\n\r\n\r\n });\r\n};\r\n","/* eslint-disable */\r\nexport function editKityFormula (editor, uiname, latexUse) {\r\n let editKityFormula = {\r\n type:1,\r\n latexUse:latexUse\r\n }\r\n sessionStorage.editKityFormula = JSON.stringify(editKityFormula);\r\n var kfDialog = new UE.ui.Dialog({\r\n\r\n // 指定弹出层路径\r\n iframeUrl: editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kityFormulaDialog.html',\r\n // iframeUrl: '../../public/ueditor/kityformula-plugin/kityFormulaDialog.html',\r\n\r\n // 编辑器实例\r\n editor: editor,\r\n // dialog 名称\r\n name: uiname,\r\n // dialog 标题\r\n title: '插入公式 - zhixinhuixue',\r\n\r\n // dialog 外围 css\r\n cssRules: 'width:783px; height: 386px;',\r\n\r\n //如果给出了buttons就代表dialog有确定和取消\r\n buttons:[\r\n {\r\n className:'edui-okbutton',\r\n label:'确定',\r\n onclick:function () {\r\n kfDialog.close(true);\r\n }\r\n },\r\n {\r\n className:'edui-cancelbutton',\r\n label:'取消',\r\n onclick:function () {\r\n kfDialog.close(false);\r\n }\r\n }\r\n ]});\r\n\r\n // editor.ready(function(){\r\n // UE.utils.cssRule('kfformula', 'img.kfformula{vertical-align: middle;}', editor.document);\r\n // });\r\n\r\n// var iconUrl = editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kf-icon.png';\r\n// // var iconUrl = '/ueditor/kityformula-plugin/kf-icon.png';\r\n// var tmpLink = document.createElement('a');\r\n// tmpLink.href = iconUrl;\r\n// tmpLink.href = tmpLink.href;\r\n// iconUrl = tmpLink.href;\r\n\r\n// var kfBtn = new UE.ui.Button({\r\n// name:'插入' + uiname,\r\n// title:'插入公式-' + uiname,\r\n// //需要添加的额外样式,指定icon图标\r\n// cssRules :'background: url(\"' + iconUrl + '\") !important',\r\n// onclick:function () {\r\n// //渲染dialog\r\n // kfDialog.render();\r\n kfDialog.open();\r\n// }\r\n// });\r\n\r\n // //当点到编辑内容上时,按钮要做的状态反射\r\n // editor.addListener('selectionchange', function () {\r\n // var state = editor.queryCommandState(uiname);\r\n // if (state == -1) {\r\n // kfBtn.setDisabled(true);\r\n // kfBtn.setChecked(false);\r\n // } else {\r\n // kfBtn.setDisabled(false);\r\n // kfBtn.setChecked(state);\r\n // }\r\n // });\r\n\r\n // return kfBtn;\r\n}\r\n","/**\r\n * Created by zhangbo21 on 14-9-2.\r\n */\r\n/*\r\n * getKfContent : 将image的src从base64替换为文件名\r\n * param : callback -- 回调函数 其参数为替换之后的内容\r\n * return : void\r\n * */\r\n/* eslint-disable */\r\nUE.Editor.prototype.getKfContent = function(callback){\r\n\r\n var me = this;\r\n var actionUrl = me.getActionUrl(me.getOpt('scrawlActionName')),\r\n params = UE.utils.serializeParam(me.queryCommandValue('serverparam')) || '',\r\n url = UE.utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params);\r\n\r\n // 找到所有的base64\r\n var count = 0;\r\n var imgs =me.body.getElementsByTagName('img');\r\n var base64Imgs = [];\r\n UE.utils.each(imgs, function(item){\r\n var imgType = item.getAttribute('src').match(/^[^;]+/)[0];\r\n if ( imgType === 'data:image/png') {\r\n base64Imgs.push(item);\r\n } \r\n });\r\n\r\n if (base64Imgs.length == 0){\r\n execCallback();\r\n } else {\r\n UE.utils.each(base64Imgs, function(item){\r\n\r\n var opt ={};\r\n opt[me.getOpt('scrawlFieldName')]= item.getAttribute('src').replace(/^[^,]+,/, '');\r\n opt.onsuccess = function(xhr){\r\n var json = UE.utils.str2json(xhr.responseText),\r\n url = me.options.scrawlUrlPrefix + json.url;\r\n\r\n item.setAttribute('src', url);\r\n item.setAttribute('_src', url);\r\n\r\n count++;\r\n\r\n execCallback();\r\n }\r\n opt.onerror = function(err){\r\n console.error(err);\r\n count++;\r\n\r\n execCallback();\r\n }\r\n\r\n\r\n UE.ajax.request(url, opt);\r\n\r\n });\r\n }\r\n\r\n function execCallback(){\r\n if (count >= base64Imgs.length) {\r\n me.sync();\r\n callback(me.getContent());\r\n }\r\n }\r\n\r\n};","/* eslint-disable */\r\n/**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 12-6-12\r\n * Time: 下午5:02\r\n * To change this template use File | Settings | File Templates.\r\n */\r\nUE.I18N['zh-cn'] = {\r\n 'labelMap':{\r\n 'anchor':'锚点', 'undo':'撤销', 'redo':'重做', 'bold':'加粗', 'indent':'首行缩进', 'snapscreen':'截图',\r\n 'italic':'斜体', 'underline':'下划线', 'strikethrough':'删除线', 'subscript':'下标','fontborder':'字符边框',\r\n 'superscript':'上标', 'formatmatch':'格式刷', 'source':'源代码', 'blockquote':'引用',\r\n 'pasteplain':'纯文本粘贴模式', 'selectall':'全选', 'print':'打印', 'preview':'预览',\r\n 'horizontal':'分隔线', 'removeformat':'清除格式', 'time':'时间', 'date':'日期',\r\n 'unlink':'取消链接', 'insertrow':'前插入行', 'insertcol':'前插入列', 'mergeright':'右合并单元格', 'mergedown':'下合并单元格',\r\n 'deleterow':'删除行', 'deletecol':'删除列', 'splittorows':'拆分成行',\r\n 'splittocols':'拆分成列', 'splittocells':'完全拆分单元格','deletecaption':'删除表格标题','inserttitle':'插入标题',\r\n 'mergecells':'合并多个单元格', 'deletetable':'删除表格', 'cleardoc':'清空文档','insertparagraphbeforetable':\"表格前插入行\",'insertcode':'代码语言',\r\n 'fontfamily':'字体', 'fontsize':'字号', 'paragraph':'段落格式', 'simpleupload':'单图上传', 'insertimage':'多图上传','edittable':'表格属性','edittd':'单元格属性', 'link':'超链接',\r\n 'emotion':'表情', 'spechars':'特殊字符', 'searchreplace':'查询替换', 'map':'Baidu地图', 'gmap':'Google地图',\r\n 'insertvideo':'视频', 'help':'帮助', 'justifyleft':'居左对齐', 'justifyright':'居右对齐', 'justifycenter':'居中对齐',\r\n 'justifyjustify':'两端对齐', 'forecolor':'字体颜色', 'backcolor':'背景色', 'insertorderedlist':'有序列表',\r\n 'insertunorderedlist':'无序列表', 'fullscreen':'全屏', 'directionalityltr':'从左向右输入', 'directionalityrtl':'从右向左输入',\r\n 'rowspacingtop':'段前距', 'rowspacingbottom':'段后距', 'pagebreak':'分页', 'insertframe':'插入Iframe', 'imagenone':'默认',\r\n 'imageleft':'左浮动', 'imageright':'右浮动', 'attachment':'附件', 'imagecenter':'居中', 'wordimage':'图片转存',\r\n 'lineheight':'行间距','edittip' :'编辑提示','customstyle':'自定义标题', 'autotypeset':'自动排版',\r\n 'webapp':'百度应用','touppercase':'字母大写', 'tolowercase':'字母小写','background':'背景','template':'模板','scrawl':'涂鸦',\r\n 'music':'音乐','inserttable':'插入表格','drafts': '从草稿箱加载', 'charts': '图表'\r\n },\r\n 'insertorderedlist':{\r\n 'num':'1,2,3...',\r\n 'num1':'1),2),3)...',\r\n 'num2':'(1),(2),(3)...',\r\n 'cn':'一,二,三....',\r\n 'cn1':'一),二),三)....',\r\n 'cn2':'(一),(二),(三)....',\r\n 'decimal':'1,2,3...',\r\n 'lower-alpha':'a,b,c...',\r\n 'lower-roman':'i,ii,iii...',\r\n 'upper-alpha':'A,B,C...',\r\n 'upper-roman':'I,II,III...'\r\n },\r\n 'insertunorderedlist':{\r\n 'circle':'○ 大圆圈',\r\n 'disc':'● 小黑点',\r\n 'square':'■ 小方块 ',\r\n 'dash' :'— 破折号',\r\n 'dot':' 。 小圆圈'\r\n },\r\n 'paragraph':{'p':'段落', 'h1':'标题 1', 'h2':'标题 2', 'h3':'标题 3', 'h4':'标题 4', 'h5':'标题 5', 'h6':'标题 6'},\r\n 'fontfamily':{\r\n 'songti':'宋体',\r\n 'kaiti':'楷体',\r\n 'heiti':'黑体',\r\n 'lishu':'隶书',\r\n 'yahei':'微软雅黑',\r\n 'andaleMono':'andale mono',\r\n 'arial': 'arial',\r\n 'arialBlack':'arial black',\r\n 'comicSansMs':'comic sans ms',\r\n 'impact':'impact',\r\n 'timesNewRoman':'times new roman'\r\n },\r\n 'customstyle':{\r\n 'tc':'标题居中',\r\n 'tl':'标题居左',\r\n 'im':'强调',\r\n 'hi':'明显强调'\r\n },\r\n 'autoupload': {\r\n 'exceedSizeError': '文件大小超出限制',\r\n 'exceedTypeError': '文件格式不允许',\r\n 'jsonEncodeError': '服务器返回格式错误',\r\n 'loading':\"正在上传...\",\r\n 'loadError':\"上传错误\",\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'\r\n },\r\n 'simpleupload':{\r\n 'exceedSizeError': '文件大小超出限制',\r\n 'exceedTypeError': '文件格式不允许',\r\n 'jsonEncodeError': '服务器返回格式错误',\r\n 'loading':\"正在上传...\",\r\n 'loadError':\"上传错误\",\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'\r\n },\r\n 'elementPathTip':\"元素路径\",\r\n 'wordCountTip':\"字数统计\",\r\n 'wordCountMsg':'当前已输入{#count}个字符, 您还可以输入{#leave}个字符。 ',\r\n 'wordOverFlowMsg':'<span style=\"color:red;\">字数超出最大允许值,服务器可能拒绝保存!</span>',\r\n 'ok':\"确认\",\r\n 'cancel':\"取消\",\r\n 'closeDialog':\"关闭对话框\",\r\n 'tableDrag':\"表格拖动必须引入uiUtils.js文件!\",\r\n 'autofloatMsg':\"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!\",\r\n 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!',\r\n 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!',\r\n 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!',\r\n 'snapScreen_plugin':{\r\n 'browserMsg':\"仅支持IE浏览器!\",\r\n 'callBackErrorMsg':\"服务器返回数据有误,请检查配置项之后重试。\",\r\n 'uploadErrorMsg':\"截图上传失败,请检查服务器端环境! \"\r\n },\r\n 'insertcode':{\r\n 'as3':'ActionScript 3',\r\n 'bash':'Bash/Shell',\r\n 'cpp':'C/C++',\r\n 'css':'CSS',\r\n 'cf':'ColdFusion',\r\n 'c#':'C#',\r\n 'delphi':'Delphi',\r\n 'diff':'Diff',\r\n 'erlang':'Erlang',\r\n 'groovy':'Groovy',\r\n 'html':'HTML',\r\n 'java':'Java',\r\n 'jfx':'JavaFX',\r\n 'js':'JavaScript',\r\n 'pl':'Perl',\r\n 'php':'PHP',\r\n 'plain':'Plain Text',\r\n 'ps':'PowerShell',\r\n 'python':'Python',\r\n 'ruby':'Ruby',\r\n 'scala':'Scala',\r\n 'sql':'SQL',\r\n 'vb':'Visual Basic',\r\n 'xml':'XML'\r\n },\r\n 'confirmClear':\"确定清空当前文档么?\",\r\n 'contextMenu':{\r\n 'delete':\"删除\",\r\n 'selectall':\"全选\",\r\n 'deletecode':\"删除代码\",\r\n 'cleardoc':\"清空文档\",\r\n 'confirmclear':\"确定清空当前文档么?\",\r\n 'unlink':\"删除超链接\",\r\n 'paragraph':\"段落格式\",\r\n 'edittable':\"表格属性\",\r\n 'aligntd':\"单元格对齐方式\",\r\n 'aligntable':'表格对齐方式',\r\n 'tableleft':'左浮动',\r\n 'tablecenter':'居中显示',\r\n 'tableright':'右浮动',\r\n 'edittd':\"单元格属性\",\r\n 'setbordervisible':'设置表格边线可见',\r\n 'justifyleft':'左对齐',\r\n 'justifyright':'右对齐',\r\n 'justifycenter':'居中对齐',\r\n 'justifyjustify':'两端对齐',\r\n 'table':\"表格\",\r\n 'inserttable':'插入表格',\r\n 'deletetable':\"删除表格\",\r\n 'insertparagraphbefore':\"前插入段落\",\r\n 'insertparagraphafter':'后插入段落',\r\n 'deleterow':\"删除当前行\",\r\n 'deletecol':\"删除当前列\",\r\n 'insertrow':\"前插入行\",\r\n 'insertcol':\"左插入列\",\r\n 'insertrownext':'后插入行',\r\n 'insertcolnext':'右插入列',\r\n 'insertcaption':'插入表格名称',\r\n 'deletecaption':'删除表格名称',\r\n 'inserttitle':'插入表格标题行',\r\n 'deletetitle':'删除表格标题行',\r\n 'inserttitlecol':'插入表格标题列',\r\n 'deletetitlecol':'删除表格标题列',\r\n 'averageDiseRow':'平均分布各行',\r\n 'averageDisCol':'平均分布各列',\r\n 'mergeright':\"向右合并\",\r\n 'mergeleft':\"向左合并\",\r\n 'mergedown':\"向下合并\",\r\n 'mergecells':\"合并单元格\",\r\n 'splittocells':\"完全拆分单元格\",\r\n 'splittocols':\"拆分成列\",\r\n 'splittorows':\"拆分成行\",\r\n 'tablesort':'表格排序',\r\n 'enablesort':'设置表格可排序',\r\n 'disablesort':'取消表格可排序',\r\n 'reversecurrent':'逆序当前',\r\n 'orderbyasc':'按ASCII字符升序',\r\n 'reversebyasc':'按ASCII字符降序',\r\n 'orderbynum':'按数值大小升序',\r\n 'reversebynum':'按数值大小降序',\r\n 'borderbk':'边框底纹',\r\n 'setcolor':'表格隔行变色',\r\n 'unsetcolor':'取消表格隔行变色',\r\n 'setbackground':'选区背景隔行',\r\n 'unsetbackground':'取消选区背景',\r\n 'redandblue':'红蓝相间',\r\n 'threecolorgradient':'三色渐变',\r\n 'copy':\"复制(Ctrl + c)\",\r\n 'copymsg': \"浏览器不支持,请使用 'Ctrl + c'\",\r\n 'paste':\"粘贴(Ctrl + v)\",\r\n 'pastemsg': \"浏览器不支持,请使用 'Ctrl + v'\"\r\n },\r\n 'copymsg': \"浏览器不支持,请使用 'Ctrl + c'\",\r\n 'pastemsg': \"浏览器不支持,请使用 'Ctrl + v'\",\r\n 'anthorMsg':\"链接\",\r\n 'clearColor':'清空颜色',\r\n 'standardColor':'标准颜色',\r\n 'themeColor':'主题颜色',\r\n 'property':'属性',\r\n 'default':'默认',\r\n 'modify':'修改',\r\n 'justifyleft':'左对齐',\r\n 'justifyright':'右对齐',\r\n 'justifycenter':'居中',\r\n 'justify':'默认',\r\n 'clear':'清除',\r\n 'anchorMsg':'锚点',\r\n 'delete':'删除',\r\n 'clickToUpload':\"点击上传\",\r\n 'unset':'尚未设置语言文件',\r\n 't_row':'行',\r\n 't_col':'列',\r\n 'more':'更多',\r\n 'pasteOpt':'粘贴选项',\r\n 'pasteSourceFormat':\"保留源格式\",\r\n 'tagFormat':'只保留标签',\r\n 'pasteTextFormat':'只保留文本',\r\n 'autoTypeSet':{\r\n 'mergeLine':\"合并空行\",\r\n 'delLine':\"清除空行\",\r\n 'removeFormat':\"清除格式\",\r\n 'indent':\"首行缩进\",\r\n 'alignment':\"对齐方式\",\r\n 'imageFloat':\"图片浮动\",\r\n 'removeFontsize':\"清除字号\",\r\n 'removeFontFamily':\"清除字体\",\r\n 'removeHtml':\"清除冗余HTML代码\",\r\n 'pasteFilter':\"粘贴过滤\",\r\n 'run':\"执行\",\r\n 'symbol':'符号转换',\r\n 'bdc2sb':'全角转半角',\r\n 'tobdc':'半角转全角'\r\n },\r\n\r\n 'background':{\r\n 'static':{\r\n 'lang_background_normal':'背景设置',\r\n 'lang_background_local':'在线图片',\r\n 'lang_background_set':'选项',\r\n 'lang_background_none':'无背景色',\r\n 'lang_background_colored':'有背景色',\r\n 'lang_background_color':'颜色设置',\r\n 'lang_background_netimg':'网络图片',\r\n 'lang_background_align':'对齐方式',\r\n 'lang_background_position':'精确定位',\r\n 'repeatType':{'options':[\"居中\", \"横向重复\", \"纵向重复\", \"平铺\",\"自定义\"]}\r\n\r\n },\r\n 'noUploadImage':\"当前未上传过任何图片!\",\r\n 'toggleSelect':\"单击可切换选中状态\\n原图尺寸: \"\r\n },\r\n //===============dialog i18N=======================\r\n 'insertimage':{\r\n 'static':{\r\n 'lang_tab_remote':\"插入图片\", //节点\r\n 'lang_tab_upload':\"本地上传\",\r\n 'lang_tab_online':\"在线管理\",\r\n 'lang_tab_search':\"图片搜索\",\r\n 'lang_input_url':\"地 址:\",\r\n 'lang_input_size':\"大 小:\",\r\n 'lang_input_width':\"宽度\",\r\n 'lang_input_height':\"高度\",\r\n 'lang_input_border':\"边 框:\",\r\n 'lang_input_vhspace':\"边 距:\",\r\n 'lang_input_title':\"描 述:\",\r\n 'lang_input_align':'图片浮动方式:',\r\n 'lang_imgLoading':\" 图片加载中……\",\r\n 'lang_start_upload':\"开始上传\",\r\n 'lock':{'title':\"锁定宽高比例\"}, //属性\r\n 'searchType':{'title':\"图片类型\", 'options':[\"新闻\", \"壁纸\", \"表情\", \"头像\"]}, //select的option\r\n 'searchTxt':{'value':\"请输入搜索关键词\"},\r\n 'searchBtn':{'value':\"百度一下\"},\r\n 'searchReset':{'value':\"清空搜索\"},\r\n 'noneAlign':{'title':'无浮动'},\r\n 'leftAlign':{'title':'左浮动'},\r\n 'rightAlign':{'title':'右浮动'},\r\n 'centerAlign':{'title':'居中独占一行'}\r\n },\r\n 'uploadSelectFile':'点击选择图片',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'uploadNoPreview':'不能预览',\r\n 'updateStatusReady': '选中_张图片,共_KB。',\r\n 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败',\r\n 'updateStatusFinish': '共_张(_KB),_张上传成功',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错',\r\n 'remoteLockError':\"宽高不正确,不能所定比例\",\r\n 'numError':\"请输入正确的长度或者宽度值!例如:123,400\",\r\n 'imageUrlError':\"不允许的图片格式或者图片域!\",\r\n 'imageLoadError':\"图片加载失败!请检查链接地址或网络状态!\",\r\n 'searchRemind':\"请输入搜索关键词\",\r\n 'searchLoading':\"图片加载中,请稍后……\",\r\n 'searchRetry':\" :( ,抱歉,没有找到图片!请重试一次!\"\r\n },\r\n 'attachment':{\r\n 'static':{\r\n 'lang_tab_upload': '上传附件',\r\n 'lang_tab_online': '在线附件',\r\n 'lang_start_upload':\"开始上传\",\r\n 'lang_drop_remind':\"可以将文件拖到这里,单次最多可选100个文件\"\r\n },\r\n 'uploadSelectFile':'点击选择文件',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'updateStatusReady': '选中_个文件,共_KB。',\r\n 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败',\r\n 'updateStatusFinish': '共_个(_KB),_个上传成功',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错'\r\n },\r\n 'insertvideo':{\r\n 'static':{\r\n 'lang_tab_insertV':\"插入视频\",\r\n 'lang_tab_searchV':\"搜索视频\",\r\n 'lang_tab_uploadV':\"上传视频\",\r\n 'lang_video_url':\"视频网址\",\r\n 'lang_video_size':\"视频尺寸\",\r\n 'lang_videoW':\"宽度\",\r\n 'lang_videoH':\"高度\",\r\n 'lang_alignment':\"对齐方式\",\r\n 'videoSearchTxt':{'value':\"请输入搜索关键字!\"},\r\n 'videoType':{'options':[\"全部\", \"热门\", \"娱乐\", \"搞笑\", \"体育\", \"科技\", \"综艺\"]},\r\n 'videoSearchBtn':{'value':\"百度一下\"},\r\n 'videoSearchReset':{'value':\"清空结果\"},\r\n\r\n 'lang_input_fileStatus':' 当前未上传文件',\r\n 'startUpload':{'style':\"background:url(upload.png) no-repeat;\"},\r\n\r\n 'lang_upload_size':\"视频尺寸\",\r\n 'lang_upload_width':\"宽度\",\r\n 'lang_upload_height':\"高度\",\r\n 'lang_upload_alignment':\"对齐方式\",\r\n 'lang_format_advice':\"建议使用mp4格式.\"\r\n\r\n },\r\n 'numError':\"请输入正确的数值,如123,400\",\r\n 'floatLeft':\"左浮动\",\r\n 'floatRight':\"右浮动\",\r\n '\"default\"':\"默认\",\r\n 'block':\"独占一行\",\r\n 'urlError':\"输入的视频地址有误,请检查后再试!\",\r\n 'loading':\" 视频加载中,请等待……\",\r\n 'clickToSelect':\"点击选中\",\r\n 'goToSource':'访问源视频',\r\n 'noVideo':\" 抱歉,找不到对应的视频,请重试!\",\r\n\r\n 'browseFiles':'浏览文件',\r\n 'uploadSuccess':'上传成功!',\r\n 'delSuccessFile':'从成功队列中移除',\r\n 'delFailSaveFile':'移除保存失败文件',\r\n 'statusPrompt':' 个文件已上传! ',\r\n 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!',\r\n 'flashLoadingError':'Flash加载失败!请检查路径或网络状态',\r\n 'fileUploadReady':'等待上传……',\r\n 'delUploadQueue':'从上传队列中移除',\r\n 'limitPrompt1':'单次不能选择超过',\r\n 'limitPrompt2':'个文件!请重新选择!',\r\n 'delFailFile':'移除失败文件',\r\n 'fileSizeLimit':'文件大小超出限制!',\r\n 'emptyFile':'空文件无法上传!',\r\n 'fileTypeError':'文件类型不允许!',\r\n 'unknownError':'未知错误!',\r\n 'fileUploading':'上传中,请等待……',\r\n 'cancelUpload':'取消上传',\r\n 'netError':'网络错误',\r\n 'failUpload':'上传失败!',\r\n 'serverIOError':'服务器IO错误!',\r\n 'noAuthority':'无权限!',\r\n 'fileNumLimit':'上传个数限制',\r\n 'failCheck':'验证失败,本次上传被跳过!',\r\n 'fileCanceling':'取消中,请等待……',\r\n 'stopUploading':'上传已停止……',\r\n\r\n 'uploadSelectFile':'点击选择文件',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'updateStatusReady': '选中_个文件,共_KB。',\r\n 'updateStatusConfirm': '成功上传_个,_个失败',\r\n 'updateStatusFinish': '共_个(_KB),_个成功上传',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错'\r\n },\r\n 'webapp':{\r\n 'tip1':\"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!\",\r\n 'tip2':\"申请完成之后请至ueditor.config.js中配置获得的appkey! \",\r\n 'applyFor':\"点此申请\",\r\n 'anthorApi':\"百度API\"\r\n },\r\n 'template':{\r\n 'static':{\r\n 'lang_template_bkcolor':'背景颜色',\r\n 'lang_template_clear' : '保留原有内容',\r\n 'lang_template_select' : '选择模板'\r\n },\r\n 'blank':\"空白文档\",\r\n 'blog':\"博客文章\",\r\n 'resume':\"个人简历\",\r\n 'richText':\"图文混排\",\r\n 'sciPapers':\"科技论文\"\r\n\r\n\r\n },\r\n 'scrawl':{\r\n 'static':{\r\n 'lang_input_previousStep':\"上一步\",\r\n 'lang_input_nextsStep':\"下一步\",\r\n 'lang_input_clear':'清空',\r\n 'lang_input_addPic':'添加背景',\r\n 'lang_input_ScalePic':'缩放背景',\r\n 'lang_input_removePic':'删除背景',\r\n 'J_imgTxt':{title:'添加背景图片'}\r\n },\r\n 'noScarwl':\"尚未作画,白纸一张~\",\r\n 'scrawlUpLoading':\"涂鸦上传中,别急哦~\",\r\n 'continueBtn':\"继续\",\r\n 'imageError':\"糟糕,图片读取失败了!\",\r\n 'backgroundUploading':'背景图片上传中,别急哦~'\r\n },\r\n 'music':{\r\n 'static':{\r\n 'lang_input_tips':\"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!\",\r\n 'J_searchBtn':{value:'搜索歌曲'}\r\n },\r\n 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。',\r\n 'chapter':'歌曲',\r\n 'singer':'歌手',\r\n 'special':'专辑',\r\n 'listenTest':'试听'\r\n },\r\n 'anchor':{\r\n 'static':{\r\n 'lang_input_anchorName':'锚点名字:'\r\n }\r\n },\r\n 'charts':{\r\n 'static':{\r\n 'lang_data_source':'数据源:',\r\n 'lang_chart_format': '图表格式:',\r\n 'lang_data_align': '数据对齐方式',\r\n 'lang_chart_align_same': '数据源与图表X轴Y轴一致',\r\n 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反',\r\n 'lang_chart_title': '图表标题',\r\n 'lang_chart_main_title': '主标题:',\r\n 'lang_chart_sub_title': '子标题:',\r\n 'lang_chart_x_title': 'X轴标题:',\r\n 'lang_chart_y_title': 'Y轴标题:',\r\n 'lang_chart_tip': '提示文字',\r\n 'lang_cahrt_tip_prefix': '提示文字前缀:',\r\n 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀',\r\n 'lang_chart_data_unit': '数据单位',\r\n 'lang_chart_data_unit_title': '单位:',\r\n 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃',\r\n 'lang_chart_type': '图表类型:',\r\n 'lang_prev_btn': '上一个',\r\n 'lang_next_btn': '下一个'\r\n }\r\n },\r\n 'emotion':{\r\n 'static':{\r\n 'lang_input_choice':'精选',\r\n 'lang_input_Tuzki':'兔斯基',\r\n 'lang_input_BOBO':'BOBO',\r\n 'lang_input_lvdouwa':'绿豆蛙',\r\n 'lang_input_babyCat':'baby猫',\r\n 'lang_input_bubble':'泡泡',\r\n 'lang_input_youa':'有啊'\r\n }\r\n },\r\n 'gmap':{\r\n 'static':{\r\n 'lang_input_address':'地址',\r\n 'lang_input_search':'搜索',\r\n 'address':{value:\"北京\"}\r\n },\r\n searchError:'无法定位到该地址!'\r\n },\r\n 'help':{\r\n 'static':{\r\n 'lang_input_about':'关于UEditor',\r\n 'lang_input_shortcuts':'快捷键',\r\n 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。',\r\n 'lang_Txt_shortcuts':'快捷键',\r\n 'lang_Txt_func':'功能',\r\n 'lang_Txt_bold':'给选中字设置为加粗',\r\n 'lang_Txt_copy':'复制选中内容',\r\n 'lang_Txt_cut':'剪切选中内容',\r\n 'lang_Txt_Paste':'粘贴',\r\n 'lang_Txt_undo':'重新执行上次操作',\r\n 'lang_Txt_redo':'撤销上一次操作',\r\n 'lang_Txt_italic':'给选中字设置为斜体',\r\n 'lang_Txt_underline':'给选中字加下划线',\r\n 'lang_Txt_selectAll':'全部选中',\r\n 'lang_Txt_visualEnter':'软回车',\r\n 'lang_Txt_fullscreen':'全屏'\r\n }\r\n },\r\n 'insertframe':{\r\n 'static':{\r\n 'lang_input_address':'地址:',\r\n 'lang_input_width':'宽度:',\r\n 'lang_input_height':'高度:',\r\n 'lang_input_isScroll':'允许滚动条:',\r\n 'lang_input_frameborder':'显示框架边框:',\r\n 'lang_input_alignMode':'对齐方式:',\r\n 'align':{title:\"对齐方式\", options:[\"默认\", \"左对齐\", \"右对齐\", \"居中\"]}\r\n },\r\n 'enterAddress':'请输入地址!'\r\n },\r\n 'link':{\r\n 'static':{\r\n 'lang_input_text':'文本内容:',\r\n 'lang_input_url':'链接地址:',\r\n 'lang_input_title':'标题:',\r\n 'lang_input_target':'是否在新窗口打开:'\r\n },\r\n 'validLink':'只支持选中一个链接时生效',\r\n 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀'\r\n },\r\n 'map':{\r\n 'static':{\r\n lang_city:\"城市\",\r\n lang_address:\"地址\",\r\n city:{value:\"北京\"},\r\n lang_search:\"搜索\",\r\n lang_dynamicmap:\"插入动态地图\"\r\n },\r\n cityMsg:\"请选择城市\",\r\n errorMsg:\"抱歉,找不到该位置!\"\r\n },\r\n 'searchreplace':{\r\n 'static':{\r\n lang_tab_search:\"查找\",\r\n lang_tab_replace:\"替换\",\r\n lang_search1:\"查找\",\r\n lang_search2:\"查找\",\r\n lang_replace:\"替换\",\r\n lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”',\r\n lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”',\r\n lang_case_sensitive1:\"区分大小写\",\r\n lang_case_sensitive2:\"区分大小写\",\r\n nextFindBtn:{value:\"下一个\"},\r\n preFindBtn:{value:\"上一个\"},\r\n nextReplaceBtn:{value:\"下一个\"},\r\n preReplaceBtn:{value:\"上一个\"},\r\n repalceBtn:{value:\"替换\"},\r\n repalceAllBtn:{value:\"全部替换\"}\r\n },\r\n getEnd:\"已经搜索到文章末尾!\",\r\n getStart:\"已经搜索到文章头部\",\r\n countMsg:\"总共替换了{#count}处!\"\r\n },\r\n 'snapscreen':{\r\n 'static':{\r\n lang_showMsg:\"截图功能需要首先安装UEditor截图插件! \",\r\n lang_download:\"点此下载\",\r\n lang_step1:\"第一步,下载UEditor截图插件并运行安装。\",\r\n lang_step2:\"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!\"\r\n }\r\n },\r\n 'spechars':{\r\n 'static':{},\r\n tsfh:\"特殊字符\",\r\n lmsz:\"罗马字符\",\r\n szfh:\"数学字符\",\r\n rwfh:\"日文字符\",\r\n xlzm:\"希腊字母\",\r\n ewzm:\"俄文字符\",\r\n pyzm:\"拼音字母\",\r\n yyyb:\"英语音标\",\r\n zyzf:\"其他\"\r\n },\r\n 'edittable':{\r\n 'static':{\r\n 'lang_tableStyle':'表格样式',\r\n 'lang_insertCaption':'添加表格名称行',\r\n 'lang_insertTitle':'添加表格标题行',\r\n 'lang_insertTitleCol':'添加表格标题列',\r\n 'lang_orderbycontent':\"使表格内容可排序\",\r\n 'lang_tableSize':'自动调整表格尺寸',\r\n 'lang_autoSizeContent':'按表格文字自适应',\r\n 'lang_autoSizePage':'按页面宽度自适应',\r\n 'lang_example':'示例',\r\n 'lang_borderStyle':'表格边框',\r\n 'lang_color':'颜色:'\r\n },\r\n captionName:'表格名称',\r\n titleName:'标题',\r\n cellsName:'内容',\r\n errorMsg:'有合并单元格,不可排序'\r\n },\r\n 'edittip':{\r\n 'static':{\r\n lang_delRow:'删除整行',\r\n lang_delCol:'删除整列'\r\n }\r\n },\r\n 'edittd':{\r\n 'static':{\r\n lang_tdBkColor:'背景颜色:'\r\n }\r\n },\r\n 'formula':{\r\n 'static':{\r\n }\r\n },\r\n 'wordimage':{\r\n 'static':{\r\n lang_resave:\"转存步骤\",\r\n uploadBtn:{src:\"upload.png\",alt:\"上传\"},\r\n clipboard:{style:\"background: url(copy.png) -153px -1px no-repeat;\"},\r\n lang_step:\"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。\"\r\n },\r\n 'fileType':\"图片\",\r\n 'flashError':\"FLASH初始化失败,请检查FLASH插件是否正确安装!\",\r\n 'netError':\"网络连接错误,请重试!\",\r\n 'copySuccess':\"图片地址已经复制!\",\r\n 'flashI18n':{} //留空默认中文\r\n },\r\n 'autosave': {\r\n 'saving':'保存中...',\r\n 'success':'本地保存成功'\r\n }\r\n};\r\n","/*!\r\n * UEditor\r\n * version: ueditor\r\n * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST)\r\n */\r\n/* eslint-disable */\r\n(function(){\r\n\r\n// editor.js\r\nUEDITOR_CONFIG = window.UEDITOR_CONFIG || {};\r\n\r\nvar baidu = window.baidu || {};\r\n\r\nwindow.baidu = baidu;\r\n\r\nwindow.UE = baidu.editor = window.UE || {};\r\n\r\nUE.plugins = {};\r\n\r\nUE.commands = {};\r\n\r\nUE.instants = {};\r\n\r\nUE.I18N = {};\r\n\r\nUE._customizeUI = {};\r\n\r\nUE.version = \"1.4.3\";\r\n\r\nvar dom = UE.dom = {};\r\n\r\n// core/browser.js\r\n/**\r\n * 浏览器判断模块\r\n * @file\r\n * @module UE.browser\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 提供浏览器检测的模块\r\n * @unfile\r\n * @module UE.browser\r\n */\r\nvar browser = UE.browser = function(){\r\n var agent = navigator.userAgent.toLowerCase(),\r\n opera = window.opera,\r\n browser = {\r\n /**\r\n * @property {boolean} ie 检测当前浏览器是否为IE\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie ) {\r\n * console.log( '当前浏览器是IE' );\r\n * }\r\n * ```\r\n */\r\n ie\t\t: /(msie\\s|trident.*rv:)([\\w.]+)/.test(agent),\r\n\r\n /**\r\n * @property {boolean} opera 检测当前浏览器是否为Opera\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.opera ) {\r\n * console.log( '当前浏览器是Opera' );\r\n * }\r\n * ```\r\n */\r\n opera\t: ( !!opera && opera.version ),\r\n\r\n /**\r\n * @property {boolean} webkit 检测当前浏览器是否是webkit内核的浏览器\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.webkit ) {\r\n * console.log( '当前浏览器是webkit内核浏览器' );\r\n * }\r\n * ```\r\n */\r\n webkit\t: ( agent.indexOf( ' applewebkit/' ) > -1 ),\r\n\r\n /**\r\n * @property {boolean} mac 检测当前浏览器是否是运行在mac平台下\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.mac ) {\r\n * console.log( '当前浏览器运行在mac平台下' );\r\n * }\r\n * ```\r\n */\r\n mac\t: ( agent.indexOf( 'macintosh' ) > -1 ),\r\n\r\n /**\r\n * @property {boolean} quirks 检测当前浏览器是否处于“怪异模式”下\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.quirks ) {\r\n * console.log( '当前浏览器运行处于“怪异模式”' );\r\n * }\r\n * ```\r\n */\r\n quirks : ( document.compatMode == 'BackCompat' )\r\n };\r\n\r\n /**\r\n * @property {boolean} gecko 检测当前浏览器内核是否是gecko内核\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.gecko ) {\r\n * console.log( '当前浏览器内核是gecko内核' );\r\n * }\r\n * ```\r\n */\r\n browser.gecko =( navigator.product == 'Gecko' && !browser.webkit && !browser.opera && !browser.ie);\r\n\r\n var version = 0;\r\n\r\n // Internet Explorer 6.0+\r\n if ( browser.ie ){\r\n\r\n var v1 = agent.match(/(?:msie\\s([\\w.]+))/);\r\n var v2 = agent.match(/(?:trident.*rv:([\\w.]+))/);\r\n if(v1 && v2 && v1[1] && v2[1]){\r\n version = Math.max(v1[1]*1,v2[1]*1);\r\n }else if(v1 && v1[1]){\r\n version = v1[1]*1;\r\n }else if(v2 && v2[1]){\r\n version = v2[1]*1;\r\n }else{\r\n version = 0;\r\n }\r\n\r\n browser.ie11Compat = document.documentMode == 11;\r\n /**\r\n * @property { boolean } ie9Compat 检测浏览器模式是否为 IE9 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie9Compat ) {\r\n * console.log( '当前浏览器运行在IE9兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie9Compat = document.documentMode == 9;\r\n\r\n /**\r\n * @property { boolean } ie8 检测浏览器是否是IE8浏览器\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie8 ) {\r\n * console.log( '当前浏览器是IE8浏览器' );\r\n * }\r\n * ```\r\n */\r\n browser.ie8 = !!document.documentMode;\r\n\r\n /**\r\n * @property { boolean } ie8Compat 检测浏览器模式是否为 IE8 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie8Compat ) {\r\n * console.log( '当前浏览器运行在IE8兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie8Compat = document.documentMode == 8;\r\n\r\n /**\r\n * @property { boolean } ie7Compat 检测浏览器模式是否为 IE7 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie7Compat ) {\r\n * console.log( '当前浏览器运行在IE7兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie7Compat = ( ( version == 7 && !document.documentMode )\r\n || document.documentMode == 7 );\r\n\r\n /**\r\n * @property { boolean } ie6Compat 检测浏览器模式是否为 IE6 模式 或者怪异模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie6Compat ) {\r\n * console.log( '当前浏览器运行在IE6模式或者怪异模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie6Compat = ( version < 7 || browser.quirks );\r\n\r\n browser.ie9above = version > 8;\r\n\r\n browser.ie9below = version < 9;\r\n\r\n browser.ie11above = version > 10;\r\n\r\n browser.ie11below = version < 11;\r\n\r\n }\r\n\r\n // Gecko.\r\n if ( browser.gecko ){\r\n var geckoRelease = agent.match( /rv:([\\d\\.]+)/ );\r\n if ( geckoRelease )\r\n {\r\n geckoRelease = geckoRelease[1].split( '.' );\r\n version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1;\r\n }\r\n }\r\n\r\n /**\r\n * @property { Number } chrome 检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号\r\n * @warning 如果浏览器不是chrome, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.chrome ) {\r\n * console.log( '当前浏览器是Chrome' );\r\n * }\r\n * ```\r\n */\r\n if (/chrome\\/(\\d+\\.\\d)/i.test(agent)) {\r\n browser.chrome = + RegExp['\\x241'];\r\n }\r\n\r\n /**\r\n * @property { Number } safari 检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号\r\n * @warning 如果浏览器不是safari, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.safari ) {\r\n * console.log( '当前浏览器是Safari' );\r\n * }\r\n * ```\r\n */\r\n if(/(\\d+\\.\\d)?(?:\\.\\d)?\\s+safari\\/?(\\d+\\.\\d+)?/i.test(agent) && !/chrome/i.test(agent)){\r\n \tbrowser.safari = + (RegExp['\\x241'] || RegExp['\\x242']);\r\n }\r\n\r\n\r\n // Opera 9.50+\r\n if ( browser.opera )\r\n version = parseFloat( opera.version() );\r\n\r\n // WebKit 522+ (Safari 3+)\r\n if ( browser.webkit )\r\n version = parseFloat( agent.match( / applewebkit\\/(\\d+)/ )[1] );\r\n\r\n /**\r\n * @property { Number } version 检测当前浏览器版本号\r\n * @remind\r\n * <ul>\r\n * <li>IE系列返回值为5,6,7,8,9,10等</li>\r\n * <li>gecko系列会返回10900,158900等</li>\r\n * <li>webkit系列会返回其build号 (如 522等)</li>\r\n * </ul>\r\n * @example\r\n * ```javascript\r\n * console.log( '当前浏览器版本号是: ' + UE.browser.version );\r\n * ```\r\n */\r\n browser.version = version;\r\n\r\n /**\r\n * @property { boolean } isCompatible 检测当前浏览器是否能够与UEditor良好兼容\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.isCompatible ) {\r\n * console.log( '浏览器与UEditor能够良好兼容' );\r\n * }\r\n * ```\r\n */\r\n browser.isCompatible =\r\n !browser.mobile && (\r\n ( browser.ie && version >= 6 ) ||\r\n ( browser.gecko && version >= 10801 ) ||\r\n ( browser.opera && version >= 9.5 ) ||\r\n ( browser.air && version >= 1 ) ||\r\n ( browser.webkit && version >= 522 ) ||\r\n false );\r\n return browser;\r\n}();\r\n//快捷方式\r\nvar ie = browser.ie,\r\n webkit = browser.webkit,\r\n gecko = browser.gecko,\r\n opera = browser.opera;\r\n\r\n// core/utils.js\r\n/**\r\n * 工具函数包\r\n * @file\r\n * @module UE.utils\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * UEditor封装使用的静态工具函数\r\n * @module UE.utils\r\n * @unfile\r\n */\r\n\r\nvar utils = UE.utils = {\r\n\r\n /**\r\n * 用给定的迭代器遍历对象\r\n * @method each\r\n * @param { Object } obj 需要遍历的对象\r\n * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key\r\n * @example\r\n * ```javascript\r\n * var demoObj = {\r\n * key1: 1,\r\n * key2: 2\r\n * };\r\n *\r\n * //output: key1: 1, key2: 2\r\n * UE.utils.each( demoObj, funciton ( value, key ) {\r\n *\r\n * console.log( key + \":\" + value );\r\n *\r\n * } );\r\n * ```\r\n */\r\n\r\n /**\r\n * 用给定的迭代器遍历数组或类数组对象\r\n * @method each\r\n * @param { Array } array 需要遍历的数组或者类数组\r\n * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key\r\n * @example\r\n * ```javascript\r\n * var divs = document.getElmentByTagNames( \"div\" );\r\n *\r\n * //output: 0: DIV, 1: DIV ...\r\n * UE.utils.each( divs, funciton ( value, key ) {\r\n *\r\n * console.log( key + \":\" + value.tagName );\r\n *\r\n * } );\r\n * ```\r\n */\r\n each : function(obj, iterator, context) {\r\n if (obj == null) return;\r\n if (obj.length === +obj.length) {\r\n for (var i = 0, l = obj.length; i < l; i++) {\r\n if(iterator.call(context, obj[i], i, obj) === false)\r\n return false;\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if(iterator.call(context, obj[key], key, obj) === false)\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 以给定对象作为原型创建一个新对象\r\n * @method makeInstance\r\n * @param { Object } protoObject 该对象将作为新创建对象的原型\r\n * @return { Object } 新的对象, 该对象的原型是给定的protoObject对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var protoObject = { sayHello: function () { console.log('Hello UEditor!'); } };\r\n *\r\n * var newObject = UE.utils.makeInstance( protoObject );\r\n * //output: Hello UEditor!\r\n * newObject.sayHello();\r\n * ```\r\n */\r\n makeInstance:function (obj) {\r\n var noop = new Function();\r\n noop.prototype = obj;\r\n obj = new noop;\r\n noop.prototype = null;\r\n return obj;\r\n },\r\n\r\n /**\r\n * 将source对象中的属性扩展到target对象上\r\n * @method extend\r\n * @remind 该方法将强制把source对象上的属性复制到target对象上\r\n * @see UE.utils.extend(Object,Object,Boolean)\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object } source 源对象, 该对象的属性会被附加到target对象上\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = { name: 'target', sex: 1 },\r\n * source = { name: 'source', age: 17 };\r\n *\r\n * UE.utils.extend( target, source );\r\n *\r\n * //output: { name: 'source', sex: 1, age: 17 }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 将source对象中的属性扩展到target对象上, 根据指定的isKeepTarget值决定是否保留目标对象中与\r\n * 源对象属性名相同的属性值。\r\n * @method extend\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object } source 源对象, 该对象的属性会被附加到target对象上\r\n * @param { Boolean } isKeepTarget 是否保留目标对象中与源对象中属性名相同的属性\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = { name: 'target', sex: 1 },\r\n * source = { name: 'source', age: 17 };\r\n *\r\n * UE.utils.extend( target, source, true );\r\n *\r\n * //output: { name: 'target', sex: 1, age: 17 }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n extend:function (t, s, b) {\r\n if (s) {\r\n for (var k in s) {\r\n if (!b || !t.hasOwnProperty(k)) {\r\n t[k] = s[k];\r\n }\r\n }\r\n }\r\n return t;\r\n },\r\n\r\n /**\r\n * 将给定的多个对象的属性复制到目标对象target上\r\n * @method extend2\r\n * @remind 该方法将强制把源对象上的属性复制到target对象上\r\n * @remind 该方法支持两个及以上的参数, 从第二个参数开始, 其属性都会被复制到第一个参数上。 如果遇到同名的属性,\r\n * 将会覆盖掉之前的值。\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object... } source 源对象, 支持多个对象, 该对象的属性会被附加到target对象上\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = {},\r\n * source1 = { name: 'source', age: 17 },\r\n * source2 = { title: 'dev' };\r\n *\r\n * UE.utils.extend2( target, source1, source2 );\r\n *\r\n * //output: { name: 'source', age: 17, title: 'dev' }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n extend2:function (t) {\r\n var a = arguments;\r\n for (var i = 1; i < a.length; i++) {\r\n var x = a[i];\r\n for (var k in x) {\r\n if (!t.hasOwnProperty(k)) {\r\n t[k] = x[k];\r\n }\r\n }\r\n }\r\n return t;\r\n },\r\n\r\n /**\r\n * 模拟继承机制, 使得subClass继承自superClass\r\n * @method inherits\r\n * @param { Object } subClass 子类对象\r\n * @param { Object } superClass 超类对象\r\n * @warning 该方法只能让subClass继承超类的原型, subClass对象自身的属性和方法不会被继承\r\n * @return { Object } 继承superClass后的子类对象\r\n * @example\r\n * ```javascript\r\n * function SuperClass(){\r\n * this.name = \"小李\";\r\n * }\r\n *\r\n * SuperClass.prototype = {\r\n * hello:function(str){\r\n * console.log(this.name + str);\r\n * }\r\n * }\r\n *\r\n * function SubClass(){\r\n * this.name = \"小张\";\r\n * }\r\n *\r\n * UE.utils.inherits(SubClass,SuperClass);\r\n *\r\n * var sub = new SubClass();\r\n * //output: '小张早上好!\r\n * sub.hello(\"早上好!\");\r\n * ```\r\n */\r\n inherits:function (subClass, superClass) {\r\n var oldP = subClass.prototype,\r\n newP = utils.makeInstance(superClass.prototype);\r\n utils.extend(newP, oldP, true);\r\n subClass.prototype = newP;\r\n return (newP.constructor = subClass);\r\n },\r\n\r\n /**\r\n * 用指定的context对象作为函数fn的上下文\r\n * @method bind\r\n * @param { Function } fn 需要绑定上下文的函数对象\r\n * @param { Object } content 函数fn新的上下文对象\r\n * @return { Function } 一个新的函数, 该函数作为原始函数fn的代理, 将完成fn的上下文调换工作。\r\n * @example\r\n * ```javascript\r\n *\r\n * var name = 'window',\r\n * newTest = null;\r\n *\r\n * function test () {\r\n * console.log( this.name );\r\n * }\r\n *\r\n * newTest = UE.utils.bind( test, { name: 'object' } );\r\n *\r\n * //output: object\r\n * newTest();\r\n *\r\n * //output: window\r\n * test();\r\n *\r\n * ```\r\n */\r\n bind:function (fn, context) {\r\n return function () {\r\n return fn.apply(context, arguments);\r\n };\r\n },\r\n\r\n /**\r\n * 创建延迟指定时间后执行的函数fn\r\n * @method defer\r\n * @param { Function } fn 需要延迟执行的函数对象\r\n * @param { int } delay 延迟的时间, 单位是毫秒\r\n * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后,\r\n * 而不能保证刚好到达延迟时间时执行。\r\n * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果\r\n * @example\r\n * ```javascript\r\n * var start = 0;\r\n *\r\n * function test(){\r\n * console.log( new Date() - start );\r\n * }\r\n *\r\n * var testDefer = UE.utils.defer( test, 1000 );\r\n * //\r\n * start = new Date();\r\n * //output: (大约在1000毫秒之后输出) 1000\r\n * testDefer();\r\n * ```\r\n */\r\n\r\n /**\r\n * 创建延迟指定时间后执行的函数fn, 如果在延迟时间内再次执行该方法, 将会根据指定的exclusion的值,\r\n * 决定是否取消前一次函数的执行, 如果exclusion的值为true, 则取消执行,反之,将继续执行前一个方法。\r\n * @method defer\r\n * @param { Function } fn 需要延迟执行的函数对象\r\n * @param { int } delay 延迟的时间, 单位是毫秒\r\n * @param { Boolean } exclusion 如果在延迟时间内再次执行该函数,该值将决定是否取消执行前一次函数的执行,\r\n * 值为true表示取消执行, 反之则将在执行前一次函数之后才执行本次函数调用。\r\n * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后,\r\n * 而不能保证刚好到达延迟时间时执行。\r\n * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果\r\n * @example\r\n * ```javascript\r\n *\r\n * function test(){\r\n * console.log(1);\r\n * }\r\n *\r\n * var testDefer = UE.utils.defer( test, 1000, true );\r\n *\r\n * //output: (两次调用仅有一次输出) 1\r\n * testDefer();\r\n * testDefer();\r\n * ```\r\n */\r\n defer:function (fn, delay, exclusion) {\r\n var timerID;\r\n return function () {\r\n if (exclusion) {\r\n clearTimeout(timerID);\r\n }\r\n timerID = setTimeout(fn, delay);\r\n };\r\n },\r\n\r\n /**\r\n * 获取元素item在数组array中首次出现的位置, 如果未找到item, 则返回-1\r\n * @method indexOf\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @param { Array } array 需要查找的数组对象\r\n * @param { * } item 需要在目标数组中查找的值\r\n * @return { int } 返回item在目标数组array中首次出现的位置, 如果在数组中未找到item, 则返回-1\r\n * @example\r\n * ```javascript\r\n * var item = 1,\r\n * arr = [ 3, 4, 6, 8, 1, 1, 2 ];\r\n *\r\n * //output: 4\r\n * console.log( UE.utils.indexOf( arr, item ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取元素item数组array中首次出现的位置, 如果未找到item, 则返回-1。通过start的值可以指定搜索的起始位置。\r\n * @method indexOf\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @param { Array } array 需要查找的数组对象\r\n * @param { * } item 需要在目标数组中查找的值\r\n * @param { int } start 搜索的起始位置\r\n * @return { int } 返回item在目标数组array中的start位置之后首次出现的位置, 如果在数组中未找到item, 则返回-1\r\n * @example\r\n * ```javascript\r\n * var item = 1,\r\n * arr = [ 3, 4, 6, 8, 1, 2, 8, 3, 2, 1, 1, 4 ];\r\n *\r\n * //output: 9\r\n * console.log( UE.utils.indexOf( arr, item, 5 ) );\r\n * ```\r\n */\r\n indexOf:function (array, item, start) {\r\n var index = -1;\r\n start = this.isNumber(start) ? start : 0;\r\n this.each(array, function (v, i) {\r\n if (i >= start && v === item) {\r\n index = i;\r\n return false;\r\n }\r\n });\r\n return index;\r\n },\r\n\r\n /**\r\n * 移除数组array中所有的元素item\r\n * @method removeItem\r\n * @param { Array } array 要移除元素的目标数组\r\n * @param { * } item 将要被移除的元素\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @example\r\n * ```javascript\r\n * var arr = [ 4, 5, 7, 1, 3, 4, 6 ];\r\n *\r\n * UE.utils.removeItem( arr, 4 );\r\n * //output: [ 5, 7, 1, 3, 6 ]\r\n * console.log( arr );\r\n *\r\n * ```\r\n */\r\n removeItem:function (array, item) {\r\n for (var i = 0, l = array.length; i < l; i++) {\r\n if (array[i] === item) {\r\n array.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 删除字符串str的首尾空格\r\n * @method trim\r\n * @param { String } str 需要删除首尾空格的字符串\r\n * @return { String } 删除了首尾的空格后的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = \" UEdtior \";\r\n *\r\n * //output: 9\r\n * console.log( str.length );\r\n *\r\n * //output: 7\r\n * console.log( UE.utils.trim( \" UEdtior \" ).length );\r\n *\r\n * //output: 9\r\n * console.log( str.length );\r\n *\r\n * ```\r\n */\r\n trim:function (str) {\r\n return str.replace(/(^[ \\t\\n\\r]+)|([ \\t\\n\\r]+$)/g, '');\r\n },\r\n\r\n /**\r\n * 将字符串str以','分隔成数组后,将该数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1\r\n * @method listToMap\r\n * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。\r\n * @param { String } str 该字符串将被以','分割为数组, 然后进行转化\r\n * @return { Object } 转化之后的hash对象\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1}\r\n * console.log( UE.utils.listToMap( 'UEdtior,Hello' ) );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 将字符串数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1\r\n * @method listToMap\r\n * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。\r\n * @param { Array } arr 字符串数组\r\n * @return { Object } 转化之后的hash对象\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1}\r\n * console.log( UE.utils.listToMap( [ 'UEdtior', 'Hello' ] ) );\r\n *\r\n * ```\r\n */\r\n listToMap:function (list) {\r\n if (!list)return {};\r\n list = utils.isArray(list) ? list : list.split(',');\r\n for (var i = 0, ci, obj = {}; ci = list[i++];) {\r\n obj[ci.toUpperCase()] = obj[ci] = 1;\r\n }\r\n return obj;\r\n },\r\n\r\n /**\r\n * 将str中的html符号转义,将转义“',&,<,\",>”五个字符\r\n * @method unhtml\r\n * @param { String } str 需要转义的字符串\r\n * @return { String } 转义后的字符串\r\n * @example\r\n * ```javascript\r\n * var html = '<body>&</body>';\r\n *\r\n * //output: <body>&</body>\r\n * console.log( UE.utils.unhtml( html ) );\r\n *\r\n * ```\r\n */\r\n unhtml:function (str, reg) {\r\n return str ? str.replace(reg || /[&<\">'](?:(amp|lt|quot|gt|#39|nbsp|#\\d+);)?/g, function (a, b) {\r\n if (b) {\r\n return a;\r\n } else {\r\n return {\r\n '<':'<',\r\n '&':'&',\r\n '\"':'"',\r\n '>':'>',\r\n \"'\":'''\r\n }[a]\r\n }\r\n\r\n }) : '';\r\n },\r\n /**\r\n * 将url中的html字符转义, 仅转义 ', \", <, > 四个字符\r\n * @param { String } str 需要转义的字符串\r\n * @param { RegExp } reg 自定义的正则\r\n * @return { String } 转义后的字符串\r\n */\r\n unhtmlForUrl:function (str, reg) {\r\n return str ? str.replace(reg || /[<\">']/g, function (a) {\r\n return {\r\n '<':'<',\r\n '&':'&',\r\n '\"':'"',\r\n '>':'>',\r\n \"'\":'''\r\n }[a]\r\n\r\n }) : '';\r\n },\r\n\r\n /**\r\n * 将str中的转义字符还原成html字符\r\n * @see UE.utils.unhtml(String);\r\n * @method html\r\n * @param { String } str 需要逆转义的字符串\r\n * @return { String } 逆转义后的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = '<body>&</body>';\r\n *\r\n * //output: <body>&</body>\r\n * console.log( UE.utils.html( str ) );\r\n *\r\n * ```\r\n */\r\n html:function (str) {\r\n return str ? str.replace(/&((g|l|quo)t|amp|#39|nbsp);/g, function (m) {\r\n return {\r\n '<':'<',\r\n '&':'&',\r\n '"':'\"',\r\n '>':'>',\r\n ''':\"'\",\r\n ' ':' '\r\n }[m]\r\n }) : '';\r\n },\r\n\r\n /**\r\n * 将css样式转换为驼峰的形式\r\n * @method cssStyleToDomStyle\r\n * @param { String } cssName 需要转换的css样式名\r\n * @return { String } 转换成驼峰形式后的css样式名\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = 'border-top';\r\n *\r\n * //output: borderTop\r\n * console.log( UE.utils.cssStyleToDomStyle( str ) );\r\n *\r\n * ```\r\n */\r\n cssStyleToDomStyle:function () {\r\n var test = document.createElement('div').style,\r\n cache = {\r\n 'float':test.cssFloat != undefined ? 'cssFloat' : test.styleFloat != undefined ? 'styleFloat' : 'float'\r\n };\r\n\r\n return function (cssName) {\r\n return cache[cssName] || (cache[cssName] = cssName.toLowerCase().replace(/-./g, function (match) {\r\n return match.charAt(1).toUpperCase();\r\n }));\r\n };\r\n }(),\r\n\r\n /**\r\n * 动态加载文件到doc中\r\n * @method loadFile\r\n * @param { DomDocument } document 需要加载资源文件的文档对象\r\n * @param { Object } options 加载资源文件的属性集合, 取值请参考代码示例\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.loadFile( document, {\r\n * src:\"test.js\",\r\n * tag:\"script\",\r\n * type:\"text/javascript\",\r\n * defer:\"defer\"\r\n * } );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 动态加载文件到doc中,加载成功后执行的回调函数fn\r\n * @method loadFile\r\n * @param { DomDocument } document 需要加载资源文件的文档对象\r\n * @param { Object } options 加载资源文件的属性集合, 该集合支持的值是script标签和style标签支持的所有属性。\r\n * @param { Function } fn 资源文件加载成功之后执行的回调\r\n * @warning 对于在同一个文档中多次加载同一URL的文件, 该方法会在第一次加载之后缓存该请求,\r\n * 在此之后的所有同一URL的请求, 将会直接触发回调。\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.loadFile( document, {\r\n * src:\"test.js\",\r\n * tag:\"script\",\r\n * type:\"text/javascript\",\r\n * defer:\"defer\"\r\n * }, function () {\r\n * console.log('加载成功');\r\n * } );\r\n *\r\n * ```\r\n */\r\n loadFile:function () {\r\n var tmpList = [];\r\n\r\n function getItem(doc, obj) {\r\n try {\r\n for (var i = 0, ci; ci = tmpList[i++];) {\r\n if (ci.doc === doc && ci.url == (obj.src || obj.href)) {\r\n return ci;\r\n }\r\n }\r\n } catch (e) {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n return function (doc, obj, fn) {\r\n var item = getItem(doc, obj);\r\n if (item) {\r\n if (item.ready) {\r\n fn && fn();\r\n } else {\r\n item.funs.push(fn)\r\n }\r\n return;\r\n }\r\n tmpList.push({\r\n doc:doc,\r\n url:obj.src || obj.href,\r\n funs:[fn]\r\n });\r\n if (!doc.body) {\r\n var html = [];\r\n for (var p in obj) {\r\n if (p == 'tag')continue;\r\n html.push(p + '=\"' + obj[p] + '\"')\r\n }\r\n doc.write('<' + obj.tag + ' ' + html.join(' ') + ' ></' + obj.tag + '>');\r\n return;\r\n }\r\n if (obj.id && doc.getElementById(obj.id)) {\r\n return;\r\n }\r\n var element = doc.createElement(obj.tag);\r\n delete obj.tag;\r\n for (var p in obj) {\r\n element.setAttribute(p, obj[p]);\r\n }\r\n element.onload = element.onreadystatechange = function () {\r\n if (!this.readyState || /loaded|complete/.test(this.readyState)) {\r\n item = getItem(doc, obj);\r\n if (item.funs.length > 0) {\r\n item.ready = 1;\r\n for (var fi; fi = item.funs.pop();) {\r\n fi();\r\n }\r\n }\r\n element.onload = element.onreadystatechange = null;\r\n }\r\n };\r\n element.onerror = function () {\r\n throw Error('The load ' + (obj.href || obj.src) + ' fails,check the url settings of file ueditor.config.js ')\r\n };\r\n doc.getElementsByTagName(\"head\")[0].appendChild(element);\r\n }\r\n }(),\r\n\r\n /**\r\n * 判断obj对象是否为空\r\n * @method isEmptyObject\r\n * @param { * } obj 需要判断的对象\r\n * @remind 如果判断的对象是NULL, 将直接返回true, 如果是数组且为空, 返回true, 如果是字符串, 且字符串为空,\r\n * 返回true, 如果是普通对象, 且该对象没有任何实例属性, 返回true\r\n * @return { Boolean } 对象是否为空\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( {} ) );\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( [] ) );\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( \"\" ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( { key: 1 } ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( [1] ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( \"1\" ) );\r\n *\r\n * ```\r\n */\r\n isEmptyObject:function (obj) {\r\n if (obj == null) return true;\r\n if (this.isArray(obj) || this.isString(obj)) return obj.length === 0;\r\n for (var key in obj) if (obj.hasOwnProperty(key)) return false;\r\n return true;\r\n },\r\n\r\n /**\r\n * 把rgb格式的颜色值转换成16进制格式\r\n * @method fixColor\r\n * @param { String } rgb格式的颜色值\r\n * @param { String }\r\n * @example\r\n * rgb(255,255,255) => \"#ffffff\"\r\n */\r\n fixColor:function (name, value) {\r\n if (/color/i.test(name) && /rgba?/.test(value)) {\r\n var array = value.split(\",\");\r\n if (array.length > 3)\r\n return \"\";\r\n value = \"#\";\r\n for (var i = 0, color; color = array[i++];) {\r\n color = parseInt(color.replace(/[^\\d]/gi, ''), 10).toString(16);\r\n value += color.length == 1 ? \"0\" + color : color;\r\n }\r\n value = value.toUpperCase();\r\n }\r\n return value;\r\n },\r\n /**\r\n * 只针对border,padding,margin做了处理,因为性能问题\r\n * @public\r\n * @function\r\n * @param {String} val style字符串\r\n */\r\n optCss:function (val) {\r\n var padding, margin, border;\r\n val = val.replace(/(padding|margin|border)\\-([^:]+):([^;]+);?/gi, function (str, key, name, val) {\r\n if (val.split(' ').length == 1) {\r\n switch (key) {\r\n case 'padding':\r\n !padding && (padding = {});\r\n padding[name] = val;\r\n return '';\r\n case 'margin':\r\n !margin && (margin = {});\r\n margin[name] = val;\r\n return '';\r\n case 'border':\r\n return val == 'initial' ? '' : str;\r\n }\r\n }\r\n return str;\r\n });\r\n\r\n function opt(obj, name) {\r\n if (!obj) {\r\n return '';\r\n }\r\n var t = obj.top , b = obj.bottom, l = obj.left, r = obj.right, val = '';\r\n if (!t || !l || !b || !r) {\r\n for (var p in obj) {\r\n val += ';' + name + '-' + p + ':' + obj[p] + ';';\r\n }\r\n } else {\r\n val += ';' + name + ':' +\r\n (t == b && b == l && l == r ? t :\r\n t == b && l == r ? (t + ' ' + l) :\r\n l == r ? (t + ' ' + l + ' ' + b) : (t + ' ' + r + ' ' + b + ' ' + l)) + ';'\r\n }\r\n return val;\r\n }\r\n\r\n val += opt(padding, 'padding') + opt(margin, 'margin');\r\n return val.replace(/^[ \\n\\r\\t;]*|[ \\n\\r\\t]*$/, '').replace(/;([ \\n\\r\\t]+)|\\1;/g, ';')\r\n .replace(/(&((l|g)t|quot|#39))?;{2,}/g, function (a, b) {\r\n return b ? b + \";;\" : ';'\r\n });\r\n },\r\n\r\n /**\r\n * 克隆对象\r\n * @method clone\r\n * @param { Object } source 源对象\r\n * @return { Object } source的一个副本\r\n */\r\n\r\n /**\r\n * 深度克隆对象,将source的属性克隆到target对象, 会覆盖target重名的属性。\r\n * @method clone\r\n * @param { Object } source 源对象\r\n * @param { Object } target 目标对象\r\n * @return { Object } 附加了source对象所有属性的target对象\r\n */\r\n clone:function (source, target) {\r\n var tmp;\r\n target = target || {};\r\n for (var i in source) {\r\n if (source.hasOwnProperty(i)) {\r\n tmp = source[i];\r\n if (typeof tmp == 'object') {\r\n target[i] = utils.isArray(tmp) ? [] : {};\r\n utils.clone(source[i], target[i])\r\n } else {\r\n target[i] = tmp;\r\n }\r\n }\r\n }\r\n return target;\r\n },\r\n\r\n /**\r\n * 把cm/pt为单位的值转换为px为单位的值\r\n * @method transUnitToPx\r\n * @param { String } 待转换的带单位的字符串\r\n * @return { String } 转换为px为计量单位的值的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: 500px\r\n * console.log( UE.utils.transUnitToPx( '20cm' ) );\r\n *\r\n * //output: 27px\r\n * console.log( UE.utils.transUnitToPx( '20pt' ) );\r\n *\r\n * ```\r\n */\r\n transUnitToPx:function (val) {\r\n if (!/(pt|cm)/.test(val)) {\r\n return val\r\n }\r\n var unit;\r\n val.replace(/([\\d.]+)(\\w+)/, function (str, v, u) {\r\n val = v;\r\n unit = u;\r\n });\r\n switch (unit) {\r\n case 'cm':\r\n val = parseFloat(val) * 25;\r\n break;\r\n case 'pt':\r\n val = Math.round(parseFloat(val) * 96 / 72);\r\n }\r\n return val + (val ? 'px' : '');\r\n },\r\n\r\n /**\r\n * 在dom树ready之后执行给定的回调函数\r\n * @method domReady\r\n * @remind 如果在执行该方法的时候, dom树已经ready, 那么回调函数将立刻执行\r\n * @param { Function } fn dom树ready之后的回调函数\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.domReady( function () {\r\n *\r\n * console.log('123');\r\n *\r\n * } );\r\n *\r\n * ```\r\n */\r\n domReady:function () {\r\n\r\n var fnArr = [];\r\n\r\n function doReady(doc) {\r\n //确保onready只执行一次\r\n doc.isReady = true;\r\n for (var ci; ci = fnArr.pop(); ci()) {\r\n }\r\n }\r\n\r\n return function (onready, win) {\r\n win = win || window;\r\n var doc = win.document;\r\n onready && fnArr.push(onready);\r\n if (doc.readyState === \"complete\") {\r\n doReady(doc);\r\n } else {\r\n doc.isReady && doReady(doc);\r\n if (browser.ie && browser.version != 11) {\r\n (function () {\r\n if (doc.isReady) return;\r\n try {\r\n doc.documentElement.doScroll(\"left\");\r\n } catch (error) {\r\n setTimeout(arguments.callee, 0);\r\n return;\r\n }\r\n doReady(doc);\r\n })();\r\n win.attachEvent('onload', function () {\r\n doReady(doc)\r\n });\r\n } else {\r\n doc.addEventListener(\"DOMContentLoaded\", function () {\r\n doc.removeEventListener(\"DOMContentLoaded\", arguments.callee, false);\r\n doReady(doc);\r\n }, false);\r\n win.addEventListener('load', function () {\r\n doReady(doc)\r\n }, false);\r\n }\r\n }\r\n\r\n }\r\n }(),\r\n\r\n /**\r\n * 动态添加css样式\r\n * @method cssRule\r\n * @param { String } 节点名称\r\n * @grammar UE.utils.cssRule('添加的样式的节点名称',['样式','放到哪个document上'])\r\n * @grammar UE.utils.cssRule('body','body{background:#ccc}') => null //给body添加背景颜色\r\n * @grammar UE.utils.cssRule('body') =>样式的字符串 //取得key值为body的样式的内容,如果没有找到key值先关的样式将返回空,例如刚才那个背景颜色,将返回 body{background:#ccc}\r\n * @grammar UE.utils.cssRule('body',document) => 返回指定key的样式,并且指定是哪个document\r\n * @grammar UE.utils.cssRule('body','') =>null //清空给定的key值的背景颜色\r\n */\r\n cssRule:browser.ie && browser.version != 11 ? function (key, style, doc) {\r\n var indexList, index;\r\n if(style === undefined || style && style.nodeType && style.nodeType == 9){\r\n //获取样式\r\n doc = style && style.nodeType && style.nodeType == 9 ? style : (doc || document);\r\n indexList = doc.indexList || (doc.indexList = {});\r\n index = indexList[key];\r\n if(index !== undefined){\r\n return doc.styleSheets[index].cssText\r\n }\r\n return undefined;\r\n }\r\n doc = doc || document;\r\n indexList = doc.indexList || (doc.indexList = {});\r\n index = indexList[key];\r\n //清除样式\r\n if(style === ''){\r\n if(index!== undefined){\r\n doc.styleSheets[index].cssText = '';\r\n delete indexList[key];\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n //添加样式\r\n if(index!== undefined){\r\n sheetStyle = doc.styleSheets[index];\r\n }else{\r\n sheetStyle = doc.createStyleSheet('', index = doc.styleSheets.length);\r\n indexList[key] = index;\r\n }\r\n sheetStyle.cssText = style;\r\n }: function (key, style, doc) {\r\n var head, node;\r\n if(style === undefined || style && style.nodeType && style.nodeType == 9){\r\n //获取样式\r\n doc = style && style.nodeType && style.nodeType == 9 ? style : (doc || document);\r\n node = doc.getElementById(key);\r\n return node ? node.innerHTML : undefined;\r\n }\r\n doc = doc || document;\r\n node = doc.getElementById(key);\r\n\r\n //清除样式\r\n if(style === ''){\r\n if(node){\r\n node.parentNode.removeChild(node);\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n //添加样式\r\n if(node){\r\n node.innerHTML = style;\r\n }else{\r\n node = doc.createElement('style');\r\n node.id = key;\r\n node.innerHTML = style;\r\n doc.getElementsByTagName('head')[0].appendChild(node);\r\n }\r\n },\r\n sort:function(array,compareFn){\r\n compareFn = compareFn || function(item1, item2){ return item1.localeCompare(item2);};\r\n for(var i= 0,len = array.length; i<len; i++){\r\n for(var j = i,length = array.length; j<length; j++){\r\n if(compareFn(array[i], array[j]) > 0){\r\n var t = array[i];\r\n array[i] = array[j];\r\n array[j] = t;\r\n }\r\n }\r\n }\r\n return array;\r\n },\r\n serializeParam:function (json) {\r\n var strArr = [];\r\n for (var i in json) {\r\n //忽略默认的几个参数\r\n if(i==\"method\" || i==\"timeout\" || i==\"async\") continue;\r\n //传递过来的对象和函数不在提交之列\r\n if (!((typeof json[i]).toLowerCase() == \"function\" || (typeof json[i]).toLowerCase() == \"object\")) {\r\n strArr.push( encodeURIComponent(i) + \"=\"+encodeURIComponent(json[i]) );\r\n } else if (utils.isArray(json[i])) {\r\n //支持传数组内容\r\n for(var j = 0; j < json[i].length; j++) {\r\n strArr.push( encodeURIComponent(i) + \"[]=\"+encodeURIComponent(json[i][j]) );\r\n }\r\n }\r\n }\r\n return strArr.join(\"&\");\r\n },\r\n formatUrl:function (url) {\r\n var u = url.replace(/&&/g, '&');\r\n u = u.replace(/\\?&/g, '?');\r\n u = u.replace(/&$/g, '');\r\n u = u.replace(/&#/g, '#');\r\n u = u.replace(/&+/g, '&');\r\n return u;\r\n },\r\n isCrossDomainUrl:function (url) {\r\n var a = document.createElement('a');\r\n a.href = url;\r\n if (browser.ie) {\r\n a.href = a.href;\r\n }\r\n return !(a.protocol == location.protocol && a.hostname == location.hostname &&\r\n (a.port == location.port || (a.port == '80' && location.port == '') || (a.port == '' && location.port == '80')));\r\n },\r\n clearEmptyAttrs : function(obj){\r\n for(var p in obj){\r\n if(obj[p] === ''){\r\n delete obj[p]\r\n }\r\n }\r\n return obj;\r\n },\r\n str2json : function(s){\r\n\r\n if (!utils.isString(s)) return null;\r\n if (window.JSON) {\r\n return JSON.parse(s);\r\n } else {\r\n return (new Function(\"return \" + utils.trim(s || '')))();\r\n }\r\n\r\n },\r\n json2str : (function(){\r\n\r\n if (window.JSON) {\r\n\r\n return JSON.stringify;\r\n\r\n } else {\r\n\r\n var escapeMap = {\r\n \"\\b\": '\\\\b',\r\n \"\\t\": '\\\\t',\r\n \"\\n\": '\\\\n',\r\n \"\\f\": '\\\\f',\r\n \"\\r\": '\\\\r',\r\n '\"' : '\\\\\"',\r\n \"\\\\\": '\\\\\\\\'\r\n };\r\n\r\n function encodeString(source) {\r\n if (/[\"\\\\\\x00-\\x1f]/.test(source)) {\r\n source = source.replace(\r\n /[\"\\\\\\x00-\\x1f]/g,\r\n function (match) {\r\n var c = escapeMap[match];\r\n if (c) {\r\n return c;\r\n }\r\n c = match.charCodeAt();\r\n return \"\\\\u00\"\r\n + Math.floor(c / 16).toString(16)\r\n + (c % 16).toString(16);\r\n });\r\n }\r\n return '\"' + source + '\"';\r\n }\r\n\r\n function encodeArray(source) {\r\n var result = [\"[\"],\r\n l = source.length,\r\n preComma, i, item;\r\n\r\n for (i = 0; i < l; i++) {\r\n item = source[i];\r\n\r\n switch (typeof item) {\r\n case \"undefined\":\r\n case \"function\":\r\n case \"unknown\":\r\n break;\r\n default:\r\n if(preComma) {\r\n result.push(',');\r\n }\r\n result.push(utils.json2str(item));\r\n preComma = 1;\r\n }\r\n }\r\n result.push(\"]\");\r\n return result.join(\"\");\r\n }\r\n\r\n function pad(source) {\r\n return source < 10 ? '0' + source : source;\r\n }\r\n\r\n function encodeDate(source){\r\n return '\"' + source.getFullYear() + \"-\"\r\n + pad(source.getMonth() + 1) + \"-\"\r\n + pad(source.getDate()) + \"T\"\r\n + pad(source.getHours()) + \":\"\r\n + pad(source.getMinutes()) + \":\"\r\n + pad(source.getSeconds()) + '\"';\r\n }\r\n\r\n return function (value) {\r\n switch (typeof value) {\r\n case 'undefined':\r\n return 'undefined';\r\n\r\n case 'number':\r\n return isFinite(value) ? String(value) : \"null\";\r\n\r\n case 'string':\r\n return encodeString(value);\r\n\r\n case 'boolean':\r\n return String(value);\r\n\r\n default:\r\n if (value === null) {\r\n return 'null';\r\n } else if (utils.isArray(value)) {\r\n return encodeArray(value);\r\n } else if (utils.isDate(value)) {\r\n return encodeDate(value);\r\n } else {\r\n var result = ['{'],\r\n encode = utils.json2str,\r\n preComma,\r\n item;\r\n\r\n for (var key in value) {\r\n if (Object.prototype.hasOwnProperty.call(value, key)) {\r\n item = value[key];\r\n switch (typeof item) {\r\n case 'undefined':\r\n case 'unknown':\r\n case 'function':\r\n break;\r\n default:\r\n if (preComma) {\r\n result.push(',');\r\n }\r\n preComma = 1;\r\n result.push(encode(key) + ':' + encode(item));\r\n }\r\n }\r\n }\r\n result.push('}');\r\n return result.join('');\r\n }\r\n }\r\n };\r\n }\r\n\r\n })()\r\n\r\n};\r\n/**\r\n * 判断给定的对象是否是字符串\r\n * @method isString\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是字符串\r\n */\r\n\r\n/**\r\n * 判断给定的对象是否是数组\r\n * @method isArray\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是数组\r\n */\r\n\r\n/**\r\n * 判断给定的对象是否是一个Function\r\n * @method isFunction\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是Function\r\n */\r\n\r\n/**\r\n * 判断给定的对象是否是Number\r\n * @method isNumber\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是Number\r\n */\r\n\r\n/**\r\n * 判断给定的对象是否是一个正则表达式\r\n * @method isRegExp\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是正则表达式\r\n */\r\n\r\n/**\r\n * 判断给定的对象是否是一个普通对象\r\n * @method isObject\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是普通对象\r\n */\r\nutils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object', 'Date'], function (v) {\r\n UE.utils['is' + v] = function (obj) {\r\n return Object.prototype.toString.apply(obj) == '[object ' + v + ']';\r\n }\r\n});\r\n\r\n\r\n// core/EventBase.js\r\n/**\r\n * UE采用的事件基类\r\n * @file\r\n * @module UE\r\n * @class EventBase\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n/**\r\n * UE采用的事件基类,继承此类的对应类将获取addListener,removeListener,fireEvent方法。\r\n * 在UE中,Editor以及所有ui实例都继承了该类,故可以在对应的ui对象以及editor对象上使用上述方法。\r\n * @unfile\r\n * @module UE\r\n * @class EventBase\r\n */\r\n\r\n/**\r\n * 通过此构造器,子类可以继承EventBase获取事件监听的方法\r\n * @constructor\r\n * @example\r\n * ```javascript\r\n * UE.EventBase.call(editor);\r\n * ```\r\n */\r\nvar EventBase = UE.EventBase = function () {};\r\n\r\nEventBase.prototype = {\r\n\r\n /**\r\n * 注册事件监听器\r\n * @method addListener\r\n * @param { String } types 监听的事件名称,同时监听多个事件使用空格分隔\r\n * @param { Function } fn 监听的事件被触发时,会执行该回调函数\r\n * @waining 事件被触发时,监听的函数假如返回的值恒等于true,回调函数的队列中后面的函数将不执行\r\n * @example\r\n * ```javascript\r\n * editor.addListener('selectionchange',function(){\r\n * console.log(\"选区已经变化!\");\r\n * })\r\n * editor.addListener('beforegetcontent aftergetcontent',function(type){\r\n * if(type == 'beforegetcontent'){\r\n * //do something\r\n * }else{\r\n * //do something\r\n * }\r\n * console.log(this.getContent) // this是注册的事件的编辑器实例\r\n * })\r\n * ```\r\n * @see UE.EventBase:fireEvent(String)\r\n */\r\n addListener:function (types, listener) {\r\n types = utils.trim(types).split(/\\s+/);\r\n for (var i = 0, ti; ti = types[i++];) {\r\n getListener(this, ti, true).push(listener);\r\n }\r\n },\r\n\r\n on : function(types, listener){\r\n return this.addListener(types,listener);\r\n },\r\n off : function(types, listener){\r\n return this.removeListener(types, listener)\r\n },\r\n trigger:function(){\r\n return this.fireEvent.apply(this,arguments);\r\n },\r\n /**\r\n * 移除事件监听器\r\n * @method removeListener\r\n * @param { String } types 移除的事件名称,同时移除多个事件使用空格分隔\r\n * @param { Function } fn 移除监听事件的函数引用\r\n * @example\r\n * ```javascript\r\n * //changeCallback为方法体\r\n * editor.removeListener(\"selectionchange\",changeCallback);\r\n * ```\r\n */\r\n removeListener:function (types, listener) {\r\n types = utils.trim(types).split(/\\s+/);\r\n for (var i = 0, ti; ti = types[i++];) {\r\n utils.removeItem(getListener(this, ti) || [], listener);\r\n }\r\n },\r\n\r\n /**\r\n * 触发事件\r\n * @method fireEvent\r\n * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔\r\n * @remind 该方法会触发addListener\r\n * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值\r\n * @example\r\n * ```javascript\r\n * editor.fireEvent(\"selectionchange\");\r\n * ```\r\n */\r\n\r\n /**\r\n * 触发事件\r\n * @method fireEvent\r\n * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔\r\n * @param { *... } options 可选参数,可以传入一个或多个参数,会传给事件触发的回调函数\r\n * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值\r\n * @example\r\n * ```javascript\r\n *\r\n * editor.addListener( \"selectionchange\", function ( type, arg1, arg2 ) {\r\n *\r\n * console.log( arg1 + \" \" + arg2 );\r\n *\r\n * } );\r\n *\r\n * //触发selectionchange事件, 会执行上面的事件监听器\r\n * //output: Hello World\r\n * editor.fireEvent(\"selectionchange\", \"Hello\", \"World\");\r\n * ```\r\n */\r\n fireEvent:function () {\r\n var types = arguments[0];\r\n types = utils.trim(types).split(' ');\r\n for (var i = 0, ti; ti = types[i++];) {\r\n var listeners = getListener(this, ti),\r\n r, t, k;\r\n if (listeners) {\r\n k = listeners.length;\r\n while (k--) {\r\n if(!listeners[k])continue;\r\n t = listeners[k].apply(this, arguments);\r\n if(t === true){\r\n return t;\r\n }\r\n if (t !== undefined) {\r\n r = t;\r\n }\r\n }\r\n }\r\n if (t = this['on' + ti.toLowerCase()]) {\r\n r = t.apply(this, arguments);\r\n }\r\n }\r\n return r;\r\n }\r\n};\r\n/**\r\n * 获得对象所拥有监听类型的所有监听器\r\n * @unfile\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method getListener\r\n * @public\r\n * @param { Object } obj 查询监听器的对象\r\n * @param { String } type 事件类型\r\n * @param { Boolean } force 为true且当前所有type类型的侦听器不存在时,创建一个空监听器数组\r\n * @return { Array } 监听器数组\r\n */\r\nfunction getListener(obj, type, force) {\r\n var allListeners;\r\n type = type.toLowerCase();\r\n return ( ( allListeners = ( obj.__allListeners || force && ( obj.__allListeners = {} ) ) )\r\n && ( allListeners[type] || force && ( allListeners[type] = [] ) ) );\r\n}\r\n\r\n\r\n\r\n// core/dtd.js\r\n///import editor.js\r\n///import core/dom/dom.js\r\n///import core/utils.js\r\n/**\r\n * dtd html语义化的体现类\r\n * @constructor\r\n * @namespace dtd\r\n */\r\nvar dtd = dom.dtd = (function() {\r\n function _( s ) {\r\n for (var k in s) {\r\n s[k.toUpperCase()] = s[k];\r\n }\r\n return s;\r\n }\r\n var X = utils.extend2;\r\n var A = _({isindex:1,fieldset:1}),\r\n B = _({input:1,button:1,select:1,textarea:1,label:1}),\r\n C = X( _({a:1}), B ),\r\n D = X( {iframe:1}, C ),\r\n E = _({hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}),\r\n F = _({ins:1,del:1,script:1,style:1}),\r\n G = X( _({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1}), F ),\r\n H = X( _({sub:1,img:1,embed:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1}), G ),\r\n I = X( _({p:1}), H ),\r\n J = X( _({iframe:1}), H, B ),\r\n K = _({img:1,embed:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1}),\r\n\r\n L = X( _({a:0}), J ),//a不能被切开,所以把他\r\n M = _({tr:1}),\r\n N = _({'#':1}),\r\n O = X( _({param:1}), K ),\r\n P = X( _({form:1}), A, D, E, I ),\r\n Q = _({li:1,ol:1,ul:1}),\r\n R = _({style:1,script:1}),\r\n S = _({base:1,link:1,meta:1,title:1}),\r\n T = X( S, R ),\r\n U = _({head:1,body:1}),\r\n V = _({html:1});\r\n\r\n var block = _({address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1}),\r\n\r\n empty = _({area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1});\r\n\r\n return _({\r\n\r\n // $ 表示自定的属性\r\n\r\n // body外的元素列表.\r\n $nonBodyContent: X( V, U, S ),\r\n\r\n //块结构元素列表\r\n $block : block,\r\n\r\n //内联元素列表\r\n $inline : L,\r\n\r\n $inlineWithA : X(_({a:1}),L),\r\n\r\n $body : X( _({script:1,style:1}), block ),\r\n\r\n $cdata : _({script:1,style:1}),\r\n\r\n //自闭和元素\r\n $empty : empty,\r\n\r\n //不是自闭合,但不能让range选中里边\r\n $nonChild : _({iframe:1,textarea:1}),\r\n //列表元素列表\r\n $listItem : _({dd:1,dt:1,li:1}),\r\n\r\n //列表根元素列表\r\n $list: _({ul:1,ol:1,dl:1}),\r\n\r\n //不能认为是空的元素\r\n $isNotEmpty : _({table:1,ul:1,ol:1,dl:1,iframe:1,area:1,base:1,col:1,hr:1,img:1,embed:1,input:1,link:1,meta:1,param:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1}),\r\n\r\n //如果没有子节点就可以删除的元素列表,像span,a\r\n $removeEmpty : _({a:1,abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1}),\r\n\r\n $removeEmptyBlock : _({'p':1,'div':1}),\r\n\r\n //在table元素里的元素列表\r\n $tableContent : _({caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1,table:1}),\r\n //不转换的标签\r\n $notTransContent : _({pre:1,script:1,style:1,textarea:1}),\r\n html: U,\r\n head: T,\r\n style: N,\r\n script: N,\r\n body: P,\r\n base: {},\r\n link: {},\r\n meta: {},\r\n title: N,\r\n col : {},\r\n tr : _({td:1,th:1}),\r\n img : {},\r\n embed: {},\r\n colgroup : _({thead:1,col:1,tbody:1,tr:1,tfoot:1}),\r\n noscript : P,\r\n td : P,\r\n br : {},\r\n th : P,\r\n center : P,\r\n kbd : L,\r\n button : X( I, E ),\r\n basefont : {},\r\n h5 : L,\r\n h4 : L,\r\n samp : L,\r\n h6 : L,\r\n ol : Q,\r\n h1 : L,\r\n h3 : L,\r\n option : N,\r\n h2 : L,\r\n form : X( A, D, E, I ),\r\n select : _({optgroup:1,option:1}),\r\n font : L,\r\n ins : L,\r\n menu : Q,\r\n abbr : L,\r\n label : L,\r\n table : _({thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1}),\r\n code : L,\r\n tfoot : M,\r\n cite : L,\r\n li : P,\r\n input : {},\r\n iframe : P,\r\n strong : L,\r\n textarea : N,\r\n noframes : P,\r\n big : L,\r\n small : L,\r\n //trace:\r\n span :_({'#':1,br:1,b:1,strong:1,u:1,i:1,em:1,sub:1,sup:1,strike:1,span:1}),\r\n hr : L,\r\n dt : L,\r\n sub : L,\r\n optgroup : _({option:1}),\r\n param : {},\r\n bdo : L,\r\n 'var' : L,\r\n div : P,\r\n object : O,\r\n sup : L,\r\n dd : P,\r\n strike : L,\r\n area : {},\r\n dir : Q,\r\n map : X( _({area:1,form:1,p:1}), A, F, E ),\r\n applet : O,\r\n dl : _({dt:1,dd:1}),\r\n del : L,\r\n isindex : {},\r\n fieldset : X( _({legend:1}), K ),\r\n thead : M,\r\n ul : Q,\r\n acronym : L,\r\n b : L,\r\n a : X( _({a:1}), J ),\r\n blockquote :X(_({td:1,tr:1,tbody:1,li:1}),P),\r\n caption : L,\r\n i : L,\r\n u : L,\r\n tbody : M,\r\n s : L,\r\n address : X( D, I ),\r\n tt : L,\r\n legend : L,\r\n q : L,\r\n pre : X( G, C ),\r\n p : X(_({'a':1}),L),\r\n em :L,\r\n dfn : L\r\n });\r\n})();\r\n\r\n\r\n// core/domUtils.js\r\n/**\r\n * Dom操作工具包\r\n * @file\r\n * @module UE.dom.domUtils\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * Dom操作工具包\r\n * @unfile\r\n * @module UE.dom.domUtils\r\n */\r\nfunction getDomNode(node, start, ltr, startFromChild, fn, guard) {\r\n var tmpNode = startFromChild && node[start],\r\n parent;\r\n !tmpNode && (tmpNode = node[ltr]);\r\n while (!tmpNode && (parent = (parent || node).parentNode)) {\r\n if (parent.tagName == 'BODY' || guard && !guard(parent)) {\r\n return null;\r\n }\r\n tmpNode = parent[ltr];\r\n }\r\n if (tmpNode && fn && !fn(tmpNode)) {\r\n return getDomNode(tmpNode, start, ltr, false, fn);\r\n }\r\n return tmpNode;\r\n}\r\nvar attrFix = ie && browser.version < 9 ? {\r\n tabindex:\"tabIndex\",\r\n readonly:\"readOnly\",\r\n \"for\":\"htmlFor\",\r\n \"class\":\"className\",\r\n maxlength:\"maxLength\",\r\n cellspacing:\"cellSpacing\",\r\n cellpadding:\"cellPadding\",\r\n rowspan:\"rowSpan\",\r\n colspan:\"colSpan\",\r\n usemap:\"useMap\",\r\n frameborder:\"frameBorder\"\r\n } : {\r\n tabindex:\"tabIndex\",\r\n readonly:\"readOnly\"\r\n },\r\n styleBlock = utils.listToMap([\r\n '-webkit-box', '-moz-box', 'block' ,\r\n 'list-item' , 'table' , 'table-row-group' ,\r\n 'table-header-group', 'table-footer-group' ,\r\n 'table-row' , 'table-column-group' , 'table-column' ,\r\n 'table-cell' , 'table-caption'\r\n ]);\r\nvar domUtils = dom.domUtils = {\r\n //节点常量\r\n NODE_ELEMENT:1,\r\n NODE_DOCUMENT:9,\r\n NODE_TEXT:3,\r\n NODE_COMMENT:8,\r\n NODE_DOCUMENT_FRAGMENT:11,\r\n\r\n //位置关系\r\n POSITION_IDENTICAL:0,\r\n POSITION_DISCONNECTED:1,\r\n POSITION_FOLLOWING:2,\r\n POSITION_PRECEDING:4,\r\n POSITION_IS_CONTAINED:8,\r\n POSITION_CONTAINS:16,\r\n //ie6使用其他的会有一段空白出现\r\n fillChar:ie && browser.version == '6' ? '\\ufeff' : '\\u200B',\r\n //-------------------------Node部分--------------------------------\r\n keys:{\r\n /*Backspace*/ 8:1, /*Delete*/ 46:1,\r\n /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1,\r\n 37:1, 38:1, 39:1, 40:1,\r\n 13:1 /*enter*/\r\n },\r\n /**\r\n * 获取节点A相对于节点B的位置关系\r\n * @method getPosition\r\n * @param { Node } nodeA 需要查询位置关系的节点A\r\n * @param { Node } nodeB 需要查询位置关系的节点B\r\n * @return { Number } 节点A与节点B的关系\r\n * @example\r\n * ```javascript\r\n * //output: 20\r\n * var position = UE.dom.domUtils.getPosition( document.documentElement, document.body );\r\n *\r\n * switch ( position ) {\r\n *\r\n * //0\r\n * case UE.dom.domUtils.POSITION_IDENTICAL:\r\n * console.log('元素相同');\r\n * break;\r\n * //1\r\n * case UE.dom.domUtils.POSITION_DISCONNECTED:\r\n * console.log('两个节点在不同的文档中');\r\n * break;\r\n * //2\r\n * case UE.dom.domUtils.POSITION_FOLLOWING:\r\n * console.log('节点A在节点B之后');\r\n * break;\r\n * //4\r\n * case UE.dom.domUtils.POSITION_PRECEDING;\r\n * console.log('节点A在节点B之前');\r\n * break;\r\n * //8\r\n * case UE.dom.domUtils.POSITION_IS_CONTAINED:\r\n * console.log('节点A被节点B包含');\r\n * break;\r\n * case 10:\r\n * console.log('节点A被节点B包含且节点A在节点B之后');\r\n * break;\r\n * //16\r\n * case UE.dom.domUtils.POSITION_CONTAINS:\r\n * console.log('节点A包含节点B');\r\n * break;\r\n * case 20:\r\n * console.log('节点A包含节点B且节点A在节点B之前');\r\n * break;\r\n *\r\n * }\r\n * ```\r\n */\r\n getPosition:function (nodeA, nodeB) {\r\n // 如果两个节点是同一个节点\r\n if (nodeA === nodeB) {\r\n // domUtils.POSITION_IDENTICAL\r\n return 0;\r\n }\r\n var node,\r\n parentsA = [nodeA],\r\n parentsB = [nodeB];\r\n node = nodeA;\r\n while (node = node.parentNode) {\r\n // 如果nodeB是nodeA的祖先节点\r\n if (node === nodeB) {\r\n // domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING\r\n return 10;\r\n }\r\n parentsA.push(node);\r\n }\r\n node = nodeB;\r\n while (node = node.parentNode) {\r\n // 如果nodeA是nodeB的祖先节点\r\n if (node === nodeA) {\r\n // domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING\r\n return 20;\r\n }\r\n parentsB.push(node);\r\n }\r\n parentsA.reverse();\r\n parentsB.reverse();\r\n if (parentsA[0] !== parentsB[0]) {\r\n // domUtils.POSITION_DISCONNECTED\r\n return 1;\r\n }\r\n var i = -1;\r\n while (i++, parentsA[i] === parentsB[i]) {\r\n }\r\n nodeA = parentsA[i];\r\n nodeB = parentsB[i];\r\n while (nodeA = nodeA.nextSibling) {\r\n if (nodeA === nodeB) {\r\n // domUtils.POSITION_PRECEDING\r\n return 4\r\n }\r\n }\r\n // domUtils.POSITION_FOLLOWING\r\n return 2;\r\n },\r\n\r\n /**\r\n * 检测节点node在父节点中的索引位置\r\n * @method getNodeIndex\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Number } 该节点在父节点中的位置\r\n * @see UE.dom.domUtils.getNodeIndex(Node,Boolean)\r\n */\r\n\r\n /**\r\n * 检测节点node在父节点中的索引位置, 根据给定的mergeTextNode参数决定是否要合并多个连续的文本节点为一个节点\r\n * @method getNodeIndex\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { Boolean } mergeTextNode 是否合并多个连续的文本节点为一个节点\r\n * @return { Number } 该节点在父节点中的位置\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"div\");\r\n *\r\n * node.appendChild( document.createTextNode( \"hello\" ) );\r\n * node.appendChild( document.createTextNode( \"world\" ) );\r\n * node.appendChild( node = document.createElement( \"div\" ) );\r\n *\r\n * //output: 2\r\n * console.log( UE.dom.domUtils.getNodeIndex( node ) );\r\n *\r\n * //output: 1\r\n * console.log( UE.dom.domUtils.getNodeIndex( node, true ) );\r\n *\r\n * ```\r\n */\r\n getNodeIndex:function (node, ignoreTextNode) {\r\n var preNode = node,\r\n i = 0;\r\n while (preNode = preNode.previousSibling) {\r\n if (ignoreTextNode && preNode.nodeType == 3) {\r\n if(preNode.nodeType != preNode.nextSibling.nodeType ){\r\n i++;\r\n }\r\n continue;\r\n }\r\n i++;\r\n }\r\n return i;\r\n },\r\n\r\n /**\r\n * 检测节点node是否在给定的document对象上\r\n * @method inDoc\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { DomDocument } doc 需要检测的document对象\r\n * @return { Boolean } 该节点node是否在给定的document的dom树上\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"div\");\r\n *\r\n * //output: false\r\n * console.log( UE.do.domUtils.inDoc( node, document ) );\r\n *\r\n * document.body.appendChild( node );\r\n *\r\n * //output: true\r\n * console.log( UE.do.domUtils.inDoc( node, document ) );\r\n *\r\n * ```\r\n */\r\n inDoc:function (node, doc) {\r\n return domUtils.getPosition(node, doc) == 10;\r\n },\r\n /**\r\n * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点,\r\n * 查找的起点是给定node节点的父节点。\r\n * @method findParent\r\n * @param { Node } node 需要查找的节点\r\n * @param { Function } filterFn 自定义的过滤方法。\r\n * @warning 查找的终点是到body节点为止\r\n * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该\r\n * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。\r\n * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var filterNode = UE.dom.domUtils.findParent( document.body.firstChild, function ( node ) {\r\n *\r\n * //由于查找的终点是body节点, 所以永远也不会匹配当前过滤器的条件, 即这里永远会返回false\r\n * return node.tagName === \"HTML\";\r\n *\r\n * } );\r\n *\r\n * //output: true\r\n * console.log( filterNode === null );\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点,\r\n * 如果includeSelf的值为true,则查找的起点是给定的节点node, 否则, 起点是node的父节点\r\n * @method findParent\r\n * @param { Node } node 需要查找的节点\r\n * @param { Function } filterFn 自定义的过滤方法。\r\n * @param { Boolean } includeSelf 查找过程是否包含自身\r\n * @warning 查找的终点是到body节点为止\r\n * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该\r\n * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。\r\n * @remind 如果includeSelf为true, 则过滤器第一次执行时的参数会是节点本身。\r\n * 反之, 过滤器第一次执行时的参数将是该节点的父节点。\r\n * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL\r\n * @example\r\n * ```html\r\n * <body>\r\n *\r\n * <div id=\"test\">\r\n * </div>\r\n *\r\n * <script type=\"text/javascript\">\r\n *\r\n * //output: DIV, BODY\r\n * var filterNode = UE.dom.domUtils.findParent( document.getElementById( \"test\" ), function ( node ) {\r\n *\r\n * console.log( node.tagName );\r\n * return false;\r\n *\r\n * }, true );\r\n *\r\n * </script>\r\n * </body>\r\n * ```\r\n */\r\n findParent:function (node, filterFn, includeSelf) {\r\n if (node && !domUtils.isBody(node)) {\r\n node = includeSelf ? node : node.parentNode;\r\n while (node) {\r\n if (!filterFn || filterFn(node) || domUtils.isBody(node)) {\r\n return filterFn && !filterFn(node) && domUtils.isBody(node) ? null : node;\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n return null;\r\n },\r\n /**\r\n * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。\r\n * @method findParentByTagName\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Array } tagNames 需要查找的父节点的名称数组\r\n * @warning 查找的终点是到body节点为止\r\n * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName(\"div\")[0], [ \"BODY\" ] );\r\n * //output: BODY\r\n * console.log( node.tagName );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node,\r\n * 否则, 起点是node的父节点。\r\n * @method findParentByTagName\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Array } tagNames 需要查找的父节点的名称数组\r\n * @param { Boolean } includeSelf 查找过程是否包含node节点自身\r\n * @warning 查找的终点是到body节点为止\r\n * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var queryTarget = document.getElementsByTagName(\"div\")[0];\r\n * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], true );\r\n * //output: true\r\n * console.log( queryTarget === node );\r\n * ```\r\n */\r\n findParentByTagName:function (node, tagNames, includeSelf, excludeFn) {\r\n tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]);\r\n return domUtils.findParent(node, function (node) {\r\n return tagNames[node.tagName] && !(excludeFn && excludeFn(node));\r\n }, includeSelf);\r\n },\r\n /**\r\n * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。\r\n * @method findParents\r\n * @param { Node } node 需要查找的节点对象\r\n * @return { Array } 给定节点的祖先节点数组\r\n * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个\r\n */\r\n\r\n /**\r\n * 查找节点node的祖先节点集合, 如果includeSelf的值为true,\r\n * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。\r\n * @method findParents\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象\r\n * @return { Array } 给定节点的祖先节点数组\r\n */\r\n findParents:function (node, includeSelf, filterFn, closerFirst) {\r\n var parents = includeSelf && ( filterFn && filterFn(node) || !filterFn ) ? [node] : [];\r\n while (node = domUtils.findParent(node, filterFn)) {\r\n parents.push(node);\r\n }\r\n return closerFirst ? parents : parents.reverse();\r\n },\r\n\r\n /**\r\n * 在节点node后面插入新节点newNode\r\n * @method insertAfter\r\n * @param { Node } node 目标节点\r\n * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后\r\n * @return { Node } 新插入的节点\r\n */\r\n insertAfter:function (node, newNode) {\r\n return node.nextSibling ? node.parentNode.insertBefore(newNode, node.nextSibling):\r\n node.parentNode.appendChild(newNode);\r\n },\r\n\r\n /**\r\n * 删除节点node及其下属的所有节点\r\n * @method remove\r\n * @param { Node } node 需要删除的节点对象\r\n * @return { Node } 返回刚删除的节点对象\r\n * @example\r\n * ```html\r\n * <div id=\"test\">\r\n * <div id=\"child\">你好</div>\r\n * </div>\r\n * <script>\r\n * UE.dom.domUtils.remove( document.body, false );\r\n * //output: false\r\n * console.log( document.getElementById( \"child\" ) !== null );\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 删除节点node,并根据keepChildren的值决定是否保留子节点\r\n * @method remove\r\n * @param { Node } node 需要删除的节点对象\r\n * @param { Boolean } keepChildren 是否需要保留子节点\r\n * @return { Node } 返回刚删除的节点对象\r\n * @example\r\n * ```html\r\n * <div id=\"test\">\r\n * <div id=\"child\">你好</div>\r\n * </div>\r\n * <script>\r\n * UE.dom.domUtils.remove( document.body, true );\r\n * //output: true\r\n * console.log( document.getElementById( \"child\" ) !== null );\r\n * </script>\r\n * ```\r\n */\r\n remove:function (node, keepChildren) {\r\n var parent = node.parentNode,\r\n child;\r\n if (parent) {\r\n if (keepChildren && node.hasChildNodes()) {\r\n while (child = node.firstChild) {\r\n parent.insertBefore(child, node);\r\n }\r\n }\r\n parent.removeChild(node);\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点,\r\n * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。\r\n * @method getNextDomNode\r\n * @param { Node } node 需要获取其后的兄弟节点的节点对象\r\n * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```html\r\n * <body>\r\n * <div id=\"test\">\r\n * <span></span>\r\n * </div>\r\n * <i>xxx</i>\r\n * </body>\r\n * <script>\r\n *\r\n * //output: i节点\r\n * console.log( UE.dom.domUtils.getNextDomNode( document.getElementById( \"test\" ) ) );\r\n *\r\n * </script>\r\n * ```\r\n * @example\r\n * ```html\r\n * <body>\r\n * <div>\r\n * <span></span>\r\n * <i id=\"test\">xxx</i>\r\n * </div>\r\n * <b>xxx</b>\r\n * </body>\r\n * <script>\r\n *\r\n * //由于id为test的i节点之后没有兄弟节点, 则查找其父节点(div)后面的兄弟节点\r\n * //output: b节点\r\n * console.log( UE.dom.domUtils.getNextDomNode( document.getElementById( \"test\" ) ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点,\r\n * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false,\r\n * 则执行<a href=\"#UE.dom.domUtils.getNextDomNode(Node)\">getNextDomNode(Node node)</a>的查找过程。\r\n * @method getNextDomNode\r\n * @param { Node } node 需要获取其后的兄弟节点的节点对象\r\n * @param { Boolean } startFromChild 查找过程是否从其子节点开始\r\n * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL\r\n * @see UE.dom.domUtils.getNextDomNode(Node)\r\n */\r\n getNextDomNode:function (node, startFromChild, filterFn, guard) {\r\n return getDomNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard);\r\n },\r\n getPreDomNode:function (node, startFromChild, filterFn, guard) {\r\n return getDomNode(node, 'lastChild', 'previousSibling', startFromChild, filterFn, guard);\r\n },\r\n /**\r\n * 检测节点node是否属是UEditor定义的bookmark节点\r\n * @method isBookmarkNode\r\n * @private\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 是否是bookmark节点\r\n * @example\r\n * ```html\r\n * <span id=\"_baidu_bookmark_1\"></span>\r\n * <script>\r\n * var bookmarkNode = document.getElementById(\"_baidu_bookmark_1\");\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isBookmarkNode( bookmarkNode ) );\r\n * </script>\r\n * ```\r\n */\r\n isBookmarkNode:function (node) {\r\n return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id);\r\n },\r\n /**\r\n * 获取节点node所属的window对象\r\n * @method getWindow\r\n * @param { Node } node 节点对象\r\n * @return { Window } 当前节点所属的window对象\r\n * @example\r\n * ```javascript\r\n * //output: true\r\n * console.log( UE.dom.domUtils.getWindow( document.body ) === window );\r\n * ```\r\n */\r\n getWindow:function (node) {\r\n var doc = node.ownerDocument || node;\r\n return doc.defaultView || doc.parentWindow;\r\n },\r\n /**\r\n * 获取离nodeA与nodeB最近的公共的祖先节点\r\n * @method getCommonAncestor\r\n * @param { Node } nodeA 第一个节点\r\n * @param { Node } nodeB 第二个节点\r\n * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。\r\n * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。\r\n * @example\r\n * ```javascript\r\n * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild );\r\n * //output: true\r\n * console.log( commonAncestor.tagName.toLowerCase() === 'body' );\r\n * ```\r\n */\r\n getCommonAncestor:function (nodeA, nodeB) {\r\n if (nodeA === nodeB)\r\n return nodeA;\r\n var parentsA = [nodeA] , parentsB = [nodeB], parent = nodeA, i = -1;\r\n while (parent = parent.parentNode) {\r\n if (parent === nodeB) {\r\n return parent;\r\n }\r\n parentsA.push(parent);\r\n }\r\n parent = nodeB;\r\n while (parent = parent.parentNode) {\r\n if (parent === nodeA)\r\n return parent;\r\n parentsB.push(parent);\r\n }\r\n parentsA.reverse();\r\n parentsB.reverse();\r\n while (i++, parentsA[i] === parentsB[i]) {\r\n }\r\n return i == 0 ? null : parentsA[i - 1];\r\n\r\n },\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * 则这些兄弟节点将被删除\r\n * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点\r\n * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点\r\n * @example\r\n * ```html\r\n * <body>\r\n * <div></div>\r\n * <span id=\"test\"></span>\r\n * <i></i>\r\n * <b></b>\r\n * <em>xxx</em>\r\n * <span></span>\r\n * </body>\r\n * <script>\r\n *\r\n * UE.dom.domUtils.clearEmptySibling( document.getElementById( \"test\" ) );\r\n *\r\n * //output: <div></div><span id=\"test\"></span><em>xxx</em><span></span>\r\n * console.log( document.body.innerHTML );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true,\r\n * 则忽略对右边兄弟节点的操作。\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作\r\n * 则这些兄弟节点将被删除\r\n * @see UE.dom.domUtils.clearEmptySibling(Node)\r\n */\r\n\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true,\r\n * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作\r\n * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作\r\n * 则这些兄弟节点将被删除\r\n * @see UE.dom.domUtils.clearEmptySibling(Node)\r\n */\r\n clearEmptySibling:function (node, ignoreNext, ignorePre) {\r\n function clear(next, dir) {\r\n var tmpNode;\r\n while (next && !domUtils.isBookmarkNode(next) && (domUtils.isEmptyInlineElement(next)\r\n //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了\r\n || !new RegExp('[^\\t\\n\\r' + domUtils.fillChar + ']').test(next.nodeValue) )) {\r\n tmpNode = next[dir];\r\n domUtils.remove(next);\r\n next = tmpNode;\r\n }\r\n }\r\n !ignoreNext && clear(node.nextSibling, 'nextSibling');\r\n !ignorePre && clear(node.previousSibling, 'previousSibling');\r\n },\r\n /**\r\n * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置\r\n * @method split\r\n * @param { Node } textNode 需要拆分的文本节点对象\r\n * @param { int } offset 需要拆分的位置, 位置计算从0开始\r\n * @return { Node } 拆分后形成的新节点\r\n * @example\r\n * ```html\r\n * <div id=\"test\">abcdef</div>\r\n * <script>\r\n * var newNode = UE.dom.domUtils.split( document.getElementById( \"test\" ).firstChild, 3 );\r\n * //output: def\r\n * console.log( newNode.nodeValue );\r\n * </script>\r\n * ```\r\n */\r\n split:function (node, offset) {\r\n var doc = node.ownerDocument;\r\n if (browser.ie && offset == node.nodeValue.length) {\r\n var next = doc.createTextNode('');\r\n return domUtils.insertAfter(node, next);\r\n }\r\n var retval = node.splitText(offset);\r\n //ie8下splitText不会跟新childNodes,我们手动触发他的更新\r\n if (browser.ie8) {\r\n var tmpNode = doc.createTextNode('');\r\n domUtils.insertAfter(retval, tmpNode);\r\n domUtils.remove(tmpNode);\r\n }\r\n return retval;\r\n },\r\n\r\n /**\r\n * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符)\r\n * @method isWhitespace\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 检测的节点是否为空\r\n * @example\r\n * ```html\r\n * <div id=\"test\">\r\n *\r\n * </div>\r\n * <script>\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isWhitespace( document.getElementById(\"test\").firstChild ) );\r\n * </script>\r\n * ```\r\n */\r\n isWhitespace:function (node) {\r\n return !new RegExp('[^ \\t\\n\\r' + domUtils.fillChar + ']').test(node.nodeValue);\r\n },\r\n /**\r\n * 获取元素element相对于viewport的位置坐标\r\n * @method getXY\r\n * @param { Node } element 需要计算位置的节点对象\r\n * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离,\r\n * y代表垂直偏移距离。\r\n *\r\n * @example\r\n * ```javascript\r\n * var location = UE.dom.domUtils.getXY( document.getElementById(\"test\") );\r\n * //output: test的坐标为: 12, 24\r\n * console.log( 'test的坐标为: ', location.x, ',', location.y );\r\n * ```\r\n */\r\n getXY:function (element) {\r\n var x = 0, y = 0;\r\n while (element.offsetParent) {\r\n y += element.offsetTop;\r\n x += element.offsetLeft;\r\n element = element.offsetParent;\r\n }\r\n return { 'x':x, 'y':y};\r\n },\r\n /**\r\n * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数\r\n * @method on\r\n * @param { Node } element 需要绑定事件的节点对象\r\n * @param { String } type 绑定的事件类型\r\n * @param { Function } handler 事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.on(document.body,\"click\",function(e){\r\n * //e为事件对象,this为被点击元素对戏那个\r\n * });\r\n * ```\r\n */\r\n\r\n /**\r\n * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数\r\n * @method on\r\n * @param { Node } element 需要绑定事件的节点对象\r\n * @param { Array } type 绑定的事件类型数组\r\n * @param { Function } handler 事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.on(document.body,[\"click\",\"mousedown\"],function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n on:function (element, type, handler) {\r\n\r\n var types = utils.isArray(type) ? type : utils.trim(type).split(/\\s+/),\r\n k = types.length;\r\n if (k) while (k--) {\r\n type = types[k];\r\n if (element.addEventListener) {\r\n element.addEventListener(type, handler, false);\r\n } else {\r\n if (!handler._d) {\r\n handler._d = {\r\n els : []\r\n };\r\n }\r\n var key = type + handler.toString(),index = utils.indexOf(handler._d.els,element);\r\n if (!handler._d[key] || index == -1) {\r\n if(index == -1){\r\n handler._d.els.push(element);\r\n }\r\n if(!handler._d[key]){\r\n handler._d[key] = function (evt) {\r\n return handler.call(evt.srcElement, evt || window.event);\r\n };\r\n }\r\n\r\n\r\n element.attachEvent('on' + type, handler._d[key]);\r\n }\r\n }\r\n }\r\n element = null;\r\n },\r\n /**\r\n * 解除DOM事件绑定\r\n * @method un\r\n * @param { Node } element 需要解除事件绑定的节点对象\r\n * @param { String } type 需要接触绑定的事件类型\r\n * @param { Function } handler 对应的事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.un(document.body,\"click\",function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n\r\n /**\r\n * 解除DOM事件绑定\r\n * @method un\r\n * @param { Node } element 需要解除事件绑定的节点对象\r\n * @param { Array } type 需要接触绑定的事件类型数组\r\n * @param { Function } handler 对应的事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.un(document.body, [\"click\",\"mousedown\"],function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n un:function (element, type, handler) {\r\n var types = utils.isArray(type) ? type : utils.trim(type).split(/\\s+/),\r\n k = types.length;\r\n if (k) while (k--) {\r\n type = types[k];\r\n if (element.removeEventListener) {\r\n element.removeEventListener(type, handler, false);\r\n } else {\r\n var key = type + handler.toString();\r\n try{\r\n element.detachEvent('on' + type, handler._d ? handler._d[key] : handler);\r\n }catch(e){}\r\n if (handler._d && handler._d[key]) {\r\n var index = utils.indexOf(handler._d.els,element);\r\n if(index!=-1){\r\n handler._d.els.splice(index,1);\r\n }\r\n handler._d.els.length == 0 && delete handler._d[key];\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值\r\n * @method isSameElement\r\n * @param { Node } nodeA 需要比较的节点\r\n * @param { Node } nodeB 需要比较的节点\r\n * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值\r\n * @example\r\n * ```html\r\n * <span style=\"font-size:12px\">ssss</span>\r\n * <span style=\"font-size:12px\">bbbbb</span>\r\n * <span style=\"font-size:13px\">ssss</span>\r\n * <span style=\"font-size:14px\">bbbbb</span>\r\n *\r\n * <script>\r\n *\r\n * var nodes = document.getElementsByTagName( \"span\" );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isSameElement( nodes[0], nodes[1] ) );\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.isSameElement( nodes[2], nodes[3] ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n isSameElement:function (nodeA, nodeB) {\r\n if (nodeA.tagName != nodeB.tagName) {\r\n return false;\r\n }\r\n var thisAttrs = nodeA.attributes,\r\n otherAttrs = nodeB.attributes;\r\n if (!ie && thisAttrs.length != otherAttrs.length) {\r\n return false;\r\n }\r\n var attrA, attrB, al = 0, bl = 0;\r\n for (var i = 0; attrA = thisAttrs[i++];) {\r\n if (attrA.nodeName == 'style') {\r\n if (attrA.specified) {\r\n al++;\r\n }\r\n if (domUtils.isSameStyle(nodeA, nodeB)) {\r\n continue;\r\n } else {\r\n return false;\r\n }\r\n }\r\n if (ie) {\r\n if (attrA.specified) {\r\n al++;\r\n attrB = otherAttrs.getNamedItem(attrA.nodeName);\r\n } else {\r\n continue;\r\n }\r\n } else {\r\n attrB = nodeB.attributes[attrA.nodeName];\r\n }\r\n if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) {\r\n return false;\r\n }\r\n }\r\n // 有可能attrB的属性包含了attrA的属性之外还有自己的属性\r\n if (ie) {\r\n for (i = 0; attrB = otherAttrs[i++];) {\r\n if (attrB.specified) {\r\n bl++;\r\n }\r\n }\r\n if (al != bl) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * 判断节点nodeA与节点nodeB的元素的style属性是否一致\r\n * @method isSameStyle\r\n * @param { Node } nodeA 需要比较的节点\r\n * @param { Node } nodeB 需要比较的节点\r\n * @return { Boolean } 两个节点是否具有相同的style属性值\r\n * @example\r\n * ```html\r\n * <span style=\"font-size:12px\">ssss</span>\r\n * <span style=\"font-size:12px\">bbbbb</span>\r\n * <span style=\"font-size:13px\">ssss</span>\r\n * <span style=\"font-size:14px\">bbbbb</span>\r\n *\r\n * <script>\r\n *\r\n * var nodes = document.getElementsByTagName( \"span\" );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isSameStyle( nodes[0], nodes[1] ) );\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.isSameStyle( nodes[2], nodes[3] ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n isSameStyle:function (nodeA, nodeB) {\r\n var styleA = nodeA.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':'),\r\n styleB = nodeB.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':');\r\n if (browser.opera) {\r\n styleA = nodeA.style;\r\n styleB = nodeB.style;\r\n if (styleA.length != styleB.length)\r\n return false;\r\n for (var p in styleA) {\r\n if (/^(\\d+|csstext)$/i.test(p)) {\r\n continue;\r\n }\r\n if (styleA[p] != styleB[p]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n if (!styleA || !styleB) {\r\n return styleA == styleB;\r\n }\r\n styleA = styleA.split(';');\r\n styleB = styleB.split(';');\r\n if (styleA.length != styleB.length) {\r\n return false;\r\n }\r\n for (var i = 0, ci; ci = styleA[i++];) {\r\n if (utils.indexOf(styleB, ci) == -1) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n /**\r\n * 检查节点node是否为block元素\r\n * @method isBlockElm\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 是否是block元素节点\r\n * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true;\r\n * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。\r\n * @example\r\n * ```html\r\n * <span id=\"test1\" style=\"display: block\"></span>\r\n * <span id=\"test2\"></span>\r\n * <div id=\"test3\" style=\"display: inline\"></div>\r\n *\r\n * <script>\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isBlockElm( document.getElementById(\"test1\") ) );\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.isBlockElm( document.getElementById(\"test2\") ) );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isBlockElm( document.getElementById(\"test3\") ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n isBlockElm:function (node) {\r\n return node.nodeType == 1 && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, 'display')]) && !dtd.$nonChild[node.tagName];\r\n },\r\n /**\r\n * 检测node节点是否为body节点\r\n * @method isBody\r\n * @param { Element } node 需要检测的dom元素\r\n * @return { Boolean } 给定的元素是否是body元素\r\n * @example\r\n * ```javascript\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isBody( document.body ) );\r\n * ```\r\n */\r\n isBody:function (node) {\r\n return node && node.nodeType == 1 && node.tagName.toLowerCase() == 'body';\r\n },\r\n /**\r\n * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点,\r\n * 拆分形成的两个节点之间是node节点\r\n * @method breakParent\r\n * @param { Node } node 作为分界的节点对象\r\n * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。\r\n * @return { Node } 给定的node分界节点\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"span\"),\r\n * wrapNode = document.createElement( \"div\" ),\r\n * parent = document.createElement(\"p\");\r\n *\r\n * parent.appendChild( node );\r\n * wrapNode.appendChild( parent );\r\n *\r\n * //拆分前\r\n * //output: <p><span></span></p>\r\n * console.log( wrapNode.innerHTML );\r\n *\r\n *\r\n * UE.dom.domUtils.breakParent( node, parent );\r\n * //拆分后\r\n * //output: <p></p><span></span><p></p>\r\n * console.log( wrapNode.innerHTML );\r\n *\r\n * ```\r\n */\r\n breakParent:function (node, parent) {\r\n var tmpNode,\r\n parentClone = node,\r\n clone = node,\r\n leftNodes,\r\n rightNodes;\r\n do {\r\n parentClone = parentClone.parentNode;\r\n if (leftNodes) {\r\n tmpNode = parentClone.cloneNode(false);\r\n tmpNode.appendChild(leftNodes);\r\n leftNodes = tmpNode;\r\n tmpNode = parentClone.cloneNode(false);\r\n tmpNode.appendChild(rightNodes);\r\n rightNodes = tmpNode;\r\n } else {\r\n leftNodes = parentClone.cloneNode(false);\r\n rightNodes = leftNodes.cloneNode(false);\r\n }\r\n while (tmpNode = clone.previousSibling) {\r\n leftNodes.insertBefore(tmpNode, leftNodes.firstChild);\r\n }\r\n while (tmpNode = clone.nextSibling) {\r\n rightNodes.appendChild(tmpNode);\r\n }\r\n clone = parentClone;\r\n } while (parent !== parentClone);\r\n tmpNode = parent.parentNode;\r\n tmpNode.insertBefore(leftNodes, parent);\r\n tmpNode.insertBefore(rightNodes, parent);\r\n tmpNode.insertBefore(node, rightNodes);\r\n domUtils.remove(parent);\r\n return node;\r\n },\r\n /**\r\n * 检查节点node是否是空inline节点\r\n * @method isEmptyInlineElement\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。\r\n * @example\r\n * ```html\r\n * <b><i></i></b> => 1\r\n * <b><i></i><u></u></b> => 1\r\n * <b></b> => 1\r\n * <b>xx<i></i></b> => 0\r\n * ```\r\n */\r\n isEmptyInlineElement:function (node) {\r\n if (node.nodeType != 1 || !dtd.$removeEmpty[ node.tagName ]) {\r\n return 0;\r\n }\r\n node = node.firstChild;\r\n while (node) {\r\n //如果是创建的bookmark就跳过\r\n if (domUtils.isBookmarkNode(node)) {\r\n return 0;\r\n }\r\n if (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node) ||\r\n node.nodeType == 3 && !domUtils.isWhitespace(node)\r\n ) {\r\n return 0;\r\n }\r\n node = node.nextSibling;\r\n }\r\n return 1;\r\n\r\n },\r\n\r\n /**\r\n * 删除node节点下首尾两端的空白文本子节点\r\n * @method trimWhiteTextNode\r\n * @param { Element } node 需要执行删除操作的元素对象\r\n * @example\r\n * ```javascript\r\n * var node = document.createElement(\"div\");\r\n *\r\n * node.appendChild( document.createTextNode( \"\" ) );\r\n *\r\n * node.appendChild( document.createElement(\"div\") );\r\n *\r\n * node.appendChild( document.createTextNode( \"\" ) );\r\n *\r\n * //3\r\n * console.log( node.childNodes.length );\r\n *\r\n * UE.dom.domUtils.trimWhiteTextNode( node );\r\n *\r\n * //1\r\n * console.log( node.childNodes.length );\r\n * ```\r\n */\r\n trimWhiteTextNode:function (node) {\r\n function remove(dir) {\r\n var child;\r\n while ((child = node[dir]) && child.nodeType == 3 && domUtils.isWhitespace(child)) {\r\n node.removeChild(child);\r\n }\r\n }\r\n remove('firstChild');\r\n remove('lastChild');\r\n },\r\n\r\n /**\r\n * 合并node节点下相同的子节点\r\n * @name mergeChild\r\n * @desc\r\n * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签\r\n * @example\r\n * <p><span style=\"font-size:12px;\">xx<span style=\"font-size:12px;\">aa</span>xx</span></p>\r\n * ==> UE.dom.domUtils.mergeChild(node,'span')\r\n * <p><span style=\"font-size:12px;\">xxaaxx</span></p>\r\n */\r\n mergeChild:function (node, tagName, attrs) {\r\n var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase());\r\n for (var i = 0, ci; ci = list[i++];) {\r\n if (!ci.parentNode || domUtils.isBookmarkNode(ci)) {\r\n continue;\r\n }\r\n //span单独处理\r\n if (ci.tagName.toLowerCase() == 'span') {\r\n if (node === ci.parentNode) {\r\n domUtils.trimWhiteTextNode(node);\r\n if (node.childNodes.length == 1) {\r\n node.style.cssText = ci.style.cssText + \";\" + node.style.cssText;\r\n domUtils.remove(ci, true);\r\n continue;\r\n }\r\n }\r\n ci.style.cssText = node.style.cssText + ';' + ci.style.cssText;\r\n if (attrs) {\r\n var style = attrs.style;\r\n if (style) {\r\n style = style.split(';');\r\n for (var j = 0, s; s = style[j++];) {\r\n ci.style[utils.cssStyleToDomStyle(s.split(':')[0])] = s.split(':')[1];\r\n }\r\n }\r\n }\r\n if (domUtils.isSameStyle(ci, node)) {\r\n domUtils.remove(ci, true);\r\n }\r\n continue;\r\n }\r\n if (domUtils.isSameElement(node, ci)) {\r\n domUtils.remove(ci, true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 原生方法getElementsByTagName的封装\r\n * @method getElementsByTagName\r\n * @param { Node } node 目标节点对象\r\n * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割\r\n * @return { Array } 符合条件的节点集合\r\n */\r\n getElementsByTagName:function (node, name,filter) {\r\n if(filter && utils.isString(filter)){\r\n var className = filter;\r\n filter = function(node){return domUtils.hasClass(node,className)}\r\n }\r\n name = utils.trim(name).replace(/[ ]{2,}/g,' ').split(' ');\r\n var arr = [];\r\n for(var n = 0,ni;ni=name[n++];){\r\n var list = node.getElementsByTagName(ni);\r\n for (var i = 0, ci; ci = list[i++];) {\r\n if(!filter || filter(ci))\r\n arr.push(ci);\r\n }\r\n }\r\n\r\n return arr;\r\n },\r\n /**\r\n * 将节点node提取到父节点上\r\n * @method mergeToParent\r\n * @param { Element } node 需要提取的元素对象\r\n * @example\r\n * ```html\r\n * <div id=\"parent\">\r\n * <div id=\"sub\">\r\n * <span id=\"child\"></span>\r\n * </div>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * var child = document.getElementById( \"child\" );\r\n *\r\n * //output: sub\r\n * console.log( child.parentNode.id );\r\n *\r\n * UE.dom.domUtils.mergeToParent( child );\r\n *\r\n * //output: parent\r\n * console.log( child.parentNode.id );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n mergeToParent:function (node) {\r\n var parent = node.parentNode;\r\n while (parent && dtd.$removeEmpty[parent.tagName]) {\r\n if (parent.tagName == node.tagName || parent.tagName == 'A') {//针对a标签单独处理\r\n domUtils.trimWhiteTextNode(parent);\r\n //span需要特殊处理 不处理这样的情况 <span stlye=\"color:#fff\">xxx<span style=\"color:#ccc\">xxx</span>xxx</span>\r\n if (parent.tagName == 'SPAN' && !domUtils.isSameStyle(parent, node)\r\n || (parent.tagName == 'A' && node.tagName == 'SPAN')) {\r\n if (parent.childNodes.length > 1 || parent !== node.parentNode) {\r\n node.style.cssText = parent.style.cssText + \";\" + node.style.cssText;\r\n parent = parent.parentNode;\r\n continue;\r\n } else {\r\n parent.style.cssText += \";\" + node.style.cssText;\r\n //trace:952 a标签要保持下划线\r\n if (parent.tagName == 'A') {\r\n parent.style.textDecoration = 'underline';\r\n }\r\n }\r\n }\r\n if (parent.tagName != 'A') {\r\n parent === node.parentNode && domUtils.remove(node, true);\r\n break;\r\n }\r\n }\r\n parent = parent.parentNode;\r\n }\r\n },\r\n /**\r\n * 合并节点node的左右兄弟节点\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @example\r\n * ```html\r\n * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b>\r\n *\r\n * <script>\r\n * var demoNode = document.getElementById(\"test\");\r\n * UE.dom.domUtils.mergeSibling( demoNode );\r\n * //output: xxxxoooxxxx\r\n * console.log( demoNode.innerHTML );\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @param { Boolean } ignorePre 是否忽略合并左节点\r\n * @example\r\n * ```html\r\n * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b>\r\n *\r\n * <script>\r\n * var demoNode = document.getElementById(\"test\");\r\n * UE.dom.domUtils.mergeSibling( demoNode, true );\r\n * //output: oooxxxx\r\n * console.log( demoNode.innerHTML );\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @param { Boolean } ignorePre 是否忽略合并左节点\r\n * @param { Boolean } ignoreNext 是否忽略合并右节点\r\n * @remind 如果同时忽略左右节点, 则该操作什么也不会做\r\n * @example\r\n * ```html\r\n * <b>xxxx</b><b id=\"test\">ooo</b><b>xxxx</b>\r\n *\r\n * <script>\r\n * var demoNode = document.getElementById(\"test\");\r\n * UE.dom.domUtils.mergeSibling( demoNode, false, true );\r\n * //output: xxxxooo\r\n * console.log( demoNode.innerHTML );\r\n * </script>\r\n * ```\r\n */\r\n mergeSibling:function (node, ignorePre, ignoreNext) {\r\n function merge(rtl, start, node) {\r\n var next;\r\n if ((next = node[rtl]) && !domUtils.isBookmarkNode(next) && next.nodeType == 1 && domUtils.isSameElement(node, next)) {\r\n while (next.firstChild) {\r\n if (start == 'firstChild') {\r\n node.insertBefore(next.lastChild, node.firstChild);\r\n } else {\r\n node.appendChild(next.firstChild);\r\n }\r\n }\r\n domUtils.remove(next);\r\n }\r\n }\r\n !ignorePre && merge('previousSibling', 'firstChild', node);\r\n !ignoreNext && merge('nextSibling', 'lastChild', node);\r\n },\r\n\r\n /**\r\n * 设置节点node及其子节点不会被选中\r\n * @method unSelectable\r\n * @param { Element } node 需要执行操作的dom元素\r\n * @remind 执行该操作后的节点, 将不能被鼠标选中\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.unSelectable( document.body );\r\n * ```\r\n */\r\n unSelectable:ie && browser.ie9below || browser.opera ? function (node) {\r\n //for ie9\r\n node.onselectstart = function () {\r\n return false;\r\n };\r\n node.onclick = node.onkeyup = node.onkeydown = function () {\r\n return false;\r\n };\r\n node.unselectable = 'on';\r\n node.setAttribute(\"unselectable\", \"on\");\r\n for (var i = 0, ci; ci = node.all[i++];) {\r\n switch (ci.tagName.toLowerCase()) {\r\n case 'iframe' :\r\n case 'textarea' :\r\n case 'input' :\r\n case 'select' :\r\n break;\r\n default :\r\n ci.unselectable = 'on';\r\n node.setAttribute(\"unselectable\", \"on\");\r\n }\r\n }\r\n } : function (node) {\r\n node.style.MozUserSelect =\r\n node.style.webkitUserSelect =\r\n node.style.msUserSelect =\r\n node.style.KhtmlUserSelect = 'none';\r\n },\r\n /**\r\n * 删除节点node上的指定属性名称的属性\r\n * @method removeAttributes\r\n * @param { Node } node 需要删除属性的节点对象\r\n * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性\r\n * @example\r\n * ```html\r\n * <div id=\"wrap\">\r\n * <span style=\"font-size:14px;\" id=\"test\" name=\"followMe\">xxxxx</span>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), \"id name\" );\r\n *\r\n * //output: <span style=\"font-size:14px;\">xxxxx</span>\r\n * console.log( document.getElementById(\"wrap\").innerHTML );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 删除节点node上的指定属性名称的属性\r\n * @method removeAttributes\r\n * @param { Node } node 需要删除属性的节点对象\r\n * @param { Array } attrNames 需要删除的属性名数组\r\n * @example\r\n * ```html\r\n * <div id=\"wrap\">\r\n * <span style=\"font-size:14px;\" id=\"test\" name=\"followMe\">xxxxx</span>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), [\"id\", \"name\"] );\r\n *\r\n * //output: <span style=\"font-size:14px;\">xxxxx</span>\r\n * console.log( document.getElementById(\"wrap\").innerHTML );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n removeAttributes:function (node, attrNames) {\r\n attrNames = utils.isArray(attrNames) ? attrNames : utils.trim(attrNames).replace(/[ ]{2,}/g,' ').split(' ');\r\n for (var i = 0, ci; ci = attrNames[i++];) {\r\n ci = attrFix[ci] || ci;\r\n switch (ci) {\r\n case 'className':\r\n node[ci] = '';\r\n break;\r\n case 'style':\r\n node.style.cssText = '';\r\n var val = node.getAttributeNode('style');\r\n !browser.ie && val && node.removeAttributeNode(val);\r\n }\r\n node.removeAttribute(ci);\r\n }\r\n },\r\n /**\r\n * 在doc下创建一个标签名为tag,属性为attrs的元素\r\n * @method createElement\r\n * @param { DomDocument } doc 新创建的元素属于该document节点创建\r\n * @param { String } tagName 需要创建的元素的标签名\r\n * @param { Object } attrs 新创建的元素的属性key-value集合\r\n * @return { Element } 新创建的元素对象\r\n * @example\r\n * ```javascript\r\n * var ele = UE.dom.domUtils.createElement( document, 'div', {\r\n * id: 'test'\r\n * } );\r\n *\r\n * //output: DIV\r\n * console.log( ele.tagName );\r\n *\r\n * //output: test\r\n * console.log( ele.id );\r\n *\r\n * ```\r\n */\r\n createElement:function (doc, tag, attrs) {\r\n return domUtils.setAttributes(doc.createElement(tag), attrs)\r\n },\r\n /**\r\n * 为节点node添加属性attrs,attrs为属性键值对\r\n * @method setAttributes\r\n * @param { Element } node 需要设置属性的元素对象\r\n * @param { Object } attrs 需要设置的属性名-值对\r\n * @return { Element } 设置属性的元素对象\r\n * @example\r\n * ```html\r\n * <span id=\"test\"></span>\r\n *\r\n * <script>\r\n *\r\n * var testNode = UE.dom.domUtils.setAttributes( document.getElementById( \"test\" ), {\r\n * id: 'demo'\r\n * } );\r\n *\r\n * //output: demo\r\n * console.log( testNode.id );\r\n *\r\n * </script>\r\n *\r\n */\r\n setAttributes:function (node, attrs) {\r\n for (var attr in attrs) {\r\n if(attrs.hasOwnProperty(attr)){\r\n var value = attrs[attr];\r\n switch (attr) {\r\n case 'class':\r\n //ie下要这样赋值,setAttribute不起作用\r\n node.className = value;\r\n break;\r\n case 'style' :\r\n node.style.cssText = node.style.cssText + \";\" + value;\r\n break;\r\n case 'innerHTML':\r\n node[attr] = value;\r\n break;\r\n case 'value':\r\n node.value = value;\r\n break;\r\n default:\r\n node.setAttribute(attrFix[attr] || attr, value);\r\n }\r\n }\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 获取元素element经过计算后的样式值\r\n * @method getComputedStyle\r\n * @param { Element } element 需要获取样式的元素对象\r\n * @param { String } styleName 需要获取的样式名\r\n * @return { String } 获取到的样式值\r\n * @example\r\n * ```html\r\n * <style type=\"text/css\">\r\n * #test {\r\n * font-size: 15px;\r\n * }\r\n * </style>\r\n *\r\n * <span id=\"test\"></span>\r\n *\r\n * <script>\r\n * //output: 15px\r\n * console.log( UE.dom.domUtils.getComputedStyle( document.getElementById( \"test\" ), 'font-size' ) );\r\n * </script>\r\n * ```\r\n */\r\n getComputedStyle:function (element, styleName) {\r\n //一下的属性单独处理\r\n var pros = 'width height top left';\r\n\r\n if(pros.indexOf(styleName) > -1){\r\n return element['offset' + styleName.replace(/^\\w/,function(s){return s.toUpperCase()})] + 'px';\r\n }\r\n //忽略文本节点\r\n if (element.nodeType == 3) {\r\n element = element.parentNode;\r\n }\r\n //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改.\r\n if (browser.ie && browser.version < 9 && styleName == 'font-size' && !element.style.fontSize &&\r\n !dtd.$empty[element.tagName] && !dtd.$nonChild[element.tagName]) {\r\n var span = element.ownerDocument.createElement('span');\r\n span.style.cssText = 'padding:0;border:0;font-family:simsun;';\r\n span.innerHTML = '.';\r\n element.appendChild(span);\r\n var result = span.offsetHeight;\r\n element.removeChild(span);\r\n span = null;\r\n return result + 'px';\r\n }\r\n try {\r\n var value = domUtils.getStyle(element, styleName) ||\r\n (window.getComputedStyle ? domUtils.getWindow(element).getComputedStyle(element, '').getPropertyValue(styleName) :\r\n ( element.currentStyle || element.style )[utils.cssStyleToDomStyle(styleName)]);\r\n\r\n } catch (e) {\r\n return \"\";\r\n }\r\n return utils.transUnitToPx(utils.fixColor(styleName, value));\r\n },\r\n /**\r\n * 删除元素element指定的className\r\n * @method removeClasses\r\n * @param { Element } ele 需要删除class的元素节点\r\n * @param { String } classNames 需要删除的className, 多个className之间以空格分开\r\n * @example\r\n * ```html\r\n * <span id=\"test\" class=\"test1 test2 test3\">xxx</span>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById( \"test\" );\r\n * UE.dom.domUtils.removeClasses( testNode, \"test1 test2\" );\r\n *\r\n * //output: test3\r\n * console.log( testNode.className );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 删除元素element指定的className\r\n * @method removeClasses\r\n * @param { Element } ele 需要删除class的元素节点\r\n * @param { Array } classNames 需要删除的className数组\r\n * @example\r\n * ```html\r\n * <span id=\"test\" class=\"test1 test2 test3\">xxx</span>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById( \"test\" );\r\n * UE.dom.domUtils.removeClasses( testNode, [\"test1\", \"test2\"] );\r\n *\r\n * //output: test3\r\n * console.log( testNode.className );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n removeClasses:function (elm, classNames) {\r\n classNames = utils.isArray(classNames) ? classNames :\r\n utils.trim(classNames).replace(/[ ]{2,}/g,' ').split(' ');\r\n for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){\r\n cls = cls.replace(new RegExp('\\\\b' + ci + '\\\\b'),'')\r\n }\r\n cls = utils.trim(cls).replace(/[ ]{2,}/g,' ');\r\n if(cls){\r\n elm.className = cls;\r\n }else{\r\n domUtils.removeAttributes(elm,['class']);\r\n }\r\n },\r\n /**\r\n * 给元素element添加className\r\n * @method addClass\r\n * @param { Node } ele 需要增加className的元素\r\n * @param { String } classNames 需要添加的className, 多个className之间以空格分割\r\n * @remind 相同的类名不会被重复添加\r\n * @example\r\n * ```html\r\n * <span id=\"test\" class=\"cls1 cls2\"></span>\r\n *\r\n * <script>\r\n * var testNode = document.getElementById(\"test\");\r\n *\r\n * UE.dom.domUtils.addClass( testNode, \"cls2 cls3 cls4\" );\r\n *\r\n * //output: cl1 cls2 cls3 cls4\r\n * console.log( testNode.className );\r\n *\r\n * <script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 给元素element添加className\r\n * @method addClass\r\n * @param { Node } ele 需要增加className的元素\r\n * @param { Array } classNames 需要添加的className的数组\r\n * @remind 相同的类名不会被重复添加\r\n * @example\r\n * ```html\r\n * <span id=\"test\" class=\"cls1 cls2\"></span>\r\n *\r\n * <script>\r\n * var testNode = document.getElementById(\"test\");\r\n *\r\n * UE.dom.domUtils.addClass( testNode, [\"cls2\", \"cls3\", \"cls4\"] );\r\n *\r\n * //output: cl1 cls2 cls3 cls4\r\n * console.log( testNode.className );\r\n *\r\n * <script>\r\n * ```\r\n */\r\n addClass:function (elm, classNames) {\r\n if(!elm)return;\r\n classNames = utils.trim(classNames).replace(/[ ]{2,}/g,' ').split(' ');\r\n for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){\r\n if(!new RegExp('\\\\b' + ci + '\\\\b').test(cls)){\r\n cls += ' ' + ci;\r\n }\r\n }\r\n elm.className = utils.trim(cls);\r\n },\r\n /**\r\n * 判断元素element是否包含给定的样式类名className\r\n * @method hasClass\r\n * @param { Node } ele 需要检测的元素\r\n * @param { String } classNames 需要检测的className, 多个className之间用空格分割\r\n * @return { Boolean } 元素是否包含所有给定的className\r\n * @example\r\n * ```html\r\n * <span id=\"test1\" class=\"cls1 cls2\"></span>\r\n *\r\n * <script>\r\n * var test1 = document.getElementById(\"test1\");\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1 cls3\" ) );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1\" ) );\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 判断元素element是否包含给定的样式类名className\r\n * @method hasClass\r\n * @param { Node } ele 需要检测的元素\r\n * @param { Array } classNames 需要检测的className数组\r\n * @return { Boolean } 元素是否包含所有给定的className\r\n * @example\r\n * ```html\r\n * <span id=\"test1\" class=\"cls1 cls2\"></span>\r\n *\r\n * <script>\r\n * var test1 = document.getElementById(\"test1\");\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\", \"cls3\" ] ) );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\" ]) );\r\n * </script>\r\n * ```\r\n */\r\n hasClass:function (element, className) {\r\n if(utils.isRegExp(className)){\r\n return className.test(element.className)\r\n }\r\n className = utils.trim(className).replace(/[ ]{2,}/g,' ').split(' ');\r\n for(var i = 0,ci,cls = element.className;ci=className[i++];){\r\n if(!new RegExp('\\\\b' + ci + '\\\\b','i').test(cls)){\r\n return false;\r\n }\r\n }\r\n return i - 1 == className.length;\r\n },\r\n\r\n /**\r\n * 阻止事件默认行为\r\n * @method preventDefault\r\n * @param { Event } evt 需要阻止默认行为的事件对象\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.preventDefault( evt );\r\n * ```\r\n */\r\n preventDefault:function (evt) {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n },\r\n /**\r\n * 删除元素element指定的样式\r\n * @method removeStyle\r\n * @param { Element } element 需要删除样式的元素\r\n * @param { String } styleName 需要删除的样式名\r\n * @example\r\n * ```html\r\n * <span id=\"test\" style=\"color: red; background: blue;\"></span>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById(\"test\");\r\n *\r\n * UE.dom.domUtils.removeStyle( testNode, 'color' );\r\n *\r\n * //output: background: blue;\r\n * console.log( testNode.style.cssText );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n removeStyle:function (element, name) {\r\n if(browser.ie ){\r\n //针对color先单独处理一下\r\n if(name == 'color'){\r\n name = '(^|;)' + name;\r\n }\r\n element.style.cssText = element.style.cssText.replace(new RegExp(name + '[^:]*:[^;]+;?','ig'),'')\r\n }else{\r\n if (element.style.removeProperty) {\r\n element.style.removeProperty (name);\r\n }else {\r\n element.style.removeAttribute (utils.cssStyleToDomStyle(name));\r\n }\r\n }\r\n\r\n\r\n if (!element.style.cssText) {\r\n domUtils.removeAttributes(element, ['style']);\r\n }\r\n },\r\n /**\r\n * 获取元素element的style属性的指定值\r\n * @method getStyle\r\n * @param { Element } element 需要获取属性值的元素\r\n * @param { String } styleName 需要获取的style的名称\r\n * @warning 该方法仅获取元素style属性中所标明的值\r\n * @return { String } 该元素包含指定的style属性值\r\n * @example\r\n * ```html\r\n * <div id=\"test\" style=\"color: red;\"></div>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById( \"test\" );\r\n *\r\n * //output: red\r\n * console.log( UE.dom.domUtils.getStyle( testNode, \"color\" ) );\r\n *\r\n * //output: \"\"\r\n * console.log( UE.dom.domUtils.getStyle( testNode, \"background\" ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n getStyle:function (element, name) {\r\n var value = element.style[ utils.cssStyleToDomStyle(name) ];\r\n return utils.fixColor(name, value);\r\n },\r\n /**\r\n * 为元素element设置样式属性值\r\n * @method setStyle\r\n * @param { Element } element 需要设置样式的元素\r\n * @param { String } styleName 样式名\r\n * @param { String } styleValue 样式值\r\n * @example\r\n * ```html\r\n * <div id=\"test\"></div>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById( \"test\" );\r\n *\r\n * //output: \"\"\r\n * console.log( testNode.style.color );\r\n *\r\n * UE.dom.domUtils.setStyle( testNode, 'color', 'red' );\r\n * //output: \"red\"\r\n * console.log( testNode.style.color );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setStyle:function (element, name, value) {\r\n element.style[utils.cssStyleToDomStyle(name)] = value;\r\n if(!utils.trim(element.style.cssText)){\r\n this.removeAttributes(element,'style')\r\n }\r\n },\r\n /**\r\n * 为元素element设置多个样式属性值\r\n * @method setStyles\r\n * @param { Element } element 需要设置样式的元素\r\n * @param { Object } styles 样式名值对\r\n * @example\r\n * ```html\r\n * <div id=\"test\"></div>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById( \"test\" );\r\n *\r\n * //output: \"\"\r\n * console.log( testNode.style.color );\r\n *\r\n * UE.dom.domUtils.setStyles( testNode, {\r\n * 'color': 'red'\r\n * } );\r\n * //output: \"red\"\r\n * console.log( testNode.style.color );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setStyles:function (element, styles) {\r\n for (var name in styles) {\r\n if (styles.hasOwnProperty(name)) {\r\n domUtils.setStyle(element, name, styles[name]);\r\n }\r\n }\r\n },\r\n /**\r\n * 删除_moz_dirty属性\r\n * @private\r\n * @method removeDirtyAttr\r\n */\r\n removeDirtyAttr:function (node) {\r\n for (var i = 0, ci, nodes = node.getElementsByTagName('*'); ci = nodes[i++];) {\r\n ci.removeAttribute('_moz_dirty');\r\n }\r\n node.removeAttribute('_moz_dirty');\r\n },\r\n /**\r\n * 获取子节点的数量\r\n * @method getChildCount\r\n * @param { Element } node 需要检测的元素\r\n * @return { Number } 给定的node元素的子节点数量\r\n * @example\r\n * ```html\r\n * <div id=\"test\">\r\n * <span></span>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * //output: 3\r\n * console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\") ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的过滤规则, 获取符合条件的子节点的数量\r\n * @method getChildCount\r\n * @param { Element } node 需要检测的元素\r\n * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false\r\n * @return { Number } 符合过滤条件的node元素的子节点数量\r\n * @example\r\n * ```html\r\n * <div id=\"test\">\r\n * <span></span>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * //output: 1\r\n * console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\"), function ( node ) {\r\n *\r\n * return node.nodeType === 1;\r\n *\r\n * } ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n getChildCount:function (node, fn) {\r\n var count = 0, first = node.firstChild;\r\n fn = fn || function () {\r\n return 1;\r\n };\r\n while (first) {\r\n if (fn(first)) {\r\n count++;\r\n }\r\n first = first.nextSibling;\r\n }\r\n return count;\r\n },\r\n\r\n /**\r\n * 判断给定节点是否为空节点\r\n * @method isEmptyNode\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 节点是否为空\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.isEmptyNode( document.body );\r\n * ```\r\n */\r\n isEmptyNode:function (node) {\r\n return !node.firstChild || domUtils.getChildCount(node, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isBookmarkNode(node) && !domUtils.isWhitespace(node)\r\n }) == 0\r\n },\r\n clearSelectedArr:function (nodes) {\r\n var node;\r\n while (node = nodes.pop()) {\r\n domUtils.removeAttributes(node, ['class']);\r\n }\r\n },\r\n /**\r\n * 将显示区域滚动到指定节点的位置\r\n * @method scrollToView\r\n * @param {Node} node 节点\r\n * @param {window} win window对象\r\n * @param {Number} offsetTop 距离上方的偏移量\r\n */\r\n scrollToView:function (node, win, offsetTop) {\r\n var getViewPaneSize = function () {\r\n var doc = win.document,\r\n mode = doc.compatMode == 'CSS1Compat';\r\n return {\r\n width:( mode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0,\r\n height:( mode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0\r\n };\r\n },\r\n getScrollPosition = function (win) {\r\n if ('pageXOffset' in win) {\r\n return {\r\n x:win.pageXOffset || 0,\r\n y:win.pageYOffset || 0\r\n };\r\n }\r\n else {\r\n var doc = win.document;\r\n return {\r\n x:doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,\r\n y:doc.documentElement.scrollTop || doc.body.scrollTop || 0\r\n };\r\n }\r\n };\r\n var winHeight = getViewPaneSize().height, offset = winHeight * -1 + offsetTop;\r\n offset += (node.offsetHeight || 0);\r\n var elementPosition = domUtils.getXY(node);\r\n offset += elementPosition.y;\r\n var currentScroll = getScrollPosition(win).y;\r\n // offset += 50;\r\n if (offset > currentScroll || offset < currentScroll - winHeight) {\r\n win.scrollTo(0, offset + (offset < 0 ? -20 : 20));\r\n }\r\n },\r\n /**\r\n * 判断给定节点是否为br\r\n * @method isBr\r\n * @param { Node } node 需要判断的节点对象\r\n * @return { Boolean } 给定的节点是否是br节点\r\n */\r\n isBr:function (node) {\r\n return node.nodeType == 1 && node.tagName == 'BR';\r\n },\r\n /**\r\n * 判断给定的节点是否是一个“填充”节点\r\n * @private\r\n * @method isFillChar\r\n * @param { Node } node 需要判断的节点\r\n * @param { Boolean } isInStart 是否从节点内容的开始位置匹配\r\n * @returns { Boolean } 节点是否是填充节点\r\n */\r\n isFillChar:function (node,isInStart) {\r\n if(node.nodeType != 3)\r\n return false;\r\n var text = node.nodeValue;\r\n if(isInStart){\r\n return new RegExp('^' + domUtils.fillChar).test(text)\r\n }\r\n return !text.replace(new RegExp(domUtils.fillChar,'g'), '').length\r\n },\r\n isStartInblock:function (range) {\r\n var tmpRange = range.cloneRange(),\r\n flag = 0,\r\n start = tmpRange.startContainer,\r\n tmp;\r\n if(start.nodeType == 1 && start.childNodes[tmpRange.startOffset]){\r\n start = start.childNodes[tmpRange.startOffset];\r\n var pre = start.previousSibling;\r\n while(pre && domUtils.isFillChar(pre)){\r\n start = pre;\r\n pre = pre.previousSibling;\r\n }\r\n }\r\n if(this.isFillChar(start,true) && tmpRange.startOffset == 1){\r\n tmpRange.setStartBefore(start);\r\n start = tmpRange.startContainer;\r\n }\r\n\r\n while (start && domUtils.isFillChar(start)) {\r\n tmp = start;\r\n start = start.previousSibling\r\n }\r\n if (tmp) {\r\n tmpRange.setStartBefore(tmp);\r\n start = tmpRange.startContainer;\r\n }\r\n if (start.nodeType == 1 && domUtils.isEmptyNode(start) && tmpRange.startOffset == 1) {\r\n tmpRange.setStart(start, 0).collapse(true);\r\n }\r\n while (!tmpRange.startOffset) {\r\n start = tmpRange.startContainer;\r\n if (domUtils.isBlockElm(start) || domUtils.isBody(start)) {\r\n flag = 1;\r\n break;\r\n }\r\n var pre = tmpRange.startContainer.previousSibling,\r\n tmpNode;\r\n if (!pre) {\r\n tmpRange.setStartBefore(tmpRange.startContainer);\r\n } else {\r\n while (pre && domUtils.isFillChar(pre)) {\r\n tmpNode = pre;\r\n pre = pre.previousSibling;\r\n }\r\n if (tmpNode) {\r\n tmpRange.setStartBefore(tmpNode);\r\n } else {\r\n tmpRange.setStartBefore(tmpRange.startContainer);\r\n }\r\n }\r\n }\r\n return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0;\r\n },\r\n\r\n /**\r\n * 判断给定的元素是否是一个空元素\r\n * @method isEmptyBlock\r\n * @param { Element } node 需要判断的元素\r\n * @return { Boolean } 是否是空元素\r\n * @example\r\n * ```html\r\n * <div id=\"test\"></div>\r\n *\r\n * <script>\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isEmptyBlock( document.getElementById(\"test\") ) );\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据指定的判断规则判断给定的元素是否是一个空元素\r\n * @method isEmptyBlock\r\n * @param { Element } node 需要判断的元素\r\n * @param { RegExp } reg 对内容执行判断的正则表达式对象\r\n * @return { Boolean } 是否是空元素\r\n */\r\n isEmptyBlock:function (node,reg) {\r\n // HaoChuan9421\r\n if(!node){\r\n return;\r\n }\r\n if(node.nodeType != 1)\r\n return 0;\r\n reg = reg || new RegExp('[ \\xa0\\t\\r\\n' + domUtils.fillChar + ']', 'g');\r\n\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var n in dtd.$isNotEmpty) {\r\n if (node.getElementsByTagName(n).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n },\r\n\r\n /**\r\n * 移动元素使得该元素的位置移动指定的偏移量的距离\r\n * @method setViewportOffset\r\n * @param { Element } element 需要设置偏移量的元素\r\n * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在\r\n * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移\r\n * offset.top的距离\r\n * @example\r\n * ```html\r\n * <div id=\"test\" style=\"top: 100px; left: 50px; position: absolute;\"></div>\r\n *\r\n * <script>\r\n *\r\n * var testNode = document.getElementById(\"test\");\r\n *\r\n * UE.dom.domUtils.setViewportOffset( testNode, {\r\n * left: 200,\r\n * top: 50\r\n * } );\r\n *\r\n * //output: top: 300px; left: 100px; position: absolute;\r\n * console.log( testNode.style.cssText );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setViewportOffset:function (element, offset) {\r\n var left = parseInt(element.style.left) | 0;\r\n var top = parseInt(element.style.top) | 0;\r\n var rect = element.getBoundingClientRect();\r\n var offsetLeft = offset.left - rect.left;\r\n var offsetTop = offset.top - rect.top;\r\n if (offsetLeft) {\r\n element.style.left = left + offsetLeft + 'px';\r\n }\r\n if (offsetTop) {\r\n element.style.top = top + offsetTop + 'px';\r\n }\r\n },\r\n\r\n /**\r\n * 用“填充字符”填充节点\r\n * @method fillNode\r\n * @private\r\n * @param { DomDocument } doc 填充的节点所在的docment对象\r\n * @param { Node } node 需要填充的节点对象\r\n * @example\r\n * ```html\r\n * <div id=\"test\"></div>\r\n *\r\n * <script>\r\n * var testNode = document.getElementById(\"test\");\r\n *\r\n * //output: 0\r\n * console.log( testNode.childNodes.length );\r\n *\r\n * UE.dom.domUtils.fillNode( document, testNode );\r\n *\r\n * //output: 1\r\n * console.log( testNode.childNodes.length );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n fillNode:function (doc, node) {\r\n var tmpNode = browser.ie ? doc.createTextNode(domUtils.fillChar) : doc.createElement('br');\r\n node.innerHTML = '';\r\n node.appendChild(tmpNode);\r\n },\r\n\r\n /**\r\n * 把节点src的所有子节点追加到另一个节点tag上去\r\n * @method moveChild\r\n * @param { Node } src 源节点, 该节点下的所有子节点将被移除\r\n * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下\r\n * @example\r\n * ```html\r\n * <div id=\"test1\">\r\n * <span></span>\r\n * </div>\r\n * <div id=\"test2\">\r\n * <div></div>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * var test1 = document.getElementById(\"test1\"),\r\n * test2 = document.getElementById(\"test2\");\r\n *\r\n * UE.dom.domUtils.moveChild( test1, test2 );\r\n *\r\n * //output: \"\"(空字符串)\r\n * console.log( test1.innerHTML );\r\n *\r\n * //output: \"<div></div><span></span>\"\r\n * console.log( test2.innerHTML );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部”\r\n * @method moveChild\r\n * @param { Node } src 源节点, 该节点下的所有子节点将被移除\r\n * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下\r\n * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾\r\n * @example\r\n * ```html\r\n * <div id=\"test1\">\r\n * <span></span>\r\n * </div>\r\n * <div id=\"test2\">\r\n * <div></div>\r\n * </div>\r\n *\r\n * <script>\r\n *\r\n * var test1 = document.getElementById(\"test1\"),\r\n * test2 = document.getElementById(\"test2\");\r\n *\r\n * UE.dom.domUtils.moveChild( test1, test2, true );\r\n *\r\n * //output: \"\"(空字符串)\r\n * console.log( test1.innerHTML );\r\n *\r\n * //output: \"<span></span><div></div>\"\r\n * console.log( test2.innerHTML );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n moveChild:function (src, tag, dir) {\r\n while (src.firstChild) {\r\n if (dir && tag.firstChild) {\r\n tag.insertBefore(src.lastChild, tag.firstChild);\r\n } else {\r\n tag.appendChild(src.firstChild);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 判断节点的标签上是否不存在任何属性\r\n * @method hasNoAttributes\r\n * @private\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 节点是否不包含任何属性\r\n * @example\r\n * ```html\r\n * <div id=\"test\"><span>xxxx</span></div>\r\n *\r\n * <script>\r\n *\r\n * //output: false\r\n * console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\") ) );\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\").firstChild ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n hasNoAttributes:function (node) {\r\n return browser.ie ? /^<\\w+\\s*?>/.test(node.outerHTML) : node.attributes.length == 0;\r\n },\r\n\r\n /**\r\n * 检测节点是否是UEditor所使用的辅助节点\r\n * @method isCustomeNode\r\n * @private\r\n * @param { Node } node 需要检测的节点\r\n * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。\r\n * @return { Boolean } 给定的节点是否是一个辅助节点\r\n */\r\n isCustomeNode:function (node) {\r\n return node.nodeType == 1 && node.getAttribute('_ue_custom_node_');\r\n },\r\n\r\n /**\r\n * 检测节点的标签是否是给定的标签\r\n * @method isTagNode\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { String } tagName 标签\r\n * @return { Boolean } 节点的标签是否是给定的标签\r\n * @example\r\n * ```html\r\n * <div id=\"test\"></div>\r\n *\r\n * <script>\r\n *\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isTagNode( document.getElementById(\"test\"), \"div\" ) );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n isTagNode:function (node, tagNames) {\r\n return node.nodeType == 1 && new RegExp('\\\\b' + node.tagName + '\\\\b','i').test(tagNames)\r\n },\r\n\r\n /**\r\n * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false\r\n * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: null\r\n * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() !== 'div';\r\n * } ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割\r\n * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: null\r\n * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤\r\n * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false\r\n * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点\r\n * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足\r\n * 过滤条件的节点数组或第一个节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: 3(假定有3个div)\r\n * console.log( divNodes.length );\r\n *\r\n * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() === 'div';\r\n * }, true );\r\n *\r\n * //output: 3\r\n * console.log( nodes.length );\r\n *\r\n * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() === 'div';\r\n * }, false );\r\n *\r\n * //output: div\r\n * console.log( node.nodeName );\r\n * ```\r\n */\r\n filterNodeList : function(nodelist,filter,forAll){\r\n var results = [];\r\n if(!utils .isFunction(filter)){\r\n var str = filter;\r\n filter = function(n){\r\n return utils.indexOf(utils.isArray(str) ? str:str.split(' '), n.tagName.toLowerCase()) != -1\r\n };\r\n }\r\n utils.each(nodelist,function(n){\r\n filter(n) && results.push(n)\r\n });\r\n return results.length == 0 ? null : results.length == 1 || !forAll ? results[0] : results\r\n },\r\n\r\n /**\r\n * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾\r\n * @method isInNodeEndBoundary\r\n * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL\r\n * @param node 需要检测的节点对象\r\n * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0\r\n */\r\n isInNodeEndBoundary : function (rng,node){\r\n var start = rng.startContainer;\r\n if(start.nodeType == 3 && rng.startOffset != start.nodeValue.length){\r\n return 0;\r\n }\r\n if(start.nodeType == 1 && rng.startOffset != start.childNodes.length){\r\n return 0;\r\n }\r\n while(start !== node){\r\n if(start.nextSibling){\r\n return 0\r\n };\r\n start = start.parentNode;\r\n }\r\n return 1;\r\n },\r\n isBoundaryNode : function (node,dir){\r\n var tmp;\r\n while(!domUtils.isBody(node)){\r\n tmp = node;\r\n node = node.parentNode;\r\n if(tmp !== node[dir]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n fillHtml : browser.ie11below ? ' ' : '<br/>'\r\n};\r\nvar fillCharReg = new RegExp(domUtils.fillChar, 'g');\r\n\r\n// core/Range.js\r\n/**\r\n * Range封装\r\n * @file\r\n * @module UE.dom\r\n * @class Range\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * dom操作封装\r\n * @unfile\r\n * @module UE.dom\r\n */\r\n\r\n/**\r\n * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。\r\n * @unfile\r\n * @module UE.dom\r\n * @class Range\r\n */\r\n\r\n\r\n(function () {\r\n var guid = 0,\r\n fillChar = domUtils.fillChar,\r\n fillData;\r\n\r\n /**\r\n * 更新range的collapse状态\r\n * @param {Range} range range对象\r\n */\r\n function updateCollapse(range) {\r\n range.collapsed =\r\n range.startContainer && range.endContainer &&\r\n range.startContainer === range.endContainer &&\r\n range.startOffset == range.endOffset;\r\n }\r\n\r\n function selectOneNode(rng){\r\n return !rng.collapsed && rng.startContainer.nodeType == 1 && rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset == 1\r\n }\r\n function setEndPoint(toStart, node, offset, range) {\r\n //如果node是自闭合标签要处理\r\n if (node.nodeType == 1 && (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName])) {\r\n offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1);\r\n node = node.parentNode;\r\n }\r\n if (toStart) {\r\n range.startContainer = node;\r\n range.startOffset = offset;\r\n if (!range.endContainer) {\r\n range.collapse(true);\r\n }\r\n } else {\r\n range.endContainer = node;\r\n range.endOffset = offset;\r\n if (!range.startContainer) {\r\n range.collapse(false);\r\n }\r\n }\r\n updateCollapse(range);\r\n return range;\r\n }\r\n\r\n function execContentsAction(range, action) {\r\n //调整边界\r\n //range.includeBookmark();\r\n var start = range.startContainer,\r\n end = range.endContainer,\r\n startOffset = range.startOffset,\r\n endOffset = range.endOffset,\r\n doc = range.document,\r\n frag = doc.createDocumentFragment(),\r\n tmpStart, tmpEnd;\r\n if (start.nodeType == 1) {\r\n start = start.childNodes[startOffset] || (tmpStart = start.appendChild(doc.createTextNode('')));\r\n }\r\n if (end.nodeType == 1) {\r\n end = end.childNodes[endOffset] || (tmpEnd = end.appendChild(doc.createTextNode('')));\r\n }\r\n if (start === end && start.nodeType == 3) {\r\n frag.appendChild(doc.createTextNode(start.substringData(startOffset, endOffset - startOffset)));\r\n //is not clone\r\n if (action) {\r\n start.deleteData(startOffset, endOffset - startOffset);\r\n range.collapse(true);\r\n }\r\n return frag;\r\n }\r\n var current, currentLevel, clone = frag,\r\n startParents = domUtils.findParents(start, true), endParents = domUtils.findParents(end, true);\r\n for (var i = 0; startParents[i] == endParents[i];) {\r\n i++;\r\n }\r\n for (var j = i, si; si = startParents[j]; j++) {\r\n current = si.nextSibling;\r\n if (si == start) {\r\n if (!tmpStart) {\r\n if (range.startContainer.nodeType == 3) {\r\n clone.appendChild(doc.createTextNode(start.nodeValue.slice(startOffset)));\r\n //is not clone\r\n if (action) {\r\n start.deleteData(startOffset, start.nodeValue.length - startOffset);\r\n }\r\n } else {\r\n clone.appendChild(!action ? start.cloneNode(true) : start);\r\n }\r\n }\r\n } else {\r\n currentLevel = si.cloneNode(false);\r\n clone.appendChild(currentLevel);\r\n }\r\n while (current) {\r\n if (current === end || current === endParents[j]) {\r\n break;\r\n }\r\n si = current.nextSibling;\r\n clone.appendChild(!action ? current.cloneNode(true) : current);\r\n current = si;\r\n }\r\n clone = currentLevel;\r\n }\r\n clone = frag;\r\n if (!startParents[i]) {\r\n clone.appendChild(startParents[i - 1].cloneNode(false));\r\n clone = clone.firstChild;\r\n }\r\n for (var j = i, ei; ei = endParents[j]; j++) {\r\n current = ei.previousSibling;\r\n if (ei == end) {\r\n if (!tmpEnd && range.endContainer.nodeType == 3) {\r\n clone.appendChild(doc.createTextNode(end.substringData(0, endOffset)));\r\n //is not clone\r\n if (action) {\r\n end.deleteData(0, endOffset);\r\n }\r\n }\r\n } else {\r\n currentLevel = ei.cloneNode(false);\r\n clone.appendChild(currentLevel);\r\n }\r\n //如果两端同级,右边第一次已经被开始做了\r\n if (j != i || !startParents[i]) {\r\n while (current) {\r\n if (current === start) {\r\n break;\r\n }\r\n ei = current.previousSibling;\r\n clone.insertBefore(!action ? current.cloneNode(true) : current, clone.firstChild);\r\n current = ei;\r\n }\r\n }\r\n clone = currentLevel;\r\n }\r\n if (action) {\r\n range.setStartBefore(!endParents[i] ? endParents[i - 1] : !startParents[i] ? startParents[i - 1] : endParents[i]).collapse(true);\r\n }\r\n tmpStart && domUtils.remove(tmpStart);\r\n tmpEnd && domUtils.remove(tmpEnd);\r\n return frag;\r\n }\r\n\r\n /**\r\n * 创建一个跟document绑定的空的Range实例\r\n * @constructor\r\n * @param { Document } document 新建的选区所属的文档对象\r\n */\r\n\r\n /**\r\n * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点\r\n */\r\n\r\n /**\r\n * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点,\r\n * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符\r\n */\r\n\r\n /**\r\n * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点\r\n */\r\n\r\n /**\r\n * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点,\r\n * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符\r\n */\r\n\r\n /**\r\n * @property { Boolean } collapsed 当前Range是否闭合\r\n * @default true\r\n * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset\r\n */\r\n\r\n /**\r\n * @property { Document } document 当前Range所属的Document对象\r\n * @remind 不同range的的document属性可以是不同的\r\n */\r\n var Range = dom.Range = function (document) {\r\n var me = this;\r\n me.startContainer =\r\n me.startOffset =\r\n me.endContainer =\r\n me.endOffset = null;\r\n me.document = document;\r\n me.collapsed = true;\r\n };\r\n\r\n /**\r\n * 删除fillData\r\n * @param doc\r\n * @param excludeNode\r\n */\r\n function removeFillData(doc, excludeNode) {\r\n try {\r\n if (fillData && domUtils.inDoc(fillData, doc)) {\r\n if (!fillData.nodeValue.replace(fillCharReg, '').length) {\r\n var tmpNode = fillData.parentNode;\r\n domUtils.remove(fillData);\r\n while (tmpNode && domUtils.isEmptyInlineElement(tmpNode) &&\r\n //safari的contains有bug\r\n (browser.safari ? !(domUtils.getPosition(tmpNode,excludeNode) & domUtils.POSITION_CONTAINS) : !tmpNode.contains(excludeNode))\r\n ) {\r\n fillData = tmpNode.parentNode;\r\n domUtils.remove(tmpNode);\r\n tmpNode = fillData;\r\n }\r\n } else {\r\n fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, '');\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n\r\n /**\r\n * @param node\r\n * @param dir\r\n */\r\n function mergeSibling(node, dir) {\r\n var tmpNode;\r\n node = node[dir];\r\n while (node && domUtils.isFillChar(node)) {\r\n tmpNode = node[dir];\r\n domUtils.remove(node);\r\n node = tmpNode;\r\n }\r\n }\r\n\r\n Range.prototype = {\r\n\r\n /**\r\n * 克隆选区的内容到一个DocumentFragment里\r\n * @method cloneContents\r\n * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素\r\n * @example\r\n * ```html\r\n * <body>\r\n * <!-- 中括号表示选区 -->\r\n * <b>x<i>x[x</i>xx]x</b>\r\n *\r\n * <script>\r\n * //range是已选中的选区\r\n * var fragment = range.cloneContents(),\r\n * node = document.createElement(\"div\");\r\n *\r\n * node.appendChild( fragment );\r\n *\r\n * //output: <i>x</i>xx\r\n * console.log( node.innerHTML );\r\n *\r\n * </script>\r\n * </body>\r\n * ```\r\n */\r\n cloneContents:function () {\r\n return this.collapsed ? null : execContentsAction(this, 0);\r\n },\r\n\r\n /**\r\n * 删除当前选区范围中的所有内容\r\n * @method deleteContents\r\n * @remind 执行完该操作后, 当前Range对象变成了闭合状态\r\n * @return { UE.dom.Range } 当前操作的Range对象\r\n * @example\r\n * ```html\r\n * <body>\r\n * <!-- 中括号表示选区 -->\r\n * <b>x<i>x[x</i>xx]x</b>\r\n *\r\n * <script>\r\n * //range是已选中的选区\r\n * range.deleteContents();\r\n *\r\n * //竖线表示闭合后的选区位置\r\n * //output: <b>x<i>x</i>|x</b>\r\n * console.log( document.body.innerHTML );\r\n *\r\n * //此时, range的各项属性为\r\n * //output: B\r\n * console.log( range.startContainer.tagName );\r\n * //output: 2\r\n * console.log( range.startOffset );\r\n * //output: B\r\n * console.log( range.endContainer.tagName );\r\n * //output: 2\r\n * console.log( range.endOffset );\r\n * //output: true\r\n * console.log( range.collapsed );\r\n *\r\n * </script>\r\n * </body>\r\n * ```\r\n */\r\n deleteContents:function () {\r\n var txt;\r\n if (!this.collapsed) {\r\n execContentsAction(this, 1);\r\n }\r\n if (browser.webkit) {\r\n txt = this.startContainer;\r\n if (txt.nodeType == 3 && !txt.nodeValue.length) {\r\n this.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 将当前选区的内容提取到一个DocumentFragment里\r\n * @method extractContents\r\n * @remind 执行该操作后, 选区将变成闭合状态\r\n * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来\r\n * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象\r\n * @example\r\n * ```html\r\n * <body>\r\n * <!-- 中括号表示选区 -->\r\n * <b>x<i>x[x</i>xx]x</b>\r\n *\r\n * <script>\r\n * //range是已选中的选区\r\n * var fragment = range.extractContents(),\r\n * node = document.createElement( \"div\" );\r\n *\r\n * node.appendChild( fragment );\r\n *\r\n * //竖线表示闭合后的选区位置\r\n *\r\n * //output: <b>x<i>x</i>|x</b>\r\n * console.log( document.body.innerHTML );\r\n * //output: <i>x</i>xx\r\n * console.log( node.innerHTML );\r\n *\r\n * //此时, range的各项属性为\r\n * //output: B\r\n * console.log( range.startContainer.tagName );\r\n * //output: 2\r\n * console.log( range.startOffset );\r\n * //output: B\r\n * console.log( range.endContainer.tagName );\r\n * //output: 2\r\n * console.log( range.endOffset );\r\n * //output: true\r\n * console.log( range.collapsed );\r\n *\r\n * </script>\r\n * </body>\r\n */\r\n extractContents:function () {\r\n return this.collapsed ? null : execContentsAction(this, 2);\r\n },\r\n\r\n /**\r\n * 设置Range的开始容器节点和偏移量\r\n * @method setStart\r\n * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素,\r\n * 如果是文本节点,那么offset指的是其文本内容的第offset个字符\r\n * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置\r\n * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点\r\n * 中的索引\r\n * @param { Node } node 将被设为当前选区开始边界容器的节点对象\r\n * @param { int } offset 选区的开始位置偏移量\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <!-- 选区 -->\r\n * <b>xxx<i>x<span>xx</span>xx<em>xx</em>xxx</i>[xxx]</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.setStart( document.getElementsByTagName(\"i\")[0], 1 );\r\n *\r\n * //此时, 选区变成了\r\n * //<b>xxx<i>x[<span>xx</span>xx<em>xx</em>xxx</i>xxx]</b>\r\n *\r\n * </script>\r\n * ```\r\n * @example\r\n * ```html\r\n * <!-- 选区 -->\r\n * <b>xxx<img>[xx]x</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.setStart( document.getElementsByTagName(\"img\")[0], 3 );\r\n *\r\n * //此时, 选区变成了\r\n * //<b>xxx[<img>xx]x</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setStart:function (node, offset) {\r\n return setEndPoint(true, node, offset, this);\r\n },\r\n\r\n /**\r\n * 设置Range的结束容器和偏移量\r\n * @method setEnd\r\n * @param { Node } node 作为当前选区结束边界容器的节点对象\r\n * @param { int } offset 结束边界的偏移量\r\n * @see UE.dom.Range:setStart(Node,int)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEnd:function (node, offset) {\r\n return setEndPoint(false, node, offset, this);\r\n },\r\n\r\n /**\r\n * 将Range开始位置设置到node节点之后\r\n * @method setStartAfter\r\n * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1\r\n * @param { Node } node 选区的开始边界将紧接着该节点之后\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>xx[x</span>xxx]</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.setStartAfter( document.getElementsByTagName(\"i\")[0] );\r\n *\r\n * //结果选区\r\n * //<b>xx<i>xxx</i>[<span>xxx</span>xxx]</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setStartAfter:function (node) {\r\n return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1);\r\n },\r\n\r\n /**\r\n * 将Range开始位置设置到node节点之前\r\n * @method setStartBefore\r\n * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引\r\n * @param { Node } node 新的选区开始位置在该节点之前\r\n * @see UE.dom.Range:setStartAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setStartBefore:function (node) {\r\n return this.setStart(node.parentNode, domUtils.getNodeIndex(node));\r\n },\r\n\r\n /**\r\n * 将Range结束位置设置到node节点之后\r\n * @method setEndAfter\r\n * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>[xx<i>xxx</i><span>xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.setStartAfter( document.getElementsByTagName(\"span\")[0] );\r\n *\r\n * //结果选区\r\n * //<b>[xx<i>xxx</i><span>xxx</span>]xxx</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setEndAfter:function (node) {\r\n return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1);\r\n },\r\n\r\n /**\r\n * 将Range结束位置设置到node节点之前\r\n * @method setEndBefore\r\n * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setEndAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndBefore:function (node) {\r\n return this.setEnd(node.parentNode, domUtils.getNodeIndex(node));\r\n },\r\n\r\n /**\r\n * 设置Range的开始位置到node节点内的第一个子节点之前\r\n * @method setStartAtFirst\r\n * @remind 选区的开始容器将变成给定的节点, 且偏移量为0\r\n * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartBefore(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>[xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.setStartAtFirst( document.getElementsByTagName(\"i\")[0] );\r\n *\r\n * //结果选区\r\n * //<b>xx<i>[xxx</i><span>xx]x</span>xxx</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n setStartAtFirst:function (node) {\r\n return this.setStart(node, 0);\r\n },\r\n\r\n /**\r\n * 设置Range的开始位置到node节点内的最后一个节点之后\r\n * @method setStartAtLast\r\n * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数\r\n * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setStartAtLast:function (node) {\r\n return this.setStart(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length);\r\n },\r\n\r\n /**\r\n * 设置Range的结束位置到node节点内的第一个节点之前\r\n * @method setEndAtFirst\r\n * @param { Node } node 目标节点\r\n * @remind 选区的结束容器将变成给定的节点, 且偏移量为0\r\n * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndAtFirst:function (node) {\r\n return this.setEnd(node, 0);\r\n },\r\n\r\n /**\r\n * 设置Range的结束位置到node节点内的最后一个节点之后\r\n * @method setEndAtLast\r\n * @param { Node } node 目标节点\r\n * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量\r\n * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndAtLast:function (node) {\r\n return this.setEnd(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length);\r\n },\r\n\r\n /**\r\n * 选中给定节点\r\n * @method selectNode\r\n * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引,\r\n * 而endOffset为startOffset+1\r\n * @param { Node } node 需要选中的节点\r\n * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>[xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.selectNode( document.getElementsByTagName(\"i\")[0] );\r\n *\r\n * //结果选区\r\n * //<b>xx[<i>xxx</i>]<span>xxx</span>xxx</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n selectNode:function (node) {\r\n return this.setStartBefore(node).setEndAfter(node);\r\n },\r\n\r\n /**\r\n * 选中给定节点内部的所有节点\r\n * @method selectNodeContents\r\n * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0,\r\n * 而endOffset是该节点的子节点数。\r\n * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点\r\n * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>[xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.selectNode( document.getElementsByTagName(\"b\")[0] );\r\n *\r\n * //结果选区\r\n * //<b>[xx<i>xxx</i><span>xxx</span>xxx]</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n selectNodeContents:function (node) {\r\n return this.setStart(node, 0).setEndAtLast(node);\r\n },\r\n\r\n /**\r\n * clone当前Range对象\r\n * @method cloneRange\r\n * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。\r\n * @return { UE.dom.Range } 当前range对象的一个副本\r\n */\r\n cloneRange:function () {\r\n var me = this;\r\n return new Range(me.document).setStart(me.startContainer, me.startOffset).setEnd(me.endContainer, me.endOffset);\r\n\r\n },\r\n\r\n /**\r\n * 向当前选区的结束处闭合选区\r\n * @method collapse\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>[xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.collapse();\r\n *\r\n * //结果选区\r\n * //“|”表示选区已闭合\r\n * //<b>xx<i>xxx</i><span>xx|x</span>xxx</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合,\r\n * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。\r\n * @method collapse\r\n * @param { Boolean } toStart 是否向选区开始处闭合\r\n * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态\r\n * @see UE.dom.Range:collapse()\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>xx<i>xxx</i><span>[xx]x</span>xxx</b>\r\n *\r\n * <script>\r\n *\r\n * //执行操作\r\n * range.collapse( true );\r\n *\r\n * //结果选区\r\n * //“|”表示选区已闭合\r\n * //<b>xx<i>xxx</i><span>|xxx</span>xxx</b>\r\n *\r\n * </script>\r\n * ```\r\n */\r\n collapse:function (toStart) {\r\n var me = this;\r\n if (toStart) {\r\n me.endContainer = me.startContainer;\r\n me.endOffset = me.startOffset;\r\n } else {\r\n me.startContainer = me.endContainer;\r\n me.startOffset = me.endOffset;\r\n }\r\n me.collapsed = true;\r\n return me;\r\n },\r\n\r\n /**\r\n * 调整range的开始位置和结束位置,使其\"收缩\"到最小的位置\r\n * @method shrinkBoundary\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * <span>xx<b>xx[</b>xxxxx]</span> => <span>xx<b>xx</b>[xxxxx]</span>\r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * <!-- 选区示例 -->\r\n * <b>x[xx</b><i>]xxx</i>\r\n *\r\n * <script>\r\n *\r\n * //执行收缩\r\n * range.shrinkBoundary();\r\n *\r\n * //结果选区\r\n * //<b>x[xx]</b><i>xxx</i>\r\n * </script>\r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * [<b><i>xxxx</i>xxxxxxx</b>] => <b><i>[xxxx</i>xxxxxxx]</b>\r\n * ```\r\n */\r\n\r\n /**\r\n * 调整range的开始位置和结束位置,使其\"收缩\"到最小的位置,\r\n * 如果ignoreEnd的值为true,则忽略对结束位置的调整\r\n * @method shrinkBoundary\r\n * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.domUtils.Range:shrinkBoundary()\r\n */\r\n shrinkBoundary:function (ignoreEnd) {\r\n var me = this, child,\r\n collapsed = me.collapsed;\r\n function check(node){\r\n return node.nodeType == 1 && !domUtils.isBookmarkNode(node) && !dtd.$empty[node.tagName] && !dtd.$nonChild[node.tagName]\r\n }\r\n while (me.startContainer.nodeType == 1 //是element\r\n && (child = me.startContainer.childNodes[me.startOffset]) //子节点也是element\r\n && check(child)) {\r\n me.setStart(child, 0);\r\n }\r\n if (collapsed) {\r\n return me.collapse(true);\r\n }\r\n if (!ignoreEnd) {\r\n while (me.endContainer.nodeType == 1//是element\r\n && me.endOffset > 0 //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错\r\n && (child = me.endContainer.childNodes[me.endOffset - 1]) //子节点也是element\r\n && check(child)) {\r\n me.setEnd(child, child.childNodes.length);\r\n }\r\n }\r\n return me;\r\n },\r\n\r\n /**\r\n * 获取离当前选区内包含的所有节点最近的公共祖先节点,\r\n * @method getCommonAncestor\r\n * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @example\r\n * ```html\r\n * //选区示例\r\n * <span>xxx<b>x[x<em>xx]x</em>xxx</b>xx</span>\r\n * <script>\r\n *\r\n * var node = range.getCommonAncestor();\r\n *\r\n * //公共祖先节点是: b节点\r\n * //输出: B\r\n * console.log(node.tagName);\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到\r\n * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf\r\n * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点\r\n * @method getCommonAncestor\r\n * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @see UE.dom.Range:getCommonAncestor()\r\n * @example\r\n * ```html\r\n * <body>\r\n *\r\n * <!-- 选区示例 -->\r\n * <b>xxx<i>xxxx<span>xx[x</span>xx]x</i>xxxxxxx</b>\r\n *\r\n * <script>\r\n *\r\n * var node = range.getCommonAncestor( false );\r\n *\r\n * //这里的公共祖先节点是B而不是I, 是因为参数限制了获取到的节点不能是容器节点\r\n * //output: B\r\n * console.log( node.tagName );\r\n *\r\n * </script>\r\n *\r\n * </body>\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到\r\n * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf\r\n * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据\r\n * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。\r\n * @method getCommonAncestor\r\n * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点\r\n * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @see UE.dom.Range:getCommonAncestor()\r\n * @see UE.dom.Range:getCommonAncestor(Boolean)\r\n * @example\r\n * ```html\r\n * <body>\r\n *\r\n * <!-- 选区示例 -->\r\n * <b>xxx<i>xxxx<span>x[x]x</span>xxx</i>xxxxxxx</b>\r\n *\r\n * <script>\r\n *\r\n * var node = range.getCommonAncestor( true, false );\r\n *\r\n * //output: SPAN\r\n * console.log( node.tagName );\r\n *\r\n * </script>\r\n *\r\n * </body>\r\n * ```\r\n */\r\n getCommonAncestor:function (includeSelf, ignoreTextNode) {\r\n var me = this,\r\n start = me.startContainer,\r\n end = me.endContainer;\r\n if (start === end) {\r\n if (includeSelf && selectOneNode(this)) {\r\n start = start.childNodes[me.startOffset];\r\n if(start.nodeType == 1)\r\n return start;\r\n }\r\n //只有在上来就相等的情况下才会出现是文本的情况\r\n return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start;\r\n }\r\n return domUtils.getCommonAncestor(start, end);\r\n },\r\n\r\n /**\r\n * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上\r\n * @method trimBoundary\r\n * @remind 该操作有可能会引起文本节点被切开\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * //选区示例\r\n * <b>xxx<i>[xxxxx]</i>xxx</b>\r\n *\r\n * <script>\r\n * //未调整前, 选区的开始容器和结束都是文本节点\r\n * //执行调整\r\n * range.trimBoundary();\r\n *\r\n * //调整之后, 容器节点变成了i节点\r\n * //<b>xxx[<i>xxxxx</i>]xxx</b>\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上,\r\n * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整\r\n * @method trimBoundary\r\n * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * //选区示例\r\n * <b>xxx<i>[xxxxx]</i>xxx</b>\r\n *\r\n * <script>\r\n * //未调整前, 选区的开始容器和结束都是文本节点\r\n * //执行调整\r\n * range.trimBoundary( true );\r\n *\r\n * //调整之后, 开始容器节点变成了i节点\r\n * //但是, 结束容器没有发生变化\r\n * //<b>xxx[<i>xxxxx]</i>xxx</b>\r\n * </script>\r\n * ```\r\n */\r\n trimBoundary:function (ignoreEnd) {\r\n this.txtToElmBoundary();\r\n var start = this.startContainer,\r\n offset = this.startOffset,\r\n collapsed = this.collapsed,\r\n end = this.endContainer;\r\n if (start.nodeType == 3) {\r\n if (offset == 0) {\r\n this.setStartBefore(start);\r\n } else {\r\n if (offset >= start.nodeValue.length) {\r\n this.setStartAfter(start);\r\n } else {\r\n var textNode = domUtils.split(start, offset);\r\n //跟新结束边界\r\n if (start === end) {\r\n this.setEnd(textNode, this.endOffset - offset);\r\n } else if (start.parentNode === end) {\r\n this.endOffset += 1;\r\n }\r\n this.setStartBefore(textNode);\r\n }\r\n }\r\n if (collapsed) {\r\n return this.collapse(true);\r\n }\r\n }\r\n if (!ignoreEnd) {\r\n offset = this.endOffset;\r\n end = this.endContainer;\r\n if (end.nodeType == 3) {\r\n if (offset == 0) {\r\n this.setEndBefore(end);\r\n } else {\r\n offset < end.nodeValue.length && domUtils.split(end, offset);\r\n this.setEndAfter(end);\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做\r\n * @method txtToElmBoundary\r\n * @remind 该操作不会修改dom节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n\r\n /**\r\n * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项\r\n * ignoreCollapsed 的值决定是否执行该调整\r\n * @method txtToElmBoundary\r\n * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则\r\n * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n txtToElmBoundary:function (ignoreCollapsed) {\r\n function adjust(r, c) {\r\n var container = r[c + 'Container'],\r\n offset = r[c + 'Offset'];\r\n if (container.nodeType == 3) {\r\n if (!offset) {\r\n r['set' + c.replace(/(\\w)/, function (a) {\r\n return a.toUpperCase();\r\n }) + 'Before'](container);\r\n } else if (offset >= container.nodeValue.length) {\r\n r['set' + c.replace(/(\\w)/, function (a) {\r\n return a.toUpperCase();\r\n }) + 'After' ](container);\r\n }\r\n }\r\n }\r\n\r\n if (ignoreCollapsed || !this.collapsed) {\r\n adjust(this, 'start');\r\n adjust(this, 'end');\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含\r\n * @method insertNode\r\n * @param { Node } node 需要插入的节点\r\n * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n insertNode:function (node) {\r\n var first = node, length = 1;\r\n if (node.nodeType == 11) {\r\n first = node.firstChild;\r\n length = node.childNodes.length;\r\n }\r\n this.trimBoundary(true);\r\n var start = this.startContainer,\r\n offset = this.startOffset;\r\n var nextNode = start.childNodes[ offset ];\r\n if (nextNode) {\r\n start.insertBefore(node, nextNode);\r\n } else {\r\n start.appendChild(node);\r\n }\r\n if (first.parentNode === this.endContainer) {\r\n this.endOffset = this.endOffset + length;\r\n }\r\n return this.setStartBefore(first);\r\n },\r\n\r\n /**\r\n * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置\r\n * @method setCursor\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:collapse()\r\n */\r\n\r\n /**\r\n * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。\r\n * @method setCursor\r\n * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合,\r\n * 反之,则向开始容器方向闭合\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:collapse(Boolean)\r\n */\r\n setCursor:function (toEnd, noFillData) {\r\n return this.collapse(!toEnd).select(noFillData);\r\n },\r\n\r\n /**\r\n * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置\r\n * @method createBookmark\r\n * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则\r\n * 返回标记位置的ID, 反之则返回标记位置节点的引用\r\n * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用,\r\n * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示\r\n * 返回的记录的类型为ID, 反之则为引用\r\n */\r\n createBookmark:function (serialize, same) {\r\n var endNode,\r\n startNode = this.document.createElement('span');\r\n startNode.style.cssText = 'display:none;line-height:0px;';\r\n startNode.appendChild(this.document.createTextNode('\\u200D'));\r\n startNode.id = '_baidu_bookmark_start_' + (same ? '' : guid++);\r\n\r\n if (!this.collapsed) {\r\n endNode = startNode.cloneNode(true);\r\n endNode.id = '_baidu_bookmark_end_' + (same ? '' : guid++);\r\n }\r\n this.insertNode(startNode);\r\n if (endNode) {\r\n this.collapse().insertNode(endNode).setEndBefore(endNode);\r\n }\r\n this.setStartAfter(startNode);\r\n return {\r\n start:serialize ? startNode.id : startNode,\r\n end:endNode ? serialize ? endNode.id : endNode : null,\r\n id:serialize\r\n }\r\n },\r\n\r\n /**\r\n * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点\r\n * @method moveToBookmark\r\n * @param { BookMark } bookmark createBookmark所创建的标签对象\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:createBookmark(Boolean)\r\n */\r\n moveToBookmark:function (bookmark) {\r\n var start = bookmark.id ? this.document.getElementById(bookmark.start) : bookmark.start,\r\n end = bookmark.end && bookmark.id ? this.document.getElementById(bookmark.end) : bookmark.end;\r\n this.setStartBefore(start);\r\n domUtils.remove(start);\r\n if (end) {\r\n this.setEndBefore(end);\r\n domUtils.remove(end);\r\n } else {\r\n this.collapse(true);\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 调整range的边界,使其\"放大\"到最近的父节点\r\n * @method enlarge\r\n * @remind 会引起选区的变化\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n\r\n /**\r\n * 调整range的边界,使其\"放大\"到最近的父节点,根据参数 toBlock 的取值, 可以\r\n * 要求扩大之后的父节点是block节点\r\n * @method enlarge\r\n * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n enlarge:function (toBlock, stopFn) {\r\n var isBody = domUtils.isBody,\r\n pre, node, tmp = this.document.createTextNode('');\r\n if (toBlock) {\r\n node = this.startContainer;\r\n if (node.nodeType == 1) {\r\n if (node.childNodes[this.startOffset]) {\r\n pre = node = node.childNodes[this.startOffset]\r\n } else {\r\n node.appendChild(tmp);\r\n pre = node = tmp;\r\n }\r\n } else {\r\n pre = node;\r\n }\r\n while (1) {\r\n if (domUtils.isBlockElm(node)) {\r\n node = pre;\r\n while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) {\r\n node = pre;\r\n }\r\n this.setStartBefore(node);\r\n break;\r\n }\r\n pre = node;\r\n node = node.parentNode;\r\n }\r\n node = this.endContainer;\r\n if (node.nodeType == 1) {\r\n if (pre = node.childNodes[this.endOffset]) {\r\n node.insertBefore(tmp, pre);\r\n } else {\r\n node.appendChild(tmp);\r\n }\r\n pre = node = tmp;\r\n } else {\r\n pre = node;\r\n }\r\n while (1) {\r\n if (domUtils.isBlockElm(node)) {\r\n node = pre;\r\n while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) {\r\n node = pre;\r\n }\r\n this.setEndAfter(node);\r\n break;\r\n }\r\n pre = node;\r\n node = node.parentNode;\r\n }\r\n if (tmp.parentNode === this.endContainer) {\r\n this.endOffset--;\r\n }\r\n domUtils.remove(tmp);\r\n }\r\n\r\n // 扩展边界到最大\r\n if (!this.collapsed) {\r\n while (this.startOffset == 0) {\r\n if (stopFn && stopFn(this.startContainer)) {\r\n break;\r\n }\r\n if (isBody(this.startContainer)) {\r\n break;\r\n }\r\n this.setStartBefore(this.startContainer);\r\n }\r\n while (this.endOffset == (this.endContainer.nodeType == 1 ? this.endContainer.childNodes.length : this.endContainer.nodeValue.length)) {\r\n if (stopFn && stopFn(this.endContainer)) {\r\n break;\r\n }\r\n if (isBody(this.endContainer)) {\r\n break;\r\n }\r\n this.setEndAfter(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n enlargeToBlockElm:function(ignoreEnd){\r\n while(!domUtils.isBlockElm(this.startContainer)){\r\n this.setStartBefore(this.startContainer);\r\n }\r\n if(!ignoreEnd){\r\n while(!domUtils.isBlockElm(this.endContainer)){\r\n this.setEndAfter(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n /**\r\n * 调整Range的边界,使其\"缩小\"到最合适的位置\r\n * @method adjustmentBoundary\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:shrinkBoundary()\r\n */\r\n adjustmentBoundary:function () {\r\n if (!this.collapsed) {\r\n while (!domUtils.isBody(this.startContainer) &&\r\n this.startOffset == this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length &&\r\n this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n\r\n this.setStartAfter(this.startContainer);\r\n }\r\n while (!domUtils.isBody(this.endContainer) && !this.endOffset &&\r\n this.endContainer[this.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n this.setEndBefore(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 给range选区中的内容添加给定的inline标签\r\n * @method applyInlineStyle\r\n * @param { String } tagName 需要添加的标签名\r\n * @example\r\n * ```html\r\n * <p>xxxx[xxxx]x</p> ==> range.applyInlineStyle(\"strong\") ==> <p>xxxx[<strong>xxxx</strong>]x</p>\r\n * ```\r\n */\r\n\r\n /**\r\n * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。\r\n * @method applyInlineStyle\r\n * @param { String } tagName 需要添加的标签名\r\n * @param { Object } attrs 跟随新添加的标签的属性\r\n * @return { UE.dom.Range } 当前选区\r\n * @example\r\n * ```html\r\n * <p>xxxx[xxxx]x</p>\r\n *\r\n * ==>\r\n *\r\n * <!-- 执行操作 -->\r\n * range.applyInlineStyle(\"strong\",{\"style\":\"font-size:12px\"})\r\n *\r\n * ==>\r\n *\r\n * <p>xxxx[<strong style=\"font-size:12px\">xxxx</strong>]x</p>\r\n * ```\r\n */\r\n applyInlineStyle:function (tagName, attrs, list) {\r\n if (this.collapsed)return this;\r\n this.trimBoundary().enlarge(false,\r\n function (node) {\r\n return node.nodeType == 1 && domUtils.isBlockElm(node)\r\n }).adjustmentBoundary();\r\n var bookmark = this.createBookmark(),\r\n end = bookmark.end,\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node);\r\n },\r\n current = domUtils.getNextDomNode(bookmark.start, false, filterFn),\r\n node,\r\n pre,\r\n range = this.cloneRange();\r\n while (current && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) {\r\n if (current.nodeType == 3 || dtd[tagName][current.tagName]) {\r\n range.setStartBefore(current);\r\n node = current;\r\n while (node && (node.nodeType == 3 || dtd[tagName][node.tagName]) && node !== end) {\r\n pre = node;\r\n node = domUtils.getNextDomNode(node, node.nodeType == 1, null, function (parent) {\r\n return dtd[tagName][parent.tagName];\r\n });\r\n }\r\n var frag = range.setEndAfter(pre).extractContents(), elm;\r\n if (list && list.length > 0) {\r\n var level, top;\r\n top = level = list[0].cloneNode(false);\r\n for (var i = 1, ci; ci = list[i++];) {\r\n level.appendChild(ci.cloneNode(false));\r\n level = level.firstChild;\r\n }\r\n elm = level;\r\n } else {\r\n elm = range.document.createElement(tagName);\r\n }\r\n if (attrs) {\r\n domUtils.setAttributes(elm, attrs);\r\n }\r\n elm.appendChild(frag);\r\n range.insertNode(list ? top : elm);\r\n //处理下滑线在a上的情况\r\n var aNode;\r\n if (tagName == 'span' && attrs.style && /text\\-decoration/.test(attrs.style) && (aNode = domUtils.findParentByTagName(elm, 'a', true))) {\r\n domUtils.setAttributes(aNode, attrs);\r\n domUtils.remove(elm, true);\r\n elm = aNode;\r\n } else {\r\n domUtils.mergeSibling(elm);\r\n domUtils.clearEmptySibling(elm);\r\n }\r\n //去除子节点相同的\r\n domUtils.mergeChild(elm, attrs);\r\n current = domUtils.getNextDomNode(elm, false, filterFn);\r\n domUtils.mergeToParent(elm);\r\n if (node === end) {\r\n break;\r\n }\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return this.moveToBookmark(bookmark);\r\n },\r\n\r\n /**\r\n * 移除当前选区内指定的inline标签,但保留其中的内容\r\n * @method removeInlineStyle\r\n * @param { String } tagName 需要移除的标签名\r\n * @return { UE.dom.Range } 当前的range对象\r\n * @example\r\n * ```html\r\n * xx[x<span>xxx<em>yyy</em>zz]z</span> => range.removeInlineStyle([\"em\"]) => xx[x<span>xxxyyyzz]z</span>\r\n * ```\r\n */\r\n\r\n /**\r\n * 移除当前选区内指定的一组inline标签,但保留其中的内容\r\n * @method removeInlineStyle\r\n * @param { Array } tagNameArr 需要移除的标签名的数组\r\n * @return { UE.dom.Range } 当前的range对象\r\n * @see UE.dom.Range:removeInlineStyle(String)\r\n */\r\n removeInlineStyle:function (tagNames) {\r\n if (this.collapsed)return this;\r\n tagNames = utils.isArray(tagNames) ? tagNames : [tagNames];\r\n this.shrinkBoundary().adjustmentBoundary();\r\n var start = this.startContainer, end = this.endContainer;\r\n while (1) {\r\n if (start.nodeType == 1) {\r\n if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) {\r\n break;\r\n }\r\n if (start.tagName.toLowerCase() == 'body') {\r\n start = null;\r\n break;\r\n }\r\n }\r\n start = start.parentNode;\r\n }\r\n while (1) {\r\n if (end.nodeType == 1) {\r\n if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) {\r\n break;\r\n }\r\n if (end.tagName.toLowerCase() == 'body') {\r\n end = null;\r\n break;\r\n }\r\n }\r\n end = end.parentNode;\r\n }\r\n var bookmark = this.createBookmark(),\r\n frag,\r\n tmpRange;\r\n if (start) {\r\n tmpRange = this.cloneRange().setEndBefore(bookmark.start).setStartBefore(start);\r\n frag = tmpRange.extractContents();\r\n tmpRange.insertNode(frag);\r\n domUtils.clearEmptySibling(start, true);\r\n start.parentNode.insertBefore(bookmark.start, start);\r\n }\r\n if (end) {\r\n tmpRange = this.cloneRange().setStartAfter(bookmark.end).setEndAfter(end);\r\n frag = tmpRange.extractContents();\r\n tmpRange.insertNode(frag);\r\n domUtils.clearEmptySibling(end, false, true);\r\n end.parentNode.insertBefore(bookmark.end, end.nextSibling);\r\n }\r\n var current = domUtils.getNextDomNode(bookmark.start, false, function (node) {\r\n return node.nodeType == 1;\r\n }), next;\r\n while (current && current !== bookmark.end) {\r\n next = domUtils.getNextDomNode(current, true, function (node) {\r\n return node.nodeType == 1;\r\n });\r\n if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) {\r\n domUtils.remove(current, true);\r\n }\r\n current = next;\r\n }\r\n return this.moveToBookmark(bookmark);\r\n },\r\n\r\n /**\r\n * 获取当前选中的自闭合的节点\r\n * @method getClosedNode\r\n * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL\r\n */\r\n getClosedNode:function () {\r\n var node;\r\n if (!this.collapsed) {\r\n var range = this.cloneRange().adjustmentBoundary().shrinkBoundary();\r\n if (selectOneNode(range)) {\r\n var child = range.startContainer.childNodes[range.startOffset];\r\n if (child && child.nodeType == 1 && (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName])) {\r\n node = child;\r\n }\r\n }\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 在页面上高亮range所表示的选区\r\n * @method select\r\n * @return { UE.dom.Range } 返回当前Range对象\r\n */\r\n //这里不区分ie9以上,trace:3824\r\n select:browser.ie ? function (noFillData, textRange) {\r\n var nativeRange;\r\n if (!this.collapsed)\r\n this.shrinkBoundary();\r\n var node = this.getClosedNode();\r\n if (node && !textRange) {\r\n try {\r\n nativeRange = this.document.body.createControlRange();\r\n nativeRange.addElement(node);\r\n nativeRange.select();\r\n } catch (e) {}\r\n return this;\r\n }\r\n var bookmark = this.createBookmark(),\r\n start = bookmark.start,\r\n end;\r\n nativeRange = this.document.body.createTextRange();\r\n nativeRange.moveToElementText(start);\r\n nativeRange.moveStart('character', 1);\r\n if (!this.collapsed) {\r\n var nativeRangeEnd = this.document.body.createTextRange();\r\n end = bookmark.end;\r\n nativeRangeEnd.moveToElementText(end);\r\n nativeRange.setEndPoint('EndToEnd', nativeRangeEnd);\r\n } else {\r\n if (!noFillData && this.startContainer.nodeType != 3) {\r\n //使用<span>|x<span>固定住光标\r\n var tmpText = this.document.createTextNode(fillChar),\r\n tmp = this.document.createElement('span');\r\n tmp.appendChild(this.document.createTextNode(fillChar));\r\n start.parentNode.insertBefore(tmp, start);\r\n start.parentNode.insertBefore(tmpText, start);\r\n //当点b,i,u时,不能清除i上边的b\r\n removeFillData(this.document, tmpText);\r\n fillData = tmpText;\r\n mergeSibling(tmp, 'previousSibling');\r\n mergeSibling(start, 'nextSibling');\r\n nativeRange.moveStart('character', -1);\r\n nativeRange.collapse(true);\r\n }\r\n }\r\n this.moveToBookmark(bookmark);\r\n tmp && domUtils.remove(tmp);\r\n //IE在隐藏状态下不支持range操作,catch一下\r\n try {\r\n nativeRange.select();\r\n } catch (e) {\r\n }\r\n return this;\r\n } : function (notInsertFillData) {\r\n function checkOffset(rng){\r\n\r\n function check(node,offset,dir){\r\n if(node.nodeType == 3 && node.nodeValue.length < offset){\r\n rng[dir + 'Offset'] = node.nodeValue.length\r\n }\r\n }\r\n check(rng.startContainer,rng.startOffset,'start');\r\n check(rng.endContainer,rng.endOffset,'end');\r\n }\r\n var win = domUtils.getWindow(this.document),\r\n sel = win.getSelection(),\r\n txtNode;\r\n //FF下关闭自动长高时滚动条在关闭dialog时会跳\r\n //ff下如果不body.focus将不能定位闭合光标到编辑器内\r\n browser.gecko ? this.document.body.focus() : win.focus();\r\n if (sel) {\r\n sel.removeAllRanges();\r\n // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断\r\n // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR'\r\n if (this.collapsed && !notInsertFillData) {\r\n// //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点\r\n// if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) {\r\n// var tmp = this.document.createTextNode('');\r\n// this.insertNode(tmp).setStart(tmp, 0).collapse(true);\r\n// }\r\n//\r\n //处理光标落在文本节点的情况\r\n //处理以下的情况\r\n //<b>|xxxx</b>\r\n //<b>xxxx</b>|xxxx\r\n //xxxx<b>|</b>\r\n var start = this.startContainer,child = start;\r\n if(start.nodeType == 1){\r\n child = start.childNodes[this.startOffset];\r\n\r\n }\r\n if( !(start.nodeType == 3 && this.startOffset) &&\r\n (child ?\r\n (!child.previousSibling || child.previousSibling.nodeType != 3)\r\n :\r\n (!start.lastChild || start.lastChild.nodeType != 3)\r\n )\r\n ){\r\n txtNode = this.document.createTextNode(fillChar);\r\n //跟着前边走\r\n this.insertNode(txtNode);\r\n removeFillData(this.document, txtNode);\r\n mergeSibling(txtNode, 'previousSibling');\r\n mergeSibling(txtNode, 'nextSibling');\r\n fillData = txtNode;\r\n this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true);\r\n }\r\n }\r\n var nativeRange = this.document.createRange();\r\n if(this.collapsed && browser.opera && this.startContainer.nodeType == 1){\r\n var child = this.startContainer.childNodes[this.startOffset];\r\n if(!child){\r\n //往前靠拢\r\n child = this.startContainer.lastChild;\r\n if( child && domUtils.isBr(child)){\r\n this.setStartBefore(child).collapse(true);\r\n }\r\n }else{\r\n //向后靠拢\r\n while(child && domUtils.isBlockElm(child)){\r\n if(child.nodeType == 1 && child.childNodes[0]){\r\n child = child.childNodes[0]\r\n }else{\r\n break;\r\n }\r\n }\r\n child && this.setStartBefore(child).collapse(true)\r\n }\r\n\r\n }\r\n //是createAddress最后一位算的不准,现在这里进行微调\r\n checkOffset(this);\r\n nativeRange.setStart(this.startContainer, this.startOffset);\r\n nativeRange.setEnd(this.endContainer, this.endOffset);\r\n sel.addRange(nativeRange);\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 滚动到当前range开始的位置\r\n * @method scrollToView\r\n * @param { Window } win 当前range对象所属的window对象\r\n * @return { UE.dom.Range } 当前Range对象\r\n */\r\n\r\n /**\r\n * 滚动到距离当前range开始位置 offset 的位置处\r\n * @method scrollToView\r\n * @param { Window } win 当前range对象所属的window对象\r\n * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移\r\n * @return { UE.dom.Range } 当前Range对象\r\n */\r\n scrollToView:function (win, offset) {\r\n win = win ? window : domUtils.getWindow(this.document);\r\n var me = this,\r\n span = me.document.createElement('span');\r\n //trace:717\r\n span.innerHTML = ' ';\r\n me.cloneRange().insertNode(span);\r\n domUtils.scrollToView(span, win, offset);\r\n domUtils.remove(span);\r\n return me;\r\n },\r\n\r\n /**\r\n * 判断当前选区内容是否占位符\r\n * @private\r\n * @method inFillChar\r\n * @return { Boolean } 如果是占位符返回true,否则返回false\r\n */\r\n inFillChar : function(){\r\n var start = this.startContainer;\r\n if(this.collapsed && start.nodeType == 3\r\n && start.nodeValue.replace(new RegExp('^' + domUtils.fillChar),'').length + 1 == start.nodeValue.length\r\n ){\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * 保存\r\n * @method createAddress\r\n * @private\r\n * @return { Boolean } 返回开始和结束的位置\r\n * @example\r\n * ```html\r\n * <body>\r\n * <p>\r\n * aaaa\r\n * <em>\r\n * <!-- 选区开始 -->\r\n * bbbb\r\n * <!-- 选区结束 -->\r\n * </em>\r\n * </p>\r\n *\r\n * <script>\r\n * //output: {startAddress:[0,1,0,0],endAddress:[0,1,0,4]}\r\n * console.log( range.createAddress() );\r\n * </script>\r\n * </body>\r\n * ```\r\n */\r\n createAddress : function(ignoreEnd,ignoreTxt){\r\n var addr = {},me = this;\r\n\r\n function getAddress(isStart){\r\n var node = isStart ? me.startContainer : me.endContainer;\r\n var parents = domUtils.findParents(node,true,function(node){return !domUtils.isBody(node)}),\r\n addrs = [];\r\n for(var i = 0,ci;ci = parents[i++];){\r\n addrs.push(domUtils.getNodeIndex(ci,ignoreTxt));\r\n }\r\n var firstIndex = 0;\r\n\r\n if(ignoreTxt){\r\n if(node.nodeType == 3){\r\n var tmpNode = node.previousSibling;\r\n while(tmpNode && tmpNode.nodeType == 3){\r\n firstIndex += tmpNode.nodeValue.replace(fillCharReg,'').length;\r\n tmpNode = tmpNode.previousSibling;\r\n }\r\n firstIndex += (isStart ? me.startOffset : me.endOffset)// - (fillCharReg.test(node.nodeValue) ? 1 : 0 )\r\n }else{\r\n node = node.childNodes[ isStart ? me.startOffset : me.endOffset];\r\n if(node){\r\n firstIndex = domUtils.getNodeIndex(node,ignoreTxt);\r\n }else{\r\n node = isStart ? me.startContainer : me.endContainer;\r\n var first = node.firstChild;\r\n while(first){\r\n if(domUtils.isFillChar(first)){\r\n first = first.nextSibling;\r\n continue;\r\n }\r\n firstIndex++;\r\n if(first.nodeType == 3){\r\n while( first && first.nodeType == 3){\r\n first = first.nextSibling;\r\n }\r\n }else{\r\n first = first.nextSibling;\r\n }\r\n }\r\n }\r\n }\r\n\r\n }else{\r\n firstIndex = isStart ? domUtils.isFillChar(node) ? 0 : me.startOffset : me.endOffset\r\n }\r\n if(firstIndex < 0){\r\n firstIndex = 0;\r\n }\r\n addrs.push(firstIndex);\r\n return addrs;\r\n }\r\n addr.startAddress = getAddress(true);\r\n if(!ignoreEnd){\r\n addr.endAddress = me.collapsed ? [].concat(addr.startAddress) : getAddress();\r\n }\r\n return addr;\r\n },\r\n\r\n /**\r\n * 保存\r\n * @method createAddress\r\n * @private\r\n * @return { Boolean } 返回开始和结束的位置\r\n * @example\r\n * ```html\r\n * <body>\r\n * <p>\r\n * aaaa\r\n * <em>\r\n * <!-- 选区开始 -->\r\n * bbbb\r\n * <!-- 选区结束 -->\r\n * </em>\r\n * </p>\r\n *\r\n * <script>\r\n * var range = editor.selection.getRange();\r\n * range.moveToAddress({startAddress:[0,1,0,0],endAddress:[0,1,0,4]});\r\n * range.select();\r\n * //output: 'bbbb'\r\n * console.log(editor.selection.getText());\r\n * </script>\r\n * </body>\r\n * ```\r\n */\r\n moveToAddress : function(addr,ignoreEnd){\r\n var me = this;\r\n function getNode(address,isStart){\r\n var tmpNode = me.document.body,\r\n parentNode,offset;\r\n for(var i= 0,ci,l=address.length;i<l;i++){\r\n ci = address[i];\r\n parentNode = tmpNode;\r\n tmpNode = tmpNode.childNodes[ci];\r\n if(!tmpNode){\r\n offset = ci;\r\n break;\r\n }\r\n }\r\n if(isStart){\r\n if(tmpNode){\r\n me.setStartBefore(tmpNode)\r\n }else{\r\n me.setStart(parentNode,offset)\r\n }\r\n }else{\r\n if(tmpNode){\r\n me.setEndBefore(tmpNode)\r\n }else{\r\n me.setEnd(parentNode,offset)\r\n }\r\n }\r\n }\r\n getNode(addr.startAddress,true);\r\n !ignoreEnd && addr.endAddress && getNode(addr.endAddress);\r\n return me;\r\n },\r\n\r\n /**\r\n * 判断给定的Range对象是否和当前Range对象表示的是同一个选区\r\n * @method equals\r\n * @param { UE.dom.Range } 需要判断的Range对象\r\n * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false\r\n */\r\n equals : function(rng){\r\n for(var p in this){\r\n if(this.hasOwnProperty(p)){\r\n if(this[p] !== rng[p])\r\n return false\r\n }\r\n }\r\n return true;\r\n\r\n },\r\n\r\n /**\r\n * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点\r\n * 作为其参数。\r\n * @method traversal\r\n * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * <body>\r\n *\r\n * <!-- 选区开始 -->\r\n * <span></span>\r\n * <a></a>\r\n * <!-- 选区结束 -->\r\n * </body>\r\n *\r\n * <script>\r\n *\r\n * //output: <span></span><a></a>\r\n * console.log( range.cloneContents() );\r\n *\r\n * range.traversal( function ( node ) {\r\n *\r\n * if ( node.nodeType === 1 ) {\r\n * node.className = \"test\";\r\n * }\r\n *\r\n * } );\r\n *\r\n * //output: <span class=\"test\"></span><a class=\"test\"></a>\r\n * console.log( range.cloneContents() );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n\r\n /**\r\n * 遍历range内的节点。\r\n * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点\r\n * 作为其参数。\r\n * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触\r\n * 发doFn函数的执行\r\n * @method traversal\r\n * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数\r\n * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤\r\n * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不\r\n * 会触发doFn。\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:traversal(Function)\r\n * @example\r\n * ```html\r\n *\r\n * <body>\r\n *\r\n * <!-- 选区开始 -->\r\n * <span></span>\r\n * <a></a>\r\n * <!-- 选区结束 -->\r\n * </body>\r\n *\r\n * <script>\r\n *\r\n * //output: <span></span><a></a>\r\n * console.log( range.cloneContents() );\r\n *\r\n * range.traversal( function ( node ) {\r\n *\r\n * node.className = \"test\";\r\n *\r\n * }, function ( node ) {\r\n * return node.nodeType === 1;\r\n * } );\r\n *\r\n * //output: <span class=\"test\"></span><a class=\"test\"></a>\r\n * console.log( range.cloneContents() );\r\n *\r\n * </script>\r\n * ```\r\n */\r\n traversal:function(doFn,filterFn){\r\n if (this.collapsed)\r\n return this;\r\n var bookmark = this.createBookmark(),\r\n end = bookmark.end,\r\n current = domUtils.getNextDomNode(bookmark.start, false, filterFn);\r\n while (current && current !== end && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) {\r\n var tmpNode = domUtils.getNextDomNode(current,false,filterFn);\r\n doFn(current);\r\n current = tmpNode;\r\n }\r\n return this.moveToBookmark(bookmark);\r\n }\r\n };\r\n})();\r\n\r\n// core/Selection.js\r\n/**\r\n * 选集\r\n * @file\r\n * @module UE.dom\r\n * @class Selection\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 选区集合\r\n * @unfile\r\n * @module UE.dom\r\n * @class Selection\r\n */\r\n(function () {\r\n\r\n function getBoundaryInformation( range, start ) {\r\n var getIndex = domUtils.getNodeIndex;\r\n range = range.duplicate();\r\n range.collapse( start );\r\n var parent = range.parentElement();\r\n //如果节点里没有子节点,直接退出\r\n if ( !parent.hasChildNodes() ) {\r\n return {container:parent, offset:0};\r\n }\r\n var siblings = parent.children,\r\n child,\r\n testRange = range.duplicate(),\r\n startIndex = 0, endIndex = siblings.length - 1, index = -1,\r\n distance;\r\n while ( startIndex <= endIndex ) {\r\n index = Math.floor( (startIndex + endIndex) / 2 );\r\n child = siblings[index];\r\n testRange.moveToElementText( child );\r\n var position = testRange.compareEndPoints( 'StartToStart', range );\r\n if ( position > 0 ) {\r\n endIndex = index - 1;\r\n } else if ( position < 0 ) {\r\n startIndex = index + 1;\r\n } else {\r\n //trace:1043\r\n return {container:parent, offset:getIndex( child )};\r\n }\r\n }\r\n if ( index == -1 ) {\r\n testRange.moveToElementText( parent );\r\n testRange.setEndPoint( 'StartToStart', range );\r\n distance = testRange.text.replace( /(\\r\\n|\\r)/g, '\\n' ).length;\r\n siblings = parent.childNodes;\r\n if ( !distance ) {\r\n child = siblings[siblings.length - 1];\r\n return {container:child, offset:child.nodeValue.length};\r\n }\r\n\r\n var i = siblings.length;\r\n while ( distance > 0 ){\r\n distance -= siblings[ --i ].nodeValue.length;\r\n }\r\n return {container:siblings[i], offset:-distance};\r\n }\r\n testRange.collapse( position > 0 );\r\n testRange.setEndPoint( position > 0 ? 'StartToStart' : 'EndToStart', range );\r\n distance = testRange.text.replace( /(\\r\\n|\\r)/g, '\\n' ).length;\r\n if ( !distance ) {\r\n return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] ?\r\n {container:parent, offset:getIndex( child ) + (position > 0 ? 0 : 1)} :\r\n {container:child, offset:position > 0 ? 0 : child.childNodes.length}\r\n }\r\n while ( distance > 0 ) {\r\n try {\r\n var pre = child;\r\n child = child[position > 0 ? 'previousSibling' : 'nextSibling'];\r\n distance -= child.nodeValue.length;\r\n } catch ( e ) {\r\n return {container:parent, offset:getIndex( pre )};\r\n }\r\n }\r\n return {container:child, offset:position > 0 ? -distance : child.nodeValue.length + distance}\r\n }\r\n\r\n /**\r\n * 将ieRange转换为Range对象\r\n * @param {Range} ieRange ieRange对象\r\n * @param {Range} range Range对象\r\n * @return {Range} range 返回转换后的Range对象\r\n */\r\n function transformIERangeToRange( ieRange, range ) {\r\n if ( ieRange.item ) {\r\n range.selectNode( ieRange.item( 0 ) );\r\n } else {\r\n var bi = getBoundaryInformation( ieRange, true );\r\n range.setStart( bi.container, bi.offset );\r\n if ( ieRange.compareEndPoints( 'StartToEnd', ieRange ) != 0 ) {\r\n bi = getBoundaryInformation( ieRange, false );\r\n range.setEnd( bi.container, bi.offset );\r\n }\r\n }\r\n return range;\r\n }\r\n\r\n /**\r\n * 获得ieRange\r\n * @param {Selection} sel Selection对象\r\n * @return {ieRange} 得到ieRange\r\n */\r\n function _getIERange( sel ) {\r\n var ieRange;\r\n //ie下有可能报错\r\n try {\r\n ieRange = sel.getNative().createRange();\r\n } catch ( e ) {\r\n return null;\r\n }\r\n var el = ieRange.item ? ieRange.item( 0 ) : ieRange.parentElement();\r\n if ( ( el.ownerDocument || el ) === sel.document ) {\r\n return ieRange;\r\n }\r\n return null;\r\n }\r\n\r\n var Selection = dom.Selection = function ( doc ) {\r\n var me = this, iframe;\r\n me.document = doc;\r\n if ( browser.ie9below ) {\r\n iframe = domUtils.getWindow( doc ).frameElement;\r\n domUtils.on( iframe, 'beforedeactivate', function () {\r\n me._bakIERange = me.getIERange();\r\n } );\r\n domUtils.on( iframe, 'activate', function () {\r\n try {\r\n if ( !_getIERange( me ) && me._bakIERange ) {\r\n me._bakIERange.select();\r\n }\r\n } catch ( ex ) {\r\n }\r\n me._bakIERange = null;\r\n } );\r\n }\r\n iframe = doc = null;\r\n };\r\n\r\n Selection.prototype = {\r\n\r\n rangeInBody : function(rng,txtRange){\r\n var node = browser.ie9below || txtRange ? rng.item ? rng.item() : rng.parentElement() : rng.startContainer;\r\n\r\n return node === this.document.body || domUtils.inDoc(node,this.document);\r\n },\r\n\r\n /**\r\n * 获取原生seleciton对象\r\n * @method getNative\r\n * @return { Object } 获得selection对象\r\n * @example\r\n * ```javascript\r\n * editor.selection.getNative();\r\n * ```\r\n */\r\n getNative:function () {\r\n var doc = this.document;\r\n try {\r\n return !doc ? null : browser.ie9below ? doc.selection : domUtils.getWindow( doc ).getSelection();\r\n } catch ( e ) {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * 获得ieRange\r\n * @method getIERange\r\n * @return { Object } 返回ie原生的Range\r\n * @example\r\n * ```javascript\r\n * editor.selection.getIERange();\r\n * ```\r\n */\r\n getIERange:function () {\r\n var ieRange = _getIERange( this );\r\n if ( !ieRange ) {\r\n if ( this._bakIERange ) {\r\n return this._bakIERange;\r\n }\r\n }\r\n return ieRange;\r\n },\r\n\r\n /**\r\n * 缓存当前选区的range和选区的开始节点\r\n * @method cache\r\n */\r\n cache:function () {\r\n this.clear();\r\n this._cachedRange = this.getRange();\r\n this._cachedStartElement = this.getStart();\r\n this._cachedStartElementPath = this.getStartElementPath();\r\n },\r\n\r\n /**\r\n * 获取选区开始位置的父节点到body\r\n * @method getStartElementPath\r\n * @return { Array } 返回父节点集合\r\n * @example\r\n * ```javascript\r\n * editor.selection.getStartElementPath();\r\n * ```\r\n */\r\n getStartElementPath:function () {\r\n if ( this._cachedStartElementPath ) {\r\n return this._cachedStartElementPath;\r\n }\r\n var start = this.getStart();\r\n if ( start ) {\r\n return domUtils.findParents( start, true, null, true )\r\n }\r\n return [];\r\n },\r\n\r\n /**\r\n * 清空缓存\r\n * @method clear\r\n */\r\n clear:function () {\r\n this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null;\r\n },\r\n\r\n /**\r\n * 编辑器是否得到了选区\r\n * @method isFocus\r\n */\r\n isFocus:function () {\r\n try {\r\n if(browser.ie9below){\r\n\r\n var nativeRange = _getIERange(this);\r\n return !!(nativeRange && this.rangeInBody(nativeRange));\r\n }else{\r\n return !!this.getNative().rangeCount;\r\n }\r\n } catch ( e ) {\r\n return false;\r\n }\r\n\r\n },\r\n\r\n /**\r\n * 获取选区对应的Range\r\n * @method getRange\r\n * @return { Object } 得到Range对象\r\n * @example\r\n * ```javascript\r\n * editor.selection.getRange();\r\n * ```\r\n */\r\n getRange:function () {\r\n var me = this;\r\n function optimze( range ) {\r\n var child = me.document.body.firstChild,\r\n collapsed = range.collapsed;\r\n while ( child && child.firstChild ) {\r\n range.setStart( child, 0 );\r\n child = child.firstChild;\r\n }\r\n if ( !range.startContainer ) {\r\n range.setStart( me.document.body, 0 )\r\n }\r\n if ( collapsed ) {\r\n range.collapse( true );\r\n }\r\n }\r\n\r\n if ( me._cachedRange != null ) {\r\n return this._cachedRange;\r\n }\r\n var range = new baidu.editor.dom.Range( me.document );\r\n\r\n if ( browser.ie9below ) {\r\n var nativeRange = me.getIERange();\r\n if ( nativeRange ) {\r\n //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置\r\n try{\r\n transformIERangeToRange( nativeRange, range );\r\n }catch(e){\r\n optimze( range );\r\n }\r\n\r\n } else {\r\n optimze( range );\r\n }\r\n } else {\r\n var sel = me.getNative();\r\n if ( sel && sel.rangeCount ) {\r\n var firstRange = sel.getRangeAt( 0 );\r\n var lastRange = sel.getRangeAt( sel.rangeCount - 1 );\r\n range.setStart( firstRange.startContainer, firstRange.startOffset ).setEnd( lastRange.endContainer, lastRange.endOffset );\r\n if ( range.collapsed && domUtils.isBody( range.startContainer ) && !range.startOffset ) {\r\n optimze( range );\r\n }\r\n } else {\r\n //trace:1734 有可能已经不在dom树上了,标识的节点\r\n if ( this._bakRange && domUtils.inDoc( this._bakRange.startContainer, this.document ) ){\r\n return this._bakRange;\r\n }\r\n optimze( range );\r\n }\r\n }\r\n return this._bakRange = range;\r\n },\r\n\r\n /**\r\n * 获取开始元素,用于状态反射\r\n * @method getStart\r\n * @return { Element } 获得开始元素\r\n * @example\r\n * ```javascript\r\n * editor.selection.getStart();\r\n * ```\r\n */\r\n getStart:function () {\r\n if ( this._cachedStartElement ) {\r\n return this._cachedStartElement;\r\n }\r\n var range = browser.ie9below ? this.getIERange() : this.getRange(),\r\n tmpRange,\r\n start, tmp, parent;\r\n if ( browser.ie9below ) {\r\n if ( !range ) {\r\n //todo 给第一个值可能会有问题\r\n return this.document.body.firstChild;\r\n }\r\n //control元素\r\n if ( range.item ){\r\n return range.item( 0 );\r\n }\r\n tmpRange = range.duplicate();\r\n //修正ie下<b>x</b>[xx] 闭合后 <b>x|</b>xx\r\n tmpRange.text.length > 0 && tmpRange.moveStart( 'character', 1 );\r\n tmpRange.collapse( 1 );\r\n start = tmpRange.parentElement();\r\n parent = tmp = range.parentElement();\r\n while ( tmp = tmp.parentNode ) {\r\n if ( tmp == start ) {\r\n start = parent;\r\n break;\r\n }\r\n }\r\n } else {\r\n range.shrinkBoundary();\r\n start = range.startContainer;\r\n if ( start.nodeType == 1 && start.hasChildNodes() ){\r\n start = start.childNodes[Math.min( start.childNodes.length - 1, range.startOffset )];\r\n }\r\n if ( start.nodeType == 3 ){\r\n return start.parentNode;\r\n }\r\n }\r\n return start;\r\n },\r\n\r\n /**\r\n * 得到选区中的文本\r\n * @method getText\r\n * @return { String } 选区中包含的文本\r\n * @example\r\n * ```javascript\r\n * editor.selection.getText();\r\n * ```\r\n */\r\n getText:function () {\r\n var nativeSel, nativeRange;\r\n if ( this.isFocus() && (nativeSel = this.getNative()) ) {\r\n nativeRange = browser.ie9below ? nativeSel.createRange() : nativeSel.getRangeAt( 0 );\r\n return browser.ie9below ? nativeRange.text : nativeRange.toString();\r\n }\r\n return '';\r\n },\r\n\r\n /**\r\n * 清除选区\r\n * @method clearRange\r\n * @example\r\n * ```javascript\r\n * editor.selection.clearRange();\r\n * ```\r\n */\r\n clearRange : function(){\r\n this.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n }\r\n };\r\n})();\r\n\r\n// core/Editor.js\r\n/**\r\n * 编辑器主类,包含编辑器提供的大部分公用接口\r\n * @file\r\n * @module UE\r\n * @class Editor\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n/**\r\n * UEditor的核心类,为用户提供与编辑器交互的接口。\r\n * @unfile\r\n * @module UE\r\n * @class Editor\r\n */\r\n\r\n(function () {\r\n var uid = 0, _selectionChangeTimer;\r\n\r\n /**\r\n * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面\r\n * @private\r\n * @method setValue\r\n * @param { UE.Editor } editor 编辑器事例\r\n */\r\n function setValue(form, editor) {\r\n var textarea;\r\n if (editor.textarea) {\r\n if (utils.isString(editor.textarea)) {\r\n for (var i = 0, ti, tis = domUtils.getElementsByTagName(form, 'textarea'); ti = tis[i++];) {\r\n if (ti.id == 'ueditor_textarea_' + editor.options.textarea) {\r\n textarea = ti;\r\n break;\r\n }\r\n }\r\n } else {\r\n textarea = editor.textarea;\r\n }\r\n }\r\n if (!textarea) {\r\n form.appendChild(textarea = domUtils.createElement(document, 'textarea', {\r\n 'name': editor.options.textarea,\r\n 'id': 'ueditor_textarea_' + editor.options.textarea,\r\n 'style': \"display:none\"\r\n }));\r\n //不要产生多个textarea\r\n editor.textarea = textarea;\r\n }\r\n !textarea.getAttribute('name') && textarea.setAttribute('name', editor.options.textarea );\r\n textarea.value = editor.hasContents() ?\r\n (editor.options.allHtmlEnabled ? editor.getAllHtml() : editor.getContent(null, null, true)) :\r\n ''\r\n }\r\n function loadPlugins(me){\r\n //初始化插件\r\n for (var pi in UE.plugins) {\r\n UE.plugins[pi].call(me);\r\n }\r\n\r\n }\r\n function checkCurLang(I18N){\r\n for(var lang in I18N){\r\n return lang\r\n }\r\n }\r\n\r\n function langReadied(me){\r\n me.langIsReady = true;\r\n\r\n me.fireEvent(\"langReady\");\r\n }\r\n\r\n /**\r\n * 编辑器准备就绪后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event ready\r\n * @remind render方法执行完成之后,会触发该事件\r\n * @remind\r\n * @example\r\n * ```javascript\r\n * editor.addListener( 'ready', function( editor ) {\r\n * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点\r\n * } );\r\n * ```\r\n */\r\n /**\r\n * 执行destroy方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event destroy\r\n * @see UE.Editor:destroy()\r\n */\r\n /**\r\n * 执行reset方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event reset\r\n * @see UE.Editor:reset()\r\n */\r\n /**\r\n * 执行focus方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event focus\r\n * @see UE.Editor:focus(Boolean)\r\n */\r\n /**\r\n * 语言加载完成会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event langReady\r\n */\r\n /**\r\n * 运行命令之后会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event beforeExecCommand\r\n */\r\n /**\r\n * 运行命令之后会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event afterExecCommand\r\n */\r\n /**\r\n * 运行命令之前会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event firstBeforeExecCommand\r\n */\r\n /**\r\n * 在getContent方法执行之前会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeGetContent\r\n * @see UE.Editor:getContent()\r\n */\r\n /**\r\n * 在getContent方法执行之后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterGetContent\r\n * @see UE.Editor:getContent()\r\n */\r\n /**\r\n * 在getAllHtml方法执行时会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event getAllHtml\r\n * @see UE.Editor:getAllHtml()\r\n */\r\n /**\r\n * 在setContent方法执行之前会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeSetContent\r\n * @see UE.Editor:setContent(String)\r\n */\r\n /**\r\n * 在setContent方法执行之后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterSetContent\r\n * @see UE.Editor:setContent(String)\r\n */\r\n /**\r\n * 每当编辑器内部选区发生改变时,将触发该事件\r\n * @event selectionchange\r\n * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理\r\n * @example\r\n * ```javascript\r\n * editor.addListener( 'selectionchange', function( editor ) {\r\n * console.log('选区发生改变');\r\n * }\r\n */\r\n /**\r\n * 在所有selectionchange的监听函数执行之前,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeSelectionChange\r\n * @see UE.Editor:selectionchange\r\n */\r\n /**\r\n * 在所有selectionchange的监听函数执行完之后,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterSelectionChange\r\n * @see UE.Editor:selectionchange\r\n */\r\n /**\r\n * 编辑器内容发生改变时会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event contentChange\r\n */\r\n\r\n\r\n /**\r\n * 以默认参数构建一个编辑器实例\r\n * @constructor\r\n * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面\r\n * @example\r\n * ```javascript\r\n * var editor = new UE.Editor();\r\n * editor.execCommand('blod');\r\n * ```\r\n * @see UE.Config\r\n */\r\n\r\n /**\r\n * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。\r\n * @constructor\r\n * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面\r\n * @param { Object } setting 创建编辑器的参数\r\n * @example\r\n * ```javascript\r\n * var editor = new UE.Editor();\r\n * editor.execCommand('blod');\r\n * ```\r\n * @see UE.Config\r\n */\r\n var Editor = UE.Editor = function (options) {\r\n var me = this;\r\n me.uid = uid++;\r\n EventBase.call(me);\r\n me.commands = {};\r\n me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true);\r\n me.shortcutkeys = {};\r\n me.inputRules = [];\r\n me.outputRules = [];\r\n //设置默认的常用属性\r\n me.setOpt(Editor.defaultOptions(me));\r\n\r\n /* 尝试异步加载后台配置 */\r\n me.loadServerConfig();\r\n\r\n if(!utils.isEmptyObject(UE.I18N)){\r\n //修改默认的语言类型\r\n me.options.lang = checkCurLang(UE.I18N);\r\n UE.plugin.load(me);\r\n langReadied(me);\r\n\r\n }else{\r\n utils.loadFile(document, {\r\n src: me.options.langPath + me.options.lang + \"/\" + me.options.lang + \".js\",\r\n tag: \"script\",\r\n type: \"text/javascript\",\r\n defer: \"defer\"\r\n }, function () {\r\n UE.plugin.load(me);\r\n langReadied(me);\r\n });\r\n }\r\n\r\n UE.instants['ueditorInstant' + me.uid] = me;\r\n };\r\n Editor.prototype = {\r\n registerCommand : function(name,obj){\r\n this.commands[name] = obj;\r\n },\r\n /**\r\n * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的\r\n * @method ready\r\n * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会\r\n * 立即触发该回调。\r\n * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入\r\n * @example\r\n * ```javascript\r\n * editor.ready( function( editor ) {\r\n * editor.setContent('初始化完毕');\r\n * } );\r\n * ```\r\n * @see UE.Editor.event:ready\r\n */\r\n ready: function (fn) {\r\n var me = this;\r\n if (fn) {\r\n me.isReady ? fn.apply(me) : me.addListener('ready', fn);\r\n }\r\n },\r\n\r\n /**\r\n * 该方法是提供给插件里面使用,设置配置项默认值\r\n * @method setOpt\r\n * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置\r\n * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。\r\n * @param { String } key 编辑器的可接受的选项名称\r\n * @param { * } val 该选项可接受的值\r\n * @example\r\n * ```javascript\r\n * editor.setOpt( 'initContent', '欢迎使用编辑器' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值\r\n * @method setOpt\r\n * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置\r\n * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。\r\n * @param { Object } options 将要设置的选项的键值对对象\r\n * @example\r\n * ```javascript\r\n * editor.setOpt( {\r\n * 'initContent': '欢迎使用编辑器'\r\n * } );\r\n * ```\r\n */\r\n setOpt: function (key, val) {\r\n var obj = {};\r\n if (utils.isString(key)) {\r\n obj[key] = val\r\n } else {\r\n obj = key;\r\n }\r\n utils.extend(this.options, obj, true);\r\n },\r\n getOpt:function(key){\r\n return this.options[key]\r\n },\r\n /**\r\n * 销毁编辑器实例,使用textarea代替\r\n * @method destroy\r\n * @example\r\n * ```javascript\r\n * editor.destroy();\r\n * ```\r\n */\r\n destroy: function () {\r\n\r\n var me = this;\r\n me.fireEvent('destroy');\r\n var container = me.container.parentNode;\r\n var textarea = me.textarea;\r\n if (!textarea) {\r\n textarea = document.createElement('textarea');\r\n container.parentNode.insertBefore(textarea, container);\r\n } else {\r\n textarea.style.display = ''\r\n }\r\n\r\n textarea.style.width = me.iframe.offsetWidth + 'px';\r\n textarea.style.height = me.iframe.offsetHeight + 'px';\r\n textarea.value = me.getContent();\r\n textarea.id = me.key;\r\n container.innerHTML = '';\r\n domUtils.remove(container);\r\n var key = me.key;\r\n //trace:2004\r\n for (var p in me) {\r\n if (me.hasOwnProperty(p)) {\r\n delete this[p];\r\n }\r\n }\r\n UE.delEditor(key);\r\n },\r\n\r\n /**\r\n * 渲染编辑器的DOM到指定容器\r\n * @method render\r\n * @param { String } containerId 指定一个容器ID\r\n * @remind 执行该方法,会触发ready事件\r\n * @warning 必须且只能调用一次\r\n */\r\n\r\n /**\r\n * 渲染编辑器的DOM到指定容器\r\n * @method render\r\n * @param { Element } containerDom 直接指定容器对象\r\n * @remind 执行该方法,会触发ready事件\r\n * @warning 必须且只能调用一次\r\n */\r\n render: function (container) {\r\n var me = this,\r\n options = me.options,\r\n getStyleValue=function(attr){\r\n return parseInt(domUtils.getComputedStyle(container,attr));\r\n };\r\n if (utils.isString(container)) {\r\n container = document.getElementById(container);\r\n }\r\n if (container) {\r\n if(options.initialFrameWidth){\r\n options.minFrameWidth = options.initialFrameWidth\r\n }else{\r\n options.minFrameWidth = options.initialFrameWidth = container.offsetWidth;\r\n }\r\n if(options.initialFrameHeight){\r\n options.minFrameHeight = options.initialFrameHeight\r\n }else{\r\n options.initialFrameHeight = options.minFrameHeight = container.offsetHeight;\r\n }\r\n\r\n container.style.width = /%$/.test(options.initialFrameWidth) ? '100%' : options.initialFrameWidth-\r\n getStyleValue(\"padding-left\")- getStyleValue(\"padding-right\") +'px';\r\n container.style.height = /%$/.test(options.initialFrameHeight) ? '100%' : options.initialFrameHeight -\r\n getStyleValue(\"padding-top\")- getStyleValue(\"padding-bottom\") +'px';\r\n\r\n container.style.zIndex = options.zIndex;\r\n\r\n var html = ( ie && browser.version < 9 ? '' : '<!DOCTYPE html>') +\r\n '<html xmlns=\\'http://www.w3.org/1999/xhtml\\' class=\\'view\\' ><head>' +\r\n '<style type=\\'text/css\\'>' +\r\n //设置四周的留边\r\n '.view{padding:0;word-wrap:break-word;cursor:text;height:90%;}\\n' +\r\n //设置默认字体和字号\r\n //font-family不能呢随便改,在safari下fillchar会有解析问题\r\n 'body{margin:8px;font-family:sans-serif;font-size:16px;}' +\r\n //设置段落间距\r\n 'p{margin:5px 0;}</style>' +\r\n ( options.iframeCssUrl ? '<link rel=\\'stylesheet\\' type=\\'text/css\\' href=\\'' + utils.unhtml(options.iframeCssUrl) + '\\'/>' : '' ) +\r\n (options.initialStyle ? '<style>' + options.initialStyle + '</style>' : '') +\r\n '</head><body class=\\'view\\' ></body>' +\r\n '<script type=\\'text/javascript\\' ' + (ie ? 'defer=\\'defer\\'' : '' ) +' id=\\'_initialScript\\'>' +\r\n 'setTimeout(function(){editor = window.parent.UE.instants[\\'ueditorInstant' + me.uid + '\\'];editor._setup(document);},0);' +\r\n 'var _tmpScript = document.getElementById(\\'_initialScript\\');_tmpScript.parentNode.removeChild(_tmpScript);</script></html>';\r\n container.appendChild(domUtils.createElement(document, 'iframe', {\r\n id: 'ueditor_' + me.uid,\r\n width: \"100%\",\r\n height: \"100%\",\r\n frameborder: \"0\",\r\n //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条\r\n// scrolling :'no',\r\n src: 'javascript:void(function(){document.open();' + (options.customDomain && document.domain != location.hostname ? 'document.domain=\"' + document.domain + '\";' : '') +\r\n 'document.write(\"' + html + '\");document.close();}())'\r\n }));\r\n container.style.overflow = 'hidden';\r\n //解决如果是给定的百分比,会导致高度算不对的问题\r\n setTimeout(function(){\r\n if( /%$/.test(options.initialFrameWidth)){\r\n options.minFrameWidth = options.initialFrameWidth = container.offsetWidth;\r\n //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化\r\n// container.style.width = options.initialFrameWidth + 'px';\r\n }\r\n if(/%$/.test(options.initialFrameHeight)){\r\n options.minFrameHeight = options.initialFrameHeight = container.offsetHeight;\r\n container.style.height = options.initialFrameHeight + 'px';\r\n }\r\n })\r\n }\r\n },\r\n\r\n /**\r\n * 编辑器初始化\r\n * @method _setup\r\n * @private\r\n * @param { Element } doc 编辑器Iframe中的文档对象\r\n */\r\n _setup: function (doc) {\r\n\r\n var me = this,\r\n options = me.options;\r\n if (ie) {\r\n doc.body.disabled = true;\r\n doc.body.contentEditable = true;\r\n doc.body.disabled = false;\r\n } else {\r\n doc.body.contentEditable = true;\r\n }\r\n doc.body.spellcheck = false;\r\n me.document = doc;\r\n me.window = doc.defaultView || doc.parentWindow;\r\n me.iframe = me.window.frameElement;\r\n me.body = doc.body;\r\n me.selection = new dom.Selection(doc);\r\n //gecko初始化就能得到range,无法判断isFocus了\r\n var geckoSel;\r\n if (browser.gecko && (geckoSel = this.selection.getNative())) {\r\n geckoSel.removeAllRanges();\r\n }\r\n this._initEvents();\r\n //为form提交提供一个隐藏的textarea\r\n for (var form = this.iframe.parentNode; !domUtils.isBody(form); form = form.parentNode) {\r\n if (form.tagName == 'FORM') {\r\n me.form = form;\r\n if(me.options.autoSyncData){\r\n domUtils.on(me.window,'blur',function(){\r\n setValue(form,me);\r\n });\r\n }else{\r\n domUtils.on(form, 'submit', function () {\r\n setValue(this, me);\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n if (options.initialContent) {\r\n if (options.autoClearinitialContent) {\r\n var oldExecCommand = me.execCommand;\r\n me.execCommand = function () {\r\n me.fireEvent('firstBeforeExecCommand');\r\n return oldExecCommand.apply(me, arguments);\r\n };\r\n this._setDefaultContent(options.initialContent);\r\n } else\r\n this.setContent(options.initialContent, false, true);\r\n }\r\n\r\n //编辑器不能为空内容\r\n\r\n if (domUtils.isEmptyNode(me.body)) {\r\n me.body.innerHTML = '<p>' + (browser.ie ? '' : '<br/>') + '</p>';\r\n }\r\n //如果要求focus, 就把光标定位到内容开始\r\n if (options.focus) {\r\n setTimeout(function () {\r\n me.focus(me.options.focusInEnd);\r\n //如果自动清除开着,就不需要做selectionchange;\r\n !me.options.autoClearinitialContent && me._selectionChange();\r\n }, 0);\r\n }\r\n if (!me.container) {\r\n me.container = this.iframe.parentNode;\r\n }\r\n if (options.fullscreen && me.ui) {\r\n me.ui.setFullScreen(true);\r\n }\r\n\r\n try {\r\n me.document.execCommand('2D-position', false, false);\r\n } catch (e) {\r\n }\r\n try {\r\n me.document.execCommand('enableInlineTableEditing', false, false);\r\n } catch (e) {\r\n }\r\n try {\r\n me.document.execCommand('enableObjectResizing', false, false);\r\n } catch (e) {\r\n }\r\n\r\n //挂接快捷键\r\n me._bindshortcutKeys();\r\n me.isReady = 1;\r\n me.fireEvent('ready');\r\n options.onready && options.onready.call(me);\r\n if (!browser.ie9below) {\r\n domUtils.on(me.window, ['blur', 'focus'], function (e) {\r\n //chrome下会出现alt+tab切换时,导致选区位置不对\r\n if (e.type == 'blur') {\r\n me._bakRange = me.selection.getRange();\r\n try {\r\n me._bakNativeRange = me.selection.getNative().getRangeAt(0);\r\n me.selection.getNative().removeAllRanges();\r\n } catch (e) {\r\n me._bakNativeRange = null;\r\n }\r\n\r\n } else {\r\n try {\r\n me._bakRange && me._bakRange.select();\r\n } catch (e) {\r\n }\r\n }\r\n });\r\n }\r\n //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点\r\n if (browser.gecko && browser.version <= 10902) {\r\n //修复ff3.6初始化进来,不能点击获得焦点\r\n me.body.contentEditable = false;\r\n setTimeout(function () {\r\n me.body.contentEditable = true;\r\n }, 100);\r\n setInterval(function () {\r\n me.body.style.height = me.iframe.offsetHeight - 20 + 'px'\r\n }, 100)\r\n }\r\n\r\n !options.isShow && me.setHide();\r\n options.readonly && me.setDisabled();\r\n },\r\n\r\n /**\r\n * 同步数据到编辑器所在的form\r\n * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况\r\n * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项\r\n * @method sync\r\n * @example\r\n * ```javascript\r\n * editor.sync();\r\n * form.sumbit(); //form变量已经指向了form元素\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备\r\n * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项\r\n * @method sync\r\n * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下\r\n */\r\n sync: function (formId) {\r\n var me = this,\r\n form = formId ? document.getElementById(formId) :\r\n domUtils.findParent(me.iframe.parentNode, function (node) {\r\n return node.tagName == 'FORM'\r\n }, true);\r\n form && setValue(form, me);\r\n },\r\n\r\n /**\r\n * 设置编辑器高度\r\n * @method setHeight\r\n * @remind 当配置项autoHeightEnabled为真时,该方法无效\r\n * @param { Number } number 设置的高度值,纯数值,不带单位\r\n * @example\r\n * ```javascript\r\n * editor.setHeight(number);\r\n * ```\r\n */\r\n setHeight: function (height,notSetHeight) {\r\n if (height !== parseInt(this.iframe.parentNode.style.height)) {\r\n this.iframe.parentNode.style.height = height + 'px';\r\n }\r\n !notSetHeight && (this.options.minFrameHeight = this.options.initialFrameHeight = height);\r\n this.body.style.height = height + 'px';\r\n !notSetHeight && this.trigger('setHeight')\r\n },\r\n\r\n /**\r\n * 为编辑器的编辑命令提供快捷键\r\n * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口\r\n * @method addshortcutkey\r\n * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔\r\n * @example\r\n * ```javascript\r\n * editor.addshortcutkey({\r\n * \"Bold\" : \"ctrl+66\",//^B\r\n * \"Italic\" : \"ctrl+73\", //^I\r\n * });\r\n * ```\r\n */\r\n /**\r\n * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口\r\n * @method addshortcutkey\r\n * @param { String } cmd 触发快捷键时,响应的命令\r\n * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔\r\n * @example\r\n * ```javascript\r\n * editor.addshortcutkey(\"Underline\", \"ctrl+85\"); //^U\r\n * ```\r\n */\r\n addshortcutkey: function (cmd, keys) {\r\n var obj = {};\r\n if (keys) {\r\n obj[cmd] = keys\r\n } else {\r\n obj = cmd;\r\n }\r\n utils.extend(this.shortcutkeys, obj)\r\n },\r\n\r\n /**\r\n * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令\r\n * @method _bindshortcutKeys\r\n * @private\r\n */\r\n _bindshortcutKeys: function () {\r\n var me = this, shortcutkeys = this.shortcutkeys;\r\n me.addListener('keydown', function (type, e) {\r\n var keyCode = e.keyCode || e.which;\r\n for (var i in shortcutkeys) {\r\n var tmp = shortcutkeys[i].split(',');\r\n for (var t = 0, ti; ti = tmp[t++];) {\r\n ti = ti.split(':');\r\n var key = ti[0], param = ti[1];\r\n if (/^(ctrl)(\\+shift)?\\+(\\d+)$/.test(key.toLowerCase()) || /^(\\d+)$/.test(key)) {\r\n if (( (RegExp.$1 == 'ctrl' ? (e.ctrlKey || e.metaKey) : 0)\r\n && (RegExp.$2 != \"\" ? e[RegExp.$2.slice(1) + \"Key\"] : 1)\r\n && keyCode == RegExp.$3\r\n ) ||\r\n keyCode == RegExp.$1\r\n ) {\r\n if (me.queryCommandState(i,param) != -1)\r\n me.execCommand(i, param);\r\n domUtils.preventDefault(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * 获取编辑器的内容\r\n * @method getContent\r\n * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:<p>1<strong>2<em>34</em>5</strong>6</p>\r\n * var content = editor.getContent(); //返回值:<p>1<strong>2<em>34</em>5</strong>6</p>\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则\r\n * @method getContent\r\n * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值,\r\n * 代表当前编辑器的内容是否空,\r\n * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回\r\n * 经过内置过滤规则处理后的内容。\r\n * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。\r\n * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @return { String } 编辑器的内容字符串\r\n * @example\r\n * ```javascript\r\n * // editor 是一个编辑器的实例\r\n * var content = editor.getContent( function ( editor ) {\r\n * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串\r\n * } );\r\n * ```\r\n */\r\n getContent: function (cmd, fn,notSetCursor,ignoreBlank,formatter) {\r\n var me = this;\r\n if (cmd && utils.isFunction(cmd)) {\r\n fn = cmd;\r\n cmd = '';\r\n }\r\n if (fn ? !fn() : !this.hasContents()) {\r\n return '';\r\n }\r\n me.fireEvent('beforegetcontent');\r\n var root = UE.htmlparser(me.body.innerHTML,ignoreBlank);\r\n me.filterOutputRule(root);\r\n me.fireEvent('aftergetcontent', cmd,root);\r\n return root.toHtml(formatter);\r\n },\r\n\r\n /**\r\n * 取得完整的html代码,可以直接显示成完整的html文档\r\n * @method getAllHtml\r\n * @return { String } 编辑器的内容html文档字符串\r\n * @eaxmple\r\n * ```javascript\r\n * editor.getAllHtml(); //返回格式大致是: <html><head>...</head><body>...</body></html>\r\n * ```\r\n */\r\n getAllHtml: function () {\r\n var me = this,\r\n headHtml = [],\r\n html = '';\r\n me.fireEvent('getAllHtml', headHtml);\r\n if (browser.ie && browser.version > 8) {\r\n var headHtmlForIE9 = '';\r\n utils.each(me.document.styleSheets, function (si) {\r\n headHtmlForIE9 += ( si.href ? '<link rel=\"stylesheet\" type=\"text/css\" href=\"' + si.href + '\" />' : '<style>' + si.cssText + '</style>');\r\n });\r\n utils.each(me.document.getElementsByTagName('script'), function (si) {\r\n headHtmlForIE9 += si.outerHTML;\r\n });\r\n\r\n }\r\n return '<html><head>' + (me.options.charset ? '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=' + me.options.charset + '\"/>' : '')\r\n + (headHtmlForIE9 || me.document.getElementsByTagName('head')[0].innerHTML) + headHtml.join('\\n') + '</head>'\r\n + '<body ' + (ie && browser.version < 9 ? 'class=\"view\"' : '') + '>' + me.getContent(null, null, true) + '</body></html>';\r\n },\r\n\r\n /**\r\n * 得到编辑器的纯文本内容,但会保留段落格式\r\n * @method getPlainTxt\r\n * @return { String } 编辑器带段落格式的纯文本内容字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:<p><strong>1</strong></p><p><strong>2</strong></p>\r\n * console.log(editor.getPlainTxt()); //输出:\"1\\n2\\n\r\n * ```\r\n */\r\n getPlainTxt: function () {\r\n var reg = new RegExp(domUtils.fillChar, 'g'),\r\n html = this.body.innerHTML.replace(/[\\n\\r]/g, '');//ie要先去了\\n在处理\r\n html = html.replace(/<(p|div)[^>]*>(<br\\/?>| )<\\/\\1>/gi, '\\n')\r\n .replace(/<br\\/?>/gi, '\\n')\r\n .replace(/<[^>/]+>/g, '')\r\n .replace(/(\\n)?<\\/([^>]+)>/g, function (a, b, c) {\r\n return dtd.$block[c] ? '\\n' : b ? b : '';\r\n });\r\n //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0\r\n return html.replace(reg, '').replace(/\\u00a0/g, ' ').replace(/ /g, ' ');\r\n },\r\n\r\n /**\r\n * 获取编辑器中的纯文本内容,没有段落格式\r\n * @method getContentTxt\r\n * @return { String } 编辑器不带段落格式的纯文本内容字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:<p><strong>1</strong></p><p><strong>2</strong></p>\r\n * console.log(editor.getPlainTxt()); //输出:\"12\r\n * ```\r\n */\r\n getContentTxt: function () {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0\r\n return this.body[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').replace(/\\u00a0/g, ' ');\r\n },\r\n\r\n /**\r\n * 设置编辑器的内容,可修改编辑器当前的html内容\r\n * @method setContent\r\n * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @warning 该方法会触发selectionchange事件\r\n * @param { String } html 要插入的html内容\r\n * @example\r\n * ```javascript\r\n * editor.getContent('<p>test</p>');\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置编辑器的内容,可修改编辑器当前的html内容\r\n * @method setContent\r\n * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @warning 该方法会触发selectionchange事件\r\n * @param { String } html 要插入的html内容\r\n * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入\r\n * @example\r\n * ```javascript\r\n * //假设设置前的编辑器内容是 <p>old text</p>\r\n * editor.setContent('<p>new text</p>', true); //插入的结果是<p>old text</p><p>new text</p>\r\n * ```\r\n */\r\n setContent: function (html, isAppendTo, notFireSelectionchange) {\r\n var me = this;\r\n\r\n me.fireEvent('beforesetcontent', html);\r\n var root = UE.htmlparser(html);\r\n me.filterInputRule(root);\r\n html = root.toHtml();\r\n\r\n me.body.innerHTML = (isAppendTo ? me.body.innerHTML : '') + html;\r\n\r\n\r\n function isCdataDiv(node){\r\n return node.tagName == 'DIV' && node.getAttribute('cdata_tag');\r\n }\r\n //给文本或者inline节点套p标签\r\n if (me.options.enterTag == 'p') {\r\n\r\n var child = this.body.firstChild, tmpNode;\r\n if (!child || child.nodeType == 1 &&\r\n (dtd.$cdata[child.tagName] || isCdataDiv(child) ||\r\n domUtils.isCustomeNode(child)\r\n )\r\n && child === this.body.lastChild) {\r\n this.body.innerHTML = '<p>' + (browser.ie ? ' ' : '<br/>') + '</p>' + this.body.innerHTML;\r\n\r\n } else {\r\n var p = me.document.createElement('p');\r\n while (child) {\r\n while (child && (child.nodeType == 3 || child.nodeType == 1 && dtd.p[child.tagName] && !dtd.$cdata[child.tagName])) {\r\n tmpNode = child.nextSibling;\r\n p.appendChild(child);\r\n child = tmpNode;\r\n }\r\n if (p.firstChild) {\r\n if (!child) {\r\n me.body.appendChild(p);\r\n break;\r\n } else {\r\n child.parentNode.insertBefore(p, child);\r\n p = me.document.createElement('p');\r\n }\r\n }\r\n child = child.nextSibling;\r\n }\r\n }\r\n }\r\n me.fireEvent('aftersetcontent');\r\n me.fireEvent('contentchange');\r\n\r\n !notFireSelectionchange && me._selectionChange();\r\n //清除保存的选区\r\n me._bakRange = me._bakIERange = me._bakNativeRange = null;\r\n //trace:1742 setContent后gecko能得到焦点问题\r\n var geckoSel;\r\n if (browser.gecko && (geckoSel = this.selection.getNative())) {\r\n geckoSel.removeAllRanges();\r\n }\r\n if(me.options.autoSyncData){\r\n me.form && setValue(me.form,me);\r\n }\r\n },\r\n\r\n /**\r\n * 让编辑器获得焦点,默认focus到编辑器头部\r\n * @method focus\r\n * @example\r\n * ```javascript\r\n * editor.focus()\r\n * ```\r\n */\r\n\r\n /**\r\n * 让编辑器获得焦点,toEnd确定focus位置\r\n * @method focus\r\n * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部\r\n * @example\r\n * ```javascript\r\n * editor.focus(true)\r\n * ```\r\n */\r\n focus: function (toEnd) {\r\n try {\r\n var me = this,\r\n rng = me.selection.getRange();\r\n if (toEnd) {\r\n var node = me.body.lastChild;\r\n if(node && node.nodeType == 1 && !dtd.$empty[node.tagName]){\r\n if(domUtils.isEmptyBlock(node)){\r\n rng.setStartAtFirst(node)\r\n }else{\r\n rng.setStartAtLast(node)\r\n }\r\n rng.collapse(true);\r\n }\r\n rng.setCursor(true);\r\n } else {\r\n if(!rng.collapsed && domUtils.isBody(rng.startContainer) && rng.startOffset == 0){\r\n\r\n var node = me.body.firstChild;\r\n if(node && node.nodeType == 1 && !dtd.$empty[node.tagName]){\r\n rng.setStartAtFirst(node).collapse(true);\r\n }\r\n }\r\n\r\n rng.select(true);\r\n\r\n }\r\n this.fireEvent('focus selectionchange');\r\n } catch (e) {\r\n }\r\n\r\n },\r\n isFocus:function(){\r\n return this.selection.isFocus();\r\n },\r\n blur:function(){\r\n var sel = this.selection.getNative();\r\n if(sel.empty && browser.ie){\r\n var nativeRng = document.body.createTextRange();\r\n nativeRng.moveToElementText(document.body);\r\n nativeRng.collapse(true);\r\n nativeRng.select();\r\n sel.empty()\r\n }else{\r\n sel.removeAllRanges()\r\n }\r\n\r\n //this.fireEvent('blur selectionchange');\r\n },\r\n /**\r\n * 初始化UE事件及部分事件代理\r\n * @method _initEvents\r\n * @private\r\n */\r\n _initEvents: function () {\r\n var me = this,\r\n doc = me.document,\r\n win = me.window;\r\n me._proxyDomEvent = utils.bind(me._proxyDomEvent, me);\r\n domUtils.on(doc, ['click', 'contextmenu', 'mousedown', 'keydown', 'keyup', 'keypress', 'mouseup', 'mouseover', 'mouseout', 'selectstart'], me._proxyDomEvent);\r\n domUtils.on(win, ['focus', 'blur'], me._proxyDomEvent);\r\n domUtils.on(me.body,'drop',function(e){\r\n //阻止ff下默认的弹出新页面打开图片\r\n if(browser.gecko && e.stopPropagation) { e.stopPropagation(); }\r\n me.fireEvent('contentchange')\r\n });\r\n domUtils.on(doc, ['mouseup', 'keydown'], function (evt) {\r\n //特殊键不触发selectionchange\r\n if (evt.type == 'keydown' && (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey)) {\r\n return;\r\n }\r\n if (evt.button == 2)return;\r\n me._selectionChange(250, evt);\r\n });\r\n },\r\n /**\r\n * 触发事件代理\r\n * @method _proxyDomEvent\r\n * @private\r\n * @return { * } fireEvent的返回值\r\n * @see UE.EventBase:fireEvent(String)\r\n */\r\n _proxyDomEvent: function (evt) {\r\n if(this.fireEvent('before' + evt.type.replace(/^on/, '').toLowerCase()) === false){\r\n return false;\r\n }\r\n if(this.fireEvent(evt.type.replace(/^on/, ''), evt) === false){\r\n return false;\r\n }\r\n return this.fireEvent('after' + evt.type.replace(/^on/, '').toLowerCase())\r\n },\r\n /**\r\n * 变化选区\r\n * @method _selectionChange\r\n * @private\r\n */\r\n _selectionChange: function (delay, evt) {\r\n var me = this;\r\n //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1)\r\n// if ( !me.selection.isFocus() ){\r\n// return;\r\n// }\r\n\r\n\r\n var hackForMouseUp = false;\r\n var mouseX, mouseY;\r\n if (browser.ie && browser.version < 9 && evt && evt.type == 'mouseup') {\r\n var range = this.selection.getRange();\r\n if (!range.collapsed) {\r\n hackForMouseUp = true;\r\n mouseX = evt.clientX;\r\n mouseY = evt.clientY;\r\n }\r\n }\r\n clearTimeout(_selectionChangeTimer);\r\n _selectionChangeTimer = setTimeout(function () {\r\n if (!me.selection || !me.selection.getNative()) {\r\n return;\r\n }\r\n //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值.\r\n //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响\r\n var ieRange;\r\n if (hackForMouseUp && me.selection.getNative().type == 'None') {\r\n ieRange = me.document.body.createTextRange();\r\n try {\r\n ieRange.moveToPoint(mouseX, mouseY);\r\n } catch (ex) {\r\n ieRange = null;\r\n }\r\n }\r\n var bakGetIERange;\r\n if (ieRange) {\r\n bakGetIERange = me.selection.getIERange;\r\n me.selection.getIERange = function () {\r\n return ieRange;\r\n };\r\n }\r\n me.selection.cache();\r\n if (bakGetIERange) {\r\n me.selection.getIERange = bakGetIERange;\r\n }\r\n if (me.selection._cachedRange && me.selection._cachedStartElement) {\r\n me.fireEvent('beforeselectionchange');\r\n // 第二个参数causeByUi为true代表由用户交互造成的selectionchange.\r\n me.fireEvent('selectionchange', !!evt);\r\n me.fireEvent('afterselectionchange');\r\n me.selection.clear();\r\n }\r\n }, delay || 50);\r\n },\r\n\r\n /**\r\n * 执行编辑命令\r\n * @method _callCmdFn\r\n * @private\r\n * @param { String } fnName 函数名称\r\n * @param { * } args 传给命令函数的参数\r\n * @return { * } 返回命令函数运行的返回值\r\n */\r\n _callCmdFn: function (fnName, args) {\r\n var cmdName = args[0].toLowerCase(),\r\n cmd, cmdFn;\r\n cmd = this.commands[cmdName] || UE.commands[cmdName];\r\n cmdFn = cmd && cmd[fnName];\r\n //没有querycommandstate或者没有command的都默认返回0\r\n if ((!cmd || !cmdFn) && fnName == 'queryCommandState') {\r\n return 0;\r\n } else if (cmdFn) {\r\n return cmdFn.apply(this, args);\r\n }\r\n },\r\n\r\n /**\r\n * 执行编辑命令cmdName,完成富文本编辑效果\r\n * @method execCommand\r\n * @param { String } cmdName 需要执行的命令\r\n * @remind 具体命令的使用请参考<a href=\"#COMMAND.LIST\">命令列表</a>\r\n * @return { * } 返回命令函数运行的返回值\r\n * @example\r\n * ```javascript\r\n * editor.execCommand(cmdName);\r\n * ```\r\n */\r\n execCommand: function (cmdName) {\r\n cmdName = cmdName.toLowerCase();\r\n var me = this,\r\n result,\r\n cmd = me.commands[cmdName] || UE.commands[cmdName];\r\n if (!cmd || !cmd.execCommand) {\r\n return null;\r\n }\r\n if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) {\r\n me.__hasEnterExecCommand = true;\r\n if (me.queryCommandState.apply(me,arguments) != -1) {\r\n me.fireEvent('saveScene');\r\n me.fireEvent.apply(me, ['beforeexeccommand', cmdName].concat(arguments));\r\n result = this._callCmdFn('execCommand', arguments);\r\n //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉\r\n// (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange');\r\n me.fireEvent.apply(me, ['afterexeccommand', cmdName].concat(arguments));\r\n me.fireEvent('saveScene');\r\n }\r\n me.__hasEnterExecCommand = false;\r\n } else {\r\n result = this._callCmdFn('execCommand', arguments);\r\n (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange')\r\n }\r\n (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me._selectionChange();\r\n return result;\r\n },\r\n\r\n /**\r\n * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态\r\n * @method queryCommandState\r\n * @param { String } cmdName 需要查询的命令名称\r\n * @remind 具体命令的使用请参考<a href=\"#COMMAND.LIST\">命令列表</a>\r\n * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1)\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState(cmdName) => (-1|0|1)\r\n * ```\r\n * @see COMMAND.LIST\r\n */\r\n queryCommandState: function (cmdName) {\r\n return this._callCmdFn('queryCommandState', arguments);\r\n },\r\n\r\n /**\r\n * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值\r\n * @method queryCommandValue\r\n * @param { String } cmdName 需要查询的命令名称\r\n * @remind 具体命令的使用请参考<a href=\"#COMMAND.LIST\">命令列表</a>\r\n * @remind 只有部分插件有此方法\r\n * @return { * } 返回每个命令特定的当前状态值\r\n * @grammar editor.queryCommandValue(cmdName) => {*}\r\n * @see COMMAND.LIST\r\n */\r\n queryCommandValue: function (cmdName) {\r\n return this._callCmdFn('queryCommandValue', arguments);\r\n },\r\n\r\n /**\r\n * 检查编辑区域中是否有内容\r\n * @method hasContents\r\n * @remind 默认有文本内容,或者有以下节点都不认为是空\r\n * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param\r\n * @return { Boolean } 检查有内容返回true,否则返回false\r\n * @example\r\n * ```javascript\r\n * editor.hasContents()\r\n * ```\r\n */\r\n\r\n /**\r\n * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true\r\n * @method hasContents\r\n * @param { Array } tags 传入数组判断时用到的节点类型\r\n * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false\r\n * @example\r\n * ```javascript\r\n * editor.hasContents(['span']);\r\n * ```\r\n */\r\n hasContents: function (tags) {\r\n if (tags) {\r\n for (var i = 0, ci; ci = tags[i++];) {\r\n if (this.document.getElementsByTagName(ci).length > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (!domUtils.isEmptyBlock(this.body)) {\r\n return true\r\n }\r\n //随时添加,定义的特殊标签如果存在,不能认为是空\r\n tags = ['div'];\r\n for (i = 0; ci = tags[i++];) {\r\n var nodes = domUtils.getElementsByTagName(this.document, ci);\r\n for (var n = 0, cn; cn = nodes[n++];) {\r\n if (domUtils.isCustomeNode(cn)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * 重置编辑器,可用来做多个tab使用同一个编辑器实例\r\n * @method reset\r\n * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件\r\n * @example\r\n * ```javascript\r\n * editor.reset()\r\n * ```\r\n */\r\n reset: function () {\r\n this.fireEvent('reset');\r\n },\r\n\r\n /**\r\n * 设置当前编辑区域可以编辑\r\n * @method setEnabled\r\n * @example\r\n * ```javascript\r\n * editor.setEnabled()\r\n * ```\r\n */\r\n setEnabled: function () {\r\n var me = this, range;\r\n if (me.body.contentEditable == 'false') {\r\n me.body.contentEditable = true;\r\n range = me.selection.getRange();\r\n //有可能内容丢失了\r\n try {\r\n range.moveToBookmark(me.lastBk);\r\n delete me.lastBk\r\n } catch (e) {\r\n range.setStartAtFirst(me.body).collapse(true)\r\n }\r\n range.select(true);\r\n if (me.bkqueryCommandState) {\r\n me.queryCommandState = me.bkqueryCommandState;\r\n delete me.bkqueryCommandState;\r\n }\r\n if (me.bkqueryCommandValue) {\r\n me.queryCommandValue = me.bkqueryCommandValue;\r\n delete me.bkqueryCommandValue;\r\n }\r\n me.fireEvent('selectionchange');\r\n }\r\n },\r\n enable: function () {\r\n return this.setEnabled();\r\n },\r\n\r\n /** 设置当前编辑区域不可编辑\r\n * @method setDisabled\r\n */\r\n\r\n /** 设置当前编辑区域不可编辑,except中的命令除外\r\n * @method setDisabled\r\n * @param { String } except 例外命令的字符串\r\n * @remind 即使设置了disable,此处配置的例外命令仍然可以执行\r\n * @example\r\n * ```javascript\r\n * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能\r\n * ```\r\n */\r\n\r\n /** 设置当前编辑区域不可编辑,except中的命令除外\r\n * @method setDisabled\r\n * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行\r\n * @remind 即使设置了disable,此处配置的例外命令仍然可以执行\r\n * @example\r\n * ```javascript\r\n * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能\r\n * ```\r\n */\r\n setDisabled: function (except) {\r\n var me = this;\r\n except = except ? utils.isArray(except) ? except : [except] : [];\r\n if (me.body.contentEditable == 'true') {\r\n if (!me.lastBk) {\r\n me.lastBk = me.selection.getRange().createBookmark(true);\r\n }\r\n me.body.contentEditable = false;\r\n me.bkqueryCommandState = me.queryCommandState;\r\n me.bkqueryCommandValue = me.queryCommandValue;\r\n me.queryCommandState = function (type) {\r\n if (utils.indexOf(except, type) != -1) {\r\n return me.bkqueryCommandState.apply(me, arguments);\r\n }\r\n return -1;\r\n };\r\n me.queryCommandValue = function (type) {\r\n if (utils.indexOf(except, type) != -1) {\r\n return me.bkqueryCommandValue.apply(me, arguments);\r\n }\r\n return null;\r\n };\r\n me.fireEvent('selectionchange');\r\n }\r\n },\r\n disable: function (except) {\r\n return this.setDisabled(except);\r\n },\r\n\r\n /**\r\n * 设置默认内容\r\n * @method _setDefaultContent\r\n * @private\r\n * @param { String } cont 要存入的内容\r\n */\r\n _setDefaultContent: function () {\r\n function clear() {\r\n var me = this;\r\n if (me.document.getElementById('initContent')) {\r\n me.body.innerHTML = '<p>' + (ie ? '' : '<br/>') + '</p>';\r\n me.removeListener('firstBeforeExecCommand focus', clear);\r\n setTimeout(function () {\r\n me.focus();\r\n me._selectionChange();\r\n }, 0)\r\n }\r\n }\r\n\r\n return function (cont) {\r\n var me = this;\r\n me.body.innerHTML = '<p id=\"initContent\">' + cont + '</p>';\r\n\r\n me.addListener('firstBeforeExecCommand focus', clear);\r\n }\r\n }(),\r\n\r\n /**\r\n * 显示编辑器\r\n * @method setShow\r\n * @example\r\n * ```javascript\r\n * editor.setShow()\r\n * ```\r\n */\r\n setShow: function () {\r\n var me = this, range = me.selection.getRange();\r\n if (me.container.style.display == 'none') {\r\n //有可能内容丢失了\r\n try {\r\n range.moveToBookmark(me.lastBk);\r\n delete me.lastBk\r\n } catch (e) {\r\n range.setStartAtFirst(me.body).collapse(true)\r\n }\r\n //ie下focus实效,所以做了个延迟\r\n setTimeout(function () {\r\n range.select(true);\r\n }, 100);\r\n me.container.style.display = '';\r\n }\r\n\r\n },\r\n show: function () {\r\n return this.setShow();\r\n },\r\n /**\r\n * 隐藏编辑器\r\n * @method setHide\r\n * @example\r\n * ```javascript\r\n * editor.setHide()\r\n * ```\r\n */\r\n setHide: function () {\r\n var me = this;\r\n if (!me.lastBk) {\r\n me.lastBk = me.selection.getRange().createBookmark(true);\r\n }\r\n me.container.style.display = 'none'\r\n },\r\n hide: function () {\r\n return this.setHide();\r\n },\r\n\r\n /**\r\n * 根据指定的路径,获取对应的语言资源\r\n * @method getLang\r\n * @param { String } path 路径根据的是lang目录下的语言文件的路径结构\r\n * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串\r\n * @example\r\n * ```javascript\r\n * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除'\r\n * ```\r\n */\r\n getLang: function (path) {\r\n // HaoChuan9421\r\n if(!this.options){\r\n return '';\r\n }\r\n var lang = UE.I18N[this.options.lang];\r\n if (!lang) {\r\n throw Error(\"not import language file\");\r\n }\r\n path = (path || \"\").split(\".\");\r\n for (var i = 0, ci; ci = path[i++];) {\r\n lang = lang[ci];\r\n if (!lang)break;\r\n }\r\n return lang;\r\n },\r\n\r\n /**\r\n * 计算编辑器html内容字符串的长度\r\n * @method getContentLength\r\n * @return { Number } 返回计算的长度\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容<p><strong>132</strong></p>\r\n * editor.getContentLength() //返回27\r\n * ```\r\n */\r\n /**\r\n * 计算编辑器当前纯文本内容的长度\r\n * @method getContentLength\r\n * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算\r\n * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容<p><strong>132</strong></p>\r\n * editor.getContentLength() //返回3\r\n * ```\r\n */\r\n getContentLength: function (ingoneHtml, tagNames) {\r\n var count = this.getContent(false,false,true).length;\r\n if (ingoneHtml) {\r\n tagNames = (tagNames || []).concat([ 'hr', 'img', 'iframe']);\r\n count = this.getContentTxt().replace(/[\\t\\r\\n]+/g, '').length;\r\n for (var i = 0, ci; ci = tagNames[i++];) {\r\n count += this.document.getElementsByTagName(ci).length;\r\n }\r\n }\r\n return count;\r\n },\r\n\r\n /**\r\n * 注册输入过滤规则\r\n * @method addInputRule\r\n * @param { Function } rule 要添加的过滤规则\r\n * @example\r\n * ```javascript\r\n * editor.addInputRule(function(root){\r\n * $.each(root.getNodesByTagName('div'),function(i,node){\r\n * node.tagName=\"p\";\r\n * });\r\n * });\r\n * ```\r\n */\r\n addInputRule: function (rule) {\r\n this.inputRules.push(rule);\r\n },\r\n\r\n /**\r\n * 执行注册的过滤规则\r\n * @method filterInputRule\r\n * @param { UE.uNode } root 要过滤的uNode节点\r\n * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数\r\n * @example\r\n * ```javascript\r\n * editor.filterInputRule(editor.body);\r\n * ```\r\n * @see UE.Editor:addInputRule\r\n */\r\n filterInputRule: function (root) {\r\n for (var i = 0, ci; ci = this.inputRules[i++];) {\r\n ci.call(this, root)\r\n }\r\n },\r\n\r\n /**\r\n * 注册输出过滤规则\r\n * @method addOutputRule\r\n * @param { Function } rule 要添加的过滤规则\r\n * @example\r\n * ```javascript\r\n * editor.addOutputRule(function(root){\r\n * $.each(root.getNodesByTagName('p'),function(i,node){\r\n * node.tagName=\"div\";\r\n * });\r\n * });\r\n * ```\r\n */\r\n addOutputRule: function (rule) {\r\n this.outputRules.push(rule)\r\n },\r\n\r\n /**\r\n * 根据输出过滤规则,过滤编辑器内容\r\n * @method filterOutputRule\r\n * @remind 执行editor.getContent方法的时候,会先运行该过滤函数\r\n * @param { UE.uNode } root 要过滤的uNode节点\r\n * @example\r\n * ```javascript\r\n * editor.filterOutputRule(editor.body);\r\n * ```\r\n * @see UE.Editor:addOutputRule\r\n */\r\n filterOutputRule: function (root) {\r\n for (var i = 0, ci; ci = this.outputRules[i++];) {\r\n ci.call(this, root)\r\n }\r\n },\r\n\r\n /**\r\n * 根据action名称获取请求的路径\r\n * @method getActionUrl\r\n * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径\r\n * @param { String } action action名称\r\n * @example\r\n * ```javascript\r\n * editor.getActionUrl('config'); //返回 \"/ueditor/php/controller.php?action=config\"\r\n * editor.getActionUrl('image'); //返回 \"/ueditor/php/controller.php?action=uplaodimage\"\r\n * editor.getActionUrl('scrawl'); //返回 \"/ueditor/php/controller.php?action=uplaodscrawl\"\r\n * editor.getActionUrl('imageManager'); //返回 \"/ueditor/php/controller.php?action=listimage\"\r\n * ```\r\n */\r\n getActionUrl: function(action){\r\n var actionName = this.getOpt(action) || action,\r\n imageUrl = this.getOpt('imageUrl'),\r\n serverUrl = this.getOpt('serverUrl');\r\n\r\n if(!serverUrl && imageUrl) {\r\n serverUrl = imageUrl.replace(/^(.*[\\/]).+([\\.].+)$/, '$1controller$2');\r\n }\r\n\r\n if(serverUrl) {\r\n serverUrl = serverUrl + (serverUrl.indexOf('?') == -1 ? '?':'&') + 'action=' + (actionName || '');\r\n return utils.formatUrl(serverUrl);\r\n } else {\r\n return '';\r\n }\r\n }\r\n };\r\n utils.inherits(Editor, EventBase);\r\n})();\r\n\r\n\r\n// core/Editor.defaultoptions.js\r\n//维护编辑器一下默认的不在插件中的配置项\r\nUE.Editor.defaultOptions = function(editor){\r\n\r\n var _url = editor.options.UEDITOR_HOME_URL;\r\n return {\r\n isShow: true,\r\n initialContent: '',\r\n initialStyle:'',\r\n autoClearinitialContent: false,\r\n iframeCssUrl: _url + 'themes/iframe.css',\r\n textarea: 'editorValue',\r\n focus: false,\r\n focusInEnd: true,\r\n autoClearEmptyNode: true,\r\n fullscreen: false,\r\n readonly: false,\r\n zIndex: 999,\r\n imagePopup: true,\r\n enterTag: 'p',\r\n customDomain: false,\r\n lang: 'zh-cn',\r\n langPath: _url + 'lang/',\r\n theme: 'default',\r\n themePath: _url + 'themes/',\r\n allHtmlEnabled: false,\r\n scaleEnabled: false,\r\n tableNativeEditInFF: false,\r\n autoSyncData : true,\r\n fileNameFormat: '{time}{rand:6}'\r\n }\r\n};\r\n\r\n// core/loadconfig.js\r\n(function(){\r\n\r\n UE.Editor.prototype.loadServerConfig = function(){\r\n var me = this;\r\n setTimeout(function(){\r\n try{\r\n me.options.imageUrl && me.setOpt('serverUrl', me.options.imageUrl.replace(/^(.*[\\/]).+([\\.].+)$/, '$1controller$2'));\r\n\r\n var configUrl = me.getActionUrl('config'),\r\n isJsonp = utils.isCrossDomainUrl(configUrl);\r\n\r\n /* 发出ajax请求 */\r\n me._serverConfigLoaded = false;\r\n\r\n configUrl && UE.ajax.request(configUrl,{\r\n 'method': 'GET',\r\n 'dataType': isJsonp ? 'jsonp':'',\r\n 'onsuccess':function(r){\r\n try {\r\n var config = isJsonp ? r:eval(\"(\"+r.responseText+\")\");\r\n utils.extend(me.options, config);\r\n me.fireEvent('serverConfigLoaded');\r\n me._serverConfigLoaded = true;\r\n } catch (e) {\r\n showErrorMsg(me.getLang('loadconfigFormatError'));\r\n }\r\n },\r\n 'onerror':function(){\r\n showErrorMsg(me.getLang('loadconfigHttpError'));\r\n }\r\n });\r\n } catch(e){\r\n showErrorMsg(me.getLang('loadconfigError'));\r\n }\r\n });\r\n\r\n function showErrorMsg(msg) {\r\n console && console.error(msg);\r\n //me.fireEvent('showMessage', {\r\n // 'title': msg,\r\n // 'type': 'error'\r\n //});\r\n }\r\n };\r\n\r\n UE.Editor.prototype.isServerConfigLoaded = function(){\r\n var me = this;\r\n return me._serverConfigLoaded || false;\r\n };\r\n\r\n UE.Editor.prototype.afterConfigReady = function(handler){\r\n if (!handler || !utils.isFunction(handler)) return;\r\n var me = this;\r\n var readyHandler = function(){\r\n handler.apply(me, arguments);\r\n me.removeListener('serverConfigLoaded', readyHandler);\r\n };\r\n\r\n if (me.isServerConfigLoaded()) {\r\n handler.call(me, 'serverConfigLoaded');\r\n } else {\r\n me.addListener('serverConfigLoaded', readyHandler);\r\n }\r\n };\r\n\r\n})();\r\n\r\n\r\n// core/ajax.js\r\n/**\r\n * @file\r\n * @module UE.ajax\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 提供对ajax请求的支持\r\n * @module UE.ajax\r\n */\r\nUE.ajax = function() {\r\n\r\n //创建一个ajaxRequest对象\r\n var fnStr = 'XMLHttpRequest()';\r\n try {\r\n new ActiveXObject(\"Msxml2.XMLHTTP\");\r\n fnStr = 'ActiveXObject(\\'Msxml2.XMLHTTP\\')';\r\n } catch (e) {\r\n try {\r\n new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n fnStr = 'ActiveXObject(\\'Microsoft.XMLHTTP\\')'\r\n } catch (e) {\r\n }\r\n }\r\n var creatAjaxRequest = new Function('return new ' + fnStr);\r\n\r\n\r\n /**\r\n * 将json参数转化成适合ajax提交的参数列表\r\n * @param json\r\n */\r\n function json2str(json) {\r\n var strArr = [];\r\n for (var i in json) {\r\n //忽略默认的几个参数\r\n if(i==\"method\" || i==\"timeout\" || i==\"async\" || i==\"dataType\" || i==\"callback\") continue;\r\n //忽略控制\r\n if(json[i] == undefined || json[i] == null) continue;\r\n //传递过来的对象和函数不在提交之列\r\n if (!((typeof json[i]).toLowerCase() == \"function\" || (typeof json[i]).toLowerCase() == \"object\")) {\r\n strArr.push( encodeURIComponent(i) + \"=\"+encodeURIComponent(json[i]) );\r\n } else if (utils.isArray(json[i])) {\r\n //支持传数组内容\r\n for(var j = 0; j < json[i].length; j++) {\r\n strArr.push( encodeURIComponent(i) + \"[]=\"+encodeURIComponent(json[i][j]) );\r\n }\r\n }\r\n }\r\n return strArr.join(\"&\");\r\n }\r\n\r\n function doAjax(url, ajaxOptions) {\r\n var xhr = creatAjaxRequest(),\r\n //是否超时\r\n timeIsOut = false,\r\n //默认参数\r\n defaultAjaxOptions = {\r\n method:\"POST\",\r\n timeout:5000,\r\n async:true,\r\n data:{},//需要传递对象的话只能覆盖\r\n onsuccess:function() {\r\n },\r\n onerror:function() {\r\n }\r\n };\r\n\r\n if (typeof url === \"object\") {\r\n ajaxOptions = url;\r\n url = ajaxOptions.url;\r\n }\r\n if (!xhr || !url) return;\r\n var ajaxOpts = ajaxOptions ? utils.extend(defaultAjaxOptions,ajaxOptions) : defaultAjaxOptions;\r\n\r\n var submitStr = json2str(ajaxOpts); // { name:\"Jim\",city:\"Beijing\" } --> \"name=Jim&city=Beijing\"\r\n //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串\r\n if (!utils.isEmptyObject(ajaxOpts.data)){\r\n submitStr += (submitStr? \"&\":\"\") + json2str(ajaxOpts.data);\r\n }\r\n //超时检测\r\n var timerID = setTimeout(function() {\r\n if (xhr.readyState != 4) {\r\n timeIsOut = true;\r\n xhr.abort();\r\n clearTimeout(timerID);\r\n }\r\n }, ajaxOpts.timeout);\r\n\r\n var method = ajaxOpts.method.toUpperCase();\r\n var str = url + (url.indexOf(\"?\")==-1?\"?\":\"&\") + (method==\"POST\"?\"\":submitStr+ \"&noCache=\" + +new Date);\r\n xhr.open(method, str, ajaxOpts.async);\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState == 4) {\r\n if (!timeIsOut && xhr.status == 200) {\r\n ajaxOpts.onsuccess(xhr);\r\n } else {\r\n ajaxOpts.onerror(xhr);\r\n }\r\n }\r\n };\r\n if (method == \"POST\") {\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n xhr.send(submitStr);\r\n } else {\r\n xhr.send(null);\r\n }\r\n }\r\n\r\n function doJsonp(url, opts) {\r\n\r\n var successhandler = opts.onsuccess || function(){},\r\n scr = document.createElement('SCRIPT'),\r\n options = opts || {},\r\n charset = options['charset'],\r\n callbackField = options['jsonp'] || 'callback',\r\n callbackFnName,\r\n timeOut = options['timeOut'] || 0,\r\n timer,\r\n reg = new RegExp('(\\\\?|&)' + callbackField + '=([^&]*)'),\r\n matches;\r\n\r\n if (utils.isFunction(successhandler)) {\r\n callbackFnName = 'bd__editor__' + Math.floor(Math.random() * 2147483648).toString(36);\r\n window[callbackFnName] = getCallBack(0);\r\n } else if(utils.isString(successhandler)){\r\n callbackFnName = successhandler;\r\n } else {\r\n if (matches = reg.exec(url)) {\r\n callbackFnName = matches[2];\r\n }\r\n }\r\n\r\n url = url.replace(reg, '\\x241' + callbackField + '=' + callbackFnName);\r\n\r\n if (url.search(reg) < 0) {\r\n url += (url.indexOf('?') < 0 ? '?' : '&') + callbackField + '=' + callbackFnName;\r\n }\r\n\r\n var queryStr = json2str(opts); // { name:\"Jim\",city:\"Beijing\" } --> \"name=Jim&city=Beijing\"\r\n //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串\r\n if (!utils.isEmptyObject(opts.data)){\r\n queryStr += (queryStr? \"&\":\"\") + json2str(opts.data);\r\n }\r\n if (queryStr) {\r\n url = url.replace(/\\?/, '?' + queryStr + '&');\r\n }\r\n\r\n scr.onerror = getCallBack(1);\r\n if( timeOut ){\r\n timer = setTimeout(getCallBack(1), timeOut);\r\n }\r\n createScriptTag(scr, url, charset);\r\n\r\n function createScriptTag(scr, url, charset) {\r\n scr.setAttribute('type', 'text/javascript');\r\n scr.setAttribute('defer', 'defer');\r\n charset && scr.setAttribute('charset', charset);\r\n scr.setAttribute('src', url);\r\n document.getElementsByTagName('head')[0].appendChild(scr);\r\n }\r\n\r\n function getCallBack(onTimeOut){\r\n return function(){\r\n try {\r\n if(onTimeOut){\r\n options.onerror && options.onerror();\r\n }else{\r\n try{\r\n clearTimeout(timer);\r\n successhandler.apply(window, arguments);\r\n } catch (e){}\r\n }\r\n } catch (exception) {\r\n options.onerror && options.onerror.call(window, exception);\r\n } finally {\r\n options.oncomplete && options.oncomplete.apply(window, arguments);\r\n scr.parentNode && scr.parentNode.removeChild(scr);\r\n window[callbackFnName] = null;\r\n try {\r\n delete window[callbackFnName];\r\n }catch(e){}\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n /**\r\n * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求\r\n * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调\r\n * @method request\r\n * @param { URLString } url ajax请求的url地址\r\n * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下:\r\n * @example\r\n * ```javascript\r\n * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。\r\n * UE.ajax.requeset( 'sayhello.php', {\r\n *\r\n * //请求方法。可选值: 'GET', 'POST',默认值是'POST'\r\n * method: 'GET',\r\n *\r\n * //超时时间。 默认为5000, 单位是ms\r\n * timeout: 10000,\r\n *\r\n * //是否是异步请求。 true为异步请求, false为同步请求\r\n * async: true,\r\n *\r\n * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。\r\n * data: {\r\n * name: 'ueditor'\r\n * },\r\n *\r\n * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。\r\n * onsuccess: function ( xhr ) {\r\n * console.log( xhr.responseText );\r\n * },\r\n *\r\n * //请求失败或者超时后的回调。\r\n * onerror: function ( xhr ) {\r\n * alert( 'Ajax请求失败' );\r\n * }\r\n *\r\n * } );\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求\r\n * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。\r\n * @method request\r\n * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。\r\n * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下:\r\n * @example\r\n * ```javascript\r\n *\r\n * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。\r\n * UE.ajax.requeset( 'sayhello.php', {\r\n *\r\n * //请求的地址, 该项是必须的。\r\n * url: 'sayhello.php'\r\n *\r\n * } );\r\n * ```\r\n */\r\n\t\trequest:function(url, opts) {\r\n if (opts && opts.dataType == 'jsonp') {\r\n doJsonp(url, opts);\r\n } else {\r\n doAjax(url, opts);\r\n }\r\n\t\t},\r\n getJSONP:function(url, data, fn) {\r\n var opts = {\r\n 'data': data,\r\n 'oncomplete': fn\r\n };\r\n doJsonp(url, opts);\r\n\t\t}\r\n\t};\r\n\r\n\r\n}();\r\n\r\n\r\n// core/filterword.js\r\n/**\r\n * UE过滤word的静态方法\r\n * @file\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @module UE\r\n */\r\n\r\n\r\n/**\r\n * 根据传入html字符串过滤word\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method filterWord\r\n * @param { String } html html字符串\r\n * @return { String } 已过滤后的结果字符串\r\n * @example\r\n * ```javascript\r\n * UE.filterWord(html);\r\n * ```\r\n */\r\nvar filterWord = UE.filterWord = function () {\r\n\r\n //是否是word过来的内容\r\n function isWordDocument( str ) {\r\n return /(class=\"?Mso|style=\"[^\"]*\\bmso\\-|w:WordDocument|<(v|o):|lang=)/ig.test( str );\r\n }\r\n //去掉小数\r\n function transUnit( v ) {\r\n v = v.replace( /[\\d.]+\\w+/g, function ( m ) {\r\n return utils.transUnitToPx(m);\r\n } );\r\n return v;\r\n }\r\n\r\n function filterPasteWord( str ) {\r\n return str.replace(/[\\t\\r\\n]+/g,' ')\r\n .replace( /<!--[\\s\\S]*?-->/ig, \"\" )\r\n //转换图片\r\n .replace(/<v:shape [^>]*>[\\s\\S]*?.<\\/v:shape>/gi,function(str){\r\n //opera能自己解析出image所这里直接返回空\r\n if(browser.opera){\r\n return '';\r\n }\r\n try{\r\n //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中\r\n if(/Bitmap/i.test(str)){\r\n return '';\r\n }\r\n var width = str.match(/width:([ \\d.]*p[tx])/i)[1],\r\n height = str.match(/height:([ \\d.]*p[tx])/i)[1],\r\n src = str.match(/src=\\s*\"([^\"]*)\"/i)[1];\r\n return '<img width=\"'+ transUnit(width) +'\" height=\"'+transUnit(height) +'\" src=\"' + src + '\" />';\r\n } catch(e){\r\n return '';\r\n }\r\n })\r\n //针对wps添加的多余标签处理\r\n .replace(/<\\/?div[^>]*>/g,'')\r\n //去掉多余的属性\r\n .replace( /v:\\w+=([\"']?)[^'\"]+\\1/g, '' )\r\n .replace( /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|xml|meta|link|style|\\w+:\\w+)(?=[\\s\\/>]))[^>]*>/gi, \"\" )\r\n .replace( /<p [^>]*class=\"?MsoHeading\"?[^>]*>(.*?)<\\/p>/gi, \"<p><strong>$1</strong></p>\" )\r\n //去掉多余的属性\r\n .replace( /\\s+(class|lang|align)\\s*=\\s*(['\"]?)([\\w-]+)\\2/ig, function(str,name,marks,val){\r\n //保留list的标示\r\n return name == 'class' && val == 'MsoListParagraph' ? str : ''\r\n })\r\n //清除多余的font/span不能匹配 有可能是空格\r\n .replace( /<(font|span)[^>]*>(\\s*)<\\/\\1>/gi, function(a,b,c){\r\n return c.replace(/[\\t\\r\\n ]+/g,' ')\r\n })\r\n //处理style的问题\r\n .replace( /(<[a-z][^>]*)\\sstyle=([\"'])([^\\2]*?)\\2/gi, function( str, tag, tmp, style ) {\r\n var n = [],\r\n s = style.replace( /^\\s+|\\s+$/, '' )\r\n .replace(/'/g,'\\'')\r\n .replace( /"/gi, \"'\" )\r\n .replace(/[\\d.]+(cm|pt)/g,function(str){\r\n return utils.transUnitToPx(str)\r\n })\r\n .split( /;\\s*/g );\r\n\r\n for ( var i = 0,v; v = s[i];i++ ) {\r\n\r\n var name, value,\r\n parts = v.split( \":\" );\r\n\r\n if ( parts.length == 2 ) {\r\n name = parts[0].toLowerCase();\r\n value = parts[1].toLowerCase();\r\n if(/^(background)\\w*/.test(name) && value.replace(/(initial|\\s)/g,'').length == 0\r\n ||\r\n /^(margin)\\w*/.test(name) && /^0\\w+$/.test(value)\r\n ){\r\n continue;\r\n }\r\n\r\n switch ( name ) {\r\n case \"mso-padding-alt\":\r\n case \"mso-padding-top-alt\":\r\n case \"mso-padding-right-alt\":\r\n case \"mso-padding-bottom-alt\":\r\n case \"mso-padding-left-alt\":\r\n case \"mso-margin-alt\":\r\n case \"mso-margin-top-alt\":\r\n case \"mso-margin-right-alt\":\r\n case \"mso-margin-bottom-alt\":\r\n case \"mso-margin-left-alt\":\r\n //ie下会出现挤到一起的情况\r\n //case \"mso-table-layout-alt\":\r\n case \"mso-height\":\r\n case \"mso-width\":\r\n case \"mso-vertical-align-alt\":\r\n //trace:1819 ff下会解析出padding在table上\r\n if(!/<table/.test(tag))\r\n n[i] = name.replace( /^mso-|-alt$/g, \"\" ) + \":\" + transUnit( value );\r\n continue;\r\n case \"horiz-align\":\r\n n[i] = \"text-align:\" + value;\r\n continue;\r\n\r\n case \"vert-align\":\r\n n[i] = \"vertical-align:\" + value;\r\n continue;\r\n\r\n case \"font-color\":\r\n case \"mso-foreground\":\r\n n[i] = \"color:\" + value;\r\n continue;\r\n\r\n case \"mso-background\":\r\n case \"mso-highlight\":\r\n n[i] = \"background:\" + value;\r\n continue;\r\n\r\n case \"mso-default-height\":\r\n n[i] = \"min-height:\" + transUnit( value );\r\n continue;\r\n\r\n case \"mso-default-width\":\r\n n[i] = \"min-width:\" + transUnit( value );\r\n continue;\r\n\r\n case \"mso-padding-between-alt\":\r\n n[i] = \"border-collapse:separate;border-spacing:\" + transUnit( value );\r\n continue;\r\n\r\n case \"text-line-through\":\r\n if ( (value == \"single\") || (value == \"double\") ) {\r\n n[i] = \"text-decoration:line-through\";\r\n }\r\n continue;\r\n case \"mso-zero-height\":\r\n if ( value == \"yes\" ) {\r\n n[i] = \"display:none\";\r\n }\r\n continue;\r\n// case 'background':\r\n// break;\r\n case 'margin':\r\n if ( !/[1-9]/.test( value ) ) {\r\n continue;\r\n }\r\n\r\n }\r\n\r\n if ( /^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?:decor|trans)|top-bar|version|vnd|word-break)/.test( name )\r\n ||\r\n /text\\-indent|padding|margin/.test(name) && /\\-[\\d.]+/.test(value)\r\n ) {\r\n continue;\r\n }\r\n\r\n n[i] = name + \":\" + parts[1];\r\n }\r\n }\r\n return tag + (n.length ? ' style=\"' + n.join( ';').replace(/;{2,}/g,';') + '\"' : '');\r\n })\r\n\r\n\r\n }\r\n\r\n return function ( html ) {\r\n return (isWordDocument( html ) ? filterPasteWord( html ) : html);\r\n };\r\n}();\r\n\r\n// core/node.js\r\n/**\r\n * 编辑器模拟的节点类\r\n * @file\r\n * @module UE\r\n * @class uNode\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n(function () {\r\n\r\n /**\r\n * 编辑器模拟的节点类\r\n * @unfile\r\n * @module UE\r\n * @class uNode\r\n */\r\n\r\n /**\r\n * 通过一个键值对,创建一个uNode对象\r\n * @constructor\r\n * @param { Object } attr 传入要创建的uNode的初始属性\r\n * @example\r\n * ```javascript\r\n * var node = new uNode({\r\n * type:'element',\r\n * tagName:'span',\r\n * attrs:{style:'font-size:14px;'}\r\n * }\r\n * ```\r\n */\r\n var uNode = UE.uNode = function (obj) {\r\n this.type = obj.type;\r\n this.data = obj.data;\r\n this.tagName = obj.tagName;\r\n this.parentNode = obj.parentNode;\r\n this.attrs = obj.attrs || {};\r\n this.children = obj.children;\r\n };\r\n\r\n var notTransAttrs = {\r\n 'href':1,\r\n 'src':1,\r\n '_src':1,\r\n '_href':1,\r\n 'cdata_data':1\r\n };\r\n\r\n var notTransTagName = {\r\n style:1,\r\n script:1\r\n };\r\n\r\n var indentChar = ' ',\r\n breakChar = '\\n';\r\n\r\n function insertLine(arr, current, begin) {\r\n arr.push(breakChar);\r\n return current + (begin ? 1 : -1);\r\n }\r\n\r\n function insertIndent(arr, current) {\r\n //插入缩进\r\n for (var i = 0; i < current; i++) {\r\n arr.push(indentChar);\r\n }\r\n }\r\n\r\n //创建uNode的静态方法\r\n //支持标签和html\r\n uNode.createElement = function (html) {\r\n if (/[<>]/.test(html)) {\r\n return UE.htmlparser(html).children[0]\r\n } else {\r\n return new uNode({\r\n type:'element',\r\n children:[],\r\n tagName:html\r\n })\r\n }\r\n };\r\n uNode.createText = function (data,noTrans) {\r\n return new UE.uNode({\r\n type:'text',\r\n 'data':noTrans ? data : utils.unhtml(data || '')\r\n })\r\n };\r\n function nodeToHtml(node, arr, formatter, current) {\r\n switch (node.type) {\r\n case 'root':\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n //插入新行\r\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\r\n insertLine(arr, current, true);\r\n insertIndent(arr, current)\r\n }\r\n nodeToHtml(ci, arr, formatter, current)\r\n }\r\n break;\r\n case 'text':\r\n isText(node, arr);\r\n break;\r\n case 'element':\r\n isElement(node, arr, formatter, current);\r\n break;\r\n case 'comment':\r\n isComment(node, arr, formatter);\r\n }\r\n return arr;\r\n }\r\n\r\n function isText(node, arr) {\r\n if(node.parentNode.tagName == 'pre'){\r\n //源码模式下输入html标签,不能做转换处理,直接输出\r\n arr.push(node.data)\r\n }else{\r\n arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g,' '))\r\n }\r\n\r\n }\r\n\r\n function isElement(node, arr, formatter, current) {\r\n var attrhtml = '';\r\n if (node.attrs) {\r\n attrhtml = [];\r\n var attrs = node.attrs;\r\n for (var a in attrs) {\r\n //这里就针对\r\n //<p>'<img src='http://nsclick.baidu.com/u.gif?&asdf=\\\"sdf&asdfasdfs;asdf'></p>\r\n //这里边的\\\"做转换,要不用innerHTML直接被截断了,属性src\r\n //有可能做的不够\r\n attrhtml.push(a + (attrs[a] !== undefined ? '=\"' + (notTransAttrs[a] ? utils.html(attrs[a]).replace(/[\"]/g, function (a) {\r\n return '"'\r\n }) : utils.unhtml(attrs[a])) + '\"' : ''))\r\n }\r\n attrhtml = attrhtml.join(' ');\r\n }\r\n arr.push('<' + node.tagName +\r\n (attrhtml ? ' ' + attrhtml : '') +\r\n (dtd.$empty[node.tagName] ? '\\/' : '' ) + '>'\r\n );\r\n //插入新行\r\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\r\n if(node.children && node.children.length){\r\n current = insertLine(arr, current, true);\r\n insertIndent(arr, current)\r\n }\r\n\r\n }\r\n if (node.children && node.children.length) {\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\r\n insertLine(arr, current);\r\n insertIndent(arr, current)\r\n }\r\n nodeToHtml(ci, arr, formatter, current)\r\n }\r\n }\r\n if (!dtd.$empty[node.tagName]) {\r\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\r\n\r\n if(node.children && node.children.length){\r\n current = insertLine(arr, current);\r\n insertIndent(arr, current)\r\n }\r\n }\r\n arr.push('<\\/' + node.tagName + '>');\r\n }\r\n\r\n }\r\n\r\n function isComment(node, arr) {\r\n arr.push('<!--' + node.data + '-->');\r\n }\r\n\r\n function getNodeById(root, id) {\r\n var node;\r\n if (root.type == 'element' && root.getAttr('id') == id) {\r\n return root;\r\n }\r\n if (root.children && root.children.length) {\r\n for (var i = 0, ci; ci = root.children[i++];) {\r\n if (node = getNodeById(ci, id)) {\r\n return node;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getNodesByTagName(node, tagName, arr) {\r\n if (node.type == 'element' && node.tagName == tagName) {\r\n arr.push(node);\r\n }\r\n if (node.children && node.children.length) {\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n getNodesByTagName(ci, tagName, arr)\r\n }\r\n }\r\n }\r\n function nodeTraversal(root,fn){\r\n if(root.children && root.children.length){\r\n for(var i= 0,ci;ci=root.children[i];){\r\n nodeTraversal(ci,fn);\r\n //ci被替换的情况,这里就不再走 fn了\r\n if(ci.parentNode ){\r\n if(ci.children && ci.children.length){\r\n fn(ci)\r\n }\r\n if(ci.parentNode) i++\r\n }\r\n }\r\n }else{\r\n fn(root)\r\n }\r\n\r\n }\r\n uNode.prototype = {\r\n\r\n /**\r\n * 当前节点对象,转换成html文本\r\n * @method toHtml\r\n * @return { String } 返回转换后的html字符串\r\n * @example\r\n * ```javascript\r\n * node.toHtml();\r\n * ```\r\n */\r\n\r\n /**\r\n * 当前节点对象,转换成html文本\r\n * @method toHtml\r\n * @param { Boolean } formatter 是否格式化返回值\r\n * @return { String } 返回转换后的html字符串\r\n * @example\r\n * ```javascript\r\n * node.toHtml( true );\r\n * ```\r\n */\r\n toHtml:function (formatter) {\r\n var arr = [];\r\n nodeToHtml(this, arr, formatter, 0);\r\n return arr.join('')\r\n },\r\n\r\n /**\r\n * 获取节点的html内容\r\n * @method innerHTML\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @return { String } 返回节点的html内容\r\n * @example\r\n * ```javascript\r\n * var htmlstr = node.innerHTML();\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置节点的html内容\r\n * @method innerHTML\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @param { String } htmlstr 传入要设置的html内容\r\n * @return { UE.uNode } 返回节点本身\r\n * @example\r\n * ```javascript\r\n * node.innerHTML('<span>text</span>');\r\n * ```\r\n */\r\n innerHTML:function (htmlstr) {\r\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n return this;\r\n }\r\n if (utils.isString(htmlstr)) {\r\n if(this.children){\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n ci.parentNode = null;\r\n }\r\n }\r\n this.children = [];\r\n var tmpRoot = UE.htmlparser(htmlstr);\r\n for (var i = 0, ci; ci = tmpRoot.children[i++];) {\r\n this.children.push(ci);\r\n ci.parentNode = this;\r\n }\r\n return this;\r\n } else {\r\n var tmpRoot = new UE.uNode({\r\n type:'root',\r\n children:this.children\r\n });\r\n return tmpRoot.toHtml();\r\n }\r\n },\r\n\r\n /**\r\n * 获取节点的纯文本内容\r\n * @method innerText\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @return { String } 返回节点的存文本内容\r\n * @example\r\n * ```javascript\r\n * var textStr = node.innerText();\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置节点的纯文本内容\r\n * @method innerText\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @param { String } textStr 传入要设置的文本内容\r\n * @return { UE.uNode } 返回节点本身\r\n * @example\r\n * ```javascript\r\n * node.innerText('<span>text</span>');\r\n * ```\r\n */\r\n innerText:function (textStr,noTrans) {\r\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n return this;\r\n }\r\n if (textStr) {\r\n if(this.children){\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n ci.parentNode = null;\r\n }\r\n }\r\n this.children = [];\r\n this.appendChild(uNode.createText(textStr,noTrans));\r\n return this;\r\n } else {\r\n return this.toHtml().replace(/<[^>]+>/g, '');\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前对象的data属性\r\n * @method getData\r\n * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性\r\n * @example\r\n * ```javascript\r\n * node.getData();\r\n * ```\r\n */\r\n getData:function () {\r\n if (this.type == 'element')\r\n return '';\r\n return this.data\r\n },\r\n\r\n /**\r\n * 获取当前节点下的第一个子节点\r\n * @method firstChild\r\n * @return { UE.uNode } 返回第一个子节点\r\n * @example\r\n * ```javascript\r\n * node.firstChild(); //返回第一个子节点\r\n * ```\r\n */\r\n firstChild:function () {\r\n// if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n// return this;\r\n// }\r\n return this.children ? this.children[0] : null;\r\n },\r\n\r\n /**\r\n * 获取当前节点下的最后一个子节点\r\n * @method lastChild\r\n * @return { UE.uNode } 返回最后一个子节点\r\n * @example\r\n * ```javascript\r\n * node.lastChild(); //返回最后一个子节点\r\n * ```\r\n */\r\n lastChild:function () {\r\n// if (this.type != 'element' || dtd.$empty[this.tagName] ) {\r\n// return this;\r\n// }\r\n return this.children ? this.children[this.children.length - 1] : null;\r\n },\r\n\r\n /**\r\n * 获取和当前节点有相同父亲节点的前一个节点\r\n * @method previousSibling\r\n * @return { UE.uNode } 返回前一个节点\r\n * @example\r\n * ```javascript\r\n * node.children[2].previousSibling(); //返回子节点node.children[1]\r\n * ```\r\n */\r\n previousSibling : function(){\r\n var parent = this.parentNode;\r\n for (var i = 0, ci; ci = parent.children[i]; i++) {\r\n if (ci === this) {\r\n return i == 0 ? null : parent.children[i-1];\r\n }\r\n }\r\n\r\n },\r\n\r\n /**\r\n * 获取和当前节点有相同父亲节点的后一个节点\r\n * @method nextSibling\r\n * @return { UE.uNode } 返回后一个节点,找不到返回null\r\n * @example\r\n * ```javascript\r\n * node.children[2].nextSibling(); //如果有,返回子节点node.children[3]\r\n * ```\r\n */\r\n nextSibling : function(){\r\n var parent = this.parentNode;\r\n for (var i = 0, ci; ci = parent.children[i++];) {\r\n if (ci === this) {\r\n return parent.children[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 用新的节点替换当前节点\r\n * @method replaceChild\r\n * @param { UE.uNode } target 要替换成该节点参数\r\n * @param { UE.uNode } source 要被替换掉的节点\r\n * @return { UE.uNode } 返回替换之后的节点对象\r\n * @example\r\n * ```javascript\r\n * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点\r\n * ```\r\n */\r\n replaceChild:function (target, source) {\r\n if (this.children) {\r\n if(target.parentNode){\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i, 1, target);\r\n source.parentNode = null;\r\n target.parentNode = this;\r\n return target;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 在节点的子节点列表最后位置插入一个节点\r\n * @method appendChild\r\n * @param { UE.uNode } node 要插入的节点\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.appendChild( newNode ); //在node内插入子节点newNode\r\n * ```\r\n */\r\n appendChild:function (node) {\r\n if (this.type == 'root' || (this.type == 'element' && !dtd.$empty[this.tagName])) {\r\n if (!this.children) {\r\n this.children = []\r\n }\r\n if(node.parentNode){\r\n node.parentNode.removeChild(node);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === node) {\r\n this.children.splice(i, 1);\r\n break;\r\n }\r\n }\r\n this.children.push(node);\r\n node.parentNode = this;\r\n return node;\r\n }\r\n\r\n\r\n },\r\n\r\n /**\r\n * 在传入节点的前面插入一个节点\r\n * @method insertBefore\r\n * @param { UE.uNode } target 要插入的节点\r\n * @param { UE.uNode } source 在该参数节点前面插入\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode\r\n * ```\r\n */\r\n insertBefore:function (target, source) {\r\n if (this.children) {\r\n if(target.parentNode){\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i, 0, target);\r\n target.parentNode = this;\r\n return target;\r\n }\r\n }\r\n\r\n }\r\n },\r\n\r\n /**\r\n * 在传入节点的后面插入一个节点\r\n * @method insertAfter\r\n * @param { UE.uNode } target 要插入的节点\r\n * @param { UE.uNode } source 在该参数节点后面插入\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode\r\n * ```\r\n */\r\n insertAfter:function (target, source) {\r\n if (this.children) {\r\n if(target.parentNode){\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i + 1, 0, target);\r\n target.parentNode = this;\r\n return target;\r\n }\r\n\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 从当前节点的子节点列表中,移除节点\r\n * @method removeChild\r\n * @param { UE.uNode } node 要移除的节点引用\r\n * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置\r\n * @return { * } 返回刚移除的子节点\r\n * @example\r\n * ```javascript\r\n * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置\r\n * ```\r\n */\r\n removeChild:function (node,keepChildren) {\r\n if (this.children) {\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === node) {\r\n this.children.splice(i, 1);\r\n ci.parentNode = null;\r\n if(keepChildren && ci.children && ci.children.length){\r\n for(var j= 0,cj;cj=ci.children[j];j++){\r\n this.children.splice(i+j,0,cj);\r\n cj.parentNode = this;\r\n\r\n }\r\n }\r\n return ci;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值\r\n * @method getAttr\r\n * @param { String } attrName 要获取的属性名称\r\n * @return { * } 返回attrs对象下的属性值\r\n * @example\r\n * ```javascript\r\n * node.getAttr('title');\r\n * ```\r\n */\r\n getAttr:function (attrName) {\r\n return this.attrs && this.attrs[attrName.toLowerCase()]\r\n },\r\n\r\n /**\r\n * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值\r\n * @method setAttr\r\n * @param { String } attrName 要设置的属性名称\r\n * @param { * } attrVal 要设置的属性值,类型视设置的属性而定\r\n * @return { * } 返回attrs对象下的属性值\r\n * @example\r\n * ```javascript\r\n * node.setAttr('title','标题');\r\n * ```\r\n */\r\n setAttr:function (attrName, attrVal) {\r\n if (!attrName) {\r\n delete this.attrs;\r\n return;\r\n }\r\n if(!this.attrs){\r\n this.attrs = {};\r\n }\r\n if (utils.isObject(attrName)) {\r\n for (var a in attrName) {\r\n if (!attrName[a]) {\r\n delete this.attrs[a]\r\n } else {\r\n this.attrs[a.toLowerCase()] = attrName[a];\r\n }\r\n }\r\n } else {\r\n if (!attrVal) {\r\n delete this.attrs[attrName]\r\n } else {\r\n this.attrs[attrName.toLowerCase()] = attrVal;\r\n }\r\n\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前节点在父节点下的位置索引\r\n * @method getIndex\r\n * @return { Number } 返回索引数值,如果没有父节点,返回-1\r\n * @example\r\n * ```javascript\r\n * node.getIndex();\r\n * ```\r\n */\r\n getIndex:function(){\r\n var parent = this.parentNode;\r\n for(var i= 0,ci;ci=parent.children[i];i++){\r\n if(ci === this){\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n /**\r\n * 在当前节点下,根据id查找节点\r\n * @method getNodeById\r\n * @param { String } id 要查找的id\r\n * @return { UE.uNode } 返回找到的节点\r\n * @example\r\n * ```javascript\r\n * node.getNodeById('textId');\r\n * ```\r\n */\r\n getNodeById:function (id) {\r\n var node;\r\n if (this.children && this.children.length) {\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n if (node = getNodeById(ci, id)) {\r\n return node;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 在当前节点下,根据元素名称查找节点列表\r\n * @method getNodesByTagName\r\n * @param { String } tagNames 要查找的元素名称\r\n * @return { Array } 返回找到的节点列表\r\n * @example\r\n * ```javascript\r\n * node.getNodesByTagName('span');\r\n * ```\r\n */\r\n getNodesByTagName:function (tagNames) {\r\n tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, ' ').split(' ');\r\n var arr = [], me = this;\r\n utils.each(tagNames, function (tagName) {\r\n if (me.children && me.children.length) {\r\n for (var i = 0, ci; ci = me.children[i++];) {\r\n getNodesByTagName(ci, tagName, arr)\r\n }\r\n }\r\n });\r\n return arr;\r\n },\r\n\r\n /**\r\n * 根据样式名称,获取节点的样式值\r\n * @method getStyle\r\n * @param { String } name 要获取的样式名称\r\n * @return { String } 返回样式值\r\n * @example\r\n * ```javascript\r\n * node.getStyle('font-size');\r\n * ```\r\n */\r\n getStyle:function (name) {\r\n var cssStyle = this.getAttr('style');\r\n if (!cssStyle) {\r\n return ''\r\n }\r\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+)','i');\r\n var match = cssStyle.match(reg);\r\n if (match && match[0]) {\r\n return match[2]\r\n }\r\n return '';\r\n },\r\n\r\n /**\r\n * 给节点设置样式\r\n * @method setStyle\r\n * @param { String } name 要设置的的样式名称\r\n * @param { String } val 要设置的的样值\r\n * @example\r\n * ```javascript\r\n * node.setStyle('font-size', '12px');\r\n * ```\r\n */\r\n setStyle:function (name, val) {\r\n function exec(name, val) {\r\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+;?)', 'gi');\r\n cssStyle = cssStyle.replace(reg, '$1');\r\n if (val) {\r\n cssStyle = name + ':' + utils.unhtml(val) + ';' + cssStyle\r\n }\r\n\r\n }\r\n\r\n var cssStyle = this.getAttr('style');\r\n if (!cssStyle) {\r\n cssStyle = '';\r\n }\r\n if (utils.isObject(name)) {\r\n for (var a in name) {\r\n exec(a, name[a])\r\n }\r\n } else {\r\n exec(name, val)\r\n }\r\n this.setAttr('style', utils.trim(cssStyle))\r\n },\r\n\r\n /**\r\n * 传入一个函数,递归遍历当前节点下的所有节点\r\n * @method traversal\r\n * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数\r\n * @example\r\n * ```javascript\r\n * traversal(node, function(){\r\n * console.log(node.type);\r\n * });\r\n * ```\r\n */\r\n traversal:function(fn){\r\n if(this.children && this.children.length){\r\n nodeTraversal(this,fn);\r\n }\r\n return this;\r\n }\r\n }\r\n})();\r\n\r\n\r\n// core/htmlparser.js\r\n/**\r\n * html字符串转换成uNode节点\r\n * @file\r\n * @module UE\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n/**\r\n * html字符串转换成uNode节点的静态方法\r\n * @method htmlparser\r\n * @param { String } htmlstr 要转换的html代码\r\n * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\\n\\r\\t等空白字符\r\n * @return { uNode } 给定的html片段转换形成的uNode对象\r\n * @example\r\n * ```javascript\r\n * var root = UE.htmlparser('<p><b>htmlparser</b></p>', true);\r\n * ```\r\n */\r\n\r\nvar htmlparser = UE.htmlparser = function (htmlstr,ignoreBlank) {\r\n //todo 原来的方式 [^\"'<>\\/] 有\\/就不能配对上 <TD vAlign=top background=../AAA.JPG> 这样的标签了\r\n //先去掉了,加上的原因忘了,这里先记录\r\n var re_tag = /<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s\\/<>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'<>])*)\\/?>))/g,\r\n re_attr = /([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g;\r\n\r\n //ie下取得的html可能会有\\n存在,要去掉,在处理replace(/[\\t\\r\\n]*/g,'');代码高量的\\n不能去除\r\n var allowEmptyTags = {\r\n b:1,code:1,i:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,span:1,\r\n sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1\r\n };\r\n htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, 'g'), '');\r\n if(!ignoreBlank){\r\n htmlstr = htmlstr.replace(new RegExp('[\\\\r\\\\t\\\\n'+(ignoreBlank?'':' ')+']*<\\/?(\\\\w+)\\\\s*(?:[^>]*)>[\\\\r\\\\t\\\\n'+(ignoreBlank?'':' ')+']*','g'), function(a,b){\r\n //br暂时单独处理\r\n if(b && allowEmptyTags[b.toLowerCase()]){\r\n return a.replace(/(^[\\n\\r]+)|([\\n\\r]+$)/g,'');\r\n }\r\n return a.replace(new RegExp('^[\\\\r\\\\n'+(ignoreBlank?'':' ')+']+'),'').replace(new RegExp('[\\\\r\\\\n'+(ignoreBlank?'':' ')+']+$'),'');\r\n });\r\n }\r\n\r\n var notTransAttrs = {\r\n 'href':1,\r\n 'src':1\r\n };\r\n\r\n var uNode = UE.uNode,\r\n needParentNode = {\r\n 'td':'tr',\r\n 'tr':['tbody','thead','tfoot'],\r\n 'tbody':'table',\r\n 'th':'tr',\r\n 'thead':'table',\r\n 'tfoot':'table',\r\n 'caption':'table',\r\n 'li':['ul', 'ol'],\r\n 'dt':'dl',\r\n 'dd':'dl',\r\n 'option':'select'\r\n },\r\n needChild = {\r\n 'ol':'li',\r\n 'ul':'li'\r\n };\r\n\r\n function text(parent, data) {\r\n\r\n if(needChild[parent.tagName]){\r\n var tmpNode = uNode.createElement(needChild[parent.tagName]);\r\n parent.appendChild(tmpNode);\r\n tmpNode.appendChild(uNode.createText(data));\r\n parent = tmpNode;\r\n }else{\r\n\r\n parent.appendChild(uNode.createText(data));\r\n }\r\n }\r\n\r\n function element(parent, tagName, htmlattr) {\r\n var needParentTag;\r\n if (needParentTag = needParentNode[tagName]) {\r\n var tmpParent = parent,hasParent;\r\n while(tmpParent.type != 'root'){\r\n if(utils.isArray(needParentTag) ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 : needParentTag == tmpParent.tagName){\r\n parent = tmpParent;\r\n hasParent = true;\r\n break;\r\n }\r\n tmpParent = tmpParent.parentNode;\r\n }\r\n if(!hasParent){\r\n parent = element(parent, utils.isArray(needParentTag) ? needParentTag[0] : needParentTag)\r\n }\r\n }\r\n //按dtd处理嵌套\r\n// if(parent.type != 'root' && !dtd[parent.tagName][tagName])\r\n// parent = parent.parentNode;\r\n var elm = new uNode({\r\n parentNode:parent,\r\n type:'element',\r\n tagName:tagName.toLowerCase(),\r\n //是自闭合的处理一下\r\n children:dtd.$empty[tagName] ? null : []\r\n });\r\n //如果属性存在,处理属性\r\n if (htmlattr) {\r\n var attrs = {}, match;\r\n while (match = re_attr.exec(htmlattr)) {\r\n attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] ? (match[2] || match[3] || match[4]) : utils.unhtml(match[2] || match[3] || match[4])\r\n }\r\n elm.attrs = attrs;\r\n }\r\n //trace:3970\r\n// //如果parent下不能放elm\r\n// if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){\r\n// parent = parent.parentNode;\r\n// elm.parentNode = parent;\r\n// }\r\n parent.children.push(elm);\r\n //如果是自闭合节点返回父亲节点\r\n return dtd.$empty[tagName] ? parent : elm\r\n }\r\n\r\n function comment(parent, data) {\r\n parent.children.push(new uNode({\r\n type:'comment',\r\n data:data,\r\n parentNode:parent\r\n }));\r\n }\r\n\r\n var match, currentIndex = 0, nextIndex = 0;\r\n //设置根节点\r\n var root = new uNode({\r\n type:'root',\r\n children:[]\r\n });\r\n var currentParent = root;\r\n\r\n while (match = re_tag.exec(htmlstr)) {\r\n currentIndex = match.index;\r\n try{\r\n if (currentIndex > nextIndex) {\r\n //text node\r\n text(currentParent, htmlstr.slice(nextIndex, currentIndex));\r\n }\r\n if (match[3]) {\r\n\r\n if(dtd.$cdata[currentParent.tagName]){\r\n text(currentParent, match[0]);\r\n }else{\r\n //start tag\r\n currentParent = element(currentParent, match[3].toLowerCase(), match[4]);\r\n }\r\n\r\n\r\n } else if (match[1]) {\r\n if(currentParent.type != 'root'){\r\n if(dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]){\r\n text(currentParent, match[0]);\r\n }else{\r\n var tmpParent = currentParent;\r\n while(currentParent.type == 'element' && currentParent.tagName != match[1].toLowerCase()){\r\n currentParent = currentParent.parentNode;\r\n if(currentParent.type == 'root'){\r\n currentParent = tmpParent;\r\n throw 'break'\r\n }\r\n }\r\n //end tag\r\n currentParent = currentParent.parentNode;\r\n }\r\n\r\n }\r\n\r\n } else if (match[2]) {\r\n //comment\r\n comment(currentParent, match[2])\r\n }\r\n }catch(e){}\r\n\r\n nextIndex = re_tag.lastIndex;\r\n\r\n }\r\n //如果结束是文本,就有可能丢掉,所以这里手动判断一下\r\n //例如 <li>sdfsdfsdf<li>sdfsdfsdfsdf\r\n if (nextIndex < htmlstr.length) {\r\n text(currentParent, htmlstr.slice(nextIndex));\r\n }\r\n return root;\r\n};\r\n\r\n\r\n// core/filternode.js\r\n/**\r\n * UE过滤节点的静态方法\r\n * @file\r\n */\r\n\r\n/**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @module UE\r\n */\r\n\r\n\r\n/**\r\n * 根据传入节点和过滤规则过滤相应节点\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method filterNode\r\n * @param { Object } root 指定root节点\r\n * @param { Object } rules 过滤规则json对象\r\n * @example\r\n * ```javascript\r\n * UE.filterNode(root,editor.options.filterRules);\r\n * ```\r\n */\r\nvar filterNode = UE.filterNode = function () {\r\n function filterNode(node,rules){\r\n switch (node.type) {\r\n case 'text':\r\n break;\r\n case 'element':\r\n var val;\r\n if(val = rules[node.tagName]){\r\n if(val === '-'){\r\n node.parentNode.removeChild(node)\r\n }else if(utils.isFunction(val)){\r\n var parentNode = node.parentNode,\r\n index = node.getIndex();\r\n val(node);\r\n if(node.parentNode){\r\n if(node.children){\r\n for(var i = 0,ci;ci=node.children[i];){\r\n filterNode(ci,rules);\r\n if(ci.parentNode){\r\n i++;\r\n }\r\n }\r\n }\r\n }else{\r\n for(var i = index,ci;ci=parentNode.children[i];){\r\n filterNode(ci,rules);\r\n if(ci.parentNode){\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n\r\n }else{\r\n var attrs = val['$'];\r\n if(attrs && node.attrs){\r\n var tmpAttrs = {},tmpVal;\r\n for(var a in attrs){\r\n tmpVal = node.getAttr(a);\r\n //todo 只先对style单独处理\r\n if(a == 'style' && utils.isArray(attrs[a])){\r\n var tmpCssStyle = [];\r\n utils.each(attrs[a],function(v){\r\n var tmp;\r\n if(tmp = node.getStyle(v)){\r\n tmpCssStyle.push(v + ':' + tmp);\r\n }\r\n });\r\n tmpVal = tmpCssStyle.join(';')\r\n }\r\n if(tmpVal){\r\n tmpAttrs[a] = tmpVal;\r\n }\r\n\r\n }\r\n node.attrs = tmpAttrs;\r\n }\r\n if(node.children){\r\n for(var i = 0,ci;ci=node.children[i];){\r\n filterNode(ci,rules);\r\n if(ci.parentNode){\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n }else{\r\n //如果不在名单里扣出子节点并删除该节点,cdata除外\r\n if(dtd.$cdata[node.tagName]){\r\n node.parentNode.removeChild(node)\r\n }else{\r\n var parentNode = node.parentNode,\r\n index = node.getIndex();\r\n node.parentNode.removeChild(node,true);\r\n for(var i = index,ci;ci=parentNode.children[i];){\r\n filterNode(ci,rules);\r\n if(ci.parentNode){\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'comment':\r\n node.parentNode.removeChild(node)\r\n }\r\n\r\n }\r\n return function(root,rules){\r\n if(utils.isEmptyObject(rules)){\r\n return root;\r\n }\r\n var val;\r\n if(val = rules['-']){\r\n utils.each(val.split(' '),function(k){\r\n rules[k] = '-'\r\n })\r\n }\r\n for(var i= 0,ci;ci=root.children[i];){\r\n filterNode(ci,rules);\r\n if(ci.parentNode){\r\n i++;\r\n }\r\n }\r\n return root;\r\n }\r\n}();\r\n\r\n// core/plugin.js\r\n/**\r\n * Created with JetBrains PhpStorm.\r\n * User: campaign\r\n * Date: 10/8/13\r\n * Time: 6:15 PM\r\n * To change this template use File | Settings | File Templates.\r\n */\r\nUE.plugin = function(){\r\n var _plugins = {};\r\n return {\r\n register : function(pluginName,fn,oldOptionName,afterDisabled){\r\n if(oldOptionName && utils.isFunction(oldOptionName)){\r\n afterDisabled = oldOptionName;\r\n oldOptionName = null\r\n }\r\n _plugins[pluginName] = {\r\n optionName : oldOptionName || pluginName,\r\n execFn : fn,\r\n //当插件被禁用时执行\r\n afterDisabled : afterDisabled\r\n }\r\n },\r\n load : function(editor){\r\n utils.each(_plugins,function(plugin){\r\n var _export = plugin.execFn.call(editor);\r\n if(editor.options[plugin.optionName] !== false){\r\n if(_export){\r\n //后边需要再做扩展\r\n utils.each(_export,function(v,k){\r\n switch(k.toLowerCase()){\r\n case 'shortcutkey':\r\n editor.addshortcutkey(v);\r\n break;\r\n case 'bindevents':\r\n utils.each(v,function(fn,eventName){\r\n editor.addListener(eventName,fn);\r\n });\r\n break;\r\n case 'bindmultievents':\r\n utils.each(utils.isArray(v) ? v:[v],function(event){\r\n var types = utils.trim(event.type).split(/\\s+/);\r\n utils.each(types,function(eventName){\r\n editor.addListener(eventName, event.handler);\r\n });\r\n });\r\n break;\r\n case 'commands':\r\n utils.each(v,function(execFn,execName){\r\n editor.commands[execName] = execFn\r\n });\r\n break;\r\n case 'outputrule':\r\n editor.addOutputRule(v);\r\n break;\r\n case 'inputrule':\r\n editor.addInputRule(v);\r\n break;\r\n case 'defaultoptions':\r\n editor.setOpt(v)\r\n }\r\n })\r\n }\r\n\r\n }else if(plugin.afterDisabled){\r\n plugin.afterDisabled.call(editor)\r\n }\r\n\r\n });\r\n //向下兼容\r\n utils.each(UE.plugins,function(plugin){\r\n plugin.call(editor);\r\n });\r\n },\r\n run : function(pluginName,editor){\r\n var plugin = _plugins[pluginName];\r\n if(plugin){\r\n plugin.exeFn.call(editor)\r\n }\r\n }\r\n }\r\n}();\r\n\r\n// core/keymap.js\r\nvar keymap = UE.keymap = {\r\n 'Backspace' : 8,\r\n 'Tab' : 9,\r\n 'Enter' : 13,\r\n\r\n 'Shift':16,\r\n 'Control':17,\r\n 'Alt':18,\r\n 'CapsLock':20,\r\n\r\n 'Esc':27,\r\n\r\n 'Spacebar':32,\r\n\r\n 'PageUp':33,\r\n 'PageDown':34,\r\n 'End':35,\r\n 'Home':36,\r\n\r\n 'Left':37,\r\n 'Up':38,\r\n 'Right':39,\r\n 'Down':40,\r\n\r\n 'Insert':45,\r\n\r\n 'Del':46,\r\n\r\n 'NumLock':144,\r\n\r\n 'Cmd':91,\r\n\r\n '=':187,\r\n '-':189,\r\n\r\n \"b\":66,\r\n 'i':73,\r\n //回退\r\n 'z':90,\r\n 'y':89,\r\n //粘贴\r\n 'v' : 86,\r\n 'x' : 88,\r\n\r\n 's' : 83,\r\n\r\n 'n' : 78\r\n};\r\n\r\n// core/localstorage.js\r\n//存储媒介封装\r\nvar LocalStorage = UE.LocalStorage = (function () {\r\n\r\n var storage = window.localStorage || getUserData() || null,\r\n LOCAL_FILE = 'localStorage';\r\n\r\n return {\r\n\r\n saveLocalData: function (key, data) {\r\n\r\n if (storage && data) {\r\n storage.setItem(key, data);\r\n return true;\r\n }\r\n\r\n return false;\r\n\r\n },\r\n\r\n getLocalData: function (key) {\r\n\r\n if (storage) {\r\n return storage.getItem(key);\r\n }\r\n\r\n return null;\r\n\r\n },\r\n\r\n removeItem: function (key) {\r\n\r\n storage && storage.removeItem(key);\r\n\r\n }\r\n\r\n };\r\n\r\n function getUserData() {\r\n\r\n var container = document.createElement(\"div\");\r\n container.style.display = \"none\";\r\n\r\n if (!container.addBehavior) {\r\n return null;\r\n }\r\n\r\n container.addBehavior(\"#default#userdata\");\r\n\r\n return {\r\n\r\n getItem: function (key) {\r\n\r\n var result = null;\r\n\r\n try {\r\n document.body.appendChild(container);\r\n container.load(LOCAL_FILE);\r\n result = container.getAttribute(key);\r\n document.body.removeChild(container);\r\n } catch (e) {\r\n }\r\n\r\n return result;\r\n\r\n },\r\n\r\n setItem: function (key, value) {\r\n\r\n document.body.appendChild(container);\r\n container.setAttribute(key, value);\r\n container.save(LOCAL_FILE);\r\n document.body.removeChild(container);\r\n\r\n },\r\n\r\n //// 暂时没有用到\r\n //clear: function () {\r\n //\r\n // var expiresTime = new Date();\r\n // expiresTime.setFullYear(expiresTime.getFullYear() - 1);\r\n // document.body.appendChild(container);\r\n // container.expires = expiresTime.toUTCString();\r\n // container.save(LOCAL_FILE);\r\n // document.body.removeChild(container);\r\n //\r\n //},\r\n\r\n removeItem: function (key) {\r\n\r\n document.body.appendChild(container);\r\n container.removeAttribute(key);\r\n container.save(LOCAL_FILE);\r\n document.body.removeChild(container);\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n})();\r\n\r\n(function () {\r\n\r\n var ROOTKEY = 'ueditor_preference';\r\n\r\n UE.Editor.prototype.setPreferences = function(key,value){\r\n var obj = {};\r\n if (utils.isString(key)) {\r\n obj[ key ] = value;\r\n } else {\r\n obj = key;\r\n }\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n utils.extend(data, obj);\r\n } else {\r\n data = obj;\r\n }\r\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\r\n };\r\n\r\n UE.Editor.prototype.getPreferences = function(key){\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n return key ? data[key] : data\r\n }\r\n return null;\r\n };\r\n\r\n UE.Editor.prototype.removePreferences = function (key) {\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n data[key] = undefined;\r\n delete data[key]\r\n }\r\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\r\n };\r\n\r\n})();\r\n\r\n\r\n// plugins/defaultfilter.js\r\n///import core\r\n///plugin 编辑器默认的过滤转换机制\r\n\r\nUE.plugins['defaultfilter'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'allowDivTransToP':true,\r\n 'disabledTableInTable':true\r\n });\r\n //默认的过滤处理\r\n //进入编辑器的内容处理\r\n me.addInputRule(function (root) {\r\n var allowDivTransToP = this.options.allowDivTransToP;\r\n var val;\r\n function tdParent(node){\r\n while(node && node.type == 'element'){\r\n if(node.tagName == 'td'){\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n //进行默认的处理\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n if (!dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'style':\r\n case 'script':\r\n node.setAttr({\r\n cdata_tag: node.tagName,\r\n cdata_data: (node.innerHTML() || ''),\r\n '_ue_custom_node_':'true'\r\n });\r\n node.tagName = 'div';\r\n node.innerHTML('');\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('href')) {\r\n node.setAttr('_href', val)\r\n }\r\n break;\r\n case 'img':\r\n //todo base64暂时去掉,后边做远程图片上传后,干掉这个\r\n if (val = node.getAttr('src')) {\r\n if (/^data:/.test(val)) {\r\n node.parentNode.removeChild(node);\r\n break;\r\n }\r\n }\r\n node.setAttr('_src', node.getAttr('src'));\r\n break;\r\n case 'span':\r\n if (browser.webkit && (val = node.getStyle('white-space'))) {\r\n if (/nowrap|normal/.test(val)) {\r\n node.setStyle('white-space', '');\r\n if (me.options.autoClearEmptyNode && utils.isEmptyObject(node.attrs)) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n }\r\n }\r\n val = node.getAttr('id');\r\n if(val && /^_baidu_bookmark_/i.test(val)){\r\n node.parentNode.removeChild(node)\r\n }\r\n break;\r\n case 'p':\r\n if (val = node.getAttr('align')) {\r\n node.setAttr('align');\r\n node.setStyle('text-align', val)\r\n }\r\n //trace:3431\r\n// var cssStyle = node.getAttr('style');\r\n// if (cssStyle) {\r\n// cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, '');\r\n// node.setAttr('style', cssStyle)\r\n//\r\n// }\r\n //p标签不允许嵌套\r\n utils.each(node.children,function(n){\r\n if(n.type == 'element' && n.tagName == 'p'){\r\n var next = n.nextSibling();\r\n node.parentNode.insertAfter(n,node);\r\n var last = n;\r\n while(next){\r\n var tmp = next.nextSibling();\r\n node.parentNode.insertAfter(next,last);\r\n last = next;\r\n next = tmp;\r\n }\r\n return false;\r\n }\r\n });\r\n if (!node.firstChild()) {\r\n node.innerHTML(browser.ie ? ' ' : '<br/>')\r\n }\r\n break;\r\n case 'div':\r\n if(node.getAttr('cdata_tag')){\r\n break;\r\n }\r\n //针对代码这里不处理插入代码的div\r\n val = node.getAttr('class');\r\n if(val && /^line number\\d+/.test(val)){\r\n break;\r\n }\r\n if(!allowDivTransToP){\r\n break;\r\n }\r\n var tmpNode, p = UE.uNode.createElement('p');\r\n while (tmpNode = node.firstChild()) {\r\n if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {\r\n p.appendChild(tmpNode);\r\n } else {\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n p = UE.uNode.createElement('p');\r\n } else {\r\n node.parentNode.insertBefore(tmpNode, node);\r\n }\r\n }\r\n }\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n }\r\n node.parentNode.removeChild(node);\r\n break;\r\n case 'dl':\r\n node.tagName = 'ul';\r\n break;\r\n case 'dt':\r\n case 'dd':\r\n node.tagName = 'li';\r\n break;\r\n case 'li':\r\n var className = node.getAttr('class');\r\n if (!className || !/list\\-/.test(className)) {\r\n node.setAttr()\r\n }\r\n var tmpNodes = node.getNodesByTagName('ol ul');\r\n UE.utils.each(tmpNodes, function (n) {\r\n node.parentNode.insertAfter(n, node);\r\n });\r\n break;\r\n case 'td':\r\n case 'th':\r\n case 'caption':\r\n if(!node.children || !node.children.length){\r\n node.appendChild(browser.ie11below ? UE.uNode.createText(' ') : UE.uNode.createElement('br'))\r\n }\r\n break;\r\n case 'table':\r\n if(me.options.disabledTableInTable && tdParent(node)){\r\n node.parentNode.insertBefore(UE.uNode.createText(node.innerText()),node);\r\n node.parentNode.removeChild(node)\r\n }\r\n }\r\n\r\n }\r\n// if(node.type == 'comment'){\r\n// node.parentNode.removeChild(node);\r\n// }\r\n })\r\n\r\n });\r\n\r\n //从编辑器出去的内容处理\r\n me.addOutputRule(function (root) {\r\n\r\n var val;\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n\r\n if (me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'div':\r\n if (val = node.getAttr('cdata_tag')) {\r\n node.tagName = val;\r\n node.appendChild(UE.uNode.createText(node.getAttr('cdata_data')));\r\n node.setAttr({cdata_tag: '', cdata_data: '','_ue_custom_node_':''});\r\n }\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('_href')) {\r\n node.setAttr({\r\n 'href': utils.html(val),\r\n '_href': ''\r\n })\r\n }\r\n break;\r\n break;\r\n case 'span':\r\n val = node.getAttr('id');\r\n if(val && /^_baidu_bookmark_/i.test(val)){\r\n node.parentNode.removeChild(node)\r\n }\r\n break;\r\n case 'img':\r\n if (val = node.getAttr('_src')) {\r\n node.setAttr({\r\n 'src': node.getAttr('_src'),\r\n '_src': ''\r\n })\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n })\r\n\r\n\r\n });\r\n};\r\n\r\n\r\n// plugins/inserthtml.js\r\n/**\r\n * 插入html字符串插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 插入html代码\r\n * @command inserthtml\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } html 插入的html字符串\r\n * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入\r\n * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。\r\n * @example\r\n * ```javascript\r\n * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本\r\n * //执行命令,插入<b>CC</b>\r\n * //插入后的效果 xxx<b>CC</b>xxx\r\n * //<p>xx|xxx</p> 当前选区为闭合状态\r\n * //插入<p>CC</p>\r\n * //结果 <p>xx</p><p>CC</p><p>xxx</p>\r\n * //<p>xxxx</p>|</p>xxx</p> 当前选区在两个p标签之间\r\n * //插入 xxxx\r\n * //结果 <p>xxxx</p><p>xxxx</p></p>xxx</p>\r\n * ```\r\n */\r\n\r\nUE.commands['inserthtml'] = {\r\n execCommand: function (command,html,notNeedFilter){\r\n var me = this,\r\n range,\r\n div;\r\n if(!html){\r\n return;\r\n }\r\n if(me.fireEvent('beforeinserthtml',html) === true){\r\n return;\r\n }\r\n range = me.selection.getRange();\r\n div = range.document.createElement( 'div' );\r\n div.style.display = 'inline';\r\n\r\n if (!notNeedFilter) {\r\n var root = UE.htmlparser(html);\r\n //如果给了过滤规则就先进行过滤\r\n if(me.options.filterRules){\r\n UE.filterNode(root,me.options.filterRules);\r\n }\r\n //执行默认的处理\r\n me.filterInputRule(root);\r\n html = root.toHtml()\r\n }\r\n div.innerHTML = utils.trim( html );\r\n\r\n if ( !range.collapsed ) {\r\n var tmpNode = range.startContainer;\r\n if(domUtils.isFillChar(tmpNode)){\r\n range.setStartBefore(tmpNode)\r\n }\r\n tmpNode = range.endContainer;\r\n if(domUtils.isFillChar(tmpNode)){\r\n range.setEndAfter(tmpNode)\r\n }\r\n range.txtToElmBoundary();\r\n //结束边界可能放到了br的前边,要把br包含进来\r\n // x[xxx]<br/>\r\n if(range.endContainer && range.endContainer.nodeType == 1){\r\n tmpNode = range.endContainer.childNodes[range.endOffset];\r\n if(tmpNode && domUtils.isBr(tmpNode)){\r\n range.setEndAfter(tmpNode);\r\n }\r\n }\r\n if(range.startOffset == 0){\r\n tmpNode = range.startContainer;\r\n if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){\r\n tmpNode = range.endContainer;\r\n if(range.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){\r\n me.body.innerHTML = '<p>'+(browser.ie ? '' : '<br/>')+'</p>';\r\n range.setStart(me.body.firstChild,0).collapse(true)\r\n\r\n }\r\n }\r\n }\r\n !range.collapsed && range.deleteContents();\r\n if(range.startContainer.nodeType == 1){\r\n var child = range.startContainer.childNodes[range.startOffset],pre;\r\n if(child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre)){\r\n range.setEnd(pre,pre.childNodes.length).collapse();\r\n while(child.firstChild){\r\n pre.appendChild(child.firstChild);\r\n }\r\n domUtils.remove(child);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n var child,parent,pre,tmp,hadBreak = 0, nextNode;\r\n //如果当前位置选中了fillchar要干掉,要不会产生空行\r\n if(range.inFillChar()){\r\n child = range.startContainer;\r\n if(domUtils.isFillChar(child)){\r\n range.setStartBefore(child).collapse(true);\r\n domUtils.remove(child);\r\n }else if(domUtils.isFillChar(child,true)){\r\n child.nodeValue = child.nodeValue.replace(fillCharReg,'');\r\n range.startOffset--;\r\n range.collapsed && range.collapse(true)\r\n }\r\n }\r\n //列表单独处理\r\n var li = domUtils.findParentByTagName(range.startContainer,'li',true);\r\n if(li){\r\n var next,last;\r\n while(child = div.firstChild){\r\n //针对hr单独处理一下先\r\n while(child && (child.nodeType == 3 || !domUtils.isBlockElm(child) || child.tagName=='HR' )){\r\n next = child.nextSibling;\r\n range.insertNode( child).collapse();\r\n last = child;\r\n child = next;\r\n\r\n }\r\n if(child){\r\n if(/^(ol|ul)$/i.test(child.tagName)){\r\n while(child.firstChild){\r\n last = child.firstChild;\r\n domUtils.insertAfter(li,child.firstChild);\r\n li = li.nextSibling;\r\n }\r\n domUtils.remove(child)\r\n }else{\r\n var tmpLi;\r\n next = child.nextSibling;\r\n tmpLi = me.document.createElement('li');\r\n domUtils.insertAfter(li,tmpLi);\r\n tmpLi.appendChild(child);\r\n last = child;\r\n child = next;\r\n li = tmpLi;\r\n }\r\n }\r\n }\r\n li = domUtils.findParentByTagName(range.startContainer,'li',true);\r\n if(domUtils.isEmptyBlock(li)){\r\n domUtils.remove(li)\r\n }\r\n if(last){\r\n\r\n range.setStartAfter(last).collapse(true).select(true)\r\n }\r\n }else{\r\n while ( child = div.firstChild ) {\r\n if(hadBreak){\r\n var p = me.document.createElement('p');\r\n while(child && (child.nodeType == 3 || !dtd.$block[child.tagName])){\r\n nextNode = child.nextSibling;\r\n p.appendChild(child);\r\n child = nextNode;\r\n }\r\n if(p.firstChild){\r\n\r\n child = p\r\n }\r\n }\r\n range.insertNode( child );\r\n nextNode = child.nextSibling;\r\n if ( !hadBreak && child.nodeType == domUtils.NODE_ELEMENT && domUtils.isBlockElm( child ) ){\r\n\r\n parent = domUtils.findParent( child,function ( node ){ return domUtils.isBlockElm( node ); } );\r\n if ( parent && parent.tagName.toLowerCase() != 'body' && !(dtd[parent.tagName][child.nodeName] && child.parentNode === parent)){\r\n if(!dtd[parent.tagName][child.nodeName]){\r\n pre = parent;\r\n }else{\r\n tmp = child.parentNode;\r\n while (tmp !== parent){\r\n pre = tmp;\r\n tmp = tmp.parentNode;\r\n\r\n }\r\n }\r\n\r\n\r\n domUtils.breakParent( child, pre || tmp );\r\n //去掉break后前一个多余的节点 <p>|<[p> ==> <p></p><div></div><p>|</p>\r\n var pre = child.previousSibling;\r\n domUtils.trimWhiteTextNode(pre);\r\n if(!pre.childNodes.length){\r\n domUtils.remove(pre);\r\n }\r\n //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位\r\n\r\n if(!browser.ie &&\r\n (next = child.nextSibling) &&\r\n domUtils.isBlockElm(next) &&\r\n next.lastChild &&\r\n !domUtils.isBr(next.lastChild)){\r\n next.appendChild(me.document.createElement('br'));\r\n }\r\n hadBreak = 1;\r\n }\r\n }\r\n var next = child.nextSibling;\r\n if(!div.firstChild && next && domUtils.isBlockElm(next)){\r\n\r\n range.setStart(next,0).collapse(true);\r\n break;\r\n }\r\n range.setEndAfter( child ).collapse();\r\n\r\n }\r\n\r\n child = range.startContainer;\r\n\r\n if(nextNode && domUtils.isBr(nextNode)){\r\n domUtils.remove(nextNode)\r\n }\r\n //用chrome可能有空白展位符\r\n if(domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)){\r\n if(nextNode = child.nextSibling){\r\n domUtils.remove(child);\r\n if(nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]){\r\n\r\n range.setStart(nextNode,0).collapse(true).shrinkBoundary()\r\n }\r\n }else{\r\n\r\n try{\r\n child.innerHTML = browser.ie ? domUtils.fillChar : '<br/>';\r\n }catch(e){\r\n range.setStartBefore(child);\r\n domUtils.remove(child)\r\n }\r\n\r\n }\r\n\r\n }\r\n //加上true因为在删除表情等时会删两次,第一次是删的fillData\r\n try{\r\n range.select(true);\r\n }catch(e){}\r\n\r\n }\r\n\r\n\r\n\r\n setTimeout(function(){\r\n range = me.selection.getRange();\r\n range.scrollToView(me.autoHeightEnabled,me.autoHeightEnabled ? domUtils.getXY(me.iframe).y:0);\r\n me.fireEvent('afterinserthtml', html);\r\n },200);\r\n }\r\n};\r\n\r\n\r\n// plugins/autotypeset.js\r\n/**\r\n * 自动排版\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。\r\n * @command autotypeset\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'autotypeset' );\r\n * ```\r\n */\r\n\r\nUE.plugins['autotypeset'] = function(){\r\n\r\n this.setOpt({'autotypeset': {\r\n mergeEmptyline: true, //合并空行\r\n removeClass: true, //去掉冗余的class\r\n removeEmptyline: false, //去掉空行\r\n textAlign:\"left\", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版\r\n imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版\r\n pasteFilter: false, //根据规则过滤没事粘贴进来的内容\r\n clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号\r\n clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体\r\n removeEmptyNode: false, // 去掉空节点\r\n //可以去掉的标签\r\n removeTagNames: utils.extend({div:1},dtd.$removeEmpty),\r\n indent: false, // 行首缩进\r\n indentValue : '2em', //行首缩进的大小\r\n bdc2sb: false,\r\n tobdc: false\r\n }});\r\n\r\n var me = this,\r\n opt = me.options.autotypeset,\r\n remainClass = {\r\n 'selectTdClass':1,\r\n 'pagebreak':1,\r\n 'anchorclass':1\r\n },\r\n remainTag = {\r\n 'li':1\r\n },\r\n tags = {\r\n div:1,\r\n p:1,\r\n //trace:2183 这些也认为是行\r\n blockquote:1,center:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,\r\n span:1\r\n },\r\n highlightCont;\r\n //升级了版本,但配置项目里没有autotypeset\r\n if(!opt){\r\n return;\r\n }\r\n\r\n readLocalOpts();\r\n\r\n function isLine(node,notEmpty){\r\n if(!node || node.nodeType == 3)\r\n return 0;\r\n if(domUtils.isBr(node))\r\n return 1;\r\n if(node && node.parentNode && tags[node.tagName.toLowerCase()]){\r\n if(highlightCont && highlightCont.contains(node)\r\n ||\r\n node.getAttribute('pagebreak')\r\n ){\r\n return 0;\r\n }\r\n\r\n return notEmpty ? !domUtils.isEmptyBlock(node) : domUtils.isEmptyBlock(node,new RegExp('[\\\\s'+domUtils.fillChar\r\n +']','g'));\r\n }\r\n }\r\n\r\n function removeNotAttributeSpan(node){\r\n if(!node.style.cssText){\r\n domUtils.removeAttributes(node,['style']);\r\n if(node.tagName.toLowerCase() == 'span' && domUtils.hasNoAttributes(node)){\r\n domUtils.remove(node,true);\r\n }\r\n }\r\n }\r\n function autotype(type,html){\r\n\r\n var me = this,cont;\r\n if(html){\r\n if(!opt.pasteFilter){\r\n return;\r\n }\r\n cont = me.document.createElement('div');\r\n cont.innerHTML = html.html;\r\n }else{\r\n cont = me.document.body;\r\n }\r\n var nodes = domUtils.getElementsByTagName(cont,'*');\r\n\r\n // 行首缩进,段落方向,段间距,段内间距\r\n for(var i=0,ci;ci=nodes[i++];){\r\n\r\n if(me.fireEvent('excludeNodeinautotype',ci) === true){\r\n continue;\r\n }\r\n //font-size\r\n if(opt.clearFontSize && ci.style.fontSize){\r\n domUtils.removeStyle(ci,'font-size');\r\n\r\n removeNotAttributeSpan(ci);\r\n\r\n }\r\n //font-family\r\n if(opt.clearFontFamily && ci.style.fontFamily){\r\n domUtils.removeStyle(ci,'font-family');\r\n removeNotAttributeSpan(ci);\r\n }\r\n\r\n if(isLine(ci)){\r\n //合并空行\r\n if(opt.mergeEmptyline ){\r\n var next = ci.nextSibling,tmpNode,isBr = domUtils.isBr(ci);\r\n while(isLine(next)){\r\n tmpNode = next;\r\n next = tmpNode.nextSibling;\r\n if(isBr && (!next || next && !domUtils.isBr(next))){\r\n break;\r\n }\r\n domUtils.remove(tmpNode);\r\n }\r\n\r\n }\r\n //去掉空行,保留占位的空行\r\n if(opt.removeEmptyline && domUtils.inDoc(ci,cont) && !remainTag[ci.parentNode.tagName.toLowerCase()] ){\r\n if(domUtils.isBr(ci)){\r\n next = ci.nextSibling;\r\n if(next && !domUtils.isBr(next)){\r\n continue;\r\n }\r\n }\r\n domUtils.remove(ci);\r\n continue;\r\n\r\n }\r\n\r\n }\r\n if(isLine(ci,true) && ci.tagName != 'SPAN'){\r\n if(opt.indent){\r\n ci.style.textIndent = opt.indentValue;\r\n }\r\n if(opt.textAlign){\r\n ci.style.textAlign = opt.textAlign;\r\n }\r\n // if(opt.lineHeight)\r\n // ci.style.lineHeight = opt.lineHeight + 'cm';\r\n\r\n }\r\n\r\n //去掉class,保留的class不去掉\r\n if(opt.removeClass && ci.className && !remainClass[ci.className.toLowerCase()]){\r\n\r\n if(highlightCont && highlightCont.contains(ci)){\r\n continue;\r\n }\r\n domUtils.removeAttributes(ci,['class']);\r\n }\r\n\r\n //表情不处理\r\n if(opt.imageBlockLine && ci.tagName.toLowerCase() == 'img' && !ci.getAttribute('emotion')){\r\n if(html){\r\n var img = ci;\r\n switch (opt.imageBlockLine){\r\n case 'left':\r\n case 'right':\r\n case 'none':\r\n var pN = img.parentNode,tmpNode,pre,next;\r\n while(dtd.$inline[pN.tagName] || pN.tagName == 'A'){\r\n pN = pN.parentNode;\r\n }\r\n tmpNode = pN;\r\n if(tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode,'text-align') == 'center'){\r\n if(!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode,function(node){return !domUtils.isBr(node) && !domUtils.isWhitespace(node)}) == 1){\r\n pre = tmpNode.previousSibling;\r\n next = tmpNode.nextSibling;\r\n if(pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)){\r\n pre.appendChild(tmpNode.firstChild);\r\n while(next.firstChild){\r\n pre.appendChild(next.firstChild);\r\n }\r\n domUtils.remove(tmpNode);\r\n domUtils.remove(next);\r\n }else{\r\n domUtils.setStyle(tmpNode,'text-align','');\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n domUtils.setStyle(img,'float', opt.imageBlockLine);\r\n break;\r\n case 'center':\r\n if(me.queryCommandValue('imagefloat') != 'center'){\r\n pN = img.parentNode;\r\n domUtils.setStyle(img,'float','none');\r\n tmpNode = img;\r\n while(pN && domUtils.getChildCount(pN,function(node){return !domUtils.isBr(node) && !domUtils.isWhitespace(node)}) == 1\r\n && (dtd.$inline[pN.tagName] || pN.tagName == 'A')){\r\n tmpNode = pN;\r\n pN = pN.parentNode;\r\n }\r\n var pNode = me.document.createElement('p');\r\n domUtils.setAttributes(pNode,{\r\n\r\n style:'text-align:center'\r\n });\r\n tmpNode.parentNode.insertBefore(pNode,tmpNode);\r\n pNode.appendChild(tmpNode);\r\n domUtils.setStyle(tmpNode,'float','');\r\n\r\n }\r\n\r\n\r\n }\r\n } else {\r\n var range = me.selection.getRange();\r\n range.selectNode(ci).select();\r\n me.execCommand('imagefloat', opt.imageBlockLine);\r\n }\r\n\r\n }\r\n\r\n //去掉冗余的标签\r\n if(opt.removeEmptyNode){\r\n if(opt.removeTagNames[ci.tagName.toLowerCase()] && domUtils.hasNoAttributes(ci) && domUtils.isEmptyBlock(ci)){\r\n domUtils.remove(ci);\r\n }\r\n }\r\n }\r\n if(opt.tobdc){\r\n var root = UE.htmlparser(cont.innerHTML);\r\n root.traversal(function(node){\r\n if(node.type == 'text'){\r\n node.data = ToDBC(node.data)\r\n }\r\n });\r\n cont.innerHTML = root.toHtml()\r\n }\r\n if(opt.bdc2sb){\r\n var root = UE.htmlparser(cont.innerHTML);\r\n root.traversal(function(node){\r\n if(node.type == 'text'){\r\n node.data = DBC2SB(node.data)\r\n }\r\n });\r\n cont.innerHTML = root.toHtml()\r\n }\r\n if(html){\r\n html.html = cont.innerHTML;\r\n }\r\n }\r\n if(opt.pasteFilter){\r\n me.addListener('beforepaste',autotype);\r\n }\r\n\r\n function DBC2SB(str) {\r\n var result = '';\r\n for (var i = 0; i < str.length; i++) {\r\n var code = str.charCodeAt(i); //获取当前字符的unicode编码\r\n if (code >= 65281 && code <= 65373)//在这个unicode编码范围中的是所有的英文字母已经各种字符\r\n {\r\n result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码\r\n } else if (code == 12288)//空格\r\n {\r\n result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);\r\n } else {\r\n result += str.charAt(i);\r\n }\r\n }\r\n return result;\r\n }\r\n function ToDBC(txtstring) {\r\n txtstring = utils.html(txtstring);\r\n var tmp = \"\";\r\n var mark = \"\";/*用于判断,如果是html尖括里的标记,则不进行全角的转换*/\r\n for (var i = 0; i < txtstring.length; i++) {\r\n if (txtstring.charCodeAt(i) == 32) {\r\n tmp = tmp + String.fromCharCode(12288);\r\n }\r\n else if (txtstring.charCodeAt(i) < 127) {\r\n tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248);\r\n }\r\n else {\r\n tmp += txtstring.charAt(i);\r\n }\r\n }\r\n return tmp;\r\n }\r\n\r\n function readLocalOpts() {\r\n var cookieOpt = me.getPreferences('autotypeset');\r\n utils.extend(me.options.autotypeset, cookieOpt);\r\n }\r\n\r\n me.commands['autotypeset'] = {\r\n execCommand:function () {\r\n me.removeListener('beforepaste',autotype);\r\n if(opt.pasteFilter){\r\n me.addListener('beforepaste',autotype);\r\n }\r\n autotype.call(me)\r\n }\r\n\r\n };\r\n\r\n};\r\n\r\n\r\n\r\n// plugins/autosubmit.js\r\n/**\r\n * 快捷键提交\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 提交表单\r\n * @command autosubmit\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'autosubmit' );\r\n * ```\r\n */\r\n\r\nUE.plugin.register('autosubmit',function(){\r\n return {\r\n shortcutkey:{\r\n \"autosubmit\":\"ctrl+13\" //手动提交\r\n },\r\n commands:{\r\n 'autosubmit':{\r\n execCommand:function () {\r\n var me=this,\r\n form = domUtils.findParentByTagName(me.iframe,\"form\", false);\r\n if (form){\r\n if(me.fireEvent(\"beforesubmit\")===false){\r\n return;\r\n }\r\n me.sync();\r\n form.submit();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/background.js\r\n/**\r\n * 背景插件,为UEditor提供设置背景功能\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\nUE.plugin.register('background', function () {\r\n var me = this,\r\n cssRuleId = 'editor_background',\r\n isSetColored,\r\n reg = new RegExp('body[\\\\s]*\\\\{(.+)\\\\}', 'i');\r\n\r\n function stringToObj(str) {\r\n var obj = {}, styles = str.split(';');\r\n utils.each(styles, function (v) {\r\n var index = v.indexOf(':'),\r\n key = utils.trim(v.substr(0, index)).toLowerCase();\r\n key && (obj[key] = utils.trim(v.substr(index + 1) || ''));\r\n });\r\n return obj;\r\n }\r\n\r\n function setBackground(obj) {\r\n if (obj) {\r\n var styles = [];\r\n for (var name in obj) {\r\n if (obj.hasOwnProperty(name)) {\r\n styles.push(name + \":\" + obj[name] + '; ');\r\n }\r\n }\r\n utils.cssRule(cssRuleId, styles.length ? ('body{' + styles.join(\"\") + '}') : '', me.document);\r\n } else {\r\n utils.cssRule(cssRuleId, '', me.document)\r\n }\r\n }\r\n //重写editor.hasContent方法\r\n\r\n var orgFn = me.hasContents;\r\n me.hasContents = function(){\r\n if(me.queryCommandValue('background')){\r\n return true\r\n }\r\n return orgFn.apply(me,arguments);\r\n };\r\n return {\r\n bindEvents: {\r\n 'getAllHtml': function (type, headHtml) {\r\n var body = this.body,\r\n su = domUtils.getComputedStyle(body, \"background-image\"),\r\n url = \"\";\r\n if (su.indexOf(me.options.imagePath) > 0) {\r\n url = su.substring(su.indexOf(me.options.imagePath), su.length - 1).replace(/\"|\\(|\\)/ig, \"\");\r\n } else {\r\n url = su != \"none\" ? su.replace(/url\\(\"?|\"?\\)/ig, \"\") : \"\";\r\n }\r\n var html = '<style type=\"text/css\">body{';\r\n var bgObj = {\r\n \"background-color\": domUtils.getComputedStyle(body, \"background-color\") || \"#ffffff\",\r\n 'background-image': url ? 'url(' + url + ')' : '',\r\n 'background-repeat': domUtils.getComputedStyle(body, \"background-repeat\") || \"\",\r\n 'background-position': browser.ie ? (domUtils.getComputedStyle(body, \"background-position-x\") + \" \" + domUtils.getComputedStyle(body, \"background-position-y\")) : domUtils.getComputedStyle(body, \"background-position\"),\r\n 'height': domUtils.getComputedStyle(body, \"height\")\r\n };\r\n for (var name in bgObj) {\r\n if (bgObj.hasOwnProperty(name)) {\r\n html += name + \":\" + bgObj[name] + \"; \";\r\n }\r\n }\r\n html += '}</style> ';\r\n headHtml.push(html);\r\n },\r\n 'aftersetcontent': function () {\r\n if(isSetColored == false) setBackground();\r\n }\r\n },\r\n inputRule: function (root) {\r\n isSetColored = false;\r\n utils.each(root.getNodesByTagName('p'), function (p) {\r\n var styles = p.getAttr('data-background');\r\n if (styles) {\r\n isSetColored = true;\r\n setBackground(stringToObj(styles));\r\n p.parentNode.removeChild(p);\r\n }\r\n })\r\n },\r\n outputRule: function (root) {\r\n var me = this,\r\n styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\\n\\r]+/g, '').match(reg);\r\n if (styles) {\r\n root.appendChild(UE.uNode.createElement('<p style=\"display:none;\" data-background=\"' + utils.trim(styles[1].replace(/\"/g, '').replace(/[\\s]+/g, ' ')) + '\"><br/></p>'));\r\n }\r\n },\r\n commands: {\r\n 'background': {\r\n execCommand: function (cmd, obj) {\r\n setBackground(obj);\r\n },\r\n queryCommandValue: function () {\r\n var me = this,\r\n styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\\n\\r]+/g, '').match(reg);\r\n return styles ? stringToObj(styles[1]) : null;\r\n },\r\n notNeedUndo: true\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/image.js\r\n/**\r\n * 图片插入、排版插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 图片对齐方式\r\n * @command imagefloat\r\n * @method execCommand\r\n * @remind 值center为独占一行居中\r\n * @param { String } cmd 命令字符串\r\n * @param { String } align 对齐方式,可传left、right、none、center\r\n * @remaind center表示图片独占一行\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'imagefloat', 'center' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 如果选区所在位置是图片区域\r\n * @command imagefloat\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回图片对齐方式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'imagefloat' );\r\n * ```\r\n */\r\n\r\nUE.commands['imagefloat'] = {\r\n execCommand:function (cmd, align) {\r\n var me = this,\r\n range = me.selection.getRange();\r\n if (!range.collapsed) {\r\n var img = range.getClosedNode();\r\n if (img && img.tagName == 'IMG') {\r\n switch (align) {\r\n case 'left':\r\n case 'right':\r\n case 'none':\r\n var pN = img.parentNode, tmpNode, pre, next;\r\n while (dtd.$inline[pN.tagName] || pN.tagName == 'A') {\r\n pN = pN.parentNode;\r\n }\r\n tmpNode = pN;\r\n if (tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode, 'text-align') == 'center') {\r\n if (!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\r\n }) == 1) {\r\n pre = tmpNode.previousSibling;\r\n next = tmpNode.nextSibling;\r\n if (pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)) {\r\n pre.appendChild(tmpNode.firstChild);\r\n while (next.firstChild) {\r\n pre.appendChild(next.firstChild);\r\n }\r\n domUtils.remove(tmpNode);\r\n domUtils.remove(next);\r\n } else {\r\n domUtils.setStyle(tmpNode, 'text-align', '');\r\n }\r\n\r\n\r\n }\r\n\r\n range.selectNode(img).select();\r\n }\r\n domUtils.setStyle(img, 'float', align == 'none' ? '' : align);\r\n if(align == 'none'){\r\n domUtils.removeAttributes(img,'align');\r\n }\r\n\r\n break;\r\n case 'center':\r\n if (me.queryCommandValue('imagefloat') != 'center') {\r\n pN = img.parentNode;\r\n domUtils.setStyle(img, 'float', '');\r\n domUtils.removeAttributes(img,'align');\r\n tmpNode = img;\r\n while (pN && domUtils.getChildCount(pN, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\r\n }) == 1\r\n && (dtd.$inline[pN.tagName] || pN.tagName == 'A')) {\r\n tmpNode = pN;\r\n pN = pN.parentNode;\r\n }\r\n range.setStartBefore(tmpNode).setCursor(false);\r\n pN = me.document.createElement('div');\r\n pN.appendChild(tmpNode);\r\n domUtils.setStyle(tmpNode, 'float', '');\r\n\r\n me.execCommand('insertHtml', '<p id=\"_img_parent_tmp\" style=\"text-align:center\">' + pN.innerHTML + '</p>');\r\n\r\n tmpNode = me.document.getElementById('_img_parent_tmp');\r\n tmpNode.removeAttribute('id');\r\n tmpNode = tmpNode.firstChild;\r\n range.selectNode(tmpNode).select();\r\n //去掉后边多余的元素\r\n next = tmpNode.parentNode.nextSibling;\r\n if (next && domUtils.isEmptyNode(next)) {\r\n domUtils.remove(next);\r\n }\r\n\r\n }\r\n\r\n break;\r\n }\r\n\r\n }\r\n }\r\n },\r\n queryCommandValue:function () {\r\n var range = this.selection.getRange(),\r\n startNode, floatStyle;\r\n if (range.collapsed) {\r\n return 'none';\r\n }\r\n startNode = range.getClosedNode();\r\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\r\n floatStyle = domUtils.getComputedStyle(startNode, 'float') || startNode.getAttribute('align');\r\n\r\n if (floatStyle == 'none') {\r\n floatStyle = domUtils.getComputedStyle(startNode.parentNode, 'text-align') == 'center' ? 'center' : floatStyle;\r\n }\r\n return {\r\n left:1,\r\n right:1,\r\n center:1\r\n }[floatStyle] ? floatStyle : 'none';\r\n }\r\n return 'none';\r\n\r\n\r\n },\r\n queryCommandState:function () {\r\n var range = this.selection.getRange(),\r\n startNode;\r\n\r\n if (range.collapsed) return -1;\r\n\r\n startNode = range.getClosedNode();\r\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n};\r\n\r\n\r\n/**\r\n * 插入图片\r\n * @command insertimage\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片\r\n * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片,\r\n * 此时数组的每一个元素都是一个Object类型的图片属性集合。\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertimage', {\r\n * src:'a/b/c.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * } );\r\n * ```\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertimage', [{\r\n * src:'a/b/c.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * },{\r\n * src:'a/b/d.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * }] );\r\n * ```\r\n */\r\n\r\nUE.commands['insertimage'] = {\r\n execCommand:function (cmd, opt) {\r\n\r\n opt = utils.isArray(opt) ? opt : [opt];\r\n if (!opt.length) {\r\n return;\r\n }\r\n var me = this,\r\n range = me.selection.getRange(),\r\n img = range.getClosedNode();\r\n\r\n if(me.fireEvent('beforeinsertimage', opt) === true){\r\n return;\r\n }\r\n\r\n function unhtmlData(imgCi) {\r\n\r\n utils.each('width,height,border,hspace,vspace'.split(','), function (item) {\r\n\r\n if (imgCi[item]) {\r\n imgCi[item] = parseInt(imgCi[item], 10) || 0;\r\n }\r\n });\r\n\r\n utils.each('src,_src'.split(','), function (item) {\r\n\r\n if (imgCi[item]) {\r\n imgCi[item] = utils.unhtmlForUrl(imgCi[item]);\r\n }\r\n });\r\n utils.each('title,alt'.split(','), function (item) {\r\n\r\n if (imgCi[item]) {\r\n imgCi[item] = utils.unhtml(imgCi[item]);\r\n }\r\n });\r\n }\r\n\r\n if (img && /img/i.test(img.tagName) && (img.className != \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\")!=-1) && !img.getAttribute(\"word_img\")) {\r\n var first = opt.shift();\r\n var floatStyle = first['floatStyle'];\r\n delete first['floatStyle'];\r\n//// img.style.border = (first.border||0) +\"px solid #000\";\r\n//// img.style.margin = (first.margin||0) +\"px\";\r\n// img.style.cssText += ';margin:' + (first.margin||0) +\"px;\" + 'border:' + (first.border||0) +\"px solid #000\";\r\n domUtils.setAttributes(img, first);\r\n me.execCommand('imagefloat', floatStyle);\r\n if (opt.length > 0) {\r\n range.setStartAfter(img).setCursor(false, true);\r\n me.execCommand('insertimage', opt);\r\n }\r\n\r\n } else {\r\n var html = [], str = '', ci;\r\n ci = opt[0];\r\n if (opt.length == 1) {\r\n unhtmlData(ci);\r\n\r\n str = '<img src=\"' + ci.src + '\" ' + (ci._src ? ' _src=\"' + ci._src + '\" ' : '') +\r\n (ci.width ? 'width=\"' + ci.width + '\" ' : '') +\r\n (ci.height ? ' height=\"' + ci.height + '\" ' : '') +\r\n (ci['floatStyle'] == 'left' || ci['floatStyle'] == 'right' ? ' style=\"float:' + ci['floatStyle'] + ';\"' : '') +\r\n (ci.title && ci.title != \"\" ? ' title=\"' + ci.title + '\"' : '') +\r\n (ci.border && ci.border != \"0\" ? ' border=\"' + ci.border + '\"' : '') +\r\n (ci.alt && ci.alt != \"\" ? ' alt=\"' + ci.alt + '\"' : '') +\r\n (ci.hspace && ci.hspace != \"0\" ? ' hspace = \"' + ci.hspace + '\"' : '') +\r\n (ci.vspace && ci.vspace != \"0\" ? ' vspace = \"' + ci.vspace + '\"' : '') + '/>';\r\n if (ci['floatStyle'] == 'center') {\r\n str = '<p style=\"text-align: center\">' + str + '</p>';\r\n }\r\n html.push(str);\r\n\r\n } else {\r\n for (var i = 0; ci = opt[i++];) {\r\n unhtmlData(ci);\r\n str = '<p ' + (ci['floatStyle'] == 'center' ? 'style=\"text-align: center\" ' : '') + '><img src=\"' + ci.src + '\" ' +\r\n (ci.width ? 'width=\"' + ci.width + '\" ' : '') + (ci._src ? ' _src=\"' + ci._src + '\" ' : '') +\r\n (ci.height ? ' height=\"' + ci.height + '\" ' : '') +\r\n ' style=\"' + (ci['floatStyle'] && ci['floatStyle'] != 'center' ? 'float:' + ci['floatStyle'] + ';' : '') +\r\n (ci.border || '') + '\" ' +\r\n (ci.title ? ' title=\"' + ci.title + '\"' : '') + ' /></p>';\r\n html.push(str);\r\n }\r\n }\r\n\r\n me.execCommand('insertHtml', html.join(''));\r\n }\r\n\r\n me.fireEvent('afterinsertimage', opt)\r\n }\r\n};\r\n\r\n\r\n// plugins/justify.js\r\n/**\r\n * 段落格式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 段落对齐方式\r\n * @command justify\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'justify', 'center' );\r\n * ```\r\n */\r\n/**\r\n * 如果选区所在位置是段落区域,返回当前段落对齐方式\r\n * @command justify\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回段落对齐方式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'justify' );\r\n * ```\r\n */\r\n\r\nUE.plugins['justify']=function(){\r\n var me=this,\r\n block = domUtils.isBlockElm,\r\n defaultValue = {\r\n left:1,\r\n right:1,\r\n center:1,\r\n justify:1\r\n },\r\n doJustify = function (range, style) {\r\n var bookmark = range.createBookmark(),\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);\r\n };\r\n\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n if (current.nodeType == 3 || !block(current)) {\r\n tmpRange.setStartBefore(current);\r\n while (current && current !== bookmark2.end && !block(current)) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !block(node);\r\n });\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n var common = tmpRange.getCommonAncestor();\r\n if (!domUtils.isBody(common) && block(common)) {\r\n domUtils.setStyles(common, utils.isString(style) ? {'text-align':style} : style);\r\n current = common;\r\n } else {\r\n var p = range.document.createElement('p');\r\n domUtils.setStyles(p, utils.isString(style) ? {'text-align':style} : style);\r\n var frag = tmpRange.extractContents();\r\n p.appendChild(frag);\r\n tmpRange.insertNode(p);\r\n current = p;\r\n }\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);\r\n };\r\n\r\n UE.commands['justify'] = {\r\n execCommand:function (cmdName, align) {\r\n var range = this.selection.getRange(),\r\n txt;\r\n\r\n //闭合时单独处理\r\n if (range.collapsed) {\r\n txt = this.document.createTextNode('p');\r\n range.insertNode(txt);\r\n }\r\n doJustify(range, align);\r\n if (txt) {\r\n range.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n\r\n range.select();\r\n\r\n\r\n return true;\r\n },\r\n queryCommandValue:function () {\r\n var startNode = this.selection.getStart(),\r\n value = domUtils.getComputedStyle(startNode, 'text-align');\r\n return defaultValue[value] ? value : 'left';\r\n },\r\n queryCommandState:function () {\r\n var start = this.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\",\"caption\"], true);\r\n\r\n return cell? -1:0;\r\n }\r\n\r\n };\r\n};\r\n\r\n\r\n// plugins/font.js\r\n/**\r\n * 字体颜色,背景色,字号,字体,下划线,删除线\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 字体颜色\r\n * @command forecolor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 色值(必须十六进制)\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'forecolor', '#000' );\r\n * ```\r\n */\r\n/**\r\n * 返回选区字体颜色\r\n * @command forecolor\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体颜色\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'forecolor' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体背景颜色\r\n * @command backcolor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 色值(必须十六进制)\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'backcolor', '#000' );\r\n * ```\r\n */\r\n/**\r\n * 返回选区字体颜色\r\n * @command backcolor\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体背景颜色\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'backcolor' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体大小\r\n * @command fontsize\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 字体大小\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontsize', '14px' );\r\n * ```\r\n */\r\n/**\r\n * 返回选区字体大小\r\n * @command fontsize\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体大小\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'fontsize' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体样式\r\n * @command fontfamily\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 字体样式\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontfamily', '微软雅黑' );\r\n * ```\r\n */\r\n/**\r\n * 返回选区字体样式\r\n * @command fontfamily\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体样式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'fontfamily' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体下划线,与删除线互斥\r\n * @command underline\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'underline' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体删除线,与下划线互斥\r\n * @command strikethrough\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'strikethrough' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 字体边框\r\n * @command fontborder\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontborder' );\r\n * ```\r\n */\r\n\r\nUE.plugins['font'] = function () {\r\n var me = this,\r\n fonts = {\r\n 'forecolor': 'color',\r\n 'backcolor': 'background-color',\r\n 'fontsize': 'font-size',\r\n 'fontfamily': 'font-family',\r\n 'underline': 'text-decoration',\r\n 'strikethrough': 'text-decoration',\r\n 'fontborder': 'border'\r\n },\r\n needCmd = {'underline': 1, 'strikethrough': 1, 'fontborder': 1},\r\n needSetChild = {\r\n 'forecolor': 'color',\r\n 'backcolor': 'background-color',\r\n 'fontsize': 'font-size',\r\n 'fontfamily': 'font-family'\r\n\r\n };\r\n me.setOpt({\r\n 'fontfamily': [\r\n { name: 'songti', val: '宋体,SimSun'},\r\n { name: 'yahei', val: '微软雅黑,Microsoft YaHei'},\r\n { name: 'kaiti', val: '楷体,楷体_GB2312, SimKai'},\r\n { name: 'heiti', val: '黑体, SimHei'},\r\n { name: 'lishu', val: '隶书, SimLi'},\r\n { name: 'andaleMono', val: 'andale mono'},\r\n { name: 'arial', val: 'arial, helvetica,sans-serif'},\r\n { name: 'arialBlack', val: 'arial black,avant garde'},\r\n { name: 'comicSansMs', val: 'comic sans ms'},\r\n { name: 'impact', val: 'impact,chicago'},\r\n { name: 'timesNewRoman', val: 'times new roman'}\r\n ],\r\n 'fontsize': [10, 11, 12, 14, 16, 18, 20, 24, 36]\r\n });\r\n\r\n function mergeWithParent(node){\r\n var parent;\r\n while(parent = node.parentNode){\r\n if(parent.tagName == 'SPAN' && domUtils.getChildCount(parent,function(child){\r\n return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child)\r\n }) == 1) {\r\n parent.style.cssText += node.style.cssText;\r\n domUtils.remove(node,true);\r\n node = parent;\r\n\r\n }else{\r\n break;\r\n }\r\n }\r\n\r\n }\r\n function mergeChild(rng,cmdName,value){\r\n if(needSetChild[cmdName]){\r\n rng.adjustmentBoundary();\r\n if(!rng.collapsed && rng.startContainer.nodeType == 1){\r\n var start = rng.startContainer.childNodes[rng.startOffset];\r\n if(start && domUtils.isTagNode(start,'span')){\r\n var bk = rng.createBookmark();\r\n utils.each(domUtils.getElementsByTagName(start, 'span'), function (span) {\r\n if (!span.parentNode || domUtils.isBookmarkNode(span))return;\r\n if(cmdName == 'backcolor' && domUtils.getComputedStyle(span,'background-color').toLowerCase() === value){\r\n return;\r\n }\r\n domUtils.removeStyle(span,needSetChild[cmdName]);\r\n if(span.style.cssText.replace(/^\\s+$/,'').length == 0){\r\n domUtils.remove(span,true)\r\n }\r\n });\r\n rng.moveToBookmark(bk)\r\n }\r\n }\r\n }\r\n\r\n }\r\n function mergesibling(rng,cmdName,value) {\r\n var collapsed = rng.collapsed,\r\n bk = rng.createBookmark(), common;\r\n if (collapsed) {\r\n common = bk.start.parentNode;\r\n while (dtd.$inline[common.tagName]) {\r\n common = common.parentNode;\r\n }\r\n } else {\r\n common = domUtils.getCommonAncestor(bk.start, bk.end);\r\n }\r\n utils.each(domUtils.getElementsByTagName(common, 'span'), function (span) {\r\n if (!span.parentNode || domUtils.isBookmarkNode(span))return;\r\n if (/\\s*border\\s*:\\s*none;?\\s*/i.test(span.style.cssText)) {\r\n if(/^\\s*border\\s*:\\s*none;?\\s*$/.test(span.style.cssText)){\r\n domUtils.remove(span, true);\r\n }else{\r\n domUtils.removeStyle(span,'border');\r\n }\r\n return\r\n }\r\n if (/border/i.test(span.style.cssText) && span.parentNode.tagName == 'SPAN' && /border/i.test(span.parentNode.style.cssText)) {\r\n span.style.cssText = span.style.cssText.replace(/border[^:]*:[^;]+;?/gi, '');\r\n }\r\n if(!(cmdName=='fontborder' && value=='none')){\r\n var next = span.nextSibling;\r\n while (next && next.nodeType == 1 && next.tagName == 'SPAN' ) {\r\n if(domUtils.isBookmarkNode(next) && cmdName == 'fontborder') {\r\n span.appendChild(next);\r\n next = span.nextSibling;\r\n continue;\r\n }\r\n if (next.style.cssText == span.style.cssText) {\r\n domUtils.moveChild(next, span);\r\n domUtils.remove(next);\r\n }\r\n if (span.nextSibling === next)\r\n break;\r\n next = span.nextSibling;\r\n }\r\n }\r\n\r\n\r\n mergeWithParent(span);\r\n if(browser.ie && browser.version > 8 ){\r\n //拷贝父亲们的特别的属性,这里只做背景颜色的处理\r\n var parent = domUtils.findParent(span,function(n){return n.tagName == 'SPAN' && /background-color/.test(n.style.cssText)});\r\n if(parent && !/background-color/.test(span.style.cssText)){\r\n span.style.backgroundColor = parent.style.backgroundColor;\r\n }\r\n }\r\n\r\n });\r\n rng.moveToBookmark(bk);\r\n mergeChild(rng,cmdName,value)\r\n }\r\n\r\n me.addInputRule(function (root) {\r\n utils.each(root.getNodesByTagName('u s del font strike'), function (node) {\r\n if (node.tagName == 'font') {\r\n var cssStyle = [];\r\n for (var p in node.attrs) {\r\n switch (p) {\r\n case 'size':\r\n cssStyle.push('font-size:' +\r\n ({\r\n '1':'10',\r\n '2':'12',\r\n '3':'16',\r\n '4':'18',\r\n '5':'24',\r\n '6':'32',\r\n '7':'48'\r\n }[node.attrs[p]] || node.attrs[p]) + 'px');\r\n break;\r\n case 'color':\r\n cssStyle.push('color:' + node.attrs[p]);\r\n break;\r\n case 'face':\r\n cssStyle.push('font-family:' + node.attrs[p]);\r\n break;\r\n case 'style':\r\n cssStyle.push(node.attrs[p]);\r\n }\r\n }\r\n node.attrs = {\r\n 'style': cssStyle.join(';')\r\n };\r\n } else {\r\n var val = node.tagName == 'u' ? 'underline' : 'line-through';\r\n node.attrs = {\r\n 'style': (node.getAttr('style') || '') + 'text-decoration:' + val + ';'\r\n }\r\n }\r\n node.tagName = 'span';\r\n });\r\n// utils.each(root.getNodesByTagName('span'), function (node) {\r\n// var val;\r\n// if(val = node.getAttr('class')){\r\n// if(/fontstrikethrough/.test(val)){\r\n// node.setStyle('text-decoration','line-through');\r\n// if(node.attrs['class']){\r\n// node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,'');\r\n// }else{\r\n// node.setAttr('class')\r\n// }\r\n// }\r\n// if(/fontborder/.test(val)){\r\n// node.setStyle('border','1px solid #000');\r\n// if(node.attrs['class']){\r\n// node.attrs['class'] = node.attrs['class'].replace(/fontborder/,'');\r\n// }else{\r\n// node.setAttr('class')\r\n// }\r\n// }\r\n// }\r\n// });\r\n });\r\n// me.addOutputRule(function(root){\r\n// utils.each(root.getNodesByTagName('span'), function (node) {\r\n// var val;\r\n// if(val = node.getStyle('text-decoration')){\r\n// if(/line-through/.test(val)){\r\n// if(node.attrs['class']){\r\n// node.attrs['class'] += ' fontstrikethrough';\r\n// }else{\r\n// node.setAttr('class','fontstrikethrough')\r\n// }\r\n// }\r\n//\r\n// node.setStyle('text-decoration')\r\n// }\r\n// if(val = node.getStyle('border')){\r\n// if(/1px/.test(val) && /solid/.test(val)){\r\n// if(node.attrs['class']){\r\n// node.attrs['class'] += ' fontborder';\r\n//\r\n// }else{\r\n// node.setAttr('class','fontborder')\r\n// }\r\n// }\r\n// node.setStyle('border')\r\n//\r\n// }\r\n// });\r\n// });\r\n for (var p in fonts) {\r\n (function (cmd, style) {\r\n UE.commands[cmd] = {\r\n execCommand: function (cmdName, value) {\r\n value = value || (this.queryCommandState(cmdName) ? 'none' : cmdName == 'underline' ? 'underline' :\r\n cmdName == 'fontborder' ? '1px solid #000' :\r\n 'line-through');\r\n var me = this,\r\n range = this.selection.getRange(),\r\n text;\r\n\r\n if (value == 'default') {\r\n\r\n if (range.collapsed) {\r\n text = me.document.createTextNode('font');\r\n range.insertNode(text).select();\r\n\r\n }\r\n me.execCommand('removeFormat', 'span,a', style);\r\n if (text) {\r\n range.setStartBefore(text).collapse(true);\r\n domUtils.remove(text);\r\n }\r\n mergesibling(range,cmdName,value);\r\n range.select()\r\n } else {\r\n if (!range.collapsed) {\r\n if (needCmd[cmd] && me.queryCommandValue(cmd)) {\r\n me.execCommand('removeFormat', 'span,a', style);\r\n }\r\n range = me.selection.getRange();\r\n\r\n range.applyInlineStyle('span', {'style': style + ':' + value});\r\n mergesibling(range, cmdName,value);\r\n range.select();\r\n } else {\r\n\r\n var span = domUtils.findParentByTagName(range.startContainer, 'span', true);\r\n text = me.document.createTextNode('font');\r\n if (span && !span.children.length && !span[browser.ie ? 'innerText' : 'textContent'].replace(fillCharReg, '').length) {\r\n //for ie hack when enter\r\n range.insertNode(text);\r\n if (needCmd[cmd]) {\r\n range.selectNode(text).select();\r\n me.execCommand('removeFormat', 'span,a', style, null);\r\n\r\n span = domUtils.findParentByTagName(text, 'span', true);\r\n range.setStartBefore(text);\r\n\r\n }\r\n span && (span.style.cssText += ';' + style + ':' + value);\r\n range.collapse(true).select();\r\n\r\n\r\n } else {\r\n range.insertNode(text);\r\n range.selectNode(text).select();\r\n span = range.document.createElement('span');\r\n\r\n if (needCmd[cmd]) {\r\n //a标签内的不处理跳过\r\n if (domUtils.findParentByTagName(text, 'a', true)) {\r\n range.setStartBefore(text).setCursor();\r\n domUtils.remove(text);\r\n return;\r\n }\r\n me.execCommand('removeFormat', 'span,a', style);\r\n }\r\n\r\n span.style.cssText = style + ':' + value;\r\n\r\n\r\n text.parentNode.insertBefore(span, text);\r\n //修复,span套span 但样式不继承的问题\r\n if (!browser.ie || browser.ie && browser.version == 9) {\r\n var spanParent = span.parentNode;\r\n while (!domUtils.isBlockElm(spanParent)) {\r\n if (spanParent.tagName == 'SPAN') {\r\n //opera合并style不会加入\";\"\r\n span.style.cssText = spanParent.style.cssText + \";\" + span.style.cssText;\r\n }\r\n spanParent = spanParent.parentNode;\r\n }\r\n }\r\n\r\n\r\n if (opera) {\r\n setTimeout(function () {\r\n range.setStart(span, 0).collapse(true);\r\n mergesibling(range, cmdName,value);\r\n range.select();\r\n });\r\n } else {\r\n range.setStart(span, 0).collapse(true);\r\n mergesibling(range,cmdName,value);\r\n range.select();\r\n }\r\n\r\n //trace:981\r\n //domUtils.mergeToParent(span)\r\n }\r\n domUtils.remove(text);\r\n }\r\n\r\n\r\n }\r\n return true;\r\n },\r\n queryCommandValue: function (cmdName) {\r\n var startNode = this.selection.getStart();\r\n\r\n //trace:946\r\n if (cmdName == 'underline' || cmdName == 'strikethrough') {\r\n var tmpNode = startNode, value;\r\n while (tmpNode && !domUtils.isBlockElm(tmpNode) && !domUtils.isBody(tmpNode)) {\r\n if (tmpNode.nodeType == 1) {\r\n value = domUtils.getComputedStyle(tmpNode, style);\r\n if (value != 'none') {\r\n return value;\r\n }\r\n }\r\n\r\n tmpNode = tmpNode.parentNode;\r\n }\r\n return 'none';\r\n }\r\n if (cmdName == 'fontborder') {\r\n var tmp = startNode, val;\r\n while (tmp && dtd.$inline[tmp.tagName]) {\r\n if (val = domUtils.getComputedStyle(tmp, 'border')) {\r\n\r\n if (/1px/.test(val) && /solid/.test(val)) {\r\n return val;\r\n }\r\n }\r\n tmp = tmp.parentNode;\r\n }\r\n return ''\r\n }\r\n\r\n if( cmdName == 'FontSize' ) {\r\n var styleVal = domUtils.getComputedStyle(startNode, style),\r\n tmp = /^([\\d\\.]+)(\\w+)$/.exec( styleVal );\r\n\r\n if( tmp ) {\r\n\r\n return Math.floor( tmp[1] ) + tmp[2];\r\n\r\n }\r\n\r\n return styleVal;\r\n\r\n }\r\n\r\n return domUtils.getComputedStyle(startNode, style);\r\n },\r\n queryCommandState: function (cmdName) {\r\n if (!needCmd[cmdName])\r\n return 0;\r\n var val = this.queryCommandValue(cmdName);\r\n if (cmdName == 'fontborder') {\r\n return /1px/.test(val) && /solid/.test(val)\r\n } else {\r\n return cmdName == 'underline' ? /underline/.test(val) : /line\\-through/.test(val);\r\n\r\n }\r\n\r\n }\r\n };\r\n })(p, fonts[p]);\r\n }\r\n};\r\n\r\n// plugins/link.js\r\n/**\r\n * 超链接\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 插入超链接\r\n * @command link\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } options 设置自定义属性,例如:url、title、target\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'link', '{\r\n * url:'ueditor.baidu.com',\r\n * title:'ueditor',\r\n * target:'_blank'\r\n * }' );\r\n * ```\r\n */\r\n/**\r\n * 返回当前选中的第一个超链接节点\r\n * @command link\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { Element } 超链接节点\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'link' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 取消超链接\r\n * @command unlink\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'unlink');\r\n * ```\r\n */\r\n\r\nUE.plugins['link'] = function(){\r\n function optimize( range ) {\r\n var start = range.startContainer,end = range.endContainer;\r\n\r\n if ( start = domUtils.findParentByTagName( start, 'a', true ) ) {\r\n range.setStartBefore( start );\r\n }\r\n if ( end = domUtils.findParentByTagName( end, 'a', true ) ) {\r\n range.setEndAfter( end );\r\n }\r\n }\r\n\r\n\r\n UE.commands['unlink'] = {\r\n execCommand : function() {\r\n var range = this.selection.getRange(),\r\n bookmark;\r\n if(range.collapsed && !domUtils.findParentByTagName( range.startContainer, 'a', true )){\r\n return;\r\n }\r\n bookmark = range.createBookmark();\r\n optimize( range );\r\n range.removeInlineStyle( 'a' ).moveToBookmark( bookmark ).select();\r\n },\r\n queryCommandState : function(){\r\n return !this.highlight && this.queryCommandValue('link') ? 0 : -1;\r\n }\r\n\r\n };\r\n function doLink(range,opt,me){\r\n var rngClone = range.cloneRange(),\r\n link = me.queryCommandValue('link');\r\n optimize( range = range.adjustmentBoundary() );\r\n var start = range.startContainer;\r\n if(start.nodeType == 1 && link){\r\n start = start.childNodes[range.startOffset];\r\n if(start && start.nodeType == 1 && start.tagName == 'A' && /^(?:https?|ftp|file)\\s*:\\s*\\/\\//.test(start[browser.ie?'innerText':'textContent'])){\r\n start[browser.ie ? 'innerText' : 'textContent'] = utils.html(opt.textValue||opt.href);\r\n\r\n }\r\n }\r\n if( !rngClone.collapsed || link){\r\n range.removeInlineStyle( 'a' );\r\n rngClone = range.cloneRange();\r\n }\r\n\r\n if ( rngClone.collapsed ) {\r\n var a = range.document.createElement( 'a'),\r\n text = '';\r\n if(opt.textValue){\r\n\r\n text = utils.html(opt.textValue);\r\n delete opt.textValue;\r\n }else{\r\n text = utils.html(opt.href);\r\n\r\n }\r\n domUtils.setAttributes( a, opt );\r\n start = domUtils.findParentByTagName( rngClone.startContainer, 'a', true );\r\n if(start && domUtils.isInNodeEndBoundary(rngClone,start)){\r\n range.setStartAfter(start).collapse(true);\r\n\r\n }\r\n a[browser.ie ? 'innerText' : 'textContent'] = text;\r\n range.insertNode(a).selectNode( a );\r\n } else {\r\n range.applyInlineStyle( 'a', opt );\r\n\r\n }\r\n }\r\n UE.commands['link'] = {\r\n execCommand : function( cmdName, opt ) {\r\n var range;\r\n opt._href && (opt._href = utils.unhtml(opt._href,/[<\">]/g));\r\n opt.href && (opt.href = utils.unhtml(opt.href,/[<\">]/g));\r\n opt.textValue && (opt.textValue = utils.unhtml(opt.textValue,/[<\">]/g));\r\n doLink(range=this.selection.getRange(),opt,this);\r\n //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题\r\n range.collapse().select(true);\r\n\r\n },\r\n queryCommandValue : function() {\r\n var range = this.selection.getRange(),\r\n node;\r\n if ( range.collapsed ) {\r\n// node = this.selection.getStart();\r\n //在ie下getstart()取值偏上了\r\n node = range.startContainer;\r\n node = node.nodeType == 1 ? node : node.parentNode;\r\n\r\n if ( node && (node = domUtils.findParentByTagName( node, 'a', true )) && ! domUtils.isInNodeEndBoundary(range,node)) {\r\n\r\n return node;\r\n }\r\n } else {\r\n //trace:1111 如果是<p><a>xx</a></p> startContainer是p就会找不到a\r\n range.shrinkBoundary();\r\n var start = range.startContainer.nodeType == 3 || !range.startContainer.childNodes[range.startOffset] ? range.startContainer : range.startContainer.childNodes[range.startOffset],\r\n end = range.endContainer.nodeType == 3 || range.endOffset == 0 ? range.endContainer : range.endContainer.childNodes[range.endOffset-1],\r\n common = range.getCommonAncestor();\r\n node = domUtils.findParentByTagName( common, 'a', true );\r\n if ( !node && common.nodeType == 1){\r\n\r\n var as = common.getElementsByTagName( 'a' ),\r\n ps,pe;\r\n\r\n for ( var i = 0,ci; ci = as[i++]; ) {\r\n ps = domUtils.getPosition( ci, start ),pe = domUtils.getPosition( ci,end);\r\n if ( (ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS)\r\n &&\r\n (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS)\r\n ) {\r\n node = ci;\r\n break;\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n\r\n },\r\n queryCommandState : function() {\r\n //判断如果是视频的话连接不可用\r\n //fix 853\r\n var img = this.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\")!=-1);\r\n return flag ? -1 : 0;\r\n }\r\n };\r\n};\r\n\r\n// plugins/iframe.js\r\n///import core\r\n///import plugins\\inserthtml.js\r\n///commands 插入框架\r\n///commandsName InsertFrame\r\n///commandsTitle 插入Iframe\r\n///commandsDialog dialogs\\insertframe\r\n\r\nUE.plugins['insertframe'] = function() {\r\n var me =this;\r\n function deleteIframe(){\r\n me._iframe && delete me._iframe;\r\n }\r\n\r\n me.addListener(\"selectionchange\",function(){\r\n deleteIframe();\r\n });\r\n\r\n};\r\n\r\n\r\n\r\n// plugins/scrawl.js\r\n///import core\r\n///commands 涂鸦\r\n///commandsName Scrawl\r\n///commandsTitle 涂鸦\r\n///commandsDialog dialogs\\scrawl\r\nUE.commands['scrawl'] = {\r\n queryCommandState : function(){\r\n return ( browser.ie && browser.version <= 8 ) ? -1 :0;\r\n }\r\n};\r\n\r\n\r\n// plugins/removeformat.js\r\n/**\r\n * 清除格式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 清除文字样式\r\n * @command removeformat\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param {String} tags 以逗号隔开的标签。如:strong\r\n * @param {String} style 样式如:color\r\n * @param {String} attrs 属性如:width\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'removeformat', 'strong','color','width' );\r\n * ```\r\n */\r\n\r\nUE.plugins['removeformat'] = function(){\r\n var me = this;\r\n me.setOpt({\r\n 'removeFormatTags': 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var',\r\n 'removeFormatAttributes':'class,style,lang,width,height,align,hspace,valign'\r\n });\r\n me.commands['removeformat'] = {\r\n execCommand : function( cmdName, tags, style, attrs,notIncludeA ) {\r\n\r\n var tagReg = new RegExp( '^(?:' + (tags || this.options.removeFormatTags).replace( /,/g, '|' ) + ')$', 'i' ) ,\r\n removeFormatAttributes = style ? [] : (attrs || this.options.removeFormatAttributes).split( ',' ),\r\n range = new dom.Range( this.document ),\r\n bookmark,node,parent,\r\n filter = function( node ) {\r\n return node.nodeType == 1;\r\n };\r\n\r\n function isRedundantSpan (node) {\r\n if (node.nodeType == 3 || node.tagName.toLowerCase() != 'span'){\r\n return 0;\r\n }\r\n if (browser.ie) {\r\n //ie 下判断实效,所以只能简单用style来判断\r\n //return node.style.cssText == '' ? 1 : 0;\r\n var attrs = node.attributes;\r\n if ( attrs.length ) {\r\n for ( var i = 0,l = attrs.length; i<l; i++ ) {\r\n if ( attrs[i].specified ) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n }\r\n }\r\n return !node.attributes.length;\r\n }\r\n function doRemove( range ) {\r\n\r\n var bookmark1 = range.createBookmark();\r\n if ( range.collapsed ) {\r\n range.enlarge( true );\r\n }\r\n\r\n //不能把a标签切了\r\n if(!notIncludeA){\r\n var aNode = domUtils.findParentByTagName(range.startContainer,'a',true);\r\n if(aNode){\r\n range.setStartBefore(aNode);\r\n }\r\n\r\n aNode = domUtils.findParentByTagName(range.endContainer,'a',true);\r\n if(aNode){\r\n range.setEndAfter(aNode);\r\n }\r\n\r\n }\r\n\r\n\r\n bookmark = range.createBookmark();\r\n\r\n node = bookmark.start;\r\n\r\n //切开始\r\n while ( (parent = node.parentNode) && !domUtils.isBlockElm( parent ) ) {\r\n domUtils.breakParent( node, parent );\r\n\r\n domUtils.clearEmptySibling( node );\r\n }\r\n if ( bookmark.end ) {\r\n //切结束\r\n node = bookmark.end;\r\n while ( (parent = node.parentNode) && !domUtils.isBlockElm( parent ) ) {\r\n domUtils.breakParent( node, parent );\r\n domUtils.clearEmptySibling( node );\r\n }\r\n\r\n //开始去除样式\r\n var current = domUtils.getNextDomNode( bookmark.start, false, filter ),\r\n next;\r\n while ( current ) {\r\n if ( current == bookmark.end ) {\r\n break;\r\n }\r\n\r\n next = domUtils.getNextDomNode( current, true, filter );\r\n\r\n if ( !dtd.$empty[current.tagName.toLowerCase()] && !domUtils.isBookmarkNode( current ) ) {\r\n if ( tagReg.test( current.tagName ) ) {\r\n if ( style ) {\r\n domUtils.removeStyle( current, style );\r\n if ( isRedundantSpan( current ) && style != 'text-decoration'){\r\n domUtils.remove( current, true );\r\n }\r\n } else {\r\n domUtils.remove( current, true );\r\n }\r\n } else {\r\n //trace:939 不能把list上的样式去掉\r\n if(!dtd.$tableContent[current.tagName] && !dtd.$list[current.tagName]){\r\n domUtils.removeAttributes( current, removeFormatAttributes );\r\n if ( isRedundantSpan( current ) ){\r\n domUtils.remove( current, true );\r\n }\r\n }\r\n\r\n }\r\n }\r\n current = next;\r\n }\r\n }\r\n //trace:1035\r\n //trace:1096 不能把td上的样式去掉,比如边框\r\n var pN = bookmark.start.parentNode;\r\n if(domUtils.isBlockElm(pN) && !dtd.$tableContent[pN.tagName] && !dtd.$list[pN.tagName]){\r\n domUtils.removeAttributes( pN,removeFormatAttributes );\r\n }\r\n pN = bookmark.end.parentNode;\r\n if(bookmark.end && domUtils.isBlockElm(pN) && !dtd.$tableContent[pN.tagName]&& !dtd.$list[pN.tagName]){\r\n domUtils.removeAttributes( pN,removeFormatAttributes );\r\n }\r\n range.moveToBookmark( bookmark ).moveToBookmark(bookmark1);\r\n //清除冗余的代码 <b><bookmark></b>\r\n var node = range.startContainer,\r\n tmp,\r\n collapsed = range.collapsed;\r\n while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){\r\n tmp = node.parentNode;\r\n range.setStartBefore(node);\r\n //trace:937\r\n //更新结束边界\r\n if(range.startContainer === range.endContainer){\r\n range.endOffset--;\r\n }\r\n domUtils.remove(node);\r\n node = tmp;\r\n }\r\n\r\n if(!collapsed){\r\n node = range.endContainer;\r\n while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){\r\n tmp = node.parentNode;\r\n range.setEndBefore(node);\r\n domUtils.remove(node);\r\n\r\n node = tmp;\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n range = this.selection.getRange();\r\n doRemove( range );\r\n range.select();\r\n\r\n }\r\n\r\n };\r\n\r\n};\r\n\r\n\r\n// plugins/blockquote.js\r\n/**\r\n * 添加引用\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 添加引用\r\n * @command blockquote\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'blockquote' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 添加引用\r\n * @command blockquote\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } attrs 节点属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'blockquote',{\r\n * style: \"color: red;\"\r\n * } );\r\n * ```\r\n */\r\n\r\n\r\nUE.plugins['blockquote'] = function(){\r\n var me = this;\r\n function getObj(editor){\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(),'blockquote');\r\n }\r\n me.commands['blockquote'] = {\r\n execCommand : function( cmdName, attrs ) {\r\n var range = this.selection.getRange(),\r\n obj = getObj(this),\r\n blockquote = dtd.blockquote,\r\n bookmark = range.createBookmark();\r\n\r\n if ( obj ) {\r\n\r\n var start = range.startContainer,\r\n startBlock = domUtils.isBlockElm(start) ? start : domUtils.findParent(start,function(node){return domUtils.isBlockElm(node)}),\r\n\r\n end = range.endContainer,\r\n endBlock = domUtils.isBlockElm(end) ? end : domUtils.findParent(end,function(node){return domUtils.isBlockElm(node)});\r\n\r\n //处理一下li\r\n startBlock = domUtils.findParentByTagName(startBlock,'li',true) || startBlock;\r\n endBlock = domUtils.findParentByTagName(endBlock,'li',true) || endBlock;\r\n\r\n\r\n if(startBlock.tagName == 'LI' || startBlock.tagName == 'TD' || startBlock === obj || domUtils.isBody(startBlock)){\r\n domUtils.remove(obj,true);\r\n }else{\r\n domUtils.breakParent(startBlock,obj);\r\n }\r\n\r\n if(startBlock !== endBlock){\r\n obj = domUtils.findParentByTagName(endBlock,'blockquote');\r\n if(obj){\r\n if(endBlock.tagName == 'LI' || endBlock.tagName == 'TD'|| domUtils.isBody(endBlock)){\r\n obj.parentNode && domUtils.remove(obj,true);\r\n }else{\r\n domUtils.breakParent(endBlock,obj);\r\n }\r\n\r\n }\r\n }\r\n\r\n var blockquotes = domUtils.getElementsByTagName(this.document,'blockquote');\r\n for(var i=0,bi;bi=blockquotes[i++];){\r\n if(!bi.childNodes.length){\r\n domUtils.remove(bi);\r\n }else if(domUtils.getPosition(bi,startBlock)&domUtils.POSITION_FOLLOWING && domUtils.getPosition(bi,endBlock)&domUtils.POSITION_PRECEDING){\r\n domUtils.remove(bi,true);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n } else {\r\n\r\n var tmpRange = range.cloneRange(),\r\n node = tmpRange.startContainer.nodeType == 1 ? tmpRange.startContainer : tmpRange.startContainer.parentNode,\r\n preNode = node,\r\n doEnd = 1;\r\n\r\n //调整开始\r\n while ( 1 ) {\r\n if ( domUtils.isBody(node) ) {\r\n if ( preNode !== node ) {\r\n if ( range.collapsed ) {\r\n tmpRange.selectNode( preNode );\r\n doEnd = 0;\r\n } else {\r\n tmpRange.setStartBefore( preNode );\r\n }\r\n }else{\r\n tmpRange.setStart(node,0);\r\n }\r\n\r\n break;\r\n }\r\n if ( !blockquote[node.tagName] ) {\r\n if ( range.collapsed ) {\r\n tmpRange.selectNode( preNode );\r\n } else{\r\n tmpRange.setStartBefore( preNode);\r\n }\r\n break;\r\n }\r\n\r\n preNode = node;\r\n node = node.parentNode;\r\n }\r\n\r\n //调整结束\r\n if ( doEnd ) {\r\n preNode = node = node = tmpRange.endContainer.nodeType == 1 ? tmpRange.endContainer : tmpRange.endContainer.parentNode;\r\n while ( 1 ) {\r\n\r\n if ( domUtils.isBody( node ) ) {\r\n if ( preNode !== node ) {\r\n\r\n tmpRange.setEndAfter( preNode );\r\n\r\n } else {\r\n tmpRange.setEnd( node, node.childNodes.length );\r\n }\r\n\r\n break;\r\n }\r\n if ( !blockquote[node.tagName] ) {\r\n tmpRange.setEndAfter( preNode );\r\n break;\r\n }\r\n\r\n preNode = node;\r\n node = node.parentNode;\r\n }\r\n\r\n }\r\n\r\n\r\n node = range.document.createElement( 'blockquote' );\r\n domUtils.setAttributes( node, attrs );\r\n node.appendChild( tmpRange.extractContents() );\r\n tmpRange.insertNode( node );\r\n //去除重复的\r\n var childs = domUtils.getElementsByTagName(node,'blockquote');\r\n for(var i=0,ci;ci=childs[i++];){\r\n if(ci.parentNode){\r\n domUtils.remove(ci,true);\r\n }\r\n }\r\n\r\n }\r\n range.moveToBookmark( bookmark ).select();\r\n },\r\n queryCommandState : function() {\r\n return getObj(this) ? 1 : 0;\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n// plugins/convertcase.js\r\n/**\r\n * 大小写转换\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 把选区内文本变大写,与“tolowercase”命令互斥\r\n * @command touppercase\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'touppercase' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 把选区内文本变小写,与“touppercase”命令互斥\r\n * @command tolowercase\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'tolowercase' );\r\n * ```\r\n */\r\nUE.commands['touppercase'] =\r\nUE.commands['tolowercase'] = {\r\n execCommand:function (cmd) {\r\n var me = this;\r\n var rng = me.selection.getRange();\r\n if(rng.collapsed){\r\n return rng;\r\n }\r\n var bk = rng.createBookmark(),\r\n bkEnd = bk.end,\r\n filterFn = function( node ) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace( node );\r\n },\r\n curNode = domUtils.getNextDomNode( bk.start, false, filterFn );\r\n while ( curNode && (domUtils.getPosition( curNode, bkEnd ) & domUtils.POSITION_PRECEDING) ) {\r\n\r\n if ( curNode.nodeType == 3 ) {\r\n curNode.nodeValue = curNode.nodeValue[cmd == 'touppercase' ? 'toUpperCase' : 'toLowerCase']();\r\n }\r\n curNode = domUtils.getNextDomNode( curNode, true, filterFn );\r\n if(curNode === bkEnd){\r\n break;\r\n }\r\n\r\n }\r\n rng.moveToBookmark(bk).select();\r\n }\r\n};\r\n\r\n\r\n\r\n// plugins/indent.js\r\n/**\r\n * 首行缩进\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 缩进\r\n * @command indent\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'indent' );\r\n * ```\r\n */\r\nUE.commands['indent'] = {\r\n execCommand : function() {\r\n var me = this,value = me.queryCommandState(\"indent\") ? \"0em\" : (me.options.indentValue || '2em');\r\n me.execCommand('Paragraph','p',{style:'text-indent:'+ value});\r\n },\r\n queryCommandState : function() {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),'p h1 h2 h3 h4 h5 h6');\r\n return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0;\r\n }\r\n\r\n};\r\n\r\n\r\n// plugins/print.js\r\n/**\r\n * 打印\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 打印\r\n * @command print\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'print' );\r\n * ```\r\n */\r\nUE.commands['print'] = {\r\n execCommand : function(){\r\n this.window.print();\r\n },\r\n notNeedUndo : 1\r\n};\r\n\r\n\r\n\r\n// plugins/preview.js\r\n/**\r\n * 预览\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 预览\r\n * @command preview\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'preview' );\r\n * ```\r\n */\r\nUE.commands['preview'] = {\r\n execCommand : function(){\r\n var w = window.open('', '_blank', ''),\r\n d = w.document;\r\n d.open();\r\n d.write('<!DOCTYPE html><html><head><meta charset=\"utf-8\"/><script src=\"'+this.options.UEDITOR_HOME_URL+'ueditor.parse.js\"></script><script>' +\r\n \"setTimeout(function(){uParse('div',{rootPath: '\"+ this.options.UEDITOR_HOME_URL +\"'})},300)\" +\r\n '</script></head><body><div>'+this.getContent(null,null,true)+'</div></body></html>');\r\n d.close();\r\n },\r\n notNeedUndo : 1\r\n};\r\n\r\n\r\n// plugins/selectall.js\r\n/**\r\n * 全选\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 选中所有内容\r\n * @command selectall\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'selectall' );\r\n * ```\r\n */\r\nUE.plugins['selectall'] = function(){\r\n var me = this;\r\n me.commands['selectall'] = {\r\n execCommand : function(){\r\n //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标\r\n var me = this,body = me.body,\r\n range = me.selection.getRange();\r\n range.selectNodeContents(body);\r\n if(domUtils.isEmptyBlock(body)){\r\n //opera不能自动合并到元素的里边,要手动处理一下\r\n if(browser.opera && body.firstChild && body.firstChild.nodeType == 1){\r\n range.setStartAtFirst(body.firstChild);\r\n }\r\n range.collapse(true);\r\n }\r\n range.select(true);\r\n },\r\n notNeedUndo : 1\r\n };\r\n\r\n\r\n //快捷键\r\n me.addshortcutkey({\r\n \"selectAll\" : \"ctrl+65\"\r\n });\r\n};\r\n\r\n\r\n// plugins/paragraph.js\r\n/**\r\n * 段落样式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 段落格式\r\n * @command paragraph\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\r\n * @param {Object} attrs 标签的属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'Paragraph','h1','{\r\n * class:'test'\r\n * }' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 返回选区内节点标签名\r\n * @command paragraph\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 节点标签名\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'Paragraph' );\r\n * ```\r\n */\r\n\r\nUE.plugins['paragraph'] = function() {\r\n var me = this,\r\n block = domUtils.isBlockElm,\r\n notExchange = ['TD','LI','PRE'],\r\n\r\n doParagraph = function(range,style,attrs,sourceCmdName){\r\n var bookmark = range.createBookmark(),\r\n filterFn = function( node ) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace( node );\r\n },\r\n para;\r\n\r\n range.enlarge( true );\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode( bookmark2.start, false, filterFn ),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while ( current && !(domUtils.getPosition( current, bookmark2.end ) & domUtils.POSITION_FOLLOWING) ) {\r\n if ( current.nodeType == 3 || !block( current ) ) {\r\n tmpRange.setStartBefore( current );\r\n while ( current && current !== bookmark2.end && !block( current ) ) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode( current, false, null, function( node ) {\r\n return !block( node );\r\n } );\r\n }\r\n tmpRange.setEndAfter( tmpNode );\r\n \r\n para = range.document.createElement( style );\r\n if(attrs){\r\n domUtils.setAttributes(para,attrs);\r\n if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){\r\n para.style.cssText = attrs.style;\r\n }\r\n }\r\n para.appendChild( tmpRange.extractContents() );\r\n //需要内容占位\r\n if(domUtils.isEmptyNode(para)){\r\n domUtils.fillChar(range.document,para);\r\n \r\n }\r\n\r\n tmpRange.insertNode( para );\r\n\r\n var parent = para.parentNode;\r\n //如果para上一级是一个block元素且不是body,td就删除它\r\n if ( block( parent ) && !domUtils.isBody( para.parentNode ) && utils.indexOf(notExchange,parent.tagName)==-1) {\r\n //存储dir,style\r\n if(!(sourceCmdName && sourceCmdName == 'customstyle')){\r\n parent.getAttribute('dir') && para.setAttribute('dir',parent.getAttribute('dir'));\r\n //trace:1070\r\n parent.style.cssText && (para.style.cssText = parent.style.cssText + ';' + para.style.cssText);\r\n //trace:1030\r\n parent.style.textAlign && !para.style.textAlign && (para.style.textAlign = parent.style.textAlign);\r\n parent.style.textIndent && !para.style.textIndent && (para.style.textIndent = parent.style.textIndent);\r\n parent.style.padding && !para.style.padding && (para.style.padding = parent.style.padding);\r\n }\r\n\r\n //trace:1706 选择的就是h1-6要删除\r\n if(attrs && /h\\d/i.test(parent.tagName) && !/h\\d/i.test(para.tagName) ){\r\n domUtils.setAttributes(parent,attrs);\r\n if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){\r\n parent.style.cssText = attrs.style;\r\n }\r\n domUtils.remove(para,true);\r\n para = parent;\r\n }else{\r\n domUtils.remove( para.parentNode, true );\r\n }\r\n\r\n }\r\n if( utils.indexOf(notExchange,parent.tagName)!=-1){\r\n current = parent;\r\n }else{\r\n current = para;\r\n }\r\n\r\n\r\n current = domUtils.getNextDomNode( current, false, filterFn );\r\n } else {\r\n current = domUtils.getNextDomNode( current, true, filterFn );\r\n }\r\n }\r\n return range.moveToBookmark( bookmark2 ).moveToBookmark( bookmark );\r\n };\r\n me.setOpt('paragraph',{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''});\r\n me.commands['paragraph'] = {\r\n execCommand : function( cmdName, style,attrs,sourceCmdName ) {\r\n var range = this.selection.getRange();\r\n //闭合时单独处理\r\n if(range.collapsed){\r\n var txt = this.document.createTextNode('p');\r\n range.insertNode(txt);\r\n //去掉冗余的fillchar\r\n if(browser.ie){\r\n var node = txt.previousSibling;\r\n if(node && domUtils.isWhitespace(node)){\r\n domUtils.remove(node);\r\n }\r\n node = txt.nextSibling;\r\n if(node && domUtils.isWhitespace(node)){\r\n domUtils.remove(node);\r\n }\r\n }\r\n\r\n }\r\n range = doParagraph(range,style,attrs,sourceCmdName);\r\n if(txt){\r\n range.setStartBefore(txt).collapse(true);\r\n var pN = txt.parentNode;\r\n\r\n domUtils.remove(txt);\r\n\r\n if(domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)){\r\n domUtils.fillNode(this.document,pN);\r\n }\r\n\r\n }\r\n\r\n if(browser.gecko && range.collapsed && range.startContainer.nodeType == 1){\r\n var child = range.startContainer.childNodes[range.startOffset];\r\n if(child && child.nodeType == 1 && child.tagName.toLowerCase() == style){\r\n range.setStart(child,0).collapse(true);\r\n }\r\n }\r\n //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了\r\n range.select();\r\n\r\n\r\n return true;\r\n },\r\n queryCommandValue : function() {\r\n var node = domUtils.filterNodeList(this.selection.getStartElementPath(),'p h1 h2 h3 h4 h5 h6');\r\n return node ? node.tagName.toLowerCase() : '';\r\n }\r\n };\r\n};\r\n\r\n\r\n// plugins/directionality.js\r\n/**\r\n * 设置文字输入的方向的插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n(function() {\r\n var block = domUtils.isBlockElm ,\r\n getObj = function(editor){\r\n// var startNode = editor.selection.getStart(),\r\n// parents;\r\n// if ( startNode ) {\r\n// //查找所有的是block的父亲节点\r\n// parents = domUtils.findParents( startNode, true, block, true );\r\n// for ( var i = 0,ci; ci = parents[i++]; ) {\r\n// if ( ci.getAttribute( 'dir' ) ) {\r\n// return ci;\r\n// }\r\n// }\r\n// }\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(),function(n){return n && n.nodeType == 1 && n.getAttribute('dir')});\r\n\r\n },\r\n doDirectionality = function(range,editor,forward){\r\n \r\n var bookmark,\r\n filterFn = function( node ) {\r\n return node.nodeType == 1 ? !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);\r\n },\r\n\r\n obj = getObj( editor );\r\n\r\n if ( obj && range.collapsed ) {\r\n obj.setAttribute( 'dir', forward );\r\n return range;\r\n }\r\n bookmark = range.createBookmark();\r\n range.enlarge( true );\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode( bookmark2.start, false, filterFn ),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while ( current && !(domUtils.getPosition( current, bookmark2.end ) & domUtils.POSITION_FOLLOWING) ) {\r\n if ( current.nodeType == 3 || !block( current ) ) {\r\n tmpRange.setStartBefore( current );\r\n while ( current && current !== bookmark2.end && !block( current ) ) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode( current, false, null, function( node ) {\r\n return !block( node );\r\n } );\r\n }\r\n tmpRange.setEndAfter( tmpNode );\r\n var common = tmpRange.getCommonAncestor();\r\n if ( !domUtils.isBody( common ) && block( common ) ) {\r\n //遍历到了block节点\r\n common.setAttribute( 'dir', forward );\r\n current = common;\r\n } else {\r\n //没有遍历到,添加一个block节点\r\n var p = range.document.createElement( 'p' );\r\n p.setAttribute( 'dir', forward );\r\n var frag = tmpRange.extractContents();\r\n p.appendChild( frag );\r\n tmpRange.insertNode( p );\r\n current = p;\r\n }\r\n\r\n current = domUtils.getNextDomNode( current, false, filterFn );\r\n } else {\r\n current = domUtils.getNextDomNode( current, true, filterFn );\r\n }\r\n }\r\n return range.moveToBookmark( bookmark2 ).moveToBookmark( bookmark );\r\n };\r\n\r\n /**\r\n * 文字输入方向\r\n * @command directionality\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'directionality', 'ltr');\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前选区的文字输入方向\r\n * @command directionality\r\n * @method queryCommandValue\r\n * @param { String } cmdName 命令字符串\r\n * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'directionality');\r\n * ```\r\n */\r\n UE.commands['directionality'] = {\r\n execCommand : function( cmdName,forward ) {\r\n var range = this.selection.getRange();\r\n //闭合时单独处理\r\n if(range.collapsed){\r\n var txt = this.document.createTextNode('d');\r\n range.insertNode(txt);\r\n }\r\n doDirectionality(range,this,forward);\r\n if(txt){\r\n range.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n\r\n range.select();\r\n return true;\r\n },\r\n queryCommandValue : function() {\r\n var node = getObj(this);\r\n return node ? node.getAttribute('dir') : 'ltr';\r\n }\r\n };\r\n})();\r\n\r\n\r\n\r\n// plugins/horizontal.js\r\n/**\r\n * 插入分割线插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 插入分割线\r\n * @command horizontal\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'horizontal' );\r\n * ```\r\n */\r\nUE.plugins['horizontal'] = function(){\r\n var me = this;\r\n me.commands['horizontal'] = {\r\n execCommand : function( cmdName ) {\r\n var me = this;\r\n if(me.queryCommandState(cmdName)!==-1){\r\n me.execCommand('insertHtml','<hr>');\r\n var range = me.selection.getRange(),\r\n start = range.startContainer;\r\n if(start.nodeType == 1 && !start.childNodes[range.startOffset] ){\r\n\r\n var tmp;\r\n if(tmp = start.childNodes[range.startOffset - 1]){\r\n if(tmp.nodeType == 1 && tmp.tagName == 'HR'){\r\n if(me.options.enterTag == 'p'){\r\n tmp = me.document.createElement('p');\r\n range.insertNode(tmp);\r\n range.setStart(tmp,0).setCursor();\r\n\r\n }else{\r\n tmp = me.document.createElement('br');\r\n range.insertNode(tmp);\r\n range.setStartBefore(tmp).setCursor();\r\n }\r\n }\r\n }\r\n\r\n }\r\n return true;\r\n }\r\n\r\n },\r\n //边界在table里不能加分隔线\r\n queryCommandState : function() {\r\n return domUtils.filterNodeList(this.selection.getStartElementPath(),'table') ? -1 : 0;\r\n }\r\n };\r\n// me.addListener('delkeyup',function(){\r\n// var rng = this.selection.getRange();\r\n// if(browser.ie && browser.version > 8){\r\n// rng.txtToElmBoundary(true);\r\n// if(domUtils.isStartInblock(rng)){\r\n// var tmpNode = rng.startContainer;\r\n// var pre = tmpNode.previousSibling;\r\n// if(pre && domUtils.isTagNode(pre,'hr')){\r\n// domUtils.remove(pre);\r\n// rng.select();\r\n// return;\r\n// }\r\n// }\r\n// }\r\n// if(domUtils.isBody(rng.startContainer)){\r\n// var hr = rng.startContainer.childNodes[rng.startOffset -1];\r\n// if(hr && hr.nodeName == 'HR'){\r\n// var next = hr.nextSibling;\r\n// if(next){\r\n// rng.setStart(next,0)\r\n// }else if(hr.previousSibling){\r\n// rng.setStartAtLast(hr.previousSibling)\r\n// }else{\r\n// var p = this.document.createElement('p');\r\n// hr.parentNode.insertBefore(p,hr);\r\n// domUtils.fillNode(this.document,p);\r\n// rng.setStart(p,0);\r\n// }\r\n// domUtils.remove(hr);\r\n// rng.setCursor(false,true);\r\n// }\r\n// }\r\n// })\r\n me.addListener('delkeydown',function(name,evt){\r\n var rng = this.selection.getRange();\r\n rng.txtToElmBoundary(true);\r\n if(domUtils.isStartInblock(rng)){\r\n var tmpNode = rng.startContainer;\r\n var pre = tmpNode.previousSibling;\r\n if(pre && domUtils.isTagNode(pre,'hr')){\r\n domUtils.remove(pre);\r\n rng.select();\r\n domUtils.preventDefault(evt);\r\n return true;\r\n\r\n }\r\n }\r\n\r\n })\r\n};\r\n\r\n\r\n\r\n// plugins/time.js\r\n/**\r\n * 插入时间和日期\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 插入时间,默认格式:12:59:59\r\n * @command time\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'time');\r\n * ```\r\n */\r\n\r\n/**\r\n * 插入日期,默认格式:2013-08-30\r\n * @command date\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'date');\r\n * ```\r\n */\r\nUE.commands['time'] = UE.commands[\"date\"] = {\r\n execCommand : function(cmd, format){\r\n var date = new Date;\r\n\r\n function formatTime(date, format) {\r\n var hh = ('0' + date.getHours()).slice(-2),\r\n ii = ('0' + date.getMinutes()).slice(-2),\r\n ss = ('0' + date.getSeconds()).slice(-2);\r\n format = format || 'hh:ii:ss';\r\n return format.replace(/hh/ig, hh).replace(/ii/ig, ii).replace(/ss/ig, ss);\r\n }\r\n function formatDate(date, format) {\r\n var yyyy = ('000' + date.getFullYear()).slice(-4),\r\n yy = yyyy.slice(-2),\r\n mm = ('0' + (date.getMonth()+1)).slice(-2),\r\n dd = ('0' + date.getDate()).slice(-2);\r\n format = format || 'yyyy-mm-dd';\r\n return format.replace(/yyyy/ig, yyyy).replace(/yy/ig, yy).replace(/mm/ig, mm).replace(/dd/ig, dd);\r\n }\r\n\r\n this.execCommand('insertHtml',cmd == \"time\" ? formatTime(date, format):formatDate(date, format) );\r\n }\r\n};\r\n\r\n\r\n// plugins/rowspacing.js\r\n/**\r\n * 段前段后间距插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 设置段间距\r\n * @command rowspacing\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 段间距的值,以px为单位\r\n * @param { String } dir 间距位置,top或bottom,分别表示段前和段后\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'rowspacing', '10', 'top' );\r\n * ```\r\n */\r\n\r\nUE.plugins['rowspacing'] = function(){\r\n var me = this;\r\n me.setOpt({\r\n 'rowspacingtop':['5', '10', '15', '20', '25'],\r\n 'rowspacingbottom':['5', '10', '15', '20', '25']\r\n\r\n });\r\n me.commands['rowspacing'] = {\r\n execCommand : function( cmdName,value,dir ) {\r\n this.execCommand('paragraph','p',{style:'margin-'+dir+':'+value + 'px'});\r\n return true;\r\n },\r\n queryCommandValue : function(cmdName,dir) {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),function(node){return domUtils.isBlockElm(node) }),\r\n value;\r\n //trace:1026\r\n if(pN){\r\n value = domUtils.getComputedStyle(pN,'margin-'+dir).replace(/[^\\d]/g,'');\r\n return !value ? 0 : value;\r\n }\r\n return 0;\r\n\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n\r\n// plugins/lineheight.js\r\n/**\r\n * 设置行内间距\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\nUE.plugins['lineheight'] = function(){\r\n var me = this;\r\n me.setOpt({'lineheight':['1', '1.5','1.75','2', '3', '4', '5']});\r\n\r\n /**\r\n * 行距\r\n * @command lineheight\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'lineheight', 1.5);\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容的行高大小\r\n * @command lineheight\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回当前行高大小\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'lineheight' );\r\n * ```\r\n */\r\n\r\n me.commands['lineheight'] = {\r\n execCommand : function( cmdName,value ) {\r\n this.execCommand('paragraph','p',{style:'line-height:'+ (value == \"1\" ? \"normal\" : value + 'em') });\r\n return true;\r\n },\r\n queryCommandValue : function() {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),function(node){return domUtils.isBlockElm(node)});\r\n if(pN){\r\n var value = domUtils.getComputedStyle(pN,'line-height');\r\n return value == 'normal' ? 1 : value.replace(/[^\\d.]*/ig,\"\");\r\n }\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n\r\n// plugins/insertcode.js\r\n/**\r\n * 插入代码插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\nUE.plugins['insertcode'] = function() {\r\n var me = this;\r\n me.ready(function(){\r\n utils.cssRule('pre','pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}',\r\n me.document)\r\n });\r\n me.setOpt('insertcode',{\r\n 'as3':'ActionScript3',\r\n 'bash':'Bash/Shell',\r\n 'cpp':'C/C++',\r\n 'css':'Css',\r\n 'cf':'CodeFunction',\r\n 'c#':'C#',\r\n 'delphi':'Delphi',\r\n 'diff':'Diff',\r\n 'erlang':'Erlang',\r\n 'groovy':'Groovy',\r\n 'html':'Html',\r\n 'java':'Java',\r\n 'jfx':'JavaFx',\r\n 'js':'Javascript',\r\n 'pl':'Perl',\r\n 'php':'Php',\r\n 'plain':'Plain Text',\r\n 'ps':'PowerShell',\r\n 'python':'Python',\r\n 'ruby':'Ruby',\r\n 'scala':'Scala',\r\n 'sql':'Sql',\r\n 'vb':'Vb',\r\n 'xml':'Xml'\r\n });\r\n\r\n /**\r\n * 插入代码\r\n * @command insertcode\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } lang 插入代码的语言\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertcode', 'javascript' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 如果选区所在位置是插入插入代码区域,返回代码的语言\r\n * @command insertcode\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回代码的语言\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertcode' );\r\n * ```\r\n */\r\n\r\n me.commands['insertcode'] = {\r\n execCommand : function(cmd,lang){\r\n var me = this,\r\n rng = me.selection.getRange(),\r\n pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\r\n if(pre){\r\n pre.className = 'brush:'+lang+';toolbar:false;';\r\n }else{\r\n var code = '';\r\n if(rng.collapsed){\r\n code = browser.ie && browser.ie11below ? (browser.version <= 8 ? ' ':''):'<br/>';\r\n }else{\r\n var frag = rng.extractContents();\r\n var div = me.document.createElement('div');\r\n div.appendChild(frag);\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(div.innerHTML.replace(/[\\r\\t]/g,'')),me.options.filterTxtRules).children,function(node){\r\n if(browser.ie && browser.ie11below && browser.version > 8){\r\n\r\n if(node.type =='element'){\r\n if(node.tagName == 'br'){\r\n code += '\\n'\r\n }else if(!dtd.$empty[node.tagName]){\r\n utils.each(node.children,function(cn){\r\n if(cn.type =='element'){\r\n if(cn.tagName == 'br'){\r\n code += '\\n'\r\n }else if(!dtd.$empty[node.tagName]){\r\n code += cn.innerText();\r\n }\r\n }else{\r\n code += cn.data\r\n }\r\n })\r\n if(!/\\n$/.test(code)){\r\n code += '\\n';\r\n }\r\n }\r\n }else{\r\n code += node.data + '\\n'\r\n }\r\n if(!node.nextSibling() && /\\n$/.test(code)){\r\n code = code.replace(/\\n$/,'');\r\n }\r\n }else{\r\n if(browser.ie && browser.ie11below){\r\n\r\n if(node.type =='element'){\r\n if(node.tagName == 'br'){\r\n code += '<br>'\r\n }else if(!dtd.$empty[node.tagName]){\r\n utils.each(node.children,function(cn){\r\n if(cn.type =='element'){\r\n if(cn.tagName == 'br'){\r\n code += '<br>'\r\n }else if(!dtd.$empty[node.tagName]){\r\n code += cn.innerText();\r\n }\r\n }else{\r\n code += cn.data\r\n }\r\n });\r\n if(!/br>$/.test(code)){\r\n code += '<br>';\r\n }\r\n }\r\n }else{\r\n code += node.data + '<br>'\r\n }\r\n if(!node.nextSibling() && /<br>$/.test(code)){\r\n code = code.replace(/<br>$/,'');\r\n }\r\n\r\n }else{\r\n code += (node.type == 'element' ? (dtd.$empty[node.tagName] ? '' : node.innerText()) : node.data);\r\n if(!/br\\/?\\s*>$/.test(code)){\r\n if(!node.nextSibling())\r\n return;\r\n code += '<br>'\r\n }\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n me.execCommand('inserthtml','<pre id=\"coder\"class=\"brush:'+lang+';toolbar:false\">'+code+'</pre>',true);\r\n\r\n pre = me.document.getElementById('coder');\r\n domUtils.removeAttributes(pre,'id');\r\n var tmpNode = pre.previousSibling;\r\n\r\n if(tmpNode && (tmpNode.nodeType == 3 && tmpNode.nodeValue.length == 1 && browser.ie && browser.version == 6 || domUtils.isEmptyBlock(tmpNode))){\r\n\r\n domUtils.remove(tmpNode)\r\n }\r\n var rng = me.selection.getRange();\r\n if(domUtils.isEmptyBlock(pre)){\r\n rng.setStart(pre,0).setCursor(false,true)\r\n }else{\r\n rng.selectNodeContents(pre).select()\r\n }\r\n }\r\n\r\n\r\n\r\n },\r\n queryCommandValue : function(){\r\n var path = this.selection.getStartElementPath();\r\n var lang = '';\r\n utils.each(path,function(node){\r\n if(node.nodeName =='PRE'){\r\n var match = node.className.match(/brush:([^;]+)/);\r\n lang = match && match[1] ? match[1] : '';\r\n return false;\r\n }\r\n });\r\n return lang;\r\n }\r\n };\r\n\r\n me.addInputRule(function(root){\r\n utils.each(root.getNodesByTagName('pre'),function(pre){\r\n var brs = pre.getNodesByTagName('br');\r\n if(brs.length){\r\n browser.ie && browser.ie11below && browser.version > 8 && utils.each(brs,function(br){\r\n var txt = UE.uNode.createText('\\n');\r\n br.parentNode.insertBefore(txt,br);\r\n br.parentNode.removeChild(br);\r\n });\r\n return;\r\n }\r\n if(browser.ie && browser.ie11below && browser.version > 8)\r\n return;\r\n var code = pre.innerText().split(/\\n/);\r\n pre.innerHTML('');\r\n utils.each(code,function(c){\r\n if(c.length){\r\n pre.appendChild(UE.uNode.createText(c));\r\n }\r\n pre.appendChild(UE.uNode.createElement('br'))\r\n })\r\n })\r\n });\r\n me.addOutputRule(function(root){\r\n utils.each(root.getNodesByTagName('pre'),function(pre){\r\n var code = '';\r\n utils.each(pre.children,function(n){\r\n if(n.type == 'text'){\r\n //在ie下文本内容有可能末尾带有\\n要去掉\r\n //trace:3396\r\n code += n.data.replace(/[ ]/g,' ').replace(/\\n$/,'');\r\n }else{\r\n if(n.tagName == 'br'){\r\n code += '\\n'\r\n }else{\r\n code += (!dtd.$empty[n.tagName] ? '' : n.innerText());\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n pre.innerText(code.replace(/( |\\n)+$/,''))\r\n })\r\n });\r\n //不需要判断highlight的command列表\r\n me.notNeedCodeQuery ={\r\n help:1,\r\n undo:1,\r\n redo:1,\r\n source:1,\r\n print:1,\r\n searchreplace:1,\r\n fullscreen:1,\r\n preview:1,\r\n insertparagraph:1,\r\n elementpath:1,\r\n insertcode:1,\r\n inserthtml:1,\r\n selectall:1\r\n };\r\n //将queyCommamndState重置\r\n var orgQuery = me.queryCommandState;\r\n me.queryCommandState = function(cmd){\r\n var me = this;\r\n\r\n if(!me.notNeedCodeQuery[cmd.toLowerCase()] && me.selection && me.queryCommandValue('insertcode')){\r\n return -1;\r\n }\r\n return UE.Editor.prototype.queryCommandState.apply(this,arguments)\r\n };\r\n me.addListener('beforeenterkeydown',function(){\r\n var rng = me.selection.getRange();\r\n var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\r\n if(pre){\r\n me.fireEvent('saveScene');\r\n if(!rng.collapsed){\r\n rng.deleteContents();\r\n }\r\n if(!browser.ie || browser.ie9above){\r\n var tmpNode = me.document.createElement('br'),pre;\r\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true);\r\n var next = tmpNode.nextSibling;\r\n if(!next && (!browser.ie || browser.version > 10)){\r\n rng.insertNode(tmpNode.cloneNode(false));\r\n }else{\r\n rng.setStartAfter(tmpNode);\r\n }\r\n pre = tmpNode.previousSibling;\r\n var tmp;\r\n while(pre ){\r\n tmp = pre;\r\n pre = pre.previousSibling;\r\n if(!pre || pre.nodeName == 'BR'){\r\n pre = tmp;\r\n break;\r\n }\r\n }\r\n if(pre){\r\n var str = '';\r\n while(pre && pre.nodeName != 'BR' && new RegExp('^[\\\\s'+domUtils.fillChar+']*$').test(pre.nodeValue)){\r\n str += pre.nodeValue;\r\n pre = pre.nextSibling;\r\n }\r\n if(pre.nodeName != 'BR'){\r\n var match = pre.nodeValue.match(new RegExp('^([\\\\s'+domUtils.fillChar+']+)'));\r\n if(match && match[1]){\r\n str += match[1]\r\n }\r\n\r\n }\r\n if(str){\r\n str = me.document.createTextNode(str);\r\n rng.insertNode(str).setStartAfter(str);\r\n }\r\n }\r\n rng.collapse(true).select(true);\r\n }else{\r\n if(browser.version > 8){\r\n\r\n var txt = me.document.createTextNode('\\n');\r\n var start = rng.startContainer;\r\n if(rng.startOffset == 0){\r\n var preNode = start.previousSibling;\r\n if(preNode){\r\n rng.insertNode(txt);\r\n var fillchar = me.document.createTextNode(' ');\r\n rng.setStartAfter(txt).insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true)\r\n }\r\n }else{\r\n rng.insertNode(txt).setStartAfter(txt);\r\n var fillchar = me.document.createTextNode(' ');\r\n start = rng.startContainer.childNodes[rng.startOffset];\r\n if(start && !/^\\n/.test(start.nodeValue)){\r\n rng.setStartBefore(txt)\r\n }\r\n rng.insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true)\r\n }\r\n\r\n }else{\r\n var tmpNode = me.document.createElement('br');\r\n rng.insertNode(tmpNode);\r\n rng.insertNode(me.document.createTextNode(domUtils.fillChar));\r\n rng.setStartAfter(tmpNode);\r\n pre = tmpNode.previousSibling;\r\n var tmp;\r\n while(pre ){\r\n tmp = pre;\r\n pre = pre.previousSibling;\r\n if(!pre || pre.nodeName == 'BR'){\r\n pre = tmp;\r\n break;\r\n }\r\n }\r\n if(pre){\r\n var str = '';\r\n while(pre && pre.nodeName != 'BR' && new RegExp('^[ '+domUtils.fillChar+']*$').test(pre.nodeValue)){\r\n str += pre.nodeValue;\r\n pre = pre.nextSibling;\r\n }\r\n if(pre.nodeName != 'BR'){\r\n var match = pre.nodeValue.match(new RegExp('^([ '+domUtils.fillChar+']+)'));\r\n if(match && match[1]){\r\n str += match[1]\r\n }\r\n\r\n }\r\n\r\n str = me.document.createTextNode(str);\r\n rng.insertNode(str).setStartAfter(str);\r\n }\r\n rng.collapse(true).select();\r\n }\r\n\r\n\r\n }\r\n me.fireEvent('saveScene');\r\n return true;\r\n }\r\n\r\n\r\n });\r\n\r\n me.addListener('tabkeydown',function(cmd,evt){\r\n var rng = me.selection.getRange();\r\n var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\r\n if(pre){\r\n me.fireEvent('saveScene');\r\n if(evt.shiftKey){\r\n\r\n }else{\r\n if(!rng.collapsed){\r\n var bk = rng.createBookmark();\r\n var start = bk.start.previousSibling;\r\n\r\n while(start){\r\n if(pre.firstChild === start && !domUtils.isBr(start)){\r\n pre.insertBefore(me.document.createTextNode(' '),start);\r\n\r\n break;\r\n }\r\n if(domUtils.isBr(start)){\r\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling);\r\n\r\n break;\r\n }\r\n start = start.previousSibling;\r\n }\r\n var end = bk.end;\r\n start = bk.start.nextSibling;\r\n if(pre.firstChild === bk.start){\r\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling)\r\n\r\n }\r\n while(start && start !== end){\r\n if(domUtils.isBr(start) && start.nextSibling){\r\n if(start.nextSibling === end){\r\n break;\r\n }\r\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling)\r\n }\r\n\r\n start = start.nextSibling;\r\n }\r\n rng.moveToBookmark(bk).select();\r\n }else{\r\n var tmpNode = me.document.createTextNode(' ');\r\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true).select(true);\r\n }\r\n }\r\n\r\n\r\n me.fireEvent('saveScene');\r\n return true;\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n me.addListener('beforeinserthtml',function(evtName,html){\r\n var me = this,\r\n rng = me.selection.getRange(),\r\n pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\r\n if(pre){\r\n if(!rng.collapsed){\r\n rng.deleteContents()\r\n }\r\n var htmlstr = '';\r\n if(browser.ie && browser.version > 8){\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){\r\n if(node.type =='element'){\r\n if(node.tagName == 'br'){\r\n htmlstr += '\\n'\r\n }else if(!dtd.$empty[node.tagName]){\r\n utils.each(node.children,function(cn){\r\n if(cn.type =='element'){\r\n if(cn.tagName == 'br'){\r\n htmlstr += '\\n'\r\n }else if(!dtd.$empty[node.tagName]){\r\n htmlstr += cn.innerText();\r\n }\r\n }else{\r\n htmlstr += cn.data\r\n }\r\n })\r\n if(!/\\n$/.test(htmlstr)){\r\n htmlstr += '\\n';\r\n }\r\n }\r\n }else{\r\n htmlstr += node.data + '\\n'\r\n }\r\n if(!node.nextSibling() && /\\n$/.test(htmlstr)){\r\n htmlstr = htmlstr.replace(/\\n$/,'');\r\n }\r\n });\r\n var tmpNode = me.document.createTextNode(utils.html(htmlstr.replace(/ /g,' ')));\r\n rng.insertNode(tmpNode).selectNode(tmpNode).select();\r\n }else{\r\n var frag = me.document.createDocumentFragment();\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){\r\n if(node.type =='element'){\r\n if(node.tagName == 'br'){\r\n frag.appendChild(me.document.createElement('br'))\r\n }else if(!dtd.$empty[node.tagName]){\r\n utils.each(node.children,function(cn){\r\n if(cn.type =='element'){\r\n if(cn.tagName == 'br'){\r\n\r\n frag.appendChild(me.document.createElement('br'))\r\n }else if(!dtd.$empty[node.tagName]){\r\n frag.appendChild(me.document.createTextNode(utils.html(cn.innerText().replace(/ /g,' '))));\r\n\r\n }\r\n }else{\r\n frag.appendChild(me.document.createTextNode(utils.html( cn.data.replace(/ /g,' '))));\r\n\r\n }\r\n })\r\n if(frag.lastChild.nodeName != 'BR'){\r\n frag.appendChild(me.document.createElement('br'))\r\n }\r\n }\r\n }else{\r\n frag.appendChild(me.document.createTextNode(utils.html( node.data.replace(/ /g,' '))));\r\n }\r\n if(!node.nextSibling() && frag.lastChild.nodeName == 'BR'){\r\n frag.removeChild(frag.lastChild)\r\n }\r\n\r\n\r\n });\r\n rng.insertNode(frag).select();\r\n\r\n }\r\n\r\n return true;\r\n }\r\n });\r\n //方向键的处理\r\n me.addListener('keydown',function(cmd,evt){\r\n var me = this,keyCode = evt.keyCode || evt.which;\r\n if(keyCode == 40){\r\n var rng = me.selection.getRange(),pre,start = rng.startContainer;\r\n if(rng.collapsed && (pre = domUtils.findParentByTagName(rng.startContainer,'pre',true)) && !pre.nextSibling){\r\n var last = pre.lastChild\r\n while(last && last.nodeName == 'BR'){\r\n last = last.previousSibling;\r\n }\r\n if(last === start || rng.startContainer === pre && rng.startOffset == pre.childNodes.length){\r\n me.execCommand('insertparagraph');\r\n domUtils.preventDefault(evt)\r\n }\r\n\r\n }\r\n }\r\n });\r\n //trace:3395\r\n me.addListener('delkeydown',function(type,evt){\r\n var rng = this.selection.getRange();\r\n rng.txtToElmBoundary(true);\r\n var start = rng.startContainer;\r\n if(domUtils.isTagNode(start,'pre') && rng.collapsed && domUtils.isStartInblock(rng)){\r\n var p = me.document.createElement('p');\r\n domUtils.fillNode(me.document,p);\r\n start.parentNode.insertBefore(p,start);\r\n domUtils.remove(start);\r\n rng.setStart(p,0).setCursor(false,true);\r\n domUtils.preventDefault(evt);\r\n return true;\r\n }\r\n })\r\n};\r\n\r\n\r\n// plugins/cleardoc.js\r\n/**\r\n * 清空文档插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 清空文档\r\n * @command cleardoc\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor 是编辑器实例\r\n * editor.execCommand('cleardoc');\r\n * ```\r\n */\r\n\r\nUE.commands['cleardoc'] = {\r\n execCommand : function( cmdName) {\r\n var me = this,\r\n enterTag = me.options.enterTag,\r\n range = me.selection.getRange();\r\n if(enterTag == \"br\"){\r\n me.body.innerHTML = \"<br/>\";\r\n range.setStart(me.body,0).setCursor();\r\n }else{\r\n me.body.innerHTML = \"<p>\"+(ie ? \"\" : \"<br/>\")+\"</p>\";\r\n range.setStart(me.body.firstChild,0).setCursor(false,true);\r\n }\r\n setTimeout(function(){\r\n me.fireEvent(\"clearDoc\");\r\n },0);\r\n\r\n }\r\n};\r\n\r\n\r\n\r\n// plugins/anchor.js\r\n/**\r\n * 锚点插件,为UEditor提供插入锚点支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\nUE.plugin.register('anchor', function (){\r\n\r\n return {\r\n bindEvents:{\r\n 'ready':function(){\r\n utils.cssRule('anchor',\r\n '.anchorclass{background: url(\\''\r\n + this.options.themePath\r\n + this.options.theme +'/images/anchor.gif\\') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}',\r\n this.document);\r\n }\r\n },\r\n outputRule: function(root){\r\n utils.each(root.getNodesByTagName('img'),function(a){\r\n var val;\r\n if(val = a.getAttr('anchorname')){\r\n a.tagName = 'a';\r\n a.setAttr({\r\n anchorname : '',\r\n name : val,\r\n 'class' : ''\r\n })\r\n }\r\n })\r\n },\r\n inputRule:function(root){\r\n utils.each(root.getNodesByTagName('a'),function(a){\r\n var val;\r\n if((val = a.getAttr('name')) && !a.getAttr('href')){\r\n a.tagName = 'img';\r\n a.setAttr({\r\n anchorname :a.getAttr('name'),\r\n 'class' : 'anchorclass'\r\n });\r\n a.setAttr('name')\r\n\r\n }\r\n })\r\n\r\n },\r\n commands:{\r\n /**\r\n * 插入锚点\r\n * @command anchor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } name 锚点名称字符串\r\n * @example\r\n * ```javascript\r\n * //editor 是编辑器实例\r\n * editor.execCommand('anchor', 'anchor1');\r\n * ```\r\n */\r\n 'anchor':{\r\n execCommand:function (cmd, name) {\r\n var range = this.selection.getRange(),img = range.getClosedNode();\r\n if (img && img.getAttribute('anchorname')) {\r\n if (name) {\r\n img.setAttribute('anchorname', name);\r\n } else {\r\n range.setStartBefore(img).setCursor();\r\n domUtils.remove(img);\r\n }\r\n } else {\r\n if (name) {\r\n //只在选区的开始插入\r\n var anchor = this.document.createElement('img');\r\n range.collapse(true);\r\n domUtils.setAttributes(anchor,{\r\n 'anchorname':name,\r\n 'class':'anchorclass'\r\n });\r\n range.insertNode(anchor).setStartAfter(anchor).setCursor(false,true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\r\n// plugins/wordcount.js\r\n///import core\r\n///commands 字数统计\r\n///commandsName WordCount,wordCount\r\n///commandsTitle 字数统计\r\n/*\r\n * Created by JetBrains WebStorm.\r\n * User: taoqili\r\n * Date: 11-9-7\r\n * Time: 下午8:18\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n\r\nUE.plugins['wordcount'] = function(){\r\n var me = this;\r\n me.setOpt('wordCount',true);\r\n me.addListener('contentchange',function(){\r\n me.fireEvent('wordcount');\r\n });\r\n var timer;\r\n me.addListener('ready',function(){\r\n var me = this;\r\n domUtils.on(me.body,\"keyup\",function(evt){\r\n var code = evt.keyCode||evt.which,\r\n //忽略的按键,ctr,alt,shift,方向键\r\n ignores = {\"16\":1,\"18\":1,\"20\":1,\"37\":1,\"38\":1,\"39\":1,\"40\":1};\r\n if(code in ignores) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n me.fireEvent('wordcount');\r\n },200)\r\n })\r\n });\r\n};\r\n\r\n\r\n// plugins/pagebreak.js\r\n/**\r\n * 分页功能插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\nUE.plugins['pagebreak'] = function () {\r\n var me = this,\r\n notBreakTags = ['td'];\r\n me.setOpt('pageBreakTag','_ueditor_page_break_tag_');\r\n\r\n function fillNode(node){\r\n if(domUtils.isEmptyBlock(node)){\r\n var firstChild = node.firstChild,tmpNode;\r\n\r\n while(firstChild && firstChild.nodeType == 1 && domUtils.isEmptyBlock(firstChild)){\r\n tmpNode = firstChild;\r\n firstChild = firstChild.firstChild;\r\n }\r\n !tmpNode && (tmpNode = node);\r\n domUtils.fillNode(me.document,tmpNode);\r\n }\r\n }\r\n //分页符样式添加\r\n\r\n me.ready(function(){\r\n utils.cssRule('pagebreak','.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}',me.document);\r\n });\r\n function isHr(node){\r\n return node && node.nodeType == 1 && node.tagName == 'HR' && node.className == 'pagebreak';\r\n }\r\n me.addInputRule(function(root){\r\n root.traversal(function(node){\r\n if(node.type == 'text' && node.data == me.options.pageBreakTag){\r\n var hr = UE.uNode.createElement('<hr class=\"pagebreak\" noshade=\"noshade\" size=\"5\" style=\"-webkit-user-select: none;\">');\r\n node.parentNode.insertBefore(hr,node);\r\n node.parentNode.removeChild(node)\r\n }\r\n })\r\n });\r\n me.addOutputRule(function(node){\r\n utils.each(node.getNodesByTagName('hr'),function(n){\r\n if(n.getAttr('class') == 'pagebreak'){\r\n var txt = UE.uNode.createText(me.options.pageBreakTag);\r\n n.parentNode.insertBefore(txt,n);\r\n n.parentNode.removeChild(n);\r\n }\r\n })\r\n\r\n });\r\n\r\n /**\r\n * 插入分页符\r\n * @command pagebreak\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @remind 在表格中插入分页符会把表格切分成两部分\r\n * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串,\r\n * 以便于提交数据到服务器端后处理分页。\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak\r\n * ```\r\n */\r\n\r\n me.commands['pagebreak'] = {\r\n execCommand:function () {\r\n var range = me.selection.getRange(),hr = me.document.createElement('hr');\r\n domUtils.setAttributes(hr,{\r\n 'class' : 'pagebreak',\r\n noshade:\"noshade\",\r\n size:\"5\"\r\n });\r\n domUtils.unSelectable(hr);\r\n //table单独处理\r\n var node = domUtils.findParentByTagName(range.startContainer, notBreakTags, true),\r\n\r\n parents = [], pN;\r\n if (node) {\r\n switch (node.tagName) {\r\n case 'TD':\r\n pN = node.parentNode;\r\n if (!pN.previousSibling) {\r\n var table = domUtils.findParentByTagName(pN, 'table');\r\n// var tableWrapDiv = table.parentNode;\r\n// if(tableWrapDiv && tableWrapDiv.nodeType == 1\r\n// && tableWrapDiv.tagName == 'DIV'\r\n// && tableWrapDiv.getAttribute('dropdrag')\r\n// ){\r\n// domUtils.remove(tableWrapDiv,true);\r\n// }\r\n table.parentNode.insertBefore(hr, table);\r\n parents = domUtils.findParents(hr, true);\r\n\r\n } else {\r\n pN.parentNode.insertBefore(hr, pN);\r\n parents = domUtils.findParents(hr);\r\n\r\n }\r\n pN = parents[1];\r\n if (hr !== pN) {\r\n domUtils.breakParent(hr, pN);\r\n\r\n }\r\n //table要重写绑定一下拖拽\r\n me.fireEvent('afteradjusttable',me.document);\r\n }\r\n\r\n } else {\r\n\r\n if (!range.collapsed) {\r\n range.deleteContents();\r\n var start = range.startContainer;\r\n while ( !domUtils.isBody(start) && domUtils.isBlockElm(start) && domUtils.isEmptyNode(start)) {\r\n range.setStartBefore(start).collapse(true);\r\n domUtils.remove(start);\r\n start = range.startContainer;\r\n }\r\n\r\n }\r\n range.insertNode(hr);\r\n\r\n var pN = hr.parentNode, nextNode;\r\n while (!domUtils.isBody(pN)) {\r\n domUtils.breakParent(hr, pN);\r\n nextNode = hr.nextSibling;\r\n if (nextNode && domUtils.isEmptyBlock(nextNode)) {\r\n domUtils.remove(nextNode);\r\n }\r\n pN = hr.parentNode;\r\n }\r\n nextNode = hr.nextSibling;\r\n var pre = hr.previousSibling;\r\n if(isHr(pre)){\r\n domUtils.remove(pre);\r\n }else{\r\n pre && fillNode(pre);\r\n }\r\n\r\n if(!nextNode){\r\n var p = me.document.createElement('p');\r\n\r\n hr.parentNode.appendChild(p);\r\n domUtils.fillNode(me.document,p);\r\n range.setStart(p,0).collapse(true);\r\n }else{\r\n if(isHr(nextNode)){\r\n domUtils.remove(nextNode);\r\n }else{\r\n fillNode(nextNode);\r\n }\r\n range.setEndAfter(hr).collapse(false);\r\n }\r\n\r\n range.select(true);\r\n\r\n }\r\n\r\n }\r\n };\r\n};\r\n\r\n// plugins/wordimage.js\r\n///import core\r\n///commands 本地图片引导上传\r\n///commandsName WordImage\r\n///commandsTitle 本地图片引导上传\r\n///commandsDialog dialogs\\wordimage\r\n\r\nUE.plugin.register('wordimage',function(){\r\n var me = this,\r\n images = [];\r\n return {\r\n commands : {\r\n 'wordimage':{\r\n execCommand:function () {\r\n var images = domUtils.getElementsByTagName(me.body, \"img\");\r\n var urlList = [];\r\n for (var i = 0, ci; ci = images[i++];) {\r\n var url = ci.getAttribute(\"word_img\");\r\n url && urlList.push(url);\r\n }\r\n return urlList;\r\n },\r\n queryCommandState:function () {\r\n images = domUtils.getElementsByTagName(me.body, \"img\");\r\n for (var i = 0, ci; ci = images[i++];) {\r\n if (ci.getAttribute(\"word_img\")) {\r\n return 1;\r\n }\r\n }\r\n return -1;\r\n },\r\n notNeedUndo:true\r\n }\r\n },\r\n inputRule : function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (img) {\r\n var attrs = img.attrs,\r\n flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43,\r\n opt = me.options,\r\n src = opt.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif';\r\n if (attrs['src'] && /^(?:(file:\\/+))/.test(attrs['src'])) {\r\n img.setAttr({\r\n width:attrs.width,\r\n height:attrs.height,\r\n alt:attrs.alt,\r\n word_img: attrs.src,\r\n src:src,\r\n 'style':'background:url(' + ( flag ? opt.themePath + opt.theme + '/images/word.gif' : opt.langPath + opt.lang + '/images/localimage.png') + ') no-repeat center center;border:1px solid #ddd'\r\n })\r\n }\r\n })\r\n }\r\n }\r\n});\r\n\r\n// plugins/dragdrop.js\r\nUE.plugins['dragdrop'] = function (){\r\n\r\n var me = this;\r\n me.ready(function(){\r\n domUtils.on(this.body,'dragend',function(){\r\n var rng = me.selection.getRange();\r\n var node = rng.getClosedNode()||me.selection.getStart();\r\n\r\n if(node && node.tagName == 'IMG'){\r\n\r\n var pre = node.previousSibling,next;\r\n while(next = node.nextSibling){\r\n if(next.nodeType == 1 && next.tagName == 'SPAN' && !next.firstChild){\r\n domUtils.remove(next)\r\n }else{\r\n break;\r\n }\r\n }\r\n\r\n\r\n if((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre) || !pre) && (!next || next && !domUtils.isEmptyBlock(next))){\r\n if(pre && pre.tagName == 'P' && !domUtils.isEmptyBlock(pre)){\r\n pre.appendChild(node);\r\n domUtils.moveChild(next,pre);\r\n domUtils.remove(next);\r\n }else if(next && next.tagName == 'P' && !domUtils.isEmptyBlock(next)){\r\n next.insertBefore(node,next.firstChild);\r\n }\r\n\r\n if(pre && pre.tagName == 'P' && domUtils.isEmptyBlock(pre)){\r\n domUtils.remove(pre)\r\n }\r\n if(next && next.tagName == 'P' && domUtils.isEmptyBlock(next)){\r\n domUtils.remove(next)\r\n }\r\n rng.selectNode(node).select();\r\n me.fireEvent('saveScene');\r\n\r\n }\r\n\r\n }\r\n\r\n })\r\n });\r\n me.addListener('keyup', function(type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) {\r\n var rng = me.selection.getRange(),node;\r\n if(node = domUtils.findParentByTagName(rng.startContainer,'p',true)){\r\n if(domUtils.getComputedStyle(node,'text-align') == 'center'){\r\n domUtils.removeStyle(node,'text-align')\r\n }\r\n }\r\n }\r\n })\r\n};\r\n\r\n\r\n// plugins/undo.js\r\n/**\r\n * undo redo\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 撤销上一次执行的命令\r\n * @command undo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'undo' );\r\n * ```\r\n */\r\n\r\n/**\r\n * 重做上一次执行的命令\r\n * @command redo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'redo' );\r\n * ```\r\n */\r\n\r\nUE.plugins['undo'] = function () {\r\n var saveSceneTimer;\r\n var me = this,\r\n maxUndoCount = me.options.maxUndoCount || 20,\r\n maxInputCount = me.options.maxInputCount || 20,\r\n fillchar = new RegExp(domUtils.fillChar + '|<\\/hr>', 'gi');// ie会产生多余的</hr>\r\n var noNeedFillCharTags = {\r\n ol:1,ul:1,table:1,tbody:1,tr:1,body:1\r\n };\r\n var orgState = me.options.autoClearEmptyNode;\r\n function compareAddr(indexA, indexB) {\r\n if (indexA.length != indexB.length)\r\n return 0;\r\n for (var i = 0, l = indexA.length; i < l; i++) {\r\n if (indexA[i] != indexB[i])\r\n return 0\r\n }\r\n return 1;\r\n }\r\n\r\n function compareRangeAddress(rngAddrA, rngAddrB) {\r\n if (rngAddrA.collapsed != rngAddrB.collapsed) {\r\n return 0;\r\n }\r\n if (!compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)) {\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n\r\n function UndoManager() {\r\n this.list = [];\r\n this.index = 0;\r\n this.hasUndo = false;\r\n this.hasRedo = false;\r\n this.undo = function () {\r\n if (this.hasUndo) {\r\n if (!this.list[this.index - 1] && this.list.length == 1) {\r\n this.reset();\r\n return;\r\n }\r\n while (this.list[this.index].content == this.list[this.index - 1].content) {\r\n this.index--;\r\n if (this.index == 0) {\r\n return this.restore(0);\r\n }\r\n }\r\n this.restore(--this.index);\r\n }\r\n };\r\n this.redo = function () {\r\n if (this.hasRedo) {\r\n while (this.list[this.index].content == this.list[this.index + 1].content) {\r\n this.index++;\r\n if (this.index == this.list.length - 1) {\r\n return this.restore(this.index);\r\n }\r\n }\r\n this.restore(++this.index);\r\n }\r\n };\r\n\r\n this.restore = function () {\r\n var me = this.editor;\r\n var scene = this.list[this.index];\r\n var root = UE.htmlparser(scene.content.replace(fillchar, ''));\r\n me.options.autoClearEmptyNode = false;\r\n me.filterInputRule(root);\r\n me.options.autoClearEmptyNode = orgState;\r\n //trace:873\r\n //去掉展位符\r\n me.document.body.innerHTML = root.toHtml();\r\n me.fireEvent('afterscencerestore');\r\n //处理undo后空格不展位的问题\r\n if (browser.ie) {\r\n utils.each(domUtils.getElementsByTagName(me.document,'td th caption p'),function(node){\r\n if(domUtils.isEmptyNode(node)){\r\n domUtils.fillNode(me.document, node);\r\n }\r\n })\r\n }\r\n\r\n try{\r\n var rng = new dom.Range(me.document).moveToAddress(scene.address);\r\n rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]);\r\n }catch(e){}\r\n\r\n this.update();\r\n this.clearKey();\r\n //不能把自己reset了\r\n me.fireEvent('reset', true);\r\n };\r\n\r\n this.getScene = function () {\r\n var me = this.editor;\r\n var rng = me.selection.getRange(),\r\n rngAddress = rng.createAddress(false,true);\r\n me.fireEvent('beforegetscene');\r\n var root = UE.htmlparser(me.body.innerHTML);\r\n me.options.autoClearEmptyNode = false;\r\n me.filterOutputRule(root);\r\n me.options.autoClearEmptyNode = orgState;\r\n var cont = root.toHtml();\r\n //trace:3461\r\n //这个会引起回退时导致空格丢失的情况\r\n// browser.ie && (cont = cont.replace(/> </g, '><').replace(/\\s*</g, '<').replace(/>\\s*/g, '>'));\r\n me.fireEvent('aftergetscene');\r\n\r\n return {\r\n address:rngAddress,\r\n content:cont\r\n }\r\n };\r\n this.save = function (notCompareRange,notSetCursor) {\r\n clearTimeout(saveSceneTimer);\r\n var currentScene = this.getScene(notSetCursor),\r\n lastScene = this.list[this.index];\r\n\r\n if(lastScene && lastScene.content != currentScene.content){\r\n me.trigger('contentchange')\r\n }\r\n //内容相同位置相同不存\r\n if (lastScene && lastScene.content == currentScene.content &&\r\n ( notCompareRange ? 1 : compareRangeAddress(lastScene.address, currentScene.address) )\r\n ) {\r\n return;\r\n }\r\n this.list = this.list.slice(0, this.index + 1);\r\n this.list.push(currentScene);\r\n //如果大于最大数量了,就把最前的剔除\r\n if (this.list.length > maxUndoCount) {\r\n this.list.shift();\r\n }\r\n this.index = this.list.length - 1;\r\n this.clearKey();\r\n //跟新undo/redo状态\r\n this.update();\r\n\r\n };\r\n this.update = function () {\r\n this.hasRedo = !!this.list[this.index + 1];\r\n this.hasUndo = !!this.list[this.index - 1];\r\n };\r\n this.reset = function () {\r\n this.list = [];\r\n this.index = 0;\r\n this.hasUndo = false;\r\n this.hasRedo = false;\r\n this.clearKey();\r\n };\r\n this.clearKey = function () {\r\n keycont = 0;\r\n lastKeyCode = null;\r\n };\r\n }\r\n\r\n me.undoManger = new UndoManager();\r\n me.undoManger.editor = me;\r\n function saveScene() {\r\n this.undoManger.save();\r\n }\r\n\r\n me.addListener('saveScene', function () {\r\n var args = Array.prototype.splice.call(arguments,1);\r\n this.undoManger.save.apply(this.undoManger,args);\r\n });\r\n\r\n// me.addListener('beforeexeccommand', saveScene);\r\n// me.addListener('afterexeccommand', saveScene);\r\n\r\n me.addListener('reset', function (type, exclude) {\r\n if (!exclude) {\r\n this.undoManger.reset();\r\n }\r\n });\r\n me.commands['redo'] = me.commands['undo'] = {\r\n execCommand:function (cmdName) {\r\n this.undoManger[cmdName]();\r\n },\r\n queryCommandState:function (cmdName) {\r\n return this.undoManger['has' + (cmdName.toLowerCase() == 'undo' ? 'Undo' : 'Redo')] ? 0 : -1;\r\n },\r\n notNeedUndo:1\r\n };\r\n\r\n var keys = {\r\n // /*Backspace*/ 8:1, /*Delete*/ 46:1,\r\n /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1,\r\n 37:1, 38:1, 39:1, 40:1\r\n\r\n },\r\n keycont = 0,\r\n lastKeyCode;\r\n //输入法状态下不计算字符数\r\n var inputType = false;\r\n me.addListener('ready', function () {\r\n domUtils.on(this.body, 'compositionstart', function () {\r\n inputType = true;\r\n });\r\n domUtils.on(this.body, 'compositionend', function () {\r\n inputType = false;\r\n })\r\n });\r\n //快捷键\r\n me.addshortcutkey({\r\n \"Undo\":\"ctrl+90\", //undo\r\n \"Redo\":\"ctrl+89\" //redo\r\n\r\n });\r\n var isCollapsed = true;\r\n me.addListener('keydown', function (type, evt) {\r\n\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n if (inputType)\r\n return;\r\n\r\n if(!me.selection.getRange().collapsed){\r\n me.undoManger.save(false,true);\r\n isCollapsed = false;\r\n return;\r\n }\r\n if (me.undoManger.list.length == 0) {\r\n me.undoManger.save(true);\r\n }\r\n clearTimeout(saveSceneTimer);\r\n function save(cont){\r\n cont.undoManger.save(false,true);\r\n cont.fireEvent('selectionchange');\r\n }\r\n saveSceneTimer = setTimeout(function(){\r\n if(inputType){\r\n var interalTimer = setInterval(function(){\r\n if(!inputType){\r\n save(me);\r\n clearInterval(interalTimer)\r\n }\r\n },300)\r\n return;\r\n }\r\n save(me);\r\n },200);\r\n\r\n lastKeyCode = keyCode;\r\n keycont++;\r\n if (keycont >= maxInputCount ) {\r\n save(me)\r\n }\r\n }\r\n });\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n if (inputType)\r\n return;\r\n if(!isCollapsed){\r\n this.undoManger.save(false,true);\r\n isCollapsed = true;\r\n }\r\n }\r\n });\r\n //扩展实例,添加关闭和开启命令undo\r\n me.stopCmdUndo = function(){\r\n me.__hasEnterExecCommand = true;\r\n };\r\n me.startCmdUndo = function(){\r\n me.__hasEnterExecCommand = false;\r\n }\r\n};\r\n\r\n\r\n// plugins/copy.js\r\nUE.plugin.register('copy', function () {\r\n\r\n var me = this;\r\n\r\n function initZeroClipboard() {\r\n\r\n ZeroClipboard.config({\r\n debug: false,\r\n swfPath: me.options.UEDITOR_HOME_URL + 'third-party/zeroclipboard/ZeroClipboard.swf'\r\n });\r\n\r\n var client = me.zeroclipboard = new ZeroClipboard();\r\n\r\n // 复制内容\r\n client.on('copy', function (e) {\r\n var client = e.client,\r\n rng = me.selection.getRange(),\r\n div = document.createElement('div');\r\n\r\n div.appendChild(rng.cloneContents());\r\n client.setText(div.innerText || div.textContent);\r\n client.setHtml(div.innerHTML);\r\n rng.select();\r\n });\r\n // hover事件传递到target\r\n client.on('mouseover mouseout', function (e) {\r\n var target = e.target;\r\n if (e.type == 'mouseover') {\r\n domUtils.addClass(target, 'edui-state-hover');\r\n } else if (e.type == 'mouseout') {\r\n domUtils.removeClasses(target, 'edui-state-hover');\r\n }\r\n });\r\n // flash加载不成功\r\n client.on('wrongflash noflash', function () {\r\n ZeroClipboard.destroy();\r\n });\r\n }\r\n\r\n return {\r\n bindEvents: {\r\n 'ready': function () {\r\n if (!browser.ie) {\r\n if (window.ZeroClipboard) {\r\n initZeroClipboard();\r\n } else {\r\n utils.loadFile(document, {\r\n src: me.options.UEDITOR_HOME_URL + \"third-party/zeroclipboard/ZeroClipboard.js\",\r\n tag: \"script\",\r\n type: \"text/javascript\",\r\n defer: \"defer\"\r\n }, function () {\r\n initZeroClipboard();\r\n });\r\n }\r\n }\r\n }\r\n },\r\n commands: {\r\n 'copy': {\r\n execCommand: function (cmd) {\r\n if (!me.document.execCommand('copy')) {\r\n alert(me.getLang('copymsg'));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\r\n// plugins/paste.js\r\n///import core\r\n///import plugins/inserthtml.js\r\n///import plugins/undo.js\r\n///import plugins/serialize.js\r\n///commands 粘贴\r\n///commandsName PastePlain\r\n///commandsTitle 纯文本粘贴模式\r\n/**\r\n * @description 粘贴\r\n * @author zhanyi\r\n */\r\nUE.plugins['paste'] = function () {\r\n function getClipboardData(callback) {\r\n var doc = this.document;\r\n if (doc.getElementById('baidu_pastebin')) {\r\n return;\r\n }\r\n var range = this.selection.getRange(),\r\n bk = range.createBookmark(),\r\n //创建剪贴的容器div\r\n pastebin = doc.createElement('div');\r\n pastebin.id = 'baidu_pastebin';\r\n // Safari 要求div必须有内容,才能粘贴内容进来\r\n browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar));\r\n doc.body.appendChild(pastebin);\r\n //trace:717 隐藏的span不能得到top\r\n //bk.start.innerHTML = ' ';\r\n bk.start.style.display = '';\r\n pastebin.style.cssText = \"position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:\" +\r\n //要在现在光标平行的位置加入,否则会出现跳动的问题\r\n domUtils.getXY(bk.start).y + 'px';\r\n\r\n range.selectNodeContents(pastebin).select(true);\r\n\r\n setTimeout(function () {\r\n if (browser.webkit) {\r\n for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) {\r\n if (domUtils.isEmptyNode(pi)) {\r\n domUtils.remove(pi);\r\n } else {\r\n pastebin = pi;\r\n break;\r\n }\r\n }\r\n }\r\n try {\r\n pastebin.parentNode.removeChild(pastebin);\r\n } catch (e) {\r\n }\r\n range.moveToBookmark(bk).select(true);\r\n callback(pastebin);\r\n }, 0);\r\n }\r\n\r\n var me = this;\r\n\r\n me.setOpt({\r\n retainOnlyLabelPasted : false\r\n });\r\n\r\n var txtContent, htmlContent, address;\r\n\r\n function getPureHtml(html){\r\n return html.replace(/<(\\/?)([\\w\\-]+)([^>]*)>/gi, function (a, b, tagName, attrs) {\r\n tagName = tagName.toLowerCase();\r\n if ({img: 1}[tagName]) {\r\n return a;\r\n }\r\n attrs = attrs.replace(/([\\w\\-]*?)\\s*=\\s*((\"([^\"]*)\")|('([^']*)')|([^\\s>]+))/gi, function (str, atr, val) {\r\n if ({\r\n 'src': 1,\r\n 'href': 1,\r\n 'name': 1\r\n }[atr.toLowerCase()]) {\r\n return atr + '=' + val + ' '\r\n }\r\n return ''\r\n });\r\n if ({\r\n 'span': 1,\r\n 'div': 1\r\n }[tagName]) {\r\n return ''\r\n } else {\r\n\r\n return '<' + b + tagName + ' ' + utils.trim(attrs) + '>'\r\n }\r\n\r\n });\r\n }\r\n function filter(div) {\r\n var html;\r\n if (div.firstChild) {\r\n //去掉cut中添加的边界值\r\n var nodes = domUtils.getElementsByTagName(div, 'span');\r\n for (var i = 0, ni; ni = nodes[i++];) {\r\n if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') {\r\n domUtils.remove(ni);\r\n }\r\n }\r\n\r\n if (browser.webkit) {\r\n\r\n var brs = div.querySelectorAll('div br');\r\n for (var i = 0, bi; bi = brs[i++];) {\r\n var pN = bi.parentNode;\r\n if (pN.tagName == 'DIV' && pN.childNodes.length == 1) {\r\n pN.innerHTML = '<p><br/></p>';\r\n domUtils.remove(pN);\r\n }\r\n }\r\n var divs = div.querySelectorAll('#baidu_pastebin');\r\n for (var i = 0, di; di = divs[i++];) {\r\n var tmpP = me.document.createElement('p');\r\n di.parentNode.insertBefore(tmpP, di);\r\n while (di.firstChild) {\r\n tmpP.appendChild(di.firstChild);\r\n }\r\n domUtils.remove(di);\r\n }\r\n\r\n var metas = div.querySelectorAll('meta');\r\n for (var i = 0, ci; ci = metas[i++];) {\r\n domUtils.remove(ci);\r\n }\r\n\r\n var brs = div.querySelectorAll('br');\r\n for (i = 0; ci = brs[i++];) {\r\n if (/^apple-/i.test(ci.className)) {\r\n domUtils.remove(ci);\r\n }\r\n }\r\n }\r\n if (browser.gecko) {\r\n var dirtyNodes = div.querySelectorAll('[_moz_dirty]');\r\n for (i = 0; ci = dirtyNodes[i++];) {\r\n ci.removeAttribute('_moz_dirty');\r\n }\r\n }\r\n if (!browser.ie) {\r\n var spans = div.querySelectorAll('span.Apple-style-span');\r\n for (var i = 0, ci; ci = spans[i++];) {\r\n domUtils.remove(ci, true);\r\n }\r\n }\r\n\r\n //ie下使用innerHTML会产生多余的\\r\\n字符,也会产生 这里过滤掉\r\n html = div.innerHTML;//.replace(/>(?:(\\s| )*?)</g,'><');\r\n\r\n //过滤word粘贴过来的冗余属性\r\n html = UE.filterWord(html);\r\n //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签\r\n var root = UE.htmlparser(html);\r\n //如果给了过滤规则就先进行过滤\r\n if (me.options.filterRules) {\r\n UE.filterNode(root, me.options.filterRules);\r\n }\r\n //执行默认的处理\r\n me.filterInputRule(root);\r\n //针对chrome的处理\r\n if (browser.webkit) {\r\n var br = root.lastChild();\r\n if (br && br.type == 'element' && br.tagName == 'br') {\r\n root.removeChild(br)\r\n }\r\n utils.each(me.body.querySelectorAll('div'), function (node) {\r\n if (domUtils.isEmptyBlock(node)) {\r\n domUtils.remove(node,true)\r\n }\r\n })\r\n }\r\n html = {'html': root.toHtml()};\r\n me.fireEvent('beforepaste', html, root);\r\n //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴\r\n if(!html.html){\r\n return;\r\n }\r\n root = UE.htmlparser(html.html,true);\r\n //如果开启了纯文本模式\r\n if (me.queryCommandState('pasteplain') === 1) {\r\n me.execCommand('insertHtml', UE.filterNode(root, me.options.filterTxtRules).toHtml(), true);\r\n } else {\r\n //文本模式\r\n UE.filterNode(root, me.options.filterTxtRules);\r\n txtContent = root.toHtml();\r\n //完全模式\r\n htmlContent = html.html;\r\n\r\n address = me.selection.getRange().createAddress(true);\r\n me.execCommand('insertHtml', me.getOpt('retainOnlyLabelPasted') === true ? getPureHtml(htmlContent) : htmlContent, true);\r\n }\r\n me.fireEvent(\"afterpaste\", html);\r\n }\r\n }\r\n\r\n me.addListener('pasteTransfer', function (cmd, plainType) {\r\n\r\n if (address && txtContent && htmlContent && txtContent != htmlContent) {\r\n var range = me.selection.getRange();\r\n range.moveToAddress(address, true);\r\n\r\n if (!range.collapsed) {\r\n\r\n while (!domUtils.isBody(range.startContainer)\r\n ) {\r\n var start = range.startContainer;\r\n if(start.nodeType == 1){\r\n start = start.childNodes[range.startOffset];\r\n if(!start){\r\n range.setStartBefore(range.startContainer);\r\n continue;\r\n }\r\n var pre = start.previousSibling;\r\n\r\n if(pre && pre.nodeType == 3 && new RegExp('^[\\n\\r\\t '+domUtils.fillChar+']*$').test(pre.nodeValue)){\r\n range.setStartBefore(pre)\r\n }\r\n }\r\n if(range.startOffset == 0){\r\n range.setStartBefore(range.startContainer);\r\n }else{\r\n break;\r\n }\r\n\r\n }\r\n while (!domUtils.isBody(range.endContainer)\r\n ) {\r\n var end = range.endContainer;\r\n if(end.nodeType == 1){\r\n end = end.childNodes[range.endOffset];\r\n if(!end){\r\n range.setEndAfter(range.endContainer);\r\n continue;\r\n }\r\n var next = end.nextSibling;\r\n if(next && next.nodeType == 3 && new RegExp('^[\\n\\r\\t'+domUtils.fillChar+']*$').test(next.nodeValue)){\r\n range.setEndAfter(next)\r\n }\r\n }\r\n if(range.endOffset == range.endContainer[range.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length){\r\n range.setEndAfter(range.endContainer);\r\n }else{\r\n break;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n range.deleteContents();\r\n range.select(true);\r\n me.__hasEnterExecCommand = true;\r\n var html = htmlContent;\r\n if (plainType === 2 ) {\r\n html = getPureHtml(html);\r\n } else if (plainType) {\r\n html = txtContent;\r\n }\r\n me.execCommand('inserthtml', html, true);\r\n me.__hasEnterExecCommand = false;\r\n var rng = me.selection.getRange();\r\n while (!domUtils.isBody(rng.startContainer) && !rng.startOffset &&\r\n rng.startContainer[rng.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n rng.setStartBefore(rng.startContainer);\r\n }\r\n var tmpAddress = rng.createAddress(true);\r\n address.endAddress = tmpAddress.startAddress;\r\n }\r\n });\r\n\r\n me.addListener('ready', function () {\r\n domUtils.on(me.body, 'cut', function () {\r\n var range = me.selection.getRange();\r\n if (!range.collapsed && me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n });\r\n\r\n //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理\r\n domUtils.on(me.body, browser.ie || browser.opera ? 'keydown' : 'paste', function (e) {\r\n if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) {\r\n return;\r\n }\r\n getClipboardData.call(me, function (div) {\r\n filter(div);\r\n });\r\n });\r\n\r\n });\r\n\r\n me.commands['paste'] = {\r\n execCommand: function (cmd) {\r\n if (browser.ie) {\r\n getClipboardData.call(me, function (div) {\r\n filter(div);\r\n });\r\n me.document.execCommand('paste');\r\n } else {\r\n alert(me.getLang('pastemsg'));\r\n }\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\n// plugins/puretxtpaste.js\r\n/**\r\n * 纯文本粘贴插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\nUE.plugins['pasteplain'] = function(){\r\n var me = this;\r\n me.setOpt({\r\n 'pasteplain':false,\r\n 'filterTxtRules' : function(){\r\n function transP(node){\r\n node.tagName = 'p';\r\n node.setStyle();\r\n }\r\n function removeNode(node){\r\n node.parentNode.removeChild(node,true)\r\n }\r\n return {\r\n //直接删除及其字节点内容\r\n '-' : 'script style object iframe embed input select',\r\n 'p': {$:{}},\r\n 'br':{$:{}},\r\n div: function (node) {\r\n var tmpNode, p = UE.uNode.createElement('p');\r\n while (tmpNode = node.firstChild()) {\r\n if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {\r\n p.appendChild(tmpNode);\r\n } else {\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n p = UE.uNode.createElement('p');\r\n } else {\r\n node.parentNode.insertBefore(tmpNode, node);\r\n }\r\n }\r\n }\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n }\r\n node.parentNode.removeChild(node);\r\n },\r\n ol: removeNode,\r\n ul: removeNode,\r\n dl:removeNode,\r\n dt:removeNode,\r\n dd:removeNode,\r\n 'li':removeNode,\r\n 'caption':transP,\r\n 'th':transP,\r\n 'tr':transP,\r\n 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,\r\n 'td':function(node){\r\n //没有内容的td直接删掉\r\n var txt = !!node.innerText();\r\n if(txt){\r\n node.parentNode.insertAfter(UE.uNode.createText(' '),node);\r\n }\r\n node.parentNode.removeChild(node,node.innerText())\r\n }\r\n }\r\n }()\r\n });\r\n //暂时这里支持一下老版本的属性\r\n var pasteplain = me.options.pasteplain;\r\n\r\n /**\r\n * 启用或取消纯文本粘贴模式\r\n * @command pasteplain\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'pasteplain' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前是否处于纯文本粘贴模式\r\n * @command pasteplain\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果处于纯文本模式,返回1,否则,返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'pasteplain' );\r\n * ```\r\n */\r\n me.commands['pasteplain'] = {\r\n queryCommandState: function (){\r\n return pasteplain ? 1 : 0;\r\n },\r\n execCommand: function (){\r\n pasteplain = !pasteplain|0;\r\n },\r\n notNeedUndo : 1\r\n };\r\n};\r\n\r\n// plugins/list.js\r\n/**\r\n * 有序列表,无序列表插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\nUE.plugins['list'] = function () {\r\n var me = this,\r\n notExchange = {\r\n 'TD':1,\r\n 'PRE':1,\r\n 'BLOCKQUOTE':1\r\n };\r\n var customStyle = {\r\n 'cn' : 'cn-1-',\r\n 'cn1' : 'cn-2-',\r\n 'cn2' : 'cn-3-',\r\n 'num': 'num-1-',\r\n 'num1' : 'num-2-',\r\n 'num2' : 'num-3-',\r\n 'dash' : 'dash',\r\n 'dot':'dot'\r\n };\r\n\r\n me.setOpt( {\r\n 'autoTransWordToList':false,\r\n 'insertorderedlist':{\r\n 'num':'',\r\n 'num1':'',\r\n 'num2':'',\r\n 'cn':'',\r\n 'cn1':'',\r\n 'cn2':'',\r\n 'decimal':'',\r\n 'lower-alpha':'',\r\n 'lower-roman':'',\r\n 'upper-alpha':'',\r\n 'upper-roman':''\r\n },\r\n 'insertunorderedlist':{\r\n 'circle':'',\r\n 'disc':'',\r\n 'square':'',\r\n 'dash' : '',\r\n 'dot':''\r\n },\r\n listDefaultPaddingLeft : '30',\r\n listiconpath : 'http://bs.baidu.com/listicon/',\r\n maxListLevel : -1,//-1不限制\r\n disablePInList:false\r\n } );\r\n function listToArray(list){\r\n var arr = [];\r\n for(var p in list){\r\n arr.push(p)\r\n }\r\n return arr;\r\n }\r\n var listStyle = {\r\n 'OL':listToArray(me.options.insertorderedlist),\r\n 'UL':listToArray(me.options.insertunorderedlist)\r\n };\r\n var liiconpath = me.options.listiconpath;\r\n\r\n //根据用户配置,调整customStyle\r\n for(var s in customStyle){\r\n if(!me.options.insertorderedlist.hasOwnProperty(s) && !me.options.insertunorderedlist.hasOwnProperty(s)){\r\n delete customStyle[s];\r\n }\r\n }\r\n\r\n me.ready(function () {\r\n var customCss = [];\r\n for(var p in customStyle){\r\n if(p == 'dash' || p == 'dot'){\r\n customCss.push('li.list-' + customStyle[p] + '{background-image:url(' + liiconpath +customStyle[p]+'.gif)}');\r\n customCss.push('ul.custom_'+p+'{list-style:none;}ul.custom_'+p+' li{background-position:0 3px;background-repeat:no-repeat}');\r\n }else{\r\n for(var i= 0;i<99;i++){\r\n customCss.push('li.list-' + customStyle[p] + i + '{background-image:url(' + liiconpath + 'list-'+customStyle[p] + i + '.gif)}')\r\n }\r\n customCss.push('ol.custom_'+p+'{list-style:none;}ol.custom_'+p+' li{background-position:0 3px;background-repeat:no-repeat}');\r\n }\r\n switch(p){\r\n case 'cn':\r\n customCss.push('li.list-'+p+'-paddingleft-1{padding-left:25px}');\r\n customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}');\r\n customCss.push('li.list-'+p+'-paddingleft-3{padding-left:55px}');\r\n break;\r\n case 'cn1':\r\n customCss.push('li.list-'+p+'-paddingleft-1{padding-left:30px}');\r\n customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}');\r\n customCss.push('li.list-'+p+'-paddingleft-3{padding-left:55px}');\r\n break;\r\n case 'cn2':\r\n customCss.push('li.list-'+p+'-paddingleft-1{padding-left:40px}');\r\n customCss.push('li.list-'+p+'-paddingleft-2{padding-left:55px}');\r\n customCss.push('li.list-'+p+'-paddingleft-3{padding-left:68px}');\r\n break;\r\n case 'num':\r\n case 'num1':\r\n customCss.push('li.list-'+p+'-paddingleft-1{padding-left:25px}');\r\n break;\r\n case 'num2':\r\n customCss.push('li.list-'+p+'-paddingleft-1{padding-left:35px}');\r\n customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}');\r\n break;\r\n case 'dash':\r\n customCss.push('li.list-'+p+'-paddingleft{padding-left:35px}');\r\n break;\r\n case 'dot':\r\n customCss.push('li.list-'+p+'-paddingleft{padding-left:20px}');\r\n }\r\n }\r\n customCss.push('.list-paddingleft-1{padding-left:0}');\r\n customCss.push('.list-paddingleft-2{padding-left:'+me.options.listDefaultPaddingLeft+'px}');\r\n customCss.push('.list-paddingleft-3{padding-left:'+me.options.listDefaultPaddingLeft*2+'px}');\r\n //如果不给宽度会在自定应样式里出现滚动条\r\n utils.cssRule('list', 'ol,ul{margin:0;pading:0;'+(browser.ie ? '' : 'width:95%')+'}li{clear:both;}'+customCss.join('\\n'), me.document);\r\n });\r\n //单独处理剪切的问题\r\n me.ready(function(){\r\n domUtils.on(me.body,'cut',function(){\r\n setTimeout(function(){\r\n var rng = me.selection.getRange(),li;\r\n //trace:3416\r\n if(!rng.collapsed){\r\n if(li = domUtils.findParentByTagName(rng.startContainer,'li',true)){\r\n if(!li.nextSibling && domUtils.isEmptyBlock(li)){\r\n var pn = li.parentNode,node;\r\n if(node = pn.previousSibling){\r\n domUtils.remove(pn);\r\n rng.setStartAtLast(node).collapse(true);\r\n rng.select(true);\r\n }else if(node = pn.nextSibling){\r\n domUtils.remove(pn);\r\n rng.setStartAtFirst(node).collapse(true);\r\n rng.select(true);\r\n }else{\r\n var tmpNode = me.document.createElement('p');\r\n domUtils.fillNode(me.document,tmpNode);\r\n pn.parentNode.insertBefore(tmpNode,pn);\r\n domUtils.remove(pn);\r\n rng.setStart(tmpNode,0).collapse(true);\r\n rng.select(true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n })\r\n })\r\n });\r\n\r\n function getStyle(node){\r\n var cls = node.className;\r\n if(domUtils.hasClass(node,/custom_/)){\r\n return cls.match(/custom_(\\w+)/)[1]\r\n }\r\n return domUtils.getStyle(node, 'list-style-type')\r\n\r\n }\r\n\r\n me.addListener('beforepaste',function(type,html){\r\n var me = this,\r\n rng = me.selection.getRange(),li;\r\n var root = UE.htmlparser(html.html,true);\r\n if(li = domUtils.findParentByTagName(rng.startContainer,'li',true)){\r\n var list = li.parentNode,tagName = list.tagName == 'OL' ? 'ul':'ol';\r\n utils.each(root.getNodesByTagName(tagName),function(n){\r\n n.tagName = list.tagName;\r\n n.setAttr();\r\n if(n.parentNode === root){\r\n type = getStyle(list) || (list.tagName == 'OL' ? 'decimal' : 'disc')\r\n }else{\r\n var className = n.parentNode.getAttr('class');\r\n if(className && /custom_/.test(className)){\r\n type = className.match(/custom_(\\w+)/)[1]\r\n }else{\r\n type = n.parentNode.getStyle('list-style-type');\r\n }\r\n if(!type){\r\n type = list.tagName == 'OL' ? 'decimal' : 'disc';\r\n }\r\n }\r\n var index = utils.indexOf(listStyle[list.tagName], type);\r\n if(n.parentNode !== root)\r\n index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][index];\r\n if(customStyle[currentStyle]){\r\n n.setAttr('class', 'custom_' + currentStyle)\r\n\r\n }else{\r\n n.setStyle('list-style-type',currentStyle)\r\n }\r\n })\r\n\r\n }\r\n\r\n html.html = root.toHtml();\r\n });\r\n //导出时,去掉p标签\r\n me.getOpt('disablePInList') === true && me.addOutputRule(function(root){\r\n utils.each(root.getNodesByTagName('li'),function(li){\r\n var newChildrens = [],index=0;\r\n utils.each(li.children,function(n){\r\n if(n.tagName == 'p'){\r\n var tmpNode;\r\n while(tmpNode = n.children.pop()) {\r\n newChildrens.splice(index,0,tmpNode);\r\n tmpNode.parentNode = li;\r\n lastNode = tmpNode;\r\n }\r\n tmpNode = newChildrens[newChildrens.length-1];\r\n if(!tmpNode || tmpNode.type != 'element' || tmpNode.tagName != 'br'){\r\n var br = UE.uNode.createElement('br');\r\n br.parentNode = li;\r\n newChildrens.push(br);\r\n }\r\n\r\n index = newChildrens.length;\r\n }\r\n });\r\n if(newChildrens.length){\r\n li.children = newChildrens;\r\n }\r\n });\r\n });\r\n //进入编辑器的li要套p标签\r\n me.addInputRule(function(root){\r\n utils.each(root.getNodesByTagName('li'),function(li){\r\n var tmpP = UE.uNode.createElement('p');\r\n for(var i= 0,ci;ci=li.children[i];){\r\n if(ci.type == 'text' || dtd.p[ci.tagName]){\r\n tmpP.appendChild(ci);\r\n }else{\r\n if(tmpP.firstChild()){\r\n li.insertBefore(tmpP,ci);\r\n tmpP = UE.uNode.createElement('p');\r\n i = i + 2;\r\n }else{\r\n i++;\r\n }\r\n\r\n }\r\n }\r\n if(tmpP.firstChild() && !tmpP.parentNode || !li.firstChild()){\r\n li.appendChild(tmpP);\r\n }\r\n //trace:3357\r\n //p不能为空\r\n if (!tmpP.firstChild()) {\r\n tmpP.innerHTML(browser.ie ? ' ' : '<br/>')\r\n }\r\n //去掉末尾的空白\r\n var p = li.firstChild();\r\n var lastChild = p.lastChild();\r\n if(lastChild && lastChild.type == 'text' && /^\\s*$/.test(lastChild.data)){\r\n p.removeChild(lastChild)\r\n }\r\n });\r\n if(me.options.autoTransWordToList){\r\n var orderlisttype = {\r\n 'num1':/^\\d+\\)/,\r\n 'decimal':/^\\d+\\./,\r\n 'lower-alpha':/^[a-z]+\\)/,\r\n 'upper-alpha':/^[A-Z]+\\./,\r\n 'cn':/^[\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+[\\u3001]/,\r\n 'cn2':/^\\([\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+\\)/\r\n },\r\n unorderlisttype = {\r\n 'square':'n'\r\n };\r\n function checkListType(content,container){\r\n var span = container.firstChild();\r\n if(span && span.type == 'element' && span.tagName == 'span' && /Wingdings|Symbol/.test(span.getStyle('font-family'))){\r\n for(var p in unorderlisttype){\r\n if(unorderlisttype[p] == span.data){\r\n return p\r\n }\r\n }\r\n return 'disc'\r\n }\r\n for(var p in orderlisttype){\r\n if(orderlisttype[p].test(content)){\r\n return p;\r\n }\r\n }\r\n\r\n }\r\n utils.each(root.getNodesByTagName('p'),function(node){\r\n if(node.getAttr('class') != 'MsoListParagraph'){\r\n return\r\n }\r\n\r\n //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视\r\n node.setStyle('margin','');\r\n node.setStyle('margin-left','');\r\n node.setAttr('class','');\r\n\r\n function appendLi(list,p,type){\r\n if(list.tagName == 'ol'){\r\n if(browser.ie){\r\n var first = p.firstChild();\r\n if(first.type =='element' && first.tagName == 'span' && orderlisttype[type].test(first.innerText())){\r\n p.removeChild(first);\r\n }\r\n }else{\r\n p.innerHTML(p.innerHTML().replace(orderlisttype[type],''));\r\n }\r\n }else{\r\n p.removeChild(p.firstChild())\r\n }\r\n\r\n var li = UE.uNode.createElement('li');\r\n li.appendChild(p);\r\n list.appendChild(li);\r\n }\r\n var tmp = node,type,cacheNode = node;\r\n\r\n if(node.parentNode.tagName != 'li' && (type = checkListType(node.innerText(),node))){\r\n\r\n var list = UE.uNode.createElement(me.options.insertorderedlist.hasOwnProperty(type) ? 'ol' : 'ul');\r\n if(customStyle[type]){\r\n list.setAttr('class','custom_'+type)\r\n }else{\r\n list.setStyle('list-style-type',type)\r\n }\r\n while(node && node.parentNode.tagName != 'li' && checkListType(node.innerText(),node)){\r\n tmp = node.nextSibling();\r\n if(!tmp){\r\n node.parentNode.insertBefore(list,node)\r\n }\r\n appendLi(list,node,type);\r\n node = tmp;\r\n }\r\n if(!list.parentNode && node && node.parentNode){\r\n node.parentNode.insertBefore(list,node)\r\n }\r\n }\r\n var span = cacheNode.firstChild();\r\n if(span && span.type == 'element' && span.tagName == 'span' && /^\\s*( )+\\s*$/.test(span.innerText())){\r\n span.parentNode.removeChild(span)\r\n }\r\n })\r\n }\r\n\r\n });\r\n\r\n //调整索引标签\r\n me.addListener('contentchange',function(){\r\n adjustListStyle(me.document)\r\n });\r\n\r\n function adjustListStyle(doc,ignore){\r\n utils.each(domUtils.getElementsByTagName(doc,'ol ul'),function(node){\r\n\r\n if(!domUtils.inDoc(node,doc))\r\n return;\r\n\r\n var parent = node.parentNode;\r\n if(parent.tagName == node.tagName){\r\n var nodeStyleType = getStyle(node) || (node.tagName == 'OL' ? 'decimal' : 'disc'),\r\n parentStyleType = getStyle(parent) || (parent.tagName == 'OL' ? 'decimal' : 'disc');\r\n if(nodeStyleType == parentStyleType){\r\n var styleIndex = utils.indexOf(listStyle[node.tagName], nodeStyleType);\r\n styleIndex = styleIndex + 1 == listStyle[node.tagName].length ? 0 : styleIndex + 1;\r\n setListStyle(node,listStyle[node.tagName][styleIndex])\r\n }\r\n\r\n }\r\n var index = 0,type = 2;\r\n if( domUtils.hasClass(node,/custom_/)){\r\n if(!(/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent,/custom_/))){\r\n type = 1;\r\n }\r\n }else{\r\n if(/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent,/custom_/)){\r\n type = 3;\r\n }\r\n }\r\n\r\n var style = domUtils.getStyle(node, 'list-style-type');\r\n style && (node.style.cssText = 'list-style-type:' + style);\r\n node.className = utils.trim(node.className.replace(/list-paddingleft-\\w+/,'')) + ' list-paddingleft-' + type;\r\n utils.each(domUtils.getElementsByTagName(node,'li'),function(li){\r\n li.style.cssText && (li.style.cssText = '');\r\n if(!li.firstChild){\r\n domUtils.remove(li);\r\n return;\r\n }\r\n if(li.parentNode !== node){\r\n return;\r\n }\r\n index++;\r\n if(domUtils.hasClass(node,/custom_/) ){\r\n var paddingLeft = 1,currentStyle = getStyle(node);\r\n if(node.tagName == 'OL'){\r\n if(currentStyle){\r\n switch(currentStyle){\r\n case 'cn' :\r\n case 'cn1':\r\n case 'cn2':\r\n if(index > 10 && (index % 10 == 0 || index > 10 && index < 20)){\r\n paddingLeft = 2\r\n }else if(index > 20){\r\n paddingLeft = 3\r\n }\r\n break;\r\n case 'num2' :\r\n if(index > 9){\r\n paddingLeft = 2\r\n }\r\n }\r\n }\r\n li.className = 'list-'+customStyle[currentStyle]+ index + ' ' + 'list-'+currentStyle+'-paddingleft-' + paddingLeft;\r\n }else{\r\n li.className = 'list-'+customStyle[currentStyle] + ' ' + 'list-'+currentStyle+'-paddingleft';\r\n }\r\n }else{\r\n li.className = li.className.replace(/list-[\\w\\-]+/gi,'');\r\n }\r\n var className = li.getAttribute('class');\r\n if(className !== null && !className.replace(/\\s/g,'')){\r\n domUtils.removeAttributes(li,'class')\r\n }\r\n });\r\n !ignore && adjustList(node,node.tagName.toLowerCase(),getStyle(node)||domUtils.getStyle(node, 'list-style-type'),true);\r\n })\r\n }\r\n function adjustList(list, tag, style,ignoreEmpty) {\r\n var nextList = list.nextSibling;\r\n if (nextList && nextList.nodeType == 1 && nextList.tagName.toLowerCase() == tag && (getStyle(nextList) || domUtils.getStyle(nextList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) {\r\n domUtils.moveChild(nextList, list);\r\n if (nextList.childNodes.length == 0) {\r\n domUtils.remove(nextList);\r\n }\r\n }\r\n if(nextList && domUtils.isFillChar(nextList)){\r\n domUtils.remove(nextList);\r\n }\r\n var preList = list.previousSibling;\r\n if (preList && preList.nodeType == 1 && preList.tagName.toLowerCase() == tag && (getStyle(preList) || domUtils.getStyle(preList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) {\r\n domUtils.moveChild(list, preList);\r\n }\r\n if(preList && domUtils.isFillChar(preList)){\r\n domUtils.remove(preList);\r\n }\r\n !ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list);\r\n if(getStyle(list)){\r\n adjustListStyle(list.ownerDocument,true)\r\n }\r\n }\r\n\r\n function setListStyle(list,style){\r\n if(customStyle[style]){\r\n list.className = 'custom_' + style;\r\n }\r\n try{\r\n domUtils.setStyle(list, 'list-style-type', style);\r\n }catch(e){}\r\n }\r\n function clearEmptySibling(node) {\r\n var tmpNode = node.previousSibling;\r\n if (tmpNode && domUtils.isEmptyBlock(tmpNode)) {\r\n domUtils.remove(tmpNode);\r\n }\r\n tmpNode = node.nextSibling;\r\n if (tmpNode && domUtils.isEmptyBlock(tmpNode)) {\r\n domUtils.remove(tmpNode);\r\n }\r\n }\r\n\r\n me.addListener('keydown', function (type, evt) {\r\n function preventAndSave() {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n me.fireEvent('contentchange');\r\n me.undoManger && me.undoManger.save();\r\n }\r\n function findList(node,filterFn){\r\n while(node && !domUtils.isBody(node)){\r\n if(filterFn(node)){\r\n return null\r\n }\r\n if(node.nodeType == 1 && /[ou]l/i.test(node.tagName)){\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n }\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13 && !evt.shiftKey) {//回车\r\n var rng = me.selection.getRange(),\r\n parent = domUtils.findParent(rng.startContainer,function(node){return domUtils.isBlockElm(node)},true),\r\n li = domUtils.findParentByTagName(rng.startContainer,'li',true);\r\n if(parent && parent.tagName != 'PRE' && !li){\r\n var html = parent.innerHTML.replace(new RegExp(domUtils.fillChar, 'g'),'');\r\n if(/^\\s*1\\s*\\.[^\\d]/.test(html)){\r\n parent.innerHTML = html.replace(/^\\s*1\\s*\\./,'');\r\n rng.setStartAtLast(parent).collapse(true).select();\r\n me.__hasEnterExecCommand = true;\r\n me.execCommand('insertorderedlist');\r\n me.__hasEnterExecCommand = false;\r\n }\r\n }\r\n var range = me.selection.getRange(),\r\n start = findList(range.startContainer,function (node) {\r\n return node.tagName == 'TABLE';\r\n }),\r\n end = range.collapsed ? start : findList(range.endContainer,function (node) {\r\n return node.tagName == 'TABLE';\r\n });\r\n\r\n if (start && end && start === end) {\r\n\r\n if (!range.collapsed) {\r\n start = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n end = domUtils.findParentByTagName(range.endContainer, 'li', true);\r\n if (start && end && start === end) {\r\n range.deleteContents();\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if (li && domUtils.isEmptyBlock(li)) {\r\n\r\n pre = li.previousSibling;\r\n next = li.nextSibling;\r\n p = me.document.createElement('p');\r\n\r\n domUtils.fillNode(me.document, p);\r\n parentList = li.parentNode;\r\n if (pre && next) {\r\n range.setStart(next, 0).collapse(true).select(true);\r\n domUtils.remove(li);\r\n\r\n } else {\r\n if (!pre && !next || !pre) {\r\n\r\n parentList.parentNode.insertBefore(p, parentList);\r\n\r\n\r\n } else {\r\n li.parentNode.parentNode.insertBefore(p, parentList.nextSibling);\r\n }\r\n domUtils.remove(li);\r\n if (!parentList.firstChild) {\r\n domUtils.remove(parentList);\r\n }\r\n range.setStart(p, 0).setCursor();\r\n\r\n\r\n }\r\n preventAndSave();\r\n return;\r\n\r\n }\r\n } else {\r\n var tmpRange = range.cloneRange(),\r\n bk = tmpRange.collapse(false).createBookmark();\r\n\r\n range.deleteContents();\r\n tmpRange.moveToBookmark(bk);\r\n var li = domUtils.findParentByTagName(tmpRange.startContainer, 'li', true);\r\n\r\n clearEmptySibling(li);\r\n tmpRange.select();\r\n preventAndSave();\r\n return;\r\n }\r\n }\r\n\r\n\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n\r\n if (li) {\r\n if (domUtils.isEmptyBlock(li)) {\r\n bk = range.createBookmark();\r\n var parentList = li.parentNode;\r\n if (li !== parentList.lastChild) {\r\n domUtils.breakParent(li, parentList);\r\n clearEmptySibling(li);\r\n } else {\r\n\r\n parentList.parentNode.insertBefore(li, parentList.nextSibling);\r\n if (domUtils.isEmptyNode(parentList)) {\r\n domUtils.remove(parentList);\r\n }\r\n }\r\n //嵌套不处理\r\n if (!dtd.$list[li.parentNode.tagName]) {\r\n\r\n if (!domUtils.isBlockElm(li.firstChild)) {\r\n p = me.document.createElement('p');\r\n li.parentNode.insertBefore(p, li);\r\n while (li.firstChild) {\r\n p.appendChild(li.firstChild);\r\n }\r\n domUtils.remove(li);\r\n } else {\r\n domUtils.remove(li, true);\r\n }\r\n }\r\n range.moveToBookmark(bk).select();\r\n\r\n\r\n } else {\r\n var first = li.firstChild;\r\n if (!first || !domUtils.isBlockElm(first)) {\r\n var p = me.document.createElement('p');\r\n\r\n !li.firstChild && domUtils.fillNode(me.document, p);\r\n while (li.firstChild) {\r\n\r\n p.appendChild(li.firstChild);\r\n }\r\n li.appendChild(p);\r\n first = p;\r\n }\r\n\r\n var span = me.document.createElement('span');\r\n\r\n range.insertNode(span);\r\n domUtils.breakParent(span, li);\r\n\r\n var nextLi = span.nextSibling;\r\n first = nextLi.firstChild;\r\n\r\n if (!first) {\r\n p = me.document.createElement('p');\r\n\r\n domUtils.fillNode(me.document, p);\r\n nextLi.appendChild(p);\r\n first = p;\r\n }\r\n if (domUtils.isEmptyNode(first)) {\r\n first.innerHTML = '';\r\n domUtils.fillNode(me.document, first);\r\n }\r\n\r\n range.setStart(first, 0).collapse(true).shrinkBoundary().select();\r\n domUtils.remove(span);\r\n var pre = nextLi.previousSibling;\r\n if (pre && domUtils.isEmptyBlock(pre)) {\r\n pre.innerHTML = '<p></p>';\r\n domUtils.fillNode(me.document, pre.firstChild);\r\n }\r\n\r\n }\r\n// }\r\n preventAndSave();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n if (keyCode == 8) {\r\n //修中ie中li下的问题\r\n range = me.selection.getRange();\r\n if (range.collapsed && domUtils.isStartInblock(range)) {\r\n tmpRange = range.cloneRange().trimBoundary();\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n //要在li的最左边,才能处理\r\n if (li && domUtils.isStartInblock(tmpRange)) {\r\n start = domUtils.findParentByTagName(range.startContainer, 'p', true);\r\n if (start && start !== li.firstChild) {\r\n var parentList = domUtils.findParentByTagName(start,['ol','ul']);\r\n domUtils.breakParent(start,parentList);\r\n clearEmptySibling(start);\r\n me.fireEvent('contentchange');\r\n range.setStart(start,0).setCursor(false,true);\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n\r\n if (li && (pre = li.previousSibling)) {\r\n if (keyCode == 46 && li.childNodes.length) {\r\n return;\r\n }\r\n //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li\r\n if (dtd.$list[pre.tagName]) {\r\n pre = pre.lastChild;\r\n }\r\n me.undoManger && me.undoManger.save();\r\n first = li.firstChild;\r\n if (domUtils.isBlockElm(first)) {\r\n if (domUtils.isEmptyNode(first)) {\r\n// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true);\r\n pre.appendChild(first);\r\n range.setStart(first, 0).setCursor(false, true);\r\n //first不是唯一的节点\r\n while (li.firstChild) {\r\n pre.appendChild(li.firstChild);\r\n }\r\n } else {\r\n\r\n span = me.document.createElement('span');\r\n range.insertNode(span);\r\n //判断pre是否是空的节点,如果是<p><br/></p>类型的空节点,干掉p标签防止它占位\r\n if (domUtils.isEmptyBlock(pre)) {\r\n pre.innerHTML = '';\r\n }\r\n domUtils.moveChild(li, pre);\r\n range.setStartBefore(span).collapse(true).select(true);\r\n\r\n domUtils.remove(span);\r\n\r\n }\r\n } else {\r\n if (domUtils.isEmptyNode(li)) {\r\n var p = me.document.createElement('p');\r\n pre.appendChild(p);\r\n range.setStart(p, 0).setCursor();\r\n// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true);\r\n } else {\r\n range.setEnd(pre, pre.childNodes.length).collapse().select(true);\r\n while (li.firstChild) {\r\n pre.appendChild(li.firstChild);\r\n }\r\n }\r\n }\r\n domUtils.remove(li);\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n\r\n }\r\n //trace:980\r\n\r\n if (li && !li.previousSibling) {\r\n var parentList = li.parentNode;\r\n var bk = range.createBookmark();\r\n if(domUtils.isTagNode(parentList.parentNode,'ol ul')){\r\n parentList.parentNode.insertBefore(li,parentList);\r\n if(domUtils.isEmptyNode(parentList)){\r\n domUtils.remove(parentList)\r\n }\r\n }else{\r\n\r\n while(li.firstChild){\r\n parentList.parentNode.insertBefore(li.firstChild,parentList);\r\n }\r\n\r\n domUtils.remove(li);\r\n if(domUtils.isEmptyNode(parentList)){\r\n domUtils.remove(parentList)\r\n }\r\n\r\n }\r\n range.moveToBookmark(bk).setCursor(false,true);\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n me.addListener('keyup',function(type, evt){\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 8) {\r\n var rng = me.selection.getRange(),list;\r\n if(list = domUtils.findParentByTagName(rng.startContainer,['ol', 'ul'],true)){\r\n adjustList(list,list.tagName.toLowerCase(),getStyle(list)||domUtils.getComputedStyle(list,'list-style-type'),true)\r\n }\r\n }\r\n });\r\n //处理tab键\r\n me.addListener('tabkeydown',function(){\r\n\r\n var range = me.selection.getRange();\r\n\r\n //控制级数\r\n function checkLevel(li){\r\n if(me.options.maxListLevel != -1){\r\n var level = li.parentNode,levelNum = 0;\r\n while(/[ou]l/i.test(level.tagName)){\r\n levelNum++;\r\n level = level.parentNode;\r\n }\r\n if(levelNum >= me.options.maxListLevel){\r\n return true;\r\n }\r\n }\r\n }\r\n //只以开始为准\r\n //todo 后续改进\r\n var li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if(li){\r\n\r\n var bk;\r\n if(range.collapsed){\r\n if(checkLevel(li))\r\n return true;\r\n var parentLi = li.parentNode,\r\n list = me.document.createElement(parentLi.tagName),\r\n index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi)||domUtils.getComputedStyle(parentLi, 'list-style-type'));\r\n index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][index];\r\n setListStyle(list,currentStyle);\r\n if(domUtils.isStartInblock(range)){\r\n me.fireEvent('saveScene');\r\n bk = range.createBookmark();\r\n parentLi.insertBefore(list, li);\r\n list.appendChild(li);\r\n adjustList(list,list.tagName.toLowerCase(),currentStyle);\r\n me.fireEvent('contentchange');\r\n range.moveToBookmark(bk).select(true);\r\n return true;\r\n }\r\n }else{\r\n me.fireEvent('saveScene');\r\n bk = range.createBookmark();\r\n for(var i= 0,closeList,parents = domUtils.findParents(li),ci;ci=parents[i++];){\r\n if(domUtils.isTagNode(ci,'ol ul')){\r\n closeList = ci;\r\n break;\r\n }\r\n }\r\n var current = li;\r\n if(bk.end){\r\n while(current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)){\r\n if(checkLevel(current)){\r\n current = domUtils.getNextDomNode(current,false,null,function(node){return node !== closeList});\r\n continue;\r\n }\r\n var parentLi = current.parentNode,\r\n list = me.document.createElement(parentLi.tagName),\r\n index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi)||domUtils.getComputedStyle(parentLi, 'list-style-type'));\r\n var currentIndex = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][currentIndex];\r\n setListStyle(list,currentStyle);\r\n parentLi.insertBefore(list, current);\r\n while(current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)){\r\n li = current.nextSibling;\r\n list.appendChild(current);\r\n if(!li || domUtils.isTagNode(li,'ol ul')){\r\n if(li){\r\n while(li = li.firstChild){\r\n if(li.tagName == 'LI'){\r\n break;\r\n }\r\n }\r\n }else{\r\n li = domUtils.getNextDomNode(current,false,null,function(node){return node !== closeList});\r\n }\r\n break;\r\n }\r\n current = li;\r\n }\r\n adjustList(list,list.tagName.toLowerCase(),currentStyle);\r\n current = li;\r\n }\r\n }\r\n me.fireEvent('contentchange');\r\n range.moveToBookmark(bk).select();\r\n return true;\r\n }\r\n }\r\n\r\n });\r\n function getLi(start){\r\n while(start && !domUtils.isBody(start)){\r\n if(start.nodeName == 'TABLE'){\r\n return null;\r\n }\r\n if(start.nodeName == 'LI'){\r\n return start\r\n }\r\n start = start.parentNode;\r\n }\r\n }\r\n\r\n /**\r\n * 有序列表,与“insertunorderedlist”命令互斥\r\n * @command insertorderedlist\r\n * @method execCommand\r\n * @param { String } command 命令字符串\r\n * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertorderedlist','decimal');\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertorderedlist\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果当前选区是有序列表返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'insertorderedlist' );\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertorderedlist\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertorderedlist' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 无序列表,与“insertorderedlist”命令互斥\r\n * @command insertunorderedlist\r\n * @method execCommand\r\n * @param { String } command 命令字符串\r\n * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertunorderedlist','circle');\r\n * ```\r\n */\r\n /**\r\n * 查询当前是否有word文档粘贴进来的图片\r\n * @command insertunorderedlist\r\n * @method insertunorderedlist\r\n * @param { String } command 命令字符串\r\n * @return { int } 如果当前选区是无序列表返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'insertunorderedlist' );\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertunorderedlist\r\n * @method queryCommandValue\r\n * @param { String } command 命令字符串\r\n * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertunorderedlist' );\r\n * ```\r\n */\r\n\r\n me.commands['insertorderedlist'] =\r\n me.commands['insertunorderedlist'] = {\r\n execCommand:function (command, style) {\r\n\r\n if (!style) {\r\n style = command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc';\r\n }\r\n var me = this,\r\n range = this.selection.getRange(),\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node);\r\n },\r\n tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul',\r\n frag = me.document.createDocumentFragment();\r\n //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置\r\n //range.shrinkBoundary();//.adjustmentBoundary();\r\n range.adjustmentBoundary().shrinkBoundary();\r\n var bko = range.createBookmark(true),\r\n start = getLi(me.document.getElementById(bko.start)),\r\n modifyStart = 0,\r\n end = getLi(me.document.getElementById(bko.end)),\r\n modifyEnd = 0,\r\n startParent, endParent,\r\n list, tmp;\r\n\r\n if (start || end) {\r\n start && (startParent = start.parentNode);\r\n if (!bko.end) {\r\n end = start;\r\n }\r\n end && (endParent = end.parentNode);\r\n\r\n if (startParent === endParent) {\r\n while (start !== end) {\r\n tmp = start;\r\n start = start.nextSibling;\r\n if (!domUtils.isBlockElm(tmp.firstChild)) {\r\n var p = me.document.createElement('p');\r\n while (tmp.firstChild) {\r\n p.appendChild(tmp.firstChild);\r\n }\r\n tmp.appendChild(p);\r\n }\r\n frag.appendChild(tmp);\r\n }\r\n tmp = me.document.createElement('span');\r\n startParent.insertBefore(tmp, end);\r\n if (!domUtils.isBlockElm(end.firstChild)) {\r\n p = me.document.createElement('p');\r\n while (end.firstChild) {\r\n p.appendChild(end.firstChild);\r\n }\r\n end.appendChild(p);\r\n }\r\n frag.appendChild(end);\r\n domUtils.breakParent(tmp, startParent);\r\n if (domUtils.isEmptyNode(tmp.previousSibling)) {\r\n domUtils.remove(tmp.previousSibling);\r\n }\r\n if (domUtils.isEmptyNode(tmp.nextSibling)) {\r\n domUtils.remove(tmp.nextSibling)\r\n }\r\n var nodeStyle = getStyle(startParent) || domUtils.getComputedStyle(startParent, 'list-style-type') || (command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc');\r\n if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) {\r\n for (var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); ci = frag.firstChild;) {\r\n if(domUtils.isTagNode(ci,'ol ul')){\r\n// 删除时,子列表不处理\r\n// utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){\r\n// while(li.firstChild){\r\n// tmpFrag.appendChild(li.firstChild);\r\n// }\r\n//\r\n// });\r\n tmpFrag.appendChild(ci);\r\n }else{\r\n while (ci.firstChild) {\r\n\r\n tmpFrag.appendChild(ci.firstChild);\r\n domUtils.remove(ci);\r\n }\r\n }\r\n\r\n }\r\n tmp.parentNode.insertBefore(tmpFrag, tmp);\r\n } else {\r\n list = me.document.createElement(tag);\r\n setListStyle(list,style);\r\n list.appendChild(frag);\r\n tmp.parentNode.insertBefore(list, tmp);\r\n }\r\n\r\n domUtils.remove(tmp);\r\n list && adjustList(list, tag, style);\r\n range.moveToBookmark(bko).select();\r\n return;\r\n }\r\n //开始\r\n if (start) {\r\n while (start) {\r\n tmp = start.nextSibling;\r\n if (domUtils.isTagNode(start, 'ol ul')) {\r\n frag.appendChild(start);\r\n } else {\r\n var tmpfrag = me.document.createDocumentFragment(),\r\n hasBlock = 0;\r\n while (start.firstChild) {\r\n if (domUtils.isBlockElm(start.firstChild)) {\r\n hasBlock = 1;\r\n }\r\n tmpfrag.appendChild(start.firstChild);\r\n }\r\n if (!hasBlock) {\r\n var tmpP = me.document.createElement('p');\r\n tmpP.appendChild(tmpfrag);\r\n frag.appendChild(tmpP);\r\n } else {\r\n frag.appendChild(tmpfrag);\r\n }\r\n domUtils.remove(start);\r\n }\r\n\r\n start = tmp;\r\n }\r\n startParent.parentNode.insertBefore(frag, startParent.nextSibling);\r\n if (domUtils.isEmptyNode(startParent)) {\r\n range.setStartBefore(startParent);\r\n domUtils.remove(startParent);\r\n } else {\r\n range.setStartAfter(startParent);\r\n }\r\n modifyStart = 1;\r\n }\r\n\r\n if (end && domUtils.inDoc(endParent, me.document)) {\r\n //结束\r\n start = endParent.firstChild;\r\n while (start && start !== end) {\r\n tmp = start.nextSibling;\r\n if (domUtils.isTagNode(start, 'ol ul')) {\r\n frag.appendChild(start);\r\n } else {\r\n tmpfrag = me.document.createDocumentFragment();\r\n hasBlock = 0;\r\n while (start.firstChild) {\r\n if (domUtils.isBlockElm(start.firstChild)) {\r\n hasBlock = 1;\r\n }\r\n tmpfrag.appendChild(start.firstChild);\r\n }\r\n if (!hasBlock) {\r\n tmpP = me.document.createElement('p');\r\n tmpP.appendChild(tmpfrag);\r\n frag.appendChild(tmpP);\r\n } else {\r\n frag.appendChild(tmpfrag);\r\n }\r\n domUtils.remove(start);\r\n }\r\n start = tmp;\r\n }\r\n var tmpDiv = domUtils.createElement(me.document, 'div', {\r\n 'tmpDiv':1\r\n });\r\n domUtils.moveChild(end, tmpDiv);\r\n\r\n frag.appendChild(tmpDiv);\r\n domUtils.remove(end);\r\n endParent.parentNode.insertBefore(frag, endParent);\r\n range.setEndBefore(endParent);\r\n if (domUtils.isEmptyNode(endParent)) {\r\n domUtils.remove(endParent);\r\n }\r\n\r\n modifyEnd = 1;\r\n }\r\n\r\n\r\n }\r\n\r\n if (!modifyStart) {\r\n range.setStartBefore(me.document.getElementById(bko.start));\r\n }\r\n if (bko.end && !modifyEnd) {\r\n range.setEndAfter(me.document.getElementById(bko.end));\r\n }\r\n range.enlarge(true, function (node) {\r\n return notExchange[node.tagName];\r\n });\r\n\r\n frag = me.document.createDocumentFragment();\r\n\r\n var bk = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bk.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode,\r\n block = domUtils.isBlockElm;\r\n\r\n while (current && current !== bk.end && (domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING)) {\r\n\r\n if (current.nodeType == 3 || dtd.li[current.tagName]) {\r\n if (current.nodeType == 1 && dtd.$list[current.tagName]) {\r\n while (current.firstChild) {\r\n frag.appendChild(current.firstChild);\r\n }\r\n tmpNode = domUtils.getNextDomNode(current, false, filterFn);\r\n domUtils.remove(current);\r\n current = tmpNode;\r\n continue;\r\n\r\n }\r\n tmpNode = current;\r\n tmpRange.setStartBefore(current);\r\n\r\n while (current && current !== bk.end && (!block(current) || domUtils.isBookmarkNode(current) )) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !notExchange[node.tagName];\r\n });\r\n }\r\n\r\n if (current && block(current)) {\r\n tmp = domUtils.getNextDomNode(tmpNode, false, filterFn);\r\n if (tmp && domUtils.isBookmarkNode(tmp)) {\r\n current = domUtils.getNextDomNode(tmp, false, filterFn);\r\n tmpNode = tmp;\r\n }\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n\r\n current = domUtils.getNextDomNode(tmpNode, false, filterFn);\r\n\r\n var li = range.document.createElement('li');\r\n\r\n li.appendChild(tmpRange.extractContents());\r\n if(domUtils.isEmptyNode(li)){\r\n var tmpNode = range.document.createElement('p');\r\n while(li.firstChild){\r\n tmpNode.appendChild(li.firstChild)\r\n }\r\n li.appendChild(tmpNode);\r\n }\r\n frag.appendChild(li);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n range.moveToBookmark(bk).collapse(true);\r\n list = me.document.createElement(tag);\r\n setListStyle(list,style);\r\n list.appendChild(frag);\r\n range.insertNode(list);\r\n //当前list上下看能否合并\r\n adjustList(list, tag, style);\r\n //去掉冗余的tmpDiv\r\n for (var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, 'div'); ci = tmpDivs[i++];) {\r\n if (ci.getAttribute('tmpDiv')) {\r\n domUtils.remove(ci, true)\r\n }\r\n }\r\n range.moveToBookmark(bko).select();\r\n\r\n },\r\n queryCommandState:function (command) {\r\n var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul';\r\n var path = this.selection.getStartElementPath();\r\n for(var i= 0,ci;ci = path[i++];){\r\n if(ci.nodeName == 'TABLE'){\r\n return 0\r\n }\r\n if(tag == ci.nodeName.toLowerCase()){\r\n return 1\r\n };\r\n }\r\n return 0;\r\n\r\n },\r\n queryCommandValue:function (command) {\r\n var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul';\r\n var path = this.selection.getStartElementPath(),\r\n node;\r\n for(var i= 0,ci;ci = path[i++];){\r\n if(ci.nodeName == 'TABLE'){\r\n node = null;\r\n break;\r\n }\r\n if(tag == ci.nodeName.toLowerCase()){\r\n node = ci;\r\n break;\r\n };\r\n }\r\n return node ? getStyle(node) || domUtils.getComputedStyle(node, 'list-style-type') : null;\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n// plugins/source.js\r\n/**\r\n * 源码编辑插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n(function (){\r\n var sourceEditors = {\r\n textarea: function (editor, holder){\r\n var textarea = holder.ownerDocument.createElement('textarea');\r\n textarea.style.cssText = 'position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;';\r\n // todo: IE下只有onresize属性可用... 很纠结\r\n if (browser.ie && browser.version < 8) {\r\n textarea.style.width = holder.offsetWidth + 'px';\r\n textarea.style.height = holder.offsetHeight + 'px';\r\n holder.onresize = function (){\r\n textarea.style.width = holder.offsetWidth + 'px';\r\n textarea.style.height = holder.offsetHeight + 'px';\r\n };\r\n }\r\n holder.appendChild(textarea);\r\n return {\r\n setContent: function (content){\r\n textarea.value = content;\r\n },\r\n getContent: function (){\r\n return textarea.value;\r\n },\r\n select: function (){\r\n var range;\r\n if (browser.ie) {\r\n range = textarea.createTextRange();\r\n range.collapse(true);\r\n range.select();\r\n } else {\r\n //todo: chrome下无法设置焦点\r\n textarea.setSelectionRange(0, 0);\r\n textarea.focus();\r\n }\r\n },\r\n dispose: function (){\r\n holder.removeChild(textarea);\r\n // todo\r\n holder.onresize = null;\r\n textarea = null;\r\n holder = null;\r\n }\r\n };\r\n },\r\n codemirror: function (editor, holder){\r\n\r\n var codeEditor = window.CodeMirror(holder, {\r\n mode: \"text/html\",\r\n tabMode: \"indent\",\r\n lineNumbers: true,\r\n lineWrapping:true\r\n });\r\n var dom = codeEditor.getWrapperElement();\r\n dom.style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,\"Courier new\",monospace;font-size:13px;';\r\n codeEditor.getScrollerElement().style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;';\r\n codeEditor.refresh();\r\n return {\r\n getCodeMirror:function(){\r\n return codeEditor;\r\n },\r\n setContent: function (content){\r\n codeEditor.setValue(content);\r\n },\r\n getContent: function (){\r\n return codeEditor.getValue();\r\n },\r\n select: function (){\r\n codeEditor.focus();\r\n },\r\n dispose: function (){\r\n holder.removeChild(dom);\r\n dom = null;\r\n codeEditor = null;\r\n }\r\n };\r\n }\r\n };\r\n\r\n UE.plugins['source'] = function (){\r\n var me = this;\r\n var opt = this.options;\r\n var sourceMode = false;\r\n var sourceEditor;\r\n var orgSetContent;\r\n opt.sourceEditor = browser.ie ? 'textarea' : (opt.sourceEditor || 'codemirror');\r\n\r\n me.setOpt({\r\n sourceEditorFirst:false\r\n });\r\n function createSourceEditor(holder){\r\n return sourceEditors[opt.sourceEditor == 'codemirror' && window.CodeMirror ? 'codemirror' : 'textarea'](me, holder);\r\n }\r\n\r\n var bakCssText;\r\n //解决在源码模式下getContent不能得到最新的内容问题\r\n var oldGetContent,\r\n bakAddress;\r\n\r\n /**\r\n * 切换源码模式和编辑模式\r\n * @command source\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'source');\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前编辑区域的状态是源码模式还是可视化模式\r\n * @command source\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果当前是源码编辑模式,返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'source' );\r\n * ```\r\n */\r\n\r\n me.commands['source'] = {\r\n execCommand: function (){\r\n\r\n sourceMode = !sourceMode;\r\n if (sourceMode) {\r\n bakAddress = me.selection.getRange().createAddress(false,true);\r\n me.undoManger && me.undoManger.save(true);\r\n if(browser.gecko){\r\n me.body.contentEditable = false;\r\n }\r\n\r\n bakCssText = me.iframe.style.cssText;\r\n me.iframe.style.cssText += 'position:absolute;left:-32768px;top:-32768px;';\r\n\r\n\r\n me.fireEvent('beforegetcontent');\r\n var root = UE.htmlparser(me.body.innerHTML);\r\n me.filterOutputRule(root);\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n switch (node.tagName) {\r\n case 'td':\r\n case 'th':\r\n case 'caption':\r\n if(node.children && node.children.length == 1){\r\n if(node.firstChild().tagName == 'br' ){\r\n node.removeChild(node.firstChild())\r\n }\r\n };\r\n break;\r\n case 'pre':\r\n node.innerText(node.innerText().replace(/ /g,' '))\r\n\r\n }\r\n }\r\n });\r\n\r\n me.fireEvent('aftergetcontent');\r\n\r\n var content = root.toHtml(true);\r\n\r\n sourceEditor = createSourceEditor(me.iframe.parentNode);\r\n\r\n sourceEditor.setContent(content);\r\n\r\n orgSetContent = me.setContent;\r\n\r\n me.setContent = function(html){\r\n //这里暂时不触发事件,防止报错\r\n var root = UE.htmlparser(html);\r\n me.filterInputRule(root);\r\n html = root.toHtml();\r\n sourceEditor.setContent(html);\r\n };\r\n\r\n setTimeout(function (){\r\n sourceEditor.select();\r\n me.addListener('fullscreenchanged', function(){\r\n try{\r\n sourceEditor.getCodeMirror().refresh()\r\n }catch(e){}\r\n });\r\n });\r\n\r\n //重置getContent,源码模式下取值也能是最新的数据\r\n oldGetContent = me.getContent;\r\n me.getContent = function (){\r\n return sourceEditor.getContent() || '<p>' + (browser.ie ? '' : '<br/>')+'</p>';\r\n };\r\n } else {\r\n me.iframe.style.cssText = bakCssText;\r\n var cont = sourceEditor.getContent() || '<p>' + (browser.ie ? '' : '<br/>')+'</p>';\r\n //处理掉block节点前后的空格,有可能会误命中,暂时不考虑\r\n cont = cont.replace(new RegExp('[\\\\r\\\\t\\\\n ]*<\\/?(\\\\w+)\\\\s*(?:[^>]*)>','g'), function(a,b){\r\n if(b && !dtd.$inlineWithA[b.toLowerCase()]){\r\n return a.replace(/(^[\\n\\r\\t ]*)|([\\n\\r\\t ]*$)/g,'');\r\n }\r\n return a.replace(/(^[\\n\\r\\t]*)|([\\n\\r\\t]*$)/g,'')\r\n });\r\n\r\n me.setContent = orgSetContent;\r\n\r\n me.setContent(cont);\r\n sourceEditor.dispose();\r\n sourceEditor = null;\r\n //还原getContent方法\r\n me.getContent = oldGetContent;\r\n var first = me.body.firstChild;\r\n //trace:1106 都删除空了,下边会报错,所以补充一个p占位\r\n if(!first){\r\n me.body.innerHTML = '<p>'+(browser.ie?'':'<br/>')+'</p>';\r\n first = me.body.firstChild;\r\n }\r\n\r\n\r\n //要在ifm为显示时ff才能取到selection,否则报错\r\n //这里不能比较位置了\r\n me.undoManger && me.undoManger.save(true);\r\n\r\n if(browser.gecko){\r\n\r\n var input = document.createElement('input');\r\n input.style.cssText = 'position:absolute;left:0;top:-32768px';\r\n\r\n document.body.appendChild(input);\r\n\r\n me.body.contentEditable = false;\r\n setTimeout(function(){\r\n domUtils.setViewportOffset(input, { left: -32768, top: 0 });\r\n input.focus();\r\n setTimeout(function(){\r\n me.body.contentEditable = true;\r\n me.selection.getRange().moveToAddress(bakAddress).select(true);\r\n domUtils.remove(input);\r\n });\r\n\r\n });\r\n }else{\r\n //ie下有可能报错,比如在代码顶头的情况\r\n try{\r\n me.selection.getRange().moveToAddress(bakAddress).select(true);\r\n }catch(e){}\r\n\r\n }\r\n }\r\n this.fireEvent('sourcemodechanged', sourceMode);\r\n },\r\n queryCommandState: function (){\r\n return sourceMode|0;\r\n },\r\n notNeedUndo : 1\r\n };\r\n var oldQueryCommandState = me.queryCommandState;\r\n\r\n me.queryCommandState = function (cmdName){\r\n cmdName = cmdName.toLowerCase();\r\n if (sourceMode) {\r\n //源码模式下可以开启的命令\r\n return cmdName in {\r\n 'source' : 1,\r\n 'fullscreen' : 1\r\n } ? 1 : -1\r\n }\r\n return oldQueryCommandState.apply(this, arguments);\r\n };\r\n\r\n if(opt.sourceEditor == \"codemirror\"){\r\n\r\n me.addListener(\"ready\",function(){\r\n utils.loadFile(document,{\r\n src : opt.codeMirrorJsUrl || opt.UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.js\",\r\n tag : \"script\",\r\n type : \"text/javascript\",\r\n defer : \"defer\"\r\n },function(){\r\n if(opt.sourceEditorFirst){\r\n setTimeout(function(){\r\n me.execCommand(\"source\");\r\n },0);\r\n }\r\n });\r\n utils.loadFile(document,{\r\n tag : \"link\",\r\n rel : \"stylesheet\",\r\n type : \"text/css\",\r\n href : opt.codeMirrorCssUrl || opt.UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.css\"\r\n });\r\n\r\n });\r\n }\r\n\r\n };\r\n\r\n})();\r\n\r\n// plugins/enterkey.js\r\n///import core\r\n///import plugins/undo.js\r\n///commands 设置回车标签p或br\r\n///commandsName EnterKey\r\n///commandsTitle 设置回车标签p或br\r\n/**\r\n * @description 处理回车\r\n * @author zhanyi\r\n */\r\nUE.plugins['enterkey'] = function() {\r\n var hTag,\r\n me = this,\r\n tag = me.options.enterTag;\r\n me.addListener('keyup', function(type, evt) {\r\n\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) {\r\n var range = me.selection.getRange(),\r\n start = range.startContainer,\r\n doSave;\r\n\r\n //修正在h1-h6里边回车后不能嵌套p的问题\r\n if (!browser.ie) {\r\n\r\n if (/h\\d/i.test(hTag)) {\r\n if (browser.gecko) {\r\n var h = domUtils.findParentByTagName(start, [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption','table'], true);\r\n if (!h) {\r\n me.document.execCommand('formatBlock', false, '<p>');\r\n doSave = 1;\r\n }\r\n } else {\r\n //chrome remove div\r\n if (start.nodeType == 1) {\r\n var tmp = me.document.createTextNode(''),div;\r\n range.insertNode(tmp);\r\n div = domUtils.findParentByTagName(tmp, 'div', true);\r\n if (div) {\r\n var p = me.document.createElement('p');\r\n while (div.firstChild) {\r\n p.appendChild(div.firstChild);\r\n }\r\n div.parentNode.insertBefore(p, div);\r\n domUtils.remove(div);\r\n range.setStartBefore(tmp).setCursor();\r\n doSave = 1;\r\n }\r\n domUtils.remove(tmp);\r\n\r\n }\r\n }\r\n\r\n if (me.undoManger && doSave) {\r\n me.undoManger.save();\r\n }\r\n }\r\n //没有站位符,会出现多行的问题\r\n browser.opera && range.select();\r\n }else{\r\n me.fireEvent('saveScene',true,true)\r\n }\r\n }\r\n });\r\n\r\n me.addListener('keydown', function(type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) {//回车\r\n if(me.fireEvent('beforeenterkeydown')){\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n me.fireEvent('saveScene',true,true);\r\n hTag = '';\r\n\r\n\r\n var range = me.selection.getRange();\r\n\r\n if (!range.collapsed) {\r\n //跨td不能删\r\n var start = range.startContainer,\r\n end = range.endContainer,\r\n startTd = domUtils.findParentByTagName(start, 'td', true),\r\n endTd = domUtils.findParentByTagName(end, 'td', true);\r\n if (startTd && endTd && startTd !== endTd || !startTd && endTd || startTd && !endTd) {\r\n evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false);\r\n return;\r\n }\r\n }\r\n if (tag == 'p') {\r\n\r\n\r\n if (!browser.ie) {\r\n\r\n start = domUtils.findParentByTagName(range.startContainer, ['ol','ul','p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption'], true);\r\n\r\n //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command\r\n //trace:2431\r\n if (!start && !browser.opera) {\r\n\r\n me.document.execCommand('formatBlock', false, '<p>');\r\n\r\n if (browser.gecko) {\r\n range = me.selection.getRange();\r\n start = domUtils.findParentByTagName(range.startContainer, 'p', true);\r\n start && domUtils.removeDirtyAttr(start);\r\n }\r\n\r\n\r\n } else {\r\n hTag = start.tagName;\r\n start.tagName.toLowerCase() == 'p' && browser.gecko && domUtils.removeDirtyAttr(start);\r\n }\r\n\r\n }\r\n\r\n } else {\r\n evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false);\r\n\r\n if (!range.collapsed) {\r\n range.deleteContents();\r\n start = range.startContainer;\r\n if (start.nodeType == 1 && (start = start.childNodes[range.startOffset])) {\r\n while (start.nodeType == 1) {\r\n if (dtd.$empty[start.tagName]) {\r\n range.setStartBefore(start).setCursor();\r\n if (me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n return false;\r\n }\r\n if (!start.firstChild) {\r\n var br = range.document.createElement('br');\r\n start.appendChild(br);\r\n range.setStart(start, 0).setCursor();\r\n if (me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n return false;\r\n }\r\n start = start.firstChild;\r\n }\r\n if (start === range.startContainer.childNodes[range.startOffset]) {\r\n br = range.document.createElement('br');\r\n range.insertNode(br).setCursor();\r\n\r\n } else {\r\n range.setStart(start, 0).setCursor();\r\n }\r\n\r\n\r\n } else {\r\n br = range.document.createElement('br');\r\n range.insertNode(br).setStartAfter(br).setCursor();\r\n }\r\n\r\n\r\n } else {\r\n br = range.document.createElement('br');\r\n range.insertNode(br);\r\n var parent = br.parentNode;\r\n if (parent.lastChild === br) {\r\n br.parentNode.insertBefore(br.cloneNode(true), br);\r\n range.setStartBefore(br);\r\n } else {\r\n range.setStartAfter(br);\r\n }\r\n range.setCursor();\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n });\r\n};\r\n\r\n\r\n// plugins/keystrokes.js\r\n/* 处理特殊键的兼容性问题 */\r\nUE.plugins['keystrokes'] = function() {\r\n var me = this;\r\n var collapsed = true;\r\n me.addListener('keydown', function(type, evt) {\r\n var keyCode = evt.keyCode || evt.which,\r\n rng = me.selection.getRange();\r\n\r\n //处理全选的情况\r\n if(!rng.collapsed && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && (keyCode >= 65 && keyCode <=90\r\n || keyCode >= 48 && keyCode <= 57 ||\r\n keyCode >= 96 && keyCode <= 111 || {\r\n 13:1,\r\n 8:1,\r\n 46:1\r\n }[keyCode])\r\n ){\r\n\r\n var tmpNode = rng.startContainer;\r\n if(domUtils.isFillChar(tmpNode)){\r\n rng.setStartBefore(tmpNode)\r\n }\r\n tmpNode = rng.endContainer;\r\n if(domUtils.isFillChar(tmpNode)){\r\n rng.setEndAfter(tmpNode)\r\n }\r\n rng.txtToElmBoundary();\r\n //结束边界可能放到了br的前边,要把br包含进来\r\n // x[xxx]<br/>\r\n if(rng.endContainer && rng.endContainer.nodeType == 1){\r\n tmpNode = rng.endContainer.childNodes[rng.endOffset];\r\n if(tmpNode && domUtils.isBr(tmpNode)){\r\n rng.setEndAfter(tmpNode);\r\n }\r\n }\r\n if(rng.startOffset == 0){\r\n tmpNode = rng.startContainer;\r\n if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){\r\n tmpNode = rng.endContainer;\r\n if(rng.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){\r\n me.fireEvent('saveScene');\r\n me.body.innerHTML = '<p>'+(browser.ie ? '' : '<br/>')+'</p>';\r\n rng.setStart(me.body.firstChild,0).setCursor(false,true);\r\n me._selectionChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //处理backspace\r\n if (keyCode == keymap.Backspace) {\r\n rng = me.selection.getRange();\r\n collapsed = rng.collapsed;\r\n if(me.fireEvent('delkeydown',evt)){\r\n return;\r\n }\r\n var start,end;\r\n //避免按两次删除才能生效的问题\r\n if(rng.collapsed && rng.inFillChar()){\r\n start = rng.startContainer;\r\n\r\n if(domUtils.isFillChar(start)){\r\n rng.setStartBefore(start).shrinkBoundary(true).collapse(true);\r\n domUtils.remove(start)\r\n }else{\r\n start.nodeValue = start.nodeValue.replace(new RegExp('^' + domUtils.fillChar ),'');\r\n rng.startOffset--;\r\n rng.collapse(true).select(true)\r\n }\r\n }\r\n\r\n //解决选中control元素不能删除的问题\r\n if (start = rng.getClosedNode()) {\r\n me.fireEvent('saveScene');\r\n rng.setStartBefore(start);\r\n domUtils.remove(start);\r\n rng.setCursor();\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n //阻止在table上的删除\r\n if (!browser.ie) {\r\n start = domUtils.findParentByTagName(rng.startContainer, 'table', true);\r\n end = domUtils.findParentByTagName(rng.endContainer, 'table', true);\r\n if (start && !end || !start && end || start !== end) {\r\n evt.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n }\r\n //处理tab键的逻辑\r\n if (keyCode == keymap.Tab) {\r\n //不处理以下标签\r\n var excludeTagNameForTabKey = {\r\n 'ol' : 1,\r\n 'ul' : 1,\r\n 'table':1\r\n };\r\n //处理组件里的tab按下事件\r\n if(me.fireEvent('tabkeydown',evt)){\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n var range = me.selection.getRange();\r\n me.fireEvent('saveScene');\r\n for (var i = 0,txt = '',tabSize = me.options.tabSize|| 4,tabNode = me.options.tabNode || ' '; i < tabSize; i++) {\r\n txt += tabNode;\r\n }\r\n var span = me.document.createElement('span');\r\n span.innerHTML = txt + domUtils.fillChar;\r\n if (range.collapsed) {\r\n range.insertNode(span.cloneNode(true).firstChild).setCursor(true);\r\n } else {\r\n var filterFn = function(node) {\r\n return domUtils.isBlockElm(node) && !excludeTagNameForTabKey[node.tagName.toLowerCase()]\r\n\r\n };\r\n //普通的情况\r\n start = domUtils.findParent(range.startContainer, filterFn,true);\r\n end = domUtils.findParent(range.endContainer, filterFn,true);\r\n if (start && end && start === end) {\r\n range.deleteContents();\r\n range.insertNode(span.cloneNode(true).firstChild).setCursor(true);\r\n } else {\r\n var bookmark = range.createBookmark();\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn);\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n current.insertBefore(span.cloneNode(true).firstChild, current.firstChild);\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n }\r\n range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select();\r\n }\r\n }\r\n domUtils.preventDefault(evt)\r\n }\r\n //trace:1634\r\n //ff的del键在容器空的时候,也会删除\r\n if(browser.gecko && keyCode == 46){\r\n range = me.selection.getRange();\r\n if(range.collapsed){\r\n start = range.startContainer;\r\n if(domUtils.isEmptyBlock(start)){\r\n var parent = start.parentNode;\r\n while(domUtils.getChildCount(parent) == 1 && !domUtils.isBody(parent)){\r\n start = parent;\r\n parent = parent.parentNode;\r\n }\r\n if(start === parent.lastChild)\r\n evt.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n me.addListener('keyup', function(type, evt) {\r\n var keyCode = evt.keyCode || evt.which,\r\n rng,me = this;\r\n if(keyCode == keymap.Backspace){\r\n if(me.fireEvent('delkeyup')){\r\n return;\r\n }\r\n rng = me.selection.getRange();\r\n if(rng.collapsed){\r\n var tmpNode,\r\n autoClearTagName = ['h1','h2','h3','h4','h5','h6'];\r\n if(tmpNode = domUtils.findParentByTagName(rng.startContainer,autoClearTagName,true)){\r\n if(domUtils.isEmptyBlock(tmpNode)){\r\n var pre = tmpNode.previousSibling;\r\n if(pre && pre.nodeName != 'TABLE'){\r\n domUtils.remove(tmpNode);\r\n rng.setStartAtLast(pre).setCursor(false,true);\r\n return;\r\n }else{\r\n var next = tmpNode.nextSibling;\r\n if(next && next.nodeName != 'TABLE'){\r\n domUtils.remove(tmpNode);\r\n rng.setStartAtFirst(next).setCursor(false,true);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n //处理当删除到body时,要重新给p标签展位\r\n if(domUtils.isBody(rng.startContainer)){\r\n var tmpNode = domUtils.createElement(me.document,'p',{\r\n 'innerHTML' : browser.ie ? domUtils.fillChar : '<br/>'\r\n });\r\n rng.insertNode(tmpNode).setStart(tmpNode,0).setCursor(false,true);\r\n }\r\n }\r\n\r\n\r\n //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了\r\n if( !collapsed && (rng.startContainer.nodeType == 3 || rng.startContainer.nodeType == 1 && domUtils.isEmptyBlock(rng.startContainer))){\r\n if(browser.ie){\r\n var span = rng.document.createElement('span');\r\n rng.insertNode(span).setStartBefore(span).collapse(true);\r\n rng.select();\r\n domUtils.remove(span)\r\n }else{\r\n rng.select()\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n })\r\n};\r\n\r\n// plugins/fiximgclick.js\r\n///import core\r\n///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n///commandsName FixImgClick\r\n///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n//修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n\r\nUE.plugins['fiximgclick'] = (function () {\r\n\r\n var elementUpdated = false;\r\n function Scale() {\r\n this.editor = null;\r\n this.resizer = null;\r\n this.cover = null;\r\n this.doc = document;\r\n this.prePos = {x: 0, y: 0};\r\n this.startPos = {x: 0, y: 0};\r\n }\r\n\r\n (function () {\r\n var rect = [\r\n //[left, top, width, height]\r\n [0, 0, -1, -1],\r\n [0, 0, 0, -1],\r\n [0, 0, 1, -1],\r\n [0, 0, -1, 0],\r\n [0, 0, 1, 0],\r\n [0, 0, -1, 1],\r\n [0, 0, 0, 1],\r\n [0, 0, 1, 1]\r\n ];\r\n\r\n Scale.prototype = {\r\n init: function (editor) {\r\n var me = this;\r\n me.editor = editor;\r\n me.startPos = this.prePos = {x: 0, y: 0};\r\n me.dragId = -1;\r\n\r\n var hands = [],\r\n cover = me.cover = document.createElement('div'),\r\n resizer = me.resizer = document.createElement('div');\r\n\r\n cover.id = me.editor.ui.id + '_imagescale_cover';\r\n cover.style.cssText = 'position:absolute;display:none;z-index:' + (me.editor.options.zIndex) + ';filter:alpha(opacity=0); opacity:0;background:#CCC;';\r\n domUtils.on(cover, 'mousedown click', function () {\r\n me.hide();\r\n });\r\n\r\n for (var i = 0; i < 8; i++) {\r\n hands.push('<span class=\"edui-editor-imagescale-hand' + i + '\"></span>');\r\n }\r\n resizer.id = me.editor.ui.id + '_imagescale';\r\n resizer.className = 'edui-editor-imagescale';\r\n resizer.innerHTML = hands.join('');\r\n resizer.style.cssText += ';display:none;border:1px solid #3b77ff;z-index:' + (me.editor.options.zIndex) + ';';\r\n\r\n me.editor.ui.getDom().appendChild(cover);\r\n me.editor.ui.getDom().appendChild(resizer);\r\n\r\n me.initStyle();\r\n me.initEvents();\r\n },\r\n initStyle: function () {\r\n utils.cssRule('imagescale', '.edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}' +\r\n '.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}'\r\n + '.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}');\r\n },\r\n initEvents: function () {\r\n var me = this;\r\n\r\n me.startPos.x = me.startPos.y = 0;\r\n me.isDraging = false;\r\n },\r\n _eventHandler: function (e) {\r\n var me = this;\r\n switch (e.type) {\r\n case 'mousedown':\r\n var hand = e.target || e.srcElement, hand;\r\n if (hand.className.indexOf('edui-editor-imagescale-hand') != -1 && me.dragId == -1) {\r\n me.dragId = hand.className.slice(-1);\r\n me.startPos.x = me.prePos.x = e.clientX;\r\n me.startPos.y = me.prePos.y = e.clientY;\r\n domUtils.on(me.doc,'mousemove', me.proxy(me._eventHandler, me));\r\n }\r\n break;\r\n case 'mousemove':\r\n if (me.dragId != -1) {\r\n me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y});\r\n me.prePos.x = e.clientX;\r\n me.prePos.y = e.clientY;\r\n elementUpdated = true;\r\n me.updateTargetElement();\r\n\r\n }\r\n break;\r\n case 'mouseup':\r\n if (me.dragId != -1) {\r\n me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y});\r\n me.updateTargetElement();\r\n if (me.target.parentNode) me.attachTo(me.target);\r\n me.dragId = -1;\r\n }\r\n domUtils.un(me.doc,'mousemove', me.proxy(me._eventHandler, me));\r\n //修复只是点击挪动点,但没有改变大小,不应该触发contentchange\r\n if(elementUpdated){\r\n elementUpdated = false;\r\n me.editor.fireEvent('contentchange');\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n updateTargetElement: function () {\r\n var me = this;\r\n domUtils.setStyles(me.target, {\r\n 'width': me.resizer.style.width,\r\n 'height': me.resizer.style.height\r\n });\r\n me.target.width = parseInt(me.resizer.style.width);\r\n me.target.height = parseInt(me.resizer.style.height);\r\n me.attachTo(me.target);\r\n },\r\n updateContainerStyle: function (dir, offset) {\r\n var me = this,\r\n dom = me.resizer, tmp;\r\n\r\n if (rect[dir][0] != 0) {\r\n tmp = parseInt(dom.style.left) + offset.x;\r\n dom.style.left = me._validScaledProp('left', tmp) + 'px';\r\n }\r\n if (rect[dir][1] != 0) {\r\n tmp = parseInt(dom.style.top) + offset.y;\r\n dom.style.top = me._validScaledProp('top', tmp) + 'px';\r\n }\r\n if (rect[dir][2] != 0) {\r\n tmp = dom.clientWidth + rect[dir][2] * offset.x;\r\n dom.style.width = me._validScaledProp('width', tmp) + 'px';\r\n }\r\n if (rect[dir][3] != 0) {\r\n tmp = dom.clientHeight + rect[dir][3] * offset.y;\r\n dom.style.height = me._validScaledProp('height', tmp) + 'px';\r\n }\r\n },\r\n _validScaledProp: function (prop, value) {\r\n var ele = this.resizer,\r\n wrap = document;\r\n\r\n value = isNaN(value) ? 0 : value;\r\n switch (prop) {\r\n case 'left':\r\n return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value;\r\n case 'top':\r\n return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value;\r\n case 'width':\r\n return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value;\r\n case 'height':\r\n return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value;\r\n }\r\n },\r\n hideCover: function () {\r\n this.cover.style.display = 'none';\r\n },\r\n showCover: function () {\r\n var me = this,\r\n editorPos = domUtils.getXY(me.editor.ui.getDom()),\r\n iframePos = domUtils.getXY(me.editor.iframe);\r\n\r\n domUtils.setStyles(me.cover, {\r\n 'width': me.editor.iframe.offsetWidth + 'px',\r\n 'height': me.editor.iframe.offsetHeight + 'px',\r\n 'top': iframePos.y - editorPos.y + 'px',\r\n 'left': iframePos.x - editorPos.x + 'px',\r\n 'position': 'absolute',\r\n 'display': ''\r\n })\r\n },\r\n show: function (targetObj) {\r\n var me = this;\r\n me.resizer.style.display = 'block';\r\n if(targetObj) me.attachTo(targetObj);\r\n\r\n domUtils.on(this.resizer, 'mousedown', me.proxy(me._eventHandler, me));\r\n domUtils.on(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\r\n\r\n me.showCover();\r\n me.editor.fireEvent('afterscaleshow', me);\r\n me.editor.fireEvent('saveScene');\r\n },\r\n hide: function () {\r\n var me = this;\r\n me.hideCover();\r\n me.resizer.style.display = 'none';\r\n\r\n domUtils.un(me.resizer, 'mousedown', me.proxy(me._eventHandler, me));\r\n domUtils.un(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\r\n me.editor.fireEvent('afterscalehide', me);\r\n },\r\n proxy: function( fn, context ) {\r\n return function(e) {\r\n return fn.apply( context || this, arguments);\r\n };\r\n },\r\n attachTo: function (targetObj) {\r\n var me = this,\r\n target = me.target = targetObj,\r\n resizer = this.resizer,\r\n imgPos = domUtils.getXY(target),\r\n iframePos = domUtils.getXY(me.editor.iframe),\r\n editorPos = domUtils.getXY(resizer.parentNode);\r\n\r\n domUtils.setStyles(resizer, {\r\n 'width': target.width + 'px',\r\n 'height': target.height + 'px',\r\n 'left': iframePos.x + imgPos.x - me.editor.document.body.scrollLeft - editorPos.x - parseInt(resizer.style.borderLeftWidth) + 'px',\r\n 'top': iframePos.y + imgPos.y - me.editor.document.body.scrollTop - editorPos.y - parseInt(resizer.style.borderTopWidth) + 'px'\r\n });\r\n }\r\n }\r\n })();\r\n\r\n return function () {\r\n var me = this,\r\n imageScale;\r\n\r\n me.setOpt('imageScaleEnabled', true);\r\n\r\n if ( !browser.ie && me.options.imageScaleEnabled) {\r\n me.addListener('click', function (type, e) {\r\n\r\n var range = me.selection.getRange(),\r\n img = range.getClosedNode();\r\n\r\n if (img && img.tagName == 'IMG' && me.body.contentEditable!=\"false\") {\r\n\r\n if (img.className.indexOf(\"edui-faked-music\") != -1 ||\r\n img.getAttribute(\"anchorname\") ||\r\n domUtils.hasClass(img, 'loadingclass') ||\r\n domUtils.hasClass(img, 'loaderrorclass')) { return }\r\n\r\n if (!imageScale) {\r\n imageScale = new Scale();\r\n imageScale.init(me);\r\n me.ui.getDom().appendChild(imageScale.resizer);\r\n\r\n var _keyDownHandler = function (e) {\r\n imageScale.hide();\r\n if(imageScale.target) me.selection.getRange().selectNode(imageScale.target).select();\r\n }, _mouseDownHandler = function (e) {\r\n var ele = e.target || e.srcElement;\r\n if (ele && (ele.className===undefined || ele.className.indexOf('edui-editor-imagescale') == -1)) {\r\n _keyDownHandler(e);\r\n }\r\n }, timer;\r\n\r\n me.addListener('afterscaleshow', function (e) {\r\n me.addListener('beforekeydown', _keyDownHandler);\r\n me.addListener('beforemousedown', _mouseDownHandler);\r\n domUtils.on(document, 'keydown', _keyDownHandler);\r\n domUtils.on(document,'mousedown', _mouseDownHandler);\r\n me.selection.getNative().removeAllRanges();\r\n });\r\n me.addListener('afterscalehide', function (e) {\r\n me.removeListener('beforekeydown', _keyDownHandler);\r\n me.removeListener('beforemousedown', _mouseDownHandler);\r\n domUtils.un(document, 'keydown', _keyDownHandler);\r\n domUtils.un(document,'mousedown', _mouseDownHandler);\r\n var target = imageScale.target;\r\n if (target.parentNode) {\r\n me.selection.getRange().selectNode(target).select();\r\n }\r\n });\r\n //TODO 有iframe的情况,mousedown不能往下传。。\r\n domUtils.on(imageScale.resizer, 'mousedown', function (e) {\r\n me.selection.getNative().removeAllRanges();\r\n var ele = e.target || e.srcElement;\r\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\r\n timer = setTimeout(function () {\r\n imageScale.hide();\r\n if(imageScale.target) me.selection.getRange().selectNode(ele).select();\r\n }, 200);\r\n }\r\n });\r\n domUtils.on(imageScale.resizer, 'mouseup', function (e) {\r\n var ele = e.target || e.srcElement;\r\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\r\n clearTimeout(timer);\r\n }\r\n });\r\n }\r\n imageScale.show(img);\r\n } else {\r\n if (imageScale && imageScale.resizer.style.display != 'none') imageScale.hide();\r\n }\r\n });\r\n }\r\n\r\n if (browser.webkit) {\r\n me.addListener('click', function (type, e) {\r\n if (e.target.tagName == 'IMG' && me.body.contentEditable!=\"false\") {\r\n var range = new dom.Range(me.document);\r\n range.selectNode(e.target).select();\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\r\n// plugins/autolink.js\r\n///import core\r\n///commands 为非ie浏览器自动添加a标签\r\n///commandsName AutoLink\r\n///commandsTitle 自动增加链接\r\n/**\r\n * @description 为非ie浏览器自动添加a标签\r\n * @author zhanyi\r\n */\r\n\r\nUE.plugin.register('autolink',function(){\r\n var cont = 0;\r\n\r\n return !browser.ie ? {\r\n\r\n bindEvents:{\r\n 'reset' : function(){\r\n cont = 0;\r\n },\r\n 'keydown':function(type, evt) {\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 32 || keyCode == 13) {\r\n\r\n var sel = me.selection.getNative(),\r\n range = sel.getRangeAt(0).cloneRange(),\r\n offset,\r\n charCode;\r\n\r\n var start = range.startContainer;\r\n while (start.nodeType == 1 && range.startOffset > 0) {\r\n start = range.startContainer.childNodes[range.startOffset - 1];\r\n if (!start){\r\n break;\r\n }\r\n range.setStart(start, start.nodeType == 1 ? start.childNodes.length : start.nodeValue.length);\r\n range.collapse(true);\r\n start = range.startContainer;\r\n }\r\n\r\n do{\r\n if (range.startOffset == 0) {\r\n start = range.startContainer.previousSibling;\r\n\r\n while (start && start.nodeType == 1) {\r\n start = start.lastChild;\r\n }\r\n if (!start || domUtils.isFillChar(start)){\r\n break;\r\n }\r\n offset = start.nodeValue.length;\r\n } else {\r\n start = range.startContainer;\r\n offset = range.startOffset;\r\n }\r\n range.setStart(start, offset - 1);\r\n charCode = range.toString().charCodeAt(0);\r\n } while (charCode != 160 && charCode != 32);\r\n\r\n if (range.toString().replace(new RegExp(domUtils.fillChar, 'g'), '').match(/(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i)) {\r\n while(range.toString().length){\r\n if(/^(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i.test(range.toString())){\r\n break;\r\n }\r\n try{\r\n range.setStart(range.startContainer,range.startOffset+1);\r\n }catch(e){\r\n //trace:2121\r\n var start = range.startContainer;\r\n while(!(next = start.nextSibling)){\r\n if(domUtils.isBody(start)){\r\n return;\r\n }\r\n start = start.parentNode;\r\n\r\n }\r\n range.setStart(next,0);\r\n\r\n }\r\n\r\n }\r\n //range的开始边界已经在a标签里的不再处理\r\n if(domUtils.findParentByTagName(range.startContainer,'a',true)){\r\n return;\r\n }\r\n var a = me.document.createElement('a'),text = me.document.createTextNode(' '),href;\r\n\r\n me.undoManger && me.undoManger.save();\r\n a.appendChild(range.extractContents());\r\n a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g,'');\r\n href = a.getAttribute(\"href\").replace(new RegExp(domUtils.fillChar,'g'),'');\r\n href = /^(?:https?:\\/\\/)/ig.test(href) ? href : \"http://\"+ href;\r\n a.setAttribute('_src',utils.html(href));\r\n a.href = utils.html(href);\r\n\r\n range.insertNode(a);\r\n a.parentNode.insertBefore(text, a.nextSibling);\r\n range.setStart(text, 0);\r\n range.collapse(true);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n me.undoManger && me.undoManger.save();\r\n }\r\n }\r\n }\r\n }\r\n }:{}\r\n },function(){\r\n var keyCodes = {\r\n 37:1, 38:1, 39:1, 40:1,\r\n 13:1,32:1\r\n };\r\n function checkIsCludeLink(node){\r\n if(node.nodeType == 3){\r\n return null\r\n }\r\n if(node.nodeName == 'A'){\r\n return node;\r\n }\r\n var lastChild = node.lastChild;\r\n\r\n while(lastChild){\r\n if(lastChild.nodeName == 'A'){\r\n return lastChild;\r\n }\r\n if(lastChild.nodeType == 3){\r\n if(domUtils.isWhitespace(lastChild)){\r\n lastChild = lastChild.previousSibling;\r\n continue;\r\n }\r\n return null\r\n }\r\n lastChild = lastChild.lastChild;\r\n }\r\n }\r\n browser.ie && this.addListener('keyup',function(cmd,evt){\r\n var me = this,keyCode = evt.keyCode;\r\n if(keyCodes[keyCode]){\r\n var rng = me.selection.getRange();\r\n var start = rng.startContainer;\r\n\r\n if(keyCode == 13){\r\n while(start && !domUtils.isBody(start) && !domUtils.isBlockElm(start)){\r\n start = start.parentNode;\r\n }\r\n if(start && !domUtils.isBody(start) && start.nodeName == 'P'){\r\n var pre = start.previousSibling;\r\n if(pre && pre.nodeType == 1){\r\n var pre = checkIsCludeLink(pre);\r\n if(pre && !pre.getAttribute('_href')){\r\n domUtils.remove(pre,true);\r\n }\r\n }\r\n }\r\n }else if(keyCode == 32 ){\r\n if(start.nodeType == 3 && /^\\s$/.test(start.nodeValue)){\r\n start = start.previousSibling;\r\n if(start && start.nodeName == 'A' && !start.getAttribute('_href')){\r\n domUtils.remove(start,true);\r\n }\r\n }\r\n }else {\r\n start = domUtils.findParentByTagName(start,'a',true);\r\n if(start && !start.getAttribute('_href')){\r\n var bk = rng.createBookmark();\r\n\r\n domUtils.remove(start,true);\r\n rng.moveToBookmark(bk).select(true)\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n });\r\n }\r\n);\r\n\r\n// plugins/autoheight.js\r\n///import core\r\n///commands 当输入内容超过编辑器高度时,编辑器自动增高\r\n///commandsName AutoHeight,autoHeightEnabled\r\n///commandsTitle 自动增高\r\n/**\r\n * @description 自动伸展\r\n * @author zhanyi\r\n */\r\nUE.plugins['autoheight'] = function () {\r\n var me = this;\r\n //提供开关,就算加载也可以关闭\r\n me.autoHeightEnabled = me.options.autoHeightEnabled !== false;\r\n if (!me.autoHeightEnabled) {\r\n return;\r\n }\r\n\r\n var bakOverflow,\r\n lastHeight = 0,\r\n options = me.options,\r\n currentHeight,\r\n timer;\r\n\r\n function adjustHeight() {\r\n var me = this;\r\n clearTimeout(timer);\r\n if(isFullscreen)return;\r\n if (!me.queryCommandState || me.queryCommandState && me.queryCommandState('source') != 1) {\r\n timer = setTimeout(function(){\r\n\r\n var node = me.body.lastChild;\r\n while(node && node.nodeType != 1){\r\n node = node.previousSibling;\r\n }\r\n if(node && node.nodeType == 1){\r\n node.style.clear = 'both';\r\n currentHeight = Math.max(domUtils.getXY(node).y + node.offsetHeight + 25 ,Math.max(options.minFrameHeight, options.initialFrameHeight)) ;\r\n if (currentHeight != lastHeight) {\r\n if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) {\r\n me.iframe.parentNode.style.height = currentHeight + 'px';\r\n }\r\n me.body.style.height = currentHeight + 'px';\r\n lastHeight = currentHeight;\r\n }\r\n domUtils.removeStyle(node,'clear');\r\n }\r\n\r\n\r\n },50)\r\n }\r\n }\r\n var isFullscreen;\r\n me.addListener('fullscreenchanged',function(cmd,f){\r\n isFullscreen = f\r\n });\r\n me.addListener('destroy', function () {\r\n me.removeListener('contentchange afterinserthtml keyup mouseup',adjustHeight)\r\n });\r\n me.enableAutoHeight = function () {\r\n var me = this;\r\n if (!me.autoHeightEnabled) {\r\n return;\r\n }\r\n var doc = me.document;\r\n me.autoHeightEnabled = true;\r\n bakOverflow = doc.body.style.overflowY;\r\n doc.body.style.overflowY = 'hidden';\r\n me.addListener('contentchange afterinserthtml keyup mouseup',adjustHeight);\r\n //ff不给事件算得不对\r\n\r\n setTimeout(function () {\r\n adjustHeight.call(me);\r\n }, browser.gecko ? 100 : 0);\r\n me.fireEvent('autoheightchanged', me.autoHeightEnabled);\r\n };\r\n me.disableAutoHeight = function () {\r\n\r\n me.body.style.overflowY = bakOverflow || '';\r\n\r\n me.removeListener('contentchange', adjustHeight);\r\n me.removeListener('keyup', adjustHeight);\r\n me.removeListener('mouseup', adjustHeight);\r\n me.autoHeightEnabled = false;\r\n me.fireEvent('autoheightchanged', me.autoHeightEnabled);\r\n };\r\n\r\n me.on('setHeight',function(){\r\n me.disableAutoHeight()\r\n });\r\n me.addListener('ready', function () {\r\n me.enableAutoHeight();\r\n //trace:1764\r\n var timer;\r\n domUtils.on(browser.ie ? me.body : me.document, browser.webkit ? 'dragover' : 'drop', function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n //trace:3681\r\n adjustHeight.call(me);\r\n }, 100);\r\n\r\n });\r\n //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题\r\n var lastScrollY;\r\n window.onscroll = function(){\r\n if(lastScrollY === null){\r\n lastScrollY = this.scrollY\r\n }else if(this.scrollY == 0 && lastScrollY != 0){\r\n me.window.scrollTo(0,0);\r\n lastScrollY = null;\r\n }\r\n }\r\n });\r\n\r\n\r\n};\r\n\r\n\r\n\r\n// plugins/autofloat.js\r\n///import core\r\n///commands 悬浮工具栏\r\n///commandsName AutoFloat,autoFloatEnabled\r\n///commandsTitle 悬浮工具栏\r\n/**\r\n * modified by chengchao01\r\n * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉!\r\n */\r\nUE.plugins['autofloat'] = function() {\r\n var me = this,\r\n lang = me.getLang();\r\n me.setOpt({\r\n topOffset:0\r\n });\r\n var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false,\r\n topOffset = me.options.topOffset;\r\n\r\n\r\n //如果不固定toolbar的位置,则直接退出\r\n if(!optsAutoFloatEnabled){\r\n return;\r\n }\r\n var uiUtils = UE.ui.uiUtils,\r\n LteIE6 = browser.ie && browser.version <= 6,\r\n quirks = browser.quirks;\r\n\r\n function checkHasUI(){\r\n if(!UE.ui){\r\n alert(lang.autofloatMsg);\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n function fixIE6FixedPos(){\r\n var docStyle = document.body.style;\r\n docStyle.backgroundImage = 'url(\"about:blank\")';\r\n docStyle.backgroundAttachment = 'fixed';\r\n }\r\n var\tbakCssText,\r\n placeHolder = document.createElement('div'),\r\n toolbarBox,orgTop,\r\n getPosition,\r\n flag =true; //ie7模式下需要偏移\r\n function setFloating(){\r\n var toobarBoxPos = domUtils.getXY(toolbarBox),\r\n origalFloat = domUtils.getComputedStyle(toolbarBox,'position'),\r\n origalLeft = domUtils.getComputedStyle(toolbarBox,'left');\r\n toolbarBox.style.width = toolbarBox.offsetWidth + 'px';\r\n toolbarBox.style.zIndex = me.options.zIndex * 1 + 1;\r\n toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox);\r\n if (LteIE6 || (quirks && browser.ie)) {\r\n if(toolbarBox.style.position != 'absolute'){\r\n toolbarBox.style.position = 'absolute';\r\n }\r\n toolbarBox.style.top = (document.body.scrollTop||document.documentElement.scrollTop) - orgTop + topOffset + 'px';\r\n } else {\r\n if (browser.ie7Compat && flag) {\r\n flag = false;\r\n toolbarBox.style.left = domUtils.getXY(toolbarBox).x - document.documentElement.getBoundingClientRect().left+2 + 'px';\r\n }\r\n if(toolbarBox.style.position != 'fixed'){\r\n toolbarBox.style.position = 'fixed';\r\n toolbarBox.style.top = topOffset +\"px\";\r\n ((origalFloat == 'absolute' || origalFloat == 'relative') && parseFloat(origalLeft)) && (toolbarBox.style.left = toobarBoxPos.x + 'px');\r\n }\r\n }\r\n }\r\n function unsetFloating(){\r\n flag = true;\r\n if(placeHolder.parentNode){\r\n placeHolder.parentNode.removeChild(placeHolder);\r\n }\r\n\r\n toolbarBox.style.cssText = bakCssText;\r\n }\r\n\r\n function updateFloating(){\r\n var rect3 = getPosition(me.container);\r\n var offset=me.options.toolbarTopOffset||0;\r\n if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) {\r\n setFloating();\r\n }else{\r\n unsetFloating();\r\n }\r\n }\r\n var defer_updateFloating = utils.defer(function(){\r\n updateFloating();\r\n },browser.ie ? 200 : 100,true);\r\n\r\n me.addListener('destroy',function(){\r\n domUtils.un(window, ['scroll','resize'], updateFloating);\r\n me.removeListener('keydown', defer_updateFloating);\r\n });\r\n\r\n me.addListener('ready', function(){\r\n if(checkHasUI(me)){\r\n //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断\r\n if(!me.ui){\r\n return;\r\n }\r\n getPosition = uiUtils.getClientRect;\r\n toolbarBox = me.ui.getDom('toolbarbox');\r\n orgTop = getPosition(toolbarBox).top;\r\n bakCssText = toolbarBox.style.cssText;\r\n placeHolder.style.height = toolbarBox.offsetHeight + 'px';\r\n if(LteIE6){\r\n fixIE6FixedPos();\r\n }\r\n domUtils.on(window, ['scroll','resize'], updateFloating);\r\n me.addListener('keydown', defer_updateFloating);\r\n\r\n me.addListener('beforefullscreenchange', function (t, enabled){\r\n if (enabled) {\r\n unsetFloating();\r\n }\r\n });\r\n me.addListener('fullscreenchanged', function (t, enabled){\r\n if (!enabled) {\r\n updateFloating();\r\n }\r\n });\r\n me.addListener('sourcemodechanged', function (t, enabled){\r\n setTimeout(function (){\r\n updateFloating();\r\n },0);\r\n });\r\n me.addListener(\"clearDoc\",function(){\r\n setTimeout(function(){\r\n updateFloating();\r\n },0);\r\n\r\n })\r\n }\r\n });\r\n};\r\n\r\n\r\n// plugins/video.js\r\n/**\r\n * video插件, 为UEditor提供视频插入支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\nUE.plugins['video'] = function (){\r\n var me =this;\r\n\r\n /**\r\n * 创建插入视频字符窜\r\n * @param url 视频地址\r\n * @param width 视频宽度\r\n * @param height 视频高度\r\n * @param align 视频对齐\r\n * @param toEmbed 是否以flash代替显示\r\n * @param addParagraph 是否需要添加P 标签\r\n */\r\n function creatInsertStr(url,width,height,id,align,classname,type){\r\n\r\n url = utils.unhtmlForUrl(url);\r\n align = utils.unhtml(align);\r\n classname = utils.unhtml(classname).trim();\r\n\r\n width = parseInt(width, 10) || 0;\r\n height = parseInt(height, 10) || 0;\r\n\r\n var str;\r\n switch (type){\r\n case 'image':\r\n str = '<img ' + (id ? 'id=\"' + id+'\"' : '') + ' width=\"'+ width +'\" height=\"' + height + '\" _url=\"'+url+'\" class=\"' + classname.replace(/\\bvideo-js\\b/, '') + '\"' +\r\n ' src=\"' + me.options.UEDITOR_HOME_URL+'themes/default/images/spacer.gif\" style=\"background:url('+me.options.UEDITOR_HOME_URL+'themes/default/images/videologo.gif) no-repeat center center; border:1px solid gray;'+(align ? 'float:' + align + ';': '')+'\" />'\r\n break;\r\n case 'embed':\r\n str = '<embed type=\"application/x-shockwave-flash\" class=\"' + classname + '\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"' +\r\n ' src=\"' + utils.html(url) + '\" width=\"' + width + '\" height=\"' + height + '\"' + (align ? ' style=\"float:' + align + '\"': '') +\r\n ' wmode=\"transparent\" play=\"true\" loop=\"false\" menu=\"false\" allowscriptaccess=\"never\" allowfullscreen=\"true\" >';\r\n break;\r\n case 'video':\r\n var ext = url.substr(url.lastIndexOf('.') + 1);\r\n if(ext == 'ogv') ext = 'ogg';\r\n str = '<video' + (id ? ' id=\"' + id + '\"' : '') + ' class=\"' + classname + ' video-js\" ' + (align ? ' style=\"float:' + align + '\"': '') +\r\n ' controls preload=\"none\" width=\"' + width + '\" height=\"' + height + '\" src=\"' + url + '\" data-setup=\"{}\">' +\r\n '<source src=\"' + url + '\" type=\"video/' + ext + '\" /></video>';\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n function switchImgAndVideo(root,img2video){\r\n utils.each(root.getNodesByTagName(img2video ? 'img' : 'embed video'),function(node){\r\n var className = node.getAttr('class');\r\n if(className && className.indexOf('edui-faked-video') != -1){\r\n var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'embed':'image');\r\n node.parentNode.replaceChild(UE.uNode.createElement(html),node);\r\n }\r\n if(className && className.indexOf('edui-upload-video') != -1){\r\n var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'video':'image');\r\n node.parentNode.replaceChild(UE.uNode.createElement(html),node);\r\n }\r\n })\r\n }\r\n\r\n me.addOutputRule(function(root){\r\n switchImgAndVideo(root,true)\r\n });\r\n me.addInputRule(function(root){\r\n switchImgAndVideo(root)\r\n });\r\n\r\n /**\r\n * 插入视频\r\n * @command insertvideo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性\r\n * @example\r\n * ```javascript\r\n *\r\n * var videoAttr = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * };\r\n *\r\n * //editor 是编辑器实例\r\n * //向编辑器插入单个视频\r\n * editor.execCommand( 'insertvideo', videoAttr );\r\n * ```\r\n */\r\n\r\n /**\r\n * 插入视频\r\n * @command insertvideo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性\r\n * @example\r\n * ```javascript\r\n *\r\n * var videoAttr1 = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * },\r\n * videoAttr2 = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * }\r\n *\r\n * //editor 是编辑器实例\r\n * //该方法将会向编辑器内插入两个视频\r\n * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前光标所在处是否是一个视频\r\n * @command insertvideo\r\n * @method queryCommandState\r\n * @param { String } cmd 需要查询的命令字符串\r\n * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n *\r\n * //editor 是编辑器实例\r\n * editor.queryCommandState( 'insertvideo' );\r\n * ```\r\n */\r\n me.commands[\"insertvideo\"] = {\r\n execCommand: function (cmd, videoObjs, type){\r\n videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs];\r\n var html = [],id = 'tmpVedio', cl;\r\n for(var i=0,vi,len = videoObjs.length;i<len;i++){\r\n vi = videoObjs[i];\r\n cl = (type == 'upload' ? 'edui-upload-video video-js vjs-default-skin':'edui-faked-video');\r\n html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'image'));\r\n }\r\n me.execCommand(\"inserthtml\",html.join(\"\"),true);\r\n var rng = this.selection.getRange();\r\n for(var i= 0,len=videoObjs.length;i<len;i++){\r\n var img = this.document.getElementById('tmpVedio'+i);\r\n domUtils.removeAttributes(img,'id');\r\n rng.selectNode(img).select();\r\n me.execCommand('imagefloat',videoObjs[i].align)\r\n }\r\n },\r\n queryCommandState : function(){\r\n var img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\")!=-1);\r\n return flag ? 1 : 0;\r\n }\r\n };\r\n};\r\n\r\n\r\n// plugins/table.core.js\r\n/**\r\n * Created with JetBrains WebStorm.\r\n * User: taoqili\r\n * Date: 13-1-18\r\n * Time: 上午11:09\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n/**\r\n * UE表格操作类\r\n * @param table\r\n * @constructor\r\n */\r\n(function () {\r\n var UETable = UE.UETable = function (table) {\r\n this.table = table;\r\n this.indexTable = [];\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n this.update(table);\r\n };\r\n\r\n //===以下为静态工具方法===\r\n UETable.removeSelectedClass = function (cells) {\r\n utils.each(cells, function (cell) {\r\n domUtils.removeClasses(cell, \"selectTdClass\");\r\n })\r\n };\r\n UETable.addSelectedClass = function (cells) {\r\n utils.each(cells, function (cell) {\r\n domUtils.addClass(cell, \"selectTdClass\");\r\n })\r\n };\r\n UETable.isEmptyBlock = function (node) {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\\s*$/, '').replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var i in dtd.$isNotEmpty) if (dtd.$isNotEmpty.hasOwnProperty(i)) {\r\n if (node.getElementsByTagName(i).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n };\r\n UETable.getWidth = function (cell) {\r\n if (!cell)return 0;\r\n return parseInt(domUtils.getComputedStyle(cell, \"width\"), 10);\r\n };\r\n\r\n /**\r\n * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的\r\n * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态;\r\n * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组\r\n * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null\r\n */\r\n UETable.getTableCellAlignState = function ( cells ) {\r\n\r\n !utils.isArray( cells ) && ( cells = [cells] );\r\n\r\n var result = {},\r\n status = ['align', 'valign'],\r\n tempStatus = null,\r\n isSame = true;//状态是否相同\r\n\r\n utils.each( cells, function( cellNode ){\r\n\r\n utils.each( status, function( currentState ){\r\n\r\n tempStatus = cellNode.getAttribute( currentState );\r\n\r\n if( !result[ currentState ] && tempStatus ) {\r\n result[ currentState ] = tempStatus;\r\n } else if( !result[ currentState ] || ( tempStatus !== result[ currentState ] ) ) {\r\n isSame = false;\r\n return false;\r\n }\r\n\r\n } );\r\n\r\n return isSame;\r\n\r\n });\r\n\r\n return isSame ? result : null;\r\n\r\n };\r\n\r\n /**\r\n * 根据当前选区获取相关的table信息\r\n * @return {Object}\r\n */\r\n UETable.getTableItemsByRange = function (editor) {\r\n var start = editor.selection.getStart();\r\n\r\n //ff下会选中bookmark\r\n if( start && start.id && start.id.indexOf('_baidu_bookmark_start_') === 0 && start.nextSibling) {\r\n start = start.nextSibling;\r\n }\r\n\r\n //在table或者td边缘有可能存在选中tr的情况\r\n var cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\"], true),\r\n tr = cell && cell.parentNode,\r\n caption = start && domUtils.findParentByTagName(start, 'caption', true),\r\n table = caption ? caption.parentNode : tr && tr.parentNode.parentNode;\r\n\r\n return {\r\n cell:cell,\r\n tr:tr,\r\n table:table,\r\n caption:caption\r\n }\r\n };\r\n UETable.getUETableBySelected = function (editor) {\r\n var table = UETable.getTableItemsByRange(editor).table;\r\n if (table && table.ueTable && table.ueTable.selectedTds.length) {\r\n return table.ueTable;\r\n }\r\n return null;\r\n };\r\n\r\n UETable.getDefaultValue = function (editor, table) {\r\n var borderMap = {\r\n thin:'0px',\r\n medium:'1px',\r\n thick:'2px'\r\n },\r\n tableBorder, tdPadding, tdBorder, tmpValue;\r\n if (!table) {\r\n table = editor.document.createElement('table');\r\n table.insertRow(0).insertCell(0).innerHTML = 'xxx';\r\n editor.body.appendChild(table);\r\n var td = table.getElementsByTagName('td')[0];\r\n tmpValue = domUtils.getComputedStyle(table, 'border-left-width');\r\n tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'padding-left');\r\n tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'border-left-width');\r\n tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n domUtils.remove(table);\r\n return {\r\n tableBorder:tableBorder,\r\n tdPadding:tdPadding,\r\n tdBorder:tdBorder\r\n };\r\n } else {\r\n td = table.getElementsByTagName('td')[0];\r\n tmpValue = domUtils.getComputedStyle(table, 'border-left-width');\r\n tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'padding-left');\r\n tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'border-left-width');\r\n tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n return {\r\n tableBorder:tableBorder,\r\n tdPadding:tdPadding,\r\n tdBorder:tdBorder\r\n };\r\n }\r\n };\r\n /**\r\n * 根据当前点击的td或者table获取索引对象\r\n * @param tdOrTable\r\n */\r\n UETable.getUETable = function (tdOrTable) {\r\n var tag = tdOrTable.tagName.toLowerCase();\r\n tdOrTable = (tag == \"td\" || tag == \"th\" || tag == 'caption') ? domUtils.findParentByTagName(tdOrTable, \"table\", true) : tdOrTable;\r\n if (!tdOrTable.ueTable) {\r\n tdOrTable.ueTable = new UETable(tdOrTable);\r\n }\r\n return tdOrTable.ueTable;\r\n };\r\n\r\n UETable.cloneCell = function(cell,ignoreMerge,keepPro){\r\n if (!cell || utils.isString(cell)) {\r\n return this.table.ownerDocument.createElement(cell || 'td');\r\n }\r\n var flag = domUtils.hasClass(cell, \"selectTdClass\");\r\n flag && domUtils.removeClasses(cell, \"selectTdClass\");\r\n var tmpCell = cell.cloneNode(true);\r\n if (ignoreMerge) {\r\n tmpCell.rowSpan = tmpCell.colSpan = 1;\r\n }\r\n //去掉宽高\r\n !keepPro && domUtils.removeAttributes(tmpCell,'width height');\r\n !keepPro && domUtils.removeAttributes(tmpCell,'style');\r\n\r\n tmpCell.style.borderLeftStyle = \"\";\r\n tmpCell.style.borderTopStyle = \"\";\r\n tmpCell.style.borderLeftColor = cell.style.borderRightColor;\r\n tmpCell.style.borderLeftWidth = cell.style.borderRightWidth;\r\n tmpCell.style.borderTopColor = cell.style.borderBottomColor;\r\n tmpCell.style.borderTopWidth = cell.style.borderBottomWidth;\r\n flag && domUtils.addClass(cell, \"selectTdClass\");\r\n return tmpCell;\r\n }\r\n\r\n UETable.prototype = {\r\n getMaxRows:function () {\r\n var rows = this.table.rows, maxLen = 1;\r\n for (var i = 0, row; row = rows[i]; i++) {\r\n var currentMax = 1;\r\n for (var j = 0, cj; cj = row.cells[j++];) {\r\n currentMax = Math.max(cj.rowSpan || 1, currentMax);\r\n }\r\n maxLen = Math.max(currentMax + i, maxLen);\r\n }\r\n return maxLen;\r\n },\r\n /**\r\n * 获取当前表格的最大列数\r\n */\r\n getMaxCols:function () {\r\n var rows = this.table.rows, maxLen = 0, cellRows = {};\r\n for (var i = 0, row; row = rows[i]; i++) {\r\n var cellsNum = 0;\r\n for (var j = 0, cj; cj = row.cells[j++];) {\r\n cellsNum += (cj.colSpan || 1);\r\n if (cj.rowSpan && cj.rowSpan > 1) {\r\n for (var k = 1; k < cj.rowSpan; k++) {\r\n if (!cellRows['row_' + (i + k)]) {\r\n cellRows['row_' + (i + k)] = (cj.colSpan || 1);\r\n } else {\r\n cellRows['row_' + (i + k)]++\r\n }\r\n }\r\n\r\n }\r\n }\r\n cellsNum += cellRows['row_' + i] || 0;\r\n maxLen = Math.max(cellsNum, maxLen);\r\n }\r\n return maxLen;\r\n },\r\n getCellColIndex:function (cell) {\r\n\r\n },\r\n /**\r\n * 获取当前cell旁边的单元格,\r\n * @param cell\r\n * @param right\r\n */\r\n getHSideCell:function (cell, right) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n previewRowIndex, previewColIndex;\r\n var len = this.selectedTds.length,\r\n range = this.cellsRange;\r\n //首行或者首列没有前置单元格\r\n if ((!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (right && (!len ? (cellInfo.colIndex == (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null;\r\n\r\n previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex;\r\n previewColIndex = !right ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1)\r\n : ( !len ? cellInfo.colIndex + 1 : range.endColIndex + 1);\r\n return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n getTabNextCell:function (cell, preRowIndex) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rowIndex = preRowIndex || cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1),\r\n nextCell;\r\n try {\r\n nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);\r\n } catch (e) {\r\n try {\r\n rowIndex = rowIndex * 1 + 1;\r\n colIndex = 0;\r\n nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);\r\n } catch (e) {\r\n }\r\n }\r\n return nextCell;\r\n\r\n },\r\n /**\r\n * 获取视觉上的后置单元格\r\n * @param cell\r\n * @param bottom\r\n */\r\n getVSideCell:function (cell, bottom, ignoreRange) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n nextRowIndex, nextColIndex;\r\n var len = this.selectedTds.length && !ignoreRange,\r\n range = this.cellsRange;\r\n //末行或者末列没有后置单元格\r\n if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null;\r\n\r\n nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1)\r\n : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1);\r\n nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex;\r\n return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同\r\n */\r\n getSameEndPosCells:function (cell, xOrY) {\r\n try {\r\n var flag = (xOrY.toLowerCase() === \"x\"),\r\n end = domUtils.getXY(cell)[flag ? 'x' : 'y'] + cell[\"offset\" + (flag ? 'Width' : 'Height')],\r\n rows = this.table.rows,\r\n cells = null, returns = [];\r\n for (var i = 0; i < this.rowsNum; i++) {\r\n cells = rows[i].cells;\r\n for (var j = 0, tmpCell; tmpCell = cells[j++];) {\r\n var tmpEnd = domUtils.getXY(tmpCell)[flag ? 'x' : 'y'] + tmpCell[\"offset\" + (flag ? 'Width' : 'Height')];\r\n //对应行的td已经被上面行rowSpan了\r\n if (tmpEnd > end && flag) break;\r\n if (cell == tmpCell || end == tmpEnd) {\r\n //只获取单一的单元格\r\n //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能\r\n if (tmpCell[flag ? \"colSpan\" : \"rowSpan\"] == 1) {\r\n returns.push(tmpCell);\r\n }\r\n if (flag) break;\r\n }\r\n }\r\n }\r\n return returns;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n setCellContent:function (cell, content) {\r\n cell.innerHTML = content || (browser.ie ? domUtils.fillChar : \"<br />\");\r\n },\r\n cloneCell:UETable.cloneCell,\r\n /**\r\n * 获取跟当前单元格的右边竖线为左边的所有未合并单元格\r\n */\r\n getSameStartPosXCells:function (cell) {\r\n try {\r\n var start = domUtils.getXY(cell).x + cell.offsetWidth,\r\n rows = this.table.rows, cells , returns = [];\r\n for (var i = 0; i < this.rowsNum; i++) {\r\n cells = rows[i].cells;\r\n for (var j = 0, tmpCell; tmpCell = cells[j++];) {\r\n var tmpStart = domUtils.getXY(tmpCell).x;\r\n if (tmpStart > start) break;\r\n if (tmpStart == start && tmpCell.colSpan == 1) {\r\n returns.push(tmpCell);\r\n break;\r\n }\r\n }\r\n }\r\n return returns;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 更新table对应的索引表\r\n */\r\n update:function (table) {\r\n this.table = table || this.table;\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n this.indexTable = [];\r\n var rows = this.table.rows,\r\n rowsNum = this.getMaxRows(),\r\n dNum = rowsNum - rows.length,\r\n colsNum = this.getMaxCols();\r\n while (dNum--) {\r\n this.table.insertRow(rows.length);\r\n }\r\n this.rowsNum = rowsNum;\r\n this.colsNum = colsNum;\r\n for (var i = 0, len = rows.length; i < len; i++) {\r\n this.indexTable[i] = new Array(colsNum);\r\n }\r\n //填充索引表\r\n for (var rowIndex = 0, row; row = rows[rowIndex]; rowIndex++) {\r\n for (var cellIndex = 0, cell, cells = row.cells; cell = cells[cellIndex]; cellIndex++) {\r\n //修正整行被rowSpan时导致的行数计算错误\r\n if (cell.rowSpan > rowsNum) {\r\n cell.rowSpan = rowsNum;\r\n }\r\n var colIndex = cellIndex,\r\n rowSpan = cell.rowSpan || 1,\r\n colSpan = cell.colSpan || 1;\r\n //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行\r\n while (this.indexTable[rowIndex][colIndex]) colIndex++;\r\n for (var j = 0; j < rowSpan; j++) {\r\n for (var k = 0; k < colSpan; k++) {\r\n this.indexTable[rowIndex + j][colIndex + k] = {\r\n rowIndex:rowIndex,\r\n cellIndex:cellIndex,\r\n colIndex:colIndex,\r\n rowSpan:rowSpan,\r\n colSpan:colSpan\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //修复残缺td\r\n for (j = 0; j < rowsNum; j++) {\r\n for (k = 0; k < colsNum; k++) {\r\n if (this.indexTable[j][k] === undefined) {\r\n row = rows[j];\r\n cell = row.cells[row.cells.length - 1];\r\n cell = cell ? cell.cloneNode(true) : this.table.ownerDocument.createElement(\"td\");\r\n this.setCellContent(cell);\r\n if (cell.colSpan !== 1)cell.colSpan = 1;\r\n if (cell.rowSpan !== 1)cell.rowSpan = 1;\r\n row.appendChild(cell);\r\n this.indexTable[j][k] = {\r\n rowIndex:j,\r\n cellIndex:cell.cellIndex,\r\n colIndex:k,\r\n rowSpan:1,\r\n colSpan:1\r\n }\r\n }\r\n }\r\n }\r\n //当框选后删除行或者列后撤销,需要重建选区。\r\n var tds = domUtils.getElementsByTagName(this.table, \"td\"),\r\n selectTds = [];\r\n utils.each(tds, function (td) {\r\n if (domUtils.hasClass(td, \"selectTdClass\")) {\r\n selectTds.push(td);\r\n }\r\n });\r\n if (selectTds.length) {\r\n var start = selectTds[0],\r\n end = selectTds[selectTds.length - 1],\r\n startInfo = this.getCellInfo(start),\r\n endInfo = this.getCellInfo(end);\r\n this.selectedTds = selectTds;\r\n this.cellsRange = {\r\n beginRowIndex:startInfo.rowIndex,\r\n beginColIndex:startInfo.colIndex,\r\n endRowIndex:endInfo.rowIndex + endInfo.rowSpan - 1,\r\n endColIndex:endInfo.colIndex + endInfo.colSpan - 1\r\n };\r\n }\r\n //给第一行设置firstRow的样式名称,在排序图标的样式上使用到\r\n if(!domUtils.hasClass(this.table.rows[0], \"firstRow\")) {\r\n domUtils.addClass(this.table.rows[0], \"firstRow\");\r\n for(var i = 1; i< this.table.rows.length; i++) {\r\n domUtils.removeClasses(this.table.rows[i], \"firstRow\");\r\n }\r\n }\r\n },\r\n /**\r\n * 获取单元格的索引信息\r\n */\r\n getCellInfo:function (cell) {\r\n if (!cell) return;\r\n var cellIndex = cell.cellIndex,\r\n rowIndex = cell.parentNode.rowIndex,\r\n rowInfo = this.indexTable[rowIndex],\r\n numCols = this.colsNum;\r\n for (var colIndex = cellIndex; colIndex < numCols; colIndex++) {\r\n var cellInfo = rowInfo[colIndex];\r\n if (cellInfo.rowIndex === rowIndex && cellInfo.cellIndex === cellIndex) {\r\n return cellInfo;\r\n }\r\n }\r\n },\r\n /**\r\n * 根据行列号获取单元格\r\n */\r\n getCell:function (rowIndex, cellIndex) {\r\n return rowIndex < this.rowsNum && this.table.rows[rowIndex].cells[cellIndex] || null;\r\n },\r\n /**\r\n * 删除单元格\r\n */\r\n deleteCell:function (cell, rowIndex) {\r\n rowIndex = typeof rowIndex == 'number' ? rowIndex : cell.parentNode.rowIndex;\r\n var row = this.table.rows[rowIndex];\r\n row.deleteCell(cell.cellIndex);\r\n },\r\n /**\r\n * 根据始末两个单元格获取被框选的所有单元格范围\r\n */\r\n getCellsRange:function (cellA, cellB) {\r\n function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) {\r\n var tmpBeginRowIndex = beginRowIndex,\r\n tmpBeginColIndex = beginColIndex,\r\n tmpEndRowIndex = endRowIndex,\r\n tmpEndColIndex = endColIndex,\r\n cellInfo, colIndex, rowIndex;\r\n // 通过indexTable检查是否存在超出TableRange上边界的情况\r\n if (beginRowIndex > 0) {\r\n for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) {\r\n cellInfo = me.indexTable[beginRowIndex][colIndex];\r\n rowIndex = cellInfo.rowIndex;\r\n if (rowIndex < beginRowIndex) {\r\n tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex);\r\n }\r\n }\r\n }\r\n // 通过indexTable检查是否存在超出TableRange右边界的情况\r\n if (endColIndex < me.colsNum) {\r\n for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) {\r\n cellInfo = me.indexTable[rowIndex][endColIndex];\r\n colIndex = cellInfo.colIndex + cellInfo.colSpan - 1;\r\n if (colIndex > endColIndex) {\r\n tmpEndColIndex = Math.max(colIndex, tmpEndColIndex);\r\n }\r\n }\r\n }\r\n // 检查是否有超出TableRange下边界的情况\r\n if (endRowIndex < me.rowsNum) {\r\n for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) {\r\n cellInfo = me.indexTable[endRowIndex][colIndex];\r\n rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1;\r\n if (rowIndex > endRowIndex) {\r\n tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex);\r\n }\r\n }\r\n }\r\n // 检查是否有超出TableRange左边界的情况\r\n if (beginColIndex > 0) {\r\n for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) {\r\n cellInfo = me.indexTable[rowIndex][beginColIndex];\r\n colIndex = cellInfo.colIndex;\r\n if (colIndex < beginColIndex) {\r\n tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex);\r\n }\r\n }\r\n }\r\n //递归调用直至所有完成所有框选单元格的扩展\r\n if (tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) {\r\n return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex);\r\n } else {\r\n // 不需要扩展TableRange的情况\r\n return {\r\n beginRowIndex:beginRowIndex,\r\n beginColIndex:beginColIndex,\r\n endRowIndex:endRowIndex,\r\n endColIndex:endColIndex\r\n };\r\n }\r\n }\r\n\r\n try {\r\n var me = this,\r\n cellAInfo = me.getCellInfo(cellA);\r\n if (cellA === cellB) {\r\n return {\r\n beginRowIndex:cellAInfo.rowIndex,\r\n beginColIndex:cellAInfo.colIndex,\r\n endRowIndex:cellAInfo.rowIndex + cellAInfo.rowSpan - 1,\r\n endColIndex:cellAInfo.colIndex + cellAInfo.colSpan - 1\r\n };\r\n }\r\n var cellBInfo = me.getCellInfo(cellB);\r\n // 计算TableRange的四个边\r\n var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex),\r\n beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex),\r\n endRowIndex = Math.max(cellAInfo.rowIndex + cellAInfo.rowSpan - 1, cellBInfo.rowIndex + cellBInfo.rowSpan - 1),\r\n endColIndex = Math.max(cellAInfo.colIndex + cellAInfo.colSpan - 1, cellBInfo.colIndex + cellBInfo.colSpan - 1);\r\n\r\n return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex);\r\n } catch (e) {\r\n //throw e;\r\n }\r\n },\r\n /**\r\n * 依据cellsRange获取对应的单元格集合\r\n */\r\n getCells:function (range) {\r\n //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响\r\n this.clearSelected();\r\n var beginRowIndex = range.beginRowIndex,\r\n beginColIndex = range.beginColIndex,\r\n endRowIndex = range.endRowIndex,\r\n endColIndex = range.endColIndex,\r\n cellInfo, rowIndex, colIndex, tdHash = {}, returnTds = [];\r\n for (var i = beginRowIndex; i <= endRowIndex; i++) {\r\n for (var j = beginColIndex; j <= endColIndex; j++) {\r\n cellInfo = this.indexTable[i][j];\r\n rowIndex = cellInfo.rowIndex;\r\n colIndex = cellInfo.colIndex;\r\n // 如果Cells里已经包含了此Cell则跳过\r\n var key = rowIndex + '|' + colIndex;\r\n if (tdHash[key]) continue;\r\n tdHash[key] = 1;\r\n if (rowIndex < i || colIndex < j || rowIndex + cellInfo.rowSpan - 1 > endRowIndex || colIndex + cellInfo.colSpan - 1 > endColIndex) {\r\n return null;\r\n }\r\n returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex));\r\n }\r\n }\r\n return returnTds;\r\n },\r\n /**\r\n * 清理已经选中的单元格\r\n */\r\n clearSelected:function () {\r\n UETable.removeSelectedClass(this.selectedTds);\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n },\r\n /**\r\n * 根据range设置已经选中的单元格\r\n */\r\n setSelected:function (range) {\r\n var cells = this.getCells(range);\r\n UETable.addSelectedClass(cells);\r\n this.selectedTds = cells;\r\n this.cellsRange = range;\r\n },\r\n isFullRow:function () {\r\n var range = this.cellsRange;\r\n return (range.endColIndex - range.beginColIndex + 1) == this.colsNum;\r\n },\r\n isFullCol:function () {\r\n var range = this.cellsRange,\r\n table = this.table,\r\n ths = table.getElementsByTagName(\"th\"),\r\n rows = range.endRowIndex - range.beginRowIndex + 1;\r\n return !ths.length ? rows == this.rowsNum : rows == this.rowsNum || (rows == this.rowsNum - 1);\r\n\r\n },\r\n /**\r\n * 获取视觉上的前置单元格,默认是左边,top传入时\r\n * @param cell\r\n * @param top\r\n */\r\n getNextCell:function (cell, bottom, ignoreRange) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n nextRowIndex, nextColIndex;\r\n var len = this.selectedTds.length && !ignoreRange,\r\n range = this.cellsRange;\r\n //末行或者末列没有后置单元格\r\n if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null;\r\n\r\n nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1)\r\n : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1);\r\n nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex;\r\n return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n getPreviewCell:function (cell, top) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n previewRowIndex, previewColIndex;\r\n var len = this.selectedTds.length,\r\n range = this.cellsRange;\r\n //首行或者首列没有前置单元格\r\n if ((!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (top && (!len ? (cellInfo.rowIndex > (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null;\r\n\r\n previewRowIndex = !top ? ( !len ? cellInfo.rowIndex : range.beginRowIndex )\r\n : ( !len ? (cellInfo.rowIndex < 1 ? 0 : (cellInfo.rowIndex - 1)) : range.beginRowIndex);\r\n previewColIndex = !top ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1)\r\n : ( !len ? cellInfo.colIndex : range.endColIndex + 1);\r\n return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 移动单元格中的内容\r\n */\r\n moveContent:function (cellTo, cellFrom) {\r\n if (UETable.isEmptyBlock(cellFrom)) return;\r\n if (UETable.isEmptyBlock(cellTo)) {\r\n cellTo.innerHTML = cellFrom.innerHTML;\r\n return;\r\n }\r\n var child = cellTo.lastChild;\r\n if (child.nodeType == 3 || !dtd.$block[child.tagName]) {\r\n cellTo.appendChild(cellTo.ownerDocument.createElement('br'))\r\n }\r\n while (child = cellFrom.firstChild) {\r\n cellTo.appendChild(child);\r\n }\r\n },\r\n /**\r\n * 向右合并单元格\r\n */\r\n mergeRight:function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rightColIndex = cellInfo.colIndex + cellInfo.colSpan,\r\n rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex],\r\n rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex);\r\n //合并\r\n cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan;\r\n //被合并的单元格不应存在宽度属性\r\n cell.removeAttribute(\"width\");\r\n //移动内容\r\n this.moveContent(cell, rightCell);\r\n //删掉被合并的Cell\r\n this.deleteCell(rightCell, rightCellInfo.rowIndex);\r\n this.update();\r\n },\r\n /**\r\n * 向下合并单元格\r\n */\r\n mergeDown:function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan,\r\n downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex],\r\n downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex);\r\n cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan;\r\n cell.removeAttribute(\"height\");\r\n this.moveContent(cell, downCell);\r\n this.deleteCell(downCell, downCellInfo.rowIndex);\r\n this.update();\r\n },\r\n /**\r\n * 合并整个range中的内容\r\n */\r\n mergeRange:function () {\r\n //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问\r\n var range = this.cellsRange,\r\n leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex);\r\n\r\n if (leftTopCell.tagName == \"TH\" && range.endRowIndex !== range.beginRowIndex) {\r\n var index = this.indexTable,\r\n info = this.getCellInfo(leftTopCell);\r\n leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex);\r\n range = this.getCellsRange(leftTopCell, this.getCell(index[this.rowsNum - 1][info.colIndex].rowIndex, index[this.rowsNum - 1][info.colIndex].cellIndex));\r\n }\r\n\r\n // 删除剩余的Cells\r\n var cells = this.getCells(range);\r\n for(var i= 0,ci;ci=cells[i++];){\r\n if (ci !== leftTopCell) {\r\n this.moveContent(leftTopCell, ci);\r\n this.deleteCell(ci);\r\n }\r\n }\r\n // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置\r\n leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1;\r\n leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute(\"height\");\r\n leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1;\r\n leftTopCell.colSpan > 1 && leftTopCell.removeAttribute(\"width\");\r\n if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) {\r\n leftTopCell.colSpan = 1;\r\n }\r\n\r\n if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) {\r\n var rowIndex = leftTopCell.parentNode.rowIndex;\r\n //解决IE下的表格操作问题\r\n if( this.table.deleteRow ) {\r\n for (var i = rowIndex+ 1, curIndex=rowIndex+ 1, len=leftTopCell.rowSpan; i < len; i++) {\r\n this.table.deleteRow(curIndex);\r\n }\r\n } else {\r\n for (var i = 0, len=leftTopCell.rowSpan - 1; i < len; i++) {\r\n var row = this.table.rows[rowIndex + 1];\r\n row.parentNode.removeChild(row);\r\n }\r\n }\r\n leftTopCell.rowSpan = 1;\r\n }\r\n this.update();\r\n },\r\n /**\r\n * 插入一行单元格\r\n */\r\n insertRow:function (rowIndex, sourceCell) {\r\n var numCols = this.colsNum,\r\n table = this.table,\r\n row = table.insertRow(rowIndex), cell,\r\n isInsertTitle = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH';\r\n\r\n function replaceTdToTh(colIndex, cell, tableRow) {\r\n if (colIndex == 0) {\r\n var tr = tableRow.nextSibling || tableRow.previousSibling,\r\n th = tr.cells[colIndex];\r\n if (th.tagName == 'TH') {\r\n th = cell.ownerDocument.createElement(\"th\");\r\n th.appendChild(cell.firstChild);\r\n tableRow.insertBefore(th, cell);\r\n domUtils.remove(cell)\r\n }\r\n }else{\r\n if (cell.tagName == 'TH') {\r\n var td = cell.ownerDocument.createElement(\"td\");\r\n td.appendChild(cell.firstChild);\r\n tableRow.insertBefore(td, cell);\r\n domUtils.remove(cell)\r\n }\r\n }\r\n }\r\n\r\n //首行直接插入,无需考虑部分单元格被rowspan的情况\r\n if (rowIndex == 0 || rowIndex == this.rowsNum) {\r\n for (var colIndex = 0; colIndex < numCols; colIndex++) {\r\n cell = this.cloneCell(sourceCell, true);\r\n this.setCellContent(cell);\r\n cell.getAttribute('vAlign') && cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n row.appendChild(cell);\r\n if(!isInsertTitle) replaceTdToTh(colIndex, cell, row);\r\n }\r\n } else {\r\n var infoRow = this.indexTable[rowIndex],\r\n cellIndex = 0;\r\n for (colIndex = 0; colIndex < numCols; colIndex++) {\r\n var cellInfo = infoRow[colIndex];\r\n //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格\r\n if (cellInfo.rowIndex < rowIndex) {\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n cell.rowSpan = cellInfo.rowSpan + 1;\r\n } else {\r\n cell = this.cloneCell(sourceCell, true);\r\n this.setCellContent(cell);\r\n row.appendChild(cell);\r\n }\r\n if(!isInsertTitle) replaceTdToTh(colIndex, cell, row);\r\n }\r\n }\r\n //框选时插入不触发contentchange,需要手动更新索引。\r\n this.update();\r\n return row;\r\n },\r\n /**\r\n * 删除一行单元格\r\n * @param rowIndex\r\n */\r\n deleteRow:function (rowIndex) {\r\n var row = this.table.rows[rowIndex],\r\n infoRow = this.indexTable[rowIndex],\r\n colsNum = this.colsNum,\r\n count = 0; //处理计数\r\n for (var colIndex = 0; colIndex < colsNum;) {\r\n var cellInfo = infoRow[colIndex],\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n if (cell.rowSpan > 1) {\r\n if (cellInfo.rowIndex == rowIndex) {\r\n var clone = cell.cloneNode(true);\r\n clone.rowSpan = cell.rowSpan - 1;\r\n clone.innerHTML = \"\";\r\n cell.rowSpan = 1;\r\n var nextRowIndex = rowIndex + 1,\r\n nextRow = this.table.rows[nextRowIndex],\r\n insertCellIndex,\r\n preMerged = this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count;\r\n if (preMerged < colIndex) {\r\n insertCellIndex = colIndex - preMerged - 1;\r\n //nextRow.insertCell(insertCellIndex);\r\n domUtils.insertAfter(nextRow.cells[insertCellIndex], clone);\r\n } else {\r\n if (nextRow.cells.length) nextRow.insertBefore(clone, nextRow.cells[0])\r\n }\r\n count += 1;\r\n //cell.parentNode.removeChild(cell);\r\n }\r\n }\r\n colIndex += cell.colSpan || 1;\r\n }\r\n var deleteTds = [], cacheMap = {};\r\n for (colIndex = 0; colIndex < colsNum; colIndex++) {\r\n var tmpRowIndex = infoRow[colIndex].rowIndex,\r\n tmpCellIndex = infoRow[colIndex].cellIndex,\r\n key = tmpRowIndex + \"_\" + tmpCellIndex;\r\n if (cacheMap[key])continue;\r\n cacheMap[key] = 1;\r\n cell = this.getCell(tmpRowIndex, tmpCellIndex);\r\n deleteTds.push(cell);\r\n }\r\n var mergeTds = [];\r\n utils.each(deleteTds, function (td) {\r\n if (td.rowSpan == 1) {\r\n td.parentNode.removeChild(td);\r\n } else {\r\n mergeTds.push(td);\r\n }\r\n });\r\n utils.each(mergeTds, function (td) {\r\n td.rowSpan--;\r\n });\r\n row.parentNode.removeChild(row);\r\n //浏览器方法本身存在bug,采用自定义方法删除\r\n //this.table.deleteRow(rowIndex);\r\n this.update();\r\n },\r\n insertCol:function (colIndex, sourceCell, defaultValue) {\r\n var rowsNum = this.rowsNum,\r\n rowIndex = 0,\r\n tableRow, cell,\r\n backWidth = parseInt((this.table.offsetWidth - (this.colsNum + 1) * 20 - (this.colsNum + 1)) / (this.colsNum + 1), 10),\r\n isInsertTitleCol = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH';\r\n\r\n function replaceTdToTh(rowIndex, cell, tableRow) {\r\n if (rowIndex == 0) {\r\n var th = cell.nextSibling || cell.previousSibling;\r\n if (th.tagName == 'TH') {\r\n th = cell.ownerDocument.createElement(\"th\");\r\n th.appendChild(cell.firstChild);\r\n tableRow.insertBefore(th, cell);\r\n domUtils.remove(cell)\r\n }\r\n }else{\r\n if (cell.tagName == 'TH') {\r\n var td = cell.ownerDocument.createElement(\"td\");\r\n td.appendChild(cell.firstChild);\r\n tableRow.insertBefore(td, cell);\r\n domUtils.remove(cell)\r\n }\r\n }\r\n }\r\n\r\n var preCell;\r\n if (colIndex == 0 || colIndex == this.colsNum) {\r\n for (; rowIndex < rowsNum; rowIndex++) {\r\n tableRow = this.table.rows[rowIndex];\r\n preCell = tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length];\r\n cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length);\r\n this.setCellContent(cell);\r\n cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n preCell && cell.setAttribute('width', preCell.getAttribute('width'));\r\n if (!colIndex) {\r\n tableRow.insertBefore(cell, tableRow.cells[0]);\r\n } else {\r\n domUtils.insertAfter(tableRow.cells[tableRow.cells.length - 1], cell);\r\n }\r\n if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow)\r\n }\r\n } else {\r\n for (; rowIndex < rowsNum; rowIndex++) {\r\n var cellInfo = this.indexTable[rowIndex][colIndex];\r\n if (cellInfo.colIndex < colIndex) {\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n cell.colSpan = cellInfo.colSpan + 1;\r\n } else {\r\n tableRow = this.table.rows[rowIndex];\r\n preCell = tableRow.cells[cellInfo.cellIndex];\r\n\r\n cell = this.cloneCell(sourceCell, true);//tableRow.insertCell(cellInfo.cellIndex);\r\n this.setCellContent(cell);\r\n cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n preCell && cell.setAttribute('width', preCell.getAttribute('width'));\r\n //防止IE下报错\r\n preCell ? tableRow.insertBefore(cell, preCell) : tableRow.appendChild(cell);\r\n }\r\n if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow);\r\n }\r\n }\r\n //框选时插入不触发contentchange,需要手动更新索引\r\n this.update();\r\n this.updateWidth(backWidth, defaultValue || {tdPadding:10, tdBorder:1});\r\n },\r\n updateWidth:function (width, defaultValue) {\r\n var table = this.table,\r\n tmpWidth = UETable.getWidth(table) - defaultValue.tdPadding * 2 - defaultValue.tdBorder + width;\r\n if (tmpWidth < table.ownerDocument.body.offsetWidth) {\r\n table.setAttribute(\"width\", tmpWidth);\r\n return;\r\n }\r\n var tds = domUtils.getElementsByTagName(this.table, \"td th\");\r\n utils.each(tds, function (td) {\r\n td.setAttribute(\"width\", width);\r\n })\r\n },\r\n deleteCol:function (colIndex) {\r\n var indexTable = this.indexTable,\r\n tableRows = this.table.rows,\r\n backTableWidth = this.table.getAttribute(\"width\"),\r\n backTdWidth = 0,\r\n rowsNum = this.rowsNum,\r\n cacheMap = {};\r\n for (var rowIndex = 0; rowIndex < rowsNum;) {\r\n var infoRow = indexTable[rowIndex],\r\n cellInfo = infoRow[colIndex],\r\n key = cellInfo.rowIndex + '_' + cellInfo.colIndex;\r\n // 跳过已经处理过的Cell\r\n if (cacheMap[key])continue;\r\n cacheMap[key] = 1;\r\n var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n if (!backTdWidth) backTdWidth = cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0);\r\n // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell\r\n if (cell.colSpan > 1) {\r\n cell.colSpan--;\r\n } else {\r\n tableRows[rowIndex].deleteCell(cellInfo.cellIndex);\r\n }\r\n rowIndex += cellInfo.rowSpan || 1;\r\n }\r\n this.table.setAttribute(\"width\", backTableWidth - backTdWidth);\r\n this.update();\r\n },\r\n splitToCells:function (cell) {\r\n var me = this,\r\n cells = this.splitToRows(cell);\r\n utils.each(cells, function (cell) {\r\n me.splitToCols(cell);\r\n })\r\n },\r\n splitToRows:function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rowIndex = cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex,\r\n results = [];\r\n // 修改Cell的rowSpan\r\n cell.rowSpan = 1;\r\n results.push(cell);\r\n // 补齐单元格\r\n for (var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; i < endRow; i++) {\r\n if (i == rowIndex)continue;\r\n var tableRow = this.table.rows[i],\r\n tmpCell = tableRow.insertCell(colIndex - this.getPreviewMergedCellsNum(i, colIndex));\r\n tmpCell.colSpan = cellInfo.colSpan;\r\n this.setCellContent(tmpCell);\r\n tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n tmpCell.setAttribute('align', cell.getAttribute('align'));\r\n if (cell.style.cssText) {\r\n tmpCell.style.cssText = cell.style.cssText;\r\n }\r\n results.push(tmpCell);\r\n }\r\n this.update();\r\n return results;\r\n },\r\n getPreviewMergedCellsNum:function (rowIndex, colIndex) {\r\n var indexRow = this.indexTable[rowIndex],\r\n num = 0;\r\n for (var i = 0; i < colIndex;) {\r\n var colSpan = indexRow[i].colSpan,\r\n tmpRowIndex = indexRow[i].rowIndex;\r\n num += (colSpan - (tmpRowIndex == rowIndex ? 1 : 0));\r\n i += colSpan;\r\n }\r\n return num;\r\n },\r\n splitToCols:function (cell) {\r\n var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0),\r\n\r\n cellInfo = this.getCellInfo(cell),\r\n rowIndex = cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex,\r\n results = [];\r\n // 修改Cell的rowSpan\r\n cell.colSpan = 1;\r\n cell.setAttribute(\"width\", backWidth);\r\n results.push(cell);\r\n // 补齐单元格\r\n for (var j = colIndex, endCol = colIndex + cellInfo.colSpan; j < endCol; j++) {\r\n if (j == colIndex)continue;\r\n var tableRow = this.table.rows[rowIndex],\r\n tmpCell = tableRow.insertCell(this.indexTable[rowIndex][j].cellIndex + 1);\r\n tmpCell.rowSpan = cellInfo.rowSpan;\r\n this.setCellContent(tmpCell);\r\n tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n tmpCell.setAttribute('align', cell.getAttribute('align'));\r\n tmpCell.setAttribute('width', backWidth);\r\n if (cell.style.cssText) {\r\n tmpCell.style.cssText = cell.style.cssText;\r\n }\r\n //处理th的情况\r\n if (cell.tagName == 'TH') {\r\n var th = cell.ownerDocument.createElement('th');\r\n th.appendChild(tmpCell.firstChild);\r\n th.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n th.rowSpan = tmpCell.rowSpan;\r\n tableRow.insertBefore(th, tmpCell);\r\n domUtils.remove(tmpCell);\r\n }\r\n results.push(tmpCell);\r\n }\r\n this.update();\r\n return results;\r\n },\r\n isLastCell:function (cell, rowsNum, colsNum) {\r\n rowsNum = rowsNum || this.rowsNum;\r\n colsNum = colsNum || this.colsNum;\r\n var cellInfo = this.getCellInfo(cell);\r\n return ((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) &&\r\n ((cellInfo.colIndex + cellInfo.colSpan) == colsNum);\r\n },\r\n getLastCell:function (cells) {\r\n cells = cells || this.table.getElementsByTagName(\"td\");\r\n var firstInfo = this.getCellInfo(cells[0]);\r\n var me = this, last = cells[0],\r\n tr = last.parentNode,\r\n cellsNum = 0, cols = 0, rows;\r\n utils.each(cells, function (cell) {\r\n if (cell.parentNode == tr)cols += cell.colSpan || 1;\r\n cellsNum += cell.rowSpan * cell.colSpan || 1;\r\n });\r\n rows = cellsNum / cols;\r\n utils.each(cells, function (cell) {\r\n if (me.isLastCell(cell, rows, cols)) {\r\n last = cell;\r\n return false;\r\n }\r\n });\r\n return last;\r\n\r\n },\r\n selectRow:function (rowIndex) {\r\n var indexRow = this.indexTable[rowIndex],\r\n start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex),\r\n end = this.getCell(indexRow[this.colsNum - 1].rowIndex, indexRow[this.colsNum - 1].cellIndex),\r\n range = this.getCellsRange(start, end);\r\n this.setSelected(range);\r\n },\r\n selectTable:function () {\r\n var tds = this.table.getElementsByTagName(\"td\"),\r\n range = this.getCellsRange(tds[0], tds[tds.length - 1]);\r\n this.setSelected(range);\r\n },\r\n setBackground:function (cells, value) {\r\n if (typeof value === \"string\") {\r\n utils.each(cells, function (cell) {\r\n cell.style.backgroundColor = value;\r\n })\r\n } else if (typeof value === \"object\") {\r\n value = utils.extend({\r\n repeat:true,\r\n colorList:[\"#ddd\", \"#fff\"]\r\n }, value);\r\n var rowIndex = this.getCellInfo(cells[0]).rowIndex,\r\n count = 0,\r\n colors = value.colorList,\r\n getColor = function (list, index, repeat) {\r\n return list[index] ? list[index] : repeat ? list[index % list.length] : \"\";\r\n };\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n var cellInfo = this.getCellInfo(cell);\r\n cell.style.backgroundColor = getColor(colors, ((rowIndex + count) == cellInfo.rowIndex) ? count : ++count, value.repeat);\r\n }\r\n }\r\n },\r\n removeBackground:function (cells) {\r\n utils.each(cells, function (cell) {\r\n cell.style.backgroundColor = \"\";\r\n })\r\n }\r\n\r\n\r\n };\r\n function showError(e) {\r\n }\r\n})();\r\n\r\n// plugins/table.cmds.js\r\n/**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 13-2-20\r\n * Time: 下午6:25\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n;\r\n(function () {\r\n var UT = UE.UETable,\r\n getTableItemsByRange = function (editor) {\r\n return UT.getTableItemsByRange(editor);\r\n },\r\n getUETableBySelected = function (editor) {\r\n return UT.getUETableBySelected(editor)\r\n },\r\n getDefaultValue = function (editor, table) {\r\n return UT.getDefaultValue(editor, table);\r\n },\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n };\r\n\r\n\r\n UE.commands['inserttable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? -1 : 0;\r\n },\r\n execCommand: function (cmd, opt) {\r\n function createTable(opt, tdWidth) {\r\n var html = [],\r\n rowsNum = opt.numRows,\r\n colsNum = opt.numCols;\r\n for (var r = 0; r < rowsNum; r++) {\r\n html.push('<tr' + (r == 0 ? ' class=\"firstRow\"':'') + '>');\r\n for (var c = 0; c < colsNum; c++) {\r\n html.push('<td width=\"' + tdWidth + '\" vAlign=\"' + opt.tdvalign + '\" >' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '<br/>') + '</td>')\r\n }\r\n html.push('</tr>')\r\n }\r\n //禁止指定table-width\r\n return '<table><tbody>' + html.join('') + '</tbody></table>'\r\n }\r\n\r\n if (!opt) {\r\n opt = utils.extend({}, {\r\n numCols: this.options.defaultCols,\r\n numRows: this.options.defaultRows,\r\n tdvalign: this.options.tdvalign\r\n })\r\n }\r\n var me = this;\r\n var range = this.selection.getRange(),\r\n start = range.startContainer,\r\n firstParentBlock = domUtils.findParent(start, function (node) {\r\n return domUtils.isBlockElm(node);\r\n }, true) || me.body;\r\n\r\n var defaultValue = getDefaultValue(me),\r\n tableWidth = firstParentBlock.offsetWidth,\r\n tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder);\r\n\r\n //todo其他属性\r\n !opt.tdvalign && (opt.tdvalign = me.options.tdvalign);\r\n me.execCommand(\"inserthtml\", createTable(opt, tdWidth));\r\n }\r\n };\r\n\r\n UE.commands['insertparagraphbeforetable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var p = this.document.createElement(\"p\");\r\n p.innerHTML = browser.ie ? ' ' : '<br />';\r\n table.parentNode.insertBefore(p, table);\r\n this.selection.getRange().setStart(p, 0).setCursor();\r\n }\r\n }\r\n };\r\n\r\n UE.commands['deletetable'] = {\r\n queryCommandState: function () {\r\n var rng = this.selection.getRange();\r\n return domUtils.findParentByTagName(rng.startContainer, 'table', true) ? 0 : -1;\r\n },\r\n execCommand: function (cmd, table) {\r\n var rng = this.selection.getRange();\r\n table = table || domUtils.findParentByTagName(rng.startContainer, 'table', true);\r\n if (table) {\r\n var next = table.nextSibling;\r\n if (!next) {\r\n next = domUtils.createElement(this.document, 'p', {\r\n 'innerHTML': browser.ie ? domUtils.fillChar : '<br/>'\r\n });\r\n table.parentNode.insertBefore(next, table);\r\n }\r\n domUtils.remove(table);\r\n rng = this.selection.getRange();\r\n if (next.nodeType == 3) {\r\n rng.setStartBefore(next)\r\n } else {\r\n rng.setStart(next, 0)\r\n }\r\n rng.setCursor(false, true)\r\n this.fireEvent(\"tablehasdeleted\")\r\n\r\n }\r\n\r\n }\r\n };\r\n UE.commands['cellalign'] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length ? 0 : -1\r\n },\r\n execCommand: function (cmd, align) {\r\n var selectedTds = getSelectedArr(this);\r\n if (selectedTds.length) {\r\n for (var i = 0, ci; ci = selectedTds[i++];) {\r\n ci.setAttribute('align', align);\r\n }\r\n }\r\n }\r\n };\r\n UE.commands['cellvalign'] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length ? 0 : -1;\r\n },\r\n execCommand: function (cmd, valign) {\r\n var selectedTds = getSelectedArr(this);\r\n if (selectedTds.length) {\r\n for (var i = 0, ci; ci = selectedTds[i++];) {\r\n ci.setAttribute('vAlign', valign);\r\n }\r\n }\r\n }\r\n };\r\n UE.commands['insertcaption'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n return table.getElementsByTagName('caption').length == 0 ? 1 : -1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var caption = this.document.createElement('caption');\r\n caption.innerHTML = browser.ie ? domUtils.fillChar : '<br/>';\r\n table.insertBefore(caption, table.firstChild);\r\n var range = this.selection.getRange();\r\n range.setStart(caption, 0).setCursor();\r\n }\r\n\r\n }\r\n };\r\n UE.commands['deletecaption'] = {\r\n queryCommandState: function () {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n return table.getElementsByTagName('caption').length == 0 ? -1 : 1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n domUtils.remove(table.getElementsByTagName('caption')[0]);\r\n var range = this.selection.getRange();\r\n range.setStart(table.rows[0].cells[0], 0).setCursor();\r\n }\r\n\r\n }\r\n };\r\n UE.commands['inserttitle'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var firstRow = table.rows[0];\r\n return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() != 'th' ? 0 : -1\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n getUETable(table).insertRow(0, 'th');\r\n }\r\n var th = table.getElementsByTagName('th')[0];\r\n this.selection.getRange().setStart(th, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['deletetitle'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var firstRow = table.rows[0];\r\n return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() == 'th' ? 0 : -1\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n domUtils.remove(table.rows[0])\r\n }\r\n var td = table.getElementsByTagName('td')[0];\r\n this.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['inserttitlecol'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var lastRow = table.rows[table.rows.length-1];\r\n return lastRow.getElementsByTagName('th').length ? -1 : 0;\r\n }\r\n return -1;\r\n },\r\n execCommand: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n getUETable(table).insertCol(0, 'th');\r\n }\r\n resetTdWidth(table, this);\r\n var th = table.getElementsByTagName('th')[0];\r\n this.selection.getRange().setStart(th, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['deletetitlecol'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var lastRow = table.rows[table.rows.length-1];\r\n return lastRow.getElementsByTagName('th').length ? 0 : -1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n for(var i = 0; i< table.rows.length; i++ ){\r\n domUtils.remove(table.rows[i].children[0])\r\n }\r\n }\r\n resetTdWidth(table, this);\r\n var td = table.getElementsByTagName('td')[0];\r\n this.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }\r\n };\r\n\r\n UE.commands[\"mergeright\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table,\r\n cell = tableItems.cell;\r\n\r\n if (!table || !cell) return -1;\r\n var ut = getUETable(table);\r\n if (ut.selectedTds.length) return -1;\r\n\r\n var cellInfo = ut.getCellInfo(cell),\r\n rightColIndex = cellInfo.colIndex + cellInfo.colSpan;\r\n if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并\r\n\r\n var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex],\r\n rightCell = table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex];\r\n if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并\r\n\r\n // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并\r\n return (rightCellInfo.rowIndex == cellInfo.rowIndex && rightCellInfo.rowSpan == cellInfo.rowSpan) ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.mergeRight(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"mergedown\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table,\r\n cell = tableItems.cell;\r\n\r\n if (!table || !cell) return -1;\r\n var ut = getUETable(table);\r\n if (ut.selectedTds.length)return -1;\r\n\r\n var cellInfo = ut.getCellInfo(cell),\r\n downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan;\r\n if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并\r\n\r\n var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex],\r\n downCell = table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex];\r\n if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并\r\n\r\n // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并\r\n return (downCellInfo.colIndex == cellInfo.colIndex && downCellInfo.colSpan == cellInfo.colSpan) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.mergeDown(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"mergecells\"] = {\r\n queryCommandState: function () {\r\n return getUETableBySelected(this) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var ut = getUETableBySelected(this);\r\n if (ut && ut.selectedTds.length) {\r\n var cell = ut.selectedTds[0];\r\n ut.mergeRange();\r\n var rng = this.selection.getRange();\r\n if (domUtils.isEmptyBlock(cell)) {\r\n rng.setStart(cell, 0).collapse(true)\r\n } else {\r\n rng.selectNodeContents(cell)\r\n }\r\n rng.select();\r\n }\r\n\r\n\r\n }\r\n };\r\n UE.commands[\"insertrow\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\" || (cell.tagName == 'TH' && tableItems.tr !== tableItems.table.rows[0])) &&\r\n getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell,\r\n table = tableItems.table,\r\n ut = getUETable(table),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,'');\r\n if (!ut.selectedTds.length) {\r\n ut.insertRow(cellInfo.rowIndex, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) {\r\n ut.insertRow(range.beginRowIndex, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n if (table.getAttribute(\"interlaced\") === \"enabled\")this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n //后插入行\r\n UE.commands[\"insertrownext\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\") && getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell,\r\n table = tableItems.table,\r\n ut = getUETable(table),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,'');\r\n if (!ut.selectedTds.length) {\r\n ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) {\r\n ut.insertRow(range.endRowIndex + 1, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n if (table.getAttribute(\"interlaced\") === \"enabled\")this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n UE.commands[\"deleterow\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this);\r\n return tableItems.cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellsRange = ut.cellsRange,\r\n cellInfo = ut.getCellInfo(cell),\r\n preCell = ut.getVSideCell(cell),\r\n nextCell = ut.getVSideCell(cell, true),\r\n rng = this.selection.getRange();\r\n if (utils.isEmptyObject(cellsRange)) {\r\n ut.deleteRow(cellInfo.rowIndex);\r\n } else {\r\n for (var i = cellsRange.beginRowIndex; i < cellsRange.endRowIndex + 1; i++) {\r\n ut.deleteRow(cellsRange.beginRowIndex);\r\n }\r\n }\r\n var table = ut.table;\r\n if (!table.getElementsByTagName('td').length) {\r\n var nextSibling = table.nextSibling;\r\n domUtils.remove(table);\r\n if (nextSibling) {\r\n rng.setStart(nextSibling, 0).setCursor(false, true);\r\n }\r\n } else {\r\n if (cellInfo.rowSpan == 1 || cellInfo.rowSpan == cellsRange.endRowIndex - cellsRange.beginRowIndex + 1) {\r\n if (nextCell || preCell) rng.selectNodeContents(nextCell || preCell).setCursor(false, true);\r\n } else {\r\n var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex);\r\n if (newCell) rng.selectNodeContents(newCell).setCursor(false, true);\r\n }\r\n }\r\n if (table.getAttribute(\"interlaced\") === \"enabled\")this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n UE.commands[\"insertcol\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\" || (cell.tagName == 'TH' && cell !== tableItems.tr.cells[0])) &&\r\n getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n if (this.queryCommandState(cmd) == -1)return;\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellInfo = ut.getCellInfo(cell);\r\n\r\n //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex);\r\n if (!ut.selectedTds.length) {\r\n ut.insertCol(cellInfo.colIndex, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) {\r\n ut.insertCol(range.beginColIndex, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select(true);\r\n }\r\n };\r\n UE.commands[\"insertcolnext\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1);\r\n if (!ut.selectedTds.length) {\r\n ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) {\r\n ut.insertCol(range.endColIndex + 1, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n\r\n UE.commands[\"deletecol\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this);\r\n return tableItems.cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n range = ut.cellsRange,\r\n cellInfo = ut.getCellInfo(cell),\r\n preCell = ut.getHSideCell(cell),\r\n nextCell = ut.getHSideCell(cell, true);\r\n if (utils.isEmptyObject(range)) {\r\n ut.deleteCol(cellInfo.colIndex);\r\n } else {\r\n for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) {\r\n ut.deleteCol(range.beginColIndex);\r\n }\r\n }\r\n var table = ut.table,\r\n rng = this.selection.getRange();\r\n\r\n if (!table.getElementsByTagName('td').length) {\r\n var nextSibling = table.nextSibling;\r\n domUtils.remove(table);\r\n if (nextSibling) {\r\n rng.setStart(nextSibling, 0).setCursor(false, true);\r\n }\r\n } else {\r\n if (domUtils.inDoc(cell, this.document)) {\r\n rng.setStart(cell, 0).setCursor(false, true);\r\n } else {\r\n if (nextCell && domUtils.inDoc(nextCell, this.document)) {\r\n rng.selectNodeContents(nextCell).setCursor(false, true);\r\n } else {\r\n if (preCell && domUtils.inDoc(preCell, this.document)) {\r\n rng.selectNodeContents(preCell).setCursor(true, true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n UE.commands[\"splittocells\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToCells(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"splittorows\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && cell.rowSpan > 1 ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToRows(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"splittocols\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && cell.colSpan > 1 ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToCols(cell);\r\n rng.moveToBookmark(bk).select();\r\n\r\n }\r\n };\r\n\r\n UE.commands[\"adaptbytext\"] =\r\n UE.commands[\"adaptbywindow\"] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table;\r\n if (table) {\r\n if (cmd == 'adaptbywindow') {\r\n resetTdWidth(table, this);\r\n } else {\r\n var cells = domUtils.getElementsByTagName(table, \"td th\");\r\n utils.each(cells, function (cell) {\r\n cell.removeAttribute(\"width\");\r\n });\r\n table.removeAttribute(\"width\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n //平均分配各列\r\n UE.commands['averagedistributecol'] = {\r\n queryCommandState: function () {\r\n var ut = getUETableBySelected(this);\r\n if (!ut) return -1;\r\n return ut.isFullRow() || ut.isFullCol() ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n function getAverageWidth() {\r\n var tb = ut.table,\r\n averageWidth, sumWidth = 0, colsNum = 0,\r\n tbAttr = getDefaultValue(me, tb);\r\n\r\n if (ut.isFullRow()) {\r\n sumWidth = tb.offsetWidth;\r\n colsNum = ut.colsNum;\r\n } else {\r\n var begin = ut.cellsRange.beginColIndex,\r\n end = ut.cellsRange.endColIndex,\r\n node;\r\n for (var i = begin; i <= end;) {\r\n node = ut.selectedTds[i];\r\n sumWidth += node.offsetWidth;\r\n i += node.colSpan;\r\n colsNum += 1;\r\n }\r\n }\r\n averageWidth = Math.ceil(sumWidth / colsNum) - tbAttr.tdBorder * 2 - tbAttr.tdPadding * 2;\r\n return averageWidth;\r\n }\r\n\r\n function setAverageWidth(averageWidth) {\r\n utils.each(domUtils.getElementsByTagName(ut.table, \"th\"), function (node) {\r\n node.setAttribute(\"width\", \"\");\r\n });\r\n var cells = ut.isFullRow() ? domUtils.getElementsByTagName(ut.table, \"td\") : ut.selectedTds;\r\n\r\n utils.each(cells, function (node) {\r\n if (node.colSpan == 1) {\r\n node.setAttribute(\"width\", averageWidth);\r\n }\r\n });\r\n }\r\n\r\n if (ut && ut.selectedTds.length) {\r\n setAverageWidth(getAverageWidth());\r\n }\r\n }\r\n };\r\n //平均分配各行\r\n UE.commands['averagedistributerow'] = {\r\n queryCommandState: function () {\r\n var ut = getUETableBySelected(this);\r\n if (!ut) return -1;\r\n if (ut.selectedTds && /th/ig.test(ut.selectedTds[0].tagName)) return -1;\r\n return ut.isFullRow() || ut.isFullCol() ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n function getAverageHeight() {\r\n var averageHeight, rowNum, sumHeight = 0,\r\n tb = ut.table,\r\n tbAttr = getDefaultValue(me, tb),\r\n tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName('td')[0], \"padding-top\"));\r\n\r\n if (ut.isFullCol()) {\r\n var captionArr = domUtils.getElementsByTagName(tb, \"caption\"),\r\n thArr = domUtils.getElementsByTagName(tb, \"th\"),\r\n captionHeight, thHeight;\r\n\r\n if (captionArr.length > 0) {\r\n captionHeight = captionArr[0].offsetHeight;\r\n }\r\n if (thArr.length > 0) {\r\n thHeight = thArr[0].offsetHeight;\r\n }\r\n\r\n sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0);\r\n rowNum = thArr.length == 0 ? ut.rowsNum : (ut.rowsNum - 1);\r\n } else {\r\n var begin = ut.cellsRange.beginRowIndex,\r\n end = ut.cellsRange.endRowIndex,\r\n count = 0,\r\n trs = domUtils.getElementsByTagName(tb, \"tr\");\r\n for (var i = begin; i <= end; i++) {\r\n sumHeight += trs[i].offsetHeight;\r\n count += 1;\r\n }\r\n rowNum = count;\r\n }\r\n //ie8下是混杂模式\r\n if (browser.ie && browser.version < 9) {\r\n averageHeight = Math.ceil(sumHeight / rowNum);\r\n } else {\r\n averageHeight = Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2;\r\n }\r\n return averageHeight;\r\n }\r\n\r\n function setAverageHeight(averageHeight) {\r\n var cells = ut.isFullCol() ? domUtils.getElementsByTagName(ut.table, \"td\") : ut.selectedTds;\r\n utils.each(cells, function (node) {\r\n if (node.rowSpan == 1) {\r\n node.setAttribute(\"height\", averageHeight);\r\n }\r\n });\r\n }\r\n\r\n if (ut && ut.selectedTds.length) {\r\n setAverageHeight(getAverageHeight());\r\n }\r\n }\r\n };\r\n\r\n //单元格对齐方式\r\n UE.commands['cellalignment'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, data) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n if (!ut) {\r\n var start = me.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\", \"caption\"], true);\r\n if (!/caption/ig.test(cell.tagName)) {\r\n domUtils.setAttributes(cell, data);\r\n } else {\r\n cell.style.textAlign = data.align;\r\n cell.style.verticalAlign = data.vAlign;\r\n }\r\n me.selection.getRange().setCursor(true);\r\n } else {\r\n utils.each(ut.selectedTds, function (cell) {\r\n domUtils.setAttributes(cell, data);\r\n });\r\n }\r\n },\r\n /**\r\n * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态\r\n * @see UE.UETable.getTableCellAlignState\r\n */\r\n queryCommandValue: function (cmd) {\r\n\r\n var activeMenuCell = getTableItemsByRange( this).cell;\r\n\r\n if( !activeMenuCell ) {\r\n activeMenuCell = getSelectedArr(this)[0];\r\n }\r\n\r\n if (!activeMenuCell) {\r\n\r\n return null;\r\n\r\n } else {\r\n\r\n //获取同时选中的其他单元格\r\n var cells = UE.UETable.getUETable(activeMenuCell).selectedTds;\r\n\r\n !cells.length && ( cells = activeMenuCell );\r\n\r\n return UE.UETable.getTableCellAlignState(cells);\r\n\r\n }\r\n\r\n }\r\n };\r\n //表格对齐方式\r\n UE.commands['tablealignment'] = {\r\n queryCommandState: function () {\r\n if (browser.ie && browser.version < 8) {\r\n return -1;\r\n }\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, value) {\r\n var me = this,\r\n start = me.selection.getStart(),\r\n table = start && domUtils.findParentByTagName(start, [\"table\"], true);\r\n\r\n if (table) {\r\n table.setAttribute(\"align\",value);\r\n }\r\n }\r\n };\r\n\r\n //表格属性\r\n UE.commands['edittable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, color) {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n var arr = domUtils.getElementsByTagName(table, \"td\").concat(\r\n domUtils.getElementsByTagName(table, \"th\"),\r\n domUtils.getElementsByTagName(table, \"caption\")\r\n );\r\n utils.each(arr, function (node) {\r\n node.style.borderColor = color;\r\n });\r\n }\r\n }\r\n };\r\n //单元格属性\r\n UE.commands['edittd'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, bkColor) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n if (!ut) {\r\n var start = me.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\", \"caption\"], true);\r\n if (cell) {\r\n cell.style.backgroundColor = bkColor;\r\n }\r\n } else {\r\n utils.each(ut.selectedTds, function (cell) {\r\n cell.style.backgroundColor = bkColor;\r\n });\r\n }\r\n }\r\n };\r\n\r\n UE.commands[\"settablebackground\"] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length > 1 ? 0 : -1;\r\n },\r\n execCommand: function (cmd, value) {\r\n var cells, ut;\r\n cells = getSelectedArr(this);\r\n ut = getUETable(cells[0]);\r\n ut.setBackground(cells, value);\r\n }\r\n };\r\n\r\n UE.commands[\"cleartablebackground\"] = {\r\n queryCommandState: function () {\r\n var cells = getSelectedArr(this);\r\n if (!cells.length)return -1;\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n if (cell.style.backgroundColor !== \"\") return 0;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var cells = getSelectedArr(this),\r\n ut = getUETable(cells[0]);\r\n ut.removeBackground(cells);\r\n }\r\n };\r\n\r\n UE.commands[\"interlacetable\"] = UE.commands[\"uninterlacetable\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (!table) return -1;\r\n var interlaced = table.getAttribute(\"interlaced\");\r\n if (cmd == \"interlacetable\") {\r\n //TODO 待定\r\n //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果\r\n return (interlaced === \"enabled\") ? -1 : 0;\r\n } else {\r\n return (!interlaced || interlaced === \"disabled\") ? -1 : 0;\r\n }\r\n },\r\n execCommand: function (cmd, classList) {\r\n var table = getTableItemsByRange(this).table;\r\n if (cmd == \"interlacetable\") {\r\n table.setAttribute(\"interlaced\", \"enabled\");\r\n this.fireEvent(\"interlacetable\", table, classList);\r\n } else {\r\n table.setAttribute(\"interlaced\", \"disabled\");\r\n this.fireEvent(\"uninterlacetable\", table);\r\n }\r\n }\r\n };\r\n UE.commands[\"setbordervisible\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (!table) return -1;\r\n return 0;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n utils.each(domUtils.getElementsByTagName(table,'td'),function(td){\r\n td.style.borderWidth = '1px';\r\n td.style.borderStyle = 'solid';\r\n })\r\n }\r\n };\r\n function resetTdWidth(table, editor) {\r\n var tds = domUtils.getElementsByTagName(table,'td th');\r\n utils.each(tds, function (td) {\r\n td.removeAttribute(\"width\");\r\n });\r\n table.setAttribute('width', getTableWidth(editor, true, getDefaultValue(editor, table)));\r\n var tdsWidths = [];\r\n setTimeout(function () {\r\n utils.each(tds, function (td) {\r\n (td.colSpan == 1) && tdsWidths.push(td.offsetWidth)\r\n })\r\n utils.each(tds, function (td,i) {\r\n (td.colSpan == 1) && td.setAttribute(\"width\", tdsWidths[i] + \"\");\r\n })\r\n }, 0);\r\n }\r\n\r\n function getTableWidth(editor, needIEHack, defaultValue) {\r\n var body = editor.body;\r\n return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0);\r\n }\r\n\r\n function getSelectedArr(editor) {\r\n var cell = getTableItemsByRange(editor).cell;\r\n if (cell) {\r\n var ut = getUETable(cell);\r\n return ut.selectedTds.length ? ut.selectedTds : [cell];\r\n } else {\r\n return [];\r\n }\r\n }\r\n})();\r\n\r\n\r\n// plugins/table.action.js\r\n/**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 12-10-12\r\n * Time: 上午10:05\r\n * To change this template use File | Settings | File Templates.\r\n */\r\nUE.plugins['table'] = function () {\r\n var me = this,\r\n tabTimer = null,\r\n //拖动计时器\r\n tableDragTimer = null,\r\n //双击计时器\r\n tableResizeTimer = null,\r\n //单元格最小宽度\r\n cellMinWidth = 5,\r\n isInResizeBuffer = false,\r\n //单元格边框大小\r\n cellBorderWidth = 5,\r\n //鼠标偏移距离\r\n offsetOfTableCell = 10,\r\n //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次\r\n singleClickState = 0,\r\n userActionStatus = null,\r\n //双击允许的时间范围\r\n dblclickTime = 360,\r\n UT = UE.UETable,\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n },\r\n getUETableBySelected = function (editor) {\r\n return UT.getUETableBySelected(editor);\r\n },\r\n getDefaultValue = function (editor, table) {\r\n return UT.getDefaultValue(editor, table);\r\n },\r\n removeSelectedClass = function (cells) {\r\n return UT.removeSelectedClass(cells);\r\n };\r\n\r\n function showError(e) {\r\n// throw e;\r\n }\r\n me.ready(function(){\r\n var me = this;\r\n var orgGetText = me.selection.getText;\r\n me.selection.getText = function(){\r\n var table = getUETableBySelected(me);\r\n if(table){\r\n var str = '';\r\n utils.each(table.selectedTds,function(td){\r\n str += td[browser.ie?'innerText':'textContent'];\r\n })\r\n return str;\r\n }else{\r\n return orgGetText.call(me.selection)\r\n }\r\n\r\n }\r\n })\r\n\r\n //处理拖动及框选相关方法\r\n var startTd = null, //鼠标按下时的锚点td\r\n currentTd = null, //当前鼠标经过时的td\r\n onDrag = \"\", //指示当前拖动状态,其值可为\"\",\"h\",\"v\" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断\r\n onBorder = false, //检测鼠标按下时是否处在单元格边缘位置\r\n dragButton = null,\r\n dragOver = false,\r\n dragLine = null, //模拟的拖动线\r\n dragTd = null; //发生拖动的目标td\r\n\r\n var mousedown = false,\r\n //todo 判断混乱模式\r\n needIEHack = true;\r\n\r\n me.setOpt({\r\n 'maxColNum':20,\r\n 'maxRowNum':100,\r\n 'defaultCols':5,\r\n 'defaultRows':5,\r\n 'tdvalign':'top',\r\n 'cursorpath':me.options.UEDITOR_HOME_URL + \"themes/default/images/cursor_\",\r\n 'tableDragable':false,\r\n 'classList':[\"ue-table-interlace-color-single\",\"ue-table-interlace-color-double\"]\r\n });\r\n me.getUETable = getUETable;\r\n var commands = {\r\n 'deletetable':1,\r\n 'inserttable':1,\r\n 'cellvalign':1,\r\n 'insertcaption':1,\r\n 'deletecaption':1,\r\n 'inserttitle':1,\r\n 'deletetitle':1,\r\n \"mergeright\":1,\r\n \"mergedown\":1,\r\n \"mergecells\":1,\r\n \"insertrow\":1,\r\n \"insertrownext\":1,\r\n \"deleterow\":1,\r\n \"insertcol\":1,\r\n \"insertcolnext\":1,\r\n \"deletecol\":1,\r\n \"splittocells\":1,\r\n \"splittorows\":1,\r\n \"splittocols\":1,\r\n \"adaptbytext\":1,\r\n \"adaptbywindow\":1,\r\n \"adaptbycustomer\":1,\r\n \"insertparagraph\":1,\r\n \"insertparagraphbeforetable\":1,\r\n \"averagedistributecol\":1,\r\n \"averagedistributerow\":1\r\n };\r\n me.ready(function () {\r\n utils.cssRule('table',\r\n //选中的td上的样式\r\n '.selectTdClass{background-color:#edf5fa !important}' +\r\n 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' +\r\n //插入的表格的默认样式\r\n 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' +\r\n 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' +\r\n 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' +\r\n 'th{border-top:1px solid #BBB;background-color:#F7F7F7;}' +\r\n 'table tr.firstRow th{border-top-width:2px;}' +\r\n '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' +\r\n 'td p{margin:0;padding:0;}', me.document);\r\n\r\n var tableCopyList, isFullCol, isFullRow;\r\n //注册del/backspace事件\r\n me.addListener('keydown', function (cmd, evt) {\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 8) {\r\n\r\n var ut = getUETableBySelected(me);\r\n if (ut && ut.selectedTds.length) {\r\n\r\n if (ut.isFullCol()) {\r\n me.execCommand('deletecol')\r\n } else if (ut.isFullRow()) {\r\n me.execCommand('deleterow')\r\n } else {\r\n me.fireEvent('delcells');\r\n }\r\n domUtils.preventDefault(evt);\r\n }\r\n\r\n var caption = domUtils.findParentByTagName(me.selection.getStart(), 'caption', true),\r\n range = me.selection.getRange();\r\n if (range.collapsed && caption && isEmptyBlock(caption)) {\r\n me.fireEvent('saveScene');\r\n var table = caption.parentNode;\r\n domUtils.remove(caption);\r\n if (table) {\r\n range.setStart(table.rows[0].cells[0], 0).setCursor(false, true);\r\n }\r\n me.fireEvent('saveScene');\r\n }\r\n\r\n }\r\n\r\n if (keyCode == 46) {\r\n\r\n ut = getUETableBySelected(me);\r\n if (ut) {\r\n me.fireEvent('saveScene');\r\n for (var i = 0, ci; ci = ut.selectedTds[i++];) {\r\n domUtils.fillNode(me.document, ci)\r\n }\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n\r\n }\r\n\r\n }\r\n if (keyCode == 13) {\r\n\r\n var rng = me.selection.getRange(),\r\n caption = domUtils.findParentByTagName(rng.startContainer, 'caption', true);\r\n if (caption) {\r\n var table = domUtils.findParentByTagName(caption, 'table');\r\n if (!rng.collapsed) {\r\n\r\n rng.deleteContents();\r\n me.fireEvent('saveScene');\r\n } else {\r\n if (caption) {\r\n rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true);\r\n }\r\n }\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n if (rng.collapsed) {\r\n var table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n var cell = table.rows[0].cells[0],\r\n start = domUtils.findParentByTagName(me.selection.getStart(), ['td', 'th'], true),\r\n preNode = table.previousSibling;\r\n if (cell === start && (!preNode || preNode.nodeType == 1 && preNode.tagName == 'TABLE' ) && domUtils.isStartInblock(rng)) {\r\n var first = domUtils.findParent(me.selection.getStart(), function(n){return domUtils.isBlockElm(n)}, true);\r\n if(first && ( /t(h|d)/i.test(first.tagName) || first === start.firstChild )){\r\n me.execCommand('insertparagraphbeforetable');\r\n domUtils.preventDefault(evt);\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == '67') {\r\n tableCopyList = null;\r\n var ut = getUETableBySelected(me);\r\n if (ut) {\r\n var tds = ut.selectedTds;\r\n isFullCol = ut.isFullCol();\r\n isFullRow = ut.isFullRow();\r\n tableCopyList = [\r\n [ut.cloneCell(tds[0],null,true)]\r\n ];\r\n for (var i = 1, ci; ci = tds[i]; i++) {\r\n if (ci.parentNode !== tds[i - 1].parentNode) {\r\n tableCopyList.push([ut.cloneCell(ci,null,true)]);\r\n } else {\r\n tableCopyList[tableCopyList.length - 1].push(ut.cloneCell(ci,null,true));\r\n }\r\n\r\n }\r\n }\r\n }\r\n });\r\n me.addListener(\"tablehasdeleted\",function(){\r\n toggleDraggableState(this, false, \"\", null);\r\n if (dragButton)domUtils.remove(dragButton);\r\n });\r\n\r\n me.addListener('beforepaste', function (cmd, html) {\r\n var me = this;\r\n var rng = me.selection.getRange();\r\n if (domUtils.findParentByTagName(rng.startContainer, 'caption', true)) {\r\n var div = me.document.createElement(\"div\");\r\n div.innerHTML = html.html;\r\n //trace:3729\r\n html.html = div[browser.ie9below ? 'innerText' : 'textContent'];\r\n return;\r\n }\r\n var table = getUETableBySelected(me);\r\n if (tableCopyList) {\r\n me.fireEvent('saveScene');\r\n var rng = me.selection.getRange();\r\n var td = domUtils.findParentByTagName(rng.startContainer, ['td', 'th'], true), tmpNode, preNode;\r\n if (td) {\r\n var ut = getUETable(td);\r\n if (isFullRow) {\r\n var rowIndex = ut.getCellInfo(td).rowIndex;\r\n if (td.tagName == 'TH') {\r\n rowIndex++;\r\n }\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n var tr = ut.insertRow(rowIndex++, \"td\");\r\n for (var j = 0, cj; cj = ci[j]; j++) {\r\n var cell = tr.cells[j];\r\n if (!cell) {\r\n cell = tr.insertCell(j)\r\n }\r\n cell.innerHTML = cj.innerHTML;\r\n cj.getAttribute('width') && cell.setAttribute('width', cj.getAttribute('width'));\r\n cj.getAttribute('vAlign') && cell.setAttribute('vAlign', cj.getAttribute('vAlign'));\r\n cj.getAttribute('align') && cell.setAttribute('align', cj.getAttribute('align'));\r\n cj.style.cssText && (cell.style.cssText = cj.style.cssText)\r\n }\r\n for (var j = 0, cj; cj = tr.cells[j]; j++) {\r\n if (!ci[j])\r\n break;\r\n cj.innerHTML = ci[j].innerHTML;\r\n ci[j].getAttribute('width') && cj.setAttribute('width', ci[j].getAttribute('width'));\r\n ci[j].getAttribute('vAlign') && cj.setAttribute('vAlign', ci[j].getAttribute('vAlign'));\r\n ci[j].getAttribute('align') && cj.setAttribute('align', ci[j].getAttribute('align'));\r\n ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText)\r\n }\r\n }\r\n } else {\r\n if (isFullCol) {\r\n cellInfo = ut.getCellInfo(td);\r\n var maxColNum = 0;\r\n for (var j = 0, ci = tableCopyList[0], cj; cj = ci[j++];) {\r\n maxColNum += cj.colSpan || 1;\r\n }\r\n me.__hasEnterExecCommand = true;\r\n for (i = 0; i < maxColNum; i++) {\r\n me.execCommand('insertcol');\r\n }\r\n me.__hasEnterExecCommand = false;\r\n td = ut.table.rows[0].cells[cellInfo.cellIndex];\r\n if (td.tagName == 'TH') {\r\n td = ut.table.rows[1].cells[cellInfo.cellIndex];\r\n }\r\n }\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n tmpNode = td;\r\n for (var j = 0, cj; cj = ci[j++];) {\r\n if (td) {\r\n td.innerHTML = cj.innerHTML;\r\n //todo 定制处理\r\n cj.getAttribute('width') && td.setAttribute('width', cj.getAttribute('width'));\r\n cj.getAttribute('vAlign') && td.setAttribute('vAlign', cj.getAttribute('vAlign'));\r\n cj.getAttribute('align') && td.setAttribute('align', cj.getAttribute('align'));\r\n cj.style.cssText && (td.style.cssText = cj.style.cssText);\r\n preNode = td;\r\n td = td.nextSibling;\r\n } else {\r\n var cloneTd = cj.cloneNode(true);\r\n domUtils.removeAttributes(cloneTd, ['class', 'rowSpan', 'colSpan']);\r\n\r\n preNode.parentNode.appendChild(cloneTd)\r\n }\r\n }\r\n td = ut.getNextCell(tmpNode, true, true);\r\n if (!tableCopyList[i])\r\n break;\r\n if (!td) {\r\n var cellInfo = ut.getCellInfo(tmpNode);\r\n ut.table.insertRow(ut.table.rows.length);\r\n ut.update();\r\n td = ut.getVSideCell(tmpNode, true);\r\n }\r\n }\r\n }\r\n ut.update();\r\n } else {\r\n table = me.document.createElement('table');\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n var tr = table.insertRow(table.rows.length);\r\n for (var j = 0, cj; cj = ci[j++];) {\r\n cloneTd = UT.cloneCell(cj,null,true);\r\n domUtils.removeAttributes(cloneTd, ['class']);\r\n tr.appendChild(cloneTd)\r\n }\r\n if (j == 2 && cloneTd.rowSpan > 1) {\r\n cloneTd.rowSpan = 1;\r\n }\r\n }\r\n\r\n var defaultValue = getDefaultValue(me),\r\n width = me.body.offsetWidth -\r\n (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0);\r\n me.execCommand('insertHTML', '<table ' +\r\n ( isFullCol && isFullRow ? 'width=\"' + width + '\"' : '') +\r\n '>' + table.innerHTML.replace(/>\\s*</g, '><').replace(/\\bth\\b/gi, \"td\") + '</table>')\r\n }\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n html.html = '';\r\n return true;\r\n } else {\r\n var div = me.document.createElement(\"div\"), tables;\r\n div.innerHTML = html.html;\r\n tables = div.getElementsByTagName(\"table\");\r\n if (domUtils.findParentByTagName(me.selection.getStart(), 'table')) {\r\n utils.each(tables, function (t) {\r\n domUtils.remove(t)\r\n });\r\n if (domUtils.findParentByTagName(me.selection.getStart(), 'caption', true)) {\r\n div.innerHTML = div[browser.ie ? 'innerText' : 'textContent'];\r\n }\r\n } else {\r\n utils.each(tables, function (table) {\r\n removeStyleSize(table, true);\r\n domUtils.removeAttributes(table, ['style', 'border']);\r\n utils.each(domUtils.getElementsByTagName(table, \"td\"), function (td) {\r\n if (isEmptyBlock(td)) {\r\n domUtils.fillNode(me.document, td);\r\n }\r\n removeStyleSize(td, true);\r\n// domUtils.removeAttributes(td, ['style'])\r\n });\r\n });\r\n }\r\n html.html = div.innerHTML;\r\n }\r\n });\r\n\r\n me.addListener('afterpaste', function () {\r\n utils.each(domUtils.getElementsByTagName(me.body, \"table\"), function (table) {\r\n if (table.offsetWidth > me.body.offsetWidth) {\r\n var defaultValue = getDefaultValue(me, table);\r\n table.style.width = me.body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0) + 'px'\r\n }\r\n })\r\n });\r\n me.addListener('blur', function () {\r\n tableCopyList = null;\r\n });\r\n var timer;\r\n me.addListener('keydown', function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n var rng = me.selection.getRange(),\r\n cell = domUtils.findParentByTagName(rng.startContainer, ['th', 'td'], true);\r\n if (cell) {\r\n var table = cell.parentNode.parentNode.parentNode;\r\n if (table.offsetWidth > table.getAttribute(\"width\")) {\r\n cell.style.wordBreak = \"break-all\";\r\n }\r\n }\r\n\r\n }, 100);\r\n });\r\n me.addListener(\"selectionchange\", function () {\r\n toggleDraggableState(me, false, \"\", null);\r\n });\r\n\r\n\r\n //内容变化时触发索引更新\r\n //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新\r\n me.addListener(\"contentchange\", function () {\r\n var me = this;\r\n //尽可能排除一些不需要更新的状况\r\n hideDragLine(me);\r\n if (getUETableBySelected(me))return;\r\n var rng = me.selection.getRange();\r\n var start = rng.startContainer;\r\n start = domUtils.findParentByTagName(start, ['td', 'th'], true);\r\n utils.each(domUtils.getElementsByTagName(me.document, 'table'), function (table) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n table.ueTable = new UT(table);\r\n //trace:3742\r\n// utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) {\r\n//\r\n// if (domUtils.isEmptyBlock(td) && td !== start) {\r\n// domUtils.fillNode(me.document, td);\r\n// if (browser.ie && browser.version == 6) {\r\n// td.innerHTML = ' '\r\n// }\r\n// }\r\n// });\r\n// utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) {\r\n// if (domUtils.isEmptyBlock(th) && th !== start) {\r\n// domUtils.fillNode(me.document, th);\r\n// if (browser.ie && browser.version == 6) {\r\n// th.innerHTML = ' '\r\n// }\r\n// }\r\n// });\r\n table.onmouseover = function () {\r\n me.fireEvent('tablemouseover', table);\r\n };\r\n table.onmousemove = function () {\r\n me.fireEvent('tablemousemove', table);\r\n me.options.tableDragable && toggleDragButton(true, this, me);\r\n utils.defer(function(){\r\n me.fireEvent('contentchange',50)\r\n },true)\r\n };\r\n table.onmouseout = function () {\r\n me.fireEvent('tablemouseout', table);\r\n toggleDraggableState(me, false, \"\", null);\r\n hideDragLine(me);\r\n };\r\n table.onclick = function (evt) {\r\n evt = me.window.event || evt;\r\n var target = getParentTdOrTh(evt.target || evt.srcElement);\r\n if (!target)return;\r\n var ut = getUETable(target),\r\n table = ut.table,\r\n cellInfo = ut.getCellInfo(target),\r\n cellsRange,\r\n rng = me.selection.getRange();\r\n// if (\"topLeft\" == inPosition(table, mouseCoords(evt))) {\r\n// cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell());\r\n// ut.setSelected(cellsRange);\r\n// return;\r\n// }\r\n// if (\"bottomRight\" == inPosition(table, mouseCoords(evt))) {\r\n//\r\n// return;\r\n// }\r\n if (inTableSide(table, target, evt, true)) {\r\n var endTdCol = ut.getCell(ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex);\r\n if (evt.shiftKey && ut.selectedTds.length) {\r\n if (ut.selectedTds[0] !== endTdCol) {\r\n cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdCol).select();\r\n }\r\n } else {\r\n if (target !== endTdCol) {\r\n cellsRange = ut.getCellsRange(target, endTdCol);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdCol).select();\r\n }\r\n }\r\n return;\r\n }\r\n if (inTableSide(table, target, evt)) {\r\n var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex);\r\n if (evt.shiftKey && ut.selectedTds.length) {\r\n if (ut.selectedTds[0] !== endTdRow) {\r\n cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdRow).select();\r\n }\r\n } else {\r\n if (target !== endTdRow) {\r\n cellsRange = ut.getCellsRange(target, endTdRow);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdRow).select();\r\n }\r\n }\r\n }\r\n };\r\n });\r\n\r\n switchBorderColor(me, true);\r\n });\r\n\r\n domUtils.on(me.document, \"mousemove\", mouseMoveEvent);\r\n\r\n domUtils.on(me.document, \"mouseout\", function (evt) {\r\n var target = evt.target || evt.srcElement;\r\n if (target.tagName == \"TABLE\") {\r\n toggleDraggableState(me, false, \"\", null);\r\n }\r\n });\r\n /**\r\n * 表格隔行变色\r\n */\r\n me.addListener(\"interlacetable\",function(type,table,classList){\r\n if(!table) return;\r\n var me = this,\r\n rows = table.rows,\r\n len = rows.length,\r\n getClass = function(list,index,repeat){\r\n return list[index] ? list[index] : repeat ? list[index % list.length]: \"\";\r\n };\r\n for(var i = 0;i<len;i++){\r\n rows[i].className = getClass( classList|| me.options.classList,i,true);\r\n }\r\n });\r\n me.addListener(\"uninterlacetable\",function(type,table){\r\n if(!table) return;\r\n var me = this,\r\n rows = table.rows,\r\n classList = me.options.classList,\r\n len = rows.length;\r\n for(var i = 0;i<len;i++){\r\n domUtils.removeClasses( rows[i], classList );\r\n }\r\n });\r\n\r\n me.addListener(\"mousedown\", mouseDownEvent);\r\n me.addListener(\"mouseup\", mouseUpEvent);\r\n //拖动的时候触发mouseup\r\n domUtils.on( me.body, 'dragstart', function( evt ){\r\n mouseUpEvent.call( me, 'dragstart', evt );\r\n });\r\n me.addOutputRule(function(root){\r\n utils.each(root.getNodesByTagName('div'),function(n){\r\n if (n.getAttr('id') == 'ue_tableDragLine') {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n });\r\n\r\n var currentRowIndex = 0;\r\n me.addListener(\"mousedown\", function () {\r\n currentRowIndex = 0;\r\n });\r\n me.addListener('tabkeydown', function () {\r\n var range = this.selection.getRange(),\r\n common = range.getCommonAncestor(true, true),\r\n table = domUtils.findParentByTagName(common, 'table');\r\n if (table) {\r\n if (domUtils.findParentByTagName(common, 'caption', true)) {\r\n var cell = domUtils.getElementsByTagName(table, 'th td');\r\n if (cell && cell.length) {\r\n range.setStart(cell[0], 0).setCursor(false, true)\r\n }\r\n } else {\r\n var cell = domUtils.findParentByTagName(common, ['td', 'th'], true),\r\n ua = getUETable(cell);\r\n currentRowIndex = cell.rowSpan > 1 ? currentRowIndex : ua.getCellInfo(cell).rowIndex;\r\n var nextCell = ua.getTabNextCell(cell, currentRowIndex);\r\n if (nextCell) {\r\n if (isEmptyBlock(nextCell)) {\r\n range.setStart(nextCell, 0).setCursor(false, true)\r\n } else {\r\n range.selectNodeContents(nextCell).select()\r\n }\r\n } else {\r\n me.fireEvent('saveScene');\r\n me.__hasEnterExecCommand = true;\r\n this.execCommand('insertrownext');\r\n me.__hasEnterExecCommand = false;\r\n range = this.selection.getRange();\r\n range.setStart(table.rows[table.rows.length - 1].cells[0], 0).setCursor();\r\n me.fireEvent('saveScene');\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n });\r\n browser.ie && me.addListener('selectionchange', function () {\r\n toggleDraggableState(this, false, \"\", null);\r\n });\r\n me.addListener(\"keydown\", function (type, evt) {\r\n var me = this;\r\n //处理在表格的最后一个输入tab产生新的表格\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 8 || keyCode == 46) {\r\n return;\r\n }\r\n var notCtrlKey = !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey;\r\n notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, \"td\"));\r\n var ut = getUETableBySelected(me);\r\n if (!ut) return;\r\n notCtrlKey && ut.clearSelected();\r\n });\r\n\r\n me.addListener(\"beforegetcontent\", function () {\r\n switchBorderColor(this, false);\r\n browser.ie && utils.each(this.document.getElementsByTagName('caption'), function (ci) {\r\n if (domUtils.isEmptyNode(ci)) {\r\n ci.innerHTML = ' '\r\n }\r\n });\r\n });\r\n me.addListener(\"aftergetcontent\", function () {\r\n switchBorderColor(this, true);\r\n });\r\n me.addListener(\"getAllHtml\", function () {\r\n removeSelectedClass(me.document.getElementsByTagName(\"td\"));\r\n });\r\n //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况\r\n me.addListener(\"fullscreenchanged\", function (type, fullscreen) {\r\n if (!fullscreen) {\r\n var ratio = this.body.offsetWidth / document.body.offsetWidth,\r\n tables = domUtils.getElementsByTagName(this.body, \"table\");\r\n utils.each(tables, function (table) {\r\n if (table.offsetWidth < me.body.offsetWidth) return false;\r\n var tds = domUtils.getElementsByTagName(table, \"td\"),\r\n backWidths = [];\r\n utils.each(tds, function (td) {\r\n backWidths.push(td.offsetWidth);\r\n });\r\n for (var i = 0, td; td = tds[i]; i++) {\r\n td.setAttribute(\"width\", Math.floor(backWidths[i] * ratio));\r\n }\r\n table.setAttribute(\"width\", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me))))\r\n });\r\n }\r\n });\r\n\r\n //重写execCommand命令,用于处理框选时的处理\r\n var oldExecCommand = me.execCommand;\r\n me.execCommand = function (cmd, datatat) {\r\n\r\n var me = this,\r\n args = arguments;\r\n\r\n cmd = cmd.toLowerCase();\r\n var ut = getUETableBySelected(me), tds,\r\n range = new dom.Range(me.document),\r\n cmdFun = me.commands[cmd] || UE.commands[cmd],\r\n result;\r\n if (!cmdFun) return;\r\n if (ut && !commands[cmd] && !cmdFun.notNeedUndo && !me.__hasEnterExecCommand) {\r\n me.__hasEnterExecCommand = true;\r\n me.fireEvent(\"beforeexeccommand\", cmd);\r\n tds = ut.selectedTds;\r\n var lastState = -2, lastValue = -2, value, state;\r\n for (var i = 0, td; td = tds[i]; i++) {\r\n if (isEmptyBlock(td)) {\r\n range.setStart(td, 0).setCursor(false, true)\r\n } else {\r\n range.selectNode(td).select(true);\r\n }\r\n state = me.queryCommandState(cmd);\r\n value = me.queryCommandValue(cmd);\r\n if (state != -1) {\r\n if (lastState !== state || lastValue !== value) {\r\n me._ignoreContentChange = true;\r\n result = oldExecCommand.apply(me, arguments);\r\n me._ignoreContentChange = false;\r\n\r\n }\r\n lastState = me.queryCommandState(cmd);\r\n lastValue = me.queryCommandValue(cmd);\r\n if (domUtils.isEmptyBlock(td)) {\r\n domUtils.fillNode(me.document, td)\r\n }\r\n }\r\n }\r\n range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true);\r\n me.fireEvent('contentchange');\r\n me.fireEvent(\"afterexeccommand\", cmd);\r\n me.__hasEnterExecCommand = false;\r\n me._selectionChange();\r\n } else {\r\n result = oldExecCommand.apply(me, arguments);\r\n }\r\n return result;\r\n };\r\n\r\n\r\n });\r\n /**\r\n * 删除obj的宽高style,改成属性宽高\r\n * @param obj\r\n * @param replaceToProperty\r\n */\r\n function removeStyleSize(obj, replaceToProperty) {\r\n removeStyle(obj, \"width\", true);\r\n removeStyle(obj, \"height\", true);\r\n }\r\n\r\n function removeStyle(obj, styleName, replaceToProperty) {\r\n if (obj.style[styleName]) {\r\n replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10));\r\n obj.style[styleName] = \"\";\r\n }\r\n }\r\n\r\n function getParentTdOrTh(ele) {\r\n if (ele.tagName == \"TD\" || ele.tagName == \"TH\") return ele;\r\n var td;\r\n if (td = domUtils.findParentByTagName(ele, \"td\", true) || domUtils.findParentByTagName(ele, \"th\", true)) return td;\r\n return null;\r\n }\r\n\r\n function isEmptyBlock(node) {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\\s*$/, '').replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var n in dtd.$isNotEmpty) {\r\n if (node.getElementsByTagName(n).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n }\r\n\r\n\r\n function mouseCoords(evt) {\r\n if (evt.pageX || evt.pageY) {\r\n return { x:evt.pageX, y:evt.pageY };\r\n }\r\n return {\r\n x:evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft,\r\n y:evt.clientY + me.document.body.scrollTop - me.document.body.clientTop\r\n };\r\n }\r\n\r\n function mouseMoveEvent(evt) {\r\n\r\n if( isEditorDisabled() ) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n //普通状态下鼠标移动\r\n var target = getParentTdOrTh(evt.target || evt.srcElement),\r\n pos;\r\n //区分用户的行为是拖动还是双击\r\n if( isInResizeBuffer ) {\r\n\r\n me.body.style.webkitUserSelect = 'none';\r\n\r\n if( Math.abs( userActionStatus.x - evt.clientX ) > offsetOfTableCell || Math.abs( userActionStatus.y - evt.clientY ) > offsetOfTableCell ) {\r\n clearTableDragTimer();\r\n isInResizeBuffer = false;\r\n singleClickState = 0;\r\n //drag action\r\n tableBorderDrag(evt);\r\n }\r\n }\r\n\r\n //修改单元格大小时的鼠标移动\r\n if (onDrag && dragTd) {\r\n singleClickState = 0;\r\n me.body.style.webkitUserSelect = 'none';\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n pos = mouseCoords(evt);\r\n toggleDraggableState(me, true, onDrag, pos, target);\r\n if (onDrag == \"h\") {\r\n dragLine.style.left = getPermissionX(dragTd, evt) + \"px\";\r\n } else if (onDrag == \"v\") {\r\n dragLine.style.top = getPermissionY(dragTd, evt) + \"px\";\r\n }\r\n return;\r\n }\r\n //当鼠标处于table上时,修改移动过程中的光标状态\r\n if (target) {\r\n //针对使用table作为容器的组件不触发拖拽效果\r\n if (me.fireEvent('excludetable', target) === true)\r\n return;\r\n pos = mouseCoords(evt);\r\n var state = getRelation(target, pos),\r\n table = domUtils.findParentByTagName(target, \"table\", true);\r\n\r\n if (inTableSide(table, target, evt, true)) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n me.body.style.cursor = \"url(\" + me.options.cursorpath + \"h.png),pointer\";\r\n } else if (inTableSide(table, target, evt)) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n me.body.style.cursor = \"url(\" + me.options.cursorpath + \"v.png),pointer\";\r\n } else {\r\n me.body.style.cursor = \"text\";\r\n var curCell = target;\r\n if (/\\d/.test(state)) {\r\n state = state.replace(/\\d/, '');\r\n target = getUETable(target).getPreviewCell(target, state == \"v\");\r\n }\r\n //位于第一行的顶部或者第一列的左边时不可拖动\r\n toggleDraggableState(me, target ? !!state : false, target ? state : '', pos, target);\r\n\r\n }\r\n } else {\r\n toggleDragButton(false, table, me);\r\n }\r\n\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n var dragButtonTimer;\r\n\r\n function toggleDragButton(show, table, editor) {\r\n if (!show) {\r\n if (dragOver)return;\r\n dragButtonTimer = setTimeout(function () {\r\n !dragOver && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton);\r\n }, 2000);\r\n } else {\r\n createDragButton(table, editor);\r\n }\r\n }\r\n\r\n function createDragButton(table, editor) {\r\n var pos = domUtils.getXY(table),\r\n doc = table.ownerDocument;\r\n if (dragButton && dragButton.parentNode)return dragButton;\r\n dragButton = doc.createElement(\"div\");\r\n dragButton.contentEditable = false;\r\n dragButton.innerHTML = \"\";\r\n dragButton.style.cssText = \"width:15px;height:15px;background-image:url(\" + editor.options.UEDITOR_HOME_URL + \"dialogs/table/dragicon.png);position: absolute;cursor:move;top:\" + (pos.y - 15) + \"px;left:\" + (pos.x) + \"px;\";\r\n domUtils.unSelectable(dragButton);\r\n dragButton.onmouseover = function (evt) {\r\n dragOver = true;\r\n };\r\n dragButton.onmouseout = function (evt) {\r\n dragOver = false;\r\n };\r\n domUtils.on(dragButton, 'click', function (type, evt) {\r\n doClick(evt, this);\r\n });\r\n domUtils.on(dragButton, 'dblclick', function (type, evt) {\r\n doDblClick(evt);\r\n });\r\n domUtils.on(dragButton, 'dragstart', function (type, evt) {\r\n domUtils.preventDefault(evt);\r\n });\r\n var timer;\r\n\r\n function doClick(evt, button) {\r\n // 部分浏览器下需要清理\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n editor.fireEvent(\"tableClicked\", table, button);\r\n }, 300);\r\n }\r\n\r\n function doDblClick(evt) {\r\n clearTimeout(timer);\r\n var ut = getUETable(table),\r\n start = table.rows[0].cells[0],\r\n end = ut.getLastCell(),\r\n range = ut.getCellsRange(start, end);\r\n editor.selection.getRange().setStart(start, 0).setCursor(false, true);\r\n ut.setSelected(range);\r\n }\r\n\r\n doc.body.appendChild(dragButton);\r\n }\r\n\r\n\r\n// function inPosition(table, pos) {\r\n// var tablePos = domUtils.getXY(table),\r\n// width = table.offsetWidth,\r\n// height = table.offsetHeight;\r\n// if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) {\r\n// return \"topLeft\";\r\n// } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) {\r\n// return \"bottomRight\";\r\n// }\r\n// }\r\n\r\n function inTableSide(table, cell, evt, top) {\r\n var pos = mouseCoords(evt),\r\n state = getRelation(cell, pos);\r\n\r\n if (top) {\r\n var caption = table.getElementsByTagName(\"caption\")[0],\r\n capHeight = caption ? caption.offsetHeight : 0;\r\n return (state == \"v1\") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8);\r\n } else {\r\n return (state == \"h1\") && ((pos.x - domUtils.getXY(table).x) < 8);\r\n }\r\n }\r\n\r\n /**\r\n * 获取拖动时允许的X轴坐标\r\n * @param dragTd\r\n * @param evt\r\n */\r\n function getPermissionX(dragTd, evt) {\r\n var ut = getUETable(dragTd);\r\n if (ut) {\r\n var preTd = ut.getSameEndPosCells(dragTd, \"x\")[0],\r\n nextTd = ut.getSameStartPosXCells(dragTd)[0],\r\n mouseX = mouseCoords(evt).x,\r\n left = (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20 ,\r\n right = nextTd ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 : (me.body.offsetWidth + 5 || parseInt(domUtils.getComputedStyle(me.body, \"width\"), 10));\r\n\r\n left += cellMinWidth;\r\n right -= cellMinWidth;\r\n\r\n return mouseX < left ? left : mouseX > right ? right : mouseX;\r\n }\r\n }\r\n\r\n /**\r\n * 获取拖动时允许的Y轴坐标\r\n */\r\n function getPermissionY(dragTd, evt) {\r\n try {\r\n var top = domUtils.getXY(dragTd).y,\r\n mousePosY = mouseCoords(evt).y;\r\n return mousePosY < top ? top : mousePosY;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n /**\r\n * 移动状态切换\r\n */\r\n function toggleDraggableState(editor, draggable, dir, mousePos, cell) {\r\n try {\r\n editor.body.style.cursor = dir == \"h\" ? \"col-resize\" : dir == \"v\" ? \"row-resize\" : \"text\";\r\n if (browser.ie) {\r\n if (dir && !mousedown && !getUETableBySelected(editor)) {\r\n getDragLine(editor, editor.document);\r\n showDragLineAt(dir, cell);\r\n } else {\r\n hideDragLine(editor)\r\n }\r\n }\r\n onBorder = draggable;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n /**\r\n * 获取与UETable相关的resize line\r\n * @param uetable UETable对象\r\n */\r\n function getResizeLineByUETable() {\r\n\r\n var lineId = '_UETableResizeLine',\r\n line = this.document.getElementById( lineId );\r\n\r\n if( !line ) {\r\n line = this.document.createElement(\"div\");\r\n line.id = lineId;\r\n line.contnetEditable = false;\r\n line.setAttribute(\"unselectable\", \"on\");\r\n\r\n var styles = {\r\n width: 2*cellBorderWidth + 1 + 'px',\r\n position: 'absolute',\r\n 'z-index': 100000,\r\n cursor: 'col-resize',\r\n background: 'red',\r\n display: 'none'\r\n };\r\n\r\n //切换状态\r\n line.onmouseout = function(){\r\n this.style.display = 'none';\r\n };\r\n\r\n utils.extend( line.style, styles );\r\n\r\n this.document.body.appendChild( line );\r\n\r\n }\r\n\r\n return line;\r\n\r\n }\r\n\r\n /**\r\n * 更新resize-line\r\n */\r\n function updateResizeLine( cell, uetable ) {\r\n\r\n var line = getResizeLineByUETable.call( this ),\r\n table = uetable.table,\r\n styles = {\r\n top: domUtils.getXY( table ).y + 'px',\r\n left: domUtils.getXY( cell).x + cell.offsetWidth - cellBorderWidth + 'px',\r\n display: 'block',\r\n height: table.offsetHeight + 'px'\r\n };\r\n\r\n utils.extend( line.style, styles );\r\n\r\n }\r\n\r\n /**\r\n * 显示resize-line\r\n */\r\n function showResizeLine( cell ) {\r\n\r\n var uetable = getUETable( cell );\r\n\r\n updateResizeLine.call( this, cell, uetable );\r\n\r\n }\r\n\r\n /**\r\n * 获取鼠标与当前单元格的相对位置\r\n * @param ele\r\n * @param mousePos\r\n */\r\n function getRelation(ele, mousePos) {\r\n var elePos = domUtils.getXY(ele);\r\n\r\n if( !elePos ) {\r\n return '';\r\n }\r\n\r\n if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) {\r\n return \"h\";\r\n }\r\n if (mousePos.x - elePos.x < cellBorderWidth) {\r\n return 'h1'\r\n }\r\n if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) {\r\n return \"v\";\r\n }\r\n if (mousePos.y - elePos.y < cellBorderWidth) {\r\n return 'v1'\r\n }\r\n return '';\r\n }\r\n\r\n function mouseDownEvent(type, evt) {\r\n\r\n if( isEditorDisabled() ) {\r\n return ;\r\n }\r\n\r\n userActionStatus = {\r\n x: evt.clientX,\r\n y: evt.clientY\r\n };\r\n\r\n //右键菜单单独处理\r\n if (evt.button == 2) {\r\n var ut = getUETableBySelected(me),\r\n flag = false;\r\n\r\n if (ut) {\r\n var td = getTargetTd(me, evt);\r\n utils.each(ut.selectedTds, function (ti) {\r\n if (ti === td) {\r\n flag = true;\r\n }\r\n });\r\n if (!flag) {\r\n removeSelectedClass(domUtils.getElementsByTagName(me.body, \"th td\"));\r\n ut.clearSelected()\r\n } else {\r\n td = ut.selectedTds[0];\r\n setTimeout(function () {\r\n me.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }, 0);\r\n\r\n }\r\n }\r\n } else {\r\n tableClickHander( evt );\r\n }\r\n\r\n }\r\n\r\n //清除表格的计时器\r\n function clearTableTimer() {\r\n tabTimer && clearTimeout( tabTimer );\r\n tabTimer = null;\r\n }\r\n\r\n //双击收缩\r\n function tableDbclickHandler(evt) {\r\n singleClickState = 0;\r\n evt = evt || me.window.event;\r\n var target = getParentTdOrTh(evt.target || evt.srcElement);\r\n if (target) {\r\n var h;\r\n if (h = getRelation(target, mouseCoords(evt))) {\r\n\r\n hideDragLine( me );\r\n\r\n if (h == 'h1') {\r\n h = 'h';\r\n if (inTableSide(domUtils.findParentByTagName(target, \"table\"), target, evt)) {\r\n me.execCommand('adaptbywindow');\r\n } else {\r\n target = getUETable(target).getPreviewCell(target);\r\n if (target) {\r\n var rng = me.selection.getRange();\r\n rng.selectNodeContents(target).setCursor(true, true)\r\n }\r\n }\r\n }\r\n if (h == 'h') {\r\n var ut = getUETable(target),\r\n table = ut.table,\r\n cells = getCellsByMoveBorder( target, table, true );\r\n\r\n cells = extractArray( cells, 'left' );\r\n\r\n ut.width = ut.offsetWidth;\r\n\r\n var oldWidth = [],\r\n newWidth = [];\r\n\r\n utils.each( cells, function( cell ){\r\n\r\n oldWidth.push( cell.offsetWidth );\r\n\r\n } );\r\n\r\n utils.each( cells, function( cell ){\r\n\r\n cell.removeAttribute(\"width\");\r\n\r\n } );\r\n\r\n window.setTimeout( function(){\r\n\r\n //是否允许改变\r\n var changeable = true;\r\n\r\n utils.each( cells, function( cell, index ){\r\n\r\n var width = cell.offsetWidth;\r\n\r\n if( width > oldWidth[index] ) {\r\n changeable = false;\r\n return false;\r\n }\r\n\r\n newWidth.push( width );\r\n\r\n } );\r\n\r\n var change = changeable ? newWidth : oldWidth;\r\n\r\n utils.each( cells, function( cell, index ){\r\n\r\n cell.width = change[index] - getTabcellSpace();\r\n\r\n } );\r\n\r\n\r\n }, 0 );\r\n\r\n// minWidth -= cellMinWidth;\r\n//\r\n// table.removeAttribute(\"width\");\r\n// utils.each(cells, function (cell) {\r\n// cell.style.width = \"\";\r\n// cell.width -= minWidth;\r\n// });\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n function tableClickHander( evt ) {\r\n\r\n removeSelectedClass(domUtils.getElementsByTagName(me.body, \"td th\"));\r\n //trace:3113\r\n //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值\r\n utils.each(me.document.getElementsByTagName('table'), function (t) {\r\n t.ueTable = null;\r\n });\r\n startTd = getTargetTd(me, evt);\r\n if( !startTd ) return;\r\n var table = domUtils.findParentByTagName(startTd, \"table\", true);\r\n ut = getUETable(table);\r\n ut && ut.clearSelected();\r\n\r\n //判断当前鼠标状态\r\n if (!onBorder) {\r\n me.document.body.style.webkitUserSelect = '';\r\n mousedown = true;\r\n me.addListener('mouseover', mouseOverEvent);\r\n } else {\r\n //边框上的动作处理\r\n borderActionHandler( evt );\r\n }\r\n\r\n\r\n }\r\n\r\n //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响\r\n function borderActionHandler( evt ) {\r\n\r\n if ( browser.ie ) {\r\n evt = reconstruct(evt );\r\n }\r\n\r\n clearTableDragTimer();\r\n\r\n //是否正在等待resize的缓冲中\r\n isInResizeBuffer = true;\r\n\r\n tableDragTimer = setTimeout(function(){\r\n tableBorderDrag( evt );\r\n }, dblclickTime);\r\n\r\n }\r\n\r\n function extractArray( originArr, key ) {\r\n\r\n var result = [],\r\n tmp = null;\r\n\r\n for( var i = 0, len = originArr.length; i<len; i++ ) {\r\n\r\n tmp = originArr[ i ][ key ];\r\n\r\n if( tmp ) {\r\n result.push( tmp );\r\n }\r\n\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n function clearTableDragTimer() {\r\n tableDragTimer && clearTimeout(tableDragTimer);\r\n tableDragTimer = null;\r\n }\r\n\r\n function reconstruct( obj ) {\r\n\r\n var attrs = ['pageX', 'pageY', 'clientX', 'clientY', 'srcElement', 'target'],\r\n newObj = {};\r\n\r\n if( obj ) {\r\n\r\n for( var i = 0, key, val; key = attrs[i]; i++ ) {\r\n val=obj[ key ];\r\n val && (newObj[ key ] = val);\r\n }\r\n\r\n }\r\n\r\n return newObj;\r\n\r\n }\r\n\r\n //边框拖动\r\n function tableBorderDrag( evt ) {\r\n\r\n isInResizeBuffer = false;\r\n\r\n startTd = evt.target || evt.srcElement;\r\n if( !startTd ) return;\r\n var state = getRelation(startTd, mouseCoords(evt));\r\n if (/\\d/.test(state)) {\r\n state = state.replace(/\\d/, '');\r\n startTd = getUETable(startTd).getPreviewCell(startTd, state == 'v');\r\n }\r\n hideDragLine(me);\r\n getDragLine(me, me.document);\r\n me.fireEvent('saveScene');\r\n showDragLineAt(state, startTd);\r\n mousedown = true;\r\n //拖动开始\r\n onDrag = state;\r\n dragTd = startTd;\r\n }\r\n\r\n function mouseUpEvent(type, evt) {\r\n\r\n if( isEditorDisabled() ) {\r\n return ;\r\n }\r\n\r\n clearTableDragTimer();\r\n\r\n isInResizeBuffer = false;\r\n\r\n if( onBorder ) {\r\n singleClickState = ++singleClickState % 3;\r\n\r\n userActionStatus = {\r\n x: evt.clientX,\r\n y: evt.clientY\r\n };\r\n\r\n tableResizeTimer = setTimeout(function(){\r\n singleClickState > 0 && singleClickState--;\r\n }, dblclickTime );\r\n\r\n if( singleClickState === 2 ) {\r\n\r\n singleClickState = 0;\r\n tableDbclickHandler(evt);\r\n return;\r\n\r\n }\r\n\r\n }\r\n\r\n if (evt.button == 2)return;\r\n var me = this;\r\n //清除表格上原生跨选问题\r\n var range = me.selection.getRange(),\r\n start = domUtils.findParentByTagName(range.startContainer, 'table', true),\r\n end = domUtils.findParentByTagName(range.endContainer, 'table', true);\r\n\r\n if (start || end) {\r\n if (start === end) {\r\n start = domUtils.findParentByTagName(range.startContainer, ['td', 'th', 'caption'], true);\r\n end = domUtils.findParentByTagName(range.endContainer, ['td', 'th', 'caption'], true);\r\n if (start !== end) {\r\n me.selection.clearRange()\r\n }\r\n } else {\r\n me.selection.clearRange()\r\n }\r\n }\r\n mousedown = false;\r\n me.document.body.style.webkitUserSelect = '';\r\n //拖拽状态下的mouseUP\r\n if ( onDrag && dragTd ) {\r\n\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n\r\n singleClickState = 0;\r\n dragLine = me.document.getElementById('ue_tableDragLine');\r\n\r\n // trace 3973\r\n if (dragLine) {\r\n var dragTdPos = domUtils.getXY(dragTd),\r\n dragLinePos = domUtils.getXY(dragLine);\r\n\r\n switch (onDrag) {\r\n case \"h\":\r\n changeColWidth(dragTd, dragLinePos.x - dragTdPos.x);\r\n break;\r\n case \"v\":\r\n changeRowHeight(dragTd, dragLinePos.y - dragTdPos.y - dragTd.offsetHeight);\r\n break;\r\n default:\r\n }\r\n onDrag = \"\";\r\n dragTd = null;\r\n\r\n hideDragLine(me);\r\n me.fireEvent('saveScene');\r\n return;\r\n }\r\n }\r\n //正常状态下的mouseup\r\n if (!startTd) {\r\n var target = domUtils.findParentByTagName(evt.target || evt.srcElement, \"td\", true);\r\n if (!target) target = domUtils.findParentByTagName(evt.target || evt.srcElement, \"th\", true);\r\n if (target && (target.tagName == \"TD\" || target.tagName == \"TH\")) {\r\n if (me.fireEvent(\"excludetable\", target) === true) return;\r\n range = new dom.Range(me.document);\r\n range.setStart(target, 0).setCursor(false, true);\r\n }\r\n } else {\r\n var ut = getUETable(startTd),\r\n cell = ut ? ut.selectedTds[0] : null;\r\n if (cell) {\r\n range = new dom.Range(me.document);\r\n if (domUtils.isEmptyBlock(cell)) {\r\n range.setStart(cell, 0).setCursor(false, true);\r\n } else {\r\n range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true);\r\n }\r\n } else {\r\n range = me.selection.getRange().shrinkBoundary();\r\n if (!range.collapsed) {\r\n var start = domUtils.findParentByTagName(range.startContainer, ['td', 'th'], true),\r\n end = domUtils.findParentByTagName(range.endContainer, ['td', 'th'], true);\r\n //在table里边的不能清除\r\n if (start && !end || !start && end || start && end && start !== end) {\r\n range.setCursor(false, true);\r\n }\r\n }\r\n }\r\n startTd = null;\r\n me.removeListener('mouseover', mouseOverEvent);\r\n }\r\n me._selectionChange(250, evt);\r\n }\r\n\r\n function mouseOverEvent(type, evt) {\r\n\r\n if( isEditorDisabled() ) {\r\n return;\r\n }\r\n\r\n var me = this,\r\n tar = evt.target || evt.srcElement;\r\n currentTd = domUtils.findParentByTagName(tar, \"td\", true) || domUtils.findParentByTagName(tar, \"th\", true);\r\n //需要判断两个TD是否位于同一个表格内\r\n if (startTd && currentTd &&\r\n ((startTd.tagName == \"TD\" && currentTd.tagName == \"TD\") || (startTd.tagName == \"TH\" && currentTd.tagName == \"TH\")) &&\r\n domUtils.findParentByTagName(startTd, 'table') == domUtils.findParentByTagName(currentTd, 'table')) {\r\n var ut = getUETable(currentTd);\r\n if (startTd != currentTd) {\r\n me.document.body.style.webkitUserSelect = 'none';\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n var range = ut.getCellsRange(startTd, currentTd);\r\n ut.setSelected(range);\r\n } else {\r\n me.document.body.style.webkitUserSelect = '';\r\n ut.clearSelected();\r\n }\r\n\r\n }\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n }\r\n\r\n function setCellHeight(cell, height, backHeight) {\r\n var lineHight = parseInt(domUtils.getComputedStyle(cell, \"line-height\"), 10),\r\n tmpHeight = backHeight + height;\r\n height = tmpHeight < lineHight ? lineHight : tmpHeight;\r\n if (cell.style.height) cell.style.height = \"\";\r\n cell.rowSpan == 1 ? cell.setAttribute(\"height\", height) : (cell.removeAttribute && cell.removeAttribute(\"height\"));\r\n }\r\n\r\n function getWidth(cell) {\r\n if (!cell)return 0;\r\n return parseInt(domUtils.getComputedStyle(cell, \"width\"), 10);\r\n }\r\n\r\n function changeColWidth(cell, changeValue) {\r\n\r\n var ut = getUETable(cell);\r\n if (ut) {\r\n\r\n //根据当前移动的边框获取相关的单元格\r\n var table = ut.table,\r\n cells = getCellsByMoveBorder( cell, table );\r\n\r\n table.style.width = \"\";\r\n table.removeAttribute(\"width\");\r\n\r\n //修正改变量\r\n changeValue = correctChangeValue( changeValue, cell, cells );\r\n\r\n if (cell.nextSibling) {\r\n\r\n var i=0;\r\n\r\n utils.each( cells, function( cellGroup ){\r\n\r\n cellGroup.left.width = (+cellGroup.left.width)+changeValue;\r\n cellGroup.right && ( cellGroup.right.width = (+cellGroup.right.width)-changeValue );\r\n\r\n } );\r\n\r\n } else {\r\n\r\n utils.each( cells, function( cellGroup ){\r\n cellGroup.left.width -= -changeValue;\r\n } );\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n function isEditorDisabled() {\r\n return me.body.contentEditable === \"false\";\r\n }\r\n\r\n function changeRowHeight(td, changeValue) {\r\n if (Math.abs(changeValue) < 10) return;\r\n var ut = getUETable(td);\r\n if (ut) {\r\n var cells = ut.getSameEndPosCells(td, \"y\"),\r\n //备份需要连带变化的td的原始高度,否则后期无法获取正确的值\r\n backHeight = cells[0] ? cells[0].offsetHeight : 0;\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n setCellHeight(cell, changeValue, backHeight);\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 获取调整单元格大小的相关单元格\r\n * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格\r\n */\r\n function getCellsByMoveBorder( cell, table, isContainMergeCell ) {\r\n\r\n if( !table ) {\r\n table = domUtils.findParentByTagName( cell, 'table' );\r\n }\r\n\r\n if( !table ) {\r\n return null;\r\n }\r\n\r\n //获取到该单元格所在行的序列号\r\n var index = domUtils.getNodeIndex( cell ),\r\n temp = cell,\r\n rows = table.rows,\r\n colIndex = 0;\r\n\r\n while( temp ) {\r\n //获取到当前单元格在未发生单元格合并时的序列\r\n if( temp.nodeType === 1 ) {\r\n colIndex += (temp.colSpan || 1);\r\n }\r\n temp = temp.previousSibling;\r\n }\r\n\r\n temp = null;\r\n\r\n //记录想关的单元格\r\n var borderCells = [];\r\n\r\n utils.each(rows, function( tabRow ){\r\n\r\n var cells = tabRow.cells,\r\n currIndex = 0;\r\n\r\n utils.each( cells, function( tabCell ){\r\n\r\n currIndex += (tabCell.colSpan || 1);\r\n\r\n if( currIndex === colIndex ) {\r\n\r\n borderCells.push({\r\n left: tabCell,\r\n right: tabCell.nextSibling || null\r\n });\r\n\r\n return false;\r\n\r\n } else if( currIndex > colIndex ) {\r\n\r\n if( isContainMergeCell ) {\r\n borderCells.push({\r\n left: tabCell\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n } );\r\n\r\n });\r\n\r\n return borderCells;\r\n\r\n }\r\n\r\n\r\n /**\r\n * 通过给定的单元格集合获取最小的单元格width\r\n */\r\n function getMinWidthByTableCells( cells ) {\r\n\r\n var minWidth = Number.MAX_VALUE;\r\n\r\n for( var i = 0, curCell; curCell = cells[ i ] ; i++ ) {\r\n\r\n minWidth = Math.min( minWidth, curCell.width || getTableCellWidth( curCell ) );\r\n\r\n }\r\n\r\n return minWidth;\r\n\r\n }\r\n\r\n function correctChangeValue( changeValue, relatedCell, cells ) {\r\n\r\n //为单元格的paading预留空间\r\n changeValue -= getTabcellSpace();\r\n\r\n if( changeValue < 0 ) {\r\n return 0;\r\n }\r\n\r\n changeValue -= getTableCellWidth( relatedCell );\r\n\r\n //确定方向\r\n var direction = changeValue < 0 ? 'left':'right';\r\n\r\n changeValue = Math.abs(changeValue);\r\n\r\n //只关心非最后一个单元格就可以\r\n utils.each( cells, function( cellGroup ){\r\n\r\n var curCell = cellGroup[direction];\r\n\r\n //为单元格保留最小空间\r\n if( curCell ) {\r\n changeValue = Math.min( changeValue, getTableCellWidth( curCell )-cellMinWidth );\r\n }\r\n\r\n\r\n } );\r\n\r\n\r\n //修正越界\r\n changeValue = changeValue < 0 ? 0 : changeValue;\r\n\r\n return direction === 'left' ? -changeValue : changeValue;\r\n\r\n }\r\n\r\n function getTableCellWidth( cell ) {\r\n\r\n var width = 0,\r\n //偏移纠正量\r\n offset = 0,\r\n width = cell.offsetWidth - getTabcellSpace();\r\n\r\n //最后一个节点纠正一下\r\n if( !cell.nextSibling ) {\r\n\r\n width -= getTableCellOffset( cell );\r\n\r\n }\r\n\r\n width = width < 0 ? 0 : width;\r\n\r\n try {\r\n cell.width = width;\r\n } catch(e) {\r\n }\r\n\r\n return width;\r\n\r\n }\r\n\r\n /**\r\n * 获取单元格所在表格的最末单元格的偏移量\r\n */\r\n function getTableCellOffset( cell ) {\r\n\r\n tab = domUtils.findParentByTagName( cell, \"table\", false);\r\n\r\n if( tab.offsetVal === undefined ) {\r\n\r\n var prev = cell.previousSibling;\r\n\r\n if( prev ) {\r\n\r\n //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立\r\n tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth ? UT.borderWidth : 0;\r\n\r\n } else {\r\n tab.offsetVal = 0;\r\n }\r\n\r\n }\r\n\r\n return tab.offsetVal;\r\n\r\n }\r\n\r\n function getTabcellSpace() {\r\n\r\n if( UT.tabcellSpace === undefined ) {\r\n\r\n var cell = null,\r\n tab = me.document.createElement(\"table\"),\r\n tbody = me.document.createElement(\"tbody\"),\r\n trow = me.document.createElement(\"tr\"),\r\n tabcell = me.document.createElement(\"td\"),\r\n mirror = null;\r\n\r\n tabcell.style.cssText = 'border: 0;';\r\n tabcell.width = 1;\r\n\r\n trow.appendChild( tabcell );\r\n trow.appendChild( mirror = tabcell.cloneNode( false ) );\r\n\r\n tbody.appendChild( trow );\r\n\r\n tab.appendChild( tbody );\r\n\r\n tab.style.cssText = \"visibility: hidden;\";\r\n\r\n me.body.appendChild( tab );\r\n\r\n UT.paddingSpace = tabcell.offsetWidth - 1;\r\n\r\n var tmpTabWidth = tab.offsetWidth;\r\n\r\n tabcell.style.cssText = '';\r\n mirror.style.cssText = '';\r\n\r\n UT.borderWidth = ( tab.offsetWidth - tmpTabWidth ) / 3;\r\n\r\n UT.tabcellSpace = UT.paddingSpace + UT.borderWidth;\r\n\r\n me.body.removeChild( tab );\r\n\r\n }\r\n\r\n getTabcellSpace = function(){ return UT.tabcellSpace; };\r\n\r\n return UT.tabcellSpace;\r\n\r\n }\r\n\r\n function getDragLine(editor, doc) {\r\n if (mousedown)return;\r\n dragLine = editor.document.createElement(\"div\");\r\n domUtils.setAttributes(dragLine, {\r\n id:\"ue_tableDragLine\",\r\n unselectable:'on',\r\n contenteditable:false,\r\n 'onresizestart':'return false',\r\n 'ondragstart':'return false',\r\n 'onselectstart':'return false',\r\n style:\"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)\"\r\n });\r\n editor.body.appendChild(dragLine);\r\n }\r\n\r\n function hideDragLine(editor) {\r\n if (mousedown)return;\r\n var line;\r\n while (line = editor.document.getElementById('ue_tableDragLine')) {\r\n domUtils.remove(line)\r\n }\r\n }\r\n\r\n /**\r\n * 依据state(v|h)在cell位置显示横线\r\n * @param state\r\n * @param cell\r\n */\r\n function showDragLineAt(state, cell) {\r\n if (!cell) return;\r\n var table = domUtils.findParentByTagName(cell, \"table\"),\r\n caption = table.getElementsByTagName('caption'),\r\n width = table.offsetWidth,\r\n height = table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0),\r\n tablePos = domUtils.getXY(table),\r\n cellPos = domUtils.getXY(cell), css;\r\n switch (state) {\r\n case \"h\":\r\n css = 'height:' + height + 'px;top:' + (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + 'px;left:' + (cellPos.x + cell.offsetWidth);\r\n dragLine.style.cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)';\r\n break;\r\n case \"v\":\r\n css = 'width:' + width + 'px;left:' + tablePos.x + 'px;top:' + (cellPos.y + cell.offsetHeight );\r\n //必须加上border:0和color:blue,否则低版ie不支持背景色显示\r\n dragLine.style.cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)';\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n /**\r\n * 当表格边框颜色为白色时设置为虚线,true为添加虚线\r\n * @param editor\r\n * @param flag\r\n */\r\n function switchBorderColor(editor, flag) {\r\n var tableArr = domUtils.getElementsByTagName(editor.body, \"table\"), color;\r\n for (var i = 0, node; node = tableArr[i++];) {\r\n var td = domUtils.getElementsByTagName(node, \"td\");\r\n if (td[0]) {\r\n if (flag) {\r\n color = (td[0].style.borderColor).replace(/\\s/g, \"\");\r\n if (/(#ffffff)|(rgb\\(255,255,255\\))/ig.test(color))\r\n domUtils.addClass(node, \"noBorderTable\")\r\n } else {\r\n domUtils.removeClasses(node, \"noBorderTable\")\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n function getTableWidth(editor, needIEHack, defaultValue) {\r\n var body = editor.body;\r\n return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0);\r\n }\r\n\r\n /**\r\n * 获取当前拖动的单元格\r\n */\r\n function getTargetTd(editor, evt) {\r\n\r\n var target = domUtils.findParentByTagName(evt.target || evt.srcElement, [\"td\", \"th\"], true),\r\n dir = null;\r\n\r\n if( !target ) {\r\n return null;\r\n }\r\n\r\n dir = getRelation( target, mouseCoords( evt ) );\r\n\r\n //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td\r\n\r\n if( !target ) {\r\n return null;\r\n }\r\n\r\n if( dir === 'h1' && target.previousSibling ) {\r\n\r\n var position = domUtils.getXY( target),\r\n cellWidth = target.offsetWidth;\r\n\r\n if( Math.abs( position.x + cellWidth - evt.clientX ) > cellWidth / 3 ) {\r\n target = target.previousSibling;\r\n }\r\n\r\n } else if( dir === 'v1' && target.parentNode.previousSibling ) {\r\n\r\n var position = domUtils.getXY( target),\r\n cellHeight = target.offsetHeight;\r\n\r\n if( Math.abs( position.y + cellHeight - evt.clientY ) > cellHeight / 3 ) {\r\n target = target.parentNode.previousSibling.firstChild;\r\n }\r\n\r\n }\r\n\r\n\r\n //排除了非td内部以及用于代码高亮部分的td\r\n return target && !(editor.fireEvent(\"excludetable\", target) === true) ? target : null;\r\n }\r\n\r\n};\r\n\r\n\r\n// plugins/table.sort.js\r\n/**\r\n * Created with JetBrains PhpStorm.\r\n * User: Jinqn\r\n * Date: 13-10-12\r\n * Time: 上午10:20\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n\r\nUE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) {\r\n var table = this.table,\r\n rows = table.rows,\r\n trArray = [],\r\n flag = rows[0].cells[0].tagName === \"TH\",\r\n lastRowIndex = 0;\r\n if(this.selectedTds.length){\r\n var range = this.cellsRange,\r\n len = range.endRowIndex + 1;\r\n for (var i = range.beginRowIndex; i < len; i++) {\r\n trArray[i] = rows[i];\r\n }\r\n trArray.splice(0,range.beginRowIndex);\r\n lastRowIndex = (range.endRowIndex +1) === this.rowsNum ? 0 : range.endRowIndex +1;\r\n }else{\r\n for (var i = 0,len = rows.length; i < len; i++) {\r\n trArray[i] = rows[i];\r\n }\r\n }\r\n\r\n var Fn = {\r\n 'reversecurrent': function(td1,td2){\r\n return 1;\r\n },\r\n 'orderbyasc': function(td1,td2){\r\n var value1 = td1.innerText||td1.textContent,\r\n value2 = td2.innerText||td2.textContent;\r\n return value1.localeCompare(value2);\r\n },\r\n 'reversebyasc': function(td1,td2){\r\n var value1 = td1.innerHTML,\r\n value2 = td2.innerHTML;\r\n return value2.localeCompare(value1);\r\n },\r\n 'orderbynum': function(td1,td2){\r\n var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\\d+/),\r\n value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\\d+/);\r\n if(value1) value1 = +value1[0];\r\n if(value2) value2 = +value2[0];\r\n return (value1||0) - (value2||0);\r\n },\r\n 'reversebynum': function(td1,td2){\r\n var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\\d+/),\r\n value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\\d+/);\r\n if(value1) value1 = +value1[0];\r\n if(value2) value2 = +value2[0];\r\n return (value2||0) - (value1||0);\r\n }\r\n };\r\n\r\n //对表格设置排序的标记data-sort-type\r\n table.setAttribute('data-sort-type', compareFn && typeof compareFn === \"string\" && Fn[compareFn] ? compareFn:'');\r\n\r\n //th不参与排序\r\n flag && trArray.splice(0, 1);\r\n trArray = utils.sort(trArray,function (tr1, tr2) {\r\n var result;\r\n if (compareFn && typeof compareFn === \"function\") {\r\n result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n } else if (compareFn && typeof compareFn === \"number\") {\r\n result = 1;\r\n } else if (compareFn && typeof compareFn === \"string\" && Fn[compareFn]) {\r\n result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n } else {\r\n result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n }\r\n return result;\r\n });\r\n var fragment = table.ownerDocument.createDocumentFragment();\r\n for (var j = 0, len = trArray.length; j < len; j++) {\r\n fragment.appendChild(trArray[j]);\r\n }\r\n var tbody = table.getElementsByTagName(\"tbody\")[0];\r\n if(!lastRowIndex){\r\n tbody.appendChild(fragment);\r\n }else{\r\n tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1])\r\n }\r\n};\r\n\r\nUE.plugins['tablesort'] = function () {\r\n var me = this,\r\n UT = UE.UETable,\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n },\r\n getTableItemsByRange = function (editor) {\r\n return UT.getTableItemsByRange(editor);\r\n };\r\n\r\n\r\n me.ready(function () {\r\n //添加表格可排序的样式\r\n utils.cssRule('tablesort',\r\n 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' +\r\n ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}',\r\n me.document);\r\n\r\n //做单元格合并操作时,清除可排序标识\r\n me.addListener(\"afterexeccommand\", function (type, cmd) {\r\n if( cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') {\r\n this.execCommand('disablesort');\r\n }\r\n });\r\n });\r\n\r\n\r\n\r\n //表格排序\r\n UE.commands['sorttable'] = {\r\n queryCommandState: function () {\r\n var me = this,\r\n tableItems = getTableItemsByRange(me);\r\n if (!tableItems.cell) return -1;\r\n var table = tableItems.table,\r\n cells = table.getElementsByTagName(\"td\");\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n if (cell.rowSpan != 1 || cell.colSpan != 1) return -1;\r\n }\r\n return 0;\r\n },\r\n execCommand: function (cmd, fn) {\r\n var me = this,\r\n range = me.selection.getRange(),\r\n bk = range.createBookmark(true),\r\n tableItems = getTableItemsByRange(me),\r\n cell = tableItems.cell,\r\n ut = getUETable(tableItems.table),\r\n cellInfo = ut.getCellInfo(cell);\r\n ut.sortTable(cellInfo.cellIndex, fn);\r\n range.moveToBookmark(bk);\r\n try{\r\n range.select();\r\n }catch(e){}\r\n }\r\n };\r\n\r\n //设置表格可排序,清除表格可排序\r\n UE.commands[\"enablesort\"] = UE.commands[\"disablesort\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if(table && cmd=='enablesort') {\r\n var cells = domUtils.getElementsByTagName(table, 'th td');\r\n for(var i = 0; i<cells.length; i++) {\r\n if(cells[i].getAttribute('colspan')>1 || cells[i].getAttribute('rowspan')>1) return -1;\r\n }\r\n }\r\n\r\n return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0;\r\n },\r\n execCommand: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n table.setAttribute(\"data-sort\", cmd == \"enablesort\" ? \"sortEnabled\" : \"sortDisabled\");\r\n cmd == \"enablesort\" ? domUtils.addClass(table,\"sortEnabled\"):domUtils.removeClasses(table,\"sortEnabled\");\r\n }\r\n };\r\n};\r\n\r\n\r\n// plugins/contextmenu.js\r\n///import core\r\n///commands 右键菜单\r\n///commandsName ContextMenu\r\n///commandsTitle 右键菜单\r\n/**\r\n * 右键菜单\r\n * @function\r\n * @name baidu.editor.plugins.contextmenu\r\n * @author zhanyi\r\n */\r\n\r\nUE.plugins['contextmenu'] = function () {\r\n var me = this;\r\n me.setOpt('enableContextMenu',true);\r\n if(me.getOpt('enableContextMenu') === false){\r\n return;\r\n }\r\n var lang = me.getLang( \"contextMenu\" ),\r\n menu,\r\n items = me.options.contextMenu || [\r\n {label:lang['selectall'], cmdName:'selectall'},\r\n {\r\n label:lang.cleardoc,\r\n cmdName:'cleardoc',\r\n exec:function () {\r\n if ( confirm( lang.confirmclear ) ) {\r\n this.execCommand( 'cleardoc' );\r\n }\r\n }\r\n },\r\n '-',\r\n {\r\n label:lang.unlink,\r\n cmdName:'unlink'\r\n },\r\n '-',\r\n {\r\n group:lang.paragraph,\r\n icon:'justifyjustify',\r\n subMenu:[\r\n {\r\n label:lang.justifyleft,\r\n cmdName:'justify',\r\n value:'left'\r\n },\r\n {\r\n label:lang.justifyright,\r\n cmdName:'justify',\r\n value:'right'\r\n },\r\n {\r\n label:lang.justifycenter,\r\n cmdName:'justify',\r\n value:'center'\r\n },\r\n {\r\n label:lang.justifyjustify,\r\n cmdName:'justify',\r\n value:'justify'\r\n }\r\n ]\r\n },\r\n '-',\r\n {\r\n group:lang.table,\r\n icon:'table',\r\n subMenu:[\r\n {\r\n label:lang.inserttable,\r\n cmdName:'inserttable'\r\n },\r\n {\r\n label:lang.deletetable,\r\n cmdName:'deletetable'\r\n },\r\n '-',\r\n {\r\n label:lang.deleterow,\r\n cmdName:'deleterow'\r\n },\r\n {\r\n label:lang.deletecol,\r\n cmdName:'deletecol'\r\n },\r\n {\r\n label:lang.insertcol,\r\n cmdName:'insertcol'\r\n },\r\n {\r\n label:lang.insertcolnext,\r\n cmdName:'insertcolnext'\r\n },\r\n {\r\n label:lang.insertrow,\r\n cmdName:'insertrow'\r\n },\r\n {\r\n label:lang.insertrownext,\r\n cmdName:'insertrownext'\r\n },\r\n '-',\r\n {\r\n label:lang.insertcaption,\r\n cmdName:'insertcaption'\r\n },\r\n {\r\n label:lang.deletecaption,\r\n cmdName:'deletecaption'\r\n },\r\n {\r\n label:lang.inserttitle,\r\n cmdName:'inserttitle'\r\n },\r\n {\r\n label:lang.deletetitle,\r\n cmdName:'deletetitle'\r\n },\r\n {\r\n label:lang.inserttitlecol,\r\n cmdName:'inserttitlecol'\r\n },\r\n {\r\n label:lang.deletetitlecol,\r\n cmdName:'deletetitlecol'\r\n },\r\n '-',\r\n {\r\n label:lang.mergecells,\r\n cmdName:'mergecells'\r\n },\r\n {\r\n label:lang.mergeright,\r\n cmdName:'mergeright'\r\n },\r\n {\r\n label:lang.mergedown,\r\n cmdName:'mergedown'\r\n },\r\n '-',\r\n {\r\n label:lang.splittorows,\r\n cmdName:'splittorows'\r\n },\r\n {\r\n label:lang.splittocols,\r\n cmdName:'splittocols'\r\n },\r\n {\r\n label:lang.splittocells,\r\n cmdName:'splittocells'\r\n },\r\n '-',\r\n {\r\n label:lang.averageDiseRow,\r\n cmdName:'averagedistributerow'\r\n },\r\n {\r\n label:lang.averageDisCol,\r\n cmdName:'averagedistributecol'\r\n },\r\n '-',\r\n {\r\n label:lang.edittd,\r\n cmdName:'edittd',\r\n exec:function () {\r\n if ( UE.ui['edittd'] ) {\r\n new UE.ui['edittd']( this );\r\n }\r\n this.getDialog('edittd').open();\r\n }\r\n },\r\n {\r\n label:lang.edittable,\r\n cmdName:'edittable',\r\n exec:function () {\r\n if ( UE.ui['edittable'] ) {\r\n new UE.ui['edittable']( this );\r\n }\r\n this.getDialog('edittable').open();\r\n }\r\n },\r\n {\r\n label:lang.setbordervisible,\r\n cmdName:'setbordervisible'\r\n }\r\n ]\r\n },\r\n {\r\n group:lang.tablesort,\r\n icon:'tablesort',\r\n subMenu:[\r\n {\r\n label:lang.enablesort,\r\n cmdName:'enablesort'\r\n },\r\n {\r\n label:lang.disablesort,\r\n cmdName:'disablesort'\r\n },\r\n '-',\r\n {\r\n label:lang.reversecurrent,\r\n cmdName:'sorttable',\r\n value:'reversecurrent'\r\n },\r\n {\r\n label:lang.orderbyasc,\r\n cmdName:'sorttable',\r\n value:'orderbyasc'\r\n },\r\n {\r\n label:lang.reversebyasc,\r\n cmdName:'sorttable',\r\n value:'reversebyasc'\r\n },\r\n {\r\n label:lang.orderbynum,\r\n cmdName:'sorttable',\r\n value:'orderbynum'\r\n },\r\n {\r\n label:lang.reversebynum,\r\n cmdName:'sorttable',\r\n value:'reversebynum'\r\n }\r\n ]\r\n },\r\n {\r\n group:lang.borderbk,\r\n icon:'borderBack',\r\n subMenu:[\r\n {\r\n label:lang.setcolor,\r\n cmdName:\"interlacetable\",\r\n exec:function(){\r\n this.execCommand(\"interlacetable\");\r\n }\r\n },\r\n {\r\n label:lang.unsetcolor,\r\n cmdName:\"uninterlacetable\",\r\n exec:function(){\r\n this.execCommand(\"uninterlacetable\");\r\n }\r\n },\r\n {\r\n label:lang.setbackground,\r\n cmdName:\"settablebackground\",\r\n exec:function(){\r\n this.execCommand(\"settablebackground\",{repeat:true,colorList:[\"#bbb\",\"#ccc\"]});\r\n }\r\n },\r\n {\r\n label:lang.unsetbackground,\r\n cmdName:\"cleartablebackground\",\r\n exec:function(){\r\n this.execCommand(\"cleartablebackground\");\r\n }\r\n },\r\n {\r\n label:lang.redandblue,\r\n cmdName:\"settablebackground\",\r\n exec:function(){\r\n this.execCommand(\"settablebackground\",{repeat:true,colorList:[\"red\",\"blue\"]});\r\n }\r\n },\r\n {\r\n label:lang.threecolorgradient,\r\n cmdName:\"settablebackground\",\r\n exec:function(){\r\n this.execCommand(\"settablebackground\",{repeat:true,colorList:[\"#aaa\",\"#bbb\",\"#ccc\"]});\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n group:lang.aligntd,\r\n icon:'aligntd',\r\n subMenu:[\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'left',vAlign:'top'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'center',vAlign:'top'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'right',vAlign:'top'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'left',vAlign:'middle'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'center',vAlign:'middle'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'right',vAlign:'middle'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'left',vAlign:'bottom'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'center',vAlign:'bottom'}\r\n },\r\n {\r\n cmdName:'cellalignment',\r\n value:{align:'right',vAlign:'bottom'}\r\n }\r\n ]\r\n },\r\n {\r\n group:lang.aligntable,\r\n icon:'aligntable',\r\n subMenu:[\r\n {\r\n cmdName:'tablealignment',\r\n className: 'left',\r\n label:lang.tableleft,\r\n value:\"left\"\r\n },\r\n {\r\n cmdName:'tablealignment',\r\n className: 'center',\r\n label:lang.tablecenter,\r\n value:\"center\"\r\n },\r\n {\r\n cmdName:'tablealignment',\r\n className: 'right',\r\n label:lang.tableright,\r\n value:\"right\"\r\n }\r\n ]\r\n },\r\n '-',\r\n {\r\n label:lang.insertparagraphbefore,\r\n cmdName:'insertparagraph',\r\n value:true\r\n },\r\n {\r\n label:lang.insertparagraphafter,\r\n cmdName:'insertparagraph'\r\n },\r\n {\r\n label:lang['copy'],\r\n cmdName:'copy'\r\n },\r\n {\r\n label:lang['paste'],\r\n cmdName:'paste'\r\n }\r\n ];\r\n if ( !items.length ) {\r\n return;\r\n }\r\n var uiUtils = UE.ui.uiUtils;\r\n\r\n me.addListener( 'contextmenu', function ( type, evt ) {\r\n\r\n var offset = uiUtils.getViewportOffsetByEvent( evt );\r\n me.fireEvent( 'beforeselectionchange' );\r\n if ( menu ) {\r\n menu.destroy();\r\n }\r\n for ( var i = 0, ti, contextItems = []; ti = items[i]; i++ ) {\r\n var last;\r\n (function ( item ) {\r\n if ( item == '-' ) {\r\n if ( (last = contextItems[contextItems.length - 1 ] ) && last !== '-' ) {\r\n contextItems.push( '-' );\r\n }\r\n } else if ( item.hasOwnProperty( \"group\" ) ) {\r\n for ( var j = 0, cj, subMenu = []; cj = item.subMenu[j]; j++ ) {\r\n (function ( subItem ) {\r\n if ( subItem == '-' ) {\r\n if ( (last = subMenu[subMenu.length - 1 ] ) && last !== '-' ) {\r\n subMenu.push( '-' );\r\n }else{\r\n subMenu.splice(subMenu.length-1);\r\n }\r\n } else {\r\n if ( (me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) &&\r\n (subItem.query ? subItem.query() : me.queryCommandState( subItem.cmdName )) > -1 ) {\r\n subMenu.push( {\r\n 'label':subItem.label || me.getLang( \"contextMenu.\" + subItem.cmdName + (subItem.value || '') )||\"\",\r\n 'className':'edui-for-' +subItem.cmdName + ( subItem.className ? ( ' edui-for-' + subItem.cmdName + '-' + subItem.className ) : '' ),\r\n onclick:subItem.exec ? function () {\r\n subItem.exec.call( me );\r\n } : function () {\r\n me.execCommand( subItem.cmdName, subItem.value );\r\n }\r\n } );\r\n }\r\n }\r\n })( cj );\r\n }\r\n if ( subMenu.length ) {\r\n function getLabel(){\r\n switch (item.icon){\r\n case \"table\":\r\n return me.getLang( \"contextMenu.table\" );\r\n case \"justifyjustify\":\r\n return me.getLang( \"contextMenu.paragraph\" );\r\n case \"aligntd\":\r\n return me.getLang(\"contextMenu.aligntd\");\r\n case \"aligntable\":\r\n return me.getLang(\"contextMenu.aligntable\");\r\n case \"tablesort\":\r\n return lang.tablesort;\r\n case \"borderBack\":\r\n return lang.borderbk;\r\n default :\r\n return '';\r\n }\r\n }\r\n contextItems.push( {\r\n //todo 修正成自动获取方式\r\n 'label':getLabel(),\r\n className:'edui-for-' + item.icon,\r\n 'subMenu':{\r\n items:subMenu,\r\n editor:me\r\n }\r\n } );\r\n }\r\n\r\n } else {\r\n //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法\r\n if ( (me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) &&\r\n (item.query ? item.query.call(me) : me.queryCommandState( item.cmdName )) > -1 ) {\r\n\r\n contextItems.push( {\r\n 'label':item.label || me.getLang( \"contextMenu.\" + item.cmdName ),\r\n className:'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')),\r\n onclick:item.exec ? function () {\r\n item.exec.call( me );\r\n } : function () {\r\n me.execCommand( item.cmdName, item.value );\r\n }\r\n } );\r\n }\r\n\r\n }\r\n\r\n })( ti );\r\n }\r\n if ( contextItems[contextItems.length - 1] == '-' ) {\r\n contextItems.pop();\r\n }\r\n\r\n menu = new UE.ui.Menu( {\r\n items:contextItems,\r\n className:\"edui-contextmenu\",\r\n editor:me\r\n } );\r\n menu.render();\r\n menu.showAt( offset );\r\n\r\n me.fireEvent(\"aftershowcontextmenu\",menu);\r\n\r\n domUtils.preventDefault( evt );\r\n if ( browser.ie ) {\r\n var ieRange;\r\n try {\r\n ieRange = me.selection.getNative().createRange();\r\n } catch ( e ) {\r\n return;\r\n }\r\n if ( ieRange.item ) {\r\n var range = new dom.Range( me.document );\r\n range.selectNode( ieRange.item( 0 ) ).select( true, true );\r\n }\r\n }\r\n });\r\n\r\n // 添加复制的flash按钮\r\n me.addListener('aftershowcontextmenu', function(type, menu) {\r\n if (me.zeroclipboard) {\r\n var items = menu.items;\r\n for (var key in items) {\r\n if (items[key].className == 'edui-for-copy') {\r\n me.zeroclipboard.clip(items[key].getDom());\r\n }\r\n }\r\n }\r\n });\r\n\r\n};\r\n\r\n\r\n// plugins/shortcutmenu.js\r\n///import core\r\n///commands 弹出菜单\r\n// commandsName popupmenu\r\n///commandsTitle 弹出菜单\r\n/**\r\n * 弹出菜单\r\n * @function\r\n * @name baidu.editor.plugins.popupmenu\r\n * @author xuheng\r\n */\r\n\r\nUE.plugins['shortcutmenu'] = function () {\r\n var me = this,\r\n menu,\r\n items = me.options.shortcutMenu || [];\r\n\r\n if (!items.length) {\r\n return;\r\n }\r\n\r\n me.addListener ('contextmenu mouseup' , function (type , e) {\r\n var me = this,\r\n customEvt = {\r\n type : type ,\r\n target : e.target || e.srcElement ,\r\n screenX : e.screenX ,\r\n screenY : e.screenY ,\r\n clientX : e.clientX ,\r\n clientY : e.clientY\r\n };\r\n\r\n setTimeout (function () {\r\n var rng = me.selection.getRange ();\r\n if (rng.collapsed === false || type == \"contextmenu\") {\r\n\r\n if (!menu) {\r\n menu = new baidu.editor.ui.ShortCutMenu ({\r\n editor : me ,\r\n items : items ,\r\n theme : me.options.theme ,\r\n className : 'edui-shortcutmenu'\r\n });\r\n\r\n menu.render ();\r\n me.fireEvent (\"afterrendershortcutmenu\" , menu);\r\n }\r\n\r\n menu.show (customEvt , !!UE.plugins['contextmenu']);\r\n }\r\n });\r\n\r\n if (type == 'contextmenu') {\r\n domUtils.preventDefault (e);\r\n if (browser.ie9below) {\r\n var ieRange;\r\n try {\r\n ieRange = me.selection.getNative().createRange();\r\n } catch (e) {\r\n return;\r\n }\r\n if (ieRange.item) {\r\n var range = new dom.Range (me.document);\r\n range.selectNode (ieRange.item (0)).select (true , true);\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n me.addListener ('keydown' , function (type) {\r\n if (type == \"keydown\") {\r\n menu && !menu.isHidden && menu.hide ();\r\n }\r\n\r\n });\r\n\r\n};\r\n\r\n\r\n\r\n\r\n// plugins/basestyle.js\r\n/**\r\n * B、I、sub、super命令支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\nUE.plugins['basestyle'] = function(){\r\n\r\n /**\r\n * 字体加粗\r\n * @command bold\r\n * @param { String } cmd 命令字符串\r\n * @remind 对已加粗的文本内容执行该命令, 将取消加粗\r\n * @method execCommand\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行加粗操作\r\n * //第一次执行, 文本内容加粗\r\n * editor.execCommand( 'bold' );\r\n *\r\n * //第二次执行, 文本内容取消加粗\r\n * editor.execCommand( 'bold' );\r\n * ```\r\n */\r\n\r\n\r\n /**\r\n * 字体倾斜\r\n * @command italic\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行斜体操作\r\n * //第一次操作, 文本内容将变成斜体\r\n * editor.execCommand( 'italic' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'italic' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 下标文本,与“superscript”命令互斥\r\n * @command subscript\r\n * @method execCommand\r\n * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行下标操作\r\n * //第一次操作, 文本内容将变成下标文本\r\n * editor.execCommand( 'subscript' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'subscript' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 上标文本,与“subscript”命令互斥\r\n * @command superscript\r\n * @method execCommand\r\n * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行上标操作\r\n * //第一次操作, 文本内容将变成上标文本\r\n * editor.execCommand( 'superscript' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'superscript' );\r\n * ```\r\n */\r\n var basestyles = {\r\n 'bold':['strong','b'],\r\n 'italic':['em','i'],\r\n 'subscript':['sub'],\r\n 'superscript':['sup']\r\n },\r\n getObj = function(editor,tagNames){\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(),tagNames);\r\n },\r\n me = this;\r\n //添加快捷键\r\n me.addshortcutkey({\r\n \"Bold\" : \"ctrl+66\",//^B\r\n \"Italic\" : \"ctrl+73\", //^I\r\n \"Underline\" : \"ctrl+85\"//^U\r\n });\r\n me.addInputRule(function(root){\r\n utils.each(root.getNodesByTagName('b i'),function(node){\r\n switch (node.tagName){\r\n case 'b':\r\n node.tagName = 'strong';\r\n break;\r\n case 'i':\r\n node.tagName = 'em';\r\n }\r\n });\r\n });\r\n for ( var style in basestyles ) {\r\n (function( cmd, tagNames ) {\r\n me.commands[cmd] = {\r\n execCommand : function( cmdName ) {\r\n var range = me.selection.getRange(),obj = getObj(this,tagNames);\r\n if ( range.collapsed ) {\r\n if ( obj ) {\r\n var tmpText = me.document.createTextNode('');\r\n range.insertNode( tmpText ).removeInlineStyle( tagNames );\r\n range.setStartBefore(tmpText);\r\n domUtils.remove(tmpText);\r\n } else {\r\n var tmpNode = range.document.createElement( tagNames[0] );\r\n if(cmdName == 'superscript' || cmdName == 'subscript'){\r\n tmpText = me.document.createTextNode('');\r\n range.insertNode(tmpText)\r\n .removeInlineStyle(['sub','sup'])\r\n .setStartBefore(tmpText)\r\n .collapse(true);\r\n }\r\n range.insertNode( tmpNode ).setStart( tmpNode, 0 );\r\n }\r\n range.collapse( true );\r\n } else {\r\n if(cmdName == 'superscript' || cmdName == 'subscript'){\r\n if(!obj || obj.tagName.toLowerCase() != cmdName){\r\n range.removeInlineStyle(['sub','sup']);\r\n }\r\n }\r\n obj ? range.removeInlineStyle( tagNames ) : range.applyInlineStyle( tagNames[0] );\r\n }\r\n range.select();\r\n },\r\n queryCommandState : function() {\r\n return getObj(this,tagNames) ? 1 : 0;\r\n }\r\n };\r\n })( style, basestyles[style] );\r\n }\r\n};\r\n\r\n\r\n\r\n// plugins/elementpath.js\r\n/**\r\n * 选取路径命令\r\n * @file\r\n */\r\nUE.plugins['elementpath'] = function(){\r\n var currentLevel,\r\n tagNames,\r\n me = this;\r\n me.setOpt('elementPathEnabled',true);\r\n if(!me.options.elementPathEnabled){\r\n return;\r\n }\r\n me.commands['elementpath'] = {\r\n execCommand : function( cmdName, level ) {\r\n var start = tagNames[level],\r\n range = me.selection.getRange();\r\n currentLevel = level*1;\r\n range.selectNode(start).select();\r\n },\r\n queryCommandValue : function() {\r\n //产生一个副本,不能修改原来的startElementPath;\r\n var parents = [].concat(this.selection.getStartElementPath()).reverse(),\r\n names = [];\r\n tagNames = parents;\r\n for(var i=0,ci;ci=parents[i];i++){\r\n if(ci.nodeType == 3) {\r\n continue;\r\n }\r\n var name = ci.tagName.toLowerCase();\r\n if(name == 'img' && ci.getAttribute('anchorname')){\r\n name = 'anchor';\r\n }\r\n names[i] = name;\r\n if(currentLevel == i){\r\n currentLevel = -1;\r\n break;\r\n }\r\n }\r\n return names;\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n// plugins/formatmatch.js\r\n/**\r\n * 格式刷,只格式inline的\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 格式刷\r\n * @command formatmatch\r\n * @method execCommand\r\n * @remind 该操作不能复制段落格式\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //获取格式刷\r\n * editor.execCommand( 'formatmatch' );\r\n * ```\r\n */\r\nUE.plugins['formatmatch'] = function(){\r\n\r\n var me = this,\r\n list = [],img,\r\n flag = 0;\r\n\r\n me.addListener('reset',function(){\r\n list = [];\r\n flag = 0;\r\n });\r\n\r\n function addList(type,evt){\r\n \r\n if(browser.webkit){\r\n var target = evt.target.tagName == 'IMG' ? evt.target : null;\r\n }\r\n\r\n function addFormat(range){\r\n\r\n if(text){\r\n range.selectNode(text);\r\n }\r\n return range.applyInlineStyle(list[list.length-1].tagName,null,list);\r\n\r\n }\r\n\r\n me.undoManger && me.undoManger.save();\r\n\r\n var range = me.selection.getRange(),\r\n imgT = target || range.getClosedNode();\r\n if(img && imgT && imgT.tagName == 'IMG'){\r\n //trace:964\r\n\r\n imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline');\r\n\r\n img = null;\r\n }else{\r\n if(!img){\r\n var collapsed = range.collapsed;\r\n if(collapsed){\r\n var text = me.document.createTextNode('match');\r\n range.insertNode(text).select();\r\n\r\n\r\n }\r\n me.__hasEnterExecCommand = true;\r\n //不能把block上的属性干掉\r\n //trace:1553\r\n var removeFormatAttributes = me.options.removeFormatAttributes;\r\n me.options.removeFormatAttributes = '';\r\n me.execCommand('removeformat');\r\n me.options.removeFormatAttributes = removeFormatAttributes;\r\n me.__hasEnterExecCommand = false;\r\n //trace:969\r\n range = me.selection.getRange();\r\n if(list.length){\r\n addFormat(range);\r\n }\r\n if(text){\r\n range.setStartBefore(text).collapse(true);\r\n\r\n }\r\n range.select();\r\n text && domUtils.remove(text);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n me.undoManger && me.undoManger.save();\r\n me.removeListener('mouseup',addList);\r\n flag = 0;\r\n }\r\n\r\n me.commands['formatmatch'] = {\r\n execCommand : function( cmdName ) {\r\n \r\n if(flag){\r\n flag = 0;\r\n list = [];\r\n me.removeListener('mouseup',addList);\r\n return;\r\n }\r\n\r\n\r\n \r\n var range = me.selection.getRange();\r\n img = range.getClosedNode();\r\n if(!img || img.tagName != 'IMG'){\r\n range.collapse(true).shrinkBoundary();\r\n var start = range.startContainer;\r\n list = domUtils.findParents(start,true,function(node){\r\n return !domUtils.isBlockElm(node) && node.nodeType == 1;\r\n });\r\n //a不能加入格式刷, 并且克隆节点\r\n for(var i=0,ci;ci=list[i];i++){\r\n if(ci.tagName == 'A'){\r\n list.splice(i,1);\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n me.addListener('mouseup',addList);\r\n flag = 1;\r\n\r\n\r\n },\r\n queryCommandState : function() {\r\n return flag;\r\n },\r\n notNeedUndo : 1\r\n };\r\n};\r\n\r\n\r\n\r\n// plugins/searchreplace.js\r\n///import core\r\n///commands 查找替换\r\n///commandsName SearchReplace\r\n///commandsTitle 查询替换\r\n///commandsDialog dialogs\\searchreplace\r\n/**\r\n * @description 查找替换\r\n * @author zhanyi\r\n */\r\n\r\nUE.plugin.register('searchreplace',function(){\r\n var me = this;\r\n\r\n var _blockElm = {'table':1,'tbody':1,'tr':1,'ol':1,'ul':1};\r\n\r\n function findTextInString(textContent,opt,currentIndex){\r\n var str = opt.searchStr;\r\n if(opt.dir == -1){\r\n textContent = textContent.split('').reverse().join('');\r\n str = str.split('').reverse().join('');\r\n currentIndex = textContent.length - currentIndex;\r\n\r\n }\r\n var reg = new RegExp(str,'g' + (opt.casesensitive ? '' : 'i')),match;\r\n\r\n while(match = reg.exec(textContent)){\r\n if(match.index >= currentIndex){\r\n return opt.dir == -1 ? textContent.length - match.index - opt.searchStr.length : match.index;\r\n }\r\n }\r\n return -1\r\n }\r\n function findTextBlockElm(node,currentIndex,opt){\r\n var textContent,index,methodName = opt.all || opt.dir == 1 ? 'getNextDomNode' : 'getPreDomNode';\r\n if(domUtils.isBody(node)){\r\n node = node.firstChild;\r\n }\r\n var first = 1;\r\n while(node){\r\n textContent = node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent'];\r\n index = findTextInString(textContent,opt,currentIndex );\r\n first = 0;\r\n if(index!=-1){\r\n return {\r\n 'node':node,\r\n 'index':index\r\n }\r\n }\r\n node = domUtils[methodName](node);\r\n while(node && _blockElm[node.nodeName.toLowerCase()]){\r\n node = domUtils[methodName](node,true);\r\n }\r\n if(node){\r\n currentIndex = opt.dir == -1 ? (node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']).length : 0;\r\n }\r\n\r\n }\r\n }\r\n function findNTextInBlockElm(node,index,str){\r\n var currentIndex = 0,\r\n currentNode = node.firstChild,\r\n currentNodeLength = 0,\r\n result;\r\n while(currentNode){\r\n if(currentNode.nodeType == 3){\r\n currentNodeLength = currentNode.nodeValue.replace(/(^[\\t\\r\\n]+)|([\\t\\r\\n]+$)/,'').length;\r\n currentIndex += currentNodeLength;\r\n if(currentIndex >= index){\r\n return {\r\n 'node':currentNode,\r\n 'index': currentNodeLength - (currentIndex - index)\r\n }\r\n }\r\n }else if(!dtd.$empty[currentNode.tagName]){\r\n currentNodeLength = currentNode[browser.ie ? 'innerText' : 'textContent'].replace(/(^[\\t\\r\\n]+)|([\\t\\r\\n]+$)/,'').length\r\n currentIndex += currentNodeLength;\r\n if(currentIndex >= index){\r\n result = findNTextInBlockElm(currentNode,currentNodeLength - (currentIndex - index),str);\r\n if(result){\r\n return result;\r\n }\r\n }\r\n }\r\n currentNode = domUtils.getNextDomNode(currentNode);\r\n\r\n }\r\n }\r\n\r\n function searchReplace(me,opt){\r\n\r\n var rng = me.selection.getRange(),\r\n startBlockNode,\r\n searchStr = opt.searchStr,\r\n span = me.document.createElement('span');\r\n span.innerHTML = '$$ueditor_searchreplace_key$$';\r\n\r\n rng.shrinkBoundary(true);\r\n\r\n //判断是不是第一次选中\r\n if(!rng.collapsed){\r\n rng.select();\r\n var rngText = me.selection.getText();\r\n if(new RegExp('^' + opt.searchStr + '$',(opt.casesensitive ? '' : 'i')).test(rngText)){\r\n if(opt.replaceStr != undefined){\r\n replaceText(rng,opt.replaceStr);\r\n rng.select();\r\n return true;\r\n }else{\r\n rng.collapse(opt.dir == -1)\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n rng.insertNode(span);\r\n rng.enlargeToBlockElm(true);\r\n startBlockNode = rng.startContainer;\r\n var currentIndex = startBlockNode[browser.ie ? 'innerText' : 'textContent'].indexOf('$$ueditor_searchreplace_key$$');\r\n rng.setStartBefore(span);\r\n domUtils.remove(span);\r\n var result = findTextBlockElm(startBlockNode,currentIndex,opt);\r\n if(result){\r\n var rngStart = findNTextInBlockElm(result.node,result.index,searchStr);\r\n var rngEnd = findNTextInBlockElm(result.node,result.index + searchStr.length,searchStr);\r\n rng.setStart(rngStart.node,rngStart.index).setEnd(rngEnd.node,rngEnd.index);\r\n\r\n if(opt.replaceStr !== undefined){\r\n replaceText(rng,opt.replaceStr)\r\n }\r\n rng.select();\r\n return true;\r\n }else{\r\n rng.setCursor()\r\n }\r\n\r\n }\r\n function replaceText(rng,str){\r\n\r\n str = me.document.createTextNode(str);\r\n rng.deleteContents().insertNode(str);\r\n\r\n }\r\n return {\r\n commands:{\r\n 'searchreplace':{\r\n execCommand:function(cmdName,opt){\r\n utils.extend(opt,{\r\n all : false,\r\n casesensitive : false,\r\n dir : 1\r\n },true);\r\n var num = 0;\r\n if(opt.all){\r\n\r\n var rng = me.selection.getRange(),\r\n first = me.body.firstChild;\r\n if(first && first.nodeType == 1){\r\n rng.setStart(first,0);\r\n rng.shrinkBoundary(true);\r\n }else if(first.nodeType == 3){\r\n rng.setStartBefore(first)\r\n }\r\n rng.collapse(true).select(true);\r\n if(opt.replaceStr !== undefined){\r\n me.fireEvent('saveScene');\r\n }\r\n while(searchReplace(this,opt)){\r\n num++;\r\n }\r\n if(num){\r\n me.fireEvent('saveScene');\r\n }\r\n }else{\r\n if(opt.replaceStr !== undefined){\r\n me.fireEvent('saveScene');\r\n }\r\n if(searchReplace(this,opt)){\r\n num++\r\n }\r\n if(num){\r\n me.fireEvent('saveScene');\r\n }\r\n\r\n }\r\n\r\n return num;\r\n },\r\n notNeedUndo:1\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/customstyle.js\r\n/**\r\n * 自定义样式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n/**\r\n * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。\r\n * @command customstyle\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'customstyle' );\r\n * ```\r\n */\r\nUE.plugins['customstyle'] = function() {\r\n var me = this;\r\n me.setOpt({ 'customstyle':[\r\n {tag:'h1',name:'tc', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'},\r\n {tag:'h1',name:'tl', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'},\r\n {tag:'span',name:'im', style:'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'},\r\n {tag:'span',name:'hi', style:'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'}\r\n ]});\r\n me.commands['customstyle'] = {\r\n execCommand : function(cmdName, obj) {\r\n var me = this,\r\n tagName = obj.tag,\r\n node = domUtils.findParent(me.selection.getStart(), function(node) {\r\n return node.getAttribute('label');\r\n }, true),\r\n range,bk,tmpObj = {};\r\n for (var p in obj) {\r\n if(obj[p]!==undefined)\r\n tmpObj[p] = obj[p];\r\n }\r\n delete tmpObj.tag;\r\n if (node && node.getAttribute('label') == obj.label) {\r\n range = this.selection.getRange();\r\n bk = range.createBookmark();\r\n if (range.collapsed) {\r\n //trace:1732 删掉自定义标签,要有p来回填站位\r\n if(dtd.$block[node.tagName]){\r\n var fillNode = me.document.createElement('p');\r\n domUtils.moveChild(node, fillNode);\r\n node.parentNode.insertBefore(fillNode, node);\r\n domUtils.remove(node);\r\n }else{\r\n domUtils.remove(node,true);\r\n }\r\n\r\n } else {\r\n\r\n var common = domUtils.getCommonAncestor(bk.start, bk.end),\r\n nodes = domUtils.getElementsByTagName(common, tagName);\r\n if(new RegExp(tagName,'i').test(common.tagName)){\r\n nodes.push(common);\r\n }\r\n for (var i = 0,ni; ni = nodes[i++];) {\r\n if (ni.getAttribute('label') == obj.label) {\r\n var ps = domUtils.getPosition(ni, bk.start),pe = domUtils.getPosition(ni, bk.end);\r\n if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS)\r\n &&\r\n (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS)\r\n )\r\n if (dtd.$block[tagName]) {\r\n var fillNode = me.document.createElement('p');\r\n domUtils.moveChild(ni, fillNode);\r\n ni.parentNode.insertBefore(fillNode, ni);\r\n }\r\n domUtils.remove(ni, true);\r\n }\r\n }\r\n node = domUtils.findParent(common, function(node) {\r\n return node.getAttribute('label') == obj.label;\r\n }, true);\r\n if (node) {\r\n\r\n domUtils.remove(node, true);\r\n\r\n }\r\n\r\n }\r\n range.moveToBookmark(bk).select();\r\n } else {\r\n if (dtd.$block[tagName]) {\r\n this.execCommand('paragraph', tagName, tmpObj,'customstyle');\r\n range = me.selection.getRange();\r\n if (!range.collapsed) {\r\n range.collapse();\r\n node = domUtils.findParent(me.selection.getStart(), function(node) {\r\n return node.getAttribute('label') == obj.label;\r\n }, true);\r\n var pNode = me.document.createElement('p');\r\n domUtils.insertAfter(node, pNode);\r\n domUtils.fillNode(me.document, pNode);\r\n range.setStart(pNode, 0).setCursor();\r\n }\r\n } else {\r\n\r\n range = me.selection.getRange();\r\n if (range.collapsed) {\r\n node = me.document.createElement(tagName);\r\n domUtils.setAttributes(node, tmpObj);\r\n range.insertNode(node).setStart(node, 0).setCursor();\r\n\r\n return;\r\n }\r\n\r\n bk = range.createBookmark();\r\n range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select();\r\n }\r\n }\r\n\r\n },\r\n queryCommandValue : function() {\r\n var parent = domUtils.filterNodeList(\r\n this.selection.getStartElementPath(),\r\n function(node){return node.getAttribute('label')}\r\n );\r\n return parent ? parent.getAttribute('label') : '';\r\n }\r\n };\r\n //当去掉customstyle是,如果是块元素,用p代替\r\n me.addListener('keyup', function(type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 32 || keyCode == 13) {\r\n var range = me.selection.getRange();\r\n if (range.collapsed) {\r\n var node = domUtils.findParent(me.selection.getStart(), function(node) {\r\n return node.getAttribute('label');\r\n }, true);\r\n if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) {\r\n var p = me.document.createElement('p');\r\n domUtils.insertAfter(node, p);\r\n domUtils.fillNode(me.document, p);\r\n domUtils.remove(node);\r\n range.setStart(p, 0).setCursor();\r\n\r\n\r\n }\r\n }\r\n }\r\n });\r\n};\r\n\r\n// plugins/catchremoteimage.js\r\n///import core\r\n///commands 远程图片抓取\r\n///commandsName catchRemoteImage,catchremoteimageenable\r\n///commandsTitle 远程图片抓取\r\n/**\r\n * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片\r\n */\r\nUE.plugins['catchremoteimage'] = function () {\r\n var me = this,\r\n ajax = UE.ajax;\r\n\r\n /* 设置默认值 */\r\n if (me.options.catchRemoteImageEnable === false) return;\r\n me.setOpt({\r\n catchRemoteImageEnable: false\r\n });\r\n\r\n me.addListener(\"afterpaste\", function () {\r\n me.fireEvent(\"catchRemoteImage\");\r\n });\r\n\r\n me.addListener(\"catchRemoteImage\", function () {\r\n\r\n var catcherLocalDomain = me.getOpt('catcherLocalDomain'),\r\n catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')),\r\n catcherUrlPrefix = me.getOpt('catcherUrlPrefix'),\r\n catcherFieldName = me.getOpt('catcherFieldName');\r\n\r\n var remoteImages = [],\r\n imgs = domUtils.getElementsByTagName(me.document, \"img\"),\r\n test = function (src, urls) {\r\n if (src.indexOf(location.host) != -1 || /(^\\.)|(^\\/)/.test(src)) {\r\n return true;\r\n }\r\n if (urls) {\r\n for (var j = 0, url; url = urls[j++];) {\r\n if (src.indexOf(url) !== -1) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n for (var i = 0, ci; ci = imgs[i++];) {\r\n if (ci.getAttribute(\"word_img\")) {\r\n continue;\r\n }\r\n var src = ci.getAttribute(\"_src\") || ci.src || \"\";\r\n if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) {\r\n remoteImages.push(src);\r\n }\r\n }\r\n\r\n if (remoteImages.length) {\r\n catchremoteimage(remoteImages, {\r\n //成功抓取\r\n success: function (r) {\r\n try {\r\n var info = r.state !== undefined ? r:eval(\"(\" + r.responseText + \")\");\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n /* 获取源路径和新路径 */\r\n var i, j, ci, cj, oldSrc, newSrc, list = info.list;\r\n\r\n for (i = 0; ci = imgs[i++];) {\r\n oldSrc = ci.getAttribute(\"_src\") || ci.src || \"\";\r\n for (j = 0; cj = list[j++];) {\r\n if (oldSrc == cj.source && cj.state == \"SUCCESS\") { //抓取失败时不做替换处理\r\n newSrc = catcherUrlPrefix + cj.url;\r\n domUtils.setAttributes(ci, {\r\n \"src\": newSrc,\r\n \"_src\": newSrc\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n me.fireEvent('catchremotesuccess')\r\n },\r\n //回调失败,本次请求超时\r\n error: function () {\r\n me.fireEvent(\"catchremoteerror\");\r\n }\r\n });\r\n }\r\n\r\n function catchremoteimage(imgs, callbacks) {\r\n var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',\r\n url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?':'&') + params),\r\n isJsonp = utils.isCrossDomainUrl(url),\r\n opt = {\r\n 'method': 'POST',\r\n 'dataType': isJsonp ? 'jsonp':'',\r\n 'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值\r\n 'onsuccess': callbacks[\"success\"],\r\n 'onerror': callbacks[\"error\"]\r\n };\r\n opt[catcherFieldName] = imgs;\r\n ajax.request(url, opt);\r\n }\r\n\r\n });\r\n};\r\n\r\n// plugins/snapscreen.js\r\n/**\r\n * 截屏插件,为UEditor提供插入支持\r\n * @file\r\n * @since 1.4.2\r\n */\r\nUE.plugin.register('snapscreen', function (){\r\n\r\n var me = this;\r\n var snapplugin;\r\n\r\n function getLocation(url){\r\n var search,\r\n a = document.createElement('a'),\r\n params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';\r\n\r\n a.href = url;\r\n if (browser.ie) {\r\n a.href = a.href;\r\n }\r\n\r\n\r\n search = a.search;\r\n if (params) {\r\n search = search + (search.indexOf('?') == -1 ? '?':'&')+ params;\r\n search = search.replace(/[&]+/ig, '&');\r\n }\r\n return {\r\n 'port': a.port,\r\n 'hostname': a.hostname,\r\n 'path': a.pathname + search || + a.hash\r\n }\r\n }\r\n\r\n return {\r\n commands:{\r\n /**\r\n * 字体背景颜色\r\n * @command snapscreen\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('snapscreen');\r\n * ```\r\n */\r\n 'snapscreen':{\r\n execCommand:function (cmd) {\r\n var url, local, res;\r\n var lang = me.getLang(\"snapScreen_plugin\");\r\n\r\n if(!snapplugin){\r\n var container = me.container;\r\n var doc = me.container.ownerDocument || me.container.document;\r\n snapplugin = doc.createElement(\"object\");\r\n try{snapplugin.type = \"application/x-pluginbaidusnap\";}catch(e){\r\n return;\r\n }\r\n snapplugin.style.cssText = \"position:absolute;left:-9999px;width:0;height:0;\";\r\n snapplugin.setAttribute(\"width\",\"0\");\r\n snapplugin.setAttribute(\"height\",\"0\");\r\n container.appendChild(snapplugin);\r\n }\r\n\r\n function onSuccess(rs){\r\n try{\r\n rs = eval(\"(\"+ rs +\")\");\r\n if(rs.state == 'SUCCESS'){\r\n var opt = me.options;\r\n me.execCommand('insertimage', {\r\n src: opt.snapscreenUrlPrefix + rs.url,\r\n _src: opt.snapscreenUrlPrefix + rs.url,\r\n alt: rs.title || '',\r\n floatStyle: opt.snapscreenImgAlign\r\n });\r\n } else {\r\n alert(rs.state);\r\n }\r\n }catch(e){\r\n alert(lang.callBackErrorMsg);\r\n }\r\n }\r\n url = me.getActionUrl(me.getOpt('snapscreenActionName'));\r\n local = getLocation(url);\r\n setTimeout(function () {\r\n try{\r\n res =snapplugin.saveSnapshot(local.hostname, local.path, local.port);\r\n }catch(e){\r\n me.ui._dialogs['snapscreenDialog'].open();\r\n return;\r\n }\r\n\r\n onSuccess(res);\r\n }, 50);\r\n },\r\n queryCommandState: function(){\r\n return (navigator.userAgent.indexOf(\"Windows\",0) != -1) ? 0:-1;\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\r\n// plugins/insertparagraph.js\r\n/**\r\n * 插入段落\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n\r\n/**\r\n * 插入段落\r\n * @command insertparagraph\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * editor.execCommand( 'insertparagraph' );\r\n * ```\r\n */\r\n\r\nUE.commands['insertparagraph'] = {\r\n execCommand : function( cmdName,front) {\r\n var me = this,\r\n range = me.selection.getRange(),\r\n start = range.startContainer,tmpNode;\r\n while(start ){\r\n if(domUtils.isBody(start)){\r\n break;\r\n }\r\n tmpNode = start;\r\n start = start.parentNode;\r\n }\r\n if(tmpNode){\r\n var p = me.document.createElement('p');\r\n if(front){\r\n tmpNode.parentNode.insertBefore(p,tmpNode)\r\n }else{\r\n tmpNode.parentNode.insertBefore(p,tmpNode.nextSibling)\r\n }\r\n domUtils.fillNode(me.document,p);\r\n range.setStart(p,0).setCursor(false,true);\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\n// plugins/webapp.js\r\n/**\r\n * 百度应用\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n\r\n/**\r\n * 插入百度应用\r\n * @command webapp\r\n * @method execCommand\r\n * @remind 需要百度APPKey\r\n * @remind 百度应用主页: <a href=\"http://app.baidu.com/\" target=\"_blank\">http://app.baidu.com/</a>\r\n * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,\r\n * height=>应用容器高度,logo=>应用logo,url=>应用地址\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'webapp' , {\r\n * title: '植物大战僵尸',\r\n * width: 560,\r\n * height: 465,\r\n * logo: '应用展示的图片',\r\n * url: '百度应用的地址'\r\n * } );\r\n * ```\r\n */\r\n\r\n//UE.plugins['webapp'] = function () {\r\n// var me = this;\r\n// function createInsertStr( obj, toIframe, addParagraph ) {\r\n// return !toIframe ?\r\n// (addParagraph ? '<p>' : '') + '<img title=\"'+obj.title+'\" width=\"' + obj.width + '\" height=\"' + obj.height + '\"' +\r\n// ' src=\"' + me.options.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif\" style=\"background:url(' + obj.logo+') no-repeat center center; border:1px solid gray;\" class=\"edui-faked-webapp\" _url=\"' + obj.url + '\" />' +\r\n// (addParagraph ? '</p>' : '')\r\n// :\r\n// '<iframe class=\"edui-faked-webapp\" title=\"'+obj.title+'\" width=\"' + obj.width + '\" height=\"' + obj.height + '\" scrolling=\"no\" frameborder=\"0\" src=\"' + obj.url + '\" logo_url = '+obj.logo+'></iframe>';\r\n// }\r\n//\r\n// function switchImgAndIframe( img2frame ) {\r\n// var tmpdiv,\r\n// nodes = domUtils.getElementsByTagName( me.document, !img2frame ? \"iframe\" : \"img\" );\r\n// for ( var i = 0, node; node = nodes[i++]; ) {\r\n// if ( node.className != \"edui-faked-webapp\" ){\r\n// continue;\r\n// }\r\n// tmpdiv = me.document.createElement( \"div\" );\r\n// tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( \"_url\" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace(\"url(\",\"\").replace(\")\",\"\")} : {url:node.getAttribute( \"src\", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute(\"logo_url\")}, img2frame ? true : false,false );\r\n// node.parentNode.replaceChild( tmpdiv.firstChild, node );\r\n// }\r\n// }\r\n//\r\n// me.addListener( \"beforegetcontent\", function () {\r\n// switchImgAndIframe( true );\r\n// } );\r\n// me.addListener( 'aftersetcontent', function () {\r\n// switchImgAndIframe( false );\r\n// } );\r\n// me.addListener( 'aftergetcontent', function ( cmdName ) {\r\n// if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){\r\n// return;\r\n// }\r\n// switchImgAndIframe( false );\r\n// } );\r\n//\r\n// me.commands['webapp'] = {\r\n// execCommand:function ( cmd, obj ) {\r\n// me.execCommand( \"inserthtml\", createInsertStr( obj, false,true ) );\r\n// }\r\n// };\r\n//};\r\n\r\nUE.plugin.register('webapp', function (){\r\n var me = this;\r\n function createInsertStr(obj,toEmbed){\r\n return !toEmbed ?\r\n '<img title=\"'+obj.title+'\" width=\"' + obj.width + '\" height=\"' + obj.height + '\"' +\r\n ' src=\"' + me.options.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif\" _logo_url=\"'+obj.logo+'\" style=\"background:url(' + obj.logo\r\n +') no-repeat center center; border:1px solid gray;\" class=\"edui-faked-webapp\" _url=\"' + obj.url + '\" ' +\r\n (obj.align && !obj.cssfloat? 'align=\"' + obj.align + '\"' : '') +\r\n (obj.cssfloat ? 'style=\"float:' + obj.cssfloat + '\"' : '') +\r\n '/>'\r\n :\r\n '<iframe class=\"edui-faked-webapp\" title=\"'+obj.title+'\" ' +\r\n (obj.align && !obj.cssfloat? 'align=\"' + obj.align + '\"' : '') +\r\n (obj.cssfloat ? 'style=\"float:' + obj.cssfloat + '\"' : '') +\r\n 'width=\"' + obj.width + '\" height=\"' + obj.height + '\" scrolling=\"no\" frameborder=\"0\" src=\"' + obj.url + '\" logo_url = \"'+obj.logo+'\"></iframe>'\r\n\r\n }\r\n return {\r\n outputRule: function(root){\r\n utils.each(root.getNodesByTagName('img'),function(node){\r\n var html;\r\n if(node.getAttr('class') == 'edui-faked-webapp'){\r\n html = createInsertStr({\r\n title:node.getAttr('title'),\r\n 'width':node.getAttr('width'),\r\n 'height':node.getAttr('height'),\r\n 'align':node.getAttr('align'),\r\n 'cssfloat':node.getStyle('float'),\r\n 'url':node.getAttr(\"_url\"),\r\n 'logo':node.getAttr('_logo_url')\r\n },true);\r\n var embed = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(embed,node);\r\n }\r\n })\r\n },\r\n inputRule:function(root){\r\n utils.each(root.getNodesByTagName('iframe'),function(node){\r\n if(node.getAttr('class') == 'edui-faked-webapp'){\r\n var img = UE.uNode.createElement(createInsertStr({\r\n title:node.getAttr('title'),\r\n 'width':node.getAttr('width'),\r\n 'height':node.getAttr('height'),\r\n 'align':node.getAttr('align'),\r\n 'cssfloat':node.getStyle('float'),\r\n 'url':node.getAttr(\"src\"),\r\n 'logo':node.getAttr('logo_url')\r\n }));\r\n node.parentNode.replaceChild(img,node);\r\n }\r\n })\r\n\r\n },\r\n commands:{\r\n /**\r\n * 插入百度应用\r\n * @command webapp\r\n * @method execCommand\r\n * @remind 需要百度APPKey\r\n * @remind 百度应用主页: <a href=\"http://app.baidu.com/\" target=\"_blank\">http://app.baidu.com/</a>\r\n * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,\r\n * height=>应用容器高度,logo=>应用logo,url=>应用地址\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'webapp' , {\r\n * title: '植物大战僵尸',\r\n * width: 560,\r\n * height: 465,\r\n * logo: '应用展示的图片',\r\n * url: '百度应用的地址'\r\n * } );\r\n * ```\r\n */\r\n 'webapp':{\r\n execCommand:function (cmd, obj) {\r\n\r\n var me = this,\r\n str = createInsertStr(utils.extend(obj,{\r\n align:'none'\r\n }), false);\r\n me.execCommand(\"inserthtml\",str);\r\n },\r\n queryCommandState:function () {\r\n var me = this,\r\n img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-webapp\");\r\n return flag ? 1 : 0;\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/template.js\r\n///import core\r\n///import plugins\\inserthtml.js\r\n///import plugins\\cleardoc.js\r\n///commands 模板\r\n///commandsName template\r\n///commandsTitle 模板\r\n///commandsDialog dialogs\\template\r\nUE.plugins['template'] = function () {\r\n UE.commands['template'] = {\r\n execCommand:function (cmd, obj) {\r\n obj.html && this.execCommand(\"inserthtml\", obj.html);\r\n }\r\n };\r\n this.addListener(\"click\", function (type, evt) {\r\n var el = evt.target || evt.srcElement,\r\n range = this.selection.getRange();\r\n var tnode = domUtils.findParent(el, function (node) {\r\n if (node.className && domUtils.hasClass(node, \"ue_t\")) {\r\n return node;\r\n }\r\n }, true);\r\n tnode && range.selectNode(tnode).shrinkBoundary().select();\r\n });\r\n this.addListener(\"keydown\", function (type, evt) {\r\n var range = this.selection.getRange();\r\n if (!range.collapsed) {\r\n if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n var tnode = domUtils.findParent(range.startContainer, function (node) {\r\n if (node.className && domUtils.hasClass(node, \"ue_t\")) {\r\n return node;\r\n }\r\n }, true);\r\n if (tnode) {\r\n domUtils.removeClasses(tnode, [\"ue_t\"]);\r\n }\r\n }\r\n }\r\n });\r\n};\r\n\r\n\r\n// plugins/music.js\r\n/**\r\n * 插入音乐命令\r\n * @file\r\n */\r\nUE.plugin.register('music', function (){\r\n var me = this;\r\n function creatInsertStr(url,width,height,align,cssfloat,toEmbed){\r\n return !toEmbed ?\r\n '<img ' +\r\n (align && !cssfloat? 'align=\"' + align + '\"' : '') +\r\n (cssfloat ? 'style=\"float:' + cssfloat + '\"' : '') +\r\n ' width=\"'+ width +'\" height=\"' + height + '\" _url=\"'+url+'\" class=\"edui-faked-music\"' +\r\n ' src=\"'+me.options.langPath+me.options.lang+'/images/music.png\" />'\r\n :\r\n '<embed type=\"application/x-shockwave-flash\" class=\"edui-faked-music\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"' +\r\n ' src=\"' + url + '\" width=\"' + width + '\" height=\"' + height + '\" '+ (align && !cssfloat? 'align=\"' + align + '\"' : '') +\r\n (cssfloat ? 'style=\"float:' + cssfloat + '\"' : '') +\r\n ' wmode=\"transparent\" play=\"true\" loop=\"false\" menu=\"false\" allowscriptaccess=\"never\" allowfullscreen=\"true\" >';\r\n }\r\n return {\r\n outputRule: function(root){\r\n utils.each(root.getNodesByTagName('img'),function(node){\r\n var html;\r\n if(node.getAttr('class') == 'edui-faked-music'){\r\n var cssfloat = node.getStyle('float');\r\n var align = node.getAttr('align');\r\n html = creatInsertStr(node.getAttr(\"_url\"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, true);\r\n var embed = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(embed,node);\r\n }\r\n })\r\n },\r\n inputRule:function(root){\r\n utils.each(root.getNodesByTagName('embed'),function(node){\r\n if(node.getAttr('class') == 'edui-faked-music'){\r\n var cssfloat = node.getStyle('float');\r\n var align = node.getAttr('align');\r\n html = creatInsertStr(node.getAttr(\"src\"), node.getAttr('width'), node.getAttr('height'), align, cssfloat,false);\r\n var img = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(img,node);\r\n }\r\n })\r\n\r\n },\r\n commands:{\r\n /**\r\n * 插入音乐\r\n * @command music\r\n * @method execCommand\r\n * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址;\r\n * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'music' , {\r\n * width: 400,\r\n * height: 95,\r\n * align: \"center\",\r\n * url: \"音乐地址\"\r\n * } );\r\n * ```\r\n */\r\n 'music':{\r\n execCommand:function (cmd, musicObj) {\r\n var me = this,\r\n str = creatInsertStr(musicObj.url, musicObj.width || 400, musicObj.height || 95, \"none\", false);\r\n me.execCommand(\"inserthtml\",str);\r\n },\r\n queryCommandState:function () {\r\n var me = this,\r\n img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-music\");\r\n return flag ? 1 : 0;\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/autoupload.js\r\n/**\r\n * @description\r\n * 1.拖放文件到编辑区域,自动上传并插入到选区\r\n * 2.插入粘贴板的图片,自动上传并插入到选区\r\n * @author Jinqn\r\n * @date 2013-10-14\r\n */\r\nUE.plugin.register('autoupload', function (){\r\n\r\n function sendAndInsertFile(file, editor) {\r\n var me = editor;\r\n //模拟数据\r\n var fieldName, urlPrefix, maxSize, allowFiles, actionUrl,\r\n loadingHtml, errorHandler, successHandler,\r\n filetype = /image\\/\\w+/i.test(file.type) ? 'image':'file',\r\n loadingId = 'loading_' + (+new Date()).toString(36);\r\n\r\n fieldName = me.getOpt(filetype + 'FieldName');\r\n urlPrefix = me.getOpt(filetype + 'UrlPrefix');\r\n maxSize = me.getOpt(filetype + 'MaxSize');\r\n allowFiles = me.getOpt(filetype + 'AllowFiles');\r\n actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName'));\r\n errorHandler = function(title) {\r\n var loader = me.document.getElementById(loadingId);\r\n loader && domUtils.remove(loader);\r\n me.fireEvent('showmessage', {\r\n 'id': loadingId,\r\n 'content': title,\r\n 'type': 'error',\r\n 'timeout': 4000\r\n });\r\n };\r\n\r\n if (filetype == 'image') {\r\n loadingHtml = '<img class=\"loadingclass\" id=\"' + loadingId + '\" src=\"' +\r\n me.options.themePath + me.options.theme +\r\n '/images/spacer.gif\" title=\"' + (me.getLang('autoupload.loading') || '') + '\" >';\r\n successHandler = function(data) {\r\n var link = urlPrefix + data.url,\r\n loader = me.document.getElementById(loadingId);\r\n if (loader) {\r\n loader.setAttribute('src', link);\r\n loader.setAttribute('_src', link);\r\n loader.setAttribute('title', data.title || '');\r\n loader.setAttribute('alt', data.original || '');\r\n loader.removeAttribute('id');\r\n domUtils.removeClasses(loader, 'loadingclass');\r\n }\r\n };\r\n } else {\r\n loadingHtml = '<p>' +\r\n '<img class=\"loadingclass\" id=\"' + loadingId + '\" src=\"' +\r\n me.options.themePath + me.options.theme +\r\n '/images/spacer.gif\" title=\"' + (me.getLang('autoupload.loading') || '') + '\" >' +\r\n '</p>';\r\n successHandler = function(data) {\r\n var link = urlPrefix + data.url,\r\n loader = me.document.getElementById(loadingId);\r\n\r\n var rng = me.selection.getRange(),\r\n bk = rng.createBookmark();\r\n rng.selectNode(loader).select();\r\n me.execCommand('insertfile', {'url': link});\r\n rng.moveToBookmark(bk).select();\r\n };\r\n }\r\n\r\n /* 插入loading的占位符 */\r\n me.execCommand('inserthtml', loadingHtml);\r\n\r\n /* 判断后端配置是否没有加载成功 */\r\n if (!me.getOpt(filetype + 'ActionName')) {\r\n errorHandler(me.getLang('autoupload.errorLoadConfig'));\r\n return;\r\n }\r\n /* 判断文件大小是否超出限制 */\r\n if(file.size > maxSize) {\r\n errorHandler(me.getLang('autoupload.exceedSizeError'));\r\n return;\r\n }\r\n /* 判断文件格式是否超出允许 */\r\n var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')):'';\r\n if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\r\n errorHandler(me.getLang('autoupload.exceedTypeError'));\r\n return;\r\n }\r\n\r\n /* 创建Ajax并提交 */\r\n var xhr = new XMLHttpRequest(),\r\n fd = new FormData(),\r\n params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',\r\n url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params);\r\n\r\n fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length)));\r\n fd.append('type', 'ajax');\r\n xhr.open(\"post\", url, true);\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n xhr.addEventListener('load', function (e) {\r\n try{\r\n var json = (new Function(\"return \" + utils.trim(e.target.response)))();\r\n if (json.state == 'SUCCESS' && json.url) {\r\n successHandler(json);\r\n } else {\r\n errorHandler(json.state);\r\n }\r\n }catch(er){\r\n errorHandler(me.getLang('autoupload.loadError'));\r\n }\r\n });\r\n xhr.send(fd);\r\n }\r\n\r\n function getPasteImage(e){\r\n return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items:null;\r\n }\r\n function getDropImage(e){\r\n return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files:null;\r\n }\r\n\r\n return {\r\n outputRule: function(root){\r\n utils.each(root.getNodesByTagName('img'),function(n){\r\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n utils.each(root.getNodesByTagName('p'),function(n){\r\n if (/\\bloadpara\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n },\r\n bindEvents:{\r\n //插入粘贴板的图片,拖放插入图片\r\n 'ready':function(e){\r\n var me = this;\r\n if(window.FormData && window.FileReader) {\r\n domUtils.on(me.body, 'paste drop', function(e){\r\n var hasImg = false,\r\n items;\r\n //获取粘贴板文件列表或者拖放文件列表\r\n items = e.type == 'paste' ? getPasteImage(e):getDropImage(e);\r\n if(items){\r\n var len = items.length,\r\n file;\r\n while (len--){\r\n file = items[len];\r\n if(file.getAsFile) file = file.getAsFile();\r\n if(file && file.size > 0) {\r\n sendAndInsertFile(file, me);\r\n hasImg = true;\r\n }\r\n }\r\n hasImg && e.preventDefault();\r\n }\r\n\r\n });\r\n //取消拖放图片时出现的文字光标位置提示\r\n domUtils.on(me.body, 'dragover', function (e) {\r\n if(e.dataTransfer.types[0] == 'Files') {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //设置loading的样式\r\n utils.cssRule('loading',\r\n '.loadingclass{display:inline-block;cursor:default;background: url(\\''\r\n + this.options.themePath\r\n + this.options.theme +'/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\\n' +\r\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\''\r\n + this.options.themePath\r\n + this.options.theme +'/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\r\n '}',\r\n this.document);\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/autosave.js\r\nUE.plugin.register('autosave', function (){\r\n\r\n var me = this,\r\n //无限循环保护\r\n lastSaveTime = new Date(),\r\n //最小保存间隔时间\r\n MIN_TIME = 20,\r\n //auto save key\r\n saveKey = null;\r\n\r\n function save ( editor ) {\r\n\r\n var saveData;\r\n\r\n if ( new Date() - lastSaveTime < MIN_TIME ) {\r\n return;\r\n }\r\n\r\n if ( !editor.hasContents() ) {\r\n //这里不能调用命令来删除, 会造成事件死循环\r\n saveKey && me.removePreferences( saveKey );\r\n return;\r\n }\r\n\r\n lastSaveTime = new Date();\r\n\r\n editor._saveFlag = null;\r\n\r\n saveData = me.body.innerHTML;\r\n\r\n if ( editor.fireEvent( \"beforeautosave\", {\r\n content: saveData\r\n } ) === false ) {\r\n return;\r\n }\r\n\r\n me.setPreferences( saveKey, saveData );\r\n\r\n editor.fireEvent( \"afterautosave\", {\r\n content: saveData\r\n } );\r\n\r\n }\r\n\r\n return {\r\n defaultOptions: {\r\n //默认间隔时间\r\n saveInterval: 500,\r\n enableAutoSave: true // HaoChuan9421\r\n },\r\n bindEvents:{\r\n 'ready':function(){\r\n\r\n var _suffix = \"-drafts-data\",\r\n key = null;\r\n\r\n if ( me.key ) {\r\n key = me.key + _suffix;\r\n } else {\r\n key = ( me.container.parentNode.id || 'ue-common' ) + _suffix;\r\n }\r\n\r\n //页面地址+编辑器ID 保持唯一\r\n saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\\/]/g, '_' ) + key;\r\n\r\n },\r\n\r\n 'contentchange': function () {\r\n // HaoChuan9421\r\n if (!me.getOpt('enableAutoSave')) {\r\n return;\r\n }\r\n\r\n if ( !saveKey ) {\r\n return;\r\n }\r\n\r\n if ( me._saveFlag ) {\r\n window.clearTimeout( me._saveFlag );\r\n }\r\n\r\n if ( me.options.saveInterval > 0 ) {\r\n\r\n me._saveFlag = window.setTimeout( function () {\r\n\r\n save( me );\r\n\r\n }, me.options.saveInterval );\r\n\r\n } else {\r\n\r\n save(me);\r\n\r\n }\r\n\r\n\r\n }\r\n },\r\n commands:{\r\n 'clearlocaldata':{\r\n execCommand:function (cmd, name) {\r\n if ( saveKey && me.getPreferences( saveKey ) ) {\r\n me.removePreferences( saveKey )\r\n }\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange:true\r\n },\r\n\r\n 'getlocaldata':{\r\n execCommand:function (cmd, name) {\r\n return saveKey ? me.getPreferences( saveKey ) || '' : '';\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange:true\r\n },\r\n\r\n 'drafts':{\r\n execCommand:function (cmd, name) {\r\n if ( saveKey ) {\r\n me.body.innerHTML = me.getPreferences( saveKey ) || '<p>'+domUtils.fillHtml+'</p>';\r\n me.focus(true);\r\n }\r\n },\r\n queryCommandState: function () {\r\n return saveKey ? ( me.getPreferences( saveKey ) === null ? -1 : 0 ) : -1;\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange:true\r\n }\r\n }\r\n }\r\n\r\n});\r\n\r\n// plugins/charts.js\r\nUE.plugin.register('charts', function (){\r\n\r\n var me = this;\r\n\r\n return {\r\n bindEvents: {\r\n 'chartserror': function () {\r\n }\r\n },\r\n commands:{\r\n 'charts': {\r\n execCommand: function ( cmd, data ) {\r\n\r\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true),\r\n flagText = [],\r\n config = {};\r\n\r\n if ( !tableNode ) {\r\n return false;\r\n }\r\n\r\n if ( !validData( tableNode ) ) {\r\n me.fireEvent( \"chartserror\" );\r\n return false;\r\n }\r\n\r\n config.title = data.title || '';\r\n config.subTitle = data.subTitle || '';\r\n config.xTitle = data.xTitle || '';\r\n config.yTitle = data.yTitle || '';\r\n config.suffix = data.suffix || '';\r\n config.tip = data.tip || '';\r\n //数据对齐方式\r\n config.dataFormat = data.tableDataFormat || '';\r\n //图表类型\r\n config.chartType = data.chartType || 0;\r\n\r\n for ( var key in config ) {\r\n\r\n if ( !config.hasOwnProperty( key ) ) {\r\n continue;\r\n }\r\n\r\n flagText.push( key+\":\"+config[ key ] );\r\n\r\n }\r\n\r\n tableNode.setAttribute( \"data-chart\", flagText.join( \";\" ) );\r\n domUtils.addClass( tableNode, \"edui-charts-table\" );\r\n\r\n\r\n\r\n },\r\n queryCommandState: function ( cmd, name ) {\r\n\r\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true);\r\n return tableNode && validData( tableNode ) ? 0 : -1;\r\n\r\n }\r\n }\r\n },\r\n inputRule:function(root){\r\n utils.each(root.getNodesByTagName('table'),function( tableNode ){\r\n\r\n if ( tableNode.getAttr(\"data-chart\") !== undefined ) {\r\n tableNode.setAttr(\"style\");\r\n }\r\n\r\n })\r\n\r\n },\r\n outputRule:function(root){\r\n utils.each(root.getNodesByTagName('table'),function( tableNode ){\r\n\r\n if ( tableNode.getAttr(\"data-chart\") !== undefined ) {\r\n tableNode.setAttr(\"style\", \"display: none;\");\r\n }\r\n\r\n })\r\n\r\n }\r\n }\r\n\r\n function validData ( table ) {\r\n\r\n var firstRows = null,\r\n cellCount = 0;\r\n\r\n //行数不够\r\n if ( table.rows.length < 2 ) {\r\n return false;\r\n }\r\n\r\n //列数不够\r\n if ( table.rows[0].cells.length < 2 ) {\r\n return false;\r\n }\r\n\r\n //第一行所有cell必须是th\r\n firstRows = table.rows[ 0 ].cells;\r\n cellCount = firstRows.length;\r\n\r\n for ( var i = 0, cell; cell = firstRows[ i ]; i++ ) {\r\n\r\n if ( cell.tagName.toLowerCase() !== 'th' ) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n for ( var i = 1, row; row = table.rows[ i ]; i++ ) {\r\n\r\n //每行单元格数不匹配, 返回false\r\n if ( row.cells.length != cellCount ) {\r\n return false;\r\n }\r\n\r\n //第一列不是th也返回false\r\n if ( row.cells[0].tagName.toLowerCase() !== 'th' ) {\r\n return false;\r\n }\r\n\r\n for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {\r\n\r\n var value = utils.trim( ( cell.innerText || cell.textContent || '' ) );\r\n\r\n value = value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\\s+|\\s+$/g, '' );\r\n\r\n //必须是数字\r\n if ( !/^\\d*\\.?\\d+$/.test( value ) ) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n});\r\n\r\n// plugins/section.js\r\n/**\r\n * 目录大纲支持插件\r\n * @file\r\n * @since 1.3.0\r\n */\r\nUE.plugin.register('section', function (){\r\n /* 目录节点对象 */\r\n function Section(option){\r\n this.tag = '';\r\n this.level = -1,\r\n this.dom = null;\r\n this.nextSection = null;\r\n this.previousSection = null;\r\n this.parentSection = null;\r\n this.startAddress = [];\r\n this.endAddress = [];\r\n this.children = [];\r\n }\r\n function getSection(option) {\r\n var section = new Section();\r\n return utils.extend(section, option);\r\n }\r\n function getNodeFromAddress(startAddress, root) {\r\n var current = root;\r\n for(var i = 0;i < startAddress.length; i++) {\r\n if(!current.childNodes) return null;\r\n current = current.childNodes[startAddress[i]];\r\n }\r\n return current;\r\n }\r\n\r\n var me = this;\r\n\r\n return {\r\n bindMultiEvents:{\r\n type: 'aftersetcontent afterscencerestore',\r\n handler: function(){\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n bindEvents:{\r\n /* 初始化、拖拽、粘贴、执行setcontent之后 */\r\n 'ready': function (){\r\n me.fireEvent('updateSections');\r\n domUtils.on(me.body, 'drop paste', function(){\r\n me.fireEvent('updateSections');\r\n });\r\n },\r\n /* 执行paragraph命令之后 */\r\n 'afterexeccommand': function (type, cmd) {\r\n if(cmd == 'paragraph') {\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n /* 部分键盘操作,触发updateSections事件 */\r\n 'keyup': function (type, e) {\r\n var me = this,\r\n range = me.selection.getRange();\r\n if(range.collapsed != true) {\r\n me.fireEvent('updateSections');\r\n } else {\r\n var keyCode = e.keyCode || e.which;\r\n if(keyCode == 13 || keyCode == 8 || keyCode == 46) {\r\n me.fireEvent('updateSections');\r\n }\r\n }\r\n }\r\n },\r\n commands:{\r\n 'getsections': {\r\n execCommand: function (cmd, levels) {\r\n var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\r\n\r\n for (var i = 0; i < levelFn.length; i++) {\r\n if (typeof levelFn[i] == 'string') {\r\n levelFn[i] = function(fn){\r\n return function(node){\r\n return node.tagName == fn.toUpperCase()\r\n };\r\n }(levelFn[i]);\r\n } else if (typeof levelFn[i] != 'function') {\r\n levelFn[i] = function (node) {\r\n return null;\r\n }\r\n }\r\n }\r\n function getSectionLevel(node) {\r\n for (var i = 0; i < levelFn.length; i++) {\r\n if (levelFn[i](node)) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n var me = this,\r\n Directory = getSection({'level':-1, 'title':'root'}),\r\n previous = Directory;\r\n\r\n function traversal(node, Directory) {\r\n var level,\r\n tmpSection = null,\r\n parent,\r\n child,\r\n children = node.childNodes;\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n child = children[i];\r\n level = getSectionLevel(child);\r\n if (level >= 0) {\r\n var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress,\r\n current = getSection({\r\n 'tag': child.tagName,\r\n 'title': child.innerText || child.textContent || '',\r\n 'level': level,\r\n 'dom': child,\r\n 'startAddress': utils.clone(address, []),\r\n 'endAddress': utils.clone(address, []),\r\n 'children': []\r\n });\r\n previous.nextSection = current;\r\n current.previousSection = previous;\r\n parent = previous;\r\n while(level <= parent.level){\r\n parent = parent.parentSection;\r\n }\r\n current.parentSection = parent;\r\n parent.children.push(current);\r\n tmpSection = previous = current;\r\n } else {\r\n child.nodeType === 1 && traversal(child, Directory);\r\n tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1] ++;\r\n }\r\n }\r\n }\r\n traversal(me.body, Directory);\r\n return Directory;\r\n },\r\n notNeedUndo: true\r\n },\r\n 'movesection': {\r\n execCommand: function (cmd, sourceSection, targetSection, isAfter) {\r\n\r\n var me = this,\r\n targetAddress,\r\n target;\r\n\r\n if(!sourceSection || !targetSection || targetSection.level == -1) return;\r\n\r\n targetAddress = isAfter ? targetSection.endAddress:targetSection.startAddress;\r\n target = getNodeFromAddress(targetAddress, me.body);\r\n\r\n /* 判断目标地址是否被源章节包含 */\r\n if(!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return;\r\n\r\n var startNode = getNodeFromAddress(sourceSection.startAddress, me.body),\r\n endNode = getNodeFromAddress(sourceSection.endAddress, me.body),\r\n current,\r\n nextNode;\r\n\r\n if(isAfter) {\r\n current = endNode;\r\n while ( current && !(domUtils.getPosition( startNode, current ) & domUtils.POSITION_FOLLOWING) ) {\r\n nextNode = current.previousSibling;\r\n domUtils.insertAfter(target, current);\r\n if(current == startNode) break;\r\n current = nextNode;\r\n }\r\n } else {\r\n current = startNode;\r\n while ( current && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) {\r\n nextNode = current.nextSibling;\r\n target.parentNode.insertBefore(current, target);\r\n if(current == endNode) break;\r\n current = nextNode;\r\n }\r\n }\r\n\r\n me.fireEvent('updateSections');\r\n\r\n /* 获取地址的包含关系 */\r\n function isContainsAddress(startAddress, endAddress, addressTarget){\r\n var isAfterStartAddress = false,\r\n isBeforeEndAddress = false;\r\n for(var i = 0; i< startAddress.length; i++){\r\n if(i >= addressTarget.length) break;\r\n if(addressTarget[i] > startAddress[i]) {\r\n isAfterStartAddress = true;\r\n break;\r\n } else if(addressTarget[i] < startAddress[i]) {\r\n break;\r\n }\r\n }\r\n for(var i = 0; i< endAddress.length; i++){\r\n if(i >= addressTarget.length) break;\r\n if(addressTarget[i] < startAddress[i]) {\r\n isBeforeEndAddress = true;\r\n break;\r\n } else if(addressTarget[i] > startAddress[i]) {\r\n break;\r\n }\r\n }\r\n return isAfterStartAddress && isBeforeEndAddress;\r\n }\r\n }\r\n },\r\n 'deletesection': {\r\n execCommand: function (cmd, section, keepChildren) {\r\n var me = this;\r\n\r\n if(!section) return;\r\n\r\n function getNodeFromAddress(startAddress) {\r\n var current = me.body;\r\n for(var i = 0;i < startAddress.length; i++) {\r\n if(!current.childNodes) return null;\r\n current = current.childNodes[startAddress[i]];\r\n }\r\n return current;\r\n }\r\n\r\n var startNode = getNodeFromAddress(section.startAddress),\r\n endNode = getNodeFromAddress(section.endAddress),\r\n current = startNode,\r\n nextNode;\r\n\r\n if(!keepChildren) {\r\n while ( current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) {\r\n nextNode = current.nextSibling;\r\n domUtils.remove(current);\r\n current = nextNode;\r\n }\r\n } else {\r\n domUtils.remove(current);\r\n }\r\n\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n 'selectsection': {\r\n execCommand: function (cmd, section) {\r\n if(!section && !section.dom) return false;\r\n var me = this,\r\n range = me.selection.getRange(),\r\n address = {\r\n 'startAddress':utils.clone(section.startAddress, []),\r\n 'endAddress':utils.clone(section.endAddress, [])\r\n };\r\n address.endAddress[address.endAddress.length - 1]++;\r\n range.moveToAddress(address).select().scrollToView();\r\n return true;\r\n },\r\n notNeedUndo: true\r\n },\r\n 'scrolltosection': {\r\n execCommand: function (cmd, section) {\r\n if(!section && !section.dom) return false;\r\n var me = this,\r\n range = me.selection.getRange(),\r\n address = {\r\n 'startAddress':section.startAddress,\r\n 'endAddress':section.endAddress\r\n };\r\n address.endAddress[address.endAddress.length - 1]++;\r\n range.moveToAddress(address).scrollToView();\r\n return true;\r\n },\r\n notNeedUndo: true\r\n }\r\n }\r\n }\r\n});\r\n\r\n// plugins/simpleupload.js\r\n/**\r\n * @description\r\n * 简单上传:点击按钮,直接选择文件上传。\r\n * 原 UEditor 作者使用了 form 表单 + iframe 的方式上传\r\n * 但由于同源策略的限制,父页面无法访问跨域的 iframe 内容\r\n * 导致无法获取接口返回的数据,使得单图上传无法在跨域的情况下使用\r\n * 这里改为普通的XHR上传,兼容到IE10+\r\n * @author HaoChuan9421 <hc199421@gmail.com>\r\n * @date 2018-12-20\r\n */\r\nUE.plugin.register('simpleupload', function() {\r\n var me = this,\r\n containerBtn,\r\n timestrap = (+new Date()).toString(36);\r\n\r\n function initUploadBtn() {\r\n var w = containerBtn.offsetWidth || 20,\r\n h = containerBtn.offsetHeight || 20,\r\n btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;';\r\n\r\n var form = document.createElement('form');\r\n var input = document.createElement('input');\r\n form.id = 'edui_form_' + timestrap;\r\n form.enctype = 'multipart/form-data';\r\n form.style = btnStyle;\r\n input.id = 'edui_input_' + timestrap;\r\n input.type = 'file'\r\n input.accept = 'image/*';\r\n input.name = me.options.imageFieldName;\r\n input.style = btnStyle;\r\n form.appendChild(input);\r\n containerBtn.appendChild(form);\r\n\r\n input.addEventListener('change', function(event) {\r\n if (!input.value) return;\r\n var loadingId = 'loading_' + (+new Date()).toString(36);\r\n var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName'));\r\n var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';\r\n var action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params);\r\n var allowFiles = me.getOpt('imageAllowFiles');\r\n me.focus();\r\n me.execCommand('inserthtml', '<img class=\"loadingclass\" id=\"' + loadingId + '\" src=\"' + me.options.themePath + me.options.theme + '/images/spacer.gif\" title=\"' + (me.getLang('simpleupload.loading') || '') + '\" >');\r\n\r\n function showErrorLoader(title) {\r\n if (loadingId) {\r\n var loader = me.document.getElementById(loadingId);\r\n loader && domUtils.remove(loader);\r\n me.fireEvent('showmessage', {\r\n 'id': loadingId,\r\n 'content': title,\r\n 'type': 'error',\r\n 'timeout': 4000\r\n });\r\n }\r\n }\r\n /* 判断后端配置是否没有加载成功 */\r\n if (!me.getOpt('imageActionName')) {\r\n showErrorLoader(me.getLang('autoupload.errorLoadConfig'));\r\n return;\r\n }\r\n // 判断文件格式是否错误\r\n var filename = input.value,\r\n fileext = filename ? filename.substr(filename.lastIndexOf('.')) : '';\r\n if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\r\n showErrorLoader(me.getLang('simpleupload.exceedTypeError'));\r\n return;\r\n }\r\n\r\n var xhr = new XMLHttpRequest()\r\n xhr.open('post', action, true)\r\n if (me.options.headers && Object.prototype.toString.apply(me.options.headers) === \"[object Object]\") {\r\n for (var key in me.options.headers) {\r\n xhr.setRequestHeader(key, me.options.headers[key])\r\n }\r\n }\r\n xhr.onload = function() {\r\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {\r\n var res = JSON.parse(xhr.responseText)\r\n var link = me.options.imageUrlPrefix + res.url;\r\n\r\n if (res.state == 'SUCCESS' && res.url) {\r\n loader = me.document.getElementById(loadingId);\r\n loader.setAttribute('src', link);\r\n loader.setAttribute('_src', link);\r\n loader.setAttribute('title', res.title || '');\r\n loader.setAttribute('alt', res.original || '');\r\n loader.removeAttribute('id');\r\n domUtils.removeClasses(loader, 'loadingclass');\r\n me.fireEvent(\"contentchange\");\r\n } else {\r\n showErrorLoader(res.state);\r\n }\r\n } else {\r\n showErrorLoader(me.getLang('simpleupload.loadError'));\r\n }\r\n };\r\n xhr.onerror = function() {\r\n showErrorLoader(me.getLang('simpleupload.loadError'));\r\n };\r\n xhr.send(new FormData(form));\r\n form.reset();\r\n })\r\n }\r\n\r\n return {\r\n bindEvents: {\r\n 'ready': function() {\r\n //设置loading的样式\r\n utils.cssRule('loading',\r\n '.loadingclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\\n' +\r\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\r\n '}',\r\n this.document);\r\n },\r\n /* 初始化简单上传按钮 */\r\n 'simpleuploadbtnready': function(type, container) {\r\n containerBtn = container;\r\n me.afterConfigReady(initUploadBtn);\r\n }\r\n },\r\n outputRule: function(root) {\r\n utils.each(root.getNodesByTagName('img'), function(n) {\r\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n }\r\n }\r\n});\r\n\r\n// plugins/serverparam.js\r\n/**\r\n * 服务器提交的额外参数列表设置插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\nUE.plugin.register('serverparam', function (){\r\n\r\n var me = this,\r\n serverParam = {};\r\n\r\n return {\r\n commands:{\r\n /**\r\n * 修改服务器提交的额外参数列表,清除所有项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam');\r\n * editor.queryCommandValue('serverparam'); //返回空\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,删除指定项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } key 要清除的属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', 'name'); //删除属性name\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,使用键值添加项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } key 要添加的属性\r\n * @param { String } value 要添加属性的值\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', 'name', 'hello');\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,传入键值对对象添加多项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } key 传入的键值对对象\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', {'name': 'hello'});\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,使用自定义函数添加多项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Function } key 自定义获取参数的函数\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', function(editor){\r\n * return {'key': 'value'};\r\n * });\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'}\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取服务器提交的额外参数列表\r\n * @command serverparam\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'}\r\n * ```\r\n */\r\n 'serverparam':{\r\n execCommand:function (cmd, key, value) {\r\n if (key === undefined || key === null) { //不传参数,清空列表\r\n serverParam = {};\r\n } else if (utils.isString(key)) { //传入键值\r\n if(value === undefined || value === null) {\r\n delete serverParam[key];\r\n } else {\r\n serverParam[key] = value;\r\n }\r\n } else if (utils.isObject(key)) { //传入对象,覆盖列表项\r\n utils.extend(serverParam, key, true);\r\n } else if (utils.isFunction(key)){ //传入函数,添加列表项\r\n utils.extend(serverParam, key(), true);\r\n }\r\n },\r\n queryCommandValue: function(){\r\n return serverParam || {};\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\r\n// plugins/insertfile.js\r\n/**\r\n * 插入附件\r\n */\r\nUE.plugin.register('insertfile', function (){\r\n\r\n var me = this;\r\n\r\n function getFileIcon(url){\r\n var ext = url.substr(url.lastIndexOf('.') + 1).toLowerCase(),\r\n maps = {\r\n \"rar\":\"icon_rar.gif\",\r\n \"zip\":\"icon_rar.gif\",\r\n \"tar\":\"icon_rar.gif\",\r\n \"gz\":\"icon_rar.gif\",\r\n \"bz2\":\"icon_rar.gif\",\r\n \"doc\":\"icon_doc.gif\",\r\n \"docx\":\"icon_doc.gif\",\r\n \"pdf\":\"icon_pdf.gif\",\r\n \"mp3\":\"icon_mp3.gif\",\r\n \"xls\":\"icon_xls.gif\",\r\n \"chm\":\"icon_chm.gif\",\r\n \"ppt\":\"icon_ppt.gif\",\r\n \"pptx\":\"icon_ppt.gif\",\r\n \"avi\":\"icon_mv.gif\",\r\n \"rmvb\":\"icon_mv.gif\",\r\n \"wmv\":\"icon_mv.gif\",\r\n \"flv\":\"icon_mv.gif\",\r\n \"swf\":\"icon_mv.gif\",\r\n \"rm\":\"icon_mv.gif\",\r\n \"exe\":\"icon_exe.gif\",\r\n \"psd\":\"icon_psd.gif\",\r\n \"txt\":\"icon_txt.gif\",\r\n \"jpg\":\"icon_jpg.gif\",\r\n \"png\":\"icon_jpg.gif\",\r\n \"jpeg\":\"icon_jpg.gif\",\r\n \"gif\":\"icon_jpg.gif\",\r\n \"ico\":\"icon_jpg.gif\",\r\n \"bmp\":\"icon_jpg.gif\"\r\n };\r\n return maps[ext] ? maps[ext]:maps['txt'];\r\n }\r\n\r\n return {\r\n commands:{\r\n 'insertfile': {\r\n execCommand: function (command, filelist){\r\n filelist = utils.isArray(filelist) ? filelist : [filelist];\r\n\r\n var i, item, icon, title,\r\n html = '',\r\n URL = me.getOpt('UEDITOR_HOME_URL'),\r\n iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '':'/') + 'dialogs/attachment/fileTypeImages/';\r\n for (i = 0; i < filelist.length; i++) {\r\n item = filelist[i];\r\n icon = iconDir + getFileIcon(item.url);\r\n title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1);\r\n html += '<p style=\"line-height: 16px;\">' +\r\n '<img style=\"vertical-align: middle; margin-right: 2px;\" src=\"'+ icon + '\" _src=\"' + icon + '\" />' +\r\n '<a style=\"font-size:12px; color:#0066cc;\" href=\"' + item.url +'\" title=\"' + title + '\">' + title + '</a>' +\r\n '</p>';\r\n }\r\n me.execCommand('insertHtml', html);\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\n\r\n\r\n\r\n// plugins/xssFilter.js\r\n/**\r\n * @file xssFilter.js\r\n * @desc xss过滤器\r\n * @author robbenmu\r\n */\r\n\r\nUE.plugins.xssFilter = function() {\r\n\r\n\tvar config = UEDITOR_CONFIG;\r\n\tvar whitList = config.whitList;\r\n\r\n\tfunction filter(node) {\r\n\r\n\t\tvar tagName = node.tagName;\r\n\t\tvar attrs = node.attrs;\r\n\r\n\t\tif (!whitList.hasOwnProperty(tagName)) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tUE.utils.each(attrs, function (val, key) {\r\n\r\n\t\t\tif (whitList[tagName].indexOf(key) === -1) {\r\n\t\t\t\tnode.setAttr(key);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// 添加inserthtml\\paste等操作用的过滤规则\r\n\tif (whitList && config.xssFilterRules) {\r\n\t\tthis.options.filterRules = function () {\r\n\r\n\t\t\tvar result = {};\r\n\r\n\t\t\tUE.utils.each(whitList, function(val, key) {\r\n\t\t\t\tresult[key] = function (node) {\r\n\t\t\t\t\treturn filter(node);\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\treturn result;\r\n\t\t}();\r\n\t}\r\n\r\n\tvar tagList = [];\r\n\r\n\tUE.utils.each(whitList, function (val, key) {\r\n\t\ttagList.push(key);\r\n\t});\r\n\r\n\t// 添加input过滤规则\r\n\t//\r\n\tif (whitList && config.inputXssFilter) {\r\n\t\tthis.addInputRule(function (root) {\r\n\r\n\t\t\troot.traversal(function(node) {\r\n\t\t\t\tif (node.type !== 'element') {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tfilter(node);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\t// 添加output过滤规则\r\n\t//\r\n\tif (whitList && config.outputXssFilter) {\r\n\t\tthis.addOutputRule(function (root) {\r\n\r\n\t\t\troot.traversal(function(node) {\r\n\t\t\t\tif (node.type !== 'element') {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tfilter(node);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n};\r\n\r\n\r\n// ui/ui.js\r\nvar baidu = baidu || {};\r\nbaidu.editor = baidu.editor || {};\r\nUE.ui = baidu.editor.ui = {};\r\n\r\n// ui/uiutils.js\r\n(function (){\r\n var browser = baidu.editor.browser,\r\n domUtils = baidu.editor.dom.domUtils;\r\n\r\n var magic = '$EDITORUI';\r\n var root = window[magic] = {};\r\n var uidMagic = 'ID' + magic;\r\n var uidCount = 0;\r\n\r\n var uiUtils = baidu.editor.ui.uiUtils = {\r\n uid: function (obj){\r\n return (obj ? obj[uidMagic] || (obj[uidMagic] = ++ uidCount) : ++ uidCount);\r\n },\r\n hook: function ( fn, callback ) {\r\n var dg;\r\n if (fn && fn._callbacks) {\r\n dg = fn;\r\n } else {\r\n dg = function (){\r\n var q;\r\n if (fn) {\r\n q = fn.apply(this, arguments);\r\n }\r\n var callbacks = dg._callbacks;\r\n var k = callbacks.length;\r\n while (k --) {\r\n var r = callbacks[k].apply(this, arguments);\r\n if (q === undefined) {\r\n q = r;\r\n }\r\n }\r\n return q;\r\n };\r\n dg._callbacks = [];\r\n }\r\n dg._callbacks.push(callback);\r\n return dg;\r\n },\r\n createElementByHtml: function (html){\r\n var el = document.createElement('div');\r\n el.innerHTML = html;\r\n el = el.firstChild;\r\n el.parentNode.removeChild(el);\r\n return el;\r\n },\r\n getViewportElement: function (){\r\n return (browser.ie && browser.quirks) ?\r\n document.body : document.documentElement;\r\n },\r\n getClientRect: function (element){\r\n var bcr;\r\n //trace IE6下在控制编辑器显隐时可能会报错,catch一下\r\n try{\r\n bcr = element.getBoundingClientRect();\r\n }catch(e){\r\n bcr={left:0,top:0,height:0,width:0}\r\n }\r\n var rect = {\r\n left: Math.round(bcr.left),\r\n top: Math.round(bcr.top),\r\n height: Math.round(bcr.bottom - bcr.top),\r\n width: Math.round(bcr.right - bcr.left)\r\n };\r\n var doc;\r\n while ((doc = element.ownerDocument) !== document &&\r\n (element = domUtils.getWindow(doc).frameElement)) {\r\n bcr = element.getBoundingClientRect();\r\n rect.left += bcr.left;\r\n rect.top += bcr.top;\r\n }\r\n rect.bottom = rect.top + rect.height;\r\n rect.right = rect.left + rect.width;\r\n return rect;\r\n },\r\n getViewportRect: function (){\r\n var viewportEl = uiUtils.getViewportElement();\r\n var width = (window.innerWidth || viewportEl.clientWidth) | 0;\r\n var height = (window.innerHeight ||viewportEl.clientHeight) | 0;\r\n return {\r\n left: 0,\r\n top: 0,\r\n height: height,\r\n width: width,\r\n bottom: height,\r\n right: width\r\n };\r\n },\r\n setViewportOffset: function (element, offset){\r\n var rect;\r\n var fixedLayer = uiUtils.getFixedLayer();\r\n if (element.parentNode === fixedLayer) {\r\n element.style.left = offset.left + 'px';\r\n element.style.top = offset.top + 'px';\r\n } else {\r\n domUtils.setViewportOffset(element, offset);\r\n }\r\n },\r\n getEventOffset: function (evt){\r\n var el = evt.target || evt.srcElement;\r\n var rect = uiUtils.getClientRect(el);\r\n var offset = uiUtils.getViewportOffsetByEvent(evt);\r\n return {\r\n left: offset.left - rect.left,\r\n top: offset.top - rect.top\r\n };\r\n },\r\n getViewportOffsetByEvent: function (evt){\r\n var el = evt.target || evt.srcElement;\r\n var frameEl = domUtils.getWindow(el).frameElement;\r\n var offset = {\r\n left: evt.clientX,\r\n top: evt.clientY\r\n };\r\n if (frameEl && el.ownerDocument !== document) {\r\n var rect = uiUtils.getClientRect(frameEl);\r\n offset.left += rect.left;\r\n offset.top += rect.top;\r\n }\r\n return offset;\r\n },\r\n setGlobal: function (id, obj){\r\n root[id] = obj;\r\n return magic + '[\"' + id + '\"]';\r\n },\r\n unsetGlobal: function (id){\r\n delete root[id];\r\n },\r\n copyAttributes: function (tgt, src){\r\n var attributes = src.attributes;\r\n var k = attributes.length;\r\n while (k --) {\r\n var attrNode = attributes[k];\r\n if ( attrNode.nodeName != 'style' && attrNode.nodeName != 'class' && (!browser.ie || attrNode.specified) ) {\r\n tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue);\r\n }\r\n }\r\n if (src.className) {\r\n domUtils.addClass(tgt,src.className);\r\n }\r\n if (src.style.cssText) {\r\n tgt.style.cssText += ';' + src.style.cssText;\r\n }\r\n },\r\n removeStyle: function (el, styleName){\r\n if (el.style.removeProperty) {\r\n el.style.removeProperty(styleName);\r\n } else if (el.style.removeAttribute) {\r\n el.style.removeAttribute(styleName);\r\n } else throw '';\r\n },\r\n contains: function (elA, elB){\r\n return elA && elB && (elA === elB ? false : (\r\n elA.contains ? elA.contains(elB) :\r\n elA.compareDocumentPosition(elB) & 16\r\n ));\r\n },\r\n startDrag: function (evt, callbacks,doc){\r\n var doc = doc || document;\r\n var startX = evt.clientX;\r\n var startY = evt.clientY;\r\n function handleMouseMove(evt){\r\n var x = evt.clientX - startX;\r\n var y = evt.clientY - startY;\r\n callbacks.ondragmove(x, y,evt);\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n }\r\n if (doc.addEventListener) {\r\n function handleMouseUp(evt){\r\n doc.removeEventListener('mousemove', handleMouseMove, true);\r\n doc.removeEventListener('mouseup', handleMouseUp, true);\r\n window.removeEventListener('mouseup', handleMouseUp, true);\r\n callbacks.ondragstop();\r\n }\r\n doc.addEventListener('mousemove', handleMouseMove, true);\r\n doc.addEventListener('mouseup', handleMouseUp, true);\r\n window.addEventListener('mouseup', handleMouseUp, true);\r\n\r\n evt.preventDefault();\r\n } else {\r\n var elm = evt.srcElement;\r\n elm.setCapture();\r\n function releaseCaptrue(){\r\n elm.releaseCapture();\r\n elm.detachEvent('onmousemove', handleMouseMove);\r\n elm.detachEvent('onmouseup', releaseCaptrue);\r\n elm.detachEvent('onlosecaptrue', releaseCaptrue);\r\n callbacks.ondragstop();\r\n }\r\n elm.attachEvent('onmousemove', handleMouseMove);\r\n elm.attachEvent('onmouseup', releaseCaptrue);\r\n elm.attachEvent('onlosecaptrue', releaseCaptrue);\r\n evt.returnValue = false;\r\n }\r\n callbacks.ondragstart();\r\n },\r\n getFixedLayer: function (){\r\n var layer = document.getElementById('edui_fixedlayer');\r\n if (layer == null) {\r\n layer = document.createElement('div');\r\n layer.id = 'edui_fixedlayer';\r\n document.body.appendChild(layer);\r\n if (browser.ie && browser.version <= 8) {\r\n layer.style.position = 'absolute';\r\n bindFixedLayer();\r\n setTimeout(updateFixedOffset);\r\n } else {\r\n layer.style.position = 'fixed';\r\n }\r\n layer.style.left = '0';\r\n layer.style.top = '0';\r\n layer.style.width = '0';\r\n layer.style.height = '0';\r\n }\r\n return layer;\r\n },\r\n makeUnselectable: function (element){\r\n if (browser.opera || (browser.ie && browser.version < 9)) {\r\n element.unselectable = 'on';\r\n if (element.hasChildNodes()) {\r\n for (var i=0; i<element.childNodes.length; i++) {\r\n if (element.childNodes[i].nodeType == 1) {\r\n uiUtils.makeUnselectable(element.childNodes[i]);\r\n }\r\n }\r\n }\r\n } else {\r\n if (element.style.MozUserSelect !== undefined) {\r\n element.style.MozUserSelect = 'none';\r\n } else if (element.style.WebkitUserSelect !== undefined) {\r\n element.style.WebkitUserSelect = 'none';\r\n } else if (element.style.KhtmlUserSelect !== undefined) {\r\n element.style.KhtmlUserSelect = 'none';\r\n }\r\n }\r\n }\r\n };\r\n function updateFixedOffset(){\r\n var layer = document.getElementById('edui_fixedlayer');\r\n uiUtils.setViewportOffset(layer, {\r\n left: 0,\r\n top: 0\r\n });\r\n// layer.style.display = 'none';\r\n// layer.style.display = 'block';\r\n\r\n //#trace: 1354\r\n// setTimeout(updateFixedOffset);\r\n }\r\n function bindFixedLayer(adjOffset){\r\n domUtils.on(window, 'scroll', updateFixedOffset);\r\n domUtils.on(window, 'resize', baidu.editor.utils.defer(updateFixedOffset, 0, true));\r\n }\r\n})();\r\n\r\n\r\n// ui/uibase.js\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n EventBase = baidu.editor.EventBase,\r\n UIBase = baidu.editor.ui.UIBase = function () {\r\n };\r\n\r\n UIBase.prototype = {\r\n className:'',\r\n uiName:'',\r\n initOptions:function (options) {\r\n var me = this;\r\n for (var k in options) {\r\n me[k] = options[k];\r\n }\r\n this.id = this.id || 'edui' + uiUtils.uid();\r\n },\r\n initUIBase:function () {\r\n this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this));\r\n },\r\n render:function (holder) {\r\n var html = this.renderHtml();\r\n var el = uiUtils.createElementByHtml(html);\r\n\r\n //by xuheng 给每个node添加class\r\n var list = domUtils.getElementsByTagName(el, \"*\");\r\n var theme = \"edui-\" + (this.theme || this.editor.options.theme);\r\n var layer = document.getElementById('edui_fixedlayer');\r\n for (var i = 0, node; node = list[i++];) {\r\n domUtils.addClass(node, theme);\r\n }\r\n domUtils.addClass(el, theme);\r\n if(layer){\r\n layer.className=\"\";\r\n domUtils.addClass(layer,theme);\r\n }\r\n\r\n var seatEl = this.getDom();\r\n if (seatEl != null) {\r\n seatEl.parentNode.replaceChild(el, seatEl);\r\n uiUtils.copyAttributes(el, seatEl);\r\n } else {\r\n if (typeof holder == 'string') {\r\n holder = document.getElementById(holder);\r\n }\r\n holder = holder || uiUtils.getFixedLayer();\r\n domUtils.addClass(holder, theme);\r\n holder.appendChild(el);\r\n }\r\n this.postRender();\r\n },\r\n getDom:function (name) {\r\n if (!name) {\r\n return document.getElementById(this.id);\r\n } else {\r\n return document.getElementById(this.id + '_' + name);\r\n }\r\n },\r\n postRender:function () {\r\n this.fireEvent('postrender');\r\n },\r\n getHtmlTpl:function () {\r\n return '';\r\n },\r\n formatHtml:function (tpl) {\r\n var prefix = 'edui-' + this.uiName;\r\n return (tpl\r\n .replace(/##/g, this.id)\r\n .replace(/%%-/g, this.uiName ? prefix + '-' : '')\r\n .replace(/%%/g, (this.uiName ? prefix : '') + ' ' + this.className)\r\n .replace(/\\$\\$/g, this._globalKey));\r\n },\r\n renderHtml:function () {\r\n return this.formatHtml(this.getHtmlTpl());\r\n },\r\n dispose:function () {\r\n var box = this.getDom();\r\n if (box) baidu.editor.dom.domUtils.remove(box);\r\n uiUtils.unsetGlobal(this.id);\r\n }\r\n };\r\n utils.inherits(UIBase, EventBase);\r\n})();\r\n\r\n\r\n// ui/separator.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Separator = baidu.editor.ui.Separator = function (options){\r\n this.initOptions(options);\r\n this.initSeparator();\r\n };\r\n Separator.prototype = {\r\n uiName: 'separator',\r\n initSeparator: function (){\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-box %%\"></div>';\r\n }\r\n };\r\n utils.inherits(Separator, UIBase);\r\n\r\n})();\r\n\r\n\r\n// ui/mask.js\r\n///import core\r\n///import uicore\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n uiUtils = baidu.editor.ui.uiUtils;\r\n \r\n var Mask = baidu.editor.ui.Mask = function (options){\r\n this.initOptions(options);\r\n this.initUIBase();\r\n };\r\n Mask.prototype = {\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-mask %%\" onclick=\"return $$._onClick(event, this);\" onmousedown=\"return $$._onMouseDown(event, this);\"></div>';\r\n },\r\n postRender: function (){\r\n var me = this;\r\n domUtils.on(window, 'resize', function (){\r\n setTimeout(function (){\r\n if (!me.isHidden()) {\r\n me._fill();\r\n }\r\n });\r\n });\r\n },\r\n show: function (zIndex){\r\n this._fill();\r\n this.getDom().style.display = '';\r\n this.getDom().style.zIndex = zIndex;\r\n },\r\n hide: function (){\r\n this.getDom().style.display = 'none';\r\n this.getDom().style.zIndex = '';\r\n },\r\n isHidden: function (){\r\n return this.getDom().style.display == 'none';\r\n },\r\n _onMouseDown: function (){\r\n return false;\r\n },\r\n _onClick: function (e, target){\r\n this.fireEvent('click', e, target);\r\n },\r\n _fill: function (){\r\n var el = this.getDom();\r\n var vpRect = uiUtils.getViewportRect();\r\n el.style.width = vpRect.width + 'px';\r\n el.style.height = vpRect.height + 'px';\r\n }\r\n };\r\n utils.inherits(Mask, UIBase);\r\n})();\r\n\r\n\r\n// ui/popup.js\r\n///import core\r\n///import uicore\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Popup = baidu.editor.ui.Popup = function (options){\r\n this.initOptions(options);\r\n this.initPopup();\r\n };\r\n\r\n var allPopups = [];\r\n function closeAllPopup( evt,el ){\r\n for ( var i = 0; i < allPopups.length; i++ ) {\r\n var pop = allPopups[i];\r\n if (!pop.isHidden()) {\r\n if (pop.queryAutoHide(el) !== false) {\r\n if(evt&&/scroll/ig.test(evt.type)&&pop.className==\"edui-wordpastepop\") return;\r\n pop.hide();\r\n }\r\n }\r\n }\r\n\r\n if(allPopups.length)\r\n pop.editor.fireEvent(\"afterhidepop\");\r\n }\r\n\r\n Popup.postHide = closeAllPopup;\r\n\r\n var ANCHOR_CLASSES = ['edui-anchor-topleft','edui-anchor-topright',\r\n 'edui-anchor-bottomleft','edui-anchor-bottomright'];\r\n Popup.prototype = {\r\n SHADOW_RADIUS: 5,\r\n content: null,\r\n _hidden: false,\r\n autoRender: true,\r\n canSideLeft: true,\r\n canSideUp: true,\r\n initPopup: function (){\r\n this.initUIBase();\r\n allPopups.push( this );\r\n },\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-popup %%\" onmousedown=\"return false;\">' +\r\n ' <div id=\"##_body\" class=\"edui-popup-body\">' +\r\n ' <iframe style=\"position:absolute;z-index:-1;left:0;top:0;background-color: transparent;\" frameborder=\"0\" width=\"100%\" height=\"100%\" src=\"about:blank\"></iframe>' +\r\n ' <div class=\"edui-shadow\"></div>' +\r\n ' <div id=\"##_content\" class=\"edui-popup-content\">' +\r\n this.getContentHtmlTpl() +\r\n ' </div>' +\r\n ' </div>' +\r\n '</div>';\r\n },\r\n getContentHtmlTpl: function (){\r\n if(this.content){\r\n if (typeof this.content == 'string') {\r\n return this.content;\r\n }\r\n return this.content.renderHtml();\r\n }else{\r\n return ''\r\n }\r\n\r\n },\r\n _UIBase_postRender: UIBase.prototype.postRender,\r\n postRender: function (){\r\n\r\n\r\n if (this.content instanceof UIBase) {\r\n this.content.postRender();\r\n }\r\n\r\n //捕获鼠标滚轮\r\n if( this.captureWheel && !this.captured ) {\r\n\r\n this.captured = true;\r\n\r\n var winHeight = ( document.documentElement.clientHeight || document.body.clientHeight ) - 80,\r\n _height = this.getDom().offsetHeight,\r\n _top = uiUtils.getClientRect( this.combox.getDom() ).top,\r\n content = this.getDom('content'),\r\n ifr = this.getDom('body').getElementsByTagName('iframe'),\r\n me = this;\r\n\r\n ifr.length && ( ifr = ifr[0] );\r\n\r\n while( _top + _height > winHeight ) {\r\n _height -= 30;\r\n }\r\n content.style.height = _height + 'px';\r\n //同步更改iframe高度\r\n ifr && ( ifr.style.height = _height + 'px' );\r\n\r\n //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解\r\n if( window.XMLHttpRequest ) {\r\n\r\n domUtils.on( content, ( 'onmousewheel' in document.body ) ? 'mousewheel' :'DOMMouseScroll' , function(e){\r\n\r\n if(e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n }\r\n\r\n if( e.wheelDelta ) {\r\n\r\n content.scrollTop -= ( e.wheelDelta / 120 )*60;\r\n\r\n } else {\r\n\r\n content.scrollTop -= ( e.detail / -3 )*60;\r\n\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n //ie6\r\n domUtils.on( this.getDom(), 'mousewheel' , function(e){\r\n\r\n e.returnValue = false;\r\n\r\n me.getDom('content').scrollTop -= ( e.wheelDelta / 120 )*60;\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n this.fireEvent('postRenderAfter');\r\n this.hide(true);\r\n this._UIBase_postRender();\r\n },\r\n _doAutoRender: function (){\r\n if (!this.getDom() && this.autoRender) {\r\n this.render();\r\n }\r\n },\r\n mesureSize: function (){\r\n var box = this.getDom('content');\r\n return uiUtils.getClientRect(box);\r\n },\r\n fitSize: function (){\r\n if( this.captureWheel && this.sized ) {\r\n return this.__size;\r\n }\r\n this.sized = true;\r\n var popBodyEl = this.getDom('body');\r\n popBodyEl.style.width = '';\r\n popBodyEl.style.height = '';\r\n var size = this.mesureSize();\r\n if( this.captureWheel ) {\r\n popBodyEl.style.width = -(-20 -size.width) + 'px';\r\n var height = parseInt( this.getDom('content').style.height, 10 );\r\n !window.isNaN( height ) && ( size.height = height );\r\n } else {\r\n popBodyEl.style.width = size.width + 'px';\r\n }\r\n popBodyEl.style.height = size.height + 'px';\r\n this.__size = size;\r\n this.captureWheel && (this.getDom('content').style.overflow = 'auto');\r\n return size;\r\n },\r\n showAnchor: function ( element, hoz ){\r\n this.showAnchorRect( uiUtils.getClientRect( element ), hoz );\r\n },\r\n showAnchorRect: function ( rect, hoz, adj ){\r\n this._doAutoRender();\r\n var vpRect = uiUtils.getViewportRect();\r\n this.getDom().style.visibility = 'hidden';\r\n this._show();\r\n var popSize = this.fitSize();\r\n\r\n var sideLeft, sideUp, left, top;\r\n if (hoz) {\r\n sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width);\r\n sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height);\r\n left = (sideLeft ? rect.left - popSize.width : rect.right);\r\n top = (sideUp ? rect.bottom - popSize.height : rect.top);\r\n } else {\r\n sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width);\r\n sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height);\r\n left = (sideLeft ? rect.right - popSize.width : rect.left);\r\n top = (sideUp ? rect.top - popSize.height : rect.bottom);\r\n }\r\n\r\n var popEl = this.getDom();\r\n uiUtils.setViewportOffset(popEl, {\r\n left: left,\r\n top: top\r\n });\r\n domUtils.removeClasses(popEl, ANCHOR_CLASSES);\r\n popEl.className += ' ' + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)];\r\n if(this.editor){\r\n popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10;\r\n baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = popEl.style.zIndex - 1;\r\n }\r\n this.getDom().style.visibility = 'visible';\r\n\r\n },\r\n showAt: function (offset) {\r\n var left = offset.left;\r\n var top = offset.top;\r\n var rect = {\r\n left: left,\r\n top: top,\r\n right: left,\r\n bottom: top,\r\n height: 0,\r\n width: 0\r\n };\r\n this.showAnchorRect(rect, false, true);\r\n },\r\n _show: function (){\r\n if (this._hidden) {\r\n var box = this.getDom();\r\n box.style.display = '';\r\n this._hidden = false;\r\n// if (box.setActive) {\r\n// box.setActive();\r\n// }\r\n this.fireEvent('show');\r\n }\r\n },\r\n isHidden: function (){\r\n return this._hidden;\r\n },\r\n show: function (){\r\n this._doAutoRender();\r\n this._show();\r\n },\r\n hide: function (notNofity){\r\n if (!this._hidden && this.getDom()) {\r\n this.getDom().style.display = 'none';\r\n this._hidden = true;\r\n if (!notNofity) {\r\n this.fireEvent('hide');\r\n }\r\n }\r\n },\r\n queryAutoHide: function (el){\r\n return !el || !uiUtils.contains(this.getDom(), el);\r\n }\r\n };\r\n utils.inherits(Popup, UIBase);\r\n \r\n domUtils.on( document, 'mousedown', function ( evt ) {\r\n var el = evt.target || evt.srcElement;\r\n closeAllPopup( evt,el );\r\n } );\r\n domUtils.on( window, 'scroll', function (evt,el) {\r\n closeAllPopup( evt,el );\r\n } );\r\n\r\n})();\r\n\r\n\r\n// ui/colorpicker.js\r\n///import core\r\n///import uicore\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n ColorPicker = baidu.editor.ui.ColorPicker = function (options){\r\n this.initOptions(options);\r\n this.noColorText = this.noColorText || this.editor.getLang(\"clearColor\");\r\n this.initUIBase();\r\n };\r\n\r\n ColorPicker.prototype = {\r\n getHtmlTpl: function (){\r\n return genColorPicker(this.noColorText,this.editor);\r\n },\r\n _onTableClick: function (evt){\r\n var tgt = evt.target || evt.srcElement;\r\n var color = tgt.getAttribute('data-color');\r\n if (color) {\r\n this.fireEvent('pickcolor', color);\r\n }\r\n },\r\n _onTableOver: function (evt){\r\n var tgt = evt.target || evt.srcElement;\r\n var color = tgt.getAttribute('data-color');\r\n if (color) {\r\n this.getDom('preview').style.backgroundColor = color;\r\n }\r\n },\r\n _onTableOut: function (){\r\n this.getDom('preview').style.backgroundColor = '';\r\n },\r\n _onPickNoColor: function (){\r\n this.fireEvent('picknocolor');\r\n }\r\n };\r\n utils.inherits(ColorPicker, UIBase);\r\n\r\n var COLORS = (\r\n 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' +\r\n 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' +\r\n 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' +\r\n 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' +\r\n 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' +\r\n '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' +\r\n 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(',');\r\n\r\n function genColorPicker(noColorText,editor){\r\n var html = '<div id=\"##\" class=\"edui-colorpicker %%\">' +\r\n '<div class=\"edui-colorpicker-topbar edui-clearfix\">' +\r\n '<div unselectable=\"on\" id=\"##_preview\" class=\"edui-colorpicker-preview\"></div>' +\r\n '<div unselectable=\"on\" class=\"edui-colorpicker-nocolor\" onclick=\"$$._onPickNoColor(event, this);\">'+ noColorText +'</div>' +\r\n '</div>' +\r\n '<table class=\"edui-box\" style=\"border-collapse: collapse;\" onmouseover=\"$$._onTableOver(event, this);\" onmouseout=\"$$._onTableOut(event, this);\" onclick=\"return $$._onTableClick(event, this);\" cellspacing=\"0\" cellpadding=\"0\">' +\r\n '<tr style=\"border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;padding-top: 2px\"><td colspan=\"10\">'+editor.getLang(\"themeColor\")+'</td> </tr>'+\r\n '<tr class=\"edui-colorpicker-tablefirstrow\" >';\r\n for (var i=0; i<COLORS.length; i++) {\r\n if (i && i%10 === 0) {\r\n html += '</tr>'+(i==60?'<tr style=\"border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;\"><td colspan=\"10\">'+editor.getLang(\"standardColor\")+'</td></tr>':'')+'<tr'+(i==60?' class=\"edui-colorpicker-tablefirstrow\"':'')+'>';\r\n }\r\n html += i<70 ? '<td style=\"padding: 0 2px;\"><a hidefocus title=\"'+COLORS[i]+'\" onclick=\"return false;\" href=\"javascript:\" unselectable=\"on\" class=\"edui-box edui-colorpicker-colorcell\"' +\r\n ' data-color=\"#'+ COLORS[i] +'\"'+\r\n ' style=\"background-color:#'+ COLORS[i] +';border:solid #ccc;'+\r\n (i<10 || i>=60?'border-width:1px;':\r\n i>=10&&i<20?'border-width:1px 1px 0 1px;':\r\n\r\n 'border-width:0 1px 0 1px;')+\r\n '\"' +\r\n '></a></td>':'';\r\n }\r\n html += '</tr></table></div>';\r\n return html;\r\n }\r\n})();\r\n\r\n\r\n// ui/tablepicker.js\r\n///import core\r\n///import uicore\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n \r\n var TablePicker = baidu.editor.ui.TablePicker = function (options){\r\n this.initOptions(options);\r\n this.initTablePicker();\r\n };\r\n TablePicker.prototype = {\r\n defaultNumRows: 10,\r\n defaultNumCols: 10,\r\n maxNumRows: 20,\r\n maxNumCols: 20,\r\n numRows: 10,\r\n numCols: 10,\r\n lengthOfCellSide: 22,\r\n initTablePicker: function (){\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function (){\r\n var me = this;\r\n return '<div id=\"##\" class=\"edui-tablepicker %%\">' +\r\n '<div class=\"edui-tablepicker-body\">' +\r\n '<div class=\"edui-infoarea\">' +\r\n '<span id=\"##_label\" class=\"edui-label\"></span>' +\r\n '</div>' +\r\n '<div class=\"edui-pickarea\"' +\r\n ' onmousemove=\"$$._onMouseMove(event, this);\"' +\r\n ' onmouseover=\"$$._onMouseOver(event, this);\"' +\r\n ' onmouseout=\"$$._onMouseOut(event, this);\"' +\r\n ' onclick=\"$$._onClick(event, this);\"' +\r\n '>' +\r\n '<div id=\"##_overlay\" class=\"edui-overlay\"></div>' +\r\n '</div>' +\r\n '</div>' +\r\n '</div>';\r\n },\r\n _UIBase_render: UIBase.prototype.render,\r\n render: function (holder){\r\n this._UIBase_render(holder);\r\n this.getDom('label').innerHTML = '0'+this.editor.getLang(\"t_row\")+' x 0'+this.editor.getLang(\"t_col\");\r\n },\r\n _track: function (numCols, numRows){\r\n var style = this.getDom('overlay').style;\r\n var sideLen = this.lengthOfCellSide;\r\n style.width = numCols * sideLen + 'px';\r\n style.height = numRows * sideLen + 'px';\r\n var label = this.getDom('label');\r\n label.innerHTML = numCols +this.editor.getLang(\"t_col\")+' x ' + numRows + this.editor.getLang(\"t_row\");\r\n this.numCols = numCols;\r\n this.numRows = numRows;\r\n },\r\n _onMouseOver: function (evt, el){\r\n var rel = evt.relatedTarget || evt.fromElement;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.getDom('label').innerHTML = '0'+this.editor.getLang(\"t_col\")+' x 0'+this.editor.getLang(\"t_row\");\r\n this.getDom('overlay').style.visibility = '';\r\n }\r\n },\r\n _onMouseOut: function (evt, el){\r\n var rel = evt.relatedTarget || evt.toElement;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.getDom('label').innerHTML = '0'+this.editor.getLang(\"t_col\")+' x 0'+this.editor.getLang(\"t_row\");\r\n this.getDom('overlay').style.visibility = 'hidden';\r\n }\r\n },\r\n _onMouseMove: function (evt, el){\r\n var style = this.getDom('overlay').style;\r\n var offset = uiUtils.getEventOffset(evt);\r\n var sideLen = this.lengthOfCellSide;\r\n var numCols = Math.ceil(offset.left / sideLen);\r\n var numRows = Math.ceil(offset.top / sideLen);\r\n this._track(numCols, numRows);\r\n },\r\n _onClick: function (){\r\n this.fireEvent('picktable', this.numCols, this.numRows);\r\n }\r\n };\r\n utils.inherits(TablePicker, UIBase);\r\n})();\r\n\r\n\r\n// ui/stateful.js\r\n(function (){\r\n var browser = baidu.editor.browser,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils;\r\n \r\n var TPL_STATEFUL = 'onmousedown=\"$$.Stateful_onMouseDown(event, this);\"' +\r\n ' onmouseup=\"$$.Stateful_onMouseUp(event, this);\"' +\r\n ( browser.ie ? (\r\n ' onmouseenter=\"$$.Stateful_onMouseEnter(event, this);\"' +\r\n ' onmouseleave=\"$$.Stateful_onMouseLeave(event, this);\"' )\r\n : (\r\n ' onmouseover=\"$$.Stateful_onMouseOver(event, this);\"' +\r\n ' onmouseout=\"$$.Stateful_onMouseOut(event, this);\"' ));\r\n \r\n baidu.editor.ui.Stateful = {\r\n alwalysHoverable: false,\r\n target:null,//目标元素和this指向dom不一样\r\n Stateful_init: function (){\r\n this._Stateful_dGetHtmlTpl = this.getHtmlTpl;\r\n this.getHtmlTpl = this.Stateful_getHtmlTpl;\r\n },\r\n Stateful_getHtmlTpl: function (){\r\n var tpl = this._Stateful_dGetHtmlTpl();\r\n // 使用function避免$转义\r\n return tpl.replace(/stateful/g, function (){ return TPL_STATEFUL; });\r\n },\r\n Stateful_onMouseEnter: function (evt, el){\r\n this.target=el;\r\n if (!this.isDisabled() || this.alwalysHoverable) {\r\n this.addState('hover');\r\n this.fireEvent('over');\r\n }\r\n },\r\n Stateful_onMouseLeave: function (evt, el){\r\n if (!this.isDisabled() || this.alwalysHoverable) {\r\n this.removeState('hover');\r\n this.removeState('active');\r\n this.fireEvent('out');\r\n }\r\n },\r\n Stateful_onMouseOver: function (evt, el){\r\n var rel = evt.relatedTarget;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.Stateful_onMouseEnter(evt, el);\r\n }\r\n },\r\n Stateful_onMouseOut: function (evt, el){\r\n var rel = evt.relatedTarget;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.Stateful_onMouseLeave(evt, el);\r\n }\r\n },\r\n Stateful_onMouseDown: function (evt, el){\r\n if (!this.isDisabled()) {\r\n this.addState('active');\r\n }\r\n },\r\n Stateful_onMouseUp: function (evt, el){\r\n if (!this.isDisabled()) {\r\n this.removeState('active');\r\n }\r\n },\r\n Stateful_postRender: function (){\r\n if (this.disabled && !this.hasState('disabled')) {\r\n this.addState('disabled');\r\n }\r\n },\r\n hasState: function (state){\r\n return domUtils.hasClass(this.getStateDom(), 'edui-state-' + state);\r\n },\r\n addState: function (state){\r\n if (!this.hasState(state)) {\r\n this.getStateDom().className += ' edui-state-' + state;\r\n }\r\n },\r\n removeState: function (state){\r\n if (this.hasState(state)) {\r\n domUtils.removeClasses(this.getStateDom(), ['edui-state-' + state]);\r\n }\r\n },\r\n getStateDom: function (){\r\n return this.getDom('state');\r\n },\r\n isChecked: function (){\r\n return this.hasState('checked');\r\n },\r\n setChecked: function (checked){\r\n if (!this.isDisabled() && checked) {\r\n this.addState('checked');\r\n } else {\r\n this.removeState('checked');\r\n }\r\n },\r\n isDisabled: function (){\r\n return this.hasState('disabled');\r\n },\r\n setDisabled: function (disabled){\r\n if (disabled) {\r\n this.removeState('hover');\r\n this.removeState('checked');\r\n this.removeState('active');\r\n this.addState('disabled');\r\n } else {\r\n this.removeState('disabled');\r\n }\r\n }\r\n };\r\n})();\r\n\r\n\r\n// ui/button.js\r\n///import core\r\n///import uicore\r\n///import ui/stateful.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Stateful = baidu.editor.ui.Stateful,\r\n Button = baidu.editor.ui.Button = function (options){\r\n if(options.name){\r\n var btnName = options.name;\r\n var cssRules = options.cssRules;\r\n if(!options.className){\r\n options.className = 'edui-for-' + btnName;\r\n }\r\n options.cssRules = '.edui-default .edui-for-'+ btnName +' .edui-icon {'+ cssRules +'}'\r\n }\r\n this.initOptions(options);\r\n this.initButton();\r\n };\r\n Button.prototype = {\r\n uiName: 'button',\r\n label: '',\r\n title: '',\r\n showIcon: true,\r\n showText: true,\r\n cssRules:'',\r\n initButton: function (){\r\n this.initUIBase();\r\n this.Stateful_init();\r\n if(this.cssRules){\r\n utils.cssRule('edui-customize-'+this.name+'-style',this.cssRules);\r\n }\r\n },\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-box %%\">' +\r\n '<div id=\"##_state\" stateful>' +\r\n '<div class=\"%%-wrap\"><div id=\"##_body\" unselectable=\"on\" ' + (this.title ? 'title=\"' + this.title + '\"' : '') +\r\n ' class=\"%%-body\" onmousedown=\"return $$._onMouseDown(event, this);\" onclick=\"return $$._onClick(event, this);\">' +\r\n (this.showIcon ? '<div class=\"edui-box edui-icon\"></div>' : '') +\r\n (this.showText ? '<div class=\"edui-box edui-label\">' + this.label + '</div>' : '') +\r\n '</div>' +\r\n '</div>' +\r\n '</div></div>';\r\n },\r\n postRender: function (){\r\n this.Stateful_postRender();\r\n this.setDisabled(this.disabled)\r\n },\r\n _onMouseDown: function (e){\r\n var target = e.target || e.srcElement,\r\n tagName = target && target.tagName && target.tagName.toLowerCase();\r\n if (tagName == 'input' || tagName == 'object' || tagName == 'object') {\r\n return false;\r\n }\r\n },\r\n _onClick: function (){\r\n if (!this.isDisabled()) {\r\n this.fireEvent('click');\r\n }\r\n },\r\n setTitle: function(text){\r\n var label = this.getDom('label');\r\n label.innerHTML = text;\r\n }\r\n };\r\n utils.inherits(Button, UIBase);\r\n utils.extend(Button.prototype, Stateful);\r\n\r\n})();\r\n\r\n\r\n// ui/splitbutton.js\r\n///import core\r\n///import uicore\r\n///import ui/stateful.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Stateful = baidu.editor.ui.Stateful,\r\n SplitButton = baidu.editor.ui.SplitButton = function (options){\r\n this.initOptions(options);\r\n this.initSplitButton();\r\n };\r\n SplitButton.prototype = {\r\n popup: null,\r\n uiName: 'splitbutton',\r\n title: '',\r\n initSplitButton: function (){\r\n this.initUIBase();\r\n this.Stateful_init();\r\n var me = this;\r\n if (this.popup != null) {\r\n var popup = this.popup;\r\n this.popup = null;\r\n this.setPopup(popup);\r\n }\r\n },\r\n _UIBase_postRender: UIBase.prototype.postRender,\r\n postRender: function (){\r\n this.Stateful_postRender();\r\n this._UIBase_postRender();\r\n },\r\n setPopup: function (popup){\r\n if (this.popup === popup) return;\r\n if (this.popup != null) {\r\n this.popup.dispose();\r\n }\r\n popup.addListener('show', utils.bind(this._onPopupShow, this));\r\n popup.addListener('hide', utils.bind(this._onPopupHide, this));\r\n popup.addListener('postrender', utils.bind(function (){\r\n popup.getDom('body').appendChild(\r\n uiUtils.createElementByHtml('<div id=\"' +\r\n this.popup.id + '_bordereraser\" class=\"edui-bordereraser edui-background\" style=\"width:' +\r\n (uiUtils.getClientRect(this.getDom()).width + 20) + 'px\"></div>')\r\n );\r\n popup.getDom().className += ' ' + this.className;\r\n }, this));\r\n this.popup = popup;\r\n },\r\n _onPopupShow: function (){\r\n this.addState('opened');\r\n },\r\n _onPopupHide: function (){\r\n this.removeState('opened');\r\n },\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-box %%\">' +\r\n '<div '+ (this.title ? 'title=\"' + this.title + '\"' : '') +' id=\"##_state\" stateful><div class=\"%%-body\">' +\r\n '<div id=\"##_button_body\" class=\"edui-box edui-button-body\" onclick=\"$$._onButtonClick(event, this);\">' +\r\n '<div class=\"edui-box edui-icon\"></div>' +\r\n '</div>' +\r\n '<div class=\"edui-box edui-splitborder\"></div>' +\r\n '<div class=\"edui-box edui-arrow\" onclick=\"$$._onArrowClick();\"></div>' +\r\n '</div></div></div>';\r\n },\r\n showPopup: function (){\r\n // 当popup往上弹出的时候,做特殊处理\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.top -= this.popup.SHADOW_RADIUS;\r\n rect.height += this.popup.SHADOW_RADIUS;\r\n this.popup.showAnchorRect(rect);\r\n },\r\n _onArrowClick: function (event, el){\r\n if (!this.isDisabled()) {\r\n this.showPopup();\r\n }\r\n },\r\n _onButtonClick: function (){\r\n if (!this.isDisabled()) {\r\n this.fireEvent('buttonclick');\r\n }\r\n }\r\n };\r\n utils.inherits(SplitButton, UIBase);\r\n utils.extend(SplitButton.prototype, Stateful, true);\r\n\r\n})();\r\n\r\n\r\n// ui/colorbutton.js\r\n///import core\r\n///import uicore\r\n///import ui/colorpicker.js\r\n///import ui/popup.js\r\n///import ui/splitbutton.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n ColorPicker = baidu.editor.ui.ColorPicker,\r\n Popup = baidu.editor.ui.Popup,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n ColorButton = baidu.editor.ui.ColorButton = function (options){\r\n this.initOptions(options);\r\n this.initColorButton();\r\n };\r\n ColorButton.prototype = {\r\n initColorButton: function (){\r\n var me = this;\r\n this.popup = new Popup({\r\n content: new ColorPicker({\r\n noColorText: me.editor.getLang(\"clearColor\"),\r\n editor:me.editor,\r\n onpickcolor: function (t, color){\r\n me._onPickColor(color);\r\n },\r\n onpicknocolor: function (t, color){\r\n me._onPickNoColor(color);\r\n }\r\n }),\r\n editor:me.editor\r\n });\r\n this.initSplitButton();\r\n },\r\n _SplitButton_postRender: SplitButton.prototype.postRender,\r\n postRender: function (){\r\n this._SplitButton_postRender();\r\n this.getDom('button_body').appendChild(\r\n uiUtils.createElementByHtml('<div id=\"' + this.id + '_colorlump\" class=\"edui-colorlump\"></div>')\r\n );\r\n this.getDom().className += ' edui-colorbutton';\r\n },\r\n setColor: function (color){\r\n this.getDom('colorlump').style.backgroundColor = color;\r\n this.color = color;\r\n },\r\n _onPickColor: function (color){\r\n if (this.fireEvent('pickcolor', color) !== false) {\r\n this.setColor(color);\r\n this.popup.hide();\r\n }\r\n },\r\n _onPickNoColor: function (color){\r\n if (this.fireEvent('picknocolor') !== false) {\r\n this.popup.hide();\r\n }\r\n }\r\n };\r\n utils.inherits(ColorButton, SplitButton);\r\n\r\n})();\r\n\r\n\r\n// ui/tablebutton.js\r\n///import core\r\n///import uicore\r\n///import ui/popup.js\r\n///import ui/tablepicker.js\r\n///import ui/splitbutton.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n TablePicker = baidu.editor.ui.TablePicker,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n TableButton = baidu.editor.ui.TableButton = function (options){\r\n this.initOptions(options);\r\n this.initTableButton();\r\n };\r\n TableButton.prototype = {\r\n initTableButton: function (){\r\n var me = this;\r\n this.popup = new Popup({\r\n content: new TablePicker({\r\n editor:me.editor,\r\n onpicktable: function (t, numCols, numRows){\r\n me._onPickTable(numCols, numRows);\r\n }\r\n }),\r\n 'editor':me.editor\r\n });\r\n this.initSplitButton();\r\n },\r\n _onPickTable: function (numCols, numRows){\r\n if (this.fireEvent('picktable', numCols, numRows) !== false) {\r\n this.popup.hide();\r\n }\r\n }\r\n };\r\n utils.inherits(TableButton, SplitButton);\r\n\r\n})();\r\n\r\n\r\n// ui/autotypesetpicker.js\r\n///import core\r\n///import uicore\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n var AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker = function (options) {\r\n this.initOptions(options);\r\n this.initAutoTypeSetPicker();\r\n };\r\n AutoTypeSetPicker.prototype = {\r\n initAutoTypeSetPicker:function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl:function () {\r\n var me = this.editor,\r\n opt = me.options.autotypeset,\r\n lang = me.getLang(\"autoTypeSet\");\r\n\r\n var textAlignInputName = 'textAlignValue' + me.uid,\r\n imageBlockInputName = 'imageBlockLineValue' + me.uid,\r\n symbolConverInputName = 'symbolConverValue' + me.uid;\r\n\r\n return '<div id=\"##\" class=\"edui-autotypesetpicker %%\">' +\r\n '<div class=\"edui-autotypesetpicker-body\">' +\r\n '<table >' +\r\n '<tr><td nowrap><input type=\"checkbox\" name=\"mergeEmptyline\" ' + (opt[\"mergeEmptyline\"] ? \"checked\" : \"\" ) + '>' + lang.mergeLine + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"removeEmptyline\" ' + (opt[\"removeEmptyline\"] ? \"checked\" : \"\" ) + '>' + lang.delLine + '</td></tr>' +\r\n '<tr><td nowrap><input type=\"checkbox\" name=\"removeClass\" ' + (opt[\"removeClass\"] ? \"checked\" : \"\" ) + '>' + lang.removeFormat + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"indent\" ' + (opt[\"indent\"] ? \"checked\" : \"\" ) + '>' + lang.indent + '</td></tr>' +\r\n '<tr>' +\r\n '<td nowrap><input type=\"checkbox\" name=\"textAlign\" ' + (opt[\"textAlign\"] ? \"checked\" : \"\" ) + '>' + lang.alignment + '</td>' +\r\n '<td colspan=\"2\" id=\"' + textAlignInputName + '\">' +\r\n '<input type=\"radio\" name=\"'+ textAlignInputName +'\" value=\"left\" ' + ((opt[\"textAlign\"] && opt[\"textAlign\"] == \"left\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifyleft\") +\r\n '<input type=\"radio\" name=\"'+ textAlignInputName +'\" value=\"center\" ' + ((opt[\"textAlign\"] && opt[\"textAlign\"] == \"center\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifycenter\") +\r\n '<input type=\"radio\" name=\"'+ textAlignInputName +'\" value=\"right\" ' + ((opt[\"textAlign\"] && opt[\"textAlign\"] == \"right\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifyright\") +\r\n '</td>' +\r\n '</tr>' +\r\n '<tr>' +\r\n '<td nowrap><input type=\"checkbox\" name=\"imageBlockLine\" ' + (opt[\"imageBlockLine\"] ? \"checked\" : \"\" ) + '>' + lang.imageFloat + '</td>' +\r\n '<td nowrap id=\"'+ imageBlockInputName +'\">' +\r\n '<input type=\"radio\" name=\"'+ imageBlockInputName +'\" value=\"none\" ' + ((opt[\"imageBlockLine\"] && opt[\"imageBlockLine\"] == \"none\") ? \"checked\" : \"\") + '>' + me.getLang(\"default\") +\r\n '<input type=\"radio\" name=\"'+ imageBlockInputName +'\" value=\"left\" ' + ((opt[\"imageBlockLine\"] && opt[\"imageBlockLine\"] == \"left\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifyleft\") +\r\n '<input type=\"radio\" name=\"'+ imageBlockInputName +'\" value=\"center\" ' + ((opt[\"imageBlockLine\"] && opt[\"imageBlockLine\"] == \"center\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifycenter\") +\r\n '<input type=\"radio\" name=\"'+ imageBlockInputName +'\" value=\"right\" ' + ((opt[\"imageBlockLine\"] && opt[\"imageBlockLine\"] == \"right\") ? \"checked\" : \"\") + '>' + me.getLang(\"justifyright\") +\r\n '</td>' +\r\n '</tr>' +\r\n '<tr><td nowrap><input type=\"checkbox\" name=\"clearFontSize\" ' + (opt[\"clearFontSize\"] ? \"checked\" : \"\" ) + '>' + lang.removeFontsize + '</td><td colspan=\"2\"><input type=\"checkbox\" name=\"clearFontFamily\" ' + (opt[\"clearFontFamily\"] ? \"checked\" : \"\" ) + '>' + lang.removeFontFamily + '</td></tr>' +\r\n '<tr><td nowrap colspan=\"3\"><input type=\"checkbox\" name=\"removeEmptyNode\" ' + (opt[\"removeEmptyNode\"] ? \"checked\" : \"\" ) + '>' + lang.removeHtml + '</td></tr>' +\r\n '<tr><td nowrap colspan=\"3\"><input type=\"checkbox\" name=\"pasteFilter\" ' + (opt[\"pasteFilter\"] ? \"checked\" : \"\" ) + '>' + lang.pasteFilter + '</td></tr>' +\r\n '<tr>' +\r\n '<td nowrap><input type=\"checkbox\" name=\"symbolConver\" ' + (opt[\"bdc2sb\"] || opt[\"tobdc\"] ? \"checked\" : \"\" ) + '>' + lang.symbol + '</td>' +\r\n '<td id=\"' + symbolConverInputName + '\">' +\r\n '<input type=\"radio\" name=\"bdc\" value=\"bdc2sb\" ' + (opt[\"bdc2sb\"] ? \"checked\" : \"\" ) + '>' + lang.bdc2sb +\r\n '<input type=\"radio\" name=\"bdc\" value=\"tobdc\" ' + (opt[\"tobdc\"] ? \"checked\" : \"\" ) + '>' + lang.tobdc + '' +\r\n '</td>' +\r\n '<td nowrap align=\"right\"><button >' + lang.run + '</button></td>' +\r\n '</tr>' +\r\n '</table>' +\r\n '</div>' +\r\n '</div>';\r\n\r\n\r\n },\r\n _UIBase_render:UIBase.prototype.render\r\n };\r\n utils.inherits(AutoTypeSetPicker, UIBase);\r\n})();\r\n\r\n\r\n// ui/autotypesetbutton.js\r\n///import core\r\n///import uicore\r\n///import ui/popup.js\r\n///import ui/autotypesetpicker.js\r\n///import ui/splitbutton.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n AutoTypeSetButton = baidu.editor.ui.AutoTypeSetButton = function (options){\r\n this.initOptions(options);\r\n this.initAutoTypeSetButton();\r\n };\r\n function getPara(me){\r\n\r\n var opt = {},\r\n cont = me.getDom(),\r\n editorId = me.editor.uid,\r\n inputType = null,\r\n attrName = null,\r\n ipts = domUtils.getElementsByTagName(cont,\"input\");\r\n for(var i=ipts.length-1,ipt;ipt=ipts[i--];){\r\n inputType = ipt.getAttribute(\"type\");\r\n if(inputType==\"checkbox\"){\r\n attrName = ipt.getAttribute(\"name\");\r\n opt[attrName] && delete opt[attrName];\r\n if(ipt.checked){\r\n var attrValue = document.getElementById( attrName + \"Value\" + editorId );\r\n if(attrValue){\r\n if(/input/ig.test(attrValue.tagName)){\r\n opt[attrName] = attrValue.value;\r\n } else {\r\n var iptChilds = attrValue.getElementsByTagName(\"input\");\r\n for(var j=iptChilds.length-1,iptchild;iptchild=iptChilds[j--];){\r\n if(iptchild.checked){\r\n opt[attrName] = iptchild.value;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n opt[attrName] = true;\r\n }\r\n } else {\r\n opt[attrName] = false;\r\n }\r\n } else {\r\n opt[ipt.getAttribute(\"value\")] = ipt.checked;\r\n }\r\n\r\n }\r\n\r\n var selects = domUtils.getElementsByTagName(cont,\"select\");\r\n for(var i=0,si;si=selects[i++];){\r\n var attr = si.getAttribute('name');\r\n opt[attr] = opt[attr] ? si.value : '';\r\n }\r\n\r\n utils.extend(me.editor.options.autotypeset,opt);\r\n\r\n me.editor.setPreferences('autotypeset', opt);\r\n }\r\n\r\n AutoTypeSetButton.prototype = {\r\n initAutoTypeSetButton: function (){\r\n\r\n var me = this;\r\n this.popup = new Popup({\r\n //传入配置参数\r\n content: new AutoTypeSetPicker({editor:me.editor}),\r\n 'editor':me.editor,\r\n hide : function(){\r\n if (!this._hidden && this.getDom()) {\r\n getPara(this);\r\n this.getDom().style.display = 'none';\r\n this._hidden = true;\r\n this.fireEvent('hide');\r\n }\r\n }\r\n });\r\n var flag = 0;\r\n this.popup.addListener('postRenderAfter',function(){\r\n var popupUI = this;\r\n if(flag)return;\r\n var cont = this.getDom(),\r\n btn = cont.getElementsByTagName('button')[0];\r\n\r\n btn.onclick = function(){\r\n getPara(popupUI);\r\n me.editor.execCommand('autotypeset');\r\n popupUI.hide()\r\n };\r\n\r\n domUtils.on(cont, 'click', function(e) {\r\n var target = e.target || e.srcElement,\r\n editorId = me.editor.uid;\r\n if (target && target.tagName == 'INPUT') {\r\n\r\n // 点击图片浮动的checkbox,去除对应的radio\r\n if (target.name == 'imageBlockLine' || target.name == 'textAlign' || target.name == 'symbolConver') {\r\n var checked = target.checked,\r\n radioTd = document.getElementById( target.name + 'Value' + editorId),\r\n radios = radioTd.getElementsByTagName('input'),\r\n defalutSelect = {\r\n 'imageBlockLine': 'none',\r\n 'textAlign': 'left',\r\n 'symbolConver': 'tobdc'\r\n };\r\n\r\n for (var i = 0; i < radios.length; i++) {\r\n if (checked) {\r\n if (radios[i].value == defalutSelect[target.name]) {\r\n radios[i].checked = 'checked';\r\n }\r\n } else {\r\n radios[i].checked = false;\r\n }\r\n }\r\n }\r\n // 点击radio,选中对应的checkbox\r\n if (target.name == ('imageBlockLineValue' + editorId) || target.name == ('textAlignValue' + editorId) || target.name == 'bdc') {\r\n var checkboxs = target.parentNode.previousSibling.getElementsByTagName('input');\r\n checkboxs && (checkboxs[0].checked = true);\r\n }\r\n\r\n getPara(popupUI);\r\n }\r\n });\r\n\r\n flag = 1;\r\n });\r\n this.initSplitButton();\r\n }\r\n };\r\n utils.inherits(AutoTypeSetButton, SplitButton);\r\n\r\n})();\r\n\r\n\r\n// ui/cellalignpicker.js\r\n///import core\r\n///import uicore\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n Stateful = baidu.editor.ui.Stateful,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n /**\r\n * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始\r\n * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom'\r\n * @update 2013/4/2 hancong03@baidu.com\r\n */\r\n var CellAlignPicker = baidu.editor.ui.CellAlignPicker = function (options) {\r\n this.initOptions(options);\r\n this.initSelected();\r\n this.initCellAlignPicker();\r\n };\r\n CellAlignPicker.prototype = {\r\n //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引\r\n initSelected: function(){\r\n\r\n var status = {\r\n\r\n valign: {\r\n top: 0,\r\n middle: 1,\r\n bottom: 2\r\n },\r\n align: {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n },\r\n count: 3\r\n\r\n },\r\n result = -1;\r\n\r\n if( this.selected ) {\r\n this.selectedIndex = status.valign[ this.selected.valign ] * status.count + status.align[ this.selected.align ];\r\n }\r\n\r\n },\r\n initCellAlignPicker:function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n },\r\n getHtmlTpl:function () {\r\n\r\n var alignType = [ 'left', 'center', 'right' ],\r\n COUNT = 9,\r\n tempClassName = null,\r\n tempIndex = -1,\r\n tmpl = [];\r\n\r\n\r\n for( var i= 0; i<COUNT; i++ ) {\r\n\r\n tempClassName = this.selectedIndex === i ? ' class=\"edui-cellalign-selected\" ' : '';\r\n tempIndex = i % 3;\r\n\r\n tempIndex === 0 && tmpl.push('<tr>');\r\n\r\n tmpl.push( '<td index=\"'+ i +'\" ' + tempClassName + ' stateful><div class=\"edui-icon edui-'+ alignType[ tempIndex ] +'\"></div></td>' );\r\n\r\n tempIndex === 2 && tmpl.push('</tr>');\r\n\r\n }\r\n\r\n return '<div id=\"##\" class=\"edui-cellalignpicker %%\">' +\r\n '<div class=\"edui-cellalignpicker-body\">' +\r\n '<table onclick=\"$$._onClick(event);\">' +\r\n tmpl.join('') +\r\n '</table>' +\r\n '</div>' +\r\n '</div>';\r\n },\r\n getStateDom: function (){\r\n return this.target;\r\n },\r\n _onClick: function (evt){\r\n var target= evt.target || evt.srcElement;\r\n if(/icon/.test(target.className)){\r\n this.items[target.parentNode.getAttribute(\"index\")].onclick();\r\n Popup.postHide(evt);\r\n }\r\n },\r\n _UIBase_render:UIBase.prototype.render\r\n };\r\n utils.inherits(CellAlignPicker, UIBase);\r\n utils.extend(CellAlignPicker.prototype, Stateful,true);\r\n})();\r\n\r\n\r\n\r\n\r\n\r\n// ui/pastepicker.js\r\n///import core\r\n///import uicore\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n Stateful = baidu.editor.ui.Stateful,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n var PastePicker = baidu.editor.ui.PastePicker = function (options) {\r\n this.initOptions(options);\r\n this.initPastePicker();\r\n };\r\n PastePicker.prototype = {\r\n initPastePicker:function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n },\r\n getHtmlTpl:function () {\r\n return '<div class=\"edui-pasteicon\" onclick=\"$$._onClick(this)\"></div>' +\r\n '<div class=\"edui-pastecontainer\">' +\r\n '<div class=\"edui-title\">' + this.editor.getLang(\"pasteOpt\") + '</div>' +\r\n '<div class=\"edui-button\">' +\r\n '<div title=\"' + this.editor.getLang(\"pasteSourceFormat\") + '\" onclick=\"$$.format(false)\" stateful>' +\r\n '<div class=\"edui-richtxticon\"></div></div>' +\r\n '<div title=\"' + this.editor.getLang(\"tagFormat\") + '\" onclick=\"$$.format(2)\" stateful>' +\r\n '<div class=\"edui-tagicon\"></div></div>' +\r\n '<div title=\"' + this.editor.getLang(\"pasteTextFormat\") + '\" onclick=\"$$.format(true)\" stateful>' +\r\n '<div class=\"edui-plaintxticon\"></div></div>' +\r\n '</div>' +\r\n '</div>' +\r\n '</div>'\r\n },\r\n getStateDom:function () {\r\n return this.target;\r\n },\r\n format:function (param) {\r\n this.editor.ui._isTransfer = true;\r\n this.editor.fireEvent('pasteTransfer', param);\r\n },\r\n _onClick:function (cur) {\r\n var node = domUtils.getNextDomNode(cur),\r\n screenHt = uiUtils.getViewportRect().height,\r\n subPop = uiUtils.getClientRect(node);\r\n\r\n if ((subPop.top + subPop.height) > screenHt)\r\n node.style.top = (-subPop.height - cur.offsetHeight) + \"px\";\r\n else\r\n node.style.top = \"\";\r\n\r\n if (/hidden/ig.test(domUtils.getComputedStyle(node, \"visibility\"))) {\r\n node.style.visibility = \"visible\";\r\n domUtils.addClass(cur, \"edui-state-opened\");\r\n } else {\r\n node.style.visibility = \"hidden\";\r\n domUtils.removeClasses(cur, \"edui-state-opened\")\r\n }\r\n },\r\n _UIBase_render:UIBase.prototype.render\r\n };\r\n utils.inherits(PastePicker, UIBase);\r\n utils.extend(PastePicker.prototype, Stateful, true);\r\n})();\r\n\r\n\r\n\r\n\r\n\r\n\r\n// ui/toolbar.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Toolbar = baidu.editor.ui.Toolbar = function (options){\r\n this.initOptions(options);\r\n this.initToolbar();\r\n };\r\n Toolbar.prototype = {\r\n items: null,\r\n initToolbar: function (){\r\n this.items = this.items || [];\r\n this.initUIBase();\r\n },\r\n add: function (item,index){\r\n if(index === undefined){\r\n this.items.push(item);\r\n }else{\r\n this.items.splice(index,0,item)\r\n }\r\n\r\n },\r\n getHtmlTpl: function (){\r\n var buff = [];\r\n for (var i=0; i<this.items.length; i++) {\r\n buff[i] = this.items[i].renderHtml();\r\n }\r\n return '<div id=\"##\" class=\"edui-toolbar %%\" onselectstart=\"return false;\" onmousedown=\"return $$._onMouseDown(event, this);\">' +\r\n buff.join('') +\r\n '</div>'\r\n },\r\n postRender: function (){\r\n var box = this.getDom();\r\n for (var i=0; i<this.items.length; i++) {\r\n this.items[i].postRender();\r\n }\r\n uiUtils.makeUnselectable(box);\r\n },\r\n _onMouseDown: function (e){\r\n var target = e.target || e.srcElement,\r\n tagName = target && target.tagName && target.tagName.toLowerCase();\r\n if (tagName == 'input' || tagName == 'object' || tagName == 'object') {\r\n return false;\r\n }\r\n }\r\n };\r\n utils.inherits(Toolbar, UIBase);\r\n\r\n})();\r\n\r\n\r\n// ui/menu.js\r\n///import core\r\n///import uicore\r\n///import ui\\popup.js\r\n///import ui\\stateful.js\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Popup = baidu.editor.ui.Popup,\r\n Stateful = baidu.editor.ui.Stateful,\r\n CellAlignPicker = baidu.editor.ui.CellAlignPicker,\r\n\r\n Menu = baidu.editor.ui.Menu = function (options) {\r\n this.initOptions(options);\r\n this.initMenu();\r\n };\r\n\r\n var menuSeparator = {\r\n renderHtml:function () {\r\n return '<div class=\"edui-menuitem edui-menuseparator\"><div class=\"edui-menuseparator-inner\"></div></div>';\r\n },\r\n postRender:function () {\r\n },\r\n queryAutoHide:function () {\r\n return true;\r\n }\r\n };\r\n Menu.prototype = {\r\n items:null,\r\n uiName:'menu',\r\n initMenu:function () {\r\n this.items = this.items || [];\r\n this.initPopup();\r\n this.initItems();\r\n },\r\n initItems:function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item == '-') {\r\n this.items[i] = this.getSeparator();\r\n } else if (!(item instanceof MenuItem)) {\r\n item.editor = this.editor;\r\n item.theme = this.editor.options.theme;\r\n this.items[i] = this.createItem(item);\r\n }\r\n }\r\n },\r\n getSeparator:function () {\r\n return menuSeparator;\r\n },\r\n createItem:function (item) {\r\n //新增一个参数menu, 该参数存储了menuItem所对应的menu引用\r\n item.menu = this;\r\n return new MenuItem(item);\r\n },\r\n _Popup_getContentHtmlTpl:Popup.prototype.getContentHtmlTpl,\r\n getContentHtmlTpl:function () {\r\n if (this.items.length == 0) {\r\n return this._Popup_getContentHtmlTpl();\r\n }\r\n var buff = [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n buff[i] = item.renderHtml();\r\n }\r\n return ('<div class=\"%%-body\">' + buff.join('') + '</div>');\r\n },\r\n _Popup_postRender:Popup.prototype.postRender,\r\n postRender:function () {\r\n var me = this;\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n item.ownerMenu = this;\r\n item.postRender();\r\n }\r\n domUtils.on(this.getDom(), 'mouseover', function (evt) {\r\n evt = evt || event;\r\n var rel = evt.relatedTarget || evt.fromElement;\r\n var el = me.getDom();\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n me.fireEvent('over');\r\n }\r\n });\r\n this._Popup_postRender();\r\n },\r\n queryAutoHide:function (el) {\r\n if (el) {\r\n if (uiUtils.contains(this.getDom(), el)) {\r\n return false;\r\n }\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.queryAutoHide(el) === false) {\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n clearItems:function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n clearTimeout(item._showingTimer);\r\n clearTimeout(item._closingTimer);\r\n if (item.subMenu) {\r\n item.subMenu.destroy();\r\n }\r\n }\r\n this.items = [];\r\n },\r\n destroy:function () {\r\n if (this.getDom()) {\r\n domUtils.remove(this.getDom());\r\n }\r\n this.clearItems();\r\n },\r\n dispose:function () {\r\n this.destroy();\r\n }\r\n };\r\n utils.inherits(Menu, Popup);\r\n\r\n /**\r\n * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用\r\n * @type {Function}\r\n */\r\n var MenuItem = baidu.editor.ui.MenuItem = function (options) {\r\n this.initOptions(options);\r\n this.initUIBase();\r\n this.Stateful_init();\r\n if (this.subMenu && !(this.subMenu instanceof Menu)) {\r\n if (options.className && options.className.indexOf(\"aligntd\") != -1) {\r\n var me = this;\r\n\r\n //获取单元格对齐初始状态\r\n this.subMenu.selected = this.editor.queryCommandValue( 'cellalignment' );\r\n\r\n this.subMenu = new Popup({\r\n content:new CellAlignPicker(this.subMenu),\r\n parentMenu:me,\r\n editor:me.editor,\r\n destroy:function () {\r\n if (this.getDom()) {\r\n domUtils.remove(this.getDom());\r\n }\r\n }\r\n });\r\n this.subMenu.addListener(\"postRenderAfter\", function () {\r\n domUtils.on(this.getDom(), \"mouseover\", function () {\r\n me.addState('opened');\r\n });\r\n });\r\n } else {\r\n this.subMenu = new Menu(this.subMenu);\r\n }\r\n }\r\n };\r\n MenuItem.prototype = {\r\n label:'',\r\n subMenu:null,\r\n ownerMenu:null,\r\n uiName:'menuitem',\r\n alwalysHoverable:true,\r\n getHtmlTpl:function () {\r\n return '<div id=\"##\" class=\"%%\" stateful onclick=\"$$._onClick(event, this);\">' +\r\n '<div class=\"%%-body\">' +\r\n this.renderLabelHtml() +\r\n '</div>' +\r\n '</div>';\r\n },\r\n postRender:function () {\r\n var me = this;\r\n this.addListener('over', function () {\r\n me.ownerMenu.fireEvent('submenuover', me);\r\n if (me.subMenu) {\r\n me.delayShowSubMenu();\r\n }\r\n });\r\n if (this.subMenu) {\r\n this.getDom().className += ' edui-hassubmenu';\r\n this.subMenu.render();\r\n this.addListener('out', function () {\r\n me.delayHideSubMenu();\r\n });\r\n this.subMenu.addListener('over', function () {\r\n clearTimeout(me._closingTimer);\r\n me._closingTimer = null;\r\n me.addState('opened');\r\n });\r\n this.ownerMenu.addListener('hide', function () {\r\n me.hideSubMenu();\r\n });\r\n this.ownerMenu.addListener('submenuover', function (t, subMenu) {\r\n if (subMenu !== me) {\r\n me.delayHideSubMenu();\r\n }\r\n });\r\n this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide;\r\n this.subMenu.queryAutoHide = function (el) {\r\n if (el && uiUtils.contains(me.getDom(), el)) {\r\n return false;\r\n }\r\n return this._bakQueryAutoHide(el);\r\n };\r\n }\r\n this.getDom().style.tabIndex = '-1';\r\n uiUtils.makeUnselectable(this.getDom());\r\n this.Stateful_postRender();\r\n },\r\n delayShowSubMenu:function () {\r\n var me = this;\r\n if (!me.isDisabled()) {\r\n me.addState('opened');\r\n clearTimeout(me._showingTimer);\r\n clearTimeout(me._closingTimer);\r\n me._closingTimer = null;\r\n me._showingTimer = setTimeout(function () {\r\n me.showSubMenu();\r\n }, 250);\r\n }\r\n },\r\n delayHideSubMenu:function () {\r\n var me = this;\r\n if (!me.isDisabled()) {\r\n me.removeState('opened');\r\n clearTimeout(me._showingTimer);\r\n if (!me._closingTimer) {\r\n me._closingTimer = setTimeout(function () {\r\n if (!me.hasState('opened')) {\r\n me.hideSubMenu();\r\n }\r\n me._closingTimer = null;\r\n }, 400);\r\n }\r\n }\r\n },\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-arrow\"></div>' +\r\n '<div class=\"edui-box edui-icon\"></div>' +\r\n '<div class=\"edui-box edui-label %%-label\">' + (this.label || '') + '</div>';\r\n },\r\n getStateDom:function () {\r\n return this.getDom();\r\n },\r\n queryAutoHide:function (el) {\r\n if (this.subMenu && this.hasState('opened')) {\r\n return this.subMenu.queryAutoHide(el);\r\n }\r\n },\r\n _onClick:function (event, this_) {\r\n if (this.hasState('disabled')) return;\r\n if (this.fireEvent('click', event, this_) !== false) {\r\n if (this.subMenu) {\r\n this.showSubMenu();\r\n } else {\r\n Popup.postHide(event);\r\n }\r\n }\r\n },\r\n showSubMenu:function () {\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.right -= 5;\r\n rect.left += 2;\r\n rect.width -= 7;\r\n rect.top -= 4;\r\n rect.bottom += 4;\r\n rect.height += 8;\r\n this.subMenu.showAnchorRect(rect, true, true);\r\n },\r\n hideSubMenu:function () {\r\n this.subMenu.hide();\r\n }\r\n };\r\n utils.inherits(MenuItem, UIBase);\r\n utils.extend(MenuItem.prototype, Stateful, true);\r\n})();\r\n\r\n\r\n// ui/combox.js\r\n///import core\r\n///import uicore\r\n///import ui/menu.js\r\n///import ui/splitbutton.js\r\n(function (){\r\n // todo: menu和item提成通用list\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n Menu = baidu.editor.ui.Menu,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n Combox = baidu.editor.ui.Combox = function (options){\r\n this.initOptions(options);\r\n this.initCombox();\r\n };\r\n Combox.prototype = {\r\n uiName: 'combox',\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n },\r\n initCombox: function (){\r\n var me = this;\r\n this.items = this.items || [];\r\n for (var i=0; i<this.items.length; i++) {\r\n var item = this.items[i];\r\n item.uiName = 'listitem';\r\n item.index = i;\r\n item.onclick = function (){\r\n me.selectByIndex(this.index);\r\n };\r\n }\r\n this.popup = new Menu({\r\n items: this.items,\r\n uiName: 'list',\r\n editor:this.editor,\r\n captureWheel: true,\r\n combox: this\r\n });\r\n\r\n this.initSplitButton();\r\n },\r\n _SplitButton_postRender: SplitButton.prototype.postRender,\r\n postRender: function (){\r\n this._SplitButton_postRender();\r\n this.setLabel(this.label || '');\r\n this.setValue(this.initValue || '');\r\n },\r\n showPopup: function (){\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.top += 1;\r\n rect.bottom -= 1;\r\n rect.height -= 2;\r\n this.popup.showAnchorRect(rect);\r\n },\r\n getValue: function (){\r\n return this.value;\r\n },\r\n setValue: function (value){\r\n var index = this.indexByValue(value);\r\n if (index != -1) {\r\n this.selectedIndex = index;\r\n this.setLabel(this.items[index].label);\r\n this.value = this.items[index].value;\r\n } else {\r\n this.selectedIndex = -1;\r\n this.setLabel(this.getLabelForUnknowValue(value));\r\n this.value = value;\r\n }\r\n },\r\n setLabel: function (label){\r\n this.getDom('button_body').innerHTML = label;\r\n this.label = label;\r\n },\r\n getLabelForUnknowValue: function (value){\r\n return value;\r\n },\r\n indexByValue: function (value){\r\n for (var i=0; i<this.items.length; i++) {\r\n if (value == this.items[i].value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n getItem: function (index){\r\n return this.items[index];\r\n },\r\n selectByIndex: function (index){\r\n if (index < this.items.length && this.fireEvent('select', index) !== false) {\r\n this.selectedIndex = index;\r\n this.value = this.items[index].value;\r\n this.setLabel(this.items[index].label);\r\n }\r\n }\r\n };\r\n utils.inherits(Combox, SplitButton);\r\n})();\r\n\r\n\r\n// ui/dialog.js\r\n///import core\r\n///import uicore\r\n///import ui/mask.js\r\n///import ui/button.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n Mask = baidu.editor.ui.Mask,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Button = baidu.editor.ui.Button,\r\n Dialog = baidu.editor.ui.Dialog = function (options){\r\n if(options.name){\r\n var name = options.name;\r\n var cssRules = options.cssRules;\r\n if(!options.className){\r\n options.className = 'edui-for-' + name;\r\n }\r\n if(cssRules){\r\n options.cssRules = '.edui-default .edui-for-'+ name +' .edui-dialog-content {'+ cssRules +'}'\r\n }\r\n }\r\n this.initOptions(utils.extend({\r\n autoReset: true,\r\n draggable: true,\r\n onok: function (){},\r\n oncancel: function (){},\r\n onclose: function (t, ok){\r\n return ok ? this.onok() : this.oncancel();\r\n },\r\n //是否控制dialog中的scroll事件, 默认为不阻止\r\n holdScroll: false\r\n },options));\r\n this.initDialog();\r\n };\r\n var modalMask;\r\n var dragMask;\r\n var activeDialog;\r\n Dialog.prototype = {\r\n draggable: false,\r\n uiName: 'dialog',\r\n initDialog: function (){\r\n var me = this,\r\n theme=this.editor.options.theme;\r\n if(this.cssRules){\r\n utils.cssRule('edui-customize-'+this.name+'-style',this.cssRules);\r\n }\r\n this.initUIBase();\r\n this.modalMask = (modalMask || (modalMask = new Mask({\r\n className: 'edui-dialog-modalmask',\r\n theme:theme,\r\n onclick: function (){\r\n activeDialog && activeDialog.close(false);\r\n }\r\n })));\r\n this.dragMask = (dragMask || (dragMask = new Mask({\r\n className: 'edui-dialog-dragmask',\r\n theme:theme\r\n })));\r\n this.closeButton = new Button({\r\n className: 'edui-dialog-closebutton',\r\n title: me.closeDialog,\r\n theme:theme,\r\n onclick: function (){\r\n me.close(false);\r\n }\r\n });\r\n\r\n this.fullscreen && this.initResizeEvent();\r\n\r\n if (this.buttons) {\r\n for (var i=0; i<this.buttons.length; i++) {\r\n if (!(this.buttons[i] instanceof Button)) {\r\n this.buttons[i] = new Button(utils.extend(this.buttons[i],{\r\n editor : this.editor\r\n },true));\r\n }\r\n }\r\n }\r\n },\r\n initResizeEvent: function () {\r\n\r\n var me = this;\r\n\r\n domUtils.on( window, \"resize\", function () {\r\n\r\n if ( me._hidden || me._hidden === undefined ) {\r\n return;\r\n }\r\n\r\n if ( me.__resizeTimer ) {\r\n window.clearTimeout( me.__resizeTimer );\r\n }\r\n\r\n me.__resizeTimer = window.setTimeout( function () {\r\n\r\n me.__resizeTimer = null;\r\n\r\n var dialogWrapNode = me.getDom(),\r\n contentNode = me.getDom('content'),\r\n wrapRect = UE.ui.uiUtils.getClientRect( dialogWrapNode ),\r\n contentRect = UE.ui.uiUtils.getClientRect( contentNode ),\r\n vpRect = uiUtils.getViewportRect();\r\n\r\n contentNode.style.width = ( vpRect.width - wrapRect.width + contentRect.width ) + \"px\";\r\n contentNode.style.height = ( vpRect.height - wrapRect.height + contentRect.height ) + \"px\";\r\n\r\n dialogWrapNode.style.width = vpRect.width + \"px\";\r\n dialogWrapNode.style.height = vpRect.height + \"px\";\r\n\r\n me.fireEvent( \"resize\" );\r\n\r\n }, 100 );\r\n\r\n } );\r\n\r\n },\r\n fitSize: function (){\r\n var popBodyEl = this.getDom('body');\r\n// if (!(baidu.editor.browser.ie && baidu.editor.browser.version == 7)) {\r\n// uiUtils.removeStyle(popBodyEl, 'width');\r\n// uiUtils.removeStyle(popBodyEl, 'height');\r\n// }\r\n var size = this.mesureSize();\r\n popBodyEl.style.width = size.width + 'px';\r\n popBodyEl.style.height = size.height + 'px';\r\n return size;\r\n },\r\n safeSetOffset: function (offset){\r\n var me = this;\r\n var el = me.getDom();\r\n var vpRect = uiUtils.getViewportRect();\r\n var rect = uiUtils.getClientRect(el);\r\n var left = offset.left;\r\n if (left + rect.width > vpRect.right) {\r\n left = vpRect.right - rect.width;\r\n }\r\n var top = offset.top;\r\n if (top + rect.height > vpRect.bottom) {\r\n top = vpRect.bottom - rect.height;\r\n }\r\n el.style.left = Math.max(left, 0) + 'px';\r\n el.style.top = Math.max(top, 0) + 'px';\r\n },\r\n showAtCenter: function (){\r\n\r\n var vpRect = uiUtils.getViewportRect();\r\n\r\n if ( !this.fullscreen ) {\r\n this.getDom().style.display = '';\r\n var popSize = this.fitSize();\r\n var titleHeight = this.getDom('titlebar').offsetHeight | 0;\r\n var left = vpRect.width / 2 - popSize.width / 2;\r\n var top = vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight;\r\n var popEl = this.getDom();\r\n this.safeSetOffset({\r\n left: Math.max(left | 0, 0),\r\n top: Math.max(top | 0, 0)\r\n });\r\n if (!domUtils.hasClass(popEl, 'edui-state-centered')) {\r\n popEl.className += ' edui-state-centered';\r\n }\r\n } else {\r\n var dialogWrapNode = this.getDom(),\r\n contentNode = this.getDom('content');\r\n\r\n dialogWrapNode.style.display = \"block\";\r\n\r\n var wrapRect = UE.ui.uiUtils.getClientRect( dialogWrapNode ),\r\n contentRect = UE.ui.uiUtils.getClientRect( contentNode );\r\n dialogWrapNode.style.left = \"-100000px\";\r\n\r\n contentNode.style.width = ( vpRect.width - wrapRect.width + contentRect.width ) + \"px\";\r\n contentNode.style.height = ( vpRect.height - wrapRect.height + contentRect.height ) + \"px\";\r\n\r\n dialogWrapNode.style.width = vpRect.width + \"px\";\r\n dialogWrapNode.style.height = vpRect.height + \"px\";\r\n dialogWrapNode.style.left = 0;\r\n\r\n //保存环境的overflow值\r\n this._originalContext = {\r\n html: {\r\n overflowX: document.documentElement.style.overflowX,\r\n overflowY: document.documentElement.style.overflowY\r\n },\r\n body: {\r\n overflowX: document.body.style.overflowX,\r\n overflowY: document.body.style.overflowY\r\n }\r\n };\r\n\r\n document.documentElement.style.overflowX = 'hidden';\r\n document.documentElement.style.overflowY = 'hidden';\r\n document.body.style.overflowX = 'hidden';\r\n document.body.style.overflowY = 'hidden';\r\n\r\n }\r\n\r\n this._show();\r\n },\r\n getContentHtml: function (){\r\n var contentHtml = '';\r\n if (typeof this.content == 'string') {\r\n contentHtml = this.content;\r\n } else if (this.iframeUrl) {\r\n contentHtml = '<span id=\"'+ this.id +'_contmask\" class=\"dialogcontmask\"></span><iframe id=\"'+ this.id +\r\n '_iframe\" class=\"%%-iframe\" height=\"100%\" width=\"100%\" frameborder=\"0\" src=\"'+ this.iframeUrl +'\"></iframe>';\r\n }\r\n return contentHtml;\r\n },\r\n getHtmlTpl: function (){\r\n var footHtml = '';\r\n\r\n if (this.buttons) {\r\n var buff = [];\r\n for (var i=0; i<this.buttons.length; i++) {\r\n buff[i] = this.buttons[i].renderHtml();\r\n }\r\n footHtml = '<div class=\"%%-foot\">' +\r\n '<div id=\"##_buttons\" class=\"%%-buttons\">' + buff.join('') + '</div>' +\r\n '</div>';\r\n }\r\n\r\n return '<div id=\"##\" class=\"%%\"><div '+ ( !this.fullscreen ? 'class=\"%%\"' : 'class=\"%%-wrap edui-dialog-fullscreen-flag\"' ) +'><div id=\"##_body\" class=\"%%-body\">' +\r\n '<div class=\"%%-shadow\"></div>' +\r\n '<div id=\"##_titlebar\" class=\"%%-titlebar\">' +\r\n '<div class=\"%%-draghandle\" onmousedown=\"$$._onTitlebarMouseDown(event, this);\">' +\r\n '<span class=\"%%-caption\">' + (this.title || '') + '</span>' +\r\n '</div>' +\r\n this.closeButton.renderHtml() +\r\n '</div>' +\r\n '<div id=\"##_content\" class=\"%%-content\">'+ ( this.autoReset ? '' : this.getContentHtml()) +'</div>' +\r\n footHtml +\r\n '</div></div></div>';\r\n },\r\n postRender: function (){\r\n // todo: 保持居中/记住上次关闭位置选项\r\n if (!this.modalMask.getDom()) {\r\n this.modalMask.render();\r\n this.modalMask.hide();\r\n }\r\n if (!this.dragMask.getDom()) {\r\n this.dragMask.render();\r\n this.dragMask.hide();\r\n }\r\n var me = this;\r\n this.addListener('show', function (){\r\n me.modalMask.show(this.getDom().style.zIndex - 2);\r\n });\r\n this.addListener('hide', function (){\r\n me.modalMask.hide();\r\n });\r\n if (this.buttons) {\r\n for (var i=0; i<this.buttons.length; i++) {\r\n this.buttons[i].postRender();\r\n }\r\n }\r\n domUtils.on(window, 'resize', function (){\r\n setTimeout(function (){\r\n if (!me.isHidden()) {\r\n me.safeSetOffset(uiUtils.getClientRect(me.getDom()));\r\n }\r\n });\r\n });\r\n\r\n //hold住scroll事件,防止dialog的滚动影响页面\r\n// if( this.holdScroll ) {\r\n//\r\n// if( !me.iframeUrl ) {\r\n// domUtils.on( document.getElementById( me.id + \"_iframe\"), !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n// domUtils.preventDefault(e);\r\n// } );\r\n// } else {\r\n// me.addListener('dialogafterreset', function(){\r\n// window.setTimeout(function(){\r\n// var iframeWindow = document.getElementById( me.id + \"_iframe\").contentWindow;\r\n//\r\n// if( browser.ie ) {\r\n//\r\n// var timer = window.setInterval(function(){\r\n//\r\n// if( iframeWindow.document && iframeWindow.document.body ) {\r\n// window.clearInterval( timer );\r\n// timer = null;\r\n// domUtils.on( iframeWindow.document.body, !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n// domUtils.preventDefault(e);\r\n// } );\r\n// }\r\n//\r\n// }, 100);\r\n//\r\n// } else {\r\n// domUtils.on( iframeWindow, !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n// domUtils.preventDefault(e);\r\n// } );\r\n// }\r\n//\r\n// }, 1);\r\n// });\r\n// }\r\n//\r\n// }\r\n this._hide();\r\n },\r\n mesureSize: function (){\r\n var body = this.getDom('body');\r\n var width = uiUtils.getClientRect(this.getDom('content')).width;\r\n var dialogBodyStyle = body.style;\r\n dialogBodyStyle.width = width;\r\n return uiUtils.getClientRect(body);\r\n },\r\n _onTitlebarMouseDown: function (evt, el){\r\n if (this.draggable) {\r\n var rect;\r\n var vpRect = uiUtils.getViewportRect();\r\n var me = this;\r\n uiUtils.startDrag(evt, {\r\n ondragstart: function (){\r\n rect = uiUtils.getClientRect(me.getDom());\r\n me.getDom('contmask').style.visibility = 'visible';\r\n me.dragMask.show(me.getDom().style.zIndex - 1);\r\n },\r\n ondragmove: function (x, y){\r\n var left = rect.left + x;\r\n var top = rect.top + y;\r\n me.safeSetOffset({\r\n left: left,\r\n top: top\r\n });\r\n },\r\n ondragstop: function (){\r\n me.getDom('contmask').style.visibility = 'hidden';\r\n domUtils.removeClasses(me.getDom(), ['edui-state-centered']);\r\n me.dragMask.hide();\r\n }\r\n });\r\n }\r\n },\r\n reset: function (){\r\n this.getDom('content').innerHTML = this.getContentHtml();\r\n this.fireEvent('dialogafterreset');\r\n },\r\n _show: function (){\r\n if (this._hidden) {\r\n this.getDom().style.display = '';\r\n\r\n //要高过编辑器的zindxe\r\n this.editor.container.style.zIndex && (this.getDom().style.zIndex = this.editor.container.style.zIndex * 1 + 10);\r\n this._hidden = false;\r\n this.fireEvent('show');\r\n baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = this.getDom().style.zIndex - 4;\r\n }\r\n },\r\n isHidden: function (){\r\n return this._hidden;\r\n },\r\n _hide: function (){\r\n if (!this._hidden) {\r\n var wrapNode = this.getDom();\r\n wrapNode.style.display = 'none';\r\n wrapNode.style.zIndex = '';\r\n wrapNode.style.width = '';\r\n wrapNode.style.height = '';\r\n this._hidden = true;\r\n this.fireEvent('hide');\r\n }\r\n },\r\n open: function (){\r\n if (this.autoReset) {\r\n //有可能还没有渲染\r\n try{\r\n this.reset();\r\n }catch(e){\r\n this.render();\r\n this.open()\r\n }\r\n }\r\n this.showAtCenter();\r\n if (this.iframeUrl) {\r\n try {\r\n this.getDom('iframe').focus();\r\n } catch(ex){}\r\n }\r\n activeDialog = this;\r\n },\r\n _onCloseButtonClick: function (evt, el){\r\n this.close(false);\r\n },\r\n close: function (ok){\r\n if (this.fireEvent('close', ok) !== false) {\r\n //还原环境\r\n if ( this.fullscreen ) {\r\n\r\n document.documentElement.style.overflowX = this._originalContext.html.overflowX;\r\n document.documentElement.style.overflowY = this._originalContext.html.overflowY;\r\n document.body.style.overflowX = this._originalContext.body.overflowX;\r\n document.body.style.overflowY = this._originalContext.body.overflowY;\r\n delete this._originalContext;\r\n\r\n }\r\n this._hide();\r\n\r\n //销毁content\r\n var content = this.getDom('content');\r\n var iframe = this.getDom('iframe');\r\n if (content && iframe) {\r\n var doc = iframe.contentDocument || iframe.contentWindow.document;\r\n doc && (doc.body.innerHTML = '');\r\n domUtils.remove(content);\r\n }\r\n }\r\n }\r\n };\r\n utils.inherits(Dialog, UIBase);\r\n})();\r\n\r\n\r\n// ui/menubutton.js\r\n///import core\r\n///import uicore\r\n///import ui/menu.js\r\n///import ui/splitbutton.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n Menu = baidu.editor.ui.Menu,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n MenuButton = baidu.editor.ui.MenuButton = function (options){\r\n this.initOptions(options);\r\n this.initMenuButton();\r\n };\r\n MenuButton.prototype = {\r\n initMenuButton: function (){\r\n var me = this;\r\n this.uiName = \"menubutton\";\r\n this.popup = new Menu({\r\n items: me.items,\r\n className: me.className,\r\n editor:me.editor\r\n });\r\n this.popup.addListener('show', function (){\r\n var list = this;\r\n for (var i=0; i<list.items.length; i++) {\r\n list.items[i].removeState('checked');\r\n if (list.items[i].value == me._value) {\r\n list.items[i].addState('checked');\r\n this.value = me._value;\r\n }\r\n }\r\n });\r\n this.initSplitButton();\r\n },\r\n setValue : function(value){\r\n this._value = value;\r\n }\r\n \r\n };\r\n utils.inherits(MenuButton, SplitButton);\r\n})();\r\n\r\n// ui/multiMenu.js\r\n///import core\r\n///import uicore\r\n ///commands 表情\r\n(function(){\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n MultiMenuPop = baidu.editor.ui.MultiMenuPop = function(options){\r\n this.initOptions(options);\r\n this.initMultiMenu();\r\n };\r\n\r\n MultiMenuPop.prototype = {\r\n initMultiMenu: function (){\r\n var me = this;\r\n this.popup = new Popup({\r\n content: '',\r\n editor : me.editor,\r\n iframe_rendered: false,\r\n onshow: function (){\r\n if (!this.iframe_rendered) {\r\n this.iframe_rendered = true;\r\n this.getDom('content').innerHTML = '<iframe id=\"'+me.id+'_iframe\" src=\"'+ me.iframeUrl +'\" frameborder=\"0\"></iframe>';\r\n me.editor.container.style.zIndex && (this.getDom().style.zIndex = me.editor.container.style.zIndex * 1 + 1);\r\n }\r\n }\r\n // canSideUp:false,\r\n // canSideLeft:false\r\n });\r\n this.onbuttonclick = function(){\r\n this.showPopup();\r\n };\r\n this.initSplitButton();\r\n }\r\n\r\n };\r\n\r\n utils.inherits(MultiMenuPop, SplitButton);\r\n})();\r\n\r\n\r\n// ui/shortcutmenu.js\r\n(function () {\r\n var UI = baidu.editor.ui,\r\n UIBase = UI.UIBase,\r\n uiUtils = UI.uiUtils,\r\n utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils;\r\n\r\n var allMenus = [],//存储所有快捷菜单\r\n timeID,\r\n isSubMenuShow = false;//是否有子pop显示\r\n\r\n var ShortCutMenu = UI.ShortCutMenu = function (options) {\r\n this.initOptions (options);\r\n this.initShortCutMenu ();\r\n };\r\n\r\n ShortCutMenu.postHide = hideAllMenu;\r\n\r\n ShortCutMenu.prototype = {\r\n isHidden : true ,\r\n SPACE : 5 ,\r\n initShortCutMenu : function () {\r\n this.items = this.items || [];\r\n this.initUIBase ();\r\n this.initItems ();\r\n this.initEvent ();\r\n allMenus.push (this);\r\n } ,\r\n initEvent : function () {\r\n var me = this,\r\n doc = me.editor.document;\r\n\r\n domUtils.on (doc , \"mousemove\" , function (e) {\r\n if (me.isHidden === false) {\r\n //有pop显示就不隐藏快捷菜单\r\n if (me.getSubMenuMark () || me.eventType == \"contextmenu\") return;\r\n\r\n\r\n var flag = true,\r\n el = me.getDom (),\r\n wt = el.offsetWidth,\r\n ht = el.offsetHeight,\r\n distanceX = wt / 2 + me.SPACE,//距离中心X标准\r\n distanceY = ht / 2,//距离中心Y标准\r\n x = Math.abs (e.screenX - me.left),//离中心距离横坐标\r\n y = Math.abs (e.screenY - me.top);//离中心距离纵坐标\r\n\r\n clearTimeout (timeID);\r\n timeID = setTimeout (function () {\r\n if (y > 0 && y < distanceY) {\r\n me.setOpacity (el , \"1\");\r\n } else if (y > distanceY && y < distanceY + 70) {\r\n me.setOpacity (el , \"0.5\");\r\n flag = false;\r\n } else if (y > distanceY + 70 && y < distanceY + 140) {\r\n me.hide ();\r\n }\r\n\r\n if (flag && x > 0 && x < distanceX) {\r\n me.setOpacity (el , \"1\")\r\n } else if (x > distanceX && x < distanceX + 70) {\r\n me.setOpacity (el , \"0.5\")\r\n } else if (x > distanceX + 70 && x < distanceX + 140) {\r\n me.hide ();\r\n }\r\n });\r\n }\r\n });\r\n\r\n //ie\\ff下 mouseout不准\r\n if (browser.chrome) {\r\n domUtils.on (doc , \"mouseout\" , function (e) {\r\n var relatedTgt = e.relatedTarget || e.toElement;\r\n\r\n if (relatedTgt == null || relatedTgt.tagName == \"HTML\") {\r\n me.hide ();\r\n }\r\n });\r\n }\r\n\r\n me.editor.addListener (\"afterhidepop\" , function () {\r\n if (!me.isHidden) {\r\n isSubMenuShow = true;\r\n }\r\n });\r\n\r\n } ,\r\n initItems : function () {\r\n if (utils.isArray (this.items)) {\r\n for (var i = 0, len = this.items.length ; i < len ; i++) {\r\n var item = this.items[i].toLowerCase ();\r\n\r\n if (UI[item]) {\r\n this.items[i] = new UI[item] (this.editor);\r\n this.items[i].className += \" edui-shortcutsubmenu \";\r\n }\r\n }\r\n }\r\n } ,\r\n setOpacity : function (el , value) {\r\n if (browser.ie && browser.version < 9) {\r\n el.style.filter = \"alpha(opacity = \" + parseFloat (value) * 100 + \");\"\r\n } else {\r\n el.style.opacity = value;\r\n }\r\n } ,\r\n getSubMenuMark : function () {\r\n isSubMenuShow = false;\r\n var layerEle = uiUtils.getFixedLayer ();\r\n var list = domUtils.getElementsByTagName (layerEle , \"div\" , function (node) {\r\n return domUtils.hasClass (node , \"edui-shortcutsubmenu edui-popup\")\r\n });\r\n\r\n for (var i = 0, node ; node = list[i++] ;) {\r\n if (node.style.display != \"none\") {\r\n isSubMenuShow = true;\r\n }\r\n }\r\n return isSubMenuShow;\r\n } ,\r\n show : function (e , hasContextmenu) {\r\n var me = this,\r\n offset = {},\r\n el = this.getDom (),\r\n fixedlayer = uiUtils.getFixedLayer ();\r\n\r\n function setPos (offset) {\r\n if (offset.left < 0) {\r\n offset.left = 0;\r\n }\r\n if (offset.top < 0) {\r\n offset.top = 0;\r\n }\r\n el.style.cssText = \"position:absolute;left:\" + offset.left + \"px;top:\" + offset.top + \"px;\";\r\n }\r\n\r\n function setPosByCxtMenu (menu) {\r\n if (!menu.tagName) {\r\n menu = menu.getDom ();\r\n }\r\n offset.left = parseInt (menu.style.left);\r\n offset.top = parseInt (menu.style.top);\r\n offset.top -= el.offsetHeight + 15;\r\n setPos (offset);\r\n }\r\n\r\n\r\n me.eventType = e.type;\r\n el.style.cssText = \"display:block;left:-9999px\";\r\n\r\n if (e.type == \"contextmenu\" && hasContextmenu) {\r\n var menu = domUtils.getElementsByTagName (fixedlayer , \"div\" , \"edui-contextmenu\")[0];\r\n if (menu) {\r\n setPosByCxtMenu (menu)\r\n } else {\r\n me.editor.addListener (\"aftershowcontextmenu\" , function (type , menu) {\r\n setPosByCxtMenu (menu);\r\n });\r\n }\r\n } else {\r\n offset = uiUtils.getViewportOffsetByEvent (e);\r\n offset.top -= el.offsetHeight + me.SPACE;\r\n offset.left += me.SPACE + 20;\r\n setPos (offset);\r\n me.setOpacity (el , 0.2);\r\n }\r\n\r\n\r\n me.isHidden = false;\r\n me.left = e.screenX + el.offsetWidth / 2 - me.SPACE;\r\n me.top = e.screenY - (el.offsetHeight / 2) - me.SPACE;\r\n\r\n if (me.editor) {\r\n el.style.zIndex = me.editor.container.style.zIndex * 1 + 10;\r\n fixedlayer.style.zIndex = el.style.zIndex - 1;\r\n }\r\n } ,\r\n hide : function () {\r\n if (this.getDom ()) {\r\n this.getDom ().style.display = \"none\";\r\n }\r\n this.isHidden = true;\r\n } ,\r\n postRender : function () {\r\n if (utils.isArray (this.items)) {\r\n for (var i = 0, item ; item = this.items[i++] ;) {\r\n item.postRender ();\r\n }\r\n }\r\n } ,\r\n getHtmlTpl : function () {\r\n var buff;\r\n if (utils.isArray (this.items)) {\r\n buff = [];\r\n for (var i = 0 ; i < this.items.length ; i++) {\r\n buff[i] = this.items[i].renderHtml ();\r\n }\r\n buff = buff.join (\"\");\r\n } else {\r\n buff = this.items;\r\n }\r\n\r\n return '<div id=\"##\" class=\"%% edui-toolbar\" data-src=\"shortcutmenu\" onmousedown=\"return false;\" onselectstart=\"return false;\" >' +\r\n buff +\r\n '</div>';\r\n }\r\n };\r\n\r\n utils.inherits (ShortCutMenu , UIBase);\r\n\r\n function hideAllMenu (e) {\r\n var tgt = e.target || e.srcElement,\r\n cur = domUtils.findParent (tgt , function (node) {\r\n return domUtils.hasClass (node , \"edui-shortcutmenu\") || domUtils.hasClass (node , \"edui-popup\");\r\n } , true);\r\n\r\n if (!cur) {\r\n for (var i = 0, menu ; menu = allMenus[i++] ;) {\r\n menu.hide ()\r\n }\r\n }\r\n }\r\n\r\n domUtils.on (document , 'mousedown' , function (e) {\r\n hideAllMenu (e);\r\n });\r\n\r\n domUtils.on (window , 'scroll' , function (e) {\r\n hideAllMenu (e);\r\n });\r\n\r\n}) ();\r\n\r\n\r\n// ui/breakline.js\r\n(function (){\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Breakline = baidu.editor.ui.Breakline = function (options){\r\n this.initOptions(options);\r\n this.initSeparator();\r\n };\r\n Breakline.prototype = {\r\n uiName: 'Breakline',\r\n initSeparator: function (){\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function (){\r\n return '<br/>';\r\n }\r\n };\r\n utils.inherits(Breakline, UIBase);\r\n\r\n})();\r\n\r\n\r\n// ui/message.js\r\n///import core\r\n///import uicore\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Message = baidu.editor.ui.Message = function (options){\r\n this.initOptions(options);\r\n this.initMessage();\r\n };\r\n\r\n Message.prototype = {\r\n initMessage: function (){\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function (){\r\n return '<div id=\"##\" class=\"edui-message %%\">' +\r\n ' <div id=\"##_closer\" class=\"edui-message-closer\">×</div>' +\r\n ' <div id=\"##_body\" class=\"edui-message-body edui-message-type-info\">' +\r\n ' <iframe style=\"position:absolute;z-index:-1;left:0;top:0;background-color: transparent;\" frameborder=\"0\" width=\"100%\" height=\"100%\" src=\"about:blank\"></iframe>' +\r\n ' <div class=\"edui-shadow\"></div>' +\r\n ' <div id=\"##_content\" class=\"edui-message-content\">' +\r\n ' </div>' +\r\n ' </div>' +\r\n '</div>';\r\n },\r\n reset: function(opt){\r\n var me = this;\r\n if (!opt.keepshow) {\r\n clearTimeout(this.timer);\r\n me.timer = setTimeout(function(){\r\n me.hide();\r\n }, opt.timeout || 4000);\r\n }\r\n\r\n opt.content !== undefined && me.setContent(opt.content);\r\n opt.type !== undefined && me.setType(opt.type);\r\n\r\n me.show();\r\n },\r\n postRender: function(){\r\n var me = this,\r\n closer = this.getDom('closer');\r\n closer && domUtils.on(closer, 'click', function(){\r\n me.hide();\r\n });\r\n },\r\n setContent: function(content){\r\n this.getDom('content').innerHTML = content;\r\n },\r\n setType: function(type){\r\n type = type || 'info';\r\n var body = this.getDom('body');\r\n body.className = body.className.replace(/edui-message-type-[\\w-]+/, 'edui-message-type-' + type);\r\n },\r\n getContent: function(){\r\n return this.getDom('content').innerHTML;\r\n },\r\n getType: function(){\r\n var arr = this.getDom('body').match(/edui-message-type-([\\w-]+)/);\r\n return arr ? arr[1]:'';\r\n },\r\n show: function (){\r\n this.getDom().style.display = 'block';\r\n },\r\n hide: function (){\r\n var dom = this.getDom();\r\n if (dom) {\r\n dom.style.display = 'none';\r\n dom.parentNode && dom.parentNode.removeChild(dom);\r\n }\r\n }\r\n };\r\n\r\n utils.inherits(Message, UIBase);\r\n\r\n})();\r\n\r\n\r\n// adapter/editorui.js\r\n//ui跟编辑器的适配層\r\n//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置\r\n//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化\r\n(function () {\r\n var utils = baidu.editor.utils;\r\n var editorui = baidu.editor.ui;\r\n var _Dialog = editorui.Dialog;\r\n editorui.buttons = {};\r\n\r\n editorui.Dialog = function (options) {\r\n var dialog = new _Dialog(options);\r\n dialog.addListener('hide', function () {\r\n\r\n if (dialog.editor) {\r\n var editor = dialog.editor;\r\n try {\r\n if (browser.gecko) {\r\n var y = editor.window.scrollY,\r\n x = editor.window.scrollX;\r\n editor.body.focus();\r\n editor.window.scrollTo(x, y);\r\n } else {\r\n editor.focus();\r\n }\r\n\r\n\r\n } catch (ex) {\r\n }\r\n }\r\n });\r\n return dialog;\r\n };\r\n\r\n var iframeUrlMap = {\r\n 'anchor':'~/dialogs/anchor/anchor.html',\r\n 'insertimage':'~/dialogs/image/image.html',\r\n 'link':'~/dialogs/link/link.html',\r\n 'spechars':'~/dialogs/spechars/spechars.html',\r\n 'searchreplace':'~/dialogs/searchreplace/searchreplace.html',\r\n 'map':'~/dialogs/map/map.html',\r\n 'gmap':'~/dialogs/gmap/gmap.html',\r\n 'insertvideo':'~/dialogs/video/video.html',\r\n 'help':'~/dialogs/help/help.html',\r\n 'preview':'~/dialogs/preview/preview.html',\r\n 'emotion':'~/dialogs/emotion/emotion.html',\r\n 'wordimage':'~/dialogs/wordimage/wordimage.html',\r\n 'attachment':'~/dialogs/attachment/attachment.html',\r\n 'insertframe':'~/dialogs/insertframe/insertframe.html',\r\n 'edittip':'~/dialogs/table/edittip.html',\r\n 'edittable':'~/dialogs/table/edittable.html',\r\n 'edittd':'~/dialogs/table/edittd.html',\r\n 'webapp':'~/dialogs/webapp/webapp.html',\r\n 'snapscreen':'~/dialogs/snapscreen/snapscreen.html',\r\n 'scrawl':'~/dialogs/scrawl/scrawl.html',\r\n 'music':'~/dialogs/music/music.html',\r\n 'template':'~/dialogs/template/template.html',\r\n 'background':'~/dialogs/background/background.html',\r\n 'charts': '~/dialogs/charts/charts.html'\r\n };\r\n //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起\r\n var btnCmds = ['undo', 'redo', 'formatmatch',\r\n 'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',\r\n 'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',\r\n 'blockquote', 'pasteplain', 'pagebreak',\r\n 'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink',\r\n 'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',\r\n 'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts'];\r\n\r\n for (var i = 0, ci; ci = btnCmds[i++];) {\r\n ci = ci.toLowerCase();\r\n editorui[ci] = function (cmd) {\r\n return function (editor) {\r\n var ui = new editorui.Button({\r\n className:'edui-for-' + cmd,\r\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\r\n onclick:function () {\r\n editor.execCommand(cmd);\r\n },\r\n theme:editor.options.theme,\r\n showText:false\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n var state = editor.queryCommandState(cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n ui.setChecked(false);\r\n } else {\r\n if (!uiReady) {\r\n ui.setDisabled(false);\r\n ui.setChecked(state);\r\n }\r\n }\r\n });\r\n return ui;\r\n };\r\n }(ci);\r\n }\r\n\r\n //清除文档\r\n editorui.cleardoc = function (editor) {\r\n var ui = new editorui.Button({\r\n className:'edui-for-cleardoc',\r\n title:editor.options.labelMap.cleardoc || editor.getLang(\"labelMap.cleardoc\") || '',\r\n theme:editor.options.theme,\r\n onclick:function () {\r\n if (confirm(editor.getLang(\"confirmClear\"))) {\r\n editor.execCommand('cleardoc');\r\n }\r\n }\r\n });\r\n editorui.buttons[\"cleardoc\"] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('cleardoc') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n //排版,图片排版,文字方向\r\n var typeset = {\r\n 'justify':['left', 'right', 'center', 'justify'],\r\n 'imagefloat':['none', 'left', 'center', 'right'],\r\n 'directionality':['ltr', 'rtl']\r\n };\r\n\r\n for (var p in typeset) {\r\n\r\n (function (cmd, val) {\r\n for (var i = 0, ci; ci = val[i++];) {\r\n (function (cmd2) {\r\n editorui[cmd.replace('float', '') + cmd2] = function (editor) {\r\n var ui = new editorui.Button({\r\n className:'edui-for-' + cmd.replace('float', '') + cmd2,\r\n title:editor.options.labelMap[cmd.replace('float', '') + cmd2] || editor.getLang(\"labelMap.\" + cmd.replace('float', '') + cmd2) || '',\r\n theme:editor.options.theme,\r\n onclick:function () {\r\n editor.execCommand(cmd, cmd2);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\r\n ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady);\r\n });\r\n return ui;\r\n };\r\n })(ci)\r\n }\r\n })(p, typeset[p])\r\n }\r\n\r\n //字体颜色和背景颜色\r\n for (var i = 0, ci; ci = ['backcolor', 'forecolor'][i++];) {\r\n editorui[ci] = function (cmd) {\r\n return function (editor) {\r\n var ui = new editorui.ColorButton({\r\n className:'edui-for-' + cmd,\r\n color:'default',\r\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\r\n editor:editor,\r\n onpickcolor:function (t, color) {\r\n editor.execCommand(cmd, color);\r\n },\r\n onpicknocolor:function () {\r\n editor.execCommand(cmd, 'default');\r\n this.setColor('transparent');\r\n this.color = 'default';\r\n },\r\n onbuttonclick:function () {\r\n editor.execCommand(cmd, this.color);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\r\n });\r\n return ui;\r\n };\r\n }(ci);\r\n }\r\n\r\n\r\n var dialogBtns = {\r\n noOk:['searchreplace', 'help', 'spechars', 'webapp','preview'],\r\n ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage',\r\n 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts']\r\n };\r\n\r\n for (var p in dialogBtns) {\r\n (function (type, vals) {\r\n for (var i = 0, ci; ci = vals[i++];) {\r\n //todo opera下存在问题\r\n if (browser.opera && ci === \"searchreplace\") {\r\n continue;\r\n }\r\n (function (cmd) {\r\n editorui[cmd] = function (editor, iframeUrl, title) {\r\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd];\r\n title = editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '';\r\n\r\n var dialog;\r\n //没有iframeUrl不创建dialog\r\n if (iframeUrl) {\r\n dialog = new editorui.Dialog(utils.extend({\r\n iframeUrl:editor.ui.mapUrl(iframeUrl),\r\n editor:editor,\r\n className:'edui-for-' + cmd,\r\n title:title,\r\n holdScroll: cmd === 'insertimage',\r\n fullscreen: /charts|preview/.test(cmd),\r\n closeDialog:editor.getLang(\"closeDialog\")\r\n }, type == 'ok' ? {\r\n buttons:[\r\n {\r\n className:'edui-okbutton',\r\n label:editor.getLang(\"ok\"),\r\n editor:editor,\r\n onclick:function () {\r\n dialog.close(true);\r\n }\r\n },\r\n {\r\n className:'edui-cancelbutton',\r\n label:editor.getLang(\"cancel\"),\r\n editor:editor,\r\n onclick:function () {\r\n dialog.close(false);\r\n }\r\n }\r\n ]\r\n } : {}));\r\n\r\n editor.ui._dialogs[cmd + \"Dialog\"] = dialog;\r\n }\r\n\r\n var ui = new editorui.Button({\r\n className:'edui-for-' + cmd,\r\n title:title,\r\n onclick:function () {\r\n if (dialog) {\r\n switch (cmd) {\r\n case \"wordimage\":\r\n var images = editor.execCommand(\"wordimage\");\r\n if (images && images.length) {\r\n dialog.render();\r\n dialog.open();\r\n }\r\n break;\r\n case \"scrawl\":\r\n if (editor.queryCommandState(\"scrawl\") != -1) {\r\n dialog.render();\r\n dialog.open();\r\n }\r\n\r\n break;\r\n default:\r\n dialog.render();\r\n dialog.open();\r\n }\r\n }\r\n },\r\n theme:editor.options.theme,\r\n disabled:(cmd == 'scrawl' && editor.queryCommandState(\"scrawl\") == -1) || ( cmd == 'charts' )\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n //只存在于右键菜单而无工具栏按钮的ui不需要检测状态\r\n var unNeedCheckState = {'edittable':1};\r\n if (cmd in unNeedCheckState)return;\r\n\r\n var state = editor.queryCommandState(cmd);\r\n if (ui.getDom()) {\r\n ui.setDisabled(state == -1);\r\n ui.setChecked(state);\r\n }\r\n\r\n });\r\n\r\n return ui;\r\n };\r\n })(ci.toLowerCase())\r\n }\r\n })(p, dialogBtns[p]);\r\n }\r\n\r\n editorui.snapscreen = function (editor, iframeUrl, title) {\r\n title = editor.options.labelMap['snapscreen'] || editor.getLang(\"labelMap.snapscreen\") || '';\r\n var ui = new editorui.Button({\r\n className:'edui-for-snapscreen',\r\n title:title,\r\n onclick:function () {\r\n editor.execCommand(\"snapscreen\");\r\n },\r\n theme:editor.options.theme\r\n\r\n });\r\n editorui.buttons['snapscreen'] = ui;\r\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[\"snapscreen\"] || iframeUrlMap[\"snapscreen\"];\r\n if (iframeUrl) {\r\n var dialog = new editorui.Dialog({\r\n iframeUrl:editor.ui.mapUrl(iframeUrl),\r\n editor:editor,\r\n className:'edui-for-snapscreen',\r\n title:title,\r\n buttons:[\r\n {\r\n className:'edui-okbutton',\r\n label:editor.getLang(\"ok\"),\r\n editor:editor,\r\n onclick:function () {\r\n dialog.close(true);\r\n }\r\n },\r\n {\r\n className:'edui-cancelbutton',\r\n label:editor.getLang(\"cancel\"),\r\n editor:editor,\r\n onclick:function () {\r\n dialog.close(false);\r\n }\r\n }\r\n ]\r\n\r\n });\r\n dialog.render();\r\n editor.ui._dialogs[\"snapscreenDialog\"] = dialog;\r\n }\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('snapscreen') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.insertcode = function (editor, list, title) {\r\n list = editor.options['insertcode'] || [];\r\n title = editor.options.labelMap['insertcode'] || editor.getLang(\"labelMap.insertcode\") || '';\r\n // if (!list.length) return;\r\n var items = [];\r\n utils.each(list,function(key,val){\r\n items.push({\r\n label:key,\r\n value:val,\r\n theme:editor.options.theme,\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-label %%-label\" >' + (this.label || '') + '</div>';\r\n }\r\n });\r\n });\r\n\r\n var ui = new editorui.Combox({\r\n editor:editor,\r\n items:items,\r\n onselect:function (t, index) {\r\n editor.execCommand('insertcode', this.items[index].value);\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n },\r\n title:title,\r\n initValue:title,\r\n className:'edui-for-insertcode',\r\n indexByValue:function (value) {\r\n if (value) {\r\n for (var i = 0, ci; ci = this.items[i]; i++) {\r\n if (ci.value.indexOf(value) != -1)\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['insertcode'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('insertcode');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('insertcode');\r\n if(!value){\r\n ui.setValue(title);\r\n return;\r\n }\r\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\r\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\r\n ui.setValue(value);\r\n\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n editorui.fontfamily = function (editor, list, title) {\r\n\r\n list = editor.options['fontfamily'] || [];\r\n title = editor.options.labelMap['fontfamily'] || editor.getLang(\"labelMap.fontfamily\") || '';\r\n if (!list.length) return;\r\n for (var i = 0, ci, items = []; ci = list[i]; i++) {\r\n var langLabel = editor.getLang('fontfamily')[ci.name] || \"\";\r\n (function (key, val) {\r\n items.push({\r\n label:key,\r\n value:val,\r\n theme:editor.options.theme,\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-label %%-label\" style=\"font-family:' +\r\n utils.unhtml(this.value) + '\">' + (this.label || '') + '</div>';\r\n }\r\n });\r\n })(ci.label || langLabel, ci.val)\r\n }\r\n var ui = new editorui.Combox({\r\n editor:editor,\r\n items:items,\r\n onselect:function (t, index) {\r\n editor.execCommand('FontFamily', this.items[index].value);\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n },\r\n title:title,\r\n initValue:title,\r\n className:'edui-for-fontfamily',\r\n indexByValue:function (value) {\r\n if (value) {\r\n for (var i = 0, ci; ci = this.items[i]; i++) {\r\n if (ci.value.indexOf(value) != -1)\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['fontfamily'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('FontFamily');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('FontFamily');\r\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\r\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\r\n ui.setValue(value);\r\n\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.fontsize = function (editor, list, title) {\r\n title = editor.options.labelMap['fontsize'] || editor.getLang(\"labelMap.fontsize\") || '';\r\n list = list || editor.options['fontsize'] || [];\r\n if (!list.length) return;\r\n var items = [];\r\n for (var i = 0; i < list.length; i++) {\r\n var size = list[i] + 'px';\r\n items.push({\r\n label:size,\r\n value:size,\r\n theme:editor.options.theme,\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-label %%-label\" style=\"line-height:1;font-size:' +\r\n this.value + '\">' + (this.label || '') + '</div>';\r\n }\r\n });\r\n }\r\n var ui = new editorui.Combox({\r\n editor:editor,\r\n items:items,\r\n title:title,\r\n initValue:title,\r\n onselect:function (t, index) {\r\n editor.execCommand('FontSize', this.items[index].value);\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n },\r\n className:'edui-for-fontsize'\r\n });\r\n editorui.buttons['fontsize'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('FontSize');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n ui.setValue(editor.queryCommandValue('FontSize'));\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.paragraph = function (editor, list, title) {\r\n title = editor.options.labelMap['paragraph'] || editor.getLang(\"labelMap.paragraph\") || '';\r\n list = editor.options['paragraph'] || [];\r\n if (utils.isEmptyObject(list)) return;\r\n var items = [];\r\n for (var i in list) {\r\n items.push({\r\n value:i,\r\n label:list[i] || editor.getLang(\"paragraph\")[i],\r\n theme:editor.options.theme,\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-label %%-label\"><span class=\"edui-for-' + this.value + '\">' + (this.label || '') + '</span></div>';\r\n }\r\n })\r\n }\r\n var ui = new editorui.Combox({\r\n editor:editor,\r\n items:items,\r\n title:title,\r\n initValue:title,\r\n className:'edui-for-paragraph',\r\n onselect:function (t, index) {\r\n editor.execCommand('Paragraph', this.items[index].value);\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n }\r\n });\r\n editorui.buttons['paragraph'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('Paragraph');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('Paragraph');\r\n var index = ui.indexByValue(value);\r\n if (index != -1) {\r\n ui.setValue(value);\r\n } else {\r\n ui.setValue(ui.initValue);\r\n }\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n\r\n //自定义标题\r\n editorui.customstyle = function (editor) {\r\n var list = editor.options['customstyle'] || [],\r\n title = editor.options.labelMap['customstyle'] || editor.getLang(\"labelMap.customstyle\") || '';\r\n if (!list.length)return;\r\n var langCs = editor.getLang('customstyle');\r\n for (var i = 0, items = [], t; t = list[i++];) {\r\n (function (t) {\r\n var ck = {};\r\n ck.label = t.label ? t.label : langCs[t.name];\r\n ck.style = t.style;\r\n ck.className = t.className;\r\n ck.tag = t.tag;\r\n items.push({\r\n label:ck.label,\r\n value:ck,\r\n theme:editor.options.theme,\r\n renderLabelHtml:function () {\r\n return '<div class=\"edui-label %%-label\">' + '<' + ck.tag + ' ' + (ck.className ? ' class=\"' + ck.className + '\"' : \"\")\r\n + (ck.style ? ' style=\"' + ck.style + '\"' : \"\") + '>' + ck.label + \"<\\/\" + ck.tag + \">\"\r\n + '</div>';\r\n }\r\n });\r\n })(t);\r\n }\r\n\r\n var ui = new editorui.Combox({\r\n editor:editor,\r\n items:items,\r\n title:title,\r\n initValue:title,\r\n className:'edui-for-customstyle',\r\n onselect:function (t, index) {\r\n editor.execCommand('customstyle', this.items[index].value);\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n },\r\n indexByValue:function (value) {\r\n for (var i = 0, ti; ti = this.items[i++];) {\r\n if (ti.label == value) {\r\n return i - 1\r\n }\r\n }\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['customstyle'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('customstyle');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('customstyle');\r\n var index = ui.indexByValue(value);\r\n if (index != -1) {\r\n ui.setValue(value);\r\n } else {\r\n ui.setValue(ui.initValue);\r\n }\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n editorui.inserttable = function (editor, iframeUrl, title) {\r\n title = editor.options.labelMap['inserttable'] || editor.getLang(\"labelMap.inserttable\") || '';\r\n var ui = new editorui.TableButton({\r\n editor:editor,\r\n title:title,\r\n className:'edui-for-inserttable',\r\n onpicktable:function (t, numCols, numRows) {\r\n editor.execCommand('InsertTable', {numRows:numRows, numCols:numCols, border:1});\r\n },\r\n onbuttonclick:function () {\r\n this.showPopup();\r\n }\r\n });\r\n editorui.buttons['inserttable'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('inserttable') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.lineheight = function (editor) {\r\n var val = editor.options.lineheight || [];\r\n if (!val.length)return;\r\n for (var i = 0, ci, items = []; ci = val[i++];) {\r\n items.push({\r\n //todo:写死了\r\n label:ci,\r\n value:ci,\r\n theme:editor.options.theme,\r\n onclick:function () {\r\n editor.execCommand(\"lineheight\", this.value);\r\n }\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor:editor,\r\n className:'edui-for-lineheight',\r\n title:editor.options.labelMap['lineheight'] || editor.getLang(\"labelMap.lineheight\") || '',\r\n items:items,\r\n onbuttonclick:function () {\r\n var value = editor.queryCommandValue('LineHeight') || this.value;\r\n editor.execCommand(\"LineHeight\", value);\r\n }\r\n });\r\n editorui.buttons['lineheight'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('LineHeight');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('LineHeight');\r\n value && ui.setValue((value + '').replace(/cm/, ''));\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n };\r\n\r\n var rowspacings = ['top', 'bottom'];\r\n for (var r = 0, ri; ri = rowspacings[r++];) {\r\n (function (cmd) {\r\n editorui['rowspacing' + cmd] = function (editor) {\r\n var val = editor.options['rowspacing' + cmd] || [];\r\n if (!val.length) return null;\r\n for (var i = 0, ci, items = []; ci = val[i++];) {\r\n items.push({\r\n label:ci,\r\n value:ci,\r\n theme:editor.options.theme,\r\n onclick:function () {\r\n editor.execCommand(\"rowspacing\", this.value, cmd);\r\n }\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor:editor,\r\n className:'edui-for-rowspacing' + cmd,\r\n title:editor.options.labelMap['rowspacing' + cmd] || editor.getLang(\"labelMap.rowspacing\" + cmd) || '',\r\n items:items,\r\n onbuttonclick:function () {\r\n var value = editor.queryCommandValue('rowspacing', cmd) || this.value;\r\n editor.execCommand(\"rowspacing\", value, cmd);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('rowspacing', cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('rowspacing', cmd);\r\n value && ui.setValue((value + '').replace(/%/, ''));\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n }\r\n })(ri)\r\n }\r\n //有序,无序列表\r\n var lists = ['insertorderedlist', 'insertunorderedlist'];\r\n for (var l = 0, cl; cl = lists[l++];) {\r\n (function (cmd) {\r\n editorui[cmd] = function (editor) {\r\n var vals = editor.options[cmd],\r\n _onMenuClick = function () {\r\n editor.execCommand(cmd, this.value);\r\n }, items = [];\r\n for (var i in vals) {\r\n items.push({\r\n label:vals[i] || editor.getLang()[cmd][i] || \"\",\r\n value:i,\r\n theme:editor.options.theme,\r\n onclick:_onMenuClick\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor:editor,\r\n className:'edui-for-' + cmd,\r\n title:editor.getLang(\"labelMap.\" + cmd) || '',\r\n 'items':items,\r\n onbuttonclick:function () {\r\n var value = editor.queryCommandValue(cmd) || this.value;\r\n editor.execCommand(cmd, value);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState(cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue(cmd);\r\n ui.setValue(value);\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n };\r\n })(cl)\r\n }\r\n\r\n editorui.fullscreen = function (editor, title) {\r\n title = editor.options.labelMap['fullscreen'] || editor.getLang(\"labelMap.fullscreen\") || '';\r\n var ui = new editorui.Button({\r\n className:'edui-for-fullscreen',\r\n title:title,\r\n theme:editor.options.theme,\r\n onclick:function () {\r\n if (editor.ui) {\r\n editor.ui.setFullScreen(!editor.ui.isFullScreen());\r\n }\r\n this.setChecked(editor.ui.isFullScreen());\r\n }\r\n });\r\n editorui.buttons['fullscreen'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('fullscreen');\r\n ui.setDisabled(state == -1);\r\n ui.setChecked(editor.ui.isFullScreen());\r\n });\r\n return ui;\r\n };\r\n\r\n // 表情\r\n editorui[\"emotion\"] = function (editor, iframeUrl) {\r\n var cmd = \"emotion\";\r\n var ui = new editorui.MultiMenuPop({\r\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd + \"\") || '',\r\n editor:editor,\r\n className:'edui-for-' + cmd,\r\n iframeUrl:editor.ui.mapUrl(iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd])\r\n });\r\n editorui.buttons[cmd] = ui;\r\n\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1)\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.autotypeset = function (editor) {\r\n var ui = new editorui.AutoTypeSetButton({\r\n editor:editor,\r\n title:editor.options.labelMap['autotypeset'] || editor.getLang(\"labelMap.autotypeset\") || '',\r\n className:'edui-for-autotypeset',\r\n onbuttonclick:function () {\r\n editor.execCommand('autotypeset')\r\n }\r\n });\r\n editorui.buttons['autotypeset'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('autotypeset') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n /* 简单上传插件 */\r\n editorui[\"simpleupload\"] = function (editor) {\r\n var name = 'simpleupload',\r\n ui = new editorui.Button({\r\n className:'edui-for-' + name,\r\n title:editor.options.labelMap[name] || editor.getLang(\"labelMap.\" + name) || '',\r\n onclick:function () {},\r\n theme:editor.options.theme,\r\n showText:false\r\n });\r\n editorui.buttons[name] = ui;\r\n editor.addListener('ready', function() {\r\n var b = ui.getDom('body'),\r\n iconSpan = b.children[0];\r\n editor.fireEvent('simpleuploadbtnready', iconSpan);\r\n });\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n var state = editor.queryCommandState(name);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n ui.setChecked(false);\r\n } else {\r\n if (!uiReady) {\r\n ui.setDisabled(false);\r\n ui.setChecked(state);\r\n }\r\n }\r\n });\r\n return ui;\r\n };\r\n\r\n})();\r\n\r\n\r\n// adapter/editor.js\r\n///import core\r\n///commands 全屏\r\n///commandsName FullScreen\r\n///commandsTitle 全屏\r\n(function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n domUtils = baidu.editor.dom.domUtils;\r\n var nodeStack = [];\r\n\r\n function EditorUI(options) {\r\n this.initOptions(options);\r\n this.initEditorUI();\r\n }\r\n\r\n EditorUI.prototype = {\r\n uiName:'editor',\r\n initEditorUI:function () {\r\n this.editor.ui = this;\r\n this._dialogs = {};\r\n this.initUIBase();\r\n this._initToolbars();\r\n var editor = this.editor,\r\n me = this;\r\n\r\n editor.addListener('ready', function () {\r\n //提供getDialog方法\r\n editor.getDialog = function (name) {\r\n return editor.ui._dialogs[name + \"Dialog\"];\r\n };\r\n domUtils.on(editor.window, 'scroll', function (evt) {\r\n baidu.editor.ui.Popup.postHide(evt);\r\n });\r\n //提供编辑器实时宽高(全屏时宽高不变化)\r\n editor.ui._actualFrameWidth = editor.options.initialFrameWidth;\r\n\r\n UE.browser.ie && UE.browser.version === 6 && editor.container.ownerDocument.execCommand(\"BackgroundImageCache\", false, true);\r\n\r\n //display bottom-bar label based on config\r\n if (editor.options.elementPathEnabled) {\r\n editor.ui.getDom('elementpath').innerHTML = '<div class=\"edui-editor-breadcrumb\">' + editor.getLang(\"elementPathTip\") + ':</div>';\r\n }\r\n if (editor.options.wordCount) {\r\n function countFn() {\r\n setCount(editor,me);\r\n domUtils.un(editor.document, \"click\", arguments.callee);\r\n }\r\n domUtils.on(editor.document, \"click\", countFn);\r\n editor.ui.getDom('wordcount').innerHTML = editor.getLang(\"wordCountTip\");\r\n }\r\n editor.ui._scale();\r\n if (editor.options.scaleEnabled) {\r\n if (editor.autoHeightEnabled) {\r\n editor.disableAutoHeight();\r\n }\r\n me.enableScale();\r\n } else {\r\n me.disableScale();\r\n }\r\n if (!editor.options.elementPathEnabled && !editor.options.wordCount && !editor.options.scaleEnabled) {\r\n editor.ui.getDom('elementpath').style.display = \"none\";\r\n editor.ui.getDom('wordcount').style.display = \"none\";\r\n editor.ui.getDom('scale').style.display = \"none\";\r\n }\r\n\r\n if (!editor.selection.isFocus())return;\r\n editor.fireEvent('selectionchange', false, true);\r\n\r\n\r\n });\r\n\r\n editor.addListener('mousedown', function (t, evt) {\r\n var el = evt.target || evt.srcElement;\r\n baidu.editor.ui.Popup.postHide(evt, el);\r\n baidu.editor.ui.ShortCutMenu.postHide(evt);\r\n\r\n });\r\n editor.addListener(\"delcells\", function () {\r\n if (UE.ui['edittip']) {\r\n new UE.ui['edittip'](editor);\r\n }\r\n editor.getDialog('edittip').open();\r\n });\r\n\r\n var pastePop, isPaste = false, timer;\r\n editor.addListener(\"afterpaste\", function () {\r\n if(editor.queryCommandState('pasteplain'))\r\n return;\r\n if(baidu.editor.ui.PastePicker){\r\n pastePop = new baidu.editor.ui.Popup({\r\n content:new baidu.editor.ui.PastePicker({editor:editor}),\r\n editor:editor,\r\n className:'edui-wordpastepop'\r\n });\r\n pastePop.render();\r\n }\r\n isPaste = true;\r\n });\r\n\r\n editor.addListener(\"afterinserthtml\", function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n if (pastePop && (isPaste || editor.ui._isTransfer)) {\r\n if(pastePop.isHidden()){\r\n var span = domUtils.createElement(editor.document, 'span', {\r\n 'style':\"line-height:0px;\",\r\n 'innerHTML':'\\ufeff'\r\n }),\r\n range = editor.selection.getRange();\r\n range.insertNode(span);\r\n var tmp= getDomNode(span, 'firstChild', 'previousSibling');\r\n tmp && pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp);\r\n domUtils.remove(span);\r\n }else{\r\n pastePop.show();\r\n }\r\n delete editor.ui._isTransfer;\r\n isPaste = false;\r\n }\r\n }, 200)\r\n });\r\n editor.addListener('contextmenu', function (t, evt) {\r\n baidu.editor.ui.Popup.postHide(evt);\r\n });\r\n editor.addListener('keydown', function (t, evt) {\r\n if (pastePop) pastePop.dispose(evt);\r\n var keyCode = evt.keyCode || evt.which;\r\n if(evt.altKey&&keyCode==90){\r\n UE.ui.buttons['fullscreen'].onclick();\r\n }\r\n });\r\n editor.addListener('wordcount', function (type) {\r\n setCount(this,me);\r\n });\r\n function setCount(editor,ui) {\r\n editor.setOpt({\r\n wordCount:true,\r\n maximumWords:10000,\r\n wordCountMsg:editor.options.wordCountMsg || editor.getLang(\"wordCountMsg\"),\r\n wordOverFlowMsg:editor.options.wordOverFlowMsg || editor.getLang(\"wordOverFlowMsg\")\r\n });\r\n var opt = editor.options,\r\n max = opt.maximumWords,\r\n msg = opt.wordCountMsg ,\r\n errMsg = opt.wordOverFlowMsg,\r\n countDom = ui.getDom('wordcount');\r\n if (!opt.wordCount) {\r\n return;\r\n }\r\n var count = editor.getContentLength(true);\r\n if (count > max) {\r\n countDom.innerHTML = errMsg;\r\n editor.fireEvent(\"wordcountoverflow\");\r\n } else {\r\n countDom.innerHTML = msg.replace(\"{#leave}\", max - count).replace(\"{#count}\", count);\r\n }\r\n }\r\n\r\n editor.addListener('selectionchange', function () {\r\n if (editor.options.elementPathEnabled) {\r\n me[(editor.queryCommandState('elementpath') == -1 ? 'dis' : 'en') + 'ableElementPath']()\r\n }\r\n if (editor.options.scaleEnabled) {\r\n me[(editor.queryCommandState('scale') == -1 ? 'dis' : 'en') + 'ableScale']();\r\n\r\n }\r\n });\r\n var popup = new baidu.editor.ui.Popup({\r\n editor:editor,\r\n content:'',\r\n className:'edui-bubble',\r\n _onEditButtonClick:function () {\r\n this.hide();\r\n editor.ui._dialogs.linkDialog.open();\r\n },\r\n _onImgEditButtonClick:function (name) {\r\n this.hide();\r\n editor.ui._dialogs[name] && editor.ui._dialogs[name].open();\r\n\r\n },\r\n _onImgSetFloat:function (value) {\r\n this.hide();\r\n editor.execCommand(\"imagefloat\", value);\r\n\r\n },\r\n _setIframeAlign:function (value) {\r\n var frame = popup.anchorEl;\r\n var newFrame = frame.cloneNode(true);\r\n switch (value) {\r\n case -2:\r\n newFrame.setAttribute(\"align\", \"\");\r\n break;\r\n case -1:\r\n newFrame.setAttribute(\"align\", \"left\");\r\n break;\r\n case 1:\r\n newFrame.setAttribute(\"align\", \"right\");\r\n break;\r\n }\r\n frame.parentNode.insertBefore(newFrame, frame);\r\n domUtils.remove(frame);\r\n popup.anchorEl = newFrame;\r\n popup.showAnchor(popup.anchorEl);\r\n },\r\n _updateIframe:function () {\r\n var frame = editor._iframe = popup.anchorEl;\r\n if(domUtils.hasClass(frame, 'ueditor_baidumap')) {\r\n editor.selection.getRange().selectNode(frame).select();\r\n editor.ui._dialogs.mapDialog.open();\r\n popup.hide();\r\n } else {\r\n editor.ui._dialogs.insertframeDialog.open();\r\n popup.hide();\r\n }\r\n },\r\n _onRemoveButtonClick:function (cmdName) {\r\n editor.execCommand(cmdName);\r\n this.hide();\r\n },\r\n queryAutoHide:function (el) {\r\n if (el && el.ownerDocument == editor.document) {\r\n if (el.tagName.toLowerCase() == 'img' || domUtils.findParentByTagName(el, 'a', true)) {\r\n return el !== popup.anchorEl;\r\n }\r\n }\r\n return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el);\r\n }\r\n });\r\n popup.render();\r\n if (editor.options.imagePopup) {\r\n editor.addListener('mouseover', function (t, evt) {\r\n evt = evt || window.event;\r\n var el = evt.target || evt.srcElement;\r\n if (editor.ui._dialogs.insertframeDialog && /iframe/ig.test(el.tagName)) {\r\n var html = popup.formatHtml(\r\n '<nobr>' + editor.getLang(\"property\") + ': <span onclick=$$._setIframeAlign(-2) class=\"edui-clickable\">' + editor.getLang(\"default\") + '</span> <span onclick=$$._setIframeAlign(-1) class=\"edui-clickable\">' + editor.getLang(\"justifyleft\") + '</span> <span onclick=$$._setIframeAlign(1) class=\"edui-clickable\">' + editor.getLang(\"justifyright\") + '</span> ' +\r\n ' <span onclick=\"$$._updateIframe( this);\" class=\"edui-clickable\">' + editor.getLang(\"modify\") + '</span></nobr>');\r\n if (html) {\r\n popup.getDom('content').innerHTML = html;\r\n popup.anchorEl = el;\r\n popup.showAnchor(popup.anchorEl);\r\n } else {\r\n popup.hide();\r\n }\r\n }\r\n });\r\n editor.addListener('selectionchange', function (t, causeByUi) {\r\n if (!causeByUi) return;\r\n var html = '', str = \"\",\r\n img = editor.selection.getRange().getClosedNode(),\r\n dialogs = editor.ui._dialogs;\r\n if (img && img.tagName == 'IMG') {\r\n var dialogName = 'insertimageDialog';\r\n if (img.className.indexOf(\"edui-faked-video\") != -1 || img.className.indexOf(\"edui-upload-video\") != -1) {\r\n dialogName = \"insertvideoDialog\"\r\n }\r\n if (img.className.indexOf(\"edui-faked-webapp\") != -1) {\r\n dialogName = \"webappDialog\"\r\n }\r\n if (img.src.indexOf(\"http://api.map.baidu.com\") != -1) {\r\n dialogName = \"mapDialog\"\r\n }\r\n if (img.className.indexOf(\"edui-faked-music\") != -1) {\r\n dialogName = \"musicDialog\"\r\n }\r\n if (img.src.indexOf(\"http://maps.google.com/maps/api/staticmap\") != -1) {\r\n dialogName = \"gmapDialog\"\r\n }\r\n if (img.getAttribute(\"anchorname\")) {\r\n dialogName = \"anchorDialog\";\r\n html = popup.formatHtml(\r\n '<nobr>' + editor.getLang(\"property\") + ': <span onclick=$$._onImgEditButtonClick(\"anchorDialog\") class=\"edui-clickable\">' + editor.getLang(\"modify\") + '</span> ' +\r\n '<span onclick=$$._onRemoveButtonClick(\\'anchor\\') class=\"edui-clickable\">' + editor.getLang(\"delete\") + '</span></nobr>');\r\n }\r\n if (img.getAttribute(\"word_img\")) {\r\n //todo 放到dialog去做查询\r\n editor.word_img = [img.getAttribute(\"word_img\")];\r\n dialogName = \"wordimageDialog\"\r\n }\r\n if(domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) {\r\n dialogName = \"\";\r\n }\r\n if (!dialogs[dialogName]) {\r\n return;\r\n }\r\n str = '<nobr>' + editor.getLang(\"property\") + ': '+\r\n '<span onclick=$$._onImgSetFloat(\"none\") class=\"edui-clickable\">' + editor.getLang(\"default\") + '</span> ' +\r\n '<span onclick=$$._onImgSetFloat(\"left\") class=\"edui-clickable\">' + editor.getLang(\"justifyleft\") + '</span> ' +\r\n '<span onclick=$$._onImgSetFloat(\"right\") class=\"edui-clickable\">' + editor.getLang(\"justifyright\") + '</span> ' +\r\n '<span onclick=$$._onImgSetFloat(\"center\") class=\"edui-clickable\">' + editor.getLang(\"justifycenter\") + '</span> '+\r\n '<span onclick=\"$$._onImgEditButtonClick(\\'' + dialogName + '\\');\" class=\"edui-clickable\">' + editor.getLang(\"modify\") + '</span></nobr>';\r\n\r\n !html && (html = popup.formatHtml(str))\r\n\r\n }\r\n if (editor.ui._dialogs.linkDialog) {\r\n var link = editor.queryCommandValue('link');\r\n var url;\r\n if (link && (url = (link.getAttribute('_href') || link.getAttribute('href', 2)))) {\r\n var txt = url;\r\n if (url.length > 30) {\r\n txt = url.substring(0, 20) + \"...\";\r\n }\r\n if (html) {\r\n html += '<div style=\"height:5px;\"></div>'\r\n }\r\n html += popup.formatHtml(\r\n '<nobr>' + editor.getLang(\"anthorMsg\") + ': <a target=\"_blank\" href=\"' + url + '\" title=\"' + url + '\" >' + txt + '</a>' +\r\n ' <span class=\"edui-clickable\" onclick=\"$$._onEditButtonClick();\">' + editor.getLang(\"modify\") + '</span>' +\r\n ' <span class=\"edui-clickable\" onclick=\"$$._onRemoveButtonClick(\\'unlink\\');\"> ' + editor.getLang(\"clear\") + '</span></nobr>');\r\n popup.showAnchor(link);\r\n }\r\n }\r\n\r\n if (html) {\r\n popup.getDom('content').innerHTML = html;\r\n popup.anchorEl = img || link;\r\n popup.showAnchor(popup.anchorEl);\r\n } else {\r\n popup.hide();\r\n }\r\n });\r\n }\r\n\r\n },\r\n _initToolbars:function () {\r\n var editor = this.editor;\r\n var toolbars = this.toolbars || [];\r\n var toolbarUis = [];\r\n for (var i = 0; i < toolbars.length; i++) {\r\n var toolbar = toolbars[i];\r\n var toolbarUi = new baidu.editor.ui.Toolbar({theme:editor.options.theme});\r\n for (var j = 0; j < toolbar.length; j++) {\r\n var toolbarItem = toolbar[j];\r\n var toolbarItemUi = null;\r\n if (typeof toolbarItem == 'string') {\r\n toolbarItem = toolbarItem.toLowerCase();\r\n if (toolbarItem == '|') {\r\n toolbarItem = 'Separator';\r\n }\r\n if(toolbarItem == '||'){\r\n toolbarItem = 'Breakline';\r\n }\r\n if (baidu.editor.ui[toolbarItem]) {\r\n toolbarItemUi = new baidu.editor.ui[toolbarItem](editor);\r\n }\r\n\r\n //fullscreen这里单独处理一下,放到首行去\r\n if (toolbarItem == 'fullscreen') {\r\n if (toolbarUis && toolbarUis[0]) {\r\n toolbarUis[0].items.splice(0, 0, toolbarItemUi);\r\n } else {\r\n toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi);\r\n }\r\n\r\n continue;\r\n\r\n\r\n }\r\n } else {\r\n toolbarItemUi = toolbarItem;\r\n }\r\n if (toolbarItemUi && toolbarItemUi.id) {\r\n\r\n toolbarUi.add(toolbarItemUi);\r\n }\r\n }\r\n toolbarUis[i] = toolbarUi;\r\n }\r\n\r\n //接受外部定制的UI(修复因 utils.each 无法准确的循环出对象的全部元素而导致的自定义 UI 不符合预期的 BUG by HaoChuan9421)\r\n\r\n // utils.each(UE._customizeUI,function(obj,key){\r\n // var itemUI,index;\r\n // if(obj.id && obj.id != editor.key){\r\n // return false;\r\n // }\r\n // itemUI = obj.execFn.call(editor,editor,key);\r\n // if(itemUI){\r\n // index = obj.index;\r\n // if(index === undefined){\r\n // index = toolbarUi.items.length;\r\n // }\r\n // toolbarUi.add(itemUI,index)\r\n // }\r\n // });\r\n\r\n \r\n for(var key in UE._customizeUI){\r\n var obj = UE._customizeUI[key]\r\n var itemUI,index;\r\n if(!obj.id || obj.id == editor.key){\r\n itemUI = obj.execFn.call(editor,editor,key);\r\n if(itemUI){\r\n index = obj.index;\r\n if(index === undefined){\r\n index = toolbarUi.items.length;\r\n }\r\n toolbarUi.add(itemUI,index)\r\n }\r\n }\r\n }\r\n\r\n this.toolbars = toolbarUis;\r\n },\r\n getHtmlTpl:function () {\r\n return '<div id=\"##\" class=\"%%\">' +\r\n '<div id=\"##_toolbarbox\" class=\"%%-toolbarbox\">' +\r\n (this.toolbars.length ?\r\n '<div id=\"##_toolbarboxouter\" class=\"%%-toolbarboxouter\"><div class=\"%%-toolbarboxinner\">' +\r\n this.renderToolbarBoxHtml() +\r\n '</div></div>' : '') +\r\n '<div id=\"##_toolbarmsg\" class=\"%%-toolbarmsg\" style=\"display:none;\">' +\r\n '<div id = \"##_upload_dialog\" class=\"%%-toolbarmsg-upload\" onclick=\"$$.showWordImageDialog();\">' + this.editor.getLang(\"clickToUpload\") + '</div>' +\r\n '<div class=\"%%-toolbarmsg-close\" onclick=\"$$.hideToolbarMsg();\">x</div>' +\r\n '<div id=\"##_toolbarmsg_label\" class=\"%%-toolbarmsg-label\"></div>' +\r\n '<div style=\"height:0;overflow:hidden;clear:both;\"></div>' +\r\n '</div>' +\r\n '<div id=\"##_message_holder\" class=\"%%-messageholder\"></div>' +\r\n '</div>' +\r\n '<div id=\"##_iframeholder\" class=\"%%-iframeholder\">' +\r\n '</div>' +\r\n //modify wdcount by matao\r\n '<div id=\"##_bottombar\" class=\"%%-bottomContainer\"><table><tr>' +\r\n '<td id=\"##_elementpath\" class=\"%%-bottombar\"></td>' +\r\n '<td id=\"##_wordcount\" class=\"%%-wordcount\"></td>' +\r\n '<td id=\"##_scale\" class=\"%%-scale\"><div class=\"%%-icon\"></div></td>' +\r\n '</tr></table></div>' +\r\n '<div id=\"##_scalelayer\"></div>' +\r\n '</div>';\r\n },\r\n showWordImageDialog:function () {\r\n this._dialogs['wordimageDialog'].open();\r\n },\r\n renderToolbarBoxHtml:function () {\r\n var buff = [];\r\n for (var i = 0; i < this.toolbars.length; i++) {\r\n buff.push(this.toolbars[i].renderHtml());\r\n }\r\n return buff.join('');\r\n },\r\n setFullScreen:function (fullscreen) {\r\n\r\n var editor = this.editor,\r\n container = editor.container.parentNode.parentNode;\r\n if (this._fullscreen != fullscreen) {\r\n this._fullscreen = fullscreen;\r\n this.editor.fireEvent('beforefullscreenchange', fullscreen);\r\n if (baidu.editor.browser.gecko) {\r\n var bk = editor.selection.getRange().createBookmark();\r\n }\r\n if (fullscreen) {\r\n while (container.tagName != \"BODY\") {\r\n var position = baidu.editor.dom.domUtils.getComputedStyle(container, \"position\");\r\n nodeStack.push(position);\r\n container.style.position = \"static\";\r\n container = container.parentNode;\r\n }\r\n this._bakHtmlOverflow = document.documentElement.style.overflow;\r\n this._bakBodyOverflow = document.body.style.overflow;\r\n this._bakAutoHeight = this.editor.autoHeightEnabled;\r\n this._bakScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);\r\n\r\n this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth;\r\n if (this._bakAutoHeight) {\r\n //当全屏时不能执行自动长高\r\n editor.autoHeightEnabled = false;\r\n this.editor.disableAutoHeight();\r\n }\r\n\r\n document.documentElement.style.overflow = 'hidden';\r\n //修复,滚动条不收起的问题\r\n\r\n window.scrollTo(0,window.scrollY);\r\n this._bakCssText = this.getDom().style.cssText;\r\n this._bakCssText1 = this.getDom('iframeholder').style.cssText;\r\n editor.iframe.parentNode.style.width = '';\r\n this._updateFullScreen();\r\n } else {\r\n while (container.tagName != \"BODY\") {\r\n container.style.position = nodeStack.shift();\r\n container = container.parentNode;\r\n }\r\n this.getDom().style.cssText = this._bakCssText;\r\n this.getDom('iframeholder').style.cssText = this._bakCssText1;\r\n if (this._bakAutoHeight) {\r\n editor.autoHeightEnabled = true;\r\n this.editor.enableAutoHeight();\r\n }\r\n\r\n document.documentElement.style.overflow = this._bakHtmlOverflow;\r\n document.body.style.overflow = this._bakBodyOverflow;\r\n editor.iframe.parentNode.style.width = this._bakEditorContaninerWidth + 'px';\r\n window.scrollTo(0, this._bakScrollTop);\r\n }\r\n if (browser.gecko && editor.body.contentEditable === 'true') {\r\n var input = document.createElement('input');\r\n document.body.appendChild(input);\r\n editor.body.contentEditable = false;\r\n setTimeout(function () {\r\n input.focus();\r\n setTimeout(function () {\r\n editor.body.contentEditable = true;\r\n editor.fireEvent('fullscreenchanged', fullscreen);\r\n editor.selection.getRange().moveToBookmark(bk).select(true);\r\n baidu.editor.dom.domUtils.remove(input);\r\n fullscreen && window.scroll(0, 0);\r\n }, 0)\r\n }, 0)\r\n }\r\n\r\n if(editor.body.contentEditable === 'true'){\r\n this.editor.fireEvent('fullscreenchanged', fullscreen);\r\n this.triggerLayout();\r\n }\r\n\r\n }\r\n },\r\n _updateFullScreen:function () {\r\n if (this._fullscreen) {\r\n var vpRect = uiUtils.getViewportRect();\r\n this.getDom().style.cssText = 'border:0;position:absolute;left:0;top:' + (this.editor.options.topOffset || 0) + 'px;width:' + vpRect.width + 'px;height:' + vpRect.height + 'px;z-index:' + (this.getDom().style.zIndex * 1 + 100);\r\n uiUtils.setViewportOffset(this.getDom(), { left:0, top:this.editor.options.topOffset || 0 });\r\n this.editor.setHeight(vpRect.height - this.getDom('toolbarbox').offsetHeight - this.getDom('bottombar').offsetHeight - (this.editor.options.topOffset || 0),true);\r\n //不手动调一下,会导致全屏失效\r\n if(browser.gecko){\r\n try{\r\n window.onresize();\r\n }catch(e){\r\n\r\n }\r\n\r\n }\r\n }\r\n },\r\n _updateElementPath:function () {\r\n var bottom = this.getDom('elementpath'), list;\r\n if (this.elementPathEnabled && (list = this.editor.queryCommandValue('elementpath'))) {\r\n\r\n var buff = [];\r\n for (var i = 0, ci; ci = list[i]; i++) {\r\n buff[i] = this.formatHtml('<span unselectable=\"on\" onclick=\"$$.editor.execCommand("elementpath", "' + i + '");\">' + ci + '</span>');\r\n }\r\n bottom.innerHTML = '<div class=\"edui-editor-breadcrumb\" onmousedown=\"return false;\">' + this.editor.getLang(\"elementPathTip\") + ': ' + buff.join(' > ') + '</div>';\r\n\r\n } else {\r\n bottom.style.display = 'none'\r\n }\r\n },\r\n disableElementPath:function () {\r\n var bottom = this.getDom('elementpath');\r\n bottom.innerHTML = '';\r\n bottom.style.display = 'none';\r\n this.elementPathEnabled = false;\r\n\r\n },\r\n enableElementPath:function () {\r\n var bottom = this.getDom('elementpath');\r\n bottom.style.display = '';\r\n this.elementPathEnabled = true;\r\n this._updateElementPath();\r\n },\r\n _scale:function () {\r\n var doc = document,\r\n editor = this.editor,\r\n editorHolder = editor.container,\r\n editorDocument = editor.document,\r\n toolbarBox = this.getDom(\"toolbarbox\"),\r\n bottombar = this.getDom(\"bottombar\"),\r\n scale = this.getDom(\"scale\"),\r\n scalelayer = this.getDom(\"scalelayer\");\r\n\r\n var isMouseMove = false,\r\n position = null,\r\n minEditorHeight = 0,\r\n minEditorWidth = editor.options.minFrameWidth,\r\n pageX = 0,\r\n pageY = 0,\r\n scaleWidth = 0,\r\n scaleHeight = 0;\r\n\r\n function down() {\r\n position = domUtils.getXY(editorHolder);\r\n\r\n if (!minEditorHeight) {\r\n minEditorHeight = editor.options.minFrameHeight + toolbarBox.offsetHeight + bottombar.offsetHeight;\r\n }\r\n\r\n scalelayer.style.cssText = \"position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:\" + editorHolder.offsetWidth + \"px;height:\"\r\n + editorHolder.offsetHeight + \"px;z-index:\" + (editor.options.zIndex + 1);\r\n\r\n domUtils.on(doc, \"mousemove\", move);\r\n domUtils.on(editorDocument, \"mouseup\", up);\r\n domUtils.on(doc, \"mouseup\", up);\r\n }\r\n\r\n var me = this;\r\n //by xuheng 全屏时关掉缩放\r\n this.editor.addListener('fullscreenchanged', function (e, fullScreen) {\r\n if (fullScreen) {\r\n me.disableScale();\r\n\r\n } else {\r\n if (me.editor.options.scaleEnabled) {\r\n me.enableScale();\r\n var tmpNode = me.editor.document.createElement('span');\r\n me.editor.body.appendChild(tmpNode);\r\n me.editor.body.style.height = Math.max(domUtils.getXY(tmpNode).y, me.editor.iframe.offsetHeight - 20) + 'px';\r\n domUtils.remove(tmpNode)\r\n }\r\n }\r\n });\r\n function move(event) {\r\n clearSelection();\r\n var e = event || window.event;\r\n pageX = e.pageX || (doc.documentElement.scrollLeft + e.clientX);\r\n pageY = e.pageY || (doc.documentElement.scrollTop + e.clientY);\r\n scaleWidth = pageX - position.x;\r\n scaleHeight = pageY - position.y;\r\n\r\n if (scaleWidth >= minEditorWidth) {\r\n isMouseMove = true;\r\n scalelayer.style.width = scaleWidth + 'px';\r\n }\r\n if (scaleHeight >= minEditorHeight) {\r\n isMouseMove = true;\r\n scalelayer.style.height = scaleHeight + \"px\";\r\n }\r\n }\r\n\r\n function up() {\r\n if (isMouseMove) {\r\n isMouseMove = false;\r\n editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2;\r\n editorHolder.style.width = editor.ui._actualFrameWidth + 'px';\r\n\r\n editor.setHeight(scalelayer.offsetHeight - bottombar.offsetHeight - toolbarBox.offsetHeight - 2,true);\r\n }\r\n if (scalelayer) {\r\n scalelayer.style.display = \"none\";\r\n }\r\n clearSelection();\r\n domUtils.un(doc, \"mousemove\", move);\r\n domUtils.un(editorDocument, \"mouseup\", up);\r\n domUtils.un(doc, \"mouseup\", up);\r\n }\r\n\r\n function clearSelection() {\r\n if (browser.ie)\r\n doc.selection.clear();\r\n else\r\n window.getSelection().removeAllRanges();\r\n }\r\n\r\n this.enableScale = function () {\r\n //trace:2868\r\n if (editor.queryCommandState(\"source\") == 1) return;\r\n scale.style.display = \"\";\r\n this.scaleEnabled = true;\r\n domUtils.on(scale, \"mousedown\", down);\r\n };\r\n this.disableScale = function () {\r\n scale.style.display = \"none\";\r\n this.scaleEnabled = false;\r\n domUtils.un(scale, \"mousedown\", down);\r\n };\r\n },\r\n isFullScreen:function () {\r\n return this._fullscreen;\r\n },\r\n postRender:function () {\r\n UIBase.prototype.postRender.call(this);\r\n for (var i = 0; i < this.toolbars.length; i++) {\r\n this.toolbars[i].postRender();\r\n }\r\n var me = this;\r\n var timerId,\r\n domUtils = baidu.editor.dom.domUtils,\r\n updateFullScreenTime = function () {\r\n clearTimeout(timerId);\r\n timerId = setTimeout(function () {\r\n me._updateFullScreen();\r\n });\r\n };\r\n domUtils.on(window, 'resize', updateFullScreenTime);\r\n\r\n me.addListener('destroy', function () {\r\n domUtils.un(window, 'resize', updateFullScreenTime);\r\n clearTimeout(timerId);\r\n })\r\n },\r\n showToolbarMsg:function (msg, flag) {\r\n this.getDom('toolbarmsg_label').innerHTML = msg;\r\n this.getDom('toolbarmsg').style.display = '';\r\n //\r\n if (!flag) {\r\n var w = this.getDom('upload_dialog');\r\n w.style.display = 'none';\r\n }\r\n },\r\n hideToolbarMsg:function () {\r\n this.getDom('toolbarmsg').style.display = 'none';\r\n },\r\n mapUrl:function (url) {\r\n return url ? url.replace('~/', this.editor.options.UEDITOR_HOME_URL || '') : ''\r\n },\r\n triggerLayout:function () {\r\n var dom = this.getDom();\r\n if (dom.style.zoom == '1') {\r\n dom.style.zoom = '100%';\r\n } else {\r\n dom.style.zoom = '1';\r\n }\r\n }\r\n };\r\n utils.inherits(EditorUI, baidu.editor.ui.UIBase);\r\n\r\n\r\n var instances = {};\r\n\r\n\r\n UE.ui.Editor = function (options) {\r\n var editor = new UE.Editor(options);\r\n editor.options.editor = editor;\r\n utils.loadFile(document, {\r\n href:editor.options.themePath + editor.options.theme + \"/css/ueditor.css\",\r\n tag:\"link\",\r\n type:\"text/css\",\r\n rel:\"stylesheet\"\r\n });\r\n\r\n var oldRender = editor.render;\r\n editor.render = function (holder) {\r\n if (holder.constructor === String) {\r\n editor.key = holder;\r\n instances[holder] = editor;\r\n }\r\n utils.domReady(function () {\r\n editor.langIsReady ? renderUI() : editor.addListener(\"langReady\", renderUI);\r\n function renderUI() {\r\n editor.setOpt({\r\n labelMap:editor.options.labelMap || editor.getLang('labelMap')\r\n });\r\n new EditorUI(editor.options);\r\n if (holder) {\r\n if (holder.constructor === String) {\r\n holder = document.getElementById(holder);\r\n }\r\n holder && holder.getAttribute('name') && ( editor.options.textarea = holder.getAttribute('name'));\r\n if (holder && /script|textarea/ig.test(holder.tagName)) {\r\n var newDiv = document.createElement('div');\r\n holder.parentNode.insertBefore(newDiv, holder);\r\n var cont = holder.value || holder.innerHTML;\r\n editor.options.initialContent = /^[\\t\\r\\n ]*$/.test(cont) ? editor.options.initialContent :\r\n cont.replace(/>[\\n\\r\\t]+([ ]{4})+/g, '>')\r\n .replace(/[\\n\\r\\t]+([ ]{4})+</g, '<')\r\n .replace(/>[\\n\\r\\t]+</g, '><');\r\n holder.className && (newDiv.className = holder.className);\r\n holder.style.cssText && (newDiv.style.cssText = holder.style.cssText);\r\n if (/textarea/i.test(holder.tagName)) {\r\n editor.textarea = holder;\r\n editor.textarea.style.display = 'none';\r\n\r\n\r\n } else {\r\n holder.parentNode.removeChild(holder);\r\n\r\n\r\n }\r\n if(holder.id){\r\n newDiv.id = holder.id;\r\n domUtils.removeAttributes(holder,'id');\r\n }\r\n holder = newDiv;\r\n holder.innerHTML = '';\r\n }\r\n\r\n }\r\n domUtils.addClass(holder, \"edui-\" + editor.options.theme);\r\n editor.ui.render(holder);\r\n var opt = editor.options;\r\n //给实例添加一个编辑器的容器引用\r\n editor.container = editor.ui.getDom();\r\n var parents = domUtils.findParents(holder,true);\r\n var displays = [];\r\n for(var i = 0 ,ci;ci=parents[i];i++){\r\n displays[i] = ci.style.display;\r\n ci.style.display = 'block'\r\n }\r\n if (opt.initialFrameWidth) {\r\n opt.minFrameWidth = opt.initialFrameWidth;\r\n } else {\r\n opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth;\r\n var styleWidth = holder.style.width;\r\n if(/%$/.test(styleWidth)) {\r\n opt.initialFrameWidth = styleWidth;\r\n }\r\n }\r\n if (opt.initialFrameHeight) {\r\n opt.minFrameHeight = opt.initialFrameHeight;\r\n } else {\r\n opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight;\r\n }\r\n for(var i = 0 ,ci;ci=parents[i];i++){\r\n ci.style.display = displays[i]\r\n }\r\n //编辑器最外容器设置了高度,会导致,编辑器不占位\r\n //todo 先去掉,没有找到原因\r\n if(holder.style.height){\r\n holder.style.height = ''\r\n }\r\n editor.container.style.width = opt.initialFrameWidth + (/%$/.test(opt.initialFrameWidth) ? '' : 'px');\r\n editor.container.style.zIndex = opt.zIndex;\r\n oldRender.call(editor, editor.ui.getDom('iframeholder'));\r\n editor.fireEvent(\"afteruiready\");\r\n }\r\n })\r\n };\r\n return editor;\r\n };\r\n\r\n\r\n /**\r\n * @file\r\n * @name UE\r\n * @short UE\r\n * @desc UEditor的顶部命名空间\r\n */\r\n /**\r\n * @name getEditor\r\n * @since 1.2.4+\r\n * @grammar UE.getEditor(id,[opt]) => Editor实例\r\n * @desc 提供一个全局的方法得到编辑器实例\r\n *\r\n * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回\r\n * * ''opt'' 编辑器的可选参数\r\n * @example\r\n * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例\r\n * this.setContent('hello')\r\n * }});\r\n * UE.getEditor('containerId'); //返回刚创建的实例\r\n *\r\n */\r\n UE.getEditor = function (id, opt) {\r\n var editor = instances[id];\r\n if (!editor) {\r\n editor = instances[id] = new UE.ui.Editor(opt);\r\n editor.render(id);\r\n }\r\n return editor;\r\n };\r\n\r\n\r\n UE.delEditor = function (id) {\r\n var editor;\r\n if (editor = instances[id]) {\r\n editor.key && editor.destroy();\r\n delete instances[id]\r\n }\r\n };\r\n\r\n UE.registerUI = function(uiName,fn,index,editorId){\r\n utils.each(uiName.split(/\\s+/), function (name) {\r\n UE._customizeUI[name] = {\r\n id : editorId,\r\n execFn:fn,\r\n index:index\r\n };\r\n })\r\n\r\n }\r\n\r\n})();\r\n\r\n// adapter/message.js\r\nUE.registerUI('message', function(editor) {\r\n\r\n var editorui = baidu.editor.ui;\r\n var Message = editorui.Message;\r\n var holder;\r\n var _messageItems = [];\r\n var me = editor;\r\n\r\n me.addListener('ready', function(){\r\n holder = document.getElementById(me.ui.id + '_message_holder');\r\n updateHolderPos();\r\n // HaoChuan9421\r\n // setTimeout(function(){\r\n // updateHolderPos();\r\n // }, 500);\r\n });\r\n\r\n me.addListener('showmessage', function(type, opt){\r\n opt = utils.isString(opt) ? {\r\n 'content': opt\r\n } : opt;\r\n var message = new Message({\r\n 'timeout': opt.timeout,\r\n 'type': opt.type,\r\n 'content': opt.content,\r\n 'keepshow': opt.keepshow,\r\n 'editor': me\r\n }),\r\n mid = opt.id || ('msg_' + (+new Date()).toString(36));\r\n message.render(holder);\r\n _messageItems[mid] = message;\r\n message.reset(opt);\r\n updateHolderPos();\r\n return mid;\r\n });\r\n\r\n me.addListener('updatemessage',function(type, id, opt){\r\n opt = utils.isString(opt) ? {\r\n 'content': opt\r\n } : opt;\r\n var message = _messageItems[id];\r\n message.render(holder);\r\n message && message.reset(opt);\r\n });\r\n\r\n me.addListener('hidemessage',function(type, id){\r\n var message = _messageItems[id];\r\n message && message.hide();\r\n });\r\n\r\n function updateHolderPos(){\r\n var toolbarbox = me.ui.getDom('toolbarbox');\r\n if (toolbarbox) {\r\n holder.style.top = toolbarbox.offsetHeight + 3 + 'px';\r\n }\r\n holder.style.zIndex = Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1;\r\n }\r\n\r\n});\r\n\r\n\r\n// adapter/autosave.js\r\nUE.registerUI('autosave', function(editor) {\r\n var timer = null,uid = null;\r\n editor.on('afterautosave',function(){\r\n clearTimeout(timer);\r\n\r\n timer = setTimeout(function(){\r\n if(uid){\r\n editor.trigger('hidemessage',uid);\r\n }\r\n uid = editor.trigger('showmessage',{\r\n content : editor.getLang('autosave.success'),\r\n timeout : 2000\r\n });\r\n\r\n },2000)\r\n })\r\n\r\n});\r\n\r\n\r\n\r\n})();\r\n","/**\r\n * ueditor完整配置项\r\n * 可以在这里配置整个编辑器的特性\r\n */\r\n/**************************提示********************************\r\n * 所有被注释的配置项均为UEditor默认值。\r\n * 修改默认配置请首先确保已经完全明确该参数的真实用途。\r\n * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。\r\n * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。\r\n **************************提示********************************/\r\n/* eslint-disable */\r\n(function () {\r\n\r\n /**\r\n * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。\r\n * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用\"相对于网站根目录的相对路径\"进行配置。\r\n * \"相对于网站根目录的相对路径\"也就是以斜杠开头的形如\"/myProject/ueditor/\"这样的路径。\r\n * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。\r\n * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。\r\n * window.UEDITOR_HOME_URL = \"/xxxx/xxxx/\";\r\n */\r\n var URL = window.UEDITOR_HOME_URL || getUEBasePath();\r\n\r\n // var RemoteUrl = 'http://api.zsytk2.zhixinhuixue.com/v1/upload/upload-img';\r\n // var RemoteUrl = 'http://zsytk3api.dev.xueping.com/v1/upload/upload-img';\r\n // var RemoteUrl =\"http://zsyas2.testing.xueping.com/online/uploadFile\";\r\n\r\n var RemoteUrl = window.__phpBaseUrl + 'online/uploadFile';\r\n\r\n\r\n /**\r\n * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。\r\n */\r\n window.UEDITOR_CONFIG = {\r\n\r\n //为编辑器实例添加一个路径,这个不能被注释\r\n UEDITOR_HOME_URL: URL\r\n\r\n // 服务器统一请求接口路径\r\n // , serverUrl: URL + \"php/controller.php\"\r\n , serverUrl: RemoteUrl\r\n\r\n //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义\r\n , toolbars: [[\r\n 'fullscreen', 'source', '|', 'undo', 'redo', '|',\r\n 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',\r\n 'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',\r\n 'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',\r\n 'directionalityltr', 'directionalityrtl', 'indent', '|',\r\n 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',\r\n 'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',\r\n 'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',\r\n 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',\r\n 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',\r\n 'print', 'preview', 'searchreplace', 'drafts', 'help'\r\n ]]\r\n //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准\r\n //,labelMap:{\r\n // 'anchor':'', 'undo':''\r\n //}\r\n\r\n //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件:\r\n //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase()\r\n //,lang:\"zh-cn\"\r\n //,langPath:URL +\"lang/\"\r\n\r\n //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件:\r\n //现有如下皮肤:default\r\n //,theme:'default'\r\n //,themePath:URL +\"themes/\"\r\n\r\n //,zIndex : 900 //编辑器层级的基数,默认是900\r\n\r\n //针对getAllHtml方法,会在对应的head标签中增加该编码设置。\r\n //,charset:\"utf-8\"\r\n\r\n //若实例化编辑器的页面手动修改的domain,此处需要设置为true\r\n //,customDomain:false\r\n\r\n //常用配置项目\r\n //,isShow : true //默认显示编辑器\r\n\r\n //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值\r\n\r\n //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子\r\n\r\n //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了\r\n\r\n //,focus:false //初始化时,是否让编辑器获得焦点true或false\r\n\r\n //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感\r\n //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等\r\n\r\n //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件\r\n\r\n //indentValue\r\n //首行缩进距离,默认是2em\r\n //,indentValue:'2em'\r\n\r\n //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000\r\n //,initialFrameHeight:320 //初始化编辑器高度,默认320\r\n\r\n //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false\r\n\r\n //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况)\r\n\r\n //启用自动保存\r\n //,enableAutoSave: true\r\n //自动保存间隔时间, 单位ms\r\n //,saveInterval: 500\r\n\r\n //,fullscreen : false //是否开启初始化时即全屏,默认关闭\r\n\r\n //,imagePopup:true //图片操作的浮层开关,默认打开\r\n\r\n //,autoSyncData:true //自动同步编辑器要提交的数据\r\n //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹\r\n\r\n //粘贴只保留标签,去除标签所有属性\r\n //,retainOnlyLabelPasted: false\r\n\r\n //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴\r\n //纯文本粘贴模式下的过滤规则\r\n //'filterTxtRules' : function(){\r\n // function transP(node){\r\n // node.tagName = 'p';\r\n // node.setStyle();\r\n // }\r\n // return {\r\n // //直接删除及其字节点内容\r\n // '-' : 'script style object iframe embed input select',\r\n // 'p': {$:{}},\r\n // 'br':{$:{}},\r\n // 'div':{'$':{}},\r\n // 'li':{'$':{}},\r\n // 'caption':transP,\r\n // 'th':transP,\r\n // 'tr':transP,\r\n // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,\r\n // 'td':function(node){\r\n // //没有内容的td直接删掉\r\n // var txt = !!node.innerText();\r\n // if(txt){\r\n // node.parentNode.insertAfter(UE.uNode.createText(' '),node);\r\n // }\r\n // node.parentNode.removeChild(node,node.innerText())\r\n // }\r\n // }\r\n //}()\r\n\r\n //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串\r\n\r\n //insertorderedlist\r\n //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准\r\n //,'insertorderedlist':{\r\n // //自定的样式\r\n // 'num':'1,2,3...',\r\n // 'num1':'1),2),3)...',\r\n // 'num2':'(1),(2),(3)...',\r\n // 'cn':'一,二,三....',\r\n // 'cn1':'一),二),三)....',\r\n // 'cn2':'(一),(二),(三)....',\r\n // //系统自带\r\n // 'decimal' : '' , //'1,2,3...'\r\n // 'lower-alpha' : '' , // 'a,b,c...'\r\n // 'lower-roman' : '' , //'i,ii,iii...'\r\n // 'upper-alpha' : '' , lang //'A,B,C'\r\n // 'upper-roman' : '' //'I,II,III...'\r\n //}\r\n\r\n //insertunorderedlist\r\n //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准\r\n //,insertunorderedlist : { //自定的样式\r\n // 'dash' :'— 破折号', //-破折号\r\n // 'dot':' 。 小圆圈', //系统自带\r\n // 'circle' : '', // '○ 小圆圈'\r\n // 'disc' : '', // '● 小圆点'\r\n // 'square' : '' //'■ 小方块'\r\n //}\r\n //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍\r\n //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径\r\n //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制\r\n\r\n //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签\r\n\r\n //fontfamily\r\n //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准\r\n //,'fontfamily':[\r\n // { label:'',name:'songti',val:'宋体,SimSun'},\r\n // { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'},\r\n // { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'},\r\n // { label:'',name:'heiti',val:'黑体, SimHei'},\r\n // { label:'',name:'lishu',val:'隶书, SimLi'},\r\n // { label:'',name:'andaleMono',val:'andale mono'},\r\n // { label:'',name:'arial',val:'arial, helvetica,sans-serif'},\r\n // { label:'',name:'arialBlack',val:'arial black,avant garde'},\r\n // { label:'',name:'comicSansMs',val:'comic sans ms'},\r\n // { label:'',name:'impact',val:'impact,chicago'},\r\n // { label:'',name:'timesNewRoman',val:'times new roman'}\r\n //]\r\n\r\n //fontsize\r\n //字号\r\n //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36]\r\n\r\n //paragraph\r\n //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准\r\n //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}\r\n\r\n //rowspacingtop\r\n //段间距 值和显示的名字相同\r\n //,'rowspacingtop':['5', '10', '15', '20', '25']\r\n\r\n //rowspacingBottom\r\n //段间距 值和显示的名字相同\r\n //,'rowspacingbottom':['5', '10', '15', '20', '25']\r\n\r\n //lineheight\r\n //行内间距 值和显示的名字相同\r\n //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5']\r\n\r\n //customstyle\r\n //自定义样式,不支持国际化,此处配置值即可最后显示值\r\n //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置\r\n //尽量使用一些常用的标签\r\n //参数说明\r\n //tag 使用的标签名字\r\n //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同,\r\n //style 添加的样式\r\n //每一个对象就是一个自定义的样式\r\n //,'customstyle':[\r\n // {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'},\r\n // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'},\r\n // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'},\r\n // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'}\r\n //]\r\n\r\n //打开右键菜单功能\r\n //,enableContextMenu: true\r\n //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准\r\n //,contextMenu:[\r\n // {\r\n // label:'', //显示的名称\r\n // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时\r\n // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName\r\n // exec:function () {\r\n // //this是当前编辑器的实例\r\n // //this.ui._dialogs['inserttableDialog'].open();\r\n // }\r\n // }\r\n //]\r\n\r\n //快捷菜单\r\n //,shortcutMenu:[\"fontfamily\", \"fontsize\", \"bold\", \"italic\", \"underline\", \"forecolor\", \"backcolor\", \"insertorderedlist\", \"insertunorderedlist\"]\r\n\r\n //elementPathEnabled\r\n //是否启用元素路径,默认是显示\r\n , elementPathEnabled: false\r\n\r\n //wordCount\r\n , wordCount: false //是否开启字数统计\r\n //,maximumWords:10000 //允许的最大字符数\r\n //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示\r\n //,wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符\r\n //超出字数限制提示 留空支持多语言自动切换,否则按此配置显示\r\n //,wordOverFlowMsg:'' //<span style=\"color:red;\">你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!</span>\r\n\r\n //tab\r\n //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位\r\n //,tabSize:4\r\n //,tabNode:' '\r\n\r\n //removeFormat\r\n //清除格式时可以删除的标签和属性\r\n //removeForamtTags标签\r\n //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'\r\n //removeFormatAttributes属性\r\n //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'\r\n\r\n //undo\r\n //可以最多回退的次数,默认20\r\n //,maxUndoCount:20\r\n //当输入的字符数超过该值时,保存一次现场\r\n //,maxInputCount:1\r\n\r\n //autoHeightEnabled\r\n // 是否自动长高,默认true\r\n //,autoHeightEnabled:true\r\n\r\n //scaleEnabled\r\n //是否可以拉伸长高,默认true(当开启时,自动长高失效)\r\n //,scaleEnabled:false\r\n //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800\r\n //,minFrameHeight:220 //编辑器拖动时最小高度,默认220\r\n\r\n //autoFloatEnabled\r\n //是否保持toolbar的位置不动,默认true\r\n ,autoFloatEnabled:false\r\n //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面\r\n //,topOffset:30\r\n //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)\r\n //,toolbarTopOffset:400\r\n\r\n //设置远程图片是否抓取到本地保存\r\n ,catchRemoteImageEnable: false //设置是否抓取远程图片\r\n\r\n //pageBreakTag\r\n //分页标识符,默认是_ueditor_page_break_tag_\r\n //,pageBreakTag:'_ueditor_page_break_tag_'\r\n\r\n //autotypeset\r\n //自动排版参数\r\n //,autotypeset: {\r\n // mergeEmptyline: true, //合并空行\r\n // removeClass: true, //去掉冗余的class\r\n // removeEmptyline: false, //去掉空行\r\n // textAlign:\"left\", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版\r\n // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版\r\n // pasteFilter: false, //根据规则过滤没事粘贴进来的内容\r\n // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号\r\n // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体\r\n // removeEmptyNode: false, // 去掉空节点\r\n // //可以去掉的标签\r\n // removeTagNames: {标签名字:1},\r\n // indent: false, // 行首缩进\r\n // indentValue : '2em', //行首缩进的大小\r\n // bdc2sb: false,\r\n // tobdc: false\r\n //}\r\n\r\n //tableDragable\r\n //表格是否可以拖拽\r\n //,tableDragable: true\r\n\r\n\r\n //sourceEditor\r\n //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror\r\n //注意默认codemirror只能在ie8+和非ie中使用\r\n //,sourceEditor:\"codemirror\"\r\n //如果sourceEditor是codemirror,还用配置一下两个参数\r\n //codeMirrorJsUrl js加载的路径,默认是 URL + \"third-party/codemirror/codemirror.js\"\r\n //,codeMirrorJsUrl:URL + \"third-party/codemirror/codemirror.js\"\r\n //codeMirrorCssUrl css加载的路径,默认是 URL + \"third-party/codemirror/codemirror.css\"\r\n //,codeMirrorCssUrl:URL + \"third-party/codemirror/codemirror.css\"\r\n //编辑器初始化完成后是否进入源码模式,默认为否。\r\n //,sourceEditorFirst:false\r\n\r\n //iframeUrlMap\r\n //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径\r\n //,iframeUrlMap:{\r\n // 'anchor':'~/dialogs/anchor/anchor.html',\r\n //}\r\n\r\n //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http\r\n //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:']\r\n\r\n //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html\r\n //, webAppKey: \"\"\r\n\r\n //默认过滤规则相关配置项目\r\n //,disabledTableInTable:true //禁止表格嵌套\r\n //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签\r\n //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式\r\n\r\n // xss 过滤是否开启,inserthtml等操作\r\n , xssFilterRules: true\r\n //input xss过滤\r\n , inputXssFilter: true\r\n //output xss过滤\r\n , outputXssFilter: true\r\n // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js\r\n , whiteList: {\r\n a: ['target', 'href', 'title', 'class', 'style'],\r\n abbr: ['title', 'class', 'style'],\r\n address: ['class', 'style'],\r\n area: ['shape', 'coords', 'href', 'alt'],\r\n article: [],\r\n aside: [],\r\n audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],\r\n b: ['class', 'style'],\r\n bdi: ['dir'],\r\n bdo: ['dir'],\r\n big: [],\r\n blockquote: ['cite', 'class', 'style'],\r\n br: [],\r\n caption: ['class', 'style'],\r\n center: [],\r\n cite: [],\r\n code: ['class', 'style'],\r\n col: ['align', 'valign', 'span', 'width', 'class', 'style'],\r\n colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],\r\n dd: ['class', 'style'],\r\n del: ['datetime'],\r\n details: ['open'],\r\n div: ['class', 'style'],\r\n dl: ['class', 'style'],\r\n dt: ['class', 'style'],\r\n em: ['class', 'style'],\r\n font: ['color', 'size', 'face'],\r\n footer: [],\r\n h1: ['class', 'style'],\r\n h2: ['class', 'style'],\r\n h3: ['class', 'style'],\r\n h4: ['class', 'style'],\r\n h5: ['class', 'style'],\r\n h6: ['class', 'style'],\r\n header: [],\r\n hr: [],\r\n i: ['class', 'style'],\r\n img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'],\r\n ins: ['datetime'],\r\n li: ['class', 'style'],\r\n mark: [],\r\n nav: [],\r\n ol: ['class', 'style'],\r\n p: ['class', 'style'],\r\n pre: ['class', 'style'],\r\n s: [],\r\n section: [],\r\n small: [],\r\n span: ['class', 'style'],\r\n sub: ['class', 'style'],\r\n sup: ['class', 'style'],\r\n strong: ['class', 'style'],\r\n table: ['width', 'border', 'align', 'valign', 'class', 'style'],\r\n tbody: ['align', 'valign', 'class', 'style'],\r\n td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\r\n tfoot: ['align', 'valign', 'class', 'style'],\r\n th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\r\n thead: ['align', 'valign', 'class', 'style'],\r\n tr: ['rowspan', 'align', 'valign', 'class', 'style'],\r\n tt: [],\r\n u: [],\r\n ul: ['class', 'style'],\r\n video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']\r\n }\r\n };\r\n\r\n function getUEBasePath(docUrl, confUrl) {\r\n\r\n return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());\r\n\r\n }\r\n\r\n function getConfigFilePath() {\r\n\r\n var configPath = document.getElementsByTagName('script');\r\n\r\n return configPath[configPath.length - 1].src;\r\n\r\n }\r\n\r\n function getBasePath(docUrl, confUrl) {\r\n\r\n var basePath = confUrl;\r\n\r\n\r\n if (/^(\\/|\\\\\\\\)/.test(confUrl)) {\r\n\r\n basePath = /^.+?\\w(\\/|\\\\\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\\/|\\\\\\\\)/, '');\r\n\r\n } else if (!/^[a-z]+:/i.test(confUrl)) {\r\n\r\n docUrl = docUrl.split(\"#\")[0].split(\"?\")[0].replace(/[^\\\\\\/]+$/, '');\r\n\r\n basePath = docUrl + \"\" + confUrl;\r\n\r\n }\r\n\r\n return optimizationPath(basePath);\r\n\r\n }\r\n\r\n function optimizationPath(path) {\r\n\r\n var protocol = /^[a-z]+:\\/\\//.exec(path)[0],\r\n tmp = null,\r\n res = [];\r\n\r\n path = path.replace(protocol, \"\").split(\"?\")[0].split(\"#\")[0];\r\n\r\n path = path.replace(/\\\\/g, '/').split(/\\//);\r\n\r\n path[path.length - 1] = \"\";\r\n\r\n while (path.length) {\r\n\r\n if ((tmp = path.shift()) === \"..\") {\r\n res.pop();\r\n } else if (tmp !== \".\") {\r\n res.push(tmp);\r\n }\r\n\r\n }\r\n\r\n return protocol + res.join(\"/\");\r\n\r\n }\r\n\r\n window.UE = {\r\n getUEBasePath: getUEBasePath\r\n };\r\n\r\n})();\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAYAAACEYr13AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjhCMzVFRDY3MTVGMTFFNDlGQkNENTdFRDZGRDREMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjhCMzVFRDc3MTVGMTFFNDlGQkNENTdFRDZGRDREMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2OEIzNUVENDcxNUYxMUU0OUZCQ0Q1N0VENkZENEQzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2OEIzNUVENTcxNUYxMUU0OUZCQ0Q1N0VENkZENEQzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjfkuQIAAADkSURBVHjaYpw5cyYDHuANpbfiUsCCRzMHCwvLHBDjz58/ikDqBzZFTLh0MzMzVwI1SoAwiI1LHS4DFP///18F40DZikQbwMbGNvPfv39w74HYQLEZRBuQkJDwLS0tDc4HsUFi2NQyEoiF/zB1pIYB0YAFyRZiXEJ9FzACowin6bNmzYIHIk4DBjwQaWbARrSQB7E3EG1ASEgIFzADIWcssBjRBggJCaUZGBj8gfFBbKBYOtEGAKPvvq6ubjsvLy8DCIPYIDGSChRg7muzsLBIg7FJjgWgjT8UFRWTQRjExqUOIMAALUlNWEZIWRwAAAAASUVORK5CYII=\"","import { render, staticRenderFns } from \"./UeCard.vue?vue&type=template&id=b4ab203c&\"\nimport script from \"./UeCard.vue?vue&type=script&lang=js&\"\nexport * from \"./UeCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UeCard.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\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b4ab203c')) {\n api.createRecord('b4ab203c', component.options)\n } else {\n api.reload('b4ab203c', component.options)\n }\n module.hot.accept(\"./UeCard.vue?vue&type=template&id=b4ab203c&\", function () {\n api.rerender('b4ab203c', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/editor/UeCard.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../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!./UeCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../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!./UeCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.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!./UeCard.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.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!./UeCard.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UeCard.vue?vue&type=template&id=b4ab203c&\"","\r\nexport function getPointPos(obj){\r\n // obj相对纸张pageindex-0的距离\r\n let x=0,y=0;\r\n while(obj.offsetParent && !hasClass(obj,'pageindex-')){\r\n x += obj.offsetLeft;\r\n y += obj.offsetTop;\r\n obj = obj.offsetParent;\r\n }\r\n return { x,y }\r\n}\r\n\r\nfunction hasClass(obj,className){\r\n return obj.className.includes(className)\r\n}\r\n\r\nexport function getPos(point,element){\r\n //element相对point的坐标位置\r\n let pointPos = JSON.parse(JSON.stringify(getPointPos(point)));\r\n let elementPos = JSON.parse(JSON.stringify(getPointPos(element)));\r\n return {\r\n x:elementPos.x - pointPos.x,\r\n y:elementPos.y - pointPos.y + (element.className.includes('iconnum_')?0:2),//位置计算整体靠上+2,填涂考号不需要+2\r\n width:element.offsetWidth,\r\n height:element.offsetHeight\r\n }\r\n}\r\n","import {mapGetters, mapMutations} from 'vuex'\r\nimport {SET_CHANGE_UE_READY_HEIGHT_ARR, SET_PAGETOPIC_ARR} from \"@/store/constant\";\r\nimport resetPage from \"@/lib/resetPage\";\r\nexport default{\r\n computed: {\r\n ...mapGetters('answerSheet',['bigTopicPageArr','answerCardType','initPageFlag','squareSize','paperListData','chageSomePageIndex','changeUeReadyHeightArr']),\r\n },\r\n watch:{\r\n initPageFlag(){\r\n // this.setBigTopicPageArr([JSON.parse(JSON.stringify(resetPage(this.bigTopicPageArr)))])\r\n this.$nextTick(()=>{\r\n this.loading = this.$loading.service({\r\n lock: true,\r\n text: '正在排版中,请勿操作页面!',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n });\r\n this.scrollPageIndex = null;\r\n this.baseRect.w = document.querySelectorAll('.paper-item-js')[0].offsetWidth - 60;\r\n this.baseRect.h = document.querySelectorAll('.paper-item-js')[0].offsetHeight - 100;\r\n this.paperInfoH = document.querySelector('.paper-info-index').offsetHeight;\r\n this.initPage(0);\r\n })\r\n },\r\n chageSomePageIndex:{\r\n deep:true,\r\n handler(val){\r\n if(val.flag !== null){\r\n this.loading = this.$loading.service({\r\n lock: true,\r\n text: '正在排版中,请勿操作页面!',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n });\r\n if(val.isToCurPage){\r\n // 加载完毕后是否去指定位置\r\n this.scrollPageIndex = val.index;\r\n }\r\n\r\n this.baseRect.w = document.querySelectorAll('.paper-item-js')[0].offsetWidth - 60;\r\n this.baseRect.h = document.querySelectorAll('.paper-item-js')[0].offsetHeight - 100;\r\n this.paperInfoH = document.querySelector('.paper-info-index').offsetHeight;\r\n this.initPage(val.index);\r\n }\r\n }\r\n },\r\n changeUeReadyHeightArr(){\r\n if(this.setChangeUeReadyHeight.length>0){\r\n this.UeReadyHeightChangeReloadPage()\r\n }\r\n\r\n }\r\n\r\n },\r\n data(){\r\n return{\r\n baseRect:{\r\n w:0,\r\n h:0\r\n },\r\n paperInfoH:0,\r\n arrH:[],\r\n loading:null,\r\n scrollPageIndex:null,\r\n isRunInitPage:false,\r\n isRunSetInterval:false,\r\n }\r\n },\r\n methods:{\r\n ...mapMutations('answerSheet', {setBigTopicPageArr:SET_PAGETOPIC_ARR,setChangeUeReadyHeight:SET_CHANGE_UE_READY_HEIGHT_ARR}),\r\n initPage(pageIndex){\r\n\r\n if(this.bigTopicPageArr.length>9){\r\n this.loading.close();\r\n return false\r\n }\r\n\r\n let page;\r\n let conts = [];\r\n let imgs = [];\r\n this.isRunInitPage = true;\r\n\r\n // 不加定时器,获取不到页面渲染的数据\r\n setTimeout(()=>{\r\n page = document.querySelector(`.pageindex-${pageIndex}`)\r\n // console.log(pageIndex)\r\n conts = Array.from(page.querySelectorAll('.paper-topic-content'))\r\n imgs = Array.from(page.querySelectorAll('img'))\r\n this.changePage(page,conts,imgs,pageIndex);\r\n this.isRunInitPage = false;\r\n },900)\r\n\r\n // this.changePage(page,conts,imgs,pageIndex);\r\n // if(imgs.length == 0){\r\n // this.changePage(page,conts,imgs,pageIndex);\r\n // return\r\n // }\r\n //\r\n // let imgLoadCount = 0;\r\n // for(let i=0;i<imgs.length;i++){\r\n // imgs[i].onload = ()=>{\r\n // imgLoadCount++;\r\n //\r\n // // 页面图片全部加载完毕\r\n // if(imgLoadCount == imgs.length){\r\n // this.changePage(page,conts,imgs,pageIndex)\r\n // }\r\n // }\r\n // }\r\n },\r\n changePage(page,conts,imgs,pageIndex){\r\n // this.arrH = []\r\n this.arrH = conts.map(v=>v.offsetHeight)\r\n //第一页数据需要加paperInfo高度\r\n let tempCount = pageIndex == 0 ? this.paperInfoH : 0;\r\n\r\n for(let i=0;i<this.arrH.length;i++){\r\n tempCount += this.arrH[i];\r\n if(tempCount>this.baseRect.h){\r\n let allTags = Array.from(conts[i].children);//超出内容当前的位置\r\n let nodeH = 0;//超出内容内计算内容总高\r\n\r\n let topicConfig = JSON.parse(JSON.stringify(this.bigTopicPageArr[pageIndex][i]));\r\n\r\n if([1,2,11].includes(topicConfig.questionTypeId) && !topicConfig.isQuestionText){\r\n // 题卡分离:选择题,不定项选择题\r\n this.sortChoice(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else if([1,2,11].includes(topicConfig.questionTypeId) && topicConfig.isQuestionText){\r\n // 题卡合一:选择题,不定项选择题\r\n this.sortTopicContent(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else if([5].includes(topicConfig.questionTypeId) && !topicConfig.isQuestionText){\r\n // 填空题\r\n this.sortFill(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else if([5].includes(topicConfig.questionTypeId) && topicConfig.isQuestionText){\r\n // 填空题,题卡合一题文\r\n this.sortTopicFill(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else if([7,17,27].includes(topicConfig.questionTypeId)){\r\n // 解答题、选做题\r\n if(topicConfig.questionTypeId===17&&topicConfig.QuestionTextList){\r\n this.sortTopicChoose(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else {\r\n this.sortExplain(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }\r\n\r\n }else if([77].includes(topicConfig.questionTypeId) && topicConfig.topicConfigureData.subject == 8){\r\n this.sortExplain(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n }else if([77].includes(topicConfig.questionTypeId) && topicConfig.topicConfigureData.subject == 9){\r\n // this.sortArticle(topicConfig,allTags,nodeH,tempCount,i,pageIndex)\r\n this.sortArticleCn(topicConfig,allTags,nodeH,tempCount,i,pageIndex)\r\n\r\n }else{\r\n this.bigTopicPageArr.push(JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i))\r\n this.bigTopicPageArr[pageIndex] = [];\r\n\r\n }\r\n break;\r\n }\r\n }\r\n if(pageIndex == this.bigTopicPageArr.length -1){\r\n this.loading.close();\r\n\r\n if(this.scrollPageIndex !== null){\r\n // 部分重组数据,渲染完成后到滚动条到当前页顶部\r\n document.querySelector('.card_edit-wrap').scrollTop = this.getDisTop( document.querySelector(`.pageindex-${this.scrollPageIndex}`))\r\n this.scrollPageIndex = null;\r\n }\r\n }\r\n },\r\n getDisTop(element) { //获取元素距离页面顶部的距离\r\n var realTop = element.offsetTop;\r\n var parent = element.offsetParent;\r\n while (parent !== null) {\r\n realTop += parent.offsetTop;\r\n parent = parent.offsetParent;\r\n }\r\n return realTop;\r\n },\r\n sortChoice(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n /*\r\n allChoiceUl:选择题ul标签,\r\n allChoiceLiLength:一组ul中li个数,\r\n choiceUlRow:一组数据中ul总行数,\r\n choiceUlCol:一排ul中可放ul列数,\r\n overArr:超出页面数据,\r\n curArr:当前页面数据,\r\n */\r\n let allChoiceUl,allChoiceLiLength,choiceUlRow,choiceUlCol,overArr,curArr,isTitleOver;\r\n // isLast 是否是上一页截断数据\r\n if(topicConfig.isLast){\r\n //当前页试题,没有h3标题\r\n allChoiceUl = Array.from(allTags[0].querySelectorAll('ul'));\r\n\r\n allChoiceLiLength = topicConfig.topicConfigureData.direction == 0 ? parseInt((allChoiceUl[0].offsetHeight-20)/allChoiceUl[0].children[0].offsetHeight) : parseInt((allChoiceUl[0].offsetWidth-20)/allChoiceUl[0].children[0].offsetWidth)\r\n\r\n choiceUlRow = (allTags[0].offsetHeight-4)/allChoiceUl[0].offsetHeight;//总行数\r\n choiceUlCol = Math.ceil(allChoiceUl.length/choiceUlRow); //总列数\r\n }else{\r\n //当前页试题,获取h3标题高度\r\n nodeH += allTags[0].offsetHeight;\r\n\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n }else{\r\n allChoiceUl = Array.from(allTags[1].querySelectorAll('ul'));\r\n\r\n //ul padding值 -20\r\n // allChoiceLiLength 每组ul中li个数,横排计算高度,竖排计算宽度\r\n allChoiceLiLength = !topicConfig.topicConfigureData.direction ? parseInt((allChoiceUl[0].offsetHeight-20)/allChoiceUl[0].children[0].offsetHeight) : parseInt((allChoiceUl[0].offsetWidth-20)/allChoiceUl[0].children[0].offsetWidth)\r\n\r\n choiceUlRow = (allTags[1].offsetHeight-4)/allChoiceUl[0].offsetHeight;//总行数\r\n choiceUlCol = Math.ceil(allChoiceUl.length/choiceUlRow); //总列数\r\n }\r\n }\r\n\r\n if(!isTitleOver){\r\n for(let j = 0;j<choiceUlRow;j++){\r\n nodeH += allChoiceUl[0].offsetHeight;\r\n // +4边框4px\r\n if(tempCount-this.arrH[i]+nodeH+4>this.baseRect.h){\r\n if(j == 0){\r\n overArr = topicConfig.questions;\r\n curArr = []\r\n }else{\r\n overArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice((j)*choiceUlCol*allChoiceLiLength)\r\n curArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice(0,(j)*choiceUlCol*allChoiceLiLength)\r\n }\r\n tempCount = 0\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n },\r\n sortTopicContent(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n // 题卡合一,选择题、填空题等试题高度计算\r\n let topicContent,overArr,curArr,isTitleOver,isSubTitleOver,smallTopicIndex,optionIndex;\r\n // isLast 是否是上一页截断数据\r\n if(topicConfig.isLast){\r\n //当前页试题,没有h3标题\r\n topicContent = allTags;\r\n\r\n }else{\r\n //当前页试题,获取h3标题高度\r\n nodeH += allTags[0].offsetHeight;\r\n\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n }else{\r\n topicContent = Array.from(allTags[1].parentNode.querySelectorAll('.topic-box-border'));\r\n }\r\n\r\n }\r\n if(!isTitleOver){\r\n // let tempNodeH = nodeH;\r\n // 循环所有小题,定位超出高度题号所在位置\r\n for(let j = 0;j<topicContent.length;j++){\r\n\r\n nodeH += topicContent[j].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n smallTopicIndex = j;\r\n let titleH = topicContent[j].querySelector('.title')&&topicContent[j].querySelector('.title').offsetHeight || 0;\r\n let tempNodeH = nodeH - topicContent[j].offsetHeight;\r\n tempNodeH += titleH;\r\n if(tempCount-this.arrH[i]+tempNodeH>this.baseRect.h){\r\n isSubTitleOver = true;\r\n break;\r\n }else{\r\n // 循环所有选项,判断超出高度选项所在位置\r\n isSubTitleOver = false;\r\n let options = Array.from(topicContent[j].querySelectorAll('li'));\r\n // listType 0一行一个 1一行四个 2一行两个\r\n if(topicConfig.questions[j].listType == 0){\r\n for(let k = 0;k<options.length;k++){\r\n tempNodeH += options[k].offsetHeight;\r\n if(tempCount-this.arrH[i]+tempNodeH>this.baseRect.h){\r\n optionIndex = k;\r\n break;\r\n }\r\n }\r\n break;\r\n }else if(topicConfig.questions[j].listType == 1){\r\n optionIndex = 0;\r\n break;\r\n }else{\r\n for(let k = 0;k<options.length;k++){\r\n if(k&2 == 0){\r\n tempNodeH += options[k].offsetHeight;\r\n if(tempCount-this.arrH[i]+tempNodeH>this.baseRect.h){\r\n optionIndex = k\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver,isSubTitleOver,smallTopicIndex,optionIndex);\r\n },\r\n sortFill(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n /*\r\n fillItemAll:所有填空标签,\r\n fillRows:总行数\r\n overArr:超出页面数据,\r\n curArr:当前页面数据,\r\n isTitleOver:标题超出高度\r\n */\r\n let fillItemAll,fillRows,overArr,curArr,isTitleOver;\r\n\r\n if(topicConfig.isLast){\r\n //当前页试题,没有h3标题\r\n fillItemAll = Array.from(allTags[0].querySelectorAll('.fill-item'));\r\n }else{\r\n //当前页试题,获取h3标题高度\r\n nodeH += allTags[0].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n }else{\r\n fillItemAll = Array.from(allTags[1].querySelectorAll('.fill-item'));\r\n }\r\n }\r\n\r\n if(!isTitleOver){\r\n\r\n topicConfig.topicConfigureData.columns = topicConfig.topicConfigureData.columns||1\r\n topicConfig.topicConfigureData.rowLineHeight = topicConfig.topicConfigureData.rowLineHeight||40\r\n\r\n fillRows = Math.ceil(fillItemAll.length/topicConfig.topicConfigureData.columns)\r\n\r\n for(let j = 0;j<fillRows;j++){\r\n nodeH += (topicConfig.topicConfigureData.rowLineHeight);\r\n //+20 div padding值 +4边框4px\r\n if(tempCount-this.arrH[i]+nodeH+20+4>this.baseRect.h){\r\n // topicConfig.topicConfigureData.columns 一行列数\r\n // topicConfig.topicConfigureData.rowLineHeight 一行高度\r\n if(j == 0){\r\n overArr = topicConfig.questions;\r\n curArr = []\r\n }else{\r\n overArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice((j)*topicConfig.topicConfigureData.columns)\r\n curArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice(0,(j)*topicConfig.topicConfigureData.columns)\r\n }\r\n tempCount = 0\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n sortTopicFill(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n // 题卡合一,选择题、填空题等试题高度计算\r\n let topicContent,overArr,curArr,isTitleOver;\r\n // isLast 是否是上一页截断数据\r\n if(topicConfig.isLast){\r\n //当前页试题,没有h3标题\r\n topicContent = allTags;\r\n // choiceUlRow = allTags[0].offsetHeight/allChoiceUl[0].offsetHeight;//总行数\r\n // choiceUlCol = allChoiceUl/choiceUlRow; //总列数\r\n }else{\r\n //当前页试题,获取h3标题高度\r\n nodeH += allTags[0].offsetHeight;\r\n\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n }else{\r\n topicContent = Array.from(allTags[1].parentNode.querySelectorAll('.topic-box-border'));\r\n }\r\n\r\n }\r\n if(!isTitleOver){\r\n // let tempNodeH = nodeH;\r\n // 循环所有小题,定位超出高度题号所在位置\r\n for(let j = 0;j<topicContent.length;j++){\r\n nodeH += topicContent[j].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n overArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice(j);\r\n curArr = JSON.parse(JSON.stringify(topicConfig.questions)).splice(0,j);\r\n break;\r\n }\r\n }\r\n }\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n },\r\n setNextPage(pageIndex,i,overArr,curArr,isTitleOver,isSubTitleOver,smallTopicIndex,optionIndex){\r\n /*\r\n pageIndex:当前page页数\r\n i:大题index\r\n overArr:超出内容-需要放到当前页\r\n curArr:超出内容-需要放到下一页\r\n isTitleOver:是否大题标题超出\r\n isSubTitleOver:是否小题标题超出\r\n smallTopicIndex:题卡合一,试题超出,当前小题index\r\n optionIndex:题卡合一,试题超出,当前小题选项Index\r\n */\r\n if(![7,17].includes(this.bigTopicPageArr[pageIndex][i].questionTypeId) && !isTitleOver){\r\n\r\n // 题卡合一\r\n let nextArrTopic,curArrTopic;\r\n // 不是大题题目超出\r\n if(isSubTitleOver){\r\n // 小题题目超出\r\n\r\n nextArrTopic = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(i);\r\n // curArrTopic = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(0,i+1);\r\n // curArrTopic[i].questions = curArrTopic[i].questions.splice(0,smallTopicIndex)\r\n nextArrTopic[0].questions = nextArrTopic[0].questions.splice(smallTopicIndex)\r\n curArrTopic = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(0,i+1)]\r\n\r\n if(smallTopicIndex == 0){\r\n curArrTopic[i].questions = []\r\n }else{\r\n curArrTopic[i].questions = curArrTopic[i].questions.splice(0,smallTopicIndex)\r\n }\r\n this.$set(this.bigTopicPageArr,pageIndex,curArrTopic)\r\n this.bigTopicPageArr.push(nextArrTopic)\r\n\r\n this.bigTopicPageArr[pageIndex+1][0].isLast = true;\r\n }else if(!this.bigTopicPageArr[pageIndex][i].isQuestionText){\r\n // 选择题、填空题,选项部分\r\n this.bigTopicPageArr.push(JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(i))\r\n // isLast用来区分是否显示大题标题\r\n // this.bigTopicPageArr[pageIndex+1][0].isLast = curArr.length === 0?false:true;\r\n this.bigTopicPageArr[pageIndex+1][0].isLast = true;\r\n this.bigTopicPageArr[pageIndex+1][0].questions = JSON.parse(JSON.stringify(overArr));\r\n\r\n // 当前页数据 curArr长度为0,整个大题放到下一页\r\n if(curArr.length===0){\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(0,i+1)]\r\n this.bigTopicPageArr[pageIndex][i].questions = [];\r\n } else {\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(0,i+1)]\r\n this.bigTopicPageArr[pageIndex][i].questions = JSON.parse(JSON.stringify(curArr));\r\n }\r\n }else{\r\n // 选择题、填空题,试题部分\r\n nextArrTopic = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(i);\r\n curArrTopic = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].splice(0,i+1)];\r\n\r\n if(nextArrTopic[0].questionTypeId===5){\r\n //填空题\r\n curArrTopic[i].questions = JSON.parse(JSON.stringify(curArr));\r\n\r\n nextArrTopic[0].questions = JSON.parse(JSON.stringify(overArr))\r\n }else {\r\n // 选择题\r\n curArrTopic[i].questions = JSON.parse(JSON.stringify(curArrTopic[i].questions.splice(0,smallTopicIndex+1)))\r\n\r\n\r\n curArrTopic[i].questions[smallTopicIndex].queOptions = optionIndex == 0 ? [] : curArrTopic[i].questions[smallTopicIndex].queOptions.splice(0,optionIndex)\r\n\r\n\r\n nextArrTopic[0].questions = JSON.parse(JSON.stringify(nextArrTopic[0].questions.splice(smallTopicIndex)))\r\n nextArrTopic[0].questions[0].queOptions = nextArrTopic[0].questions[0].queOptions.splice(optionIndex)\r\n nextArrTopic[0].questions[0].isOnlyShowOption = true;\r\n }\r\n\r\n nextArrTopic[0].isLast = true;\r\n this.$set(this.bigTopicPageArr,pageIndex,curArrTopic)\r\n this.bigTopicPageArr.push(nextArrTopic)\r\n }\r\n\r\n }\r\n\r\n if(isTitleOver){\r\n // 大题题目超出\r\n let nextArr = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i);\r\n let curArr = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i)]\r\n this.$set(this.bigTopicPageArr,pageIndex,curArr)\r\n this.bigTopicPageArr.push(nextArr)\r\n }\r\n\r\n\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(this.bigTopicPageArr)))\r\n //如果还有超出内容,新增一页翻页\r\n if(this.bigTopicPageArr.length>pageIndex+1){\r\n this.$nextTick(()=>{\r\n this.initPage(pageIndex+1)\r\n })\r\n }\r\n },\r\n sortTopicChoose(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n let surplusH = this.baseRect.h - (tempCount-this.arrH[i]);//除开当前大题当前页剩余高度\r\n // 题卡合一,选择题、填空题等试题高度计算\r\n let topicContent,overArr,curArr,isTitleOver,isQuestionText;\r\n let domH = 0;\r\n for(let j = 0;j<allTags.length;j++){\r\n let dom = allTags[j];\r\n domH+= dom.offsetHeight;\r\n if(domH>surplusH){\r\n // isLast 是否是上一页截断数据\r\n if(topicConfig.isLast){\r\n //当前页试题,没有h3标题\r\n topicContent = allTags;\r\n // choiceUlRow = allTags[0].offsetHeight/allChoiceUl[0].offsetHeight;//总行数\r\n // choiceUlCol = allChoiceUl/choiceUlRow; //总列数\r\n }else{\r\n //当前页试题,获取h3标题高度\r\n if(j===0){\r\n isTitleOver = true;\r\n } else if(j===1){\r\n //题文跨页\r\n isQuestionText = true\r\n topicContent = Array.from(allTags[1].parentNode.querySelectorAll('.title'));\r\n for(let l = 0;l<topicContent.length;l++){\r\n nodeH += topicContent[l].offsetHeight;\r\n if(tempCount-this.arrH[i]+allTags[0].offsetHeight+nodeH>this.baseRect.h){\r\n overArr = JSON.parse(JSON.stringify(topicConfig.QuestionTextList)).splice(l);\r\n curArr = JSON.parse(JSON.stringify(topicConfig.QuestionTextList)).splice(0,(l));\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n }else {\r\n //答题卡跨页\r\n isQuestionText = false\r\n let nextSurplusH = domH - surplusH;//当前试题超出当前页的高度\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n let isNoRead = topicContentDom.innerHTML.indexOf('<script')>-1?true:false;\r\n\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j-2]));\r\n if(topicContentDom.innerHTML==''){\r\n if(overTopic.contentHtml!=''){\r\n isNoRead = true\r\n }\r\n }\r\n overArr = topicConfig.questions.splice((j-1))\r\n curArr = topicConfig.questions.splice(0,(j-1))\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45:dom.offsetHeight-nextSurplusH;\r\n\r\n //当前页最后一小题答题区域小于30,小题放到下一页\r\n let topicContent = {curHtml:'',overHtml:''}\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n if(isNoRead){\r\n topicContent.curHtml = overTopic.contentHtml;\r\n }else {\r\n topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n }\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = nextSurplusH;\r\n overArr.unshift(overTopic);\r\n }\r\n break;\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n this.setTopicChoosePaging(pageIndex,i,overArr,curArr,isTitleOver,isQuestionText);\r\n },\r\n sortExplain(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n // let _this = this;\r\n let curArr = [];\r\n let overArr = [];\r\n let surplusH = this.baseRect.h - (tempCount-this.arrH[i]);//除开当前大题当前页剩余高度\r\n\r\n\r\n //当前页剩余高度小于\r\n if(surplusH<100){\r\n this.setExplainPaging(pageIndex,i,topicConfig.questions,curArr);\r\n return false\r\n }\r\n for(let j = 0;j<allTags.length;j++){\r\n let dom = allTags[j];\r\n nodeH += dom.offsetHeight;\r\n if(nodeH>surplusH){\r\n if(topicConfig.isLast){\r\n let nextSurplusH = nodeH - surplusH;//当前试题超出当前页的高度\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n let isNoRead = topicContentDom.innerHTML.indexOf('<script')>-1?true:false;\r\n // if(topicContentDom.innerHTML.indexOf('<script')>-1) return\r\n\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j]));\r\n\r\n if(topicContentDom.innerHTML==''){\r\n if(overTopic.contentHtml!=''){\r\n isNoRead = true\r\n }\r\n }\r\n overArr = topicConfig.questions.splice((j+1))\r\n curArr = topicConfig.questions.splice(0,(j+1))\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45:dom.offsetHeight-nextSurplusH;\r\n //当前页最后一小题答题区域小于30,小题放到下一页\r\n let topicContent = {curHtml:'',overHtml:''}\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n if(isNoRead){\r\n topicContent.curHtml = overTopic.contentHtml;\r\n }else {\r\n topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n }\r\n\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = nextSurplusH;\r\n overArr.unshift(overTopic);\r\n }\r\n\r\n }else {\r\n if(j===0){\r\n curArr = [];\r\n overArr = topicConfig.questions;\r\n break;\r\n }else {\r\n // curTopicAreaHeight-10,nextSurplusH+10 解答题底部与定位点保留10px间隔,防止定位点压试题(解决首页有解答题时分页时,边框紧贴定位点)\r\n\r\n\r\n let nextSurplusH = nodeH - surplusH+10+16;//当前试题超出当前页的高度\r\n // let nextSurplusH = nodeH - surplusH+100;//当前试题超出当前页的高度\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n // if(topicContentDom.innerHTML.indexOf('<script')>-1) return\r\n let isNoRead = topicContentDom.innerHTML.indexOf('<script')>-1?true:false;\r\n\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j-1]))\r\n\r\n if(topicContentDom.innerHTML==''){\r\n if(overTopic.contentHtml!=''){\r\n isNoRead = true\r\n }\r\n }\r\n\r\n overArr = topicConfig.questions.splice((j))\r\n curArr = topicConfig.questions.splice(0,(j))\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45-10:dom.offsetHeight-nextSurplusH-10;\r\n\r\n //当前页最后一小题答题区域小于30,小题放到下一页\r\n let topicContent = {curHtml:'',overHtml:''}\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n if(isNoRead){\r\n topicContent.curHtml = overTopic.contentHtml;\r\n }else {\r\n topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n }\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = nextSurplusH;\r\n overArr.unshift(overTopic);\r\n }\r\n }\r\n }\r\n\r\n\r\n break;\r\n }\r\n }\r\n\r\n this.setExplainPaging(pageIndex,i,overArr,curArr);\r\n },\r\n explainQuestionsCut(dom,nodeH,surplusH,topicConfig,j){\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n\r\n let nextSurplusH = nodeH - surplusH;//当前试题超出当前页的高度\r\n\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j-1]))\r\n let overArr = topicConfig.questions.splice((j))\r\n let curArr = topicConfig.questions.splice(0,(j))\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45:dom.offsetHeight-nextSurplusH;\r\n\r\n let topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = nextSurplusH;\r\n overArr.unshift(overTopic);\r\n return {overArr:overArr,curArr:curArr}\r\n },\r\n explainTopicContentCut(surplusH,dom){\r\n //解答题分页内容分割\r\n let nodeH = 0;\r\n let curHtml = '';\r\n let overHtml = '';\r\n [...dom.children].forEach(item =>{\r\n nodeH = nodeH+item.offsetHeight;\r\n //16为padding\r\n if(nodeH>surplusH-16){\r\n overHtml = overHtml + item.outerHTML;\r\n } else {\r\n curHtml = curHtml + item.outerHTML;\r\n }\r\n\r\n })\r\n return {curHtml:curHtml,overHtml:overHtml}\r\n },\r\n sortArticle(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n // this.sortExplain(topicConfig,allTags,nodeH,tempCount,i,pageIndex);\r\n /*\r\n svgWidth:svgBox宽度\r\n count:一行可放作文格数\r\n rowCount:总行数,\r\n isTitleOver:是否是题目超出,\r\n */\r\n // 存在问题,作文格不能实时更新\r\n let svgWidth,count,rowCount,isTitleOver,overArr,curArr;\r\n svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n count = parseInt(svgWidth/this.squareSize.w);\r\n rowCount = Math.ceil((topicConfig.topicConfigureData.compositionNumber-(topicConfig.topicConfigureData.startPositionNumber || 1))/count)\r\n\r\n // isLast 是否是上一页截断数据\r\n if(!topicConfig.isLast){\r\n nodeH += allTags[0].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n }\r\n }\r\n\r\n if(!isTitleOver){\r\n for(let j=0;j<rowCount;j++){\r\n nodeH += this.squareSize.h+10;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n\r\n this.bigTopicPageArr.push(JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i))\r\n this.bigTopicPageArr[pageIndex+1][0].isLast = true;\r\n\r\n let prevEndNum ;\r\n if(this.bigTopicPageArr[pageIndex-1]&&this.bigTopicPageArr[pageIndex-1][this.bigTopicPageArr[pageIndex-1].length-1]&&this.bigTopicPageArr[pageIndex-1][this.bigTopicPageArr[pageIndex-1].length-1].questionTypeId == 77){\r\n prevEndNum = this.bigTopicPageArr[pageIndex-1][this.bigTopicPageArr[pageIndex-1].length-1].topicConfigureData.compositionNumber\r\n }else{\r\n prevEndNum = 0\r\n }\r\n\r\n this.bigTopicPageArr[pageIndex][i].topicConfigureData.compositionNumber = (j-1)*count+prevEndNum;\r\n this.bigTopicPageArr[pageIndex+1][0].topicConfigureData.startPositionNumber = 1+(j-1)*count+prevEndNum;\r\n this.bigTopicPageArr[pageIndex+1][0].questions[0].cutId = this.bigTopicPageArr[pageIndex+1][0].questions[0].cutId+1;\r\n\r\n\r\n\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(this.bigTopicPageArr)))\r\n //如果还有超出内容,新增一页翻页\r\n if(this.bigTopicPageArr.length>pageIndex+1){\r\n this.$nextTick(()=>{\r\n this.initPage(pageIndex+1)\r\n })\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n\r\n },\r\n setExplainPaging(pageIndex,i,overArr,curArr){\r\n // 解答题分页\r\n if(overArr.length===0&&curArr.length===0){\r\n return false\r\n }\r\n //下一页数据\r\n let isLastMod = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i)[0];\r\n\r\n // isLast用来区分是否显示大题标题\r\n isLastMod.isLast = curArr.length === 0?false:true;\r\n isLastMod.questions = JSON.parse(JSON.stringify(overArr));\r\n if(this.bigTopicPageArr[pageIndex+1]){\r\n // 下一页是否已有超出大题的数据\r\n let nextPageFistModId = this.bigTopicPageArr[pageIndex+1][0]?this.bigTopicPageArr[pageIndex+1][0].modelId:0;\r\n if(isLastMod.modelId === nextPageFistModId){\r\n let overLastMinTopicData = isLastMod.questions[isLastMod.questions.length-1];//当前超出的最后一小题\r\n let nextFistMinTopicData = this.bigTopicPageArr[pageIndex+1][0].questions[0];//下一页的第一小题\r\n //是否存在当前超出小题的已超出模块\r\n if(overLastMinTopicData.alias===nextFistMinTopicData.alias){\r\n //合并同一小题的超出部分\r\n nextFistMinTopicData.TopicAreaHeight = nextFistMinTopicData.TopicAreaHeight +overLastMinTopicData.TopicAreaHeight;\r\n nextFistMinTopicData.contentHtml = nextFistMinTopicData.contentHtml +overLastMinTopicData.contentHtml;\r\n for(let i=0;i<overArr.length-1;i++){\r\n this.bigTopicPageArr[pageIndex+1][0].questions.unshift(overArr[i])\r\n }\r\n } else {\r\n for(let i=0;i<overArr.length;i++){\r\n this.bigTopicPageArr[pageIndex+1][0].questions.unshift(overArr[i])\r\n }\r\n }\r\n }else {\r\n this.bigTopicPageArr[pageIndex+1].unshift(isLastMod);\r\n }\r\n\r\n }else {\r\n let nextPage = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i);\r\n nextPage[0] = isLastMod;\r\n this.bigTopicPageArr.push(nextPage)\r\n }\r\n\r\n // 当前页数据 curArr长度为0,整个大题放到下一页\r\n if(curArr.length===0){\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i)]\r\n } else {\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i+1)]\r\n this.bigTopicPageArr[pageIndex][i].questions = JSON.parse(JSON.stringify(curArr));\r\n }\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(this.bigTopicPageArr)))\r\n //如果还有超出内容,新增一页翻页\r\n if(this.bigTopicPageArr.length>pageIndex+1){\r\n this.$nextTick(()=>{\r\n this.initPage(pageIndex+1)\r\n })\r\n }\r\n },\r\n setTopicChoosePaging(pageIndex,i,overArr,curArr,isTitleOver,isQuestionText){\r\n // 题卡合一选做题分页\r\n if((!overArr && !curArr) || (overArr.length===0&&curArr.length===0)){\r\n return false\r\n }\r\n\r\n //超出页面的大题模块\r\n let isLastMod = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i)[0];\r\n\r\n\r\n if(isTitleOver){\r\n //当前页\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i)]\r\n //下一页\r\n if(this.bigTopicPageArr[pageIndex+1]){\r\n // 下一页是否已有超出大题的数据\r\n let nextPageFistModId = this.bigTopicPageArr[pageIndex+1][0]?this.bigTopicPageArr[pageIndex+1][0].modelId:0;\r\n if(isLastMod.modelId === nextPageFistModId){\r\n let overLastMinTopicData = isLastMod.questions[isLastMod.questions.length-1];//当前超出的最后一小题\r\n let nextFistMinTopicData = this.bigTopicPageArr[pageIndex+1][0].questions[0];//下一页的第一小题\r\n //是否存在当前超出小题的已超出模块\r\n if(overLastMinTopicData.alias===nextFistMinTopicData.alias){\r\n //合并同一小题的超出部分\r\n nextFistMinTopicData.TopicAreaHeight = nextFistMinTopicData.TopicAreaHeight +overLastMinTopicData.TopicAreaHeight;\r\n nextFistMinTopicData.contentHtml = nextFistMinTopicData.contentHtml +overLastMinTopicData.contentHtml;\r\n for(let i=0;i<overArr.length-1;i++){\r\n this.bigTopicPageArr[pageIndex+1][0].questions.unshift(overArr[i])\r\n }\r\n } else {\r\n for(let i=0;i<overArr.length;i++){\r\n this.bigTopicPageArr[pageIndex+1][0].questions.unshift(overArr[i])\r\n }\r\n }\r\n\r\n\r\n }else {\r\n this.bigTopicPageArr[pageIndex+1].unshift(isLastMod);\r\n }\r\n\r\n }else {\r\n let nextPage = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i);\r\n nextPage[0] = isLastMod;\r\n this.bigTopicPageArr.push(nextPage)\r\n }\r\n\r\n }else\r\n {\r\n if(isQuestionText){\r\n //题文超出\r\n // isLast用来区分是否显示大题标题\r\n isLastMod.isLast = curArr.length === 0?false:true;\r\n isLastMod.QuestionTextList = JSON.parse(JSON.stringify(overArr));\r\n if(this.bigTopicPageArr[pageIndex+1]){\r\n // 下一页是否已有超出大题的数据\r\n if(isLastMod.modelId ===this.bigTopicPageArr[pageIndex+1][0].modelId){\r\n let overLastMinTopicData = isLastMod.questions[isLastMod.questions.length-1];//当前超出的最后一小题\r\n let nextFistMinTopicData = this.bigTopicPageArr[pageIndex+1][0].questions[0];//下一页的第一小题\r\n //是否存在当前超出小题的已超出模块\r\n if(overLastMinTopicData.alias===nextFistMinTopicData.alias){\r\n //合并同一小题的超出部分\r\n nextFistMinTopicData.TopicAreaHeight = nextFistMinTopicData.TopicAreaHeight +overLastMinTopicData.TopicAreaHeight;\r\n nextFistMinTopicData.contentHtml = nextFistMinTopicData.contentHtml +overLastMinTopicData.contentHtml;\r\n }\r\n }else {\r\n this.bigTopicPageArr[pageIndex+1].unshift(isLastMod);\r\n }\r\n\r\n }else {\r\n let nextPage = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i);\r\n nextPage[0] = isLastMod;\r\n this.bigTopicPageArr.push(nextPage)\r\n }\r\n\r\n\r\n // 当前页数据 curArr长度为0,整个大题放到下一页\r\n if(curArr.length===0){\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i)];\r\n // this.bigTopicPageArr[pageIndex][i].QuestionTextList =[];\r\n // this.bigTopicPageArr[pageIndex][i].questions = []\r\n } else {\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i+1)]\r\n this.bigTopicPageArr[pageIndex][i].questions = [];\r\n this.bigTopicPageArr[pageIndex][i].QuestionTextList =JSON.parse(JSON.stringify(curArr));\r\n }\r\n\r\n }else {\r\n // 答题卡超出\r\n\r\n // isLast用来区分是否显示大题标题\r\n isLastMod.isLast = true;\r\n isLastMod.questions = JSON.parse(JSON.stringify(overArr));\r\n isLastMod.QuestionTextList = null;\r\n if(this.bigTopicPageArr[pageIndex+1]){\r\n // 下一页是否已有超出大题的数据\r\n if(isLastMod.modelId ===this.bigTopicPageArr[pageIndex+1][0].modelId){\r\n let overLastMinTopicData = isLastMod.questions[isLastMod.questions.length-1];//当前超出的最后一小题\r\n let nextFistMinTopicData = this.bigTopicPageArr[pageIndex+1][0].questions[0];//下一页的第一小题\r\n //是否存在当前超出小题的已超出模块\r\n if(overLastMinTopicData.alias===nextFistMinTopicData.alias){\r\n //合并同一小题的超出部分\r\n nextFistMinTopicData.TopicAreaHeight = nextFistMinTopicData.TopicAreaHeight +overLastMinTopicData.TopicAreaHeight;\r\n nextFistMinTopicData.contentHtml = nextFistMinTopicData.TopicAreaHeight +overLastMinTopicData.contentHtml;\r\n }\r\n }else {\r\n this.bigTopicPageArr[pageIndex+1].unshift(isLastMod);\r\n }\r\n\r\n }else {\r\n let nextPage = JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(i);\r\n nextPage[0] = isLastMod;\r\n this.bigTopicPageArr.push(nextPage)\r\n }\r\n\r\n\r\n // 当前页数据 curArr长度为0,整个大题放到下一页\r\n if(curArr.length===0){\r\n // this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i)];\r\n this.bigTopicPageArr[pageIndex][i].questions = [];\r\n } else {\r\n this.bigTopicPageArr[pageIndex] = [...JSON.parse(JSON.stringify(this.bigTopicPageArr))[pageIndex].slice(0,i+1)]\r\n this.bigTopicPageArr[pageIndex][i].questions = JSON.parse(JSON.stringify(curArr));\r\n }\r\n }\r\n }\r\n\r\n\r\n this.setBigTopicPageArr(JSON.parse(JSON.stringify(this.bigTopicPageArr)))\r\n //如果还有超出内容,新增一页翻页\r\n if(this.bigTopicPageArr.length>pageIndex+1){\r\n this.$nextTick(()=>{\r\n this.initPage(pageIndex+1)\r\n })\r\n }\r\n },\r\n sortArticleCn(topicConfig,allTags,nodeH,tempCount,i,pageIndex){\r\n let curArr = [];\r\n let overArr = [];\r\n let surplusH = this.baseRect.h - (tempCount-this.arrH[i]);//除开当前大题当前页剩余高度\r\n let svgWidth;\r\n\r\n let articleObj = Array.from(document.querySelectorAll('.article-chinese'));\r\n if(articleObj.length==0){\r\n Array.from(document.querySelectorAll('.paper-topic-content'));\r\n }\r\n\r\n if(this.cardSetting.hasBindingLine){\r\n if(pageIndex == this.bigTopicPageArr.length-1){\r\n svgWidth = articleObj[articleObj.length-1].offsetWidth\r\n }else if(this.pageIndex == 0){\r\n svgWidth = articleObj[0].offsetWidth\r\n }else{\r\n svgWidth = articleObj[0].offsetWidth\r\n }\r\n }else{\r\n svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n }\r\n\r\n\r\n for(let j = 0;j<allTags.length;j++){\r\n let dom = allTags[j];\r\n nodeH += dom.offsetHeight;\r\n if(nodeH>surplusH){\r\n if(topicConfig.isLast){\r\n\r\n let nextSurplusH = nodeH - surplusH;//当前试题超出当前页的高度\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j]))\r\n overArr = topicConfig.questions.splice((j+1))\r\n curArr = topicConfig.questions.splice(0,(j+1))\r\n\r\n if(overTopic.TopicAreaHeight>0){\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45:dom.offsetHeight-nextSurplusH;\r\n //当前页最后一小题答题区域小于30,小题放到下一页\r\n let topicContent = {curHtml:'',overHtml:''}\r\n if(topicContentDom.scrollHeight>nextSurplusH){\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = nextSurplusH;\r\n overArr.unshift(overTopic);\r\n }\r\n }else {\r\n let count,rowCount,isTitleOver;\r\n // svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n count = parseInt(svgWidth/this.squareSize.w);\r\n rowCount = Math.ceil((topicConfig.topicConfigureData.compositionNumber-(topicConfig.topicConfigureData.startPositionNumber || 1)+1)/count)\r\n\r\n // isLast 是否是上一页截断数据\r\n if(!topicConfig.isLast){\r\n nodeH += allTags[0].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n }\r\n }\r\n\r\n if(!isTitleOver){\r\n let ArticleCnH = 0;\r\n for(let j=0;j<rowCount;j++){\r\n ArticleCnH += this.squareSize.h+10;\r\n if(ArticleCnH>curTopicAreaHeight-topicContentDom.scrollHeight){\r\n // let prevEndNum = curArr[curArr.length-1].endPositionNumber;\r\n // if(curArr[curArr.length-1].startPositionNumber===1){\r\n // prevEndNum = 0\r\n // }\r\n\r\n let prevEndNum = curArr[curArr.length-1].startPositionNumber===1?1:curArr[curArr.length-1].startPositionNumber-1\r\n\r\n curArr[curArr.length-1].endPositionNumber = (j-1)*count+prevEndNum-1;\r\n\r\n overTopic.startPositionNumber = (j-1)*count+prevEndNum;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = 0;\r\n overArr.unshift(overTopic);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n }else {\r\n let count,rowCount,isTitleOver;\r\n // svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n count = parseInt(svgWidth/this.squareSize.w);\r\n rowCount = Math.ceil((topicConfig.topicConfigureData.compositionNumber-(topicConfig.topicConfigureData.startPositionNumber || 1)+1)/count)\r\n\r\n // isLast 是否是上一页截断数据\r\n if(!topicConfig.isLast){\r\n nodeH += allTags[0].offsetHeight;\r\n if(tempCount-this.arrH[i]+nodeH>this.baseRect.h){\r\n isTitleOver = true;\r\n this.setNextPage(pageIndex,i,overArr,curArr,isTitleOver);\r\n }\r\n }\r\n\r\n if(!isTitleOver){\r\n let ArticleCnH = 0;\r\n for(let j=0;j<rowCount;j++){\r\n ArticleCnH += this.squareSize.h+10;\r\n if(ArticleCnH>dom.offsetHeight-nextSurplusH-12){\r\n let prevEndNum = curArr[curArr.length-1].startPositionNumber===1?1:curArr[curArr.length-1].startPositionNumber-1\r\n\r\n curArr[curArr.length-1].endPositionNumber = (j-1)*count+prevEndNum-1;\r\n\r\n overTopic.startPositionNumber = (j-1)*count+prevEndNum;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = 0;\r\n overArr.unshift(overTopic);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n }else {\r\n if(j===0){\r\n curArr = [];\r\n overArr = topicConfig.questions;\r\n break;\r\n }else {\r\n let nextSurplusH = nodeH - surplusH;//当前试题超出当前页的高度\r\n //ue编辑器iframe对象\r\n let ueIframe = dom.querySelector('iframe');\r\n //ue编辑器iframe对象的body\r\n let topicContentDom = ueIframe.contentDocument.body;\r\n\r\n let overTopic = JSON.parse(JSON.stringify(topicConfig.questions[j-1]))\r\n overArr = topicConfig.questions.splice((j))\r\n curArr = topicConfig.questions.splice(0,(j))\r\n\r\n //当前试题编辑区域剩余高度 35为打分框高度 10为顶部间距\r\n let curTopicAreaHeight = curArr[curArr.length-1].cutId===1?dom.offsetHeight-nextSurplusH-45:dom.offsetHeight-nextSurplusH;\r\n\r\n if(overTopic.TopicAreaHeight>surplusH){\r\n //作文题编辑区域超出\r\n\r\n\r\n //当前页最后一小题答题区域小于30,小题放到下一页\r\n let topicContent = {curHtml:'',overHtml:''}\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n topicContent = this.explainTopicContentCut(curTopicAreaHeight,topicContentDom);\r\n curArr[curArr.length-1].contentHtml = topicContent.curHtml;\r\n curArr[curArr.length-1].TopicAreaHeight = curTopicAreaHeight;\r\n curArr[curArr.length-1].isShowArticleCn = false;\r\n curArr[curArr.length-1].endPositionNumber = 0;\r\n curArr[curArr.length-1].startPositionNumber = 0;\r\n\r\n if(nextSurplusH<20){\r\n nextSurplusH = 20\r\n }\r\n overTopic.contentHtml = topicContent.overHtml;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n // overTopic.TopicAreaHeight = topicContentDom.scrollHeight-curTopicAreaHeight;\r\n overTopic.TopicAreaHeight = Number(overTopic.TopicAreaHeight) - Number(curTopicAreaHeight);\r\n overTopic.isShowArticleCn = true;\r\n overArr.unshift(overTopic);\r\n }\r\n }else {\r\n //作文题格超出\r\n if(curTopicAreaHeight<30){\r\n overArr.unshift(JSON.parse(JSON.stringify(curArr[curArr.length-1])));\r\n curArr.splice(curArr.length-1,1)\r\n }else {\r\n let count,rowCount;\r\n // svgWidth = document.querySelector('.article-chinese').offsetWidth;\r\n count = parseInt(svgWidth/this.squareSize.w);\r\n rowCount = Math.ceil((topicConfig.topicConfigureData.compositionNumber-(topicConfig.topicConfigureData.startPositionNumber || 1)+1)/count)\r\n\r\n let ArticleCnH = 0;\r\n for(let j=0;j<rowCount;j++){\r\n ArticleCnH += this.squareSize.h+10;\r\n //45为标题,12 格子底部边距\r\n if(ArticleCnH > surplusH - overTopic.TopicAreaHeight-45-12){\r\n let prevEndNum = curArr[curArr.length-1].startPositionNumber===1?1:curArr[curArr.length-1].startPositionNumber-1\r\n\r\n curArr[curArr.length-1].endPositionNumber = (j-1)*count+prevEndNum-1;\r\n if(curArr[curArr.length-1].endPositionNumber<1){\r\n curArr[curArr.length-1].endPositionNumber = 0;\r\n curArr[curArr.length-1].isShowArticleCn=false\r\n }\r\n overTopic.startPositionNumber = (j-1)*count+prevEndNum;\r\n overTopic.cutId = overTopic.cutId + 1;\r\n overTopic.TopicAreaHeight = 0;\r\n overTopic.contentHtml = '';\r\n overTopic.isShowArticleCn = true;\r\n overArr.unshift(overTopic);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n break;\r\n }\r\n }\r\n this.setExplainPaging(pageIndex,i,overArr,curArr);\r\n\r\n },\r\n UeReadyHeightChangeReloadPage(){\r\n let _this = this;\r\n if(!this.isRunSetInterval){\r\n let myVar = null;\r\n if(!this.isRunInitPage){\r\n setTimeout(()=>{\r\n if(!_this.isRunInitPage){\r\n _this.ReloadPage();\r\n clearInterval(myVar);\r\n }\r\n },200)\r\n }else {\r\n myVar=setInterval(function(){this.setIntervalReloadPage()},1000);\r\n }\r\n }\r\n\r\n\r\n },\r\n ReloadPage(){\r\n let _this = this;\r\n let minIndexPage = Math.min.apply(Math, _this.changeUeReadyHeightArr);\r\n // 当前拖动页及后续页面数据重组\r\n let baseArr = JSON.parse(JSON.stringify(_this.bigTopicPageArr)).splice(0,minIndexPage)\r\n let resetArr = resetPage(JSON.parse(JSON.stringify(_this.bigTopicPageArr)).splice(minIndexPage),false,true);\r\n\r\n baseArr.push(resetArr)\r\n\r\n //删除最后一页最后一题时,删掉空白纸张\r\n if(minIndexPage == baseArr.length-1 && baseArr[minIndexPage].length == 1){\r\n if(!baseArr[minIndexPage][0].questions || baseArr[minIndexPage][0].questions.length == 0){\r\n baseArr.pop();\r\n _this.setBigTopicPageArr(baseArr);\r\n return;\r\n }\r\n }\r\n _this.setBigTopicPageArr(baseArr);\r\n this.$nextTick(()=>{\r\n _this.initPage(minIndexPage);\r\n _this.setChangeUeReadyHeight([]);\r\n })\r\n },\r\n setIntervalReloadPage(){\r\n let _this = this;\r\n if(!this.isRunInitPage){\r\n setTimeout(()=>{\r\n if(!_this.isRunInitPage){\r\n _this.ReloadPage();\r\n }\r\n },200)\r\n }\r\n }\r\n },\r\n}\r\n","import {getPointPos,getPos} from \"@/lib/getPos.js\"\r\nimport resetPage from \"@/lib/resetPage\"\r\nimport {mapGetters} from 'vuex'\r\nexport default{\r\n data(){\r\n return{\r\n wordsArr:['A','B','C','D','E','F','G','H','I','J','K','L','M'],\r\n scoreTypeArr:['','2/3/5','2/3/4/6','2/4'],\r\n pages:[{\r\n pageNo:'',\r\n questions:[],\r\n location:[],\r\n imge:{}\r\n },{\r\n pageNo:'',\r\n questions:[],\r\n location:[],\r\n imge:{}\r\n }],\r\n }\r\n },\r\n computed: {\r\n ...mapGetters('answerSheet',['cardSetting','bigTopicPageArr','paperSource','subject']),\r\n },\r\n methods:{\r\n topicTypeJsToC(typeId){\r\n if(typeId == 1){\r\n return {\r\n type:0\r\n }\r\n }else if(typeId == 2){\r\n return {\r\n type:8\r\n }\r\n }else if(typeId == 11){\r\n return {\r\n type:5\r\n }\r\n }else if(typeId == 5){\r\n return {\r\n type:3\r\n }\r\n }else if(typeId == 7 || typeId == 27){\r\n return {\r\n type:1,\r\n marktype:0\r\n }\r\n }else if(typeId == 17){\r\n return {\r\n type:2\r\n }\r\n }else if(typeId == 77){\r\n return {\r\n type:1,\r\n marktype:this.subject == 9 ? 4 : 10\r\n }\r\n }\r\n },\r\n getAllTopicPos(modelId,topicTypeId){\r\n let tempClassName = '',explain=null;\r\n\r\n if([1,2,11].includes(topicTypeId)){\r\n tempClassName = '.option-li'\r\n }else if([5].includes(topicTypeId)){\r\n tempClassName = '.fill-item'\r\n }else if([7,17,27,77].includes(topicTypeId)){\r\n tempClassName = '.topic-explain'\r\n }\r\n\r\n explain = this.getPageFirstElement(tempClassName,topicTypeId,modelId)\r\n this.getTopicPos(explain.firstEle,explain.firstJson,1,explain.firstEleLenArr,topicTypeId);\r\n this.getTopicPos(explain.lastEle,explain.lastJson,2,explain.lastEleLenArr,topicTypeId);\r\n },\r\n commonChoicPos(dotX,firstEle,j,firstJson,i,pageNo){\r\n let optPos = {}\r\n let opt = Array.from(firstEle[j].querySelectorAll('.iconfont'));\r\n optPos.direction = firstJson.topicConfigureData.direction||0\r\n optPos.modelId = firstJson.modelId\r\n optPos.answer = firstJson.questions[j].answer\r\n optPos.id = String(firstJson.questions[j].questionNum)\r\n optPos.name = firstJson.questions[j].alias\r\n optPos.type = this.topicTypeJsToC(firstJson.questions[j].questionTypeId).type\r\n optPos.score = {full:firstJson.questions[j].fullScore}\r\n optPos.opt = []\r\n\r\n\r\n for(let k=0;k<opt.length;k++){\r\n optPos.opt.push(getPos(dotX,opt[k]))\r\n // +2 2像素边框,到定位父级宽度不包括边框\r\n optPos.opt[k].x = optPos.opt[k].x + 2 + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0)\r\n optPos.opt[k].optName = this.wordsArr[k]\r\n }\r\n return optPos\r\n },\r\n commonFillPos(dotX,firstEle,j,firstJson,i,pageNo){\r\n let optPos = {}\r\n optPos.column = firstJson.topicConfigureData.column||1\r\n optPos.modelId = firstJson.modelId\r\n optPos.id = String(firstJson.questions[j].questionNum)\r\n optPos.name = firstJson.questions[j].alias\r\n optPos.rowLinHeight = firstJson.topicConfigureData.rowLinHeight||40\r\n optPos.scoreStyle = this.scoreTypeArr[firstJson.topicConfigureData.scoreStyle&&firstJson.topicConfigureData.scoreStyle-1||1 - 1]\r\n optPos.type = this.topicTypeJsToC(firstJson.questions[j].questionTypeId).type\r\n\r\n optPos.cut = getPos(dotX,firstEle[j])\r\n optPos.cut.x = optPos.cut.x + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0)\r\n optPos.scorebox = getPos(dotX,firstEle[j].querySelector('strong'))\r\n optPos.scorebox.x = optPos.scorebox.x + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0);\r\n optPos.scorebox.Score = optPos.scoreStyle.split('/')\r\n optPos.scorebox.type = 3\r\n\r\n return optPos\r\n },\r\n\r\n commonExplainPos(dotX,firstEle,j,firstJson,i,pageNo){\r\n\r\n let selectOptEle = Array.from(firstEle[j].querySelectorAll('.optional-span'))\r\n\r\n let optPos = {}\r\n optPos.modelId = firstJson.modelId\r\n\r\n if(firstJson.questionTypeId == 17){\r\n if(this.paperSource == 1){\r\n optPos.select = firstJson.questions[j].required\r\n optPos.total = firstJson.questions[j].total\r\n }else{\r\n optPos.select = firstJson.topicConfigureData.topicTypeArr[0].chooseSelectOption\r\n optPos.total = firstJson.topicConfigureData.topicTypeArr[0].chooseOption\r\n }\r\n // 拼接选做题题号\r\n let str = ''\r\n for(let k=0;k<optPos.total;k++){\r\n str += (parseInt(firstJson.questions[j].questionNum)+k)+(k != optPos.total-1?',':'')\r\n }\r\n optPos.id = str\r\n }else{\r\n optPos.id = String(firstJson.questions[j].questionNum)\r\n }\r\n\r\n optPos.editorId = firstJson.questions[j].alias\r\n optPos.marktype = this.topicTypeJsToC(firstJson.questionTypeId).marktype\r\n optPos.type = this.topicTypeJsToC(firstJson.questionTypeId).type\r\n\r\n optPos.selectqts = []\r\n for(let k=0;k<selectOptEle.length;k++){\r\n optPos.selectqts.push(getPos(dotX,selectOptEle[k]));\r\n // +2 module边框\r\n optPos.selectqts[k].x = optPos.selectqts[k].x +2 + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0)\r\n optPos.selectqts[k].optName = this.wordsArr[k]\r\n }\r\n\r\n optPos.cut = getPos(dotX,firstEle[j])\r\n optPos.cut.x = optPos.cut.x + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0);\r\n optPos.cut.y = optPos.cut.y + 10;\r\n optPos.cut.height = optPos.cut.height - 10;\r\n optPos.cut.linkparm = firstJson.questions[j].cutId-1\r\n\r\n if(firstEle[j].querySelector('.no-scoring')){\r\n let scoreBoxJson = getPos(dotX,firstEle[j].querySelector('.scoring-box')),noScoreJson = getPos(dotX,firstEle[j].querySelector('.no-scoring'));\r\n\r\n scoreBoxJson.x = scoreBoxJson.x + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0);\r\n\r\n optPos.scorebox = {\r\n width:scoreBoxJson.width - noScoreJson.width,\r\n height:scoreBoxJson.height,\r\n x:scoreBoxJson.x,\r\n y:scoreBoxJson.y,\r\n }\r\n }else{\r\n if(firstEle[j].querySelector('.scoring-box')){\r\n optPos.scorebox = getPos(dotX,firstEle[j].querySelector('.scoring-box'))\r\n optPos.scorebox.x = optPos.scorebox.x + (document.querySelector('.pageindex-0').offsetWidth * i) - (this.cardSetting.hasBindingLine&&i!=0&&pageNo==1 ? 20 :0);\r\n }else{\r\n optPos.scorebox = {}\r\n }\r\n }\r\n\r\n optPos.scoreLimit = firstJson.questions[j].scoreLimit || firstJson.topicConfigureData.scoreLimit\r\n optPos.scorebox.limit = firstJson.questions[j].fullScore\r\n optPos.scorebox.point = firstJson.questions[j].point || firstJson.topicConfigureData.hasHalfScore?1:0\r\n optPos.scorebox.type = (firstJson.questions[j].scoreLimit || firstJson.topicConfigureData.scoreLimit) < 17 ? 1 : 2\r\n\r\n return optPos\r\n\r\n },\r\n getTopicPos(firstEle=[],firstJson,pageNo,eleLenArr=[],topicType){\r\n // pageNo正反面 eleLenArr每页数据条数\r\n if(firstEle.length == 0) return\r\n let dotX,curIndex = 0;//curIndex记录拼接数据index值\r\n\r\n for(let i=0;i<eleLenArr.length;i++){\r\n if(eleLenArr[i]>0){\r\n for(let j=curIndex;j<firstEle.length;j++){\r\n dotX = document.querySelectorAll('.main-dot')[firstEle[j].getAttribute('data-pageIndex')];\r\n\r\n let optPos = {}\r\n\r\n if([1,2,11].includes(topicType)){\r\n // 选择\r\n optPos = this.commonChoicPos(dotX,firstEle,j,firstJson,i,pageNo);\r\n }else if([5].includes(topicType)){\r\n // 填空\r\n optPos = this.commonFillPos(dotX,firstEle,j,firstJson,i,pageNo);\r\n }else if([7,17,27,77].includes(topicType)){\r\n // 解答&选做&作文\r\n optPos = this.commonExplainPos(dotX,firstEle,j,firstJson,i,pageNo);\r\n }\r\n\r\n this.pages[pageNo-1].questions.push(optPos)\r\n curIndex++;\r\n if(i === 0){\r\n if(curIndex == eleLenArr[i]){\r\n break;\r\n }\r\n }else{\r\n let tempArr = [...eleLenArr].splice(0,i);\r\n let tempCount = tempArr.reduce((prev,cur)=>prev+cur)\r\n if(curIndex-tempCount == eleLenArr[i]){\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n getPageFirstElement(elem,topicTypeId,modelId){\r\n // 获取正反面元素和对应数据\r\n // 正面\r\n let pageFront = this.setTopicPageContent(elem,topicTypeId,modelId,1);\r\n // 反面\r\n let pageBack = this.setTopicPageContent(elem,topicTypeId,modelId,2);\r\n\r\n return {\r\n firstEle:pageFront.eleArr,\r\n firstJson:this.resetTopicJson(pageFront.objArr,topicTypeId,modelId),\r\n firstEleLenArr:pageFront.pageEle,\r\n lastEle:pageBack.eleArr,\r\n lastJson:this.resetTopicJson(pageBack.objArr,topicTypeId,modelId),\r\n lastEleLenArr:pageBack.pageEle\r\n }\r\n },\r\n setTopicPageContent(elem,topicTypeId,modelId,count=1){\r\n // 正反面数据整合\r\n let eleArr = [],objArr=[],tempObjArr=[],pageEle = [];\r\n let pageList = Array.from(document.querySelectorAll('.paper-item-js'));\r\n\r\n let baseCount = count == 1 ? 0 : this.cardSetting.column;\r\n\r\n for(let i=baseCount;i<this.cardSetting.column * count;i++){\r\n if(i<pageList.length){\r\n let tempTopicArr = Array.from(pageList[i].querySelectorAll(elem))\r\n eleArr.push(pageList[i] ? tempTopicArr : [])\r\n tempObjArr.push(JSON.parse(JSON.stringify(this.bigTopicPageArr[i])));\r\n\r\n pageEle.push(tempTopicArr.filter(v=>v.getAttribute('data-type') == topicTypeId && v.getAttribute('data-modelId') == modelId).length);\r\n }\r\n }\r\n\r\n eleArr = eleArr.flat().filter(v=>v.getAttribute('data-type') == topicTypeId && v.getAttribute('data-modelId') == modelId);\r\n // resetPage(tempObjArr2,true) true还原数据格式,但不合并被切割试题\r\n objArr = eleArr.length>0 ? resetPage(tempObjArr,true) : [];\r\n\r\n return {\r\n eleArr,\r\n pageEle,\r\n objArr\r\n }\r\n },\r\n resetTopicJson(objArr,topicTypeId,modelId){\r\n // 合并相同类型试题数据\r\n let tempFirstJsonArr = objArr.filter(val=>val.questionTypeId === topicTypeId&&!val.isQuestionText&&val.modelId==modelId)\r\n let json = {};\r\n if(tempFirstJsonArr.length != 0){\r\n json = JSON.parse(JSON.stringify(tempFirstJsonArr[0]))\r\n for(let i=0;i<tempFirstJsonArr.length;i++){\r\n if(i>0){\r\n json.questions.push(...JSON.parse(JSON.stringify(tempFirstJsonArr[i].questions)))\r\n }\r\n }\r\n }\r\n return json\r\n },\r\n pageSide(){\r\n // 五个定位点: 1左上{30,20} 2上中{35%,20} 3右上 4左下 5右下\r\n let uniqueCode = document.querySelector('.unique-code');\r\n let paper = document.querySelectorAll('.paper-item-js')[0];\r\n\r\n let paperWidth = paper.offsetWidth * this.cardSetting.column;\r\n let paperHeight = paper.offsetHeight;\r\n\r\n let width = uniqueCode.offsetWidth;\r\n let height = uniqueCode.offsetHeight;\r\n\r\n let uniquePos = getPointPos(uniqueCode);//左上角基准点\r\n let arrDotTemp=[];\r\n\r\n // 点1\r\n arrDotTemp.push(uniquePos)\r\n // 正面 点2\r\n arrDotTemp.push({\r\n x:paperWidth * 0.35,\r\n y:20\r\n })\r\n // 正面 点3\r\n arrDotTemp.push({\r\n x:paperWidth - 30 - width,\r\n y:20\r\n })\r\n // 正面 点4\r\n arrDotTemp.push({\r\n x:uniquePos.x,\r\n y:paperHeight - 20 - height\r\n })\r\n // 正面 点5\r\n arrDotTemp.push({\r\n x:paperWidth - 30 - width,\r\n y:paperHeight - 20 - height\r\n })\r\n\r\n let arrDot = arrDotTemp.map(item=>{\r\n return {\r\n x:item.x,\r\n y:item.y,\r\n width:width,\r\n height:height,\r\n }\r\n })\r\n\r\n this.pages[0].location = arrDot;\r\n this.pages[1].location = JSON.parse(JSON.stringify(arrDot));\r\n // 反面 点1\r\n this.pages[1].location[0].x = 30\r\n // 反面 点2\r\n this.pages[1].location[1].x = paperWidth - paperWidth * 0.35 - width\r\n // 反面 点3\r\n this.pages[1].location[2].x = paperWidth - (this.cardSetting.hasBindingLine ? 50 : 30) - width\r\n // 反面 点4\r\n this.pages[1].location[3].x = 30\r\n // 反面 点5\r\n this.pages[1].location[4].x = paperWidth - (this.cardSetting.hasBindingLine ? 50 : 30) - width\r\n\r\n },\r\n pointWay(dotX){\r\n // 二维码,试卷宽高,缺考,条形码\r\n this.$nextTick(()=>{\r\n //二维码\r\n let paper = Array.from(document.querySelectorAll('.paper-item'))[0]\r\n let qrCode = document.querySelector('.notice-ewm');\r\n let qrCodePos;\r\n\r\n if(this.cardSetting.useQrCode && qrCode){\r\n qrCodePos = getPos(dotX,qrCode);\r\n }\r\n\r\n\r\n //试卷宽高\r\n let imge = { height:paper.offsetHeight, width:paper.offsetWidth * this.cardSetting.column };\r\n\r\n //缺考标记\r\n let absentX = document.querySelector('.absent-mark');\r\n let absent = getPos(dotX,absentX);\r\n\r\n //条形码\r\n let codeX,code;\r\n codeX = document.querySelector('.code-img');\r\n if(!this.cardSetting.useQrCode && codeX){\r\n\r\n code = getPos(dotX,codeX);\r\n }\r\n\r\n\r\n let studentcode_bar = {object:{}};\r\n studentcode_bar.object = code;\r\n this.pages[0].studentcode_bar = studentcode_bar;//正面加入条形码\r\n this.pages[0].QrCode = qrCodePos;//正面加入二维码\r\n this.pages[0].absent = absent;//正面加入缺考标记\r\n this.pages.map((val,index)=>{\r\n val.imge=imge\r\n val.pageNo = index+1;\r\n });//正反面加入试卷大小\r\n\r\n })\r\n },\r\n identCard(dotX){\r\n //准考证号定位\r\n this.pages[0].studentcode_fill = {}\r\n if(!this.cardSetting.examinationNumberType.includes(1)) return\r\n let object=[];\r\n let cardIdBox = document.querySelector('.card-id')\r\n let baseW = document.querySelector('.unique-li').offsetWidth\r\n for(let i=0;i<cardIdBox.children.length;i++){\r\n object[i] = {};\r\n object[i].group = [];\r\n for(let j=0;j<cardIdBox.querySelector('ul').children.length;j++){\r\n let groupCode = getPos(dotX,cardIdBox.querySelector('ul').children[j].children[0]);\r\n groupCode.optName = j;\r\n groupCode.x = groupCode.x + i * baseW\r\n object[i].group.push(JSON.parse(JSON.stringify(groupCode)));\r\n }\r\n }\r\n this.pages[0].studentcode_fill.object = object;\r\n\r\n }\r\n }\r\n}\r\n","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=db49e2e6&scoped=true&\"\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&id=db49e2e6&scoped=true&lang=less&\"\nimport style1 from \"./Index.vue?vue&type=style&index=1&lang=less&\"\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 \"db49e2e6\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('db49e2e6')) {\n api.createRecord('db49e2e6', component.options)\n } else {\n api.reload('db49e2e6', component.options)\n }\n module.hot.accept(\"./Index.vue?vue&type=template&id=db49e2e6&scoped=true&\", function () {\n api.rerender('db49e2e6', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/Index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../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/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 mod from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=db49e2e6&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=db49e2e6&scoped=true&lang=less&\"","import mod from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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=1&lang=less&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-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=1&lang=less&\"","export * from \"-!../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=template&id=db49e2e6&scoped=true&\"","import { render, staticRenderFns } from \"./SubjectSelect.vue?vue&type=template&id=170a3c0e&scoped=true&\"\nimport script from \"./SubjectSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SubjectSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\"\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 \"170a3c0e\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('170a3c0e')) {\n api.createRecord('170a3c0e', component.options)\n } else {\n api.reload('170a3c0e', component.options)\n }\n module.hot.accept(\"./SubjectSelect.vue?vue&type=template&id=170a3c0e&scoped=true&\", function () {\n api.rerender('170a3c0e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/common/SubjectSelect.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./SubjectSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./SubjectSelect.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=style&index=0&id=170a3c0e&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubjectSelect.vue?vue&type=template&id=170a3c0e&scoped=true&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=5057e78a&scoped=true&\"\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&id=5057e78a&scoped=true&lang=less&\"\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 \"5057e78a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('5057e78a')) {\n api.createRecord('5057e78a', component.options)\n } else {\n api.reload('5057e78a', component.options)\n }\n module.hot.accept(\"./Index.vue?vue&type=template&id=5057e78a&scoped=true&\", function () {\n api.rerender('5057e78a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/Index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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/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 mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=5057e78a&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=5057e78a&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=template&id=5057e78a&scoped=true&\"","import { render, staticRenderFns } from \"./PaperContent.vue?vue&type=template&id=53d3a045&scoped=true&\"\nimport script from \"./PaperContent.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\"\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 \"53d3a045\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('53d3a045')) {\n api.createRecord('53d3a045', component.options)\n } else {\n api.reload('53d3a045', component.options)\n }\n module.hot.accept(\"./PaperContent.vue?vue&type=template&id=53d3a045&scoped=true&\", function () {\n api.rerender('53d3a045', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/PaperContent.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./PaperContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./PaperContent.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=style&index=0&id=53d3a045&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperContent.vue?vue&type=template&id=53d3a045&scoped=true&\"","import { render, staticRenderFns } from \"./PaperLine.vue?vue&type=template&id=1f29a758&scoped=true&\"\nimport script from \"./PaperLine.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperLine.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\"\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 \"1f29a758\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1f29a758')) {\n api.createRecord('1f29a758', component.options)\n } else {\n api.reload('1f29a758', component.options)\n }\n module.hot.accept(\"./PaperLine.vue?vue&type=template&id=1f29a758&scoped=true&\", function () {\n api.rerender('1f29a758', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/PaperLine.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./PaperLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./PaperLine.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=style&index=0&id=1f29a758&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperLine.vue?vue&type=template&id=1f29a758&scoped=true&\"","import { render, staticRenderFns } from \"./GradeAndName.vue?vue&type=template&id=13c50963&scoped=true&\"\nimport script from \"./GradeAndName.vue?vue&type=script&lang=js&\"\nexport * from \"./GradeAndName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\"\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 \"13c50963\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('13c50963')) {\n api.createRecord('13c50963', component.options)\n } else {\n api.reload('13c50963', component.options)\n }\n module.hot.accept(\"./GradeAndName.vue?vue&type=template&id=13c50963&scoped=true&\", function () {\n api.rerender('13c50963', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/GradeAndName.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./GradeAndName.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./GradeAndName.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=style&index=0&id=13c50963&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GradeAndName.vue?vue&type=template&id=13c50963&scoped=true&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=7a934f4a&\"\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\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7a934f4a')) {\n api.createRecord('7a934f4a', component.options)\n } else {\n api.reload('7a934f4a', component.options)\n }\n module.hot.accept(\"./Index.vue?vue&type=template&id=7a934f4a&\", function () {\n api.rerender('7a934f4a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/Index.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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/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 * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=template&id=7a934f4a&\"","import { render, staticRenderFns } from \"./PaperAttention.vue?vue&type=template&id=446134ac&scoped=true&\"\nimport script from \"./PaperAttention.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperAttention.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\"\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 \"446134ac\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('446134ac')) {\n api.createRecord('446134ac', component.options)\n } else {\n api.reload('446134ac', component.options)\n }\n module.hot.accept(\"./PaperAttention.vue?vue&type=template&id=446134ac&scoped=true&\", function () {\n api.rerender('446134ac', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/PaperAttention.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperAttention.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperAttention.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=style&index=0&id=446134ac&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperAttention.vue?vue&type=template&id=446134ac&scoped=true&\"","import { render, staticRenderFns } from \"./PaperCard.vue?vue&type=template&id=22940c34&scoped=true&\"\nimport script from \"./PaperCard.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\"\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 \"22940c34\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('22940c34')) {\n api.createRecord('22940c34', component.options)\n } else {\n api.reload('22940c34', component.options)\n }\n module.hot.accept(\"./PaperCard.vue?vue&type=template&id=22940c34&scoped=true&\", function () {\n api.rerender('22940c34', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/PaperCard.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=style&index=0&id=22940c34&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperCard.vue?vue&type=template&id=22940c34&scoped=true&\"","import { render, staticRenderFns } from \"./PaperInfo.vue?vue&type=template&id=2dacf6d2&scoped=true&\"\nimport script from \"./PaperInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\"\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 \"2dacf6d2\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2dacf6d2')) {\n api.createRecord('2dacf6d2', component.options)\n } else {\n api.reload('2dacf6d2', component.options)\n }\n module.hot.accept(\"./PaperInfo.vue?vue&type=template&id=2dacf6d2&scoped=true&\", function () {\n api.rerender('2dacf6d2', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/PaperInfo.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperInfo.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=style&index=0&id=2dacf6d2&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperInfo.vue?vue&type=template&id=2dacf6d2&scoped=true&\"","import { render, staticRenderFns } from \"./PaperTitle.vue?vue&type=template&id=7c485838&scoped=true&\"\nimport script from \"./PaperTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./PaperTitle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\"\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 \"7c485838\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7c485838')) {\n api.createRecord('7c485838', component.options)\n } else {\n api.reload('7c485838', component.options)\n }\n module.hot.accept(\"./PaperTitle.vue?vue&type=template&id=7c485838&scoped=true&\", function () {\n api.rerender('7c485838', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-info/PaperTitle.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./PaperTitle.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=style&index=0&id=7c485838&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaperTitle.vue?vue&type=template&id=7c485838&scoped=true&\"","import { render, staticRenderFns } from \"./ArticleCh.vue?vue&type=template&id=47221792&scoped=true&\"\nimport script from \"./ArticleCh.vue?vue&type=script&lang=js&\"\nexport * from \"./ArticleCh.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\"\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 \"47221792\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('47221792')) {\n api.createRecord('47221792', component.options)\n } else {\n api.reload('47221792', component.options)\n }\n module.hot.accept(\"./ArticleCh.vue?vue&type=template&id=47221792&scoped=true&\", function () {\n api.rerender('47221792', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/ArticleCh.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./ArticleCh.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./ArticleCh.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=style&index=0&id=47221792&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArticleCh.vue?vue&type=template&id=47221792&scoped=true&\"","import { render, staticRenderFns } from \"./ChooseTopic.vue?vue&type=template&id=1ac7aaaf&scoped=true&\"\nimport script from \"./ChooseTopic.vue?vue&type=script&lang=js&\"\nexport * from \"./ChooseTopic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\"\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 \"1ac7aaaf\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1ac7aaaf')) {\n api.createRecord('1ac7aaaf', component.options)\n } else {\n api.reload('1ac7aaaf', component.options)\n }\n module.hot.accept(\"./ChooseTopic.vue?vue&type=template&id=1ac7aaaf&scoped=true&\", function () {\n api.rerender('1ac7aaaf', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/ChooseTopic.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./ChooseTopic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./ChooseTopic.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=style&index=0&id=1ac7aaaf&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChooseTopic.vue?vue&type=template&id=1ac7aaaf&scoped=true&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=779ca469&\"\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\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('779ca469')) {\n api.createRecord('779ca469', component.options)\n } else {\n api.reload('779ca469', component.options)\n }\n module.hot.accept(\"./Index.vue?vue&type=template&id=779ca469&\", function () {\n api.rerender('779ca469', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/Index.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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/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 * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=template&id=779ca469&\"","import { render, staticRenderFns } from \"./Topic.vue?vue&type=template&id=82365b74&scoped=true&\"\nimport script from \"./Topic.vue?vue&type=script&lang=js&\"\nexport * from \"./Topic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\"\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 \"82365b74\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('82365b74')) {\n api.createRecord('82365b74', component.options)\n } else {\n api.reload('82365b74', component.options)\n }\n module.hot.accept(\"./Topic.vue?vue&type=template&id=82365b74&scoped=true&\", function () {\n api.rerender('82365b74', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/Topic.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./Topic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./Topic.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=style&index=0&id=82365b74&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Topic.vue?vue&type=template&id=82365b74&scoped=true&\"","import { render, staticRenderFns } from \"./TopicChoice.vue?vue&type=template&id=58a35907&scoped=true&\"\nimport script from \"./TopicChoice.vue?vue&type=script&lang=js&\"\nexport * from \"./TopicChoice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\"\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 \"58a35907\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('58a35907')) {\n api.createRecord('58a35907', component.options)\n } else {\n api.reload('58a35907', component.options)\n }\n module.hot.accept(\"./TopicChoice.vue?vue&type=template&id=58a35907&scoped=true&\", function () {\n api.rerender('58a35907', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/TopicChoice.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicChoice.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicChoice.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=style&index=0&id=58a35907&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicChoice.vue?vue&type=template&id=58a35907&scoped=true&\"","import { render, staticRenderFns } from \"./TopicExplain.vue?vue&type=template&id=d30766fe&scoped=true&\"\nimport script from \"./TopicExplain.vue?vue&type=script&lang=js&\"\nexport * from \"./TopicExplain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\"\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 \"d30766fe\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('d30766fe')) {\n api.createRecord('d30766fe', component.options)\n } else {\n api.reload('d30766fe', component.options)\n }\n module.hot.accept(\"./TopicExplain.vue?vue&type=template&id=d30766fe&scoped=true&\", function () {\n api.rerender('d30766fe', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/TopicExplain.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicExplain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicExplain.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=style&index=0&id=d30766fe&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicExplain.vue?vue&type=template&id=d30766fe&scoped=true&\"","import { render, staticRenderFns } from \"./TopicFill.vue?vue&type=template&id=3e8f2b69&scoped=true&\"\nimport script from \"./TopicFill.vue?vue&type=script&lang=js&\"\nexport * from \"./TopicFill.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\"\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 \"3e8f2b69\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3e8f2b69')) {\n api.createRecord('3e8f2b69', component.options)\n } else {\n api.reload('3e8f2b69', component.options)\n }\n module.hot.accept(\"./TopicFill.vue?vue&type=template&id=3e8f2b69&scoped=true&\", function () {\n api.rerender('3e8f2b69', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/TopicFill.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicFill.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicFill.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=style&index=0&id=3e8f2b69&scoped=true&lang=less&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicFill.vue?vue&type=template&id=3e8f2b69&scoped=true&\"","import { render, staticRenderFns } from \"./TopicTitle.vue?vue&type=template&id=592c85e2&\"\nimport script from \"./TopicTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./TopicTitle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopicTitle.vue?vue&type=style&index=0&lang=less&\"\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\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('592c85e2')) {\n api.createRecord('592c85e2', component.options)\n } else {\n api.reload('592c85e2', component.options)\n }\n module.hot.accept(\"./TopicTitle.vue?vue&type=template&id=592c85e2&\", function () {\n api.rerender('592c85e2', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/paper/paper-topic/TopicTitle.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../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!./TopicTitle.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopicTitle.vue?vue&type=template&id=592c85e2&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=67dd6ae4&scoped=true&\"\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&id=67dd6ae4&scoped=true&lang=less&\"\nimport style1 from \"./Index.vue?vue&type=style&index=1&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 \"67dd6ae4\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('67dd6ae4')) {\n api.createRecord('67dd6ae4', component.options)\n } else {\n api.reload('67dd6ae4', component.options)\n }\n module.hot.accept(\"./Index.vue?vue&type=template&id=67dd6ae4&scoped=true&\", function () {\n api.rerender('67dd6ae4', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/setting/Index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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/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 mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=67dd6ae4&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-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&id=67dd6ae4&scoped=true&lang=less&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.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=1&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.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=1&lang=css&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=template&id=67dd6ae4&scoped=true&\"","import { render, staticRenderFns } from \"./SetAnswer.vue?vue&type=template&id=75214108&scoped=true&\"\nimport script from \"./SetAnswer.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAnswer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\"\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 \"75214108\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('75214108')) {\n api.createRecord('75214108', component.options)\n } else {\n api.reload('75214108', component.options)\n }\n module.hot.accept(\"./SetAnswer.vue?vue&type=template&id=75214108&scoped=true&\", function () {\n api.rerender('75214108', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/setting/SetAnswer.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./SetAnswer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./SetAnswer.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=style&index=0&id=75214108&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAnswer.vue?vue&type=template&id=75214108&scoped=true&\"","import { render, staticRenderFns } from \"./AddTopic.vue?vue&type=template&id=4aaf48c3&scoped=true&\"\nimport script from \"./AddTopic.vue?vue&type=script&lang=js&\"\nexport * from \"./AddTopic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\"\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 \"4aaf48c3\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('4aaf48c3')) {\n api.createRecord('4aaf48c3', component.options)\n } else {\n api.reload('4aaf48c3', component.options)\n }\n module.hot.accept(\"./AddTopic.vue?vue&type=template&id=4aaf48c3&scoped=true&\", function () {\n api.rerender('4aaf48c3', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/topic/AddTopic.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./AddTopic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./AddTopic.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=style&index=0&id=4aaf48c3&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddTopic.vue?vue&type=template&id=4aaf48c3&scoped=true&\"","import { render, staticRenderFns } from \"./MinTopicEditItem.vue?vue&type=template&id=afe023e2&scoped=true&\"\nimport script from \"./MinTopicEditItem.vue?vue&type=script&lang=js&\"\nexport * from \"./MinTopicEditItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\"\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 \"afe023e2\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"F:\\\\zcg-project\\\\git-code\\\\zsy-as2-web-nx\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('afe023e2')) {\n api.createRecord('afe023e2', component.options)\n } else {\n api.reload('afe023e2', component.options)\n }\n module.hot.accept(\"./MinTopicEditItem.vue?vue&type=template&id=afe023e2&scoped=true&\", function () {\n api.rerender('afe023e2', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/answer-sheet/topic/MinTopicEditItem.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./MinTopicEditItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../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!./MinTopicEditItem.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=style&index=0&id=afe023e2&scoped=true&lang=less&\"","export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"305c61fc-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinTopicEditItem.vue?vue&type=template&id=afe023e2&scoped=true&\""],"sourceRoot":""}
|